{"version":3,"file":"index-BLOj1UA2.cjs","sources":["../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalComposerContext.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalComposer.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalOnChangePlugin.prod.mjs","../src/components/editor/context/floating-link-context.tsx","../src/components/editor/context/shared-autocomplete-context.tsx","../src/lib/utils.ts","../src/components/ui/tooltip.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/useLexicalNodeSelection.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalHorizontalRuleNode.prod.mjs","../src/components/editor/utils/swipe.ts","../src/components/editor/plugins/autocomplete-plugin.tsx","../src/components/editor/nodes/autocomplete-node.tsx","../src/components/editor/shared/can-use-dom.ts","../src/components/editor/shared/environment.ts","../src/components/editor/shared/invariant.ts","../src/components/editor/utils/collapsible.ts","../src/components/editor/nodes/collapsible-container-node.ts","../src/components/editor/nodes/collapsible-content-node.ts","../src/components/editor/nodes/collapsible-title-node.ts","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalDecoratorBlockNode.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalBlockWithAlignableContents.prod.mjs","../src/components/editor/nodes/embeds/figma-node.tsx","../src/components/editor/nodes/embeds/tweet-node.tsx","../src/components/editor/nodes/embeds/youtube-node.tsx","../src/components/editor/nodes/emoji-node.tsx","../src/components/editor/nodes/equation-node.tsx","../src/components/editor/nodes/excalidraw-node.tsx","../src/components/editor/nodes/image-node.tsx","../src/components/editor/nodes/inline-image-node.tsx","../src/components/editor/nodes/keyword-node.tsx","../src/components/editor/nodes/layout-container-node.tsx","../src/components/editor/nodes/layout-item-node.tsx","../src/components/editor/nodes/mention-node.ts","../src/components/editor/nodes/page-break-node.tsx","../src/components/editor/nodes/poll-node.tsx","../src/components/blocks/editor-x/nodes.ts","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalAutoFocusPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalCheckListPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalClickableLinkPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalErrorBoundary.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/useLexicalTextEntity.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalHashtagPlugin.prod.mjs","../node_modules/.pnpm/@lexical+history@0.30.0/node_modules/@lexical/history/LexicalHistory.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalHistoryPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalHorizontalRulePlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalListPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalMarkdownShortcutPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/useLexicalEditable.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalRichTextPlugin.prod.mjs","../node_modules/.pnpm/@lexical+dragon@0.30.0/node_modules/@lexical/dragon/LexicalDragon.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalTabIndentationPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalTablePlugin.prod.mjs","../src/components/ui/separator.tsx","../src/components/editor/context/toolbar-context.tsx","../src/components/editor/editor-hooks/use-update-toolbar.ts","../src/components/editor/plugins/toolbar/block-format/block-format-data.tsx","../utils/cn.ts","../components/Button.tsx","../components/Tooltip.tsx","../components/Select.tsx","../src/components/editor/plugins/toolbar/block-format-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/block-format/format-bulleted-list.tsx","../src/components/editor/plugins/toolbar/block-format/format-check-list.tsx","../src/components/editor/plugins/toolbar/block-format/format-code-block.tsx","../src/components/editor/plugins/toolbar/block-format/format-heading.tsx","../src/components/editor/plugins/toolbar/block-format/format-numbered-list.tsx","../src/components/editor/plugins/toolbar/block-format/format-paragraph.tsx","../src/components/editor/plugins/toolbar/block-format/format-quote.tsx","../components/Dialog.tsx","../src/components/editor/editor-hooks/use-modal.tsx","../src/components/editor/plugins/toolbar/block-insert-plugin.tsx","../src/components/editor/plugins/collapsible-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-collapsible-container.tsx","../src/components/ui/select.tsx","../src/components/editor/plugins/layout-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-columns-layout.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalNodeMenuPlugin.prod.mjs","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalAutoEmbedPlugin.prod.mjs","../src/components/ui/command.tsx","../src/components/ui/input.tsx","../src/components/ui/popover.tsx","../src/components/editor/plugins/embeds/figma-plugin.tsx","../src/components/editor/plugins/embeds/twitter-plugin.tsx","../src/components/editor/plugins/embeds/youtube-plugin.tsx","../src/components/editor/plugins/embeds/auto-embed-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-embeds.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-horizontal-rule.tsx","../src/components/ui/label.tsx","../src/components/ui/tabs.tsx","../src/components/editor/plugins/images-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-image.tsx","../src/components/ui/checkbox.tsx","../src/components/editor/plugins/inline-image-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-inline-image.tsx","../src/components/editor/plugins/page-break-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-page-break.tsx","../src/components/editor/plugins/poll-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-poll.tsx","../src/components/editor/plugins/table-plugin.tsx","../src/components/editor/plugins/toolbar/block-insert/insert-table.tsx","../src/components/editor/plugins/toolbar/clear-formatting-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/code-language-toolbar-plugin.tsx","../src/components/ui/toggle.tsx","../src/components/ui/toggle-group.tsx","../src/components/editor/utils/get-selected-node.ts","../src/components/editor/plugins/toolbar/element-format-toolbar-plugin.tsx","../src/components/editor/editor-ui/colorpicker.tsx","../src/components/editor/plugins/toolbar/font-background-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/font-color-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/font-family-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/font-format-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/font-size-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/history-toolbar-plugin.tsx","../src/components/editor/utils/url.ts","../src/components/editor/plugins/toolbar/link-toolbar-plugin.tsx","../src/components/editor/plugins/toolbar/subsuper-toolbar-plugin.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalAutoLinkPlugin.prod.mjs","../src/components/editor/plugins/auto-link-plugin.tsx","../src/components/editor/editor-hooks/use-debounce.ts","../src/components/editor/editor-ui/code-button.tsx","../src/components/editor/plugins/code-action-menu-plugin.tsx","../src/components/editor/plugins/code-highlight-plugin.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalTypeaheadMenuPlugin.prod.mjs","../src/components/editor/plugins/component-picker-menu-plugin.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalContextMenuPlugin.prod.mjs","../src/components/editor/plugins/context-menu-plugin.tsx","../src/components/editor/plugins/drag-drop-paste-plugin.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalDraggableBlockPlugin.prod.mjs","../src/components/editor/plugins/draggable-block-plugin.tsx","../src/components/editor/plugins/emoji-picker-plugin.tsx","../src/components/editor/plugins/emojis-plugin.tsx","../src/components/ui/button.tsx","../src/components/ui/textarea.tsx","../src/components/editor/editor-ui/katex-renderer.tsx","../src/components/editor/editor-ui/katex-equation-alterer.tsx","../src/components/editor/plugins/equations-plugin.tsx","../src/components/editor/editor-ui/excalidraw-modal.tsx","../src/components/editor/plugins/excalidraw-plugin.tsx","../src/components/editor/utils/set-floating-elem-position-for-link-editor.ts","../src/components/editor/plugins/floating-link-editor-plugin.tsx","../src/components/editor/plugins/floating-text-format-plugin.tsx","../src/components/editor/utils/get-dom-range-rect.ts","../src/components/editor/utils/set-floating-elem-position.ts","../src/components/editor/plugins/keywords-plugin.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalLinkPlugin.prod.mjs","../src/components/editor/plugins/link-plugin.tsx","../src/components/editor/plugins/list-max-indent-level-plugin.tsx","../src/components/editor/plugins/mentions-plugin.tsx","../src/components/editor/plugins/tab-focus-plugin.tsx","../src/components/editor/plugins/table-action-menu-plugin.tsx","../src/components/editor/plugins/table-cell-resizer-plugin.tsx","../src/components/editor/plugins/table-hover-actions-plugin.tsx","../src/components/editor/plugins/toolbar/toolbar-plugin.tsx","../node_modules/.pnpm/@lexical+react@0.30.0_react-dom@19.1.0_react@19.1.0__react@19.1.0_yjs@13.6.24/node_modules/@lexical/react/LexicalContentEditable.prod.mjs","../src/components/editor/editor-ui/content-editable.tsx","../src/components/editor/plugins/picker/component-picker-option.tsx","../src/components/editor/plugins/picker/alignment-picker-plugin.tsx","../src/components/editor/plugins/picker/heading-picker-plugin.tsx","../src/components/editor/plugins/picker/table-picker-plugin.tsx","../src/components/editor/plugins/picker/embeds-picker-plugin.tsx","../src/components/editor/utils/emoji-list.ts","../src/components/editor/transformers/markdown-emoji-transformer.ts","../src/components/editor/transformers/markdown-equation-transofrmer.ts","../src/components/editor/transformers/markdown-hr-transformer.ts","../src/components/editor/transformers/markdown-image-transformer.ts","../src/components/editor/transformers/markdown-tweet-transformer.ts","../src/components/editor/transformers/markdown-table-transformer.ts","../src/components/blocks/editor-x/plugins.tsx","../src/components/editor/plugins/picker/paragraph-picker-plugin.tsx","../src/components/editor/plugins/picker/check-list-picker-plugin.tsx","../src/components/editor/plugins/picker/numbered-list-picker-plugin.tsx","../src/components/editor/plugins/picker/bulleted-list-picker-plugin.tsx","../src/components/editor/plugins/picker/quote-picker-plugin.tsx","../src/components/editor/plugins/picker/code-picker-plugin.tsx","../src/components/editor/plugins/picker/divider-picker-plugin.tsx","../src/components/editor/plugins/picker/page-break-picker-plugin.tsx","../src/components/editor/plugins/picker/poll-picker-plugin.tsx","../src/components/editor/plugins/picker/equation-picker-plugin.tsx","../src/components/editor/plugins/picker/image-picker-plugin.tsx","../src/components/editor/plugins/picker/collapsible-picker-plugin.tsx","../src/components/editor/plugins/picker/columns-layout-picker-plugin.tsx","../src/components/blocks/editor-x/editor.tsx","../src/components/editor/themes/editor-theme.ts","../src/components/blocks/editor-x/editor-client.tsx"],"sourcesContent":["/**\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 */\n\nimport{createContext as n,useContext as e}from\"react\";const r=n(null);function t(n,e){let r=null;return null!=n&&(r=n[1]),{getTheme:function(){return null!=e?e:null!=r?r.getTheme():null}}}function o(){const n=e(r);return null==n&&function(n,...e){const r=new URL(\"https://lexical.dev/docs/error\"),t=new URLSearchParams;t.append(\"code\",n);for(const n of e)t.append(\"v\",n);throw r.search=t.toString(),Error(`Minified Lexical error #${n}; visit ${r.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}(8),n}export{r as LexicalComposerContext,t as createLexicalComposerContext,o as useLexicalComposerContext};\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 */\n\nimport{createLexicalComposerContext as e,LexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{createEditor as o,$getRoot as n,$createParagraphNode as i,$getSelection as r}from\"lexical\";import{useLayoutEffect as a,useEffect as c,useMemo as l}from\"react\";import{jsx as d}from\"react/jsx-runtime\";const s=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,m=s?a:c,u={tag:\"history-merge\"};function p({initialConfig:a,children:c}){const p=l((()=>{const{theme:t,namespace:c,nodes:l,onError:d,editorState:m,html:p}=a,f=e(null,t),E=o({editable:a.editable,html:p,namespace:c,nodes:l,onError:e=>d(e,E),theme:t});return function(e,t){if(null===t)return;if(void 0===t)e.update((()=>{const t=n();if(t.isEmpty()){const o=i();t.append(o);const n=s?document.activeElement:null;(null!==r()||null!==n&&n===e.getRootElement())&&o.select()}}),u);else if(null!==t)switch(typeof t){case\"string\":{const o=e.parseEditorState(t);e.setEditorState(o,u);break}case\"object\":e.setEditorState(t,u);break;case\"function\":e.update((()=>{n().isEmpty()&&t(e)}),u)}}(E,m),[E,f]}),[]);return m((()=>{const e=a.editable,[t]=p;t.setEditable(void 0===e||e)}),[]),d(t.Provider,{value:p,children:c})}export{p as LexicalComposer};\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 */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as t,useEffect as o}from\"react\";const r=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?t:o;function i({ignoreHistoryMergeTagChange:t=!0,ignoreSelectionChange:o=!1,onChange:i}){const[n]=e();return r((()=>{if(i)return n.registerUpdateListener((({editorState:e,dirtyElements:r,dirtyLeaves:a,prevEditorState:d,tags:s})=>{o&&0===r.size&&0===a.size||t&&s.has(\"history-merge\")||d.isEmpty()||i(e,n,s)}))}),[n,t,o,i]),null}export{i as OnChangePlugin};\n","import { createContext, useContext, useState } from 'react'\n\nconst Context = createContext<{\n  isLinkEditMode: boolean\n  setIsLinkEditMode: (isLinkEditMode: boolean) => void\n}>({\n  isLinkEditMode: false,\n  setIsLinkEditMode: () => {},\n})\n\nexport function FloatingLinkContext({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  const [isLinkEditMode, setIsLinkEditMode] = useState<boolean>(false)\n\n  return (\n    <Context.Provider value={{ isLinkEditMode, setIsLinkEditMode }}>\n      {children}\n    </Context.Provider>\n  )\n}\n\nexport function useFloatingLinkContext() {\n  if (!Context) {\n    throw new Error(\n      'useFloatingLinkContext must be used within a FloatingLinkContext'\n    )\n  }\n  return useContext(Context)\n}\n","import {\n  ReactNode,\n  createContext,\n  useContext,\n  useEffect,\n  useMemo,\n  useState,\n} from \"react\";\n\ntype Suggestion = null | string;\ntype CallbackFn = (newSuggestion: Suggestion) => void;\ntype SubscribeFn = (callbackFn: CallbackFn) => () => void;\ntype PublishFn = (newSuggestion: Suggestion) => void;\ntype ContextShape = [SubscribeFn, PublishFn];\ntype HookShape = [suggestion: Suggestion, setSuggestion: PublishFn];\n\nconst Context: React.Context<ContextShape> = createContext([\n  (_cb) => () => {\n    return;\n  },\n  (_newSuggestion: Suggestion) => {\n    return;\n  },\n]);\n\nexport function SharedAutocompleteContext({\n  children,\n}: {\n  children: ReactNode;\n}) {\n  const context: ContextShape = useMemo(() => {\n    let suggestion: Suggestion | null = null;\n    const listeners: Set<CallbackFn> = new Set();\n    return [\n      (cb: (newSuggestion: Suggestion) => void) => {\n        cb(suggestion);\n        listeners.add(cb);\n        return () => {\n          listeners.delete(cb);\n        };\n      },\n      (newSuggestion: Suggestion) => {\n        suggestion = newSuggestion;\n        for (const listener of Array.from(listeners)) {\n          listener(newSuggestion);\n        }\n      },\n    ];\n  }, []);\n  return <Context.Provider value={context}>{children}</Context.Provider>;\n}\n\nexport const useSharedAutocompleteContext = (): HookShape => {\n  const [subscribe, publish]: ContextShape = useContext(Context);\n  const [suggestion, setSuggestion] = useState<Suggestion>(null);\n  useEffect(() => {\n    return subscribe((newSuggestion: Suggestion) => {\n      setSuggestion(newSuggestion);\n    });\n  }, [subscribe]);\n  return [suggestion, publish];\n};\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction TooltipProvider({\n  delayDuration = 0,\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n  return (\n    <TooltipPrimitive.Provider\n      data-slot=\"tooltip-provider\"\n      delayDuration={delayDuration}\n      {...props}\n    />\n  )\n}\n\nfunction Tooltip({\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n  return (\n    <TooltipProvider>\n      <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n    </TooltipProvider>\n  )\n}\n\nfunction TooltipTrigger({\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n  return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n  className,\n  sideOffset = 0,\n  children,\n  ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n  return (\n    <TooltipPrimitive.Portal>\n      <TooltipPrimitive.Content\n        data-slot=\"tooltip-content\"\n        sideOffset={sideOffset}\n        className={cn(\n          \"bg-background-system-body-tertiary text-content-system-global-primary animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <TooltipPrimitive.Arrow className=\"bg-background-system-body-tertiary fill-background-system-body-tertiary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n      </TooltipPrimitive.Content>\n    </TooltipPrimitive.Portal>\n  )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\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 */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{$getSelection as t,$isNodeSelection as r,$createNodeSelection as o,$setSelection as n,$getNodeByKey as c}from\"lexical\";import{useState as a,useEffect as i,useCallback as l}from\"react\";function d(e,t){return e.getEditorState().read((()=>{const e=c(t);return null!==e&&e.isSelected()}))}function u(c){const[u]=e(),[p,s]=a((()=>d(u,c)));i((()=>{let e=!0;const t=u.registerUpdateListener((()=>{e&&s(d(u,c))}));return()=>{e=!1,t()}}),[u,c]);return[p,l((e=>{u.update((()=>{let a=t();r(a)||(a=o(),n(a)),r(a)&&(e?a.add(c):a.delete(c))}))}),[u,c]),l((()=>{u.update((()=>{const e=t();r(e)&&e.clear()}))}),[u])]}export{u as useLexicalNodeSelection};\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 */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLexicalNodeSelection as t}from\"@lexical/react/useLexicalNodeSelection\";import{addClassNamesToElement as r,mergeRegister as n,removeClassNamesFromElement as o}from\"@lexical/utils\";import{createCommand as c,DecoratorNode as i,$applyNodeReplacement as u,CLICK_COMMAND as l,COMMAND_PRIORITY_LOW as m}from\"lexical\";import{useEffect as a}from\"react\";import{jsx as s}from\"react/jsx-runtime\";const p=c(\"INSERT_HORIZONTAL_RULE_COMMAND\");function d({nodeKey:c}){const[i]=e(),[u,s,p]=t(c);return a((()=>n(i.registerCommand(l,(e=>{const t=i.getElementByKey(c);return e.target===t&&(e.shiftKey||p(),s(!u),!0)}),m))),[p,i,u,c,s]),a((()=>{const e=i.getElementByKey(c),t=i._config.theme.hrSelected??\"selected\";null!==e&&(u?r(e,t):o(e,t))}),[i,u,c]),null}class f extends i{static getType(){return\"horizontalrule\"}static clone(e){return new f(e.__key)}static importJSON(e){return y().updateFromJSON(e)}static importDOM(){return{hr:()=>({conversion:x,priority:0})}}exportDOM(){return{element:document.createElement(\"hr\")}}createDOM(e){const t=document.createElement(\"hr\");return r(t,e.theme.hr),t}getTextContent(){return\"\\n\"}isInline(){return!1}updateDOM(){return!1}decorate(){return s(d,{nodeKey:this.__key})}}function x(){return{node:y()}}function y(){return u(new f)}function h(e){return e instanceof f}export{y as $createHorizontalRuleNode,h as $isHorizontalRuleNode,f as HorizontalRuleNode,p as INSERT_HORIZONTAL_RULE_COMMAND};\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)\n    element.addEventListener('touchend', handleTouchend)\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 { useCallback, useEffect, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $isAtNodeEnd } from \"@lexical/selection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport type { BaseSelection, NodeKey } from \"lexical\";\nimport {\n  $createTextNode,\n  $getNodeByKey,\n  $getSelection,\n  $isRangeSelection,\n  $isTextNode,\n  $setSelection,\n  COMMAND_PRIORITY_LOW,\n  KEY_ARROW_RIGHT_COMMAND,\n  KEY_TAB_COMMAND,\n} from \"lexical\";\n\nimport { useSharedAutocompleteContext } from \"@/components/editor/context/shared-autocomplete-context\";\nimport {\n  $createAutocompleteNode,\n  AutocompleteNode,\n} from \"@/components/editor/nodes/autocomplete-node\";\n\nimport { addSwipeRightListener } from \"@/components/editor/utils/swipe\";\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  .substr(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    console.time(\"query\");\n    const response = server.query(searchText);\n    console.timeEnd(\"query\");\n    return response;\n  }, []);\n}\n\nexport function AutocompletePlugin(): JSX.Element | null {\n  const [editor] = useLexicalComposerContext();\n  const [, setSuggestion] = useSharedAutocompleteContext();\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    function $clearSuggestion() {\n      const autocompleteNode =\n        autocompleteNodeKey !== null\n          ? $getNodeByKey(autocompleteNodeKey)\n          : 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      setSuggestion(null);\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        () => {\n          const selection = $getSelection();\n          const [hasMatch, match] = $search(selection);\n          if (\n            !hasMatch ||\n            match !== lastMatch ||\n            !$isRangeSelection(selection)\n          ) {\n            // Outdated\n            return;\n          }\n          const selectionCopy = selection.clone();\n          const node = $createAutocompleteNode(uuid);\n          autocompleteNodeKey = node.getKey();\n          selection.insertNodes([node]);\n          $setSelection(selectionCopy);\n          lastSuggestion = newSuggestion;\n          setSuggestion(newSuggestion);\n        },\n        { tag: \"history-merge\" }\n      );\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(() => {\n            // console.error(e)\n          });\n        lastMatch = match;\n      });\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      const textNode = $createTextNode(lastSuggestion);\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        }\n      });\n    }\n    function unmountSuggestion() {\n      editor.update(() => {\n        $clearSuggestion();\n      });\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, setSuggestion]);\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 { JSX } from \"react\";\n\nimport type {\n  EditorConfig,\n  EditorThemeClassName,\n  LexicalEditor,\n  NodeKey,\n  SerializedLexicalNode,\n  Spread,\n} from \"lexical\";\nimport { DecoratorNode } from \"lexical\";\n\nimport { useSharedAutocompleteContext } from \"@/components/editor/context/shared-autocomplete-context\";\nimport { uuid as UUID } from \"@/components/editor/plugins/autocomplete-plugin\";\n\ndeclare global {\n  interface Navigator {\n    userAgentData?: {\n      mobile: boolean;\n    };\n  }\n}\n\nexport type SerializedAutocompleteNode = Spread<\n  {\n    uuid: string;\n  },\n  SerializedLexicalNode\n>;\n\nexport class AutocompleteNode extends DecoratorNode<JSX.Element | null> {\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/master/packages/lexical-playground/src/plugins/AutocompletePlugin/index.tsx#L39\n   */\n  __uuid: string;\n\n  static clone(node: AutocompleteNode): AutocompleteNode {\n    return new AutocompleteNode(node.__uuid, node.__key);\n  }\n\n  static getType(): \"autocomplete\" {\n    return \"autocomplete\";\n  }\n\n  static importJSON(\n    serializedNode: SerializedAutocompleteNode\n  ): AutocompleteNode {\n    const node = $createAutocompleteNode(serializedNode.uuid);\n    return node;\n  }\n\n  exportJSON(): SerializedAutocompleteNode {\n    return {\n      ...super.exportJSON(),\n      type: \"autocomplete\",\n      uuid: this.__uuid,\n      version: 1,\n    };\n  }\n\n  constructor(uuid: string, key?: NodeKey) {\n    super(key);\n    this.__uuid = uuid;\n  }\n  // @ts-ignore\n\n  updateDOM(\n    // @ts-ignore\n    prevNode: unknown,\n    // @ts-ignore\n    dom: HTMLElement,\n    // @ts-ignore\n    config: EditorConfig\n  ): boolean {\n    return false;\n  }\n  // @ts-ignore\n\n  createDOM(config: EditorConfig): HTMLElement {\n    return document.createElement(\"span\");\n  }\n  // @ts-ignore\n\n  decorate(editor: LexicalEditor, config: EditorConfig): JSX.Element | null {\n    if (this.__uuid !== UUID) {\n      return null;\n    }\n    return <AutocompleteComponent className={config.theme.autocomplete} />;\n  }\n}\n\nexport function $createAutocompleteNode(uuid: string): AutocompleteNode {\n  return new AutocompleteNode(uuid);\n}\n\nfunction AutocompleteComponent({\n  className,\n}: {\n  className: EditorThemeClassName;\n}): JSX.Element {\n  const [suggestion] = useSharedAutocompleteContext();\n  const userAgentData = window.navigator.userAgentData;\n  const isMobile =\n    userAgentData !== undefined\n      ? userAgentData.mobile\n      : window.innerWidth <= 800 && window.innerHeight <= 600;\n  return (\n    <span className={className} spellCheck=\"false\">\n      {suggestion} {isMobile ? \"(SWIPE \\u2B95)\" : \"(TAB)\"}\n    </span>\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 { CAN_USE_DOM } from '@/components/editor/shared/can-use-dom'\n\ndeclare global {\n  interface Document {\n    documentMode?: unknown\n  }\n\n  interface Window {\n    MSStream?: unknown\n  }\n}\n\nconst documentMode =\n  CAN_USE_DOM && 'documentMode' in document ? document.documentMode : null\n\nexport const IS_APPLE: boolean =\n  CAN_USE_DOM && /Mac|iPod|iPhone|iPad/.test(navigator.platform)\n\nexport const IS_FIREFOX: boolean =\n  CAN_USE_DOM && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent)\n\nexport const CAN_USE_BEFORE_INPUT: boolean =\n  CAN_USE_DOM && 'InputEvent' in window && !documentMode\n    ? 'getTargetRanges' in new window.InputEvent('input')\n    : false\n\nexport const IS_SAFARI: boolean =\n  CAN_USE_DOM && /Version\\/[\\d.]+.*Safari/.test(navigator.userAgent)\n\nexport const IS_IOS: boolean =\n  CAN_USE_DOM &&\n  /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n  !window.MSStream\n\nexport const IS_ANDROID: boolean =\n  CAN_USE_DOM && /Android/.test(navigator.userAgent)\n\n// Keep these in case we need to use them in the future.\n// export const IS_WINDOWS: boolean = CAN_USE_DOM && /Win/.test(navigator.platform);\nexport const IS_CHROME: boolean =\n  CAN_USE_DOM && /^(?=.*Chrome).*/i.test(navigator.userAgent)\n// export const canUseTextInputEvent: boolean = CAN_USE_DOM && 'TextEvent' in window && !documentMode;\n\nexport const IS_ANDROID_CHROME: boolean = CAN_USE_DOM && IS_ANDROID && IS_CHROME\n\nexport const IS_APPLE_WEBKIT =\n  CAN_USE_DOM && /AppleWebKit\\/[\\d.]+/.test(navigator.userAgent) && !IS_CHROME\n","export function invariant(cond?: boolean, message?: string): 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","export function setDomHiddenUntilFound(dom: HTMLElement): void {\n  // @ts-expect-error\n  dom.hidden = 'until-found'\n}\n\nexport function domOnBeforeMatch(dom: HTMLElement, callback: () => void): void {\n  // @ts-expect-error\n  dom.onbeforematch = callback\n}\n","import {\n  DOMConversionMap,\n  DOMConversionOutput,\n  DOMExportOutput,\n  EditorConfig,\n  ElementNode,\n  LexicalEditor,\n  LexicalNode,\n  NodeKey,\n  SerializedElementNode,\n  Spread,\n  isHTMLElement,\n} from \"lexical\";\n\nimport { IS_CHROME } from \"@/components/editor/shared/environment\";\nimport { invariant } from \"@/components/editor/shared/invariant\";\nimport { setDomHiddenUntilFound } from \"@/components/editor/utils/collapsible\";\n\ntype SerializedCollapsibleContainerNode = Spread<\n  {\n    open: boolean;\n  },\n  SerializedElementNode\n>;\n\nexport function $convertDetailsElement(\n  domNode: HTMLDetailsElement\n): DOMConversionOutput | null {\n  const isOpen = domNode.open !== undefined ? domNode.open : true;\n  const node = $createCollapsibleContainerNode(isOpen);\n  return {\n    node,\n  };\n}\n\nexport class CollapsibleContainerNode extends ElementNode {\n  __open: boolean;\n\n  constructor(open: boolean, key?: NodeKey) {\n    super(key);\n    this.__open = open;\n  }\n\n  static getType(): string {\n    return \"collapsible-container\";\n  }\n\n  static clone(node: CollapsibleContainerNode): CollapsibleContainerNode {\n    return new CollapsibleContainerNode(node.__open, node.__key);\n  }\n  // @ts-ignore\n\n  createDOM(config: EditorConfig, editor: LexicalEditor): HTMLElement {\n    // details is not well supported in Chrome #5582\n    let dom: HTMLElement;\n    if (IS_CHROME) {\n      dom = document.createElement(\"div\");\n      dom.setAttribute(\"open\", \"\");\n    } else {\n      const detailsDom = document.createElement(\"details\");\n      detailsDom.open = this.__open;\n      detailsDom.addEventListener(\"toggle\", () => {\n        const open = editor.getEditorState().read(() => this.getOpen());\n        if (open !== detailsDom.open) {\n          editor.update(() => this.toggleOpen());\n        }\n      });\n      dom = detailsDom;\n    }\n    dom.className = 'bg-background-system-body-primary border border-border-system-global-secondary rounded-lg mb-2';\n\n    return dom;\n  }\n\n  updateDOM(\n    prevNode: CollapsibleContainerNode,\n    dom: HTMLDetailsElement\n  ): boolean {\n    const currentOpen = this.__open;\n    if (prevNode.__open !== currentOpen) {\n      // details is not well supported in Chrome #5582\n      if (IS_CHROME) {\n        const contentDom = dom.children[1];\n        invariant(\n          isHTMLElement(contentDom),\n          \"Expected contentDom to be an HTMLElement\"\n        );\n        if (currentOpen) {\n          dom.setAttribute(\"open\", \"\");\n          contentDom.hidden = false;\n        } else {\n          dom.removeAttribute(\"open\");\n          setDomHiddenUntilFound(contentDom);\n        }\n      } else {\n        dom.open = this.__open;\n      }\n    }\n\n    return false;\n  }\n\n  static importDOM(): DOMConversionMap<HTMLDetailsElement> | null {\n    return {\n      // @ts-ignore\n\n      details: (domNode: HTMLDetailsElement) => {\n        return {\n          conversion: $convertDetailsElement,\n          priority: 1,\n        };\n      },\n    };\n  }\n\n  static importJSON(\n    serializedNode: SerializedCollapsibleContainerNode\n  ): CollapsibleContainerNode {\n    const node = $createCollapsibleContainerNode(serializedNode.open);\n    return node;\n  }\n\n  exportDOM(): DOMExportOutput {\n    const element = document.createElement(\"details\");\n    element.className = 'bg-background-system-body-primary border border-border-system-global-secondary rounded-lg mb-2';\n    element.setAttribute(\"open\", this.__open.toString());\n    return { element };\n  }\n\n  exportJSON(): SerializedCollapsibleContainerNode {\n    return {\n      ...super.exportJSON(),\n      open: this.__open,\n      type: \"collapsible-container\",\n      version: 1,\n    };\n  }\n\n  setOpen(open: boolean): void {\n    const writable = this.getWritable();\n    writable.__open = open;\n  }\n\n  getOpen(): boolean {\n    return this.getLatest().__open;\n  }\n\n  toggleOpen(): void {\n    this.setOpen(!this.getOpen());\n  }\n}\n\nexport function $createCollapsibleContainerNode(\n  isOpen: boolean\n): CollapsibleContainerNode {\n  return new CollapsibleContainerNode(isOpen);\n}\n\nexport function $isCollapsibleContainerNode(\n  node: LexicalNode | null | undefined\n): node is CollapsibleContainerNode {\n  return node instanceof CollapsibleContainerNode;\n}\n","import {\n  DOMConversionMap,\n  DOMConversionOutput,\n  DOMExportOutput,\n  EditorConfig,\n  ElementNode,\n  LexicalEditor,\n  LexicalNode,\n  SerializedElementNode,\n} from \"lexical\";\n\nimport { IS_CHROME } from \"@/components/editor/shared/environment\";\nimport { invariant } from \"@/components/editor/shared/invariant\";\nimport {\n  domOnBeforeMatch,\n  setDomHiddenUntilFound,\n} from \"@/components/editor/utils/collapsible\";\nimport { $isCollapsibleContainerNode } from \"@/components/editor/nodes/collapsible-container-node\";\n\ntype SerializedCollapsibleContentNode = SerializedElementNode;\n\nexport function $convertCollapsibleContentElement(\n  // @ts-ignore\n  domNode: HTMLElement\n): DOMConversionOutput | null {\n  const node = $createCollapsibleContentNode();\n  return {\n    node,\n  };\n}\n\nexport class CollapsibleContentNode extends ElementNode {\n  static getType(): string {\n    return \"collapsible-content\";\n  }\n\n  static clone(node: CollapsibleContentNode): CollapsibleContentNode {\n    return new CollapsibleContentNode(node.__key);\n  }\n  // @ts-ignore\n  createDOM(config: EditorConfig, editor: LexicalEditor): HTMLElement {\n    const dom = document.createElement(\"div\");\n    dom.classList.add(\"pt-0\", \"pr-1\", \"pb-1\", \"pl-4\");\n    if (IS_CHROME) {\n      editor.getEditorState().read(() => {\n        const containerNode = this.getParentOrThrow();\n        invariant(\n          $isCollapsibleContainerNode(containerNode),\n          \"Expected parent node to be a CollapsibleContainerNode\"\n        );\n        if (!containerNode.__open) {\n          setDomHiddenUntilFound(dom);\n        }\n      });\n      domOnBeforeMatch(dom, () => {\n        editor.update(() => {\n          const containerNode = this.getParentOrThrow().getLatest();\n          invariant(\n            $isCollapsibleContainerNode(containerNode),\n            \"Expected parent node to be a CollapsibleContainerNode\"\n          );\n          if (!containerNode.__open) {\n            containerNode.toggleOpen();\n          }\n        });\n      });\n    }\n    return dom;\n  }\n  // @ts-ignore\n\n  updateDOM(prevNode: CollapsibleContentNode, dom: HTMLElement): boolean {\n    return false;\n  }\n\n  static importDOM(): DOMConversionMap | null {\n    return {\n      div: (domNode: HTMLElement) => {\n        if (!domNode.hasAttribute(\"data-lexical-collapsible-content\")) {\n          return null;\n        }\n        return {\n          conversion: $convertCollapsibleContentElement,\n          priority: 2,\n        };\n      },\n    };\n  }\n\n  exportDOM(): DOMExportOutput {\n    const element = document.createElement(\"div\");\n    element.classList.add(\"pt-0\", \"pr-1\", \"pb-1\", \"pl-4\");\n    element.setAttribute(\"data-lexical-collapsible-content\", \"true\");\n    return { element };\n  }\n\n  static importJSON(\n    // @ts-ignore\n\n    serializedNode: SerializedCollapsibleContentNode\n  ): CollapsibleContentNode {\n    return $createCollapsibleContentNode();\n  }\n\n  isShadowRoot(): boolean {\n    return true;\n  }\n\n  exportJSON(): SerializedCollapsibleContentNode {\n    return {\n      ...super.exportJSON(),\n      type: \"collapsible-content\",\n      version: 1,\n    };\n  }\n}\n\nexport function $createCollapsibleContentNode(): CollapsibleContentNode {\n  return new CollapsibleContentNode();\n}\n\nexport function $isCollapsibleContentNode(\n  node: LexicalNode | null | undefined\n): node is CollapsibleContentNode {\n  return node instanceof CollapsibleContentNode;\n}\n","import {\n  $createParagraphNode,\n  $isElementNode,\n  DOMConversionMap,\n  DOMConversionOutput,\n  EditorConfig,\n  ElementNode,\n  LexicalEditor,\n  LexicalNode,\n  RangeSelection,\n  SerializedElementNode,\n} from \"lexical\";\n\nimport { IS_CHROME } from \"@/components/editor/shared/environment\";\nimport { invariant } from \"@/components/editor/shared/invariant\";\nimport { $isCollapsibleContainerNode } from \"@/components/editor/nodes/collapsible-container-node\";\nimport { $isCollapsibleContentNode } from \"@/components/editor/nodes/collapsible-content-node\";\n\ntype SerializedCollapsibleTitleNode = SerializedElementNode;\n\nexport function $convertSummaryElement(\n  // @ts-ignore\n\n  domNode: HTMLElement\n): DOMConversionOutput | null {\n  const node = $createCollapsibleTitleNode();\n  return {\n    node,\n  };\n}\n\nexport class CollapsibleTitleNode extends ElementNode {\n  static getType(): string {\n    return \"collapsible-title\";\n  }\n\n  static clone(node: CollapsibleTitleNode): CollapsibleTitleNode {\n    return new CollapsibleTitleNode(node.__key);\n  }\n  // @ts-ignore\n\n  createDOM(config: EditorConfig, editor: LexicalEditor): HTMLElement {\n    const dom = document.createElement(\"summary\");\n    dom.classList.add(\"Collapsible__title\");\n    if (IS_CHROME) {\n      dom.addEventListener(\"click\", () => {\n        editor.update(() => {\n          const collapsibleContainer = this.getLatest().getParentOrThrow();\n          invariant(\n            $isCollapsibleContainerNode(collapsibleContainer),\n            \"Expected parent node to be a CollapsibleContainerNode\"\n          );\n          collapsibleContainer.toggleOpen();\n        });\n      });\n    }\n    return dom;\n  }\n  // @ts-ignore\n\n  updateDOM(prevNode: CollapsibleTitleNode, dom: HTMLElement): boolean {\n    return false;\n  }\n\n  static importDOM(): DOMConversionMap | null {\n    return {\n      // @ts-ignore\n      summary: (domNode: HTMLElement) => {\n        return {\n          conversion: $convertSummaryElement,\n          priority: 1,\n        };\n      },\n    };\n  }\n\n  static importJSON(\n    // @ts-ignore\n    serializedNode: SerializedCollapsibleTitleNode\n  ): CollapsibleTitleNode {\n    return $createCollapsibleTitleNode();\n  }\n\n  exportJSON(): SerializedCollapsibleTitleNode {\n    return {\n      ...super.exportJSON(),\n      type: \"collapsible-title\",\n      version: 1,\n    };\n  }\n\n  collapseAtStart(_selection: RangeSelection): boolean {\n    this.getParentOrThrow().insertBefore(this);\n    return true;\n  }\n\n  static transform(): (node: LexicalNode) => void {\n    return (node: LexicalNode) => {\n      invariant(\n        $isCollapsibleTitleNode(node),\n        \"node is not a CollapsibleTitleNode\"\n      );\n      if (node.isEmpty()) {\n        node.remove();\n      }\n    };\n  }\n\n  insertNewAfter(_: RangeSelection, restoreSelection = true): ElementNode {\n    const containerNode = this.getParentOrThrow();\n\n    if (!$isCollapsibleContainerNode(containerNode)) {\n      throw new Error(\n        \"CollapsibleTitleNode expects to be child of CollapsibleContainerNode\"\n      );\n    }\n\n    if (containerNode.getOpen()) {\n      const contentNode = this.getNextSibling();\n      if (!$isCollapsibleContentNode(contentNode)) {\n        throw new Error(\n          \"CollapsibleTitleNode expects to have CollapsibleContentNode sibling\"\n        );\n      }\n\n      const firstChild = contentNode.getFirstChild();\n      if ($isElementNode(firstChild)) {\n        return firstChild;\n      } else {\n        const paragraph = $createParagraphNode();\n        contentNode.append(paragraph);\n        return paragraph;\n      }\n    } else {\n      const paragraph = $createParagraphNode();\n      containerNode.insertAfter(paragraph, restoreSelection);\n      return paragraph;\n    }\n  }\n}\n\nexport function $createCollapsibleTitleNode(): CollapsibleTitleNode {\n  return new CollapsibleTitleNode();\n}\n\nexport function $isCollapsibleTitleNode(\n  node: LexicalNode | null | undefined\n): node is CollapsibleTitleNode {\n  return node instanceof CollapsibleTitleNode;\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 */\n\nimport{DecoratorNode as t}from\"lexical\";class r extends t{constructor(t,r){super(r),this.__format=t||\"\"}exportJSON(){return{...super.exportJSON(),format:this.__format||\"\"}}updateFromJSON(t){return super.updateFromJSON(t).setFormat(t.format||\"\")}canIndent(){return!1}createDOM(){return document.createElement(\"div\")}updateDOM(){return!1}setFormat(t){const r=this.getWritable();return r.__format=t,r}isInline(){return!1}}function e(t){return t instanceof r}export{e as $isDecoratorBlockNode,r as DecoratorBlockNode};\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 */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{$isDecoratorBlockNode as t}from\"@lexical/react/LexicalDecoratorBlockNode\";import{useLexicalNodeSelection as r}from\"@lexical/react/useLexicalNodeSelection\";import{mergeRegister as o,$getNearestBlockElementAncestorOrThrow as i}from\"@lexical/utils\";import{FORMAT_ELEMENT_COMMAND as l,$getSelection as a,$isNodeSelection as c,$getNodeByKey as m,$isRangeSelection as n,COMMAND_PRIORITY_LOW as s,CLICK_COMMAND as f}from\"lexical\";import{useRef as u,useEffect as x}from\"react\";import{jsx as d}from\"react/jsx-runtime\";function p({children:p,format:g,nodeKey:N,className:C}){const[h]=e(),[v,y,F]=r(N),L=u(null);return x((()=>o(h.registerCommand(l,(e=>{if(v){const r=a();if(c(r)){const r=m(N);t(r)&&r.setFormat(e)}else if(n(r)){const o=r.getNodes();for(const r of o)if(t(r))r.setFormat(e);else{i(r).setFormat(e)}}return!0}return!1}),s),h.registerCommand(f,(e=>e.target===L.current&&(e.preventDefault(),e.shiftKey||F(),y(!v),!0)),s))),[F,h,v,N,y]),d(\"div\",{className:[C.base,v?C.focus:null].filter(Boolean).join(\" \"),ref:L,style:{textAlign:g||void 0},children:p})}export{p as BlockWithAlignableContents};\n","import { JSX } from \"react\";\n\nimport { BlockWithAlignableContents } from \"@lexical/react/LexicalBlockWithAlignableContents\";\nimport {\n  DecoratorBlockNode,\n  SerializedDecoratorBlockNode,\n} from \"@lexical/react/LexicalDecoratorBlockNode\";\nimport type {\n  EditorConfig,\n  ElementFormatType,\n  LexicalEditor,\n  LexicalNode,\n  NodeKey,\n  Spread,\n} from \"lexical\";\n\ntype FigmaComponentProps = Readonly<{\n  className: Readonly<{\n    base: string;\n    focus: string;\n  }>;\n  format: ElementFormatType | null;\n  nodeKey: NodeKey;\n  documentID: string;\n}>;\n\nfunction FigmaComponent({\n  className,\n  format,\n  nodeKey,\n  documentID,\n}: FigmaComponentProps) {\n  return (\n    <BlockWithAlignableContents\n      className={className}\n      format={format}\n      nodeKey={nodeKey}\n    >\n      <iframe\n        width=\"560\"\n        height=\"315\"\n        src={`https://www.figma.com/embed?embed_host=lexical&url=\\\n        https://www.figma.com/file/${documentID}`}\n        allowFullScreen={true}\n      />\n    </BlockWithAlignableContents>\n  );\n}\n\nexport type SerializedFigmaNode = Spread<\n  {\n    documentID: string;\n  },\n  SerializedDecoratorBlockNode\n>;\n\nexport class FigmaNode extends DecoratorBlockNode {\n  __id: string;\n\n  static getType(): string {\n    return \"figma\";\n  }\n\n  static clone(node: FigmaNode): FigmaNode {\n    return new FigmaNode(node.__id, node.__format, node.__key);\n  }\n\n  static importJSON(serializedNode: SerializedFigmaNode): FigmaNode {\n    const node = $createFigmaNode(serializedNode.documentID);\n    node.setFormat(serializedNode.format);\n    return node;\n  }\n\n  exportJSON(): SerializedFigmaNode {\n    return {\n      ...super.exportJSON(),\n      documentID: this.__id,\n      type: \"figma\",\n      version: 1,\n    };\n  }\n\n  constructor(id: string, format?: ElementFormatType, key?: NodeKey) {\n    super(format, key);\n    this.__id = id;\n  }\n\n  updateDOM(): false {\n    return false;\n  }\n\n  getId(): string {\n    return this.__id;\n  }\n\n  getTextContent(\n    _includeInert?: boolean | undefined,\n    _includeDirectionless?: false | undefined\n  ): string {\n    return `https://www.figma.com/file/${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      <FigmaComponent\n        className={className}\n        format={this.__format}\n        nodeKey={this.getKey()}\n        documentID={this.__id}\n      />\n    );\n  }\n}\n\nexport function $createFigmaNode(documentID: string): FigmaNode {\n  return new FigmaNode(documentID);\n}\n\nexport function $isFigmaNode(\n  node: FigmaNode | LexicalNode | null | undefined\n): node is FigmaNode {\n  return node instanceof FigmaNode;\n}\n","import { useCallback, useEffect, useRef, useState, JSX } from \"react\";\n\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      // @ts-expect-error Twitter is attached to the window.\n      await window.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      setIsTweetLoading(true);\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        createTweet();\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        style={{ display: \"inline-block\", width: \"550px\" }}\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    _includeInert?: boolean | undefined,\n    _includeDirectionless?: false | undefined\n  ): string {\n    return `https://x.com/i/web/status/${this.__id}`;\n  }\n  // @ts-ignore\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 { JSX } from \"react\";\n\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\ntype YouTubeComponentProps = Readonly<{\n  className: Readonly<{\n    base: string;\n    focus: string;\n  }>;\n  format: ElementFormatType | null;\n  nodeKey: NodeKey;\n  videoID: string;\n}>;\n\nfunction YouTubeComponent({\n  className,\n  format,\n  nodeKey,\n  videoID,\n}: YouTubeComponentProps) {\n  return (\n    <BlockWithAlignableContents\n      className={className}\n      format={format}\n      nodeKey={nodeKey}\n    >\n      <iframe\n        width=\"560\"\n        height=\"315\"\n        src={`https://www.youtube-nocookie.com/embed/${videoID}`}\n        frameBorder=\"0\"\n        allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n        allowFullScreen={true}\n        title=\"YouTube video\"\n      />\n    </BlockWithAlignableContents>\n  );\n}\n\nexport type SerializedYouTubeNode = Spread<\n  {\n    videoID: string;\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\n  static getType(): string {\n    return \"youtube\";\n  }\n\n  static clone(node: YouTubeNode): YouTubeNode {\n    return new YouTubeNode(node.__id, node.__format, node.__key);\n  }\n\n  static importJSON(serializedNode: SerializedYouTubeNode): YouTubeNode {\n    const node = $createYouTubeNode(serializedNode.videoID);\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    };\n  }\n\n  constructor(id: string, format?: ElementFormatType, key?: NodeKey) {\n    super(format, key);\n    this.__id = id;\n  }\n\n  exportDOM(): DOMExportOutput {\n    const element = document.createElement(\"iframe\");\n    element.setAttribute(\"data-lexical-youtube\", this.__id);\n    element.setAttribute(\"width\", \"560\");\n    element.setAttribute(\"height\", \"315\");\n    element.setAttribute(\n      \"src\",\n      `https://www.youtube-nocookie.com/embed/${this.__id}`\n    );\n    element.setAttribute(\"frameborder\", \"0\");\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    _includeInert?: boolean | undefined,\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      />\n    );\n  }\n}\n\nexport function $createYouTubeNode(videoID: string): YouTubeNode {\n  return new YouTubeNode(videoID);\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(\n    prevNode: EmojiNode,\n    dom: HTMLElement,\n    config: EditorConfig\n  ): boolean {\n    const inner = dom.firstChild;\n    if (inner === null) {\n      return true;\n    }\n    // @ts-ignore - The TextNode.updateDOM method is compatible with our implementation\n    super.updateDOM(prevNode, inner as HTMLElement, config);\n    return false;\n  }\n\n  static importJSON(serializedNode: SerializedEmojiNode): EmojiNode {\n    const node = $createEmojiNode(\n      serializedNode.className,\n      serializedNode.text\n    );\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(): SerializedEmojiNode {\n    return {\n      ...super.exportJSON(),\n      className: this.getClassName(),\n      type: \"emoji\",\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 { Suspense, JSX } from \"react\";\nimport React from \"react\";\nimport katex from \"katex\";\nimport type {\n  DOMConversionMap,\n  DOMConversionOutput,\n  EditorConfig,\n  LexicalNode,\n  NodeKey,\n  SerializedLexicalNode,\n  Spread,\n} from \"lexical\";\nimport { $applyNodeReplacement, DOMExportOutput, DecoratorNode } from \"lexical\";\n\nconst EquationComponent = React.lazy(\n  () => import(\"../editor-ui/equation-component\")\n);\n\nexport type SerializedEquationNode = Spread<\n  {\n    equation: string;\n    inline: boolean;\n  },\n  SerializedLexicalNode\n>;\n\nfunction $convertEquationElement(\n  domNode: HTMLElement\n): null | DOMConversionOutput {\n  let equation = domNode.getAttribute(\"data-lexical-equation\");\n  const inline = domNode.getAttribute(\"data-lexical-inline\") === \"true\";\n  // Decode the equation from base64\n  equation = atob(equation || \"\");\n  if (equation) {\n    const node = $createEquationNode(equation, inline);\n    return { node };\n  }\n\n  return null;\n}\n\nexport class EquationNode extends DecoratorNode<JSX.Element> {\n  __equation: string;\n  __inline: boolean;\n\n  static getType(): string {\n    return \"equation\";\n  }\n\n  static clone(node: EquationNode): EquationNode {\n    return new EquationNode(node.__equation, node.__inline, node.__key);\n  }\n\n  constructor(equation: string, inline?: boolean, key?: NodeKey) {\n    super(key);\n    this.__equation = equation;\n    this.__inline = inline ?? false;\n  }\n\n  static importJSON(serializedNode: SerializedEquationNode): EquationNode {\n    const node = $createEquationNode(\n      serializedNode.equation,\n      serializedNode.inline\n    );\n    return node;\n  }\n\n  exportJSON(): SerializedEquationNode {\n    return {\n      equation: this.getEquation(),\n      inline: this.__inline,\n      type: \"equation\",\n      version: 1,\n    };\n  }\n\n  createDOM(_config: EditorConfig): HTMLElement {\n    const element = document.createElement(this.__inline ? \"span\" : \"div\");\n    // EquationNodes should implement `user-action:none` in their CSS to avoid issues with deletion on Android.\n    element.className =\n      \"editor-equation user-action-none cursor-default focus:ring-2 focus:ring-primary focus:ring-offset-2 inline-block\";\n    return element;\n  }\n\n  exportDOM(): DOMExportOutput {\n    const element = document.createElement(this.__inline ? \"span\" : \"div\");\n    // Encode the equation as base64 to avoid issues with special characters\n    const equation = btoa(this.__equation);\n    element.setAttribute(\"data-lexical-equation\", equation);\n    element.setAttribute(\"data-lexical-inline\", `${this.__inline}`);\n    katex.render(this.__equation, element, {\n      displayMode: !this.__inline, // true === block display //\n      errorColor: \"var(--content-presentation-state-negative-primary)\",\n      output: \"html\",\n      strict: \"warn\",\n      throwOnError: false,\n      trust: false,\n    });\n    return { element };\n  }\n\n  static importDOM(): DOMConversionMap | null {\n    return {\n      div: (domNode: HTMLElement) => {\n        if (!domNode.hasAttribute(\"data-lexical-equation\")) {\n          return null;\n        }\n        return {\n          conversion: $convertEquationElement,\n          priority: 2,\n        };\n      },\n      span: (domNode: HTMLElement) => {\n        if (!domNode.hasAttribute(\"data-lexical-equation\")) {\n          return null;\n        }\n        return {\n          conversion: $convertEquationElement,\n          priority: 1,\n        };\n      },\n    };\n  }\n\n  updateDOM(prevNode: EquationNode): boolean {\n    // If the inline property changes, replace the element\n    return this.__inline !== prevNode.__inline;\n  }\n\n  getTextContent(): string {\n    return this.__equation;\n  }\n\n  getEquation(): string {\n    return this.__equation;\n  }\n\n  setEquation(equation: string): void {\n    const writable = this.getWritable();\n    writable.__equation = equation;\n  }\n\n  decorate(): JSX.Element {\n    return (\n      <Suspense fallback={null}>\n        <EquationComponent\n          equation={this.__equation}\n          inline={this.__inline}\n          nodeKey={this.__key}\n        />\n      </Suspense>\n    );\n  }\n}\n\nexport function $createEquationNode(\n  equation = \"\",\n  inline = false\n): EquationNode {\n  const equationNode = new EquationNode(equation, inline);\n  return $applyNodeReplacement(equationNode);\n}\n\nexport function $isEquationNode(\n  node: LexicalNode | null | undefined\n): node is EquationNode {\n  return node instanceof EquationNode;\n}\n","import React from \"react\";\nimport { Suspense, JSX } from \"react\";\n\nimport type {\n  DOMConversionMap,\n  DOMConversionOutput,\n  DOMExportOutput,\n  EditorConfig,\n  LexicalEditor,\n  LexicalNode,\n  NodeKey,\n  SerializedLexicalNode,\n  Spread,\n} from \"lexical\";\nimport { DecoratorNode } from \"lexical\";\n\ntype Dimension = number | \"inherit\";\n\nconst ExcalidrawComponent = React.lazy(\n  () => import(\"../editor-ui/excalidraw-component\")\n);\n\nexport type SerializedExcalidrawNode = Spread<\n  {\n    data: string;\n    width?: Dimension;\n    height?: Dimension;\n  },\n  SerializedLexicalNode\n>;\n\nfunction $convertExcalidrawElement(\n  domNode: HTMLElement\n): DOMConversionOutput | null {\n  const excalidrawData = domNode.getAttribute(\"data-lexical-excalidraw-json\");\n  const styleAttributes = window.getComputedStyle(domNode);\n  const heightStr = styleAttributes.getPropertyValue(\"height\");\n  const widthStr = styleAttributes.getPropertyValue(\"width\");\n  const height =\n    !heightStr || heightStr === \"inherit\" ? \"inherit\" : parseInt(heightStr, 10);\n  const width =\n    !widthStr || widthStr === \"inherit\" ? \"inherit\" : parseInt(widthStr, 10);\n\n  if (excalidrawData) {\n    const node = $createExcalidrawNode(excalidrawData, width, height);\n    return {\n      node,\n    };\n  }\n  return null;\n}\n\nexport class ExcalidrawNode extends DecoratorNode<JSX.Element> {\n  __data: string;\n  __width: Dimension;\n  __height: Dimension;\n\n  static getType(): string {\n    return \"excalidraw\";\n  }\n\n  static clone(node: ExcalidrawNode): ExcalidrawNode {\n    return new ExcalidrawNode(\n      node.__data,\n      node.__width,\n      node.__height,\n      node.__key\n    );\n  }\n\n  static importJSON(serializedNode: SerializedExcalidrawNode): ExcalidrawNode {\n    return new ExcalidrawNode(\n      serializedNode.data,\n      serializedNode.width ?? \"inherit\",\n      serializedNode.height ?? \"inherit\"\n    );\n  }\n\n  exportJSON(): SerializedExcalidrawNode {\n    return {\n      data: this.__data,\n      height: this.__height === \"inherit\" ? undefined : this.__height,\n      type: \"excalidraw\",\n      version: 1,\n      width: this.__width === \"inherit\" ? undefined : this.__width,\n    };\n  }\n\n  constructor(\n    data = \"[]\",\n    width: Dimension = \"inherit\",\n    height: Dimension = \"inherit\",\n    key?: NodeKey\n  ) {\n    super(key);\n    this.__data = data;\n    this.__width = width;\n    this.__height = height;\n  }\n\n  // View\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  static importDOM(): DOMConversionMap<HTMLSpanElement> | null {\n    return {\n      span: (domNode: HTMLSpanElement) => {\n        if (!domNode.hasAttribute(\"data-lexical-excalidraw-json\")) {\n          return null;\n        }\n        return {\n          conversion: $convertExcalidrawElement,\n          priority: 1,\n        };\n      },\n    };\n  }\n\n  exportDOM(editor: LexicalEditor): DOMExportOutput {\n    const element = document.createElement(\"span\");\n\n    element.style.display = \"inline-block\";\n\n    const content = editor.getElementByKey(this.getKey());\n    if (content !== null) {\n      const svg = content.querySelector(\"svg\");\n      if (svg !== null) {\n        element.innerHTML = svg.outerHTML;\n      }\n    }\n\n    element.style.width =\n      this.__width === \"inherit\" ? \"inherit\" : `${this.__width}px`;\n    element.style.height =\n      this.__height === \"inherit\" ? \"inherit\" : `${this.__height}px`;\n\n    element.setAttribute(\"data-lexical-excalidraw-json\", this.__data);\n    return { element };\n  }\n\n  setData(data: string): void {\n    const self = this.getWritable();\n    self.__data = data;\n  }\n\n  getWidth(): Dimension {\n    return this.getLatest().__width;\n  }\n\n  setWidth(width: Dimension): void {\n    const self = this.getWritable();\n    self.__width = width;\n  }\n\n  getHeight(): Dimension {\n    return this.getLatest().__height;\n  }\n\n  setHeight(height: Dimension): void {\n    const self = this.getWritable();\n    self.__height = height;\n  }\n\n  decorate(): JSX.Element {\n    return (\n      <Suspense fallback={null}>\n        <ExcalidrawComponent\n          nodeKey={this.getKey()}\n          data={this.__data}\n          width={this.__width}\n          height={this.__height}\n        />\n      </Suspense>\n    );\n  }\n}\n\nexport function $createExcalidrawNode(\n  data: string = \"[]\",\n  width: Dimension = \"inherit\",\n  height: Dimension = \"inherit\"\n): ExcalidrawNode {\n  return new ExcalidrawNode(data, width, height);\n}\n\nexport function $isExcalidrawNode(\n  node: LexicalNode | null | undefined\n): node is ExcalidrawNode {\n  return node instanceof ExcalidrawNode;\n}\n","import React from \"react\";\nimport { Suspense, JSX } from \"react\";\n\nimport type {\n  DOMConversionMap,\n  DOMConversionOutput,\n  DOMExportOutput,\n  EditorConfig,\n  LexicalEditor,\n  LexicalNode,\n  NodeKey,\n  SerializedEditor,\n  SerializedLexicalNode,\n  Spread,\n} from \"lexical\";\nimport { $applyNodeReplacement, DecoratorNode, createEditor } from \"lexical\";\n\nconst ImageComponent = React.lazy(() => import(\"../editor-ui/image-component\"));\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}\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  },\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\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.__key\n    );\n  }\n\n  static importJSON(serializedNode: SerializedImageNode): ImageNode {\n    const { altText, height, width, maxWidth, caption, src, showCaption } =\n      serializedNode;\n    const node = $createImageNode({\n      altText,\n      height,\n      maxWidth,\n      showCaption,\n      src,\n      width,\n    });\n    const nestedEditor = node.__caption;\n    const editorState = nestedEditor.parseEditorState(caption.editorState);\n    if (!editorState.isEmpty()) {\n      nestedEditor.setEditorState(editorState);\n    }\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    element.setAttribute(\"width\", this.__width.toString());\n    element.setAttribute(\"height\", this.__height.toString());\n    return { element };\n  }\n\n  static importDOM(): DOMConversionMap | null {\n    return {\n      img: () => ({\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    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        nodes: [],\n      });\n    this.__captionsEnabled = captionsEnabled || captionsEnabled === undefined;\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,\n      src: this.getSrc(),\n      type: \"image\",\n      version: 1,\n      width: this.__width === \"inherit\" ? 0 : this.__width,\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  setShowCaption(showCaption: boolean): void {\n    const writable = this.getWritable();\n    writable.__showCaption = showCaption;\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          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  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      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 React from \"react\";\nimport { Suspense, JSX } from \"react\";\n\nimport type {\n  DOMConversionMap,\n  DOMConversionOutput,\n  DOMExportOutput,\n  EditorConfig,\n  LexicalEditor,\n  LexicalNode,\n  NodeKey,\n  SerializedEditor,\n  SerializedLexicalNode,\n  Spread,\n} from \"lexical\";\nimport { $applyNodeReplacement, DecoratorNode, createEditor } from \"lexical\";\n\nconst InlineImageComponent = React.lazy(\n  () => import(\"../editor-ui/inline-image-component\")\n);\n\nexport type Position = \"left\" | \"right\" | \"full\" | undefined;\n\nexport interface InlineImagePayload {\n  altText: string;\n  caption?: LexicalEditor;\n  height?: number;\n  key?: NodeKey;\n  showCaption?: boolean;\n  src: string;\n  width?: number;\n  position?: Position;\n}\n\nexport interface UpdateInlineImagePayload {\n  altText?: string;\n  showCaption?: boolean;\n  position?: Position;\n}\n\nfunction $convertInlineImageElement(domNode: Node): null | DOMConversionOutput {\n  if (domNode instanceof HTMLImageElement) {\n    const { alt: altText, src, width, height } = domNode;\n    const node = $createInlineImageNode({ altText, height, src, width });\n    return { node };\n  }\n  return null;\n}\n\nexport type SerializedInlineImageNode = Spread<\n  {\n    altText: string;\n    caption: SerializedEditor;\n    height?: number;\n    showCaption: boolean;\n    src: string;\n    width?: number;\n    position?: Position;\n  },\n  SerializedLexicalNode\n>;\n\nexport class InlineImageNode extends DecoratorNode<JSX.Element> {\n  __src: string;\n  __altText: string;\n  __width: \"inherit\" | number;\n  __height: \"inherit\" | number;\n  __showCaption: boolean;\n  __caption: LexicalEditor;\n  __position: Position;\n\n  static getType(): string {\n    return \"inline-image\";\n  }\n\n  static clone(node: InlineImageNode): InlineImageNode {\n    return new InlineImageNode(\n      node.__src,\n      node.__altText,\n      node.__position,\n      node.__width,\n      node.__height,\n      node.__showCaption,\n      node.__caption,\n      node.__key\n    );\n  }\n\n  static importJSON(\n    serializedNode: SerializedInlineImageNode\n  ): InlineImageNode {\n    const { altText, height, width, caption, src, showCaption, position } =\n      serializedNode;\n    const node = $createInlineImageNode({\n      altText,\n      height,\n      position,\n      showCaption,\n      src,\n      width,\n    });\n    const nestedEditor = node.__caption;\n    const editorState = nestedEditor.parseEditorState(caption.editorState);\n    if (!editorState.isEmpty()) {\n      nestedEditor.setEditorState(editorState);\n    }\n    return node;\n  }\n\n  static importDOM(): DOMConversionMap | null {\n    return {\n      img: () => ({\n        conversion: $convertInlineImageElement,\n        priority: 0,\n      }),\n    };\n  }\n\n  constructor(\n    src: string,\n    altText: string,\n    position: Position,\n    width?: \"inherit\" | number,\n    height?: \"inherit\" | number,\n    showCaption?: boolean,\n    caption?: LexicalEditor,\n    key?: NodeKey\n  ) {\n    super(key);\n    this.__src = src;\n    this.__altText = altText;\n    this.__width = width || \"inherit\";\n    this.__height = height || \"inherit\";\n    this.__showCaption = showCaption || false;\n    this.__caption = caption || createEditor();\n    this.__position = position;\n  }\n\n  exportDOM(): DOMExportOutput {\n    const element = document.createElement(\"img\");\n    element.setAttribute(\"src\", this.__src);\n    element.setAttribute(\"alt\", this.__altText);\n    element.setAttribute(\"width\", this.__width.toString());\n    element.setAttribute(\"height\", this.__height.toString());\n    return { element };\n  }\n\n  exportJSON(): SerializedInlineImageNode {\n    return {\n      altText: this.getAltText(),\n      caption: this.__caption.toJSON(),\n      height: this.__height === \"inherit\" ? 0 : this.__height,\n      position: this.__position,\n      showCaption: this.__showCaption,\n      src: this.getSrc(),\n      type: \"inline-image\",\n      version: 1,\n      width: this.__width === \"inherit\" ? 0 : this.__width,\n    };\n  }\n\n  getSrc(): string {\n    return this.__src;\n  }\n\n  getAltText(): string {\n    return this.__altText;\n  }\n\n  setAltText(altText: string): void {\n    const writable = this.getWritable();\n    writable.__altText = altText;\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  getShowCaption(): boolean {\n    return this.__showCaption;\n  }\n\n  setShowCaption(showCaption: boolean): void {\n    const writable = this.getWritable();\n    writable.__showCaption = showCaption;\n  }\n\n  getPosition(): Position {\n    return this.__position;\n  }\n\n  setPosition(position: Position): void {\n    const writable = this.getWritable();\n    writable.__position = position;\n  }\n\n  update(payload: UpdateInlineImagePayload): void {\n    const writable = this.getWritable();\n    const { altText, showCaption, position } = payload;\n    if (altText !== undefined) {\n      writable.__altText = altText;\n    }\n    if (showCaption !== undefined) {\n      writable.__showCaption = showCaption;\n    }\n    if (position !== undefined) {\n      writable.__position = position;\n    }\n  }\n\n  // View\n  getPositionClassName(): string {\n    switch (this.__position) {\n      case \"left\":\n        return \"float-left w-1/2\";\n      case \"right\":\n        return \"float-right w-1/2 \";\n      case \"full\":\n        return \"w-full\";\n      default:\n        return \"\";\n    }\n  }\n\n  createDOM(config: EditorConfig): HTMLElement {\n    const span = document.createElement(\"span\");\n    const className = `${\n      config.theme.inlineImage\n    } ${this.getPositionClassName()}`;\n    if (className !== undefined) {\n      span.className = className;\n    }\n    return span;\n  }\n\n  updateDOM(\n    prevNode: InlineImageNode,\n    dom: HTMLElement,\n    config: EditorConfig\n  ): false {\n    const position = this.__position;\n    if (position !== prevNode.__position) {\n      const className = `${\n        config.theme.inlineImage\n      } ${this.getPositionClassName()}`;\n      if (className !== undefined) {\n        dom.className = className;\n      }\n    }\n    return false;\n  }\n\n  decorate(): JSX.Element {\n    return (\n      <Suspense fallback={null}>\n        <InlineImageComponent\n          src={this.__src}\n          altText={this.__altText}\n          width={this.__width}\n          height={this.__height}\n          nodeKey={this.getKey()}\n          showCaption={this.__showCaption}\n          caption={this.__caption}\n          position={this.__position}\n        />\n      </Suspense>\n    );\n  }\n}\n\nexport function $createInlineImageNode({\n  altText,\n  position,\n  height,\n  src,\n  width,\n  showCaption,\n  caption,\n  key,\n}: InlineImagePayload): InlineImageNode {\n  return $applyNodeReplacement(\n    new InlineImageNode(\n      src,\n      altText,\n      position,\n      width,\n      height,\n      showCaption,\n      caption,\n      key\n    )\n  );\n}\n\nexport function $isInlineImageNode(\n  node: LexicalNode | null | undefined\n): node is InlineImageNode {\n  return node instanceof InlineImageNode;\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\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    if (typeof config.theme.layoutItem === 'string') {\n      addClassNamesToElement(dom, config.theme.layoutItem)\n    }\n    return dom\n  }\n\n  updateDOM(): boolean {\n    return false\n  }\n\n  static importDOM(): DOMConversionMap | null {\n    return {}\n  }\n\n  static importJSON(): LayoutItemNode {\n    return $createLayoutItemNode()\n  }\n\n  isShadowRoot(): boolean {\n    return true\n  }\n\n  exportJSON(): SerializedLayoutItemNode {\n    return {\n      ...super.exportJSON(),\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","import {\n  $applyNodeReplacement,\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  TextNode,\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: var(--background-presentation-action-selected)'\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 { useCallback, useEffect, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useLexicalNodeSelection } from \"@lexical/react/useLexicalNodeSelection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport {\n  $getSelection,\n  $isNodeSelection,\n  CLICK_COMMAND,\n  COMMAND_PRIORITY_HIGH,\n  COMMAND_PRIORITY_LOW,\n  DOMConversionMap,\n  DOMConversionOutput,\n  DecoratorNode,\n  KEY_BACKSPACE_COMMAND,\n  KEY_DELETE_COMMAND,\n  LexicalNode,\n  NodeKey,\n  SerializedLexicalNode,\n} from \"lexical\";\n\nexport type SerializedPageBreakNode = SerializedLexicalNode;\n\nfunction PageBreakComponent({ nodeKey }: { nodeKey: NodeKey }) {\n  const [editor] = useLexicalComposerContext();\n  const [isSelected, setSelected, clearSelection] =\n    useLexicalNodeSelection(nodeKey);\n\n  const $onDelete = useCallback(\n    (event: KeyboardEvent) => {\n      event.preventDefault();\n      const deleteSelection = $getSelection();\n      if (isSelected && $isNodeSelection(deleteSelection)) {\n        editor.update(() => {\n          deleteSelection.getNodes().forEach((node) => {\n            if ($isPageBreakNode(node)) {\n              node.remove();\n            }\n          });\n        });\n      }\n      return false;\n    },\n    [editor, isSelected]\n  );\n\n  useEffect(() => {\n    return mergeRegister(\n      editor.registerCommand(\n        CLICK_COMMAND,\n        (event: MouseEvent) => {\n          const pbElem = editor.getElementByKey(nodeKey);\n\n          if (event.target === pbElem) {\n            if (!event.shiftKey) {\n              clearSelection();\n            }\n            setSelected(!isSelected);\n            return true;\n          }\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    );\n  }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected]);\n\n  useEffect(() => {\n    const pbElem = editor.getElementByKey(nodeKey);\n    if (pbElem !== null) {\n      if (isSelected) {\n        pbElem.classList.add(\"!border-border-presentation-state-focus\");\n        pbElem.classList.add(\n          \"!after:text-content-presentation-state-focus\"\n        );\n        pbElem.classList.add(\"!before:opacity-100\");\n      } else {\n        pbElem.classList.remove(\n          \"!border-border-presentation-state-focus\"\n        );\n        pbElem.classList.remove(\n          \"!after:text-content-presentation-state-focus\"\n        );\n        pbElem.classList.remove(\"!before:opacity-100\");\n      }\n    }\n  }, [editor, isSelected, nodeKey]);\n\n  return null;\n}\n\nexport class PageBreakNode extends DecoratorNode<JSX.Element> {\n  static getType(): string {\n    return \"page-break\";\n  }\n\n  static clone(node: PageBreakNode): PageBreakNode {\n    return new PageBreakNode(node.__key);\n  }\n\n  static importJSON(): PageBreakNode {\n    return $createPageBreakNode();\n  }\n\n  static importDOM(): DOMConversionMap | null {\n    return {\n      figure: (domNode: HTMLElement) => {\n        const tp = domNode.getAttribute(\"type\");\n        if (tp !== this.getType()) {\n          return null;\n        }\n\n        return {\n          conversion: $convertPageBreakElement,\n          priority: COMMAND_PRIORITY_HIGH,\n        };\n      },\n    };\n  }\n\n  exportJSON(): SerializedLexicalNode {\n    return {\n      type: this.getType(),\n      version: 1,\n    };\n  }\n\n  createDOM(): HTMLElement {\n    const el = document.createElement(\"figure\");\n    el.setAttribute(\"type\", this.getType());\n    el.style.pageBreakAfter = \"always\";\n    el.className = `\n      relative block w-[calc(100%+56px)] overflow-visible \n      -ml-[28px] mt-7 mb-7\n      border-0 border-t border-b border-dashed border-border-system-global-secondary\n      bg-background-system-body-secondary\n      before:content-[''] \n      before:absolute before:top-1/2 before:-translate-y-1/2\n      before:left-10 before:opacity-50\n      before:bg-cover before:w-4 before:h-4\n      after:content-['PAGE_BREAK']\n      after:absolute after:top-1/2 after:left-1/2 \n      after:-translate-x-1/2 after:-translate-y-1/2\n      after:block after:py-0.5 after:px-1.5\n      after:border after:border-solid       after:border-border-system-global-secondary\n      after:bg-background-system-body-primary after:text-xs after:text-content-system-global-primary after:font-semibold\n    `;\n    return el;\n  }\n\n  getTextContent(): string {\n    return \"\\n\";\n  }\n\n  isInline(): false {\n    return false;\n  }\n\n  updateDOM(): boolean {\n    return false;\n  }\n\n  decorate(): JSX.Element {\n    return <PageBreakComponent nodeKey={this.__key} />;\n  }\n}\n\nfunction $convertPageBreakElement(): DOMConversionOutput {\n  return { node: $createPageBreakNode() };\n}\n\nexport function $createPageBreakNode(): PageBreakNode {\n  return new PageBreakNode();\n}\n\nexport function $isPageBreakNode(\n  node: LexicalNode | null | undefined\n): node is PageBreakNode {\n  return node instanceof PageBreakNode;\n}\n","import React from \"react\";\nimport { Suspense, JSX } from \"react\";\n\nimport {\n  DOMConversionMap,\n  DOMConversionOutput,\n  DOMExportOutput,\n  DecoratorNode,\n  LexicalNode,\n  NodeKey,\n  SerializedLexicalNode,\n  Spread,\n} from \"lexical\";\n\nexport type Options = ReadonlyArray<Option>;\n\nexport type Option = Readonly<{\n  text: string;\n  uid: string;\n  votes: Array<number>;\n}>;\n\nconst PollComponent = React.lazy(() => import(\"../editor-ui/poll-component\"));\n\nfunction createUID(): string {\n  return Math.random()\n    .toString(36)\n    .replace(/[^a-z]+/g, \"\")\n    .substr(0, 5);\n}\n\nexport function createPollOption(text = \"\"): Option {\n  return {\n    text,\n    uid: createUID(),\n    votes: [],\n  };\n}\n\nfunction cloneOption(\n  option: Option,\n  text: string,\n  votes?: Array<number>\n): Option {\n  return {\n    text,\n    uid: option.uid,\n    votes: votes || Array.from(option.votes),\n  };\n}\n\nexport type SerializedPollNode = Spread<\n  {\n    question: string;\n    options: Options;\n  },\n  SerializedLexicalNode\n>;\n\nfunction $convertPollElement(domNode: HTMLElement): DOMConversionOutput | null {\n  const question = domNode.getAttribute(\"data-lexical-poll-question\");\n  const options = domNode.getAttribute(\"data-lexical-poll-options\");\n  if (question !== null && options !== null) {\n    const node = $createPollNode(question, JSON.parse(options));\n    return { node };\n  }\n  return null;\n}\n\nexport class PollNode extends DecoratorNode<JSX.Element> {\n  __question: string;\n  __options: Options;\n\n  static getType(): string {\n    return \"poll\";\n  }\n\n  static clone(node: PollNode): PollNode {\n    return new PollNode(node.__question, node.__options, node.__key);\n  }\n\n  static importJSON(serializedNode: SerializedPollNode): PollNode {\n    const node = $createPollNode(\n      serializedNode.question,\n      serializedNode.options\n    );\n    serializedNode.options.forEach(node.addOption);\n    return node;\n  }\n\n  constructor(question: string, options: Options, key?: NodeKey) {\n    super(key);\n    this.__question = question;\n    this.__options = options;\n  }\n\n  exportJSON(): SerializedPollNode {\n    return {\n      options: this.__options,\n      question: this.__question,\n      type: \"poll\",\n      version: 1,\n    };\n  }\n\n  addOption(option: Option): void {\n    const self = this.getWritable();\n    const options = Array.from(self.__options);\n    options.push(option);\n    self.__options = options;\n  }\n\n  deleteOption(option: Option): void {\n    const self = this.getWritable();\n    const options = Array.from(self.__options);\n    const index = options.indexOf(option);\n    options.splice(index, 1);\n    self.__options = options;\n  }\n\n  setOptionText(option: Option, text: string): void {\n    const self = this.getWritable();\n    const clonedOption = cloneOption(option, text);\n    const options = Array.from(self.__options);\n    const index = options.indexOf(option);\n    options[index] = clonedOption;\n    self.__options = options;\n  }\n\n  toggleVote(option: Option, clientID: number): void {\n    const self = this.getWritable();\n    const votes = option.votes;\n    const votesClone = Array.from(votes);\n    const voteIndex = votes.indexOf(clientID);\n    if (voteIndex === -1) {\n      votesClone.push(clientID);\n    } else {\n      votesClone.splice(voteIndex, 1);\n    }\n    const clonedOption = cloneOption(option, option.text, votesClone);\n    const options = Array.from(self.__options);\n    const index = options.indexOf(option);\n    options[index] = clonedOption;\n    self.__options = options;\n  }\n\n  static importDOM(): DOMConversionMap | null {\n    return {\n      span: (domNode: HTMLElement) => {\n        if (!domNode.hasAttribute(\"data-lexical-poll-question\")) {\n          return null;\n        }\n        return {\n          conversion: $convertPollElement,\n          priority: 2,\n        };\n      },\n    };\n  }\n\n  exportDOM(): DOMExportOutput {\n    const element = document.createElement(\"span\");\n    element.setAttribute(\"data-lexical-poll-question\", this.__question);\n    element.setAttribute(\n      \"data-lexical-poll-options\",\n      JSON.stringify(this.__options)\n    );\n    return { element };\n  }\n\n  createDOM(): HTMLElement {\n    const elem = document.createElement(\"span\");\n    elem.style.display = \"inline-block\";\n    return elem;\n  }\n\n  updateDOM(): false {\n    return false;\n  }\n\n  decorate(): JSX.Element {\n    return (\n      <Suspense fallback={null}>\n        <PollComponent\n          question={this.__question}\n          options={this.__options}\n          nodeKey={this.__key}\n        />\n      </Suspense>\n    );\n  }\n}\n\nexport function $createPollNode(question: string, options: Options): PollNode {\n  return new PollNode(question, options);\n}\n\nexport function $isPollNode(\n  node: LexicalNode | null | undefined\n): node is PollNode {\n  return node instanceof PollNode;\n}\n","import { CodeHighlightNode, CodeNode } from '@lexical/code'\nimport { HashtagNode } from '@lexical/hashtag'\nimport { AutoLinkNode, LinkNode } from '@lexical/link'\nimport { ListItemNode, ListNode } 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  LexicalNode,\n  LexicalNodeReplacement,\n  ParagraphNode,\n  TextNode,\n} from 'lexical'\n\nimport { AutocompleteNode } from '@/components/editor/nodes/autocomplete-node'\nimport { CollapsibleContainerNode } from '@/components/editor/nodes/collapsible-container-node'\nimport { CollapsibleContentNode } from '@/components/editor/nodes/collapsible-content-node'\nimport { CollapsibleTitleNode } from '@/components/editor/nodes/collapsible-title-node'\nimport { FigmaNode } from '@/components/editor/nodes/embeds/figma-node'\nimport { TweetNode } from '@/components/editor/nodes/embeds/tweet-node'\nimport { YouTubeNode } from '@/components/editor/nodes/embeds/youtube-node'\nimport { EmojiNode } from '@/components/editor/nodes/emoji-node'\nimport { EquationNode } from '@/components/editor/nodes/equation-node'\nimport { ExcalidrawNode } from '@/components/editor/nodes/excalidraw-node'\nimport { ImageNode } from '@/components/editor/nodes/image-node'\nimport { InlineImageNode } from '@/components/editor/nodes/inline-image-node'\nimport { KeywordNode } from '@/components/editor/nodes/keyword-node'\nimport { LayoutContainerNode } from '@/components/editor/nodes/layout-container-node'\nimport { LayoutItemNode } from '@/components/editor/nodes/layout-item-node'\nimport { MentionNode } from '@/components/editor/nodes/mention-node'\nimport { PageBreakNode } from '@/components/editor/nodes/page-break-node'\nimport { PollNode } from '@/components/editor/nodes/poll-node'\n\nexport const nodes: ReadonlyArray<Klass<LexicalNode> | LexicalNodeReplacement> =\n  [\n    HeadingNode,\n    ParagraphNode,\n    TextNode,\n    QuoteNode,\n    ListNode,\n    ListItemNode,\n    LinkNode,\n    OverflowNode,\n    HashtagNode,\n    TableNode,\n    TableCellNode,\n    TableRowNode,\n    CodeNode,\n    CodeHighlightNode,\n    HorizontalRuleNode,\n    MentionNode,\n    PageBreakNode,\n    ImageNode,\n    InlineImageNode,\n    EmojiNode,\n    KeywordNode,\n    ExcalidrawNode,\n    PollNode,\n    LayoutContainerNode,\n    LayoutItemNode,\n    EquationNode,\n    CollapsibleContainerNode,\n    CollapsibleContentNode,\n    CollapsibleTitleNode,\n    AutoLinkNode,\n    FigmaNode,\n    TweetNode,\n    YouTubeNode,\n    AutocompleteNode,\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 */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useEffect as t}from\"react\";function o({defaultSelection:o}){const[l]=e();return t((()=>{l.focus((()=>{const e=document.activeElement,t=l.getRootElement();null===t||null!==e&&t.contains(e)||t.focus({preventScroll:!0})}),{defaultSelection:o})}),[o,l]),null}export{o as AutoFocusPlugin};\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 */\n\nimport{registerCheckList as o}from\"@lexical/list\";import{useLexicalComposerContext as r}from\"@lexical/react/LexicalComposerContext\";import{useEffect as t}from\"react\";function e(){const[e]=r();return t((()=>o(e)),[e]),null}export{e as CheckListPlugin};\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 */\n\nimport{$isLinkNode as e}from\"@lexical/link\";import{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{$findMatchingParent as n,isHTMLAnchorElement as r}from\"@lexical/utils\";import{isDOMNode as l,getNearestEditorFromDOMNode as o,$getNearestNodeFromDOMNode as i,$isElementNode as u,$getSelection as a,$isRangeSelection as c}from\"lexical\";import{useEffect as s}from\"react\";function f({newTab:f=!0,disabled:m=!1}){const[p]=t();return s((()=>{const t=t=>{const s=t.target;if(!l(s))return;const d=o(s);if(null===d)return;let v=null,x=null;if(d.update((()=>{const t=i(s);if(null!==t){const l=n(t,u);if(!m)if(e(l))v=l.sanitizeUrl(l.getURL()),x=l.getTarget();else{const e=function(e,t){let n=e;for(;null!=n;){if(t(n))return n;n=n.parentNode}return null}(s,r);null!==e&&(v=e.href,x=e.target)}}})),null===v||\"\"===v)return;const g=p.getEditorState().read(a);if(c(g)&&!g.isCollapsed())return void t.preventDefault();const L=\"auxclick\"===t.type&&1===t.button;window.open(v,f||L||t.metaKey||t.ctrlKey||\"_blank\"===x?\"_blank\":\"_self\"),t.preventDefault()},s=e=>{1===e.button&&t(e)};return p.registerRootListener(((e,n)=>{null!==n&&(n.removeEventListener(\"click\",t),n.removeEventListener(\"mouseup\",s)),null!==e&&(e.addEventListener(\"click\",t),e.addEventListener(\"mouseup\",s))}))}),[p,f,m]),null}export{f as ClickableLinkPlugin};\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 */\n\nimport*as r from\"react\";import{jsx as e}from\"react/jsx-runtime\";function t(r,e){return t=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,e){return r.__proto__=e,r},t(r,e)}var o={error:null},n=function(e){var n,a;function s(){for(var r,t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return(r=e.call.apply(e,[this].concat(n))||this).state=o,r.resetErrorBoundary=function(){for(var e,t=arguments.length,o=new Array(t),n=0;n<t;n++)o[n]=arguments[n];null==r.props.onReset||(e=r.props).onReset.apply(e,o),r.reset()},r}a=e,(n=s).prototype=Object.create(a.prototype),n.prototype.constructor=n,t(n,a),s.getDerivedStateFromError=function(r){return{error:r}};var i=s.prototype;return i.reset=function(){this.setState(o)},i.componentDidCatch=function(r,e){var t,o;null==(t=(o=this.props).onError)||t.call(o,r,e)},i.componentDidUpdate=function(r,e){var t,o,n,a,s=this.state.error,i=this.props.resetKeys;null!==s&&null!==e.error&&(void 0===(n=r.resetKeys)&&(n=[]),void 0===(a=i)&&(a=[]),n.length!==a.length||n.some((function(r,e){return!Object.is(r,a[e])})))&&(null==(t=(o=this.props).onResetKeysChange)||t.call(o,r.resetKeys,i),this.reset())},i.render=function(){var e=this.state.error,t=this.props,o=t.fallbackRender,n=t.FallbackComponent,a=t.fallback;if(null!==e){var s={error:e,resetErrorBoundary:this.resetErrorBoundary};if(r.isValidElement(a))return a;if(\"function\"==typeof o)return o(s);if(n)return r.createElement(n,s);throw new Error(\"react-error-boundary requires either a fallback, fallbackRender, or FallbackComponent prop\")}return this.props.children},s}(r.Component);function a({children:r,onError:t}){return e(n,{fallback:e(\"div\",{style:{border:\"1px solid #f00\",color:\"#f00\",padding:\"8px\"},children:\"An error was thrown.\"}),onError:t,children:r})}export{a as LexicalErrorBoundary};\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 */\n\nimport{useLexicalComposerContext as o}from\"@lexical/react/LexicalComposerContext\";import{registerLexicalTextEntity as t}from\"@lexical/text\";import{mergeRegister as r}from\"@lexical/utils\";import{useEffect as e}from\"react\";function i(i,m,c){const[l]=o();e((()=>r(...t(l,i,m,c))),[c,l,i,m])}export{i as useLexicalTextEntity};\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 */\n\nimport{HashtagNode as t,$createHashtagNode as e}from\"@lexical/hashtag\";import{useLexicalComposerContext as r}from\"@lexical/react/LexicalComposerContext\";import{useLexicalTextEntity as n}from\"@lexical/react/useLexicalTextEntity\";import{useEffect as o,useCallback as a}from\"react\";const i=new RegExp(function(){const{alpha:t,alphanumeric:e,hashChars:r}=function(){const t=String.fromCharCode,e=\"A-Za-zªµºÀ-ÖØ-öø-Ɂɐ-ˁˆ-ˑˠ-ˤˮͺΆΈ-ΊΌΎ-ΡΣ-ώϐ-ϵϷ-ҁҊ-ӎӐ-ӹԀ-ԏԱ-Ֆՙա-ևא-תװ-ײء-غـ-يٮ-ٯٱ-ۓەۥ-ۦۮ-ۯۺ-ۼۿܐܒ-ܯݍ-ݭހ-ޥޱऄ-हऽॐक़-ॡॽঅ-ঌএ-ঐও-নপ-রলশ-হঽৎড়-ঢ়য়-ৡৰ-ৱਅ-ਊਏ-ਐਓ-ਨਪ-ਰਲ-ਲ਼ਵ-ਸ਼ਸ-ਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલ-ળવ-હઽૐૠ-ૡଅ-ଌଏ-ଐଓ-ନପ-ରଲ-ଳଵ-ହଽଡ଼-ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கங-சஜஞ-டண-தந-பம-ஹఅ-ఌఎ-ఐఒ-నప-ళవ-హౠ-ౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠ-ೡഅ-ഌഎ-ഐഒ-നപ-ഹൠ-ൡඅ-ඖක-නඳ-රලව-ෆก-ะา-ำเ-ๆກ-ຂຄງ-ຈຊຍດ-ທນ-ຟມ-ຣລວສ-ຫອ-ະາ-ຳຽເ-ໄໆໜ-ໝༀཀ-ཇཉ-ཪྈ-ྋက-အဣ-ဧဩ-ဪၐ-ၕႠ-Ⴥა-ჺჼᄀ-ᅙᅟ-ᆢᆨ-ᇹሀ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙶᚁ-ᚚᚠ-ᛪᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦩᧁ-ᧇᨀ-ᨖᴀ-ᶿḀ-ẛẠ-ỹἀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₔℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℱℳ-ℹℼ-ℿⅅ-ⅉⰀ-Ⱞⰰ-ⱞⲀ-ⳤⴀ-ⴥⴰ-ⵥⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〆〱-〵〻-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄬㄱ-ㆎㆠ-ㆷㇰ-ㇿ㐀-䶵一-龻ꀀ-ꒌꠀ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢ가-힣豈-鶴侮-頻並-龎ﬀ-ﬆﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼＡ-Ｚａ-ｚｦ-ﾾￂ-ￇￊ-ￏￒ-ￗￚ-ￜÀ-ÖØ-öø-ÿĀ-ɏɓ-ɔɖ-ɗəɛɣɨɯɲʉʋʻ̀-ͯḀ-ỿЀ-ӿԀ-ԧⷠ-ⷿꙀ-֑ꚟ-ֿׁ-ׂׄ-ׇׅא-תװ-״﬒-ﬨשׁ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﭏؐ-ؚؠ-ٟٮ-ۓە-ۜ۞-۪ۨ-ۯۺ-ۼۿݐ-ݿࢠࢢ-ࢬࣤ-ࣾﭐ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼ‌-‌ก-ฺเ-๎ᄀ-ᇿ㄰-ㆅꥠ-꥿가-힯ힰ-퟿ﾡ-ￜァ-ヺー-ヾｦ-ﾟ０-９Ａ-Ｚａ-ｚぁ-ゖ゙-ゞ㐀-䶿一-鿿\"+t(173824)+\"-\"+t(177983)+t(177984)+\"-\"+t(178207)+t(194560)+\"-\"+t(195103)+\"〃々〻\";return{alpha:e,alphanumeric:e+\"̀-ͯ҃-֑҆-ֹֻ-ֽֿׁ-ׂׄ-ׇׅؐ-ًؕ-ٰٞۖ-ۜ۟-ۤۧ-۪ۨ-ܑۭܰ-݊ަ-ްँ-ः़ा-्॑-॔ॢ-ॣঁ-ঃ়া-ৄে-ৈো-্ৗৢ-ৣਁ-ਃ਼ਾ-ੂੇ-ੈੋ-੍ੰ-ੱઁ-ઃ઼ા-ૅે-ૉો-્ૢ-ૣଁ-ଃ଼ା-ୃେ-ୈୋ-୍ୖ-ୗஂா-ூெ-ைொ-்ௗఁ-ఃా-ౄె-ైొ-్ౕ-ౖಂ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕ-ೖം-ഃാ-ൃെ-ൈൊ-്ൗං-ඃ්ා-ුූෘ-ෟෲ-ෳัิ-ฺ็-๎ັິ-ູົ-ຼ່-ໍ༘-༹༙༵༷༾-༿ཱ-྄྆-྇ྐ-ྗྙ-ྼ࿆ာ-ဲံ-္ၖ-ၙ፟ᜒ-᜔ᜲ-᜴ᝒ-ᝓᝲ-ᝳា-៓៝᠋-᠍ᢩᤠ-ᤫᤰ-᤻ᦰ-ᧀᧈ-ᧉᨗ-ᨛ᷀-᷃⃐-⃥⃜⃡-⃫〪-゙〯-゚ꠂ꠆ꠋꠣ-ꠧﬞ︀-️︠-︣0-9٠-٩۰-۹०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯๐-๙໐-໙༠-༩၀-၉០-៩᠐-᠙᥆-᥏᧐-᧙０-９_\",hashChars:\"#\\\\uFF03\"}}(),n=\"[\"+e+\"]\";return\"(\"+(\"^|$|[^&/\"+e+\"]\")+\")(\"+(\"[\"+r+\"]\")+\")(\"+n+\"*\"+(\"[\"+t+\"]\")+n+\"*)\"}(),\"i\");function c(){const[c]=r();o((()=>{if(!c.hasNodes([t]))throw new Error(\"HashtagPlugin: HashtagNode not registered on editor\")}),[c]);const l=a((t=>e(t.getTextContent())),[]),s=a((t=>{const e=i.exec(t);if(null===e)return null;const r=e[3].length+1,n=e.index+e[1].length;return{end:n+r,start:n}}),[]);return n(s,t,l),null}export{c as HashtagPlugin};\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 */\n\nimport{mergeRegister as t}from\"@lexical/utils\";import{UNDO_COMMAND as e,COMMAND_PRIORITY_EDITOR as n,REDO_COMMAND as r,CLEAR_EDITOR_COMMAND as o,CLEAR_HISTORY_COMMAND as i,CAN_REDO_COMMAND as s,CAN_UNDO_COMMAND as c,$isRangeSelection as a,$isTextNode as u,$isRootNode as d}from\"lexical\";const l=0,f=1,p=2,h=0,m=1,g=2,_=3,S=4;function y(t,e,n,r,o){if(null===t||0===n.size&&0===r.size&&!o)return h;const i=e._selection,s=t._selection;if(o)return m;if(!(a(i)&&a(s)&&s.isCollapsed()&&i.isCollapsed()))return h;const c=function(t,e,n){const r=t._nodeMap,o=[];for(const t of e){const e=r.get(t);void 0!==e&&o.push(e)}for(const[t,e]of n){if(!e)continue;const n=r.get(t);void 0===n||d(n)||o.push(n)}return o}(e,n,r);if(0===c.length)return h;if(c.length>1){const n=e._nodeMap,r=n.get(i.anchor.key),o=n.get(s.anchor.key);return r&&o&&!t._nodeMap.has(r.__key)&&u(r)&&1===r.__text.length&&1===i.anchor.offset?g:h}const l=c[0],f=t._nodeMap.get(l.__key);if(!u(f)||!u(l)||f.__mode!==l.__mode)return h;const p=f.__text,y=l.__text;if(p===y)return h;const k=i.anchor,C=s.anchor;if(k.key!==C.key||\"text\"!==k.type)return h;const x=k.offset,M=C.offset,z=y.length-p.length;return 1===z&&M===x-1?g:-1===z&&M===x+1?_:-1===z&&M===x?S:h}function k(t,e){let n=Date.now(),r=h;return(o,i,s,c,d,m)=>{const g=Date.now();if(m.has(\"historic\"))return r=h,n=g,p;const _=y(o,i,c,d,t.isComposing()),S=(()=>{const S=null===s||s.editor===t,y=m.has(\"history-push\");if(!y&&S&&m.has(\"history-merge\"))return l;if(null===o)return f;const k=i._selection;if(!(c.size>0||d.size>0))return null!==k?l:p;if(!1===y&&_!==h&&_===r&&g<n+e&&S)return l;if(1===c.size){if(function(t,e,n){const r=e._nodeMap.get(t),o=n._nodeMap.get(t),i=e._selection,s=n._selection;return!(a(i)&&a(s)&&\"element\"===i.anchor.type&&\"element\"===i.focus.type&&\"text\"===s.anchor.type&&\"text\"===s.focus.type||!u(r)||!u(o)||r.__parent!==o.__parent)&&JSON.stringify(e.read((()=>r.exportJSON())))===JSON.stringify(n.read((()=>o.exportJSON())))}(Array.from(c)[0],o,i))return l}return f})();return n=g,r=_,S}}function C(t){t.undoStack=[],t.redoStack=[],t.current=null}function x(a,u,d){const l=k(a,d),h=t(a.registerCommand(e,(()=>(function(t,e){const n=e.redoStack,r=e.undoStack;if(0!==r.length){const o=e.current,i=r.pop();null!==o&&(n.push(o),t.dispatchCommand(s,!0)),0===r.length&&t.dispatchCommand(c,!1),e.current=i||null,i&&i.editor.setEditorState(i.editorState,{tag:\"historic\"})}}(a,u),!0)),n),a.registerCommand(r,(()=>(function(t,e){const n=e.redoStack,r=e.undoStack;if(0!==n.length){const o=e.current;null!==o&&(r.push(o),t.dispatchCommand(c,!0));const i=n.pop();0===n.length&&t.dispatchCommand(s,!1),e.current=i||null,i&&i.editor.setEditorState(i.editorState,{tag:\"historic\"})}}(a,u),!0)),n),a.registerCommand(o,(()=>(C(u),!1)),n),a.registerCommand(i,(()=>(C(u),a.dispatchCommand(s,!1),a.dispatchCommand(c,!1),!0)),n),a.registerUpdateListener((({editorState:t,prevEditorState:e,dirtyLeaves:n,dirtyElements:r,tags:o})=>{const i=u.current,d=u.redoStack,h=u.undoStack,m=null===i?null:i.editorState;if(null!==i&&t===m)return;const g=l(e,t,i,n,r,o);if(g===f)0!==d.length&&(u.redoStack=[],a.dispatchCommand(s,!1)),null!==i&&(h.push({...i}),a.dispatchCommand(c,!0));else if(g===p)return;u.current={editor:a,editorState:t}})));return h}function M(){return{current:null,redoStack:[],undoStack:[]}}export{M as createEmptyHistoryState,x as registerHistory};\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 */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{createEmptyHistoryState as o,registerHistory as r}from\"@lexical/history\";export{createEmptyHistoryState}from\"@lexical/history\";import{useMemo as e,useEffect as i}from\"react\";function a({delay:a,externalHistoryState:c}){const[l]=t();return function(t,a,c=1e3){const l=e((()=>a||o()),[a]);i((()=>r(t,l,c)),[c,t,l])}(l,c,a),null}export{a as HistoryPlugin};\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 */\n\nimport{useLexicalComposerContext as o}from\"@lexical/react/LexicalComposerContext\";import{INSERT_HORIZONTAL_RULE_COMMAND as r,$createHorizontalRuleNode as t}from\"@lexical/react/LexicalHorizontalRuleNode\";import{$insertNodeToNearestRoot as e}from\"@lexical/utils\";import{$getSelection as i,$isRangeSelection as l,COMMAND_PRIORITY_EDITOR as c}from\"lexical\";import{useEffect as m}from\"react\";function n(){const[n]=o();return m((()=>n.registerCommand(r,(o=>{const r=i();if(!l(r))return!1;if(null!==r.focus.getNode()){const o=t();e(o)}return!0}),c)),[n]),null}export{n as HorizontalRulePlugin};\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 */\n\nimport{registerList as t,ListNode as r,ListItemNode as o,registerListStrictIndentTransform as e}from\"@lexical/list\";import{useLexicalComposerContext as i}from\"@lexical/react/LexicalComposerContext\";import{useEffect as n}from\"react\";function s({hasStrictIndent:s=!1}){const[c]=i();return n((()=>{if(!c.hasNodes([r,o]))throw new Error(\"ListPlugin: ListNode and/or ListItemNode not registered on editor\")}),[c]),n((()=>{if(s)return e(c)}),[c,s]),function(r){n((()=>t(r)),[r])}(c),null}export{s as ListPlugin};\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 */\n\nimport{TRANSFORMERS as e,registerMarkdownShortcuts as r}from\"@lexical/markdown\";import{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{HorizontalRuleNode as o,$isHorizontalRuleNode as l,$createHorizontalRuleNode as n}from\"@lexical/react/LexicalHorizontalRuleNode\";import{useEffect as c}from\"react\";const i=[{dependencies:[o],export:e=>l(e)?\"***\":null,regExp:/^(---|\\*\\*\\*|___)\\s?$/,replace:(e,r,t,o)=>{const l=n();o||null!=e.getNextSibling()?e.replace(l):e.insertBefore(l),l.selectNext()},type:\"element\"},...e];function a({transformers:e=i}){const[o]=t();return c((()=>r(o,e)),[o,e]),null}export{i as DEFAULT_TRANSFORMERS,a as MarkdownShortcutPlugin};\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 */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as n,useEffect as t,useMemo as i,useState as r,useRef as o}from\"react\";const c=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?n:t;function u(e){return{initialValueFn:()=>e.isEditable(),subscribe:n=>e.registerEditableListener(n)}}function a(){return function(n){const[t]=e(),u=i((()=>n(t)),[t,n]),[a,l]=r((()=>u.initialValueFn())),d=o(a);return c((()=>{const{initialValueFn:e,subscribe:n}=u,t=e();return d.current!==t&&(d.current=t,l(t)),n((e=>{d.current=e,l(e)}))}),[u,n]),a}(u)}export{a as useLexicalEditable};\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 */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{useLexicalEditable as e}from\"@lexical/react/useLexicalEditable\";import{$canShowPlaceholderCurry as r}from\"@lexical/text\";import{mergeRegister as o}from\"@lexical/utils\";import{useLayoutEffect as n,useEffect as i,useState as c,useMemo as l,Suspense as a}from\"react\";import{flushSync as u,createPortal as m}from\"react-dom\";import{jsx as s,jsxs as d,Fragment as f}from\"react/jsx-runtime\";import{registerDragonSupport as p}from\"@lexical/dragon\";import{registerRichText as x}from\"@lexical/rich-text\";const g=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?n:i;function E(t){return t.getEditorState().read(r(t.isComposing()))}function h({contentEditable:e,placeholder:r=null,ErrorBoundary:n}){const[E]=t(),h=function(t,e){const[r,o]=c((()=>t.getDecorators()));return g((()=>t.registerDecoratorListener((t=>{u((()=>{o(t)}))}))),[t]),i((()=>{o(t.getDecorators())}),[t]),l((()=>{const o=[],n=Object.keys(r);for(let i=0;i<n.length;i++){const c=n[i],l=s(e,{onError:e=>t._onError(e),children:s(a,{fallback:null,children:r[c]})}),u=t.getElementByKey(c);null!==u&&o.push(m(l,u,c))}return o}),[e,r,t])}(E,n);return function(t){g((()=>o(x(t),p(t))),[t])}(E),d(f,{children:[e,s(w,{content:r}),h]})}function w({content:r}){const[n]=t(),i=function(t){const[e,r]=c((()=>E(t)));return g((()=>{function e(){const e=E(t);r(e)}return e(),o(t.registerUpdateListener((()=>{e()})),t.registerEditableListener((()=>{e()})))}),[t]),e}(n),l=e();return i?\"function\"==typeof r?r(l):r:null}export{h as RichTextPlugin};\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 */\n\nimport{$getSelection as e,$isRangeSelection as t,$isTextNode as n}from\"lexical\";function o(o){const i=window.location.origin,a=a=>{if(a.origin!==i)return;const r=o.getRootElement();if(document.activeElement!==r)return;const s=a.data;if(\"string\"==typeof s){let i;try{i=JSON.parse(s)}catch(e){return}if(i&&\"nuanria_messaging\"===i.protocol&&\"request\"===i.type){const r=i.payload;if(r&&\"makeChanges\"===r.functionId){const i=r.args;if(i){const[r,s,c,g,d,f]=i;o.update((()=>{const o=e();if(t(o)){const e=o.anchor;let t=e.getNode(),i=0,f=0;if(n(t)&&r>=0&&s>=0&&(i=r,f=r+s,o.setTextNodeRange(t,i,t,f)),i===f&&\"\"===c||(o.insertRawText(c),t=e.getNode()),n(t)){i=g,f=g+d;const e=t.getTextContentSize();i=i>e?e:i,f=f>e?e:f,o.setTextNodeRange(t,i,t,f)}a.stopImmediatePropagation()}}))}}}}};return window.addEventListener(\"message\",a,!0),()=>{window.removeEventListener(\"message\",a,!0)}}export{o as registerDragonSupport};\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 */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{mergeRegister as e,$getNearestBlockElementAncestorOrThrow as n,$filter as r}from\"@lexical/utils\";import{KEY_TAB_COMMAND as o,$getSelection as c,$isRangeSelection as i,OUTDENT_CONTENT_COMMAND as s,INDENT_CONTENT_COMMAND as a,INSERT_TAB_COMMAND as m,COMMAND_PRIORITY_EDITOR as u,COMMAND_PRIORITY_CRITICAL as l,$isBlockElementNode as f,$createRangeSelection as d,$normalizeSelection__EXPERIMENTAL as p}from\"lexical\";import{useEffect as g}from\"react\";function x(t,g){return e(t.registerCommand(o,(e=>{const o=c();if(!i(o))return!1;e.preventDefault();const u=function(t){const e=t.getNodes();if(r(e,(t=>f(t)&&t.canIndent()?t:null)).length>0)return!0;const o=t.anchor,c=t.focus,i=c.isBefore(o)?c:o,s=i.getNode(),a=n(s);if(a.canIndent()){const t=a.getKey();let e=d();if(e.anchor.set(t,0,\"element\"),e.focus.set(t,0,\"element\"),e=p(e),e.anchor.is(i))return!0}return!1}(o)?e.shiftKey?s:a:m;return t.dispatchCommand(u,void 0)}),u),t.registerCommand(a,(()=>{if(null==g)return!1;const t=c();if(!i(t))return!1;const e=t.getNodes().map((t=>n(t).getIndent()));return Math.max(...e)+1>=g}),l))}function h({maxIndent:e}){const[n]=t();return g((()=>x(n,e)),[n,e]),null}export{h as TabIndentationPlugin,x as registerTabIndentation};\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 */\n\nimport{useLexicalComposerContext as r}from\"@lexical/react/LexicalComposerContext\";import{setScrollableTablesActive as o,registerTablePlugin as l,registerTableSelectionObserver as e,registerTableCellUnmergeTransform as t,TableCellNode as a}from\"@lexical/table\";import{useEffect as n}from\"react\";function c({hasCellMerge:c=!0,hasCellBackgroundColor:i=!0,hasTabHandler:u=!0,hasHorizontalScroll:s=!1}){const[m]=r();return n((()=>{o(m,s)}),[m,s]),n((()=>l(m)),[m]),n((()=>e(m,u)),[m,u]),n((()=>{if(!c)return t(m)}),[m,c]),n((()=>{if(!i)return m.registerNodeTransform(a,(r=>{null!==r.getBackgroundColor()&&r.setBackgroundColor(null)}))}),[m,i,c]),null}export{c as TablePlugin};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Separator = React.forwardRef<\n  React.ElementRef<typeof SeparatorPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n  (\n    { className, orientation = \"horizontal\", decorative = true, ...props },\n    ref\n  ) => (\n    <SeparatorPrimitive.Root\n      ref={ref}\n      decorative={decorative}\n      orientation={orientation}\n      className={cn(\n        \"shrink-0 bg-black\",\n        orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n        className\n      )}\n      {...props}\n    />\n  )\n);\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import { createContext, useContext, JSX } from 'react'\n\nimport { LexicalEditor } from 'lexical'\n\nconst Context = createContext<{\n  activeEditor: LexicalEditor\n  $updateToolbar: () => void\n  blockType: string\n  setBlockType: (blockType: string) => void\n  showModal: (title: string, showModal: (onClose: () => void) => JSX.Element) => 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: (title: string, showModal: (onClose: () => void) => JSX.Element) => void\n  children: React.ReactNode\n}) {\n  return (\n    <Context.Provider\n      value={{ activeEditor, $updateToolbar, blockType, setBlockType, showModal }}\n    >\n      {children}\n    </Context.Provider>\n  )\n}\n\nexport function useToolbarContext() {\n  return useContext(Context)\n}\n","import { useEffect } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport {\n  $getSelection,\n  BaseSelection,\n  COMMAND_PRIORITY_CRITICAL,\n} from 'lexical'\nimport { SELECTION_CHANGE_COMMAND } from 'lexical'\n\nimport { useToolbarContext } from '@/components/editor/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  }, [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} from 'lucide-react'\n\nexport const blockTypeToBlockName: Record<\n  string,\n  { label: string; icon: React.ReactNode }\n> = {\n  paragraph: {\n    label: 'Paragraph',\n    icon: <TextIcon className=\"size-4\" />,\n  },\n  h1: {\n    label: 'Heading 1',\n    icon: <Heading1Icon className=\"size-4\" />,\n  },\n  h2: {\n    label: 'Heading 2',\n    icon: <Heading2Icon className=\"size-4\" />,\n  },\n  h3: {\n    label: 'Heading 3',\n    icon: <Heading3Icon className=\"size-4\" />,\n  },\n  number: {\n    label: 'Numbered List',\n    icon: <ListOrderedIcon className=\"size-4\" />,\n  },\n  bullet: {\n    label: 'Bulleted List',\n    icon: <ListIcon className=\"size-4\" />,\n  },\n  check: {\n    label: 'Check List',\n    icon: <ListTodoIcon className=\"size-4\" />,\n  },\n  code: {\n    label: 'Code Block',\n    icon: <CodeIcon className=\"size-4\" />,\n  },\n  quote: {\n    label: 'Quote',\n    icon: <QuoteIcon className=\"size-4\" />,\n  },\n}\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n    return twMerge(clsx(inputs));\n}\n","import React, { ButtonHTMLAttributes, forwardRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cn } from \"../utils/cn\";\nimport { ButtonVariant, Themes } from \"../utils/types\";\n\ninterface Props\n  extends ButtonHTMLAttributes<HTMLButtonElement>,\n  VariantProps<typeof buttonVariants> {\n  is_loading?: boolean;\n  disabled?: boolean;\n  asChild?: boolean;\n  variant?: ButtonVariant;\n  as?: React.ElementType;\n  theme?: Themes\n  containerClassName?: string\n}\nexport const Button = forwardRef<HTMLButtonElement, Props>(\n  (\n    {\n      is_loading = false,\n      variant,\n      size,\n      asChild,\n      as: Tag = \"button\",\n      buttonType,\n      className,\n      disabled,\n      theme,\n      children,\n      containerClassName,\n      ...props\n    },\n    ref\n  ) => {\n    const Component = asChild ? Slot : Tag;\n\n    return (\n      <Component\n        {...props}\n        data-theme={theme}\n        disabled={disabled || is_loading}\n        ref={ref}\n        className={cn(\n          buttonVariants({\n            variant,\n            size,\n            is_loading,\n            buttonType,\n            disabled,\n          }),\n          className\n        )}\n      >\n        {asChild ? (\n          React.cloneElement(\n            children as React.ReactElement,\n            {},\n            <div className={cn(\"px-[3px] flex items-center justify-center gap-[3px] has-[>i]:p-0\", containerClassName)}>\n              {(children as React.ReactElement<any>).props.children}\n              {is_loading && <LoadingIcon size={size} />}\n            </div>\n          )\n        ) : (\n          <div className={cn(\"px-[3px] flex items-center justify-center gap-[3px] has-[>i]:p-0\", containerClassName)}>\n            {children}\n            {is_loading && <LoadingIcon size={size} />}\n          </div>\n        )}\n      </Component>\n    );\n  }\n);\n\nButton.displayName = \"Button\"\n\n\n\nexport function LoadingIcon({ size, className }: {\n  size?: \"S\" | \"M\" | \"L\" | \"XL\" | null;\n  className?: string;\n}) {\n  const iconVariants = cva(\"animate-spin \", {\n    variants: {\n      size: {\n        S: \"w-[12px] h-[12px]\",\n        M: \"w-[18px] h-[18px]\",\n        L: \"w-[20px] h-[20px]\",\n        XL: \"w-[20px] h-[20px]\"\n      },\n    },\n    defaultVariants: {\n      size: \"M\",\n    },\n  });\n\n  return (\n    <svg\n      className={cn(iconVariants({ size, className }))}\n      viewBox=\"0 0 12 12\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6ZM2.25 6C2.25 8.07107 3.92893 9.75 6 9.75C8.07107 9.75 9.75 8.07107 9.75 6C9.75 3.92893 8.07107 2.25 6 2.25C3.92893 2.25 2.25 3.92893 2.25 6Z\"\n        fill=\"currentColor\"\n      />\n      <path\n        d=\"M11 6C11 5.34339 10.8707 4.69321 10.6194 4.08658C10.3681 3.47995 9.99983 2.92876 9.53553 2.46447C9.07124 2.00017 8.52004 1.63188 7.91342 1.3806C7.30679 1.12933 6.65661 1 6 1V2.25C6.49246 2.25 6.98009 2.347 7.43506 2.53545C7.89003 2.72391 8.30343 3.00013 8.65165 3.34835C8.99987 3.69657 9.27609 4.10997 9.46455 4.56494C9.653 5.01991 9.75 5.50754 9.75 6H11Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  );\n}\n\n\n\n\nconst buttonVariants = cva(\n  \"flex items-center whitespace-nowrap justify-center  transition-[background,color] duration-200 ease-in-out border border-transparent outline-none leading-none [&-i]:!leading-none\",\n  {\n    variants: {\n      variant: {\n        // fucus styles for medium screens and above\n        PrimeStyle: [\n          \"bg-background-presentation-action-secondary\",\n          \"text-content-presentation-action-light-primary\",\n          \"hover:bg-background-presentation-action-hover\",\n          \"hover:text-content-presentation-action-hover\",\n          \"focus:lg:focus:md:border lg:focus:md:border-border-presentation-state-focus\", // Focus style only for medium screens and above\n          \"active:bg-background-presentation-action-hover active:text-content-presentation-action-hover\",\n        ],\n        BlueSecStyle: [\n          \"bg-background-presentation-action-secondary\",\n          \"text-content-presentation-action-light-primary\",\n          \"hover:bg-background-presentation-state-information-primary\",\n          \"hover:text-content-presentation-action-hover\",\n          \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n          \"active:bg-background-presentation-state-information-primary active:text-content-presentation-action-hover\",\n        ],\n        YelSecStyle: [\n          \"bg-background-presentation-action-secondary\",\n          \"text-content-presentation-action-light-primary\",\n          \"hover:bg-background-presentation-state-warning-primary\",\n          \"hover:text-content-presentation-action-light-primary\",\n          \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n          \"active:bg-background-presentation-state-warning-primary active:text-content-presentation-action-light-primary\",\n        ],\n        RedSecStyle: [\n          \"bg-background-presentation-action-secondary\",\n          \"text-content-presentation-action-light-primary\",\n          \"hover:bg-background-presentation-state-negative-primary\",\n          \"hover:text-content-presentation-action-hover\",\n          \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n          \"active:bg-background-presentation-state-negative-primary active:text-content-presentation-action-hover\",\n        ],\n        BorderStyle: [\n          \"text-content-presentation-action-light-primary\",\n          \"border border-border-presentation-action-disabled\",\n          \"bg-background-presentation-action-borderstyle\",\n          \"hover:bg-background-presentation-action-hover\",\n          \"hover:text-content-presentation-action-hover\",\n          \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n          \"focus:lg:text-content-presentation-action-light-primary\",\n          \"focus:hover:lg:text-content-presentation-action-hover\",\n          \"active:bg-background-presentation-action-hover active:text-content-presentation-action-hover\",\n        ],\n        PrimeContStyle: [\n          \"text-content-presentation-action-light-primary\",\n          \"border-transparent bg-transparent\",\n          \"hover:bg-background-presentation-action-contstyle-hover\",\n          \"hover:text-content-presentation-action-light-primary\",\n          \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n          \"focus:lg:bg-background-presentation-action-borderstyle\",\n          \"active:bg-background-presentation-action-contstyle-hover active:text-content-presentation-action-light-primary\",\n        ],\n        BlueContStyle: [\n          \"text-content-presentation-action-light-primary\",\n          \"border-transparent bg-transparent\",\n          \"hover:bg-background-presentation-action-contstyle-hover\",\n          \"hover:text-content-presentation-action-information-hover\",\n          \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n          \"focus:lg:bg-background-presentation-action-borderstyle\",\n          \"active:bg-background-presentation-action-contstyle-hover active:text-content-presentation-action-information-hover\",\n        ],\n        RedContStyle: [\n          \"text-content-presentation-action-light-primary\",\n          \"border-transparent bg-transparent\",\n          \"hover:bg-background-presentation-action-contstyle-hover\",\n          \"hover:text-content-presentation-action-negative-hover\",\n          \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n          \"focus:lg:bg-background-presentation-action-borderstyle\",\n          \"active:bg-background-presentation-action-contstyle-hover active:text-content-presentation-action-negative-hover\",\n        ],\n      },\n      size: {\n        S: \"h-[22px] px-[6px] typography-body-small-medium rounded-[4px] [&_i]:text-[12px]\",\n        M: \"h-[28px] px-[14px] typography-body-large-medium rounded-[4px] [&_i]:text-[18px]\",\n        L: \"h-[34px] px-[22px] typography-body-large-medium rounded-[6px] [&_i]:text-[20px]\",\n        XL: \"h-[40px] px-[30px] typography-headers-medium-medium rounded-[6px] [&_i]:text-[22px]\",\n      },\n      is_loading: {\n        true: \"[&_i]:hidden\",\n      },\n      disabled: {\n        true: \"cursor-not-allowed\",\n      },\n      buttonType: {\n        button: \"\",\n        icon: \"\",\n      },\n    },\n    defaultVariants: {\n      size: \"M\",\n      variant: \"PrimeStyle\",\n      buttonType: \"button\",\n    },\n    compoundVariants: [\n      {\n        is_loading: true,\n        className: [\n          \"cursor-wait\",\n          \"bg-background-presentation-action-hover\",\n          \"text-content-presentation-action-hover\",\n          \"hover:bg-background-presentation-action-hover\",\n          \"hover:text-content-presentation-action-hover\",\n          \"focus:lg:border focus:lg:border-transparent\",\n          \"active:bg-background-presentation-action-hover active:text-content-presentation-action-hover\",\n        ],\n      },\n      {\n        disabled: true,\n        className: [\n          \"cursor-not-allowed\",\n          \"pointer-events-none\",\n          \"bg-background-presentation-action-disabled\",\n          \"text-content-presentation-state-disabled\",\n          \"border-transparent\",\n        ],\n      },\n      {\n        buttonType: \"icon\",\n        size: \"S\",\n        className: \"w-[22px] h-[22px] p-0 leading-[0]\",\n      },\n      {\n        buttonType: \"icon\",\n        size: \"M\",\n        className: \"w-[28px] h-[28px] p-0 leading-[0]\",\n      },\n      {\n        buttonType: \"icon\",\n        size: \"L\",\n        className: \"w-[34px] h-[34px] p-0 leading-[0]\",\n      },\n      {\n        buttonType: \"icon\",\n        size: \"XL\",\n        className: \"w-[40px] h-[40px] p-0 leading-[0]\",\n      },\n    ],\n  }\n);\n","import { cva, VariantProps } from \"class-variance-authority\";\nimport { ReactNode } from \"react\";\nimport { cn } from \"../utils/cn\";\nimport { Themes } from \"../utils/types\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\nimport React from \"react\";\n\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst ToolTipRoot = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n  React.ElementRef<typeof TooltipPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n  <TooltipPrimitive.Portal>\n    <TooltipPrimitive.Content\n      ref={ref}\n      sideOffset={sideOffset}\n      className={cn(\n        \"z-50 overflow-hidden rounded-md bg-background-system-body-tertiary px-3 py-1.5 text-xs text-content-system-global-primary animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]\",\n        className\n      )}\n      {...props}\n    />\n  </TooltipPrimitive.Portal>\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nconst TooltipArrow = TooltipPrimitive.Arrow\nexport type ToolTipSide = \"top\" | \"right\" | \"bottom\" | \"left\";\n\nexport enum ContentAlign {\n  START = \"start\",\n  CENTER = \"center\",\n  END = \"end\",\n}\n\nconst tooltipStyles = cva(\"typography-body-medium-regular rounded-[4px] p-1\", {\n  variants: {\n    variant: {\n      primary: \"bg-background-system-body-tertiary text-content-system-global-primary\",\n              highlight: \"bg-background-presentation-state-information-primary text-content-system-global-primary\"\n    },\n  },\n  defaultVariants: {\n    variant: \"primary\",\n  },\n});\n\ninterface TooltipProps\n  extends React.HTMLAttributes<HTMLSpanElement>,\n  VariantProps<typeof tooltipStyles> {\n  onOpenChange?: (open: boolean) => void;\n  open?: boolean;\n  toolTipSide?: ToolTipSide;\n  contentAlign?: ContentAlign;\n  avoidCollisions?: boolean;\n  tip?: boolean;\n  delay?: number;\n  disabled?: boolean;\n  text: ReactNode;\n  theme?: Themes\n}\n\nconst Tooltip: React.FC<TooltipProps> = ({\n  children,\n  open,\n  text,\n  theme = \"dark\",\n  onOpenChange,\n  toolTipSide,\n  contentAlign = ContentAlign.CENTER,\n  avoidCollisions = true,\n  delay = 400,\n  tip = true,\n  variant,\n  className,\n  ...props\n}) => {\n  return (\n    <TooltipProvider>\n      <ToolTipRoot delayDuration={delay} {...(typeof open !== \"undefined\" && { open })} {...(onOpenChange && { onOpenChange })}>\n        <TooltipTrigger aria-label=\"Open tooltip\" asChild>\n          {children}\n        </TooltipTrigger>\n\n        <TooltipContent\n          data-theme={theme}\n          sideOffset={2}\n          side={toolTipSide}\n          align={contentAlign}\n          avoidCollisions={avoidCollisions}\n          className={cn(tooltipStyles({ variant, className }))}\n          {...props}\n        >\n          {text}\n          {tip && <TooltipArrow className={cn(\"fill-background-system-body-tertiary\", {\n            \"fill-wavy-navy-900\": variant === \"highlight\"\n          })} />}\n        </TooltipContent>\n      </ToolTipRoot>\n    </TooltipProvider>\n  );\n};\n\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, TooltipArrow, ToolTipRoot }\n","\"use client\";\nimport React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { cn } from \"../utils/cn\";\nimport { cva, VariantProps } from \"class-variance-authority\";\nimport { Button } from \"./Button\";\nimport { Tooltip } from \"./Tooltip\";\nimport { Themes } from \"../utils/types\";\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Trigger>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> &\n  VariantProps<typeof PopoverTriggerStyles> & {\n    errors?: string;\n    icon?: string\n    theme?: Themes\n  }\n>(\n  (\n    {\n      className,\n      children,\n      size = \"M\",\n      variant = \"PresentationStyle\",\n      errors,\n      theme,\n      icon,\n      ...props\n    },\n    ref\n  ) => {\n    return (\n      <Tooltip toolTipSide={\"top\"} open={errors !== undefined} text={errors}>\n        <SelectPrimitive.Trigger\n          data-theme={theme}\n          ref={ref}\n          className={cn(\n            PopoverTriggerStyles({\n              size,\n              variant,\n              error: errors !== undefined,\n            }),\n            className\n          )}\n          {...props}\n        >\n          <p className={cn({\n            \"[&_span]:text-content-system-global-secondary\": !props.value\n          })}>{children}</p>\n\n          <Button\n            as={\"span\"}\n            buttonType=\"icon\"\n            className={cn(\n              [\n                \"group-aria-expanded:bg-background-presentation-action-hover\",\n                \"group-aria-expanded:text-content-system-global-primary\",\n              ]\n            )}\n          >\n            <i\n              className={cn(\n                \"ri-arrow-down-s-line transition-all duration-100 ease-in-out group-aria-expanded:rotate-180\",\n                { \"!text-[12px]\": size === \"S\" },\n                { \"!text-[16px]\": size === \"M\" },\n                { \"!text-[18px]\": size === \"L\" },\n                { \"!text-[26px]\": size === \"XL\" },\n                { icon: icon }\n              )}\n            />\n          </Button>\n        </SelectPrimitive.Trigger>\n      </Tooltip>\n    );\n  }\n);\nSelectTrigger.displayName = \"SelectTrigger\";\n\nconst SelectScrollUpButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollUpButton\n    ref={ref}\n    className={cn(\n      \"flex cursor-default items-center justify-center py-1 \",\n      className\n    )}\n    {...props}\n  >\n    <i\n      className=\"h-4 w-4 ri-arrow-up-s-line\"\n      color={\"var(--content-presentation-action-light-primary)\"}\n    />\n  </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = \"SelectScrollUpButton\";\n\nconst SelectScrollDownButton = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.ScrollDownButton\n    ref={ref}\n    className={cn(\n      \"flex cursor-default items-center justify-center py-1\",\n      className\n    )}\n    {...props}\n  >\n    <i\n      color={\"var(--content-presentation-action-light-primary)\"}\n      className=\"h-4 w-4 ri-arrow-down-s-line\"\n    />\n  </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = \"SelectScrollDownButton\";\n\nconst SelectContent = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Content>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> &\n  VariantProps<typeof SelectContentStyles> & {\n    theme?: Themes\n  }\n>(\n  (\n    {\n      className,\n      children,\n      variant = \"PresentationStyle\",\n      position = \"popper\",\n      theme,\n      ...props\n    },\n    ref\n  ) => (\n    <SelectPrimitive.Portal>\n      <SelectPrimitive.Content\n        data-theme={theme}\n        ref={ref}\n        className={cn(SelectContentStyles({ variant }), className)}\n        position={position}\n        {...props}\n      >\n        <SelectPrimitive.Viewport>{children}</SelectPrimitive.Viewport>\n      </SelectPrimitive.Content>\n    </SelectPrimitive.Portal>\n  )\n);\nSelectContent.displayName = \"SelectContent\";\n\nconst SelectLabel = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Label>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Label\n    ref={ref}\n    className={cn(\"px-2 py-1.5 text-sm font-semibold\", className)}\n    {...props}\n  />\n));\nSelectLabel.displayName = \"SelectLabel\";\n\nconst SelectItem = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> &\n  VariantProps<typeof SelectItemStyles>\n>(\n  (\n    { className, children, size = \"M\", variant = \"Default\", active, ...props },\n    ref\n  ) => (\n    <SelectPrimitive.Item\n      ref={ref}\n      className={cn(\n        SelectItemStyles({\n          variant,\n          active,\n          size,\n        }),\n        className\n      )}\n      {...props}\n    >\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n    </SelectPrimitive.Item>\n  )\n);\n\nSelectItem.displayName = \"SelectItem\";\n\nconst SelectSeparator = React.forwardRef<\n  React.ElementRef<typeof SelectPrimitive.Separator>,\n  React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <SelectPrimitive.Separator\n    ref={ref}\n    className={cn(\"-mx-1 my-1 h-px bg-background-system-body-secondary\", className)}\n    {...props}\n  />\n));\nSelectSeparator.displayName = \"SelectSeparator\";\n\nexport {\n  Select,\n  SelectGroup,\n  SelectValue,\n  SelectTrigger,\n  SelectContent,\n  SelectLabel,\n  SelectItem,\n  SelectSeparator,\n  SelectScrollUpButton,\n  SelectScrollDownButton,\n};\n\n\n// NOTE: radix select as DropDownButton\n\nconst SelectContentStyles = cva(\n  [\n    \"p-1\",\n    \"rounded-[8px]\",\n    \"min-w-[240px]\",\n    \"border\",\n    \"outline-none\",\n    \"overflow-scroll\",\n    \"data-[state=open]:animate-in\",\n    \"data-[state=closed]:animate-out\",\n    \"data-[state=closed]:fade-out-0\",\n    \"data-[state=open]:fade-in-0\",\n    \"overflow-x-hidden\",\n    \"scrollbar-hide\",\n    \"z-[1000]\",\n  ],\n  {\n    variants: {\n      variant: {\n        SystemStyle: [\n          \"border-border-system-global-secondary\",\n          \"bg-background-system-body-primary\",\n          \"shadow-xl\",\n        ],\n        PresentationStyle: [\n          \"border-border-presentation-global-primary\",\n          \"bg-background-presentation-form-base\",\n          \"shadow-lg\",\n        ],\n      },\n      defaultVariants: {\n        variant: \"PresentationStyle\",\n      },\n    },\n  }\n);\n\nconst SelectItemStyles = cva(\n  [\n    \"text-content-presentation-action-light-primary\",\n    \"outline-none\",\n    \"border\",\n    \"border-transparent\",\n    \"flex\",\n    \"gap-[8px]\",\n    \"items-center\",\n    \"justify-start\",\n    \"text-overflow\",\n    \"overflow-hidden\",\n    \"px-[12px]\",\n    \"rounded-[4px]\",\n    \"transition-all\",\n    \"ease-in-out\",\n    \"duration-300\",\n\n  ],\n  {\n    variants: {\n      variant: {\n        Default: [\n          \"text-content-presentation-action-light-primary\",\n          \"bg-background-presentation-action-dropdown-primary\",\n          \"hover:bg-background-presentation-action-hover\",\n          \"hover:text-content-presentation-action-hover\",\n          \"focus:bg-background-presentation-action-hover\",\n          \"focus:text-content-presentation-action-hover\",\n          \"disabled:text-content-presentation-state-disabled\",\n          \"disabled:bg-white-00\",\n        ],\n        Warning: [\n          \"text-content-presentation-state-information\",\n          \"hover:bg-background-presentation-state-information-primary\",\n          \"focus:bg-background-presentation-state-information-primary\",\n          \"focus:text-content-presentation-action-hover\",\n          \"hover:text-content-presentation-action-hover\",\n        ],\n        Negative: [\n          \"text-content-presentation-state-negative\",\n          \"hover:bg-background-presentation-state-negative-primary\",\n          \"hover:text-content-presentation-action-hover\",\n          \"focus:bg-background-presentation-state-negative-primary\",\n          \"focus:text-content-presentation-action-hover\",\n          \"active:text-content-presentation-state-negative\",\n        ],\n        SystemStyle: [\n          \"bg-background-system-body-primary\",\n          \"text-content-system-global-primary\",\n          \"hover:bg-background-system-action-secondary-hover\",\n          \"hover:text-content-system-action-primary-hover\",\n          \"hover:border-border-system-action-primary-hover\",\n          \"focus:bg-background-system-action-secondary-hover\",\n          \"focus:text-content-system-action-primary-hover\",\n          \"focus:border-border-system-action-primary-hover\",\n          \"disabled:bg-background-system-body-secondary\",\n          \"disabled:text-content-system-global-disabled\",\n        ],\n      },\n      size: {\n        S: [\"typography-body-small-regular\", \"h-[24px]\"],\n        M: [\"typography-body-medium-regular\", \"h-[32px]\"],\n      },\n\n      disabled: {\n        true: [\n          \"text-content-presentation-state-disabled\",\n          \"bg-white-00\",\n        ],\n      },\n\n      active: {\n        true: [\n          \"bg-background-presentation-action-selected\",\n          \"text-content-presentation-action-light-primary\",\n        ],\n      },\n\n      defaultVariants: {\n        variant: \"Default\",\n        size: \"M\",\n        active: false,\n        disabled: false,\n      },\n    },\n    compoundVariants: [\n      {\n        active: true,\n        variant: \"Warning\",\n        className: [\"text-content-presentation-state-negative\"],\n      },\n    ],\n  }\n);\n\nconst PopoverTriggerStyles = cva(\n  [\n    \"flex flex-row rounded-[4px] justify-between items-center outline-none\",\n    \"rounded-[4px]\",\n    \"[&_span]:text-content-presentation-action-light-primary\",\n    \"typography-body-small-regular\",\n    \"[&_p]:px-[10px] [&_p]:whitespace-nowrap\",\n    \"group\",\n    \"w-fit\",\n    \"border\",\n    \"transition-all duration-200 ease-in-out\",\n    \"hover:shadow-md\",\n    \"focus:shadow-md\",\n  ],\n  {\n    variants: {\n      variant: {\n        PresentationStyle: [\n          \"bg-background-presentation-form-field-primary\",\n          \"hover:bg-background-presentation-form-field-hover\",\n          \"focus:bg-background-presentation-form-field-hover\",\n          \"border-none\",\n        ],\n        SystemStyle: [\n          \"bg-black-alpha-20\",\n          \"text-content-system-global-primary\",\n          \"border-border-system-global-secondary\",\n          \"hover:border-border-presentation-state-focus\",\n          \"hover:bg-purple-alpha-10\",\n          \"focus:border-border-presentation-state-focus\",\n          \"focus:bg-purple-alpha-10\",\n        ],\n      },\n      error: {\n        true: [\n          \"border-border-presentation-state-negative\",\n          \"caret-border-presentation-state-negative\",\n          \"hover:border-border-presentation-state-negative\",\n          \"hover:caret-border-presentation-state-negative\",\n        ],\n      },\n      size: {\n        S: [\n          \"[&_span]:h-[22px] [&_span]:w-[22px] [&_p]:typography-body-small-medium\",\n        ],\n        M: [\n          \"[&_span]:h-[26px] [&_span]:w-[26px] [&_p]:typography-body-medium-medium\",\n        ],\n        L: [\n          \"[&_span]:h-[28px] [&_span]:w-[28px] [&_p]:typography-body-large-medium\",\n        ],\n        XL: [\n          \"h-[40px] p-[4px] rounded-[6px] [&_span]:h-[32px] [&_span]:w-[32px] [&_p]:typography-body-large-regular [&_p]:px-[4px]\",\n        ],\n      },\n    },\n    defaultVariants: {\n      size: \"M\",\n    },\n  }\n);","import { $isListNode, ListNode } from '@lexical/list'\nimport { $isHeadingNode } from '@lexical/rich-text'\nimport { $findMatchingParent, $getNearestNodeOfType } from '@lexical/utils'\nimport { $isRangeSelection, $isRootOrShadowRoot, BaseSelection } from 'lexical'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { useUpdateToolbarHandler } from '@/components/editor/editor-hooks/use-update-toolbar'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\n\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectTrigger,\n} from '../../../../../components/Select'\n\nexport function BlockFormatDropDown({\n  children,\n}: {\n  children: React.ReactNode\n}) {\n  const { activeEditor, blockType, setBlockType } = useToolbarContext()\n\n  function $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        if ($isListNode(element)) {\n          const parentList = $getNearestNodeOfType<ListNode>(\n            anchorNode,\n            ListNode\n          )\n          const type = parentList\n            ? parentList.getListType()\n            : element.getListType()\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  }\n\n  useUpdateToolbarHandler($updateToolbar)\n\n  return (\n    <Select\n    \n      value={blockType}\n      onValueChange={(value) => {\n        setBlockType(value as keyof typeof blockTypeToBlockName)\n      }}\n    >\n      <SelectTrigger className=\"h-8 [&_span]:w-fit [&_span]:text-content-presentation-action-light-primary w-fit justify-start gap-1 [&_p]:flex [&_p]:items-center [&_p]:gap-2 [&_p]:h-full [&_p]:m-0 [&_p]:w-fit\">\n        <div className=\"flex items-center gap-1 font-normal text-content-presentation-action-light-primary\">\n          {blockTypeToBlockName[blockType].icon}\n          {blockTypeToBlockName[blockType].label}\n        </div>\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 '@/components/editor/context/toolbar-context'\nimport { SelectItem } from '../../../../../../components/Select'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\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 !== 'number') {\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      <div className='flex flex-nowrap items-center gap-1'>\n        {blockTypeToBlockName[BLOCK_FORMAT_VALUE].icon}\n        {blockTypeToBlockName[BLOCK_FORMAT_VALUE].label}\n      </div>\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 '@/components/editor/context/toolbar-context'\nimport { SelectItem } from '../../../../../../components/Select'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\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 !== 'number') {\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      <div className='flex flex-nowrap items-center gap-1'>\n        {blockTypeToBlockName[BLOCK_FORMAT_VALUE].icon}\n        {blockTypeToBlockName[BLOCK_FORMAT_VALUE].label}\n      </div>\n    </SelectItem>\n  )\n}\n","import { $createCodeNode } from '@lexical/code'\nimport { $setBlocksType } from '@lexical/selection'\nimport { $getSelection, $isRangeSelection } from 'lexical'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from '../../../../../../components/Select'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\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=\"code\" onPointerDown={formatCode}>\n      <div className='flex flex-nowrap items-center gap-1'>\n        {blockTypeToBlockName[BLOCK_FORMAT_VALUE].icon}\n        {blockTypeToBlockName[BLOCK_FORMAT_VALUE].label}\n      </div>\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 '@/components/editor/context/toolbar-context'\nimport { SelectItem } from '../../../../../../components/Select'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\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 key={level} value={level} onPointerDown={() => formatHeading(level)} >\n      <div className='flex flex-nowrap items-center gap-1'>\n        {blockTypeToBlockName[level].icon}\n        {blockTypeToBlockName[level].label}\n      </div>\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 '@/components/editor/context/toolbar-context'\nimport { SelectItem } from '../../../../../../components/Select'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\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      <div className='flex flex-nowrap items-center gap-1'>\n        {blockTypeToBlockName[BLOCK_FORMAT_VALUE].icon}\n        {blockTypeToBlockName[BLOCK_FORMAT_VALUE].label}\n      </div>\n    </SelectItem>\n  )\n}\n","import { $setBlocksType } from '@lexical/selection'\nimport { $createParagraphNode, $getSelection, $isRangeSelection } from 'lexical'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from '../../../../../../components/Select'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\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      <div className='flex flex-nowrap items-center gap-1'>\n        {blockTypeToBlockName[BLOCK_FORMAT_VALUE].icon}\n        {blockTypeToBlockName[BLOCK_FORMAT_VALUE].label}\n      </div>\n    </SelectItem>\n  )\n}\n","import { $createQuoteNode } from '@lexical/rich-text'\nimport { $setBlocksType } from '@lexical/selection'\nimport { $getSelection } from 'lexical'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from '../../../../../../components/Select'\n\nimport { blockTypeToBlockName } from '@/components/editor/plugins/toolbar/block-format/block-format-data'\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=\"quote\" onPointerDown={formatQuote}>\n      <div className='flex flex-nowrap items-center gap-1'>\n        {blockTypeToBlockName[BLOCK_FORMAT_VALUE].icon}\n        {blockTypeToBlockName[BLOCK_FORMAT_VALUE].label}\n      </div>\n    </SelectItem>\n  )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\n\nimport { cn } from \"../utils/cn\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n    React.ElementRef<typeof DialogPrimitive.Overlay>,\n    React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n    <DialogPrimitive.Overlay\n        ref={ref}\n        className={cn(\n            \"fixed inset-0 z-50 bg-black/80  data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n            className\n        )}\n        {...props}\n    />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n    React.ElementRef<typeof DialogPrimitive.Content>,\n    React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n    <DialogPortal>\n        <DialogOverlay />\n        <DialogPrimitive.Content\n            ref={ref}\n            className={cn(\n                \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border-system-global-secondary bg-background-system-body-primary p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n                className\n            )}\n            {...props}\n        >\n            {children}\n\n        </DialogPrimitive.Content>\n    </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\n\nconst DialogCloseButton = React.forwardRef<\n    React.ElementRef<typeof DialogPrimitive.Close>,\n    React.ComponentPropsWithoutRef<typeof DialogPrimitive.Close>\n>(({ className, children, ...props }, ref) => (\n    <DialogPrimitive.Close ref={ref} {...props} className={cn(\"m-0 p-0 h-fit\", className)}>\n        {children}\n    </DialogPrimitive.Close>\n))\nconst DialogHeader = ({\n    className,\n    ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n    <div\n        className={cn(\n            \"flex flex-col space-y-1.5 text-center sm:text-left\",\n            className\n        )}\n        {...props}\n    />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n    className,\n    ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n    <div\n        className={cn(\n            \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n            className\n        )}\n        {...props}\n    />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n    React.ElementRef<typeof DialogPrimitive.Title>,\n    React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n    <DialogPrimitive.Title\n        ref={ref}\n        className={cn(\n            \"text-lg font-semibold leading-none tracking-tight text-content-system-global-primary\",\n            className\n        )}\n        {...props}\n    />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n    React.ElementRef<typeof DialogPrimitive.Description>,\n    React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n    <DialogPrimitive.Description\n        ref={ref}\n        className={cn(\"text-sm text-content-system-global-secondary\", className)}\n        {...props}\n    />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n    Dialog,\n    DialogPortal,\n    DialogOverlay,\n    DialogTrigger,\n    DialogClose,\n    DialogContent,\n    DialogHeader,\n    DialogFooter,\n    DialogTitle,\n    DialogDescription,\n    DialogCloseButton\n}\n","import { useCallback, useMemo, useState, JSX } from \"react\";\n\nimport {\n  Dialog,\n  DialogContent,\n  DialogHeader,\n  DialogTitle,\n} from \"../../../../components/Dialog\";\n\nexport function useEditorModal(): [\n  JSX.Element | null,\n  (title: string, showModal: (onClose: () => void) => JSX.Element) => 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 } = modalContent;\n    return (\n      <Dialog open={true} onOpenChange={onClose}>\n        <DialogContent>\n          <DialogHeader>\n            <DialogTitle>{title}</DialogTitle>\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","'use client'\n\nimport { PlusIcon } from 'lucide-react'\n\nimport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectTrigger,\n} from '../../../../../components/Select'\n\nimport { useEditorModal } from '@/components/editor/editor-hooks/use-modal'\n\nexport function BlockInsertPlugin({ children }: { children: React.ReactNode }) {\n  const [modal] = useEditorModal()\n\n  return (\n    <>\n      {modal}\n      <Select value={''}>\n        <SelectTrigger className=\"h-8 [&_span]:w-fit [&_span]:text-content-presentation-action-light-primary w-fit justify-start gap-1 [&_p]:flex [&_p]:items-center [&_p]:gap-2 [&_p]:h-full [&_p]:m-0 [&_p]:w-fit\">\n          <PlusIcon className=\"size-4 mt-0.5\" />\n          <span className='flex h-full text-center shrink-0 items-center w-full'>Insert</span>\n        </SelectTrigger>\n        <SelectContent>\n          <SelectGroup>{children}</SelectGroup>\n        </SelectContent>\n      </Select>\n    </>\n  )\n}\n","import { useEffect } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport {\n  $findMatchingParent,\n  $insertNodeToNearestRoot,\n  mergeRegister,\n} from '@lexical/utils'\nimport {\n  $createParagraphNode,\n  $getSelection,\n  $isRangeSelection,\n  COMMAND_PRIORITY_LOW,\n  DELETE_CHARACTER_COMMAND,\n  ElementNode,\n  INSERT_PARAGRAPH_COMMAND,\n  KEY_ARROW_DOWN_COMMAND,\n  KEY_ARROW_LEFT_COMMAND,\n  KEY_ARROW_RIGHT_COMMAND,\n  KEY_ARROW_UP_COMMAND,\n  LexicalNode,\n  createCommand,\n} from 'lexical'\n\nimport {\n  $createCollapsibleContainerNode,\n  $isCollapsibleContainerNode,\n  CollapsibleContainerNode,\n} from '@/components/editor/nodes/collapsible-container-node'\nimport {\n  $createCollapsibleContentNode,\n  $isCollapsibleContentNode,\n  CollapsibleContentNode,\n} from '@/components/editor/nodes/collapsible-content-node'\nimport {\n  $createCollapsibleTitleNode,\n  $isCollapsibleTitleNode,\n  CollapsibleTitleNode,\n} from '@/components/editor/nodes/collapsible-title-node'\n\nexport const INSERT_COLLAPSIBLE_COMMAND = createCommand<void>()\n\nexport function CollapsiblePlugin(): null {\n  const [editor] = useLexicalComposerContext()\n\n  useEffect(() => {\n    if (\n      !editor.hasNodes([\n        CollapsibleContainerNode,\n        CollapsibleTitleNode,\n        CollapsibleContentNode,\n      ])\n    ) {\n      throw new Error(\n        'CollapsiblePlugin: CollapsibleContainerNode, CollapsibleTitleNode, or CollapsibleContentNode not registered on editor'\n      )\n    }\n\n    const $onEscapeUp = () => {\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          $isCollapsibleContainerNode\n        )\n\n        if ($isCollapsibleContainerNode(container)) {\n          const parent = container.getParent<ElementNode>()\n          if (\n            parent !== null &&\n            parent.getFirstChild<LexicalNode>() === container &&\n            selection.anchor.key ===\n              container.getFirstDescendant<LexicalNode>()?.getKey()\n          ) {\n            container.insertBefore($createParagraphNode())\n          }\n        }\n      }\n\n      return false\n    }\n\n    const $onEscapeDown = () => {\n      const selection = $getSelection()\n      if ($isRangeSelection(selection) && selection.isCollapsed()) {\n        const container = $findMatchingParent(\n          selection.anchor.getNode(),\n          $isCollapsibleContainerNode\n        )\n\n        if ($isCollapsibleContainerNode(container)) {\n          const parent = container.getParent<ElementNode>()\n          if (\n            parent !== null &&\n            parent.getLastChild<LexicalNode>() === container\n          ) {\n            const titleParagraph = container.getFirstDescendant<LexicalNode>()\n            const contentParagraph = container.getLastDescendant<LexicalNode>()\n\n            if (\n              (contentParagraph !== null &&\n                selection.anchor.key === contentParagraph.getKey() &&\n                selection.anchor.offset ===\n                  contentParagraph.getTextContentSize()) ||\n              (titleParagraph !== null &&\n                selection.anchor.key === titleParagraph.getKey() &&\n                selection.anchor.offset === titleParagraph.getTextContentSize())\n            ) {\n              container.insertAfter($createParagraphNode())\n            }\n          }\n        }\n      }\n\n      return false\n    }\n\n    return mergeRegister(\n      // Structure enforcing transformers for each node type. In case nesting structure is not\n      // \"Container > Title + Content\" it'll unwrap nodes and convert it back\n      // to regular content.\n      editor.registerNodeTransform(CollapsibleContentNode, (node) => {\n        const parent = node.getParent<ElementNode>()\n        if (!$isCollapsibleContainerNode(parent)) {\n          const children = node.getChildren<LexicalNode>()\n          for (const child of children) {\n            node.insertBefore(child)\n          }\n          node.remove()\n        }\n      }),\n\n      editor.registerNodeTransform(CollapsibleTitleNode, (node) => {\n        const parent = node.getParent<ElementNode>()\n        if (!$isCollapsibleContainerNode(parent)) {\n          node.replace(\n            $createParagraphNode().append(...node.getChildren<LexicalNode>())\n          )\n          return\n        }\n      }),\n\n      editor.registerNodeTransform(CollapsibleContainerNode, (node) => {\n        const children = node.getChildren<LexicalNode>()\n        if (\n          children.length !== 2 ||\n          !$isCollapsibleTitleNode(children[0]) ||\n          !$isCollapsibleContentNode(children[1])\n        ) {\n          for (const child of children) {\n            node.insertBefore(child)\n          }\n          node.remove()\n        }\n      }),\n\n      // This handles the case when container is collapsed and we delete its previous sibling\n      // into it, it would cause collapsed content deleted (since it's display: none, and selection\n      // swallows it when deletes single char). Instead we expand container, which is although\n      // not perfect, but avoids bigger problem\n      editor.registerCommand(\n        DELETE_CHARACTER_COMMAND,\n        () => {\n          const selection = $getSelection()\n          if (\n            !$isRangeSelection(selection) ||\n            !selection.isCollapsed() ||\n            selection.anchor.offset !== 0\n          ) {\n            return false\n          }\n\n          const anchorNode = selection.anchor.getNode()\n          const topLevelElement = anchorNode.getTopLevelElement()\n          if (topLevelElement === null) {\n            return false\n          }\n\n          const container = topLevelElement.getPreviousSibling<LexicalNode>()\n          if (!$isCollapsibleContainerNode(container) || container.getOpen()) {\n            return false\n          }\n\n          container.setOpen(true)\n          return true\n        },\n        COMMAND_PRIORITY_LOW\n      ),\n\n      // When collapsible 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        $onEscapeDown,\n        COMMAND_PRIORITY_LOW\n      ),\n\n      editor.registerCommand(\n        KEY_ARROW_RIGHT_COMMAND,\n        $onEscapeDown,\n        COMMAND_PRIORITY_LOW\n      ),\n\n      // When collapsible 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        $onEscapeUp,\n        COMMAND_PRIORITY_LOW\n      ),\n\n      editor.registerCommand(\n        KEY_ARROW_LEFT_COMMAND,\n        $onEscapeUp,\n        COMMAND_PRIORITY_LOW\n      ),\n\n      // Enter goes from Title to Content rather than a new line inside Title\n      editor.registerCommand(\n        INSERT_PARAGRAPH_COMMAND,\n        () => {\n          const selection = $getSelection()\n          if ($isRangeSelection(selection)) {\n            const titleNode = $findMatchingParent(\n              selection.anchor.getNode(),\n              (node) => $isCollapsibleTitleNode(node)\n            )\n\n            if ($isCollapsibleTitleNode(titleNode)) {\n              const container = titleNode.getParent<ElementNode>()\n              if (container && $isCollapsibleContainerNode(container)) {\n                if (!container.getOpen()) {\n                  container.toggleOpen()\n                }\n                titleNode.getNextSibling()?.selectEnd()\n                return true\n              }\n            }\n          }\n\n          return false\n        },\n        COMMAND_PRIORITY_LOW\n      ),\n      editor.registerCommand(\n        INSERT_COLLAPSIBLE_COMMAND,\n        () => {\n          editor.update(() => {\n            const title = $createCollapsibleTitleNode()\n            const paragraph = $createParagraphNode()\n            $insertNodeToNearestRoot(\n              $createCollapsibleContainerNode(true).append(\n                title.append(paragraph),\n                $createCollapsibleContentNode().append($createParagraphNode())\n              )\n            )\n            paragraph.select()\n          })\n          return true\n        },\n        COMMAND_PRIORITY_LOW\n      )\n    )\n  }, [editor])\n\n  return null\n}\n","'use client'\n\nimport { ChevronRightIcon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { INSERT_COLLAPSIBLE_COMMAND } from '@/components/editor/plugins/collapsible-plugin'\n\nexport function InsertCollapsibleContainer() {\n  const { activeEditor } = useToolbarContext()\n  return (\n    <SelectItem\n      value=\"collapsible\"\n      onPointerUp={() =>\n        activeEditor.dispatchCommand(INSERT_COLLAPSIBLE_COMMAND, undefined)\n      }\n\n    >\n      <div className=\"flex flex-nowrap items-center gap-1\">\n        <ChevronRightIcon className=\"size-4\" />\n        <span>Collapsible container</span>\n      </div>\n    </SelectItem>\n  )\n}\n","import * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Select({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n  return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n  return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />;\n}\n\nfunction SelectValue({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n  return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n  className,\n  size = \"default\",\n  children,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n  size?: \"sm\" | \"default\";\n}) {\n  return (\n    <SelectPrimitive.Trigger\n      data-slot=\"select-trigger\"\n      data-size={size}\n      className={cn(\n        \"border-border-system-global-secondary data-[placeholder]:text-content-system-global-secondary [&_svg:not([class*='text-'])]:text-content-system-global-secondary focus-visible:border-border-presentation-state-focus focus-visible:ring-border-presentation-state-focus/50 aria-invalid:ring-border-presentation-state-negative/20 aria-invalid:border-border-presentation-state-negative bg-background-system-body-primary hover:bg-background-presentation-action-hover flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <SelectPrimitive.Icon asChild>\n        <ChevronDownIcon className=\"size-4 opacity-50\" />\n      </SelectPrimitive.Icon>\n    </SelectPrimitive.Trigger>\n  );\n}\n\nfunction SelectContent({\n  className,\n  children,\n  position = \"popper\",\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n  return (\n    <SelectPrimitive.Portal>\n      <SelectPrimitive.Content\n        data-slot=\"select-content\"\n        className={cn(\n          \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n          position === \"popper\" &&\n            \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n          className\n        )}\n        position={position}\n        {...props}\n      >\n        <SelectScrollUpButton />\n        <SelectPrimitive.Viewport\n          className={cn(\n            \"p-1\",\n            position === \"popper\" &&\n              \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n          )}\n        >\n          {children}\n        </SelectPrimitive.Viewport>\n        <SelectScrollDownButton />\n      </SelectPrimitive.Content>\n    </SelectPrimitive.Portal>\n  );\n}\n\nfunction SelectLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n  return (\n    <SelectPrimitive.Label\n      data-slot=\"select-label\"\n      className={cn(\"text-content-system-global-secondary  px-2 py-1.5 text-xs\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction SelectItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n  return (\n    <SelectPrimitive.Item\n      data-slot=\"select-item\"\n      className={cn(\n        \"focus:bg-background-presentation-action-selected focus:text-content-system-global-primary [&_svg:not([class*='text-'])]:text-content-system-global-secondary relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n        <SelectPrimitive.ItemIndicator>\n          <CheckIcon className=\"size-4\" />\n        </SelectPrimitive.ItemIndicator>\n      </span>\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n    </SelectPrimitive.Item>\n  );\n}\n\nfunction SelectSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n  return (\n    <SelectPrimitive.Separator\n      data-slot=\"select-separator\"\n      className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction SelectScrollUpButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n  return (\n    <SelectPrimitive.ScrollUpButton\n      data-slot=\"select-scroll-up-button\"\n      className={cn(\n        \"flex cursor-default items-center justify-center py-1\",\n        className\n      )}\n      {...props}\n    >\n      <ChevronUpIcon className=\"size-4\" />\n    </SelectPrimitive.ScrollUpButton>\n  );\n}\n\nfunction SelectScrollDownButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n  return (\n    <SelectPrimitive.ScrollDownButton\n      data-slot=\"select-scroll-down-button\"\n      className={cn(\n        \"flex cursor-default items-center justify-center py-1\",\n        className\n      )}\n      {...props}\n    >\n      <ChevronDownIcon className=\"size-4\" />\n    </SelectPrimitive.ScrollDownButton>\n  );\n}\n\nexport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n};\n","import { useState, useEffect, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n  $findMatchingParent,\n  $insertNodeToNearestRoot,\n  mergeRegister,\n} from \"@lexical/utils\";\nimport { LexicalEditor } from \"lexical\";\nimport type {\n  ElementNode,\n  LexicalCommand,\n  LexicalNode,\n  NodeKey,\n} from \"lexical\";\nimport {\n  $createParagraphNode,\n  $getNodeByKey,\n  $getSelection,\n  $isRangeSelection,\n  COMMAND_PRIORITY_EDITOR,\n  COMMAND_PRIORITY_LOW,\n  KEY_ARROW_DOWN_COMMAND,\n  KEY_ARROW_LEFT_COMMAND,\n  KEY_ARROW_RIGHT_COMMAND,\n  KEY_ARROW_UP_COMMAND,\n  createCommand,\n} from \"lexical\";\n\nimport { Button } from \"../../../../components/Button\";\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\";\n\nimport {\n  $createLayoutContainerNode,\n  $isLayoutContainerNode,\n  LayoutContainerNode,\n} from \"@/components/editor/nodes/layout-container-node\";\nimport {\n  $createLayoutItemNode,\n  $isLayoutItemNode,\n  LayoutItemNode,\n} from \"@/components/editor/nodes/layout-item-node\";\n\nconst LAYOUTS = [\n  { label: \"2 columns (equal width)\", value: \"1fr 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\nexport function InsertLayoutDialog({\n  activeEditor,\n  onClose,\n}: {\n  activeEditor: LexicalEditor;\n  onClose: () => void;\n}): JSX.Element {\n  const [layout, setLayout] = useState(LAYOUTS[0].value);\n  const buttonLabel = LAYOUTS.find((item) => item.value === layout)?.label;\n\n  const onClick = () => {\n    activeEditor.dispatchCommand(INSERT_LAYOUT_COMMAND, layout);\n    onClose();\n  };\n\n  return (\n    <>\n      <Select onValueChange={setLayout} defaultValue={layout}>\n        <SelectTrigger className=\"w-full\">\n          <SelectValue placeholder={buttonLabel} />\n        </SelectTrigger>\n        <SelectContent className=\"w-full\">\n          {LAYOUTS.map(({ label, value }) => (\n            <SelectItem key={value} value={value}>\n              {label}\n            </SelectItem>\n          ))}\n        </SelectContent>\n      </Select>\n      <Button onClick={onClick}>Insert</Button>\n    </>\n  );\n}\n\nexport const INSERT_LAYOUT_COMMAND: LexicalCommand<string> =\n  createCommand<string>();\n\nexport const UPDATE_LAYOUT_COMMAND: LexicalCommand<{\n  template: string;\n  nodeKey: NodeKey;\n}> = createCommand<{ template: string; nodeKey: NodeKey }>();\n\nexport function LayoutPlugin(): null {\n  const [editor] = useLexicalComposerContext();\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)) {\n          const parent = container.getParent<ElementNode>();\n          const child =\n            parent &&\n            (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            parent !== null &&\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    return mergeRegister(\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        (template) => {\n          editor.update(() => {\n            const container = $createLayoutContainerNode(template);\n            const itemsCount = getItemsCountFromTemplate(template);\n\n            for (let i = 0; i < itemsCount; i++) {\n              container.append(\n                $createLayoutItemNode().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\n            const itemsCount = getItemsCountFromTemplate(template);\n            const prevItemsCount = getItemsCountFromTemplate(\n              container.getTemplateColumns()\n            );\n\n            // Add or remove extra columns if new template does not match existing one\n            if (itemsCount > prevItemsCount) {\n              for (let i = prevItemsCount; i < itemsCount; i++) {\n                container.append(\n                  $createLayoutItemNode().append($createParagraphNode())\n                );\n              }\n            } else if (itemsCount < prevItemsCount) {\n              for (let i = prevItemsCount - 1; i >= itemsCount; i--) {\n                const layoutItem = container.getChildAtIndex<LexicalNode>(i);\n\n                if ($isLayoutItemNode(layoutItem)) {\n                  layoutItem.remove();\n                }\n              }\n            }\n\n            container.setTemplateColumns(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]);\n\n  return null;\n}\n\nfunction getItemsCountFromTemplate(template: string): number {\n  return template.trim().split(/\\s+/).length;\n}\n","import { Columns3Icon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { InsertLayoutDialog } from '@/components/editor/plugins/layout-plugin'\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\n    >\n      <div className=\"flex flex-nowrap items-center gap-1\">\n        <Columns3Icon className=\"size-4\" />\n        <span>Columns Layout</span>\n      </div>\n    </SelectItem>\n  )\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 */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{createCommand as e,KEY_ARROW_DOWN_COMMAND as n,KEY_ARROW_UP_COMMAND as o,KEY_ESCAPE_COMMAND as l,KEY_TAB_COMMAND as r,KEY_ENTER_COMMAND as i,COMMAND_PRIORITY_LOW as u,$getSelection as s,$isRangeSelection as c,$getNodeByKey as a}from\"lexical\";import m,{useLayoutEffect as d,useEffect as p,useState as f,useCallback as g,useMemo as h,useRef as y}from\"react\";import{mergeRegister as w}from\"@lexical/utils\";import{jsx as v}from\"react/jsx-runtime\";const b=\"startTransition\";const C=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,x=C?d:p;class E{constructor(t){this.key=t,this.ref={current:null},this.setRefElement=this.setRefElement.bind(this)}setRefElement(t){this.ref={current:t}}}const R=t=>{const e=document.getElementById(\"typeahead-menu\");if(!e)return;const n=e.getBoundingClientRect();n.top+n.height>window.innerHeight&&e.scrollIntoView({block:\"center\"}),n.top<0&&e.scrollIntoView({block:\"center\"}),t.scrollIntoView({block:\"nearest\"})};function I(t,e){const n=t.getBoundingClientRect(),o=e.getBoundingClientRect();return n.top>o.top&&n.top<o.bottom}function O(e,n,o,l){const[r]=t();p((()=>{if(null!=n&&null!=e){const t=r.getRootElement(),e=null!=t?function(t,e){let n=getComputedStyle(t);const o=\"absolute\"===n.position,l=/(auto|scroll)/;if(\"fixed\"===n.position)return document.body;for(let e=t;e=e.parentElement;)if(n=getComputedStyle(e),(!o||\"static\"!==n.position)&&l.test(n.overflow+n.overflowY+n.overflowX))return e;return document.body}(t):document.body;let i=!1,u=I(n,e);const s=function(){i||(window.requestAnimationFrame((function(){o(),i=!1})),i=!0);const t=I(n,e);t!==u&&(u=t,null!=l&&l(t))},c=new ResizeObserver(o);return window.addEventListener(\"resize\",o),document.addEventListener(\"scroll\",s,{capture:!0,passive:!0}),c.observe(n),()=>{c.unobserve(n),window.removeEventListener(\"resize\",o),document.removeEventListener(\"scroll\",s,!0)}}}),[n,r,l,o,e])}const A=e(\"SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND\");function S({close:t,editor:e,anchorElementRef:a,resolution:m,options:d,menuRenderFn:y,onSelectOption:v,shouldSplitNodeWithQuery:b=!1,commandPriority:C=u,preselectFirstItem:E=!0}){const[I,O]=f(null),S=m.match&&m.match.matchingString;p((()=>{E&&O(0)}),[S,E]);const P=g((n=>{e.update((()=>{const e=null!=m.match&&b?function(t){const e=s();if(!c(e)||!e.isCollapsed())return null;const n=e.anchor;if(\"text\"!==n.type)return null;const o=n.getNode();if(!o.isSimpleText())return null;const l=n.offset,r=o.getTextContent().slice(0,l),i=t.replaceableString.length,u=l-function(t,e,n){let o=n;for(let n=o;n<=e.length;n++)t.slice(-n)===e.substring(0,n)&&(o=n);return o}(r,t.matchingString,i);if(u<0)return null;let a;return 0===u?[a]=o.splitText(l):[,a]=o.splitText(u,l),a}(m.match):null;v(n,e,t,m.match?m.match.matchingString:\"\")}))}),[e,b,m.match,v,t]),T=g((t=>{const n=e.getRootElement();null!==n&&(n.setAttribute(\"aria-activedescendant\",\"typeahead-item-\"+t),O(t))}),[e]);p((()=>()=>{const t=e.getRootElement();null!==t&&t.removeAttribute(\"aria-activedescendant\")}),[e]),x((()=>{null===d?O(null):null===I&&E&&T(0)}),[d,I,T,E]),p((()=>w(e.registerCommand(A,(({option:t})=>!(!t.ref||null==t.ref.current)&&(R(t.ref.current),!0)),C))),[e,T,C]),p((()=>w(e.registerCommand(n,(t=>{const n=t;if(null!==d&&d.length){const t=null===I?0:I!==d.length-1?I+1:0;T(t);const o=d[t];null!=o.ref&&o.ref.current&&e.dispatchCommand(A,{index:t,option:o}),n.preventDefault(),n.stopImmediatePropagation()}return!0}),C),e.registerCommand(o,(t=>{const e=t;if(null!==d&&d.length){const t=null===I?d.length-1:0!==I?I-1:d.length-1;T(t);const n=d[t];null!=n.ref&&n.ref.current&&R(n.ref.current),e.preventDefault(),e.stopImmediatePropagation()}return!0}),C),e.registerCommand(l,(e=>{const n=e;return n.preventDefault(),n.stopImmediatePropagation(),t(),!0}),C),e.registerCommand(r,(t=>{const e=t;return null!==d&&null!==I&&null!=d[I]&&(e.preventDefault(),e.stopImmediatePropagation(),P(d[I]),!0)}),C),e.registerCommand(i,(t=>null!==d&&null!==I&&null!=d[I]&&(null!==t&&(t.preventDefault(),t.stopImmediatePropagation()),P(d[I]),!0)),C))),[P,t,e,d,I,T,C]);return y(a,h((()=>({options:d,selectOptionAndCleanUp:P,selectedIndex:I,setHighlightedIndex:O})),[P,I,d]),m.match?m.match.matchingString:\"\")}function P(t,e){null!=e&&(t.className=e),t.setAttribute(\"aria-label\",\"Typeahead menu\"),t.setAttribute(\"role\",\"listbox\"),t.style.display=\"block\",t.style.position=\"absolute\"}function T({options:e,nodeKey:n,onClose:o,onOpen:l,onSelectOption:r,menuRenderFn:i,anchorClassName:s,commandPriority:c=u,parent:d}){const[h]=t(),[w,x]=f(null),E=function(e,n,o,l=(C?document.body:void 0),r=!0){const[i]=t(),u=y(C?document.createElement(\"div\"):null),s=g((()=>{if(null===u.current||void 0===l)return;u.current.style.top=u.current.style.bottom;const t=i.getRootElement(),n=u.current,s=n.firstChild;if(null!==t&&null!==e){const{left:i,top:c,width:a,height:m}=e.getRect(),d=u.current.offsetHeight;if(n.style.top=`${c+d+3+(r?window.pageYOffset:0)}px`,n.style.left=`${i+window.pageXOffset}px`,n.style.height=`${m}px`,n.style.width=`${a}px`,null!==s){s.style.top=`${c}`;const e=s.getBoundingClientRect(),o=e.height,l=e.width,u=t.getBoundingClientRect();i+l>u.right&&(n.style.left=`${u.right-l+window.pageXOffset}px`),(c+o>window.innerHeight||c+o>u.bottom)&&c-u.top>o+m&&(n.style.top=`${c-o-m+(r?window.pageYOffset:0)}px`)}n.isConnected||(P(n,o),l.append(n)),n.setAttribute(\"id\",\"typeahead-menu\"),u.current=n,t.setAttribute(\"aria-controls\",\"typeahead-menu\")}}),[i,e,r,o,l]);p((()=>{const t=i.getRootElement();return null!==e&&s(),()=>{null!==t&&t.removeAttribute(\"aria-controls\");const e=u.current;null!==e&&e.isConnected&&(e.remove(),e.removeAttribute(\"id\"))}}),[i,s,e]);const c=g((t=>{null!==e&&(t||n(null))}),[e,n]);O(e,u.current,s,c);const a=u.current;return null!=a&&(P(a,o),null!=l&&l.append(a)),u}(w,x,s,d),R=g((()=>{x(null),null!=o&&null!==w&&o()}),[o,w]),I=g((t=>{x(t),null!=l&&null===w&&l(t)}),[l,w]),A=g((()=>{n?h.update((()=>{const t=a(n),e=h.getElementByKey(n);var o;null!=t&&null!=e&&null==w&&(o=()=>I({getRect:()=>e.getBoundingClientRect()}),b in m?m[b](o):o())})):null==n&&null!=w&&R()}),[R,h,n,I,w]);return p((()=>{A()}),[A,n]),p((()=>{if(null!=n)return h.registerUpdateListener((({dirtyElements:t})=>{t.get(n)&&A()}))}),[h,A,n]),null===E.current||null===w||null===h?null:v(S,{close:R,resolution:w,editor:h,anchorElementRef:E,options:e,menuRenderFn:i,onSelectOption:r,commandPriority:c})}export{T as LexicalNodeMenuPlugin,E as MenuOption};\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 */\n\nimport{$isLinkNode as e,LinkNode as t,AutoLinkNode as n}from\"@lexical/link\";import{useLexicalComposerContext as o}from\"@lexical/react/LexicalComposerContext\";import{MenuOption as r,LexicalNodeMenuPlugin as i}from\"@lexical/react/LexicalNodeMenuPlugin\";import{mergeRegister as l}from\"@lexical/utils\";import{createCommand as s,$getNodeByKey as a,COMMAND_PRIORITY_EDITOR as c,$getSelection as u,COMMAND_PRIORITY_LOW as m}from\"lexical\";import{useState as d,useCallback as p,useEffect as f,useMemo as x}from\"react\";import{jsx as g}from\"react/jsx-runtime\";const w=/((https?:\\/\\/(www\\.)?)|(www\\.))[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/,C=s(\"INSERT_EMBED_COMMAND\");class y extends r{constructor(e,t){super(e),this.title=e,this.onSelect=t.onSelect.bind(this)}}function E({embedConfigs:r,onOpenEmbedModalForConfig:s,getMenuOptions:w,menuRenderFn:y,menuCommandPriority:E=m}){const[M]=o(),[S,h]=d(null),[_,v]=d(null),z=p((()=>{h(null),v(null)}),[]),A=p((async t=>{const n=M.getEditorState().read((function(){const n=a(t);if(e(n))return n.getURL()}));if(void 0!==n)for(const e of r){null!=await Promise.resolve(e.parseUrl(n))&&(v(e),h(t))}}),[M,r]);f((()=>l(...[t,n].map((e=>M.registerMutationListener(e,((...e)=>((e,{updateTags:t,dirtyLeaves:n})=>{for(const[o,r]of e)\"created\"===r&&t.has(\"paste\")&&n.size<=3?A(o):o===S&&z()})(...e)),{skipInitialization:!0}))))),[A,M,r,S,z]),f((()=>M.registerCommand(C,(e=>{const t=r.find((({type:t})=>t===e));return!!t&&(s(t),!0)}),c)),[M,r,s]);const L=p((async function(){if(null!=_&&null!=S){const t=M.getEditorState().read((()=>{const t=a(S);return e(t)?t:null}));if(e(t)){const e=await Promise.resolve(_.parseUrl(t.__url));null!=e&&M.update((()=>{u()||t.selectEnd(),_.insertNode(M,e),t.isAttached()&&t.remove()}))}}}),[_,M,S]),P=x((()=>null!=_&&null!=S?w(_,L,z):[]),[_,L,w,S,z]),b=p(((e,t,n)=>{M.update((()=>{e.onSelect(t),n()}))}),[M]);return null!=S?g(i,{nodeKey:S,onClose:z,onSelectOption:b,options:P,menuRenderFn:y,commandPriority:E}):null}export{y as AutoEmbedOption,C as INSERT_EMBED_COMMAND,E as LexicalAutoEmbedPlugin,w as URL_MATCHER};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { SearchIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogHeader,\n  DialogTitle,\n} from \"../../../components/Dialog\";\n\nfunction Command({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n  return (\n    <CommandPrimitive\n      data-slot=\"command\"\n      className={cn(\n        \"bg-background-presentation-form-base text-content-presentation-action-light-primary flex h-full w-full flex-col overflow-hidden rounded-md\",\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction CommandDialog({\n  title = \"Command Palette\",\n  description = \"Search for a command to run...\",\n  children,\n  ...props\n}: React.ComponentProps<typeof Dialog> & {\n  title?: string;\n  description?: string;\n}) {\n  return (\n    <Dialog {...props}>\n      <DialogHeader className=\"sr-only\">\n        <DialogTitle>{title}</DialogTitle>\n        <DialogDescription>{description}</DialogDescription>\n      </DialogHeader>\n      <DialogContent className=\"overflow-hidden p-0\">\n        <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n          {children}\n        </Command>\n      </DialogContent>\n    </Dialog>\n  );\n}\n\nfunction CommandInput({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n  return (\n    <div\n      data-slot=\"command-input-wrapper\"\n      className=\"flex h-9 items-center gap-2 border-b px-3\"\n    >\n      <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n      <CommandPrimitive.Input\n        data-slot=\"command-input\"\n        className={cn(\n          \"placeholder:text-content-system-global-secondary flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n          className\n        )}\n        {...props}\n      />\n    </div>\n  );\n}\n\nfunction CommandList({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n  return (\n    <CommandPrimitive.List\n      data-slot=\"command-list\"\n      className={cn(\n        \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n        \"[&::-webkit-scrollbar]:w-2\",\n        \"[&::-webkit-scrollbar-track]:bg-transparent\",\n        \"[&::-webkit-scrollbar-thumb]:rounded-full\",\n        \"[&::-webkit-scrollbar-thumb]:bg-background-system-body-secondary\",\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction CommandEmpty({\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n  return (\n    <CommandPrimitive.Empty\n      data-slot=\"command-empty\"\n      className=\"py-6 text-center text-sm\"\n      {...props}\n    />\n  );\n}\n\nfunction CommandGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n  return (\n    <CommandPrimitive.Group\n      data-slot=\"command-group\"\n      className={cn(\n        \"text-content-system-global-primary [&_[cmdk-group-heading]]:text-muted-foreground  overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction CommandSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n  return (\n    <CommandPrimitive.Separator\n      data-slot=\"command-separator\"\n      className={cn(\"bg-border  -mx-1 h-px\", className)}\n      {...props}\n    />\n  );\n}\n\nfunction CommandItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n  return (\n    <CommandPrimitive.Item\n      data-slot=\"command-item\"\n      className={cn(\n        \"data-[selected=true]:bg-background-presentation-action-selected data-[selected=true]:text-content-system-global-primary [&_svg:not([class*='text-'])]:text-content-system-global-secondary relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nfunction CommandShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"command-shortcut\"\n      className={cn(\n        \"text-muted-foreground ml-auto text-xs tracking-widest \",\n        className\n      )}\n      {...props}\n    />\n  );\n}\n\nexport {\n  Command,\n  CommandDialog,\n  CommandInput,\n  CommandList,\n  CommandEmpty,\n  CommandGroup,\n  CommandItem,\n  CommandShortcut,\n  CommandSeparator,\n};\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n  return (\n    <input\n      type={type}\n      data-slot=\"input\"\n      className={cn(\n        \"file:text-content-system-global-primary placeholder:text-content-system-global-secondary selection:bg-background-presentation-action-selected selection:text-content-system-global-primary bg-background-system-body-primary border-border-system-global-secondary text-content-system-global-primary flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n        \"focus-visible:border-border-presentation-state-focus focus-visible:ring-border-presentation-state-focus/50 focus-visible:ring-[3px]\",\n        \"aria-invalid:ring-border-presentation-state-negative/20 aria-invalid:border-border-presentation-state-negative\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Input }\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Popover({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n  return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n  return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n  className,\n  align = \"center\",\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n  return (\n    <PopoverPrimitive.Portal>\n      <PopoverPrimitive.Content\n        data-slot=\"popover-content\"\n        align={align}\n        sideOffset={sideOffset}\n        className={cn(\n          \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n          className\n        )}\n        {...props}\n      />\n    </PopoverPrimitive.Portal>\n  )\n}\n\nfunction PopoverAnchor({\n  ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n  return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import { useEffect, JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $insertNodeToNearestRoot } from '@lexical/utils'\nimport { COMMAND_PRIORITY_EDITOR, LexicalCommand, createCommand } from 'lexical'\n\nimport { $createFigmaNode, FigmaNode } from '@/components/editor/nodes/embeds/figma-node'\n\nexport const INSERT_FIGMA_COMMAND: LexicalCommand<string> = createCommand(\n  'INSERT_FIGMA_COMMAND'\n)\n\nexport function FigmaPlugin(): JSX.Element | null {\n  const [editor] = useLexicalComposerContext()\n\n  useEffect(() => {\n    if (!editor.hasNodes([FigmaNode])) {\n      throw new Error('FigmaPlugin: FigmaNode not registered on editor')\n    }\n\n    return editor.registerCommand<string>(\n      INSERT_FIGMA_COMMAND,\n      (payload) => {\n        const figmaNode = $createFigmaNode(payload)\n        $insertNodeToNearestRoot(figmaNode)\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 { useEffect, JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $insertNodeToNearestRoot } from '@lexical/utils'\nimport { COMMAND_PRIORITY_EDITOR, LexicalCommand, createCommand } from 'lexical'\n\nimport { $createTweetNode, TweetNode } from '@/components/editor/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","import { useEffect, JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $insertNodeToNearestRoot } from '@lexical/utils'\nimport { COMMAND_PRIORITY_EDITOR, LexicalCommand, createCommand } from 'lexical'\n\nimport {\n  $createYouTubeNode,\n  YouTubeNode,\n} from '@/components/editor/nodes/embeds/youtube-node'\n\nexport const INSERT_YOUTUBE_COMMAND: LexicalCommand<string> = createCommand(\n  'INSERT_YOUTUBE_COMMAND'\n)\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<string>(\n      INSERT_YOUTUBE_COMMAND,\n      (payload) => {\n        const youTubeNode = $createYouTubeNode(payload)\n        $insertNodeToNearestRoot(youTubeNode)\n\n        return true\n      },\n      COMMAND_PRIORITY_EDITOR\n    )\n  }, [editor])\n\n  return null\n}\n","import { useMemo, useState, JSX } from \"react\";\n\nimport {\n  AutoEmbedOption,\n  EmbedConfig,\n  EmbedMatchResult,\n  LexicalAutoEmbedPlugin,\n  URL_MATCHER,\n} from \"@lexical/react/LexicalAutoEmbedPlugin\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { PopoverPortal } from \"@radix-ui/react-popover\";\nimport type { LexicalEditor } from \"lexical\";\nimport { FigmaIcon, TwitterIcon, YoutubeIcon } from \"lucide-react\";\n\nimport { Button } from \"../../../../../components/Button\";\nimport {\n  Command,\n  CommandGroup,\n  CommandItem,\n  CommandList,\n} from \"@/components/ui/command\";\nimport { DialogFooter } from \"../../../../../components/Dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/components/ui/popover\";\n\nimport { useEditorModal } from \"@/components/editor/editor-hooks/use-modal\";\nimport { INSERT_FIGMA_COMMAND } from \"@/components/editor/plugins/embeds/figma-plugin\";\nimport { INSERT_TWEET_COMMAND } from \"@/components/editor/plugins/embeds/twitter-plugin\";\nimport { INSERT_YOUTUBE_COMMAND } from \"@/components/editor/plugins/embeds/youtube-plugin\";\n\ninterface PlaygroundEmbedConfig 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 Figma Project.\n  description?: string;\n}\n\nexport const YoutubeEmbedConfig: PlaygroundEmbedConfig = {\n  contentName: \"Youtube Video\",\n\n  exampleUrl: \"https://www.youtube.com/watch?v=jNQXAC9IVRw\",\n\n  // Icon for display.\n  icon: <YoutubeIcon className=\"size-4\" />,\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].length === 11 ? match[2] : null) : 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: PlaygroundEmbedConfig = {\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: <TwitterIcon className=\"size-4\" />,\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(\n        text\n      );\n\n    if (match != null) {\n      return {\n        id: match[5],\n        url: match[1],\n      };\n    }\n\n    return null;\n  },\n\n  type: \"tweet\",\n};\n\nexport const FigmaEmbedConfig: PlaygroundEmbedConfig = {\n  contentName: \"Figma Document\",\n\n  exampleUrl: \"https://www.figma.com/file/LKQ4FJ4bTnCSjedbRpk931/Sample-File\",\n\n  icon: <FigmaIcon className=\"size-4\" />,\n\n  insertNode: (editor: LexicalEditor, result: EmbedMatchResult) => {\n    editor.dispatchCommand(INSERT_FIGMA_COMMAND, result.id);\n  },\n\n  keywords: [\"figma\", \"figma.com\", \"mock-up\"],\n\n  // Determine if a given URL is a match and return url data.\n  parseUrl: (text: string) => {\n    const match =\n      /https:\\/\\/([\\w.-]+\\.)?figma.com\\/(file|proto)\\/([0-9a-zA-Z]{22,128})(?:\\/.*)?$/.exec(\n        text\n      );\n\n    if (match != null) {\n      return {\n        id: match[3],\n        url: match[0],\n      };\n    }\n\n    return null;\n  },\n\n  type: \"figma\",\n};\n\nexport const EmbedConfigs = [\n  TwitterEmbedConfig,\n  YoutubeEmbedConfig,\n  FigmaEmbedConfig,\n];\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\nexport function AutoEmbedDialog({\n  embedConfig,\n  onClose,\n}: {\n  embedConfig: PlaygroundEmbedConfig;\n  onClose: () => void;\n}): JSX.Element {\n  const [text, setText] = useState(\"\");\n  const [editor] = useLexicalComposerContext();\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=\"\">\n      <div className=\"space-y-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    </div>\n  );\n}\n\nexport function AutoEmbedPlugin(): JSX.Element {\n  const [modal, showModal] = useEditorModal();\n\n  const openEmbedModal = (embedConfig: PlaygroundEmbedConfig) => {\n    showModal(`Embed ${embedConfig.contentName}`, (onClose) => (\n      <AutoEmbedDialog embedConfig={embedConfig} onClose={onClose} />\n    ));\n  };\n\n  const getMenuOptions = (\n    activeEmbedConfig: PlaygroundEmbedConfig,\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<PlaygroundEmbedConfig>\n        embedConfigs={EmbedConfigs}\n        onOpenEmbedModalForConfig={openEmbedModal}\n        getMenuOptions={getMenuOptions}\n        //@ts-ignore\n        menuRenderFn={(\n          anchorElementRef,\n          {\n            //@ts-ignore\n            selectedIndex,\n            options,\n            selectOptionAndCleanUp,\n            //@ts-ignore\n            setHighlightedIndex,\n          }\n        ) => {\n          return anchorElementRef.current ? (\n            <Popover open={true}>\n              <PopoverPortal container={anchorElementRef.current}>\n                <div className=\"-translate-y-full transform\">\n                  <PopoverTrigger />\n                  <PopoverContent\n                    className=\"w-[200px] p-0\"\n                    align=\"start\"\n                    side=\"right\"\n                  >\n                    <Command>\n                      <CommandList>\n                        <CommandGroup>\n                          {/* @ts-ignore */}\n                          {options.map((option, i: number) => (\n                            <CommandItem\n                              key={option.key}\n                              value={option.title}\n                              onSelect={() => {\n                                selectOptionAndCleanUp(option);\n                              }}\n                              className=\"flex items-center gap-2\"\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","'use client'\n\nimport { INSERT_EMBED_COMMAND } from '@lexical/react/LexicalAutoEmbedPlugin'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { EmbedConfigs } from '@/components/editor/plugins/embeds/auto-embed-plugin'\n\nexport function InsertEmbeds() {\n  const { activeEditor } = useToolbarContext()\n  return EmbedConfigs.map((embedConfig) => (\n    <SelectItem\n      key={embedConfig.type}\n      value={embedConfig.type}\n      onPointerUp={() => {\n        activeEditor.dispatchCommand(INSERT_EMBED_COMMAND, embedConfig.type)\n      }}\n\n    >\n      <div className=\"flex flex-nowrap items-center gap-1\">\n        {embedConfig.icon}\n        <span>{embedConfig.contentName}</span>\n      </div>\n    </SelectItem>\n  ))\n}\n","import { INSERT_HORIZONTAL_RULE_COMMAND } from '@lexical/react/LexicalHorizontalRuleNode'\nimport { ScissorsIcon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \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\n    >\n      <div className=\"flex flex-nowrap items-center gap-1\">\n        <ScissorsIcon className=\"size-4\" />\n        <span>Horizontal Rule</span>\n      </div>\n    </SelectItem>\n  )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({\n  className,\n  ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n  return (\n    <LabelPrimitive.Root\n      data-slot=\"label\"\n      className={cn(\n        \"flex items-center gap-2 text-sm leading-none font-medium select-none text-content-system-global-primary group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Label }\n","import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Tabs({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n  return (\n    <TabsPrimitive.Root\n      data-slot=\"tabs\"\n      className={cn(\"flex flex-col gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TabsList({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n  return (\n    <TabsPrimitive.List\n      data-slot=\"tabs-list\"\n      className={cn(\n        \"bg-background-presentation-form-base text-content-system-global-secondary inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TabsTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n  return (\n    <TabsPrimitive.Trigger\n      data-slot=\"tabs-trigger\"\n      className={cn(\n        \"data-[state=active]:bg-background-system-body-primary data-[state=active]:text-content-system-global-primary focus-visible:border-border-presentation-state-focus focus-visible:ring-border-presentation-state-focus/50 focus-visible:outline-border-presentation-state-focus text-content-system-global-primary inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TabsContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n  return (\n    <TabsPrimitive.Content\n      data-slot=\"tabs-content\"\n      className={cn(\"flex-1 outline-none\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\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, JSX } from \"react\";\n\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  DRAGOVER_COMMAND,\n  DRAGSTART_COMMAND,\n  DROP_COMMAND,\n  LexicalCommand,\n  LexicalEditor,\n  createCommand,\n} from \"lexical\";\n\nimport { Button } from \"../../../../components/Button\"\nimport { DialogFooter } from \"../../../../components/Dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\n\nimport {\n  $createImageNode,\n  $isImageNode,\n  ImageNode,\n  ImagePayload,\n} from \"@/components/editor/nodes/image-node\";\nimport { CAN_USE_DOM } from \"@/components/editor/shared/can-use-dom\";\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=\"grid gap-4 py-4\">\n      <div className=\"grid gap-2\">\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=\"grid gap-2\">\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 !== null) {\n      reader.readAsDataURL(files[0]);\n    }\n  };\n\n  return (\n    <div className=\"grid gap-4 py-4\">\n      <div className=\"grid gap-2\">\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=\"grid gap-2\">\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      <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    </div>\n  );\n}\n\nexport function InsertImageDialog({\n  activeEditor,\n  onClose,\n}: {\n  activeEditor: LexicalEditor;\n  onClose: () => void;\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    activeEditor.dispatchCommand(INSERT_IMAGE_COMMAND, payload);\n    onClose();\n  };\n\n  return (\n    <Tabs defaultValue=\"url\">\n      <TabsList className=\"w-full\">\n        <TabsTrigger value=\"url\" className=\"w-full\">\n          URL\n        </TabsTrigger>\n        <TabsTrigger value=\"file\" className=\"w-full\">\n          File\n        </TabsTrigger>\n      </TabsList>\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          editor.update(() => {\n            const imageNode = $createImageNode(payload);\n            $insertNodes([imageNode]);\n            if ($isRootOrShadowRoot(imageNode.getParentOrThrow())) {\n              $wrapNodeInElement(imageNode, $createParagraphNode).selectEnd();\n            }\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    editor.update(() => {\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    });\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 { ImageIcon } from \"lucide-react\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { InsertImageDialog } from \"@/components/editor/plugins/images-plugin\";\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\n    >\n      <div className=\"flex flex-nowrap items-center gap-1\">\n        <ImageIcon className=\"size-4\" />\n        <span>Image</span>\n      </div>\n    </SelectItem>\n  );\n}\n","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Checkbox({\n  className,\n  ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n  return (\n    <CheckboxPrimitive.Root\n      data-slot=\"checkbox\"\n      className={cn(\n        \"peer border-border-system-global-secondary bg-background-system-body-primary data-[state=checked]:bg-background-presentation-action-primary data-[state=checked]:text-content-presentation-action-light-primary data-[state=checked]:border-border-presentation-action-primary focus-visible:border-border-presentation-state-focus focus-visible:ring-border-presentation-state-focus/50 aria-invalid:ring-border-presentation-state-negative/20 aria-invalid:border-border-presentation-state-negative size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        data-slot=\"checkbox-indicator\"\n        className=\"flex items-center justify-center text-current transition-none\"\n      >\n        <CheckIcon className=\"size-3.5\" />\n      </CheckboxPrimitive.Indicator>\n    </CheckboxPrimitive.Root>\n  )\n}\n\nexport { Checkbox }\n","import { useEffect, useRef, useState, JSX } from \"react\";\n\n// import '../nodes/inline-image-node.css';\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  DRAGOVER_COMMAND,\n  DRAGSTART_COMMAND,\n  DROP_COMMAND,\n  LexicalCommand,\n  LexicalEditor,\n  createCommand,\n} from \"lexical\";\n\nimport { Button } from \"../../../../components/Button\"\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"../../../../components/Select\"\n\nimport type { Position } from \"@/components/editor/nodes/inline-image-node\";\nimport {\n  $createInlineImageNode,\n  $isInlineImageNode,\n  InlineImageNode,\n  InlineImagePayload,\n} from \"@/components/editor/nodes/inline-image-node\";\nimport { CAN_USE_DOM } from \"@/components/editor/shared/can-use-dom\";\n\nexport type InsertInlineImagePayload = Readonly<InlineImagePayload>;\n\nconst getDOMSelection = (targetWindow: Window | null): Selection | null =>\n  CAN_USE_DOM ? (targetWindow || window).getSelection() : null;\n\nexport const INSERT_INLINE_IMAGE_COMMAND: LexicalCommand<InlineImagePayload> =\n  createCommand(\"INSERT_INLINE_IMAGE_COMMAND\");\n\nexport function InsertInlineImageDialog({\n  activeEditor,\n  onClose,\n}: {\n  activeEditor: LexicalEditor;\n  onClose: () => void;\n}): JSX.Element {\n  const hasModifier = useRef(false);\n\n  const [src, setSrc] = useState(\"\");\n  const [altText, setAltText] = useState(\"\");\n  const [showCaption, setShowCaption] = useState(false);\n  const [position, setPosition] = useState<Position>(\"left\");\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 !== null) {\n      reader.readAsDataURL(files[0]);\n    }\n  };\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 handleOnClick = () => {\n    const payload = { altText, position, showCaption, src };\n    activeEditor.dispatchCommand(INSERT_INLINE_IMAGE_COMMAND, payload);\n    onClose();\n  };\n\n  return (\n    <div className=\"grid gap-4 py-4\">\n      <div className=\"grid gap-2\">\n        <Label htmlFor=\"image\">Image Upload</Label>\n        <Input\n          id=\"image\"\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=\"grid gap-2\">\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      <div className=\"grid gap-2\">\n        <Label htmlFor=\"position\">Position</Label>\n        <Select\n          defaultValue=\"left\"\n          onValueChange={(value) => setPosition(value as Position)}\n        >\n          <SelectTrigger id=\"position\">\n            <SelectValue placeholder=\"Select position\" />\n          </SelectTrigger>\n          <SelectContent>\n            <SelectItem value=\"left\">Left</SelectItem>\n            <SelectItem value=\"right\">Right</SelectItem>\n            <SelectItem value=\"full\">Full Width</SelectItem>\n          </SelectContent>\n        </Select>\n      </div>\n      <div className=\"flex items-center space-x-2\">\n        <Checkbox\n          id=\"caption\"\n          checked={showCaption}\n          onCheckedChange={(checked) => setShowCaption(checked as boolean)}\n        />\n        <Label htmlFor=\"caption\">Show Caption</Label>\n      </div>\n      <Button\n        data-test-id=\"image-modal-file-upload-btn\"\n        disabled={isDisabled}\n        onClick={() => handleOnClick()}\n      >\n        Confirm\n      </Button>\n    </div>\n  );\n}\n\nexport function InlineImagePlugin(): JSX.Element | null {\n  const [editor] = useLexicalComposerContext();\n\n  useEffect(() => {\n    if (!editor.hasNodes([InlineImageNode])) {\n      throw new Error(\"ImagesPlugin: ImageNode not registered on editor\");\n    }\n\n    return mergeRegister(\n      editor.registerCommand<InsertInlineImagePayload>(\n        INSERT_INLINE_IMAGE_COMMAND,\n        (payload) => {\n          editor.update(() => {\n            const imageNode = $createInlineImageNode(payload);\n            $insertNodes([imageNode]);\n            if ($isRootOrShadowRoot(imageNode.getParentOrThrow())) {\n              $wrapNodeInElement(imageNode, $createParagraphNode).selectEnd();\n            }\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  }, [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        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    editor.update(() => {\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    });\n    editor.dispatchCommand(INSERT_INLINE_IMAGE_COMMAND, data);\n  }\n  return true;\n}\n\nfunction $getImageNodeInSelection(): InlineImageNode | 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 $isInlineImageNode(node) ? node : null;\n}\n\nfunction getDragImageData(event: DragEvent): null | InsertInlineImagePayload {\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","import { FileImageIcon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { InsertInlineImageDialog } from '@/components/editor/plugins/inline-image-plugin'\n\nexport function InsertInlineImage() {\n  const { activeEditor, showModal } = useToolbarContext()\n\n  return (\n    <SelectItem\n      value=\"inline-image\"\n      onPointerUp={() =>\n        showModal('Insert Inline Image', (onClose) => (\n          <InsertInlineImageDialog\n            activeEditor={activeEditor}\n            onClose={onClose}\n          />\n        ))\n      }\n\n    >\n      <div className=\"flex flex-nowrap items-center gap-1\">\n        <FileImageIcon className=\"size-4\" />\n        <span>Inline Image</span>\n      </div>\n    </SelectItem>\n  )\n}\n","import { useEffect, JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $insertNodeToNearestRoot, mergeRegister } from '@lexical/utils'\nimport {\n  $getSelection,\n  $isRangeSelection,\n  COMMAND_PRIORITY_EDITOR,\n  LexicalCommand,\n  createCommand,\n} from 'lexical'\n\nimport { $createPageBreakNode, PageBreakNode } from '@/components/editor/nodes/page-break-node'\n\nexport const INSERT_PAGE_BREAK: LexicalCommand<undefined> = createCommand()\n\nexport function PageBreakPlugin(): JSX.Element | null {\n  const [editor] = useLexicalComposerContext()\n\n  useEffect(() => {\n    if (!editor.hasNodes([PageBreakNode])) {\n      throw new Error(\n        'PageBreakPlugin: PageBreakNode is not registered on editor'\n      )\n    }\n\n    return mergeRegister(\n      editor.registerCommand(\n        INSERT_PAGE_BREAK,\n        () => {\n          const selection = $getSelection()\n\n          if (!$isRangeSelection(selection)) {\n            return false\n          }\n\n          const focusNode = selection.focus.getNode()\n          if (focusNode !== null) {\n            const pgBreak = $createPageBreakNode()\n            $insertNodeToNearestRoot(pgBreak)\n          }\n\n          return true\n        },\n        COMMAND_PRIORITY_EDITOR\n      )\n    )\n  }, [editor])\n\n  return null\n}\n","'use client'\n\nimport { SquareSplitVerticalIcon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { INSERT_PAGE_BREAK } from '@/components/editor/plugins/page-break-plugin'\n\nexport function InsertPageBreak() {\n  const { activeEditor } = useToolbarContext()\n\n  return (\n    <SelectItem\n      value=\"page-break\"\n      onPointerUp={() =>\n        activeEditor.dispatchCommand(INSERT_PAGE_BREAK, undefined)\n      }\n\n    >\n      <div className=\"flex flex-nowrap items-center gap-1\">\n        <SquareSplitVerticalIcon className=\"size-4\" />\n        <span>Page Break</span>\n      </div>\n    </SelectItem>\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, useState, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $wrapNodeInElement } from \"@lexical/utils\";\nimport {\n  $createParagraphNode,\n  $insertNodes,\n  $isRootOrShadowRoot,\n  COMMAND_PRIORITY_EDITOR,\n  LexicalCommand,\n  LexicalEditor,\n  createCommand,\n} from \"lexical\";\n\nimport { Button } from \"../../../../components/Button\";\nimport { DialogFooter } from \"../../../../components/Dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\n\nimport {\n  $createPollNode,\n  PollNode,\n  createPollOption,\n} from \"@/components/editor/nodes/poll-node\";\n\nexport const INSERT_POLL_COMMAND: LexicalCommand<string> = createCommand(\n  \"INSERT_POLL_COMMAND\"\n);\n\nexport function InsertPollDialog({\n  activeEditor,\n  onClose,\n}: {\n  activeEditor: LexicalEditor;\n  onClose: () => void;\n}): JSX.Element {\n  const [question, setQuestion] = useState(\"\");\n\n  const onClick = () => {\n    activeEditor.dispatchCommand(INSERT_POLL_COMMAND, question);\n    onClose();\n  };\n\n  return (\n    <>\n      <div>\n        <Label>Question</Label>\n        <Input onChange={(e) => setQuestion(e.target.value)} value={question} />\n      </div>\n      <DialogFooter>\n        <Button disabled={question.trim() === \"\"} onClick={onClick}>\n          Confirm\n        </Button>\n      </DialogFooter>\n    </>\n  );\n}\n\nexport function PollPlugin(): JSX.Element | null {\n  const [editor] = useLexicalComposerContext();\n  useEffect(() => {\n    if (!editor.hasNodes([PollNode])) {\n      throw new Error(\"PollPlugin: PollNode not registered on editor\");\n    }\n\n    return editor.registerCommand<string>(\n      INSERT_POLL_COMMAND,\n      (payload) => {\n        const pollNode = $createPollNode(payload, [\n          createPollOption(),\n          createPollOption(),\n        ]);\n        $insertNodes([pollNode]);\n        if ($isRootOrShadowRoot(pollNode.getParentOrThrow())) {\n          $wrapNodeInElement(pollNode, $createParagraphNode).selectEnd();\n        }\n\n        return true;\n      },\n      COMMAND_PRIORITY_EDITOR\n    );\n  }, [editor]);\n  return null;\n}\n","import { ListChecksIcon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { InsertPollDialog } from '@/components/editor/plugins/poll-plugin'\n\nexport function InsertPoll() {\n  const { activeEditor, showModal } = useToolbarContext()\n\n  return (\n    <SelectItem\n      value=\"poll\"\n      onPointerUp={() =>\n        showModal('Insert Poll', (onClose) => (\n          <InsertPollDialog activeEditor={activeEditor} onClose={onClose} />\n        ))\n      }\n\n    >\n      <div className=\"flex flex-nowrap items-center gap-1\">\n        <ListChecksIcon className=\"size-4\" />\n        <span>Poll</span>\n      </div>\n    </SelectItem>\n  )\n}\n","import {\n  createContext,\n  useContext,\n  useEffect,\n  useMemo,\n  useState,\n  JSX,\n} from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n  $createTableNodeWithDimensions,\n  INSERT_TABLE_COMMAND,\n  TableNode,\n} from \"@lexical/table\";\nimport {\n  $insertNodes,\n  COMMAND_PRIORITY_EDITOR,\n  EditorThemeClasses,\n  Klass,\n  LexicalCommand,\n  LexicalEditor,\n  LexicalNode,\n  createCommand,\n} from \"lexical\";\n\nimport { Button } from \"../../../../components/Button\";\nimport { DialogFooter } from \"../../../../components/Dialog\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\n\nimport { invariant } from \"@/components/editor/shared/invariant\";\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\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 [isDisabled, setIsDisabled] = useState(true);\n\n  useEffect(() => {\n    const row = Number(rows);\n    const column = Number(columns);\n    if (row && row > 0 && row <= 500 && column && column > 0 && column <= 50) {\n      setIsDisabled(false);\n    } else {\n      setIsDisabled(true);\n    }\n  }, [rows, columns]);\n\n  const onClick = () => {\n    activeEditor.dispatchCommand(INSERT_TABLE_COMMAND, {\n      columns,\n      rows,\n    });\n\n    onClose();\n  };\n\n  return (\n    <>\n      <div className=\"grid gap-4\">\n        <div className=\"grid gap-2\">\n          <Label htmlFor=\"rows\">Number of rows</Label>\n          <Input\n            id=\"rows\"\n            placeholder={\"# of rows (1-500)\"}\n            onChange={(e) => setRows(e.target.value)}\n            value={rows}\n            data-test-id=\"table-modal-rows\"\n            type=\"number\"\n          />\n        </div>\n        <div className=\"grid gap-2\">\n          <Label htmlFor=\"columns\">Number of columns</Label>\n          <Input\n            id=\"columns\"\n            placeholder={\"# of columns (1-50)\"}\n            onChange={(e) => setColumns(e.target.value)}\n            value={columns}\n            data-test-id=\"table-modal-columns\"\n            type=\"number\"\n          />\n        </div>\n      </div>\n      <DialogFooter data-test-id=\"table-model-confirm-insert\">\n        <Button disabled={isDisabled} onClick={onClick}>\n          Confirm\n        </Button>\n      </DialogFooter>\n    </>\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","'use client'\n\nimport { TableIcon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { SelectItem } from \"../../../../../../components/Select\" \n\nimport { InsertTableDialog } from '@/components/editor/plugins/table-plugin'\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\n    >\n      <div className=\"flex flex-nowrap items-center gap-1\">\n        <TableIcon className=\"size-4\" />\n        <span>Table</span>\n      </div>\n    </SelectItem>\n  )\n}\n","import { useCallback } from \"react\";\n\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\";\n\nimport { Button } from \"../../../../../components/Button\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\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      size={\"M\"}\n      variant={\"BlueContStyle\"}\n      className=\"h-8 w-8\"\n      onClick={clearFormatting}\n    >\n      <i className=\"ri-format-clear\"></i>\n    </Button>\n  );\n}\n","'use client'\n\nimport { useCallback, useState } from 'react'\n\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 {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n} from '../../../../../components/Select'\n\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { useUpdateToolbarHandler } from '@/components/editor/editor-hooks/use-update-toolbar'\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      <SelectTrigger className=\"h-8 [&_span]:w-fit [&_span]:text-content-presentation-action-light-primary w-fit justify-start gap-1 [&_p]:flex [&_p]:items-center [&_p]:gap-2 [&_p]:h-full [&_p]:m-0 [&_p]:w-fit\">\n        <span className='flex h-full text-center shrink-0 items-center w-full'>{getLanguageFriendlyName(codeLanguage)}</span>\n      </SelectTrigger>\n      <SelectContent>\n        {CODE_LANGUAGE_OPTIONS.map(([value, label]) => (\n          <SelectItem\n            key={value}\n            value={value}\n            onPointerUp={() => {\n              onCodeLanguageSelect(value)\n            }}\n          >\n            {label}\n          </SelectItem>\n        ))}\n      </SelectContent>\n    </Select>\n  )\n}\n","import * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n  \"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-background-presentation-action-hover hover:text-content-system-global-primary disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-background-presentation-action-selected data-[state=on]:text-content-system-global-primary [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-border-presentation-state-focus focus-visible:ring-border-presentation-state-focus/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-border-presentation-state-negative/20 aria-invalid:border-border-presentation-state-negative whitespace-nowrap\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-transparent\",\n        outline:\n          \"border border-border-system-global-secondary bg-transparent shadow-xs hover:bg-background-presentation-action-hover hover:text-content-system-global-primary\",\n        BlueContStyle: [\n          \"text-content-presentation-action-light-primary\",\n          \"border-transparent bg-transparent\",\n          \"hover:bg-background-presentation-action-contstyle-hover\",\n          \"hover:text-content-presentation-action-information-hover\",\n          \"focus:lg:border focus:lg:border-border-presentation-state-focus\",\n          \"focus:lg:bg-background-presentation-action-borderstyle\",\n          \"active:bg-background-presentation-action-contstyle-hover active:text-content-presentation-action-information-hover\",\n          \"data-[state=on]:bg-background-presentation-action-contstyle-hover data-[state=on]:text-content-presentation-action-information-hover\",\n        ],\n      },\n      size: {\n        default: \"h-9 px-2 min-w-9\",\n        sm: \"h-8 px-1.5 min-w-8\",\n        lg: \"h-10 px-2.5 min-w-10\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Toggle({\n  className,\n  variant,\n  size,\n  ...props\n}: React.ComponentProps<typeof TogglePrimitive.Root> &\n  VariantProps<typeof toggleVariants>) {\n  return (\n    <TogglePrimitive.Root\n      data-slot=\"toggle\"\n      className={cn(toggleVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Toggle, toggleVariants }\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\";\nimport { type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\nimport { toggleVariants } from \"@/components/ui/toggle\";\n\nconst ToggleGroupContext = React.createContext<\n  VariantProps<typeof toggleVariants>\n>({\n  size: \"default\",\n  variant: \"default\",\n});\n\nconst ToggleGroup = React.forwardRef<\n  React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> &\n    VariantProps<typeof toggleVariants>\n>(({ className, variant, size, children, ...props }, ref) => (\n  <ToggleGroupPrimitive.Root\n    ref={ref}\n    className={cn(\"flex items-center justify-center gap-1\", className)}\n    {...props}\n  >\n    <ToggleGroupContext.Provider value={{ variant, size }}>\n      {children}\n    </ToggleGroupContext.Provider>\n  </ToggleGroupPrimitive.Root>\n));\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;\n\nconst ToggleGroupItem = React.forwardRef<\n  React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> &\n    VariantProps<typeof toggleVariants>\n>(({ className, children, variant, size, ...props }, ref) => {\n  const context = React.useContext(ToggleGroupContext);\n\n  return (\n    <ToggleGroupPrimitive.Item\n      ref={ref}\n      className={cn(\n        toggleVariants({\n          variant: context.variant || variant,\n          size: context.size || size,\n        }),\n        className\n      )}\n      {...props}\n    >\n      {children}\n    </ToggleGroupPrimitive.Item>\n  );\n});\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;\n\nexport { ToggleGroup, ToggleGroupItem };\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","import { useState } from \"react\";\n\nimport { $isLinkNode } from \"@lexical/link\";\nimport { $findMatchingParent } from \"@lexical/utils\";\nimport {\n  $isElementNode,\n  $isRangeSelection,\n  BaseSelection,\n  ElementFormatType,\n  FORMAT_ELEMENT_COMMAND,\n  INDENT_CONTENT_COMMAND,\n  OUTDENT_CONTENT_COMMAND,\n} from \"lexical\";\n\nimport { Separator } from \"@/components/ui/separator\";\nimport { ToggleGroup, ToggleGroupItem } from \"@/components/ui/toggle-group\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\nimport { useUpdateToolbarHandler } from \"@/components/editor/editor-hooks/use-update-toolbar\";\nimport { getSelectedNode } from \"@/components/editor/utils/get-selected-node\";\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: <i className=\"ri-align-left\"></i>,\n    iconRTL: \"left-align\",\n    name: \"Left Align\",\n  },\n  center: {\n    icon: <i className=\"ri-align-center\"></i>,\n    iconRTL: \"center-align\",\n    name: \"Center Align\",\n  },\n  right: {\n    icon: <i className=\"ri-align-right\"></i>,\n    iconRTL: \"right-align\",\n    name: \"Right Align\",\n  },\n  justify: {\n    icon: <i className=\"ri-align-justify\"></i>,\n    iconRTL: \"justify-align\",\n    name: \"Justify Align\",\n  },\n} as const;\n\nexport function ElementFormatToolbarPlugin() {\n  const { activeEditor } = useToolbarContext();\n  const [elementFormat, setElementFormat] = useState<ElementFormatType>(\"left\");\n\n  const $updateToolbar = (selection: BaseSelection) => {\n    if ($isRangeSelection(selection)) {\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.dispatchCommand(INDENT_CONTENT_COMMAND, undefined);\n    } else if (value === \"outdent\") {\n      activeEditor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined);\n    } else {\n      activeEditor.dispatchCommand(\n        FORMAT_ELEMENT_COMMAND,\n        value as ElementFormatType\n      );\n    }\n  };\n\n  return (\n    <ToggleGroup\n      type=\"single\"\n      value={elementFormat}\n      defaultValue={elementFormat}\n      onValueChange={handleValueChange}\n      className=\"flex gap-1\"\n      variant=\"BlueContStyle\"\n    >\n      {/* Alignment toggles */}\n      {Object.entries(ELEMENT_FORMAT_OPTIONS).map(([value, option]) => (\n        <ToggleGroupItem\n          key={value}\n          value={value}\n          variant=\"BlueContStyle\"\n          aria-label={option.name}\n          size=\"sm\"\n          className=\"h-8 w-8 p-0  \"\n        >\n          {option.icon}\n        </ToggleGroupItem>\n      ))}\n\n<Separator orientation=\"vertical\" className=\"h-8 bg-border-presentation-global-primary\" />     \n      {/* Indentation toggles */}\n      <ToggleGroupItem\n        value=\"outdent\"\n        aria-label=\"Outdent\"\n        variant=\"BlueContStyle\"\n        size=\"sm\"\n        className=\"h-8 w-8 \"\n      >\n        <i className=\"ri-indent-decrease\"></i>\n      </ToggleGroupItem>\n\n      <ToggleGroupItem\n        value=\"indent\"\n        variant=\"BlueContStyle\"\n        aria-label=\"Indent\"\n        size=\"sm\"\n        className=\"h-8 w-8 \"\n      >\n        <i className=\"ri-indent-increase\"></i>\n      </ToggleGroupItem>\n    </ToggleGroup>\n  );\n}\n","import { HexColorPicker } from \"react-colorful\";\n\nimport { Input } from \"@/components/ui/input\";\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/components/ui/popover\";\n\nimport { Button } from \"../../../../components/Button\";\n\ntype Props = {\n  disabled?: boolean;\n  icon?: React.ReactNode;\n  label?: string;\n  title?: string;\n  stopCloseOnClickSelf?: boolean;\n  color: string;\n  onChange?: (color: string, skipHistoryStack: boolean) => void;\n};\n\nexport default function ColorPicker({\n  disabled = false,\n  stopCloseOnClickSelf = true,\n  color,\n  onChange,\n  icon,\n  label,\n  ...rest\n}: Props) {\n  return (\n    <Popover modal={true}>\n      <PopoverTrigger asChild disabled={disabled}>\n        <Button\n          size={\"M\"}\n          variant={\"BlueContStyle\"}\n          className=\"h-8 w-8\"\n          {...rest}\n        >\n          <span>{icon}</span>\n          {/* <ChevronDownIcon className='size-4'/> */}\n        </Button>\n      </PopoverTrigger>\n      <PopoverContent className=\"w-[200px] p-0\">\n        <HexColorPicker\n          color={color}\n          onChange={(color) => onChange?.(color, false)}\n        />\n        <Input\n          maxLength={7}\n          onChange={(e) => {\n            e.stopPropagation();\n            onChange?.(e?.currentTarget?.value, false);\n          }}\n          value={color}\n        />\n      </PopoverContent>\n    </Popover>\n  );\n}\n","'use client'\n\nimport { useCallback, useState } from 'react'\n\nimport {\n  $getSelectionStyleValueForProperty,\n  $patchStyleText,\n} from '@lexical/selection'\nimport { $getSelection, $isRangeSelection, BaseSelection } from 'lexical'\nimport { PaintBucketIcon } from 'lucide-react'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { useUpdateToolbarHandler } from '@/components/editor/editor-hooks/use-update-toolbar'\nimport ColorPicker from '@/components/editor/editor-ui/colorpicker'\n\nexport function FontBackgroundToolbarPlugin() {\n  const { activeEditor } = useToolbarContext()\n\n  const [bgColor, setBgColor] = useState('var(--background-system-body-primary)')\n\n  const $updateToolbar = (selection: BaseSelection) => {\n    if ($isRangeSelection(selection)) {\n      setBgColor(\n        $getSelectionStyleValueForProperty(\n          selection,\n          'background-color',\n          'var(--background-system-body-primary)'\n        )\n      )\n    }\n  }\n\n  useUpdateToolbarHandler($updateToolbar)\n\n  const applyStyleText = useCallback(\n    (styles: Record<string, string>, skipHistoryStack?: boolean) => {\n      activeEditor.update(\n        () => {\n          const selection = $getSelection()\n          if (selection !== null) {\n            $patchStyleText(selection, styles)\n          }\n        },\n        skipHistoryStack ? { tag: 'historic' } : {}\n      )\n    },\n    [activeEditor]\n  )\n\n  const onBgColorSelect = useCallback(\n    (value: string, skipHistoryStack: boolean) => {\n      applyStyleText({ 'background-color': value }, skipHistoryStack)\n    },\n    [applyStyleText]\n  )\n\n  return (\n    <ColorPicker\n      icon={<PaintBucketIcon className=\"size-4\" />}\n      color={bgColor}\n      onChange={onBgColorSelect}\n      title=\"text background color\"\n    />\n  )\n}\n","import { useCallback, useState } from \"react\";\n\nimport {\n  $getSelectionStyleValueForProperty,\n  $patchStyleText,\n} from \"@lexical/selection\";\nimport { $getSelection, $isRangeSelection, BaseSelection } from \"lexical\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\nimport { useUpdateToolbarHandler } from \"@/components/editor/editor-hooks/use-update-toolbar\";\nimport ColorPicker from \"@/components/editor/editor-ui/colorpicker\";\n\nexport function FontColorToolbarPlugin() {\n  const { activeEditor } = useToolbarContext();\n\n  const [fontColor, setFontColor] = useState(\"var(--content-system-global-primary)\");\n\n  const $updateToolbar = (selection: BaseSelection) => {\n    if ($isRangeSelection(selection)) {\n      setFontColor(\n        $getSelectionStyleValueForProperty(selection, \"color\", \"var(--content-system-global-primary)\")\n      );\n    }\n  };\n\n  useUpdateToolbarHandler($updateToolbar);\n\n  const applyStyleText = useCallback(\n    (styles: Record<string, string>, skipHistoryStack?: boolean) => {\n      activeEditor.update(\n        () => {\n          const selection = $getSelection();\n          if (selection !== null) {\n            $patchStyleText(selection, styles);\n          }\n        },\n        skipHistoryStack ? { tag: \"historic\" } : {}\n      );\n    },\n    [activeEditor]\n  );\n\n  const onFontColorSelect = useCallback(\n    (value: string, skipHistoryStack: boolean) => {\n      applyStyleText({ color: value }, skipHistoryStack);\n    },\n    [applyStyleText]\n  );\n\n  return (\n    <ColorPicker\n      icon={<i className=\"ri-font-color\"></i>}\n      color={fontColor}\n      onChange={onFontColorSelect}\n      title=\"text color\"\n    />\n  );\n}\n","'use client'\n\nimport { useCallback, useState } from 'react'\n\nimport {\n  $getSelectionStyleValueForProperty,\n  $patchStyleText,\n} from '@lexical/selection'\nimport { $getSelection, $isRangeSelection, BaseSelection } from 'lexical'\nimport { TypeIcon } from 'lucide-react'\n\n  import {\n    Select,\n    SelectContent,\n    SelectItem,\n    SelectTrigger,\n  } from '../../../../../components/Select'\n\nimport { useToolbarContext } from '@/components/editor/context/toolbar-context'\nimport { useUpdateToolbarHandler } from '@/components/editor/editor-hooks/use-update-toolbar'\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      value={fontFamily}\n      onValueChange={(value) => {\n        setFontFamily(value)\n        handleClick(value)\n      }}\n      aria-label={buttonAriaLabel}\n    >\n      <SelectTrigger className=\"h-8 [&_span]:w-fit [&_span]:text-content-presentation-action-light-primary w-fit justify-start gap-1 [&_p]:flex [&_p]:items-center [&_p]:gap-2 [&_p]:h-full [&_p]:m-0 [&_p]:w-fit\">\n        <TypeIcon className=\"size-4\" />\n        <span className='flex h-full text-center shrink-0 items-center w-full'>{fontFamily}</span>\n      </SelectTrigger>\n      <SelectContent>\n        {FONT_FAMILY_OPTIONS.map((option) => (\n          <SelectItem key={option} value={option}>\n            {option}\n          </SelectItem>\n        ))}\n      </SelectContent>\n    </Select>\n  )\n}\n","import { useState } from \"react\";\n\nimport { $isTableSelection } from \"@lexical/table\";\nimport {\n  $isRangeSelection,\n  BaseSelection,\n  FORMAT_TEXT_COMMAND,\n  TextFormatType,\n} from \"lexical\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\nimport { useUpdateToolbarHandler } from \"@/components/editor/editor-hooks/use-update-toolbar\";\n\nimport { Button } from \"../../../../../components/Button\";\nconst iconClasses: Partial<Record<TextFormatType, string>> = {\n  bold: \"ri-bold\",\n  italic: \"ri-italic\",\n  underline: \"ri-underline\",\n  strikethrough: \"ri-strikethrough\",\n  code: \"ri-code-s-slash-line\",\n} as const;\n\nexport function FontFormatToolbarPlugin({\n  format,\n}: {\n  format: Omit<TextFormatType, \"highlight\" | \"subscript\" | \"superscript\">;\n}) {\n  const { activeEditor } = useToolbarContext();\n  // @ts-ignore\n  const [isSelected, setIsSelected] = useState<boolean>(false);\n\n  const $updateToolbar = (selection: BaseSelection) => {\n    if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n      // @ts-ignore\n      setIsSelected(selection.hasFormat(format as TextFormatType));\n    }\n  };\n\n  useUpdateToolbarHandler($updateToolbar);\n\n  const iconClass = iconClasses[format as TextFormatType];\n\n  return (\n    <Button\n      aria-label={`Button ${format}`}\n      variant={\"BlueContStyle\"}\n      size={\"M\"}\n      onClick={() => {\n        activeEditor.dispatchCommand(\n          FORMAT_TEXT_COMMAND,\n          format as TextFormatType\n        );\n      }}\n    >\n      <i className={`${iconClass} `}></i>\n    </Button>\n  );\n}\n","\"use client\";\n\nimport { useCallback, useState } from \"react\";\n\nimport {\n  $getSelectionStyleValueForProperty,\n  $patchStyleText,\n} from \"@lexical/selection\";\nimport { $getSelection, $isRangeSelection, BaseSelection } from \"lexical\";\n\nimport { Button } from \"../../../../../components/Button\";\nimport { Input } from \"@/components/ui/input\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\nimport { useUpdateToolbarHandler } from \"@/components/editor/editor-hooks/use-update-toolbar\";\n\nconst DEFAULT_FONT_SIZE = 16;\nconst MIN_FONT_SIZE = 1;\nconst MAX_FONT_SIZE = 72;\n\nexport function FontSizeToolbarPlugin() {\n  const style = \"font-size\";\n  const [fontSize, setFontSize] = useState(DEFAULT_FONT_SIZE);\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      setFontSize(parseInt(value) || DEFAULT_FONT_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  return (\n    <div className=\"flex items-center gap-1\">\n      <div className=\"flex items-center gap-1\">\n        <Button\n          variant={\"BlueContStyle\"}\n          size={\"M\"}\n          onClick={() => updateFontSize(fontSize - 1)}\n          disabled={fontSize <= MIN_FONT_SIZE}\n        >\n          <i className=\"ri-subtract-line\"></i>\n        </Button>\n        <Input\n          value={fontSize}\n          onChange={(e) =>\n            updateFontSize(parseInt(e.target.value) || DEFAULT_FONT_SIZE)\n          }\n          className=\"h-8 w-12 text-center\"\n          min={MIN_FONT_SIZE}\n          max={MAX_FONT_SIZE}\n        />\n        <Button\n          variant={\"BlueContStyle\"}\n          size={\"M\"}\n          onClick={() => updateFontSize(fontSize + 1)}\n          disabled={fontSize >= MAX_FONT_SIZE}\n        >\n          <i className=\"ri-add-fill\"></i>\n        </Button>\n      </div>\n    </div>\n  );\n}\n","import { useEffect, useState } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { 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\";\n\nimport { Button } from \"../../../../../components/Button\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\n\nconst IS_APPLE = true;\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    <div className=\"flex items-center gap-1\">\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={\"M\"}\n        className=\"h-8 w-8\"\n        variant={\"BlueContStyle\"}\n      >\n        <i className=\"ri-arrow-go-back-line\"></i>\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={\"M\"}\n        className=\"h-8 w-8\"\n        variant={\"BlueContStyle\"}\n      >\n        <i className=\"ri-arrow-go-forward-line\"></i>\n      </Button>\n    </div>\n  );\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    // eslint-disable-next-line no-script-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  // TODO Fix UI for link insertion; it should never default to an invalid URL such as https://.\n  // Maybe show a dialog where they user can type the URL before inserting it.\n  return url === 'https://' || urlRegExp.test(url)\n}\n","\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\n\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport {\n  $isRangeSelection,\n  BaseSelection,\n  COMMAND_PRIORITY_NORMAL,\n} from \"lexical\";\nimport { KEY_MODIFIER_COMMAND } from \"lexical\";\n\nimport { Button } from \"../../../../../components/Button\";\nimport { useFloatingLinkContext } from \"@/components/editor/context/floating-link-context\";\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\nimport { useUpdateToolbarHandler } from \"@/components/editor/editor-hooks/use-update-toolbar\";\nimport { getSelectedNode } from \"@/components/editor/utils/get-selected-node\";\nimport { sanitizeUrl } from \"@/components/editor/utils/url\";\n\nexport function LinkToolbarPlugin() {\n  const { activeEditor } = useToolbarContext();\n  const { setIsLinkEditMode } = useFloatingLinkContext();\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(\n        TOGGLE_LINK_COMMAND,\n        sanitizeUrl(\"https://\")\n      );\n    } else {\n      setIsLinkEditMode(false);\n      activeEditor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n    }\n  }, [activeEditor, isLink, setIsLinkEditMode]);\n\n  return (\n    <Button\n      size={\"M\"}\n      variant={\"BlueContStyle\"}\n      aria-label=\"Button link\"\n      onClick={insertLink}\n    >\n      <i className=\"ri-link\"></i>\n    </Button>\n  );\n}\n","import { useState } from \"react\";\n\nimport { $isTableSelection } from \"@lexical/table\";\nimport { $isRangeSelection, BaseSelection, FORMAT_TEXT_COMMAND } from \"lexical\";\n\nimport { ToggleGroup, ToggleGroupItem } from \"@/components/ui/toggle-group\";\n\nimport { useToolbarContext } from \"@/components/editor/context/toolbar-context\";\nimport { useUpdateToolbarHandler } from \"@/components/editor/editor-hooks/use-update-toolbar\";\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      setIsSubscript(selection.hasFormat(\"subscript\"));\n      setIsSuperscript(selection.hasFormat(\"superscript\"));\n    }\n  };\n\n  useUpdateToolbarHandler($updateToolbar);\n\n  return (\n    <ToggleGroup\n      type=\"single\"\n      variant=\"BlueContStyle\"\n      defaultValue={\n        isSubscript ? \"subscript\" : isSuperscript ? \"superscript\" : \"\"\n      }\n    >\n      <ToggleGroupItem\n        value=\"subscript\"\n        variant=\"BlueContStyle\"\n        aria-label=\"Toggle subscript\"\n        onClick={() => {\n          activeEditor.dispatchCommand(FORMAT_TEXT_COMMAND, \"subscript\");\n        }}\n        size=\"sm\"\n        className=\"h-8 w-8\"\n      >\n        <i className=\"ri-subscript\"></i>\n      </ToggleGroupItem>\n      <ToggleGroupItem\n        value=\"superscript\"\n        variant=\"BlueContStyle\"\n        aria-label=\"Toggle superscript\"\n        onClick={() => {\n          activeEditor.dispatchCommand(FORMAT_TEXT_COMMAND, \"superscript\");\n        }}\n        size=\"sm\"\n        className=\"h-8 w-8\"\n      >\n        <i className=\"ri-superscript\"></i>\n      </ToggleGroupItem>\n    </ToggleGroup>\n  );\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 */\n\nimport{AutoLinkNode as t,$isAutoLinkNode as e,$isLinkNode as n,TOGGLE_LINK_COMMAND as r,$createAutoLinkNode as l}from\"@lexical/link\";import{useLexicalComposerContext as i}from\"@lexical/react/LexicalComposerContext\";import{mergeRegister as o}from\"@lexical/utils\";import{TextNode as s,$getSelection as u,$isRangeSelection as g,COMMAND_PRIORITY_LOW as c,$isTextNode as a,$isElementNode as f,$isLineBreakNode as x,$createTextNode as h,$isNodeSelection as p}from\"lexical\";import{useEffect as d}from\"react\";function m(t,e=(t=>t)){return n=>{const r=t.exec(n);return null===r?null:{index:r.index,length:r[0].length,text:r[0],url:e(r[0])}}}function T(t,e){for(let n=0;n<e.length;n++){const r=e[n](t);if(r)return r}return null}const C=/[.,;\\s]/;function S(t){return C.test(t)}function b(t){return S(t[t.length-1])}function U(t){return S(t[0])}function v(t){let e=t.getPreviousSibling();return f(e)&&(e=e.getLastDescendant()),null===e||x(e)||a(e)&&b(e.getTextContent())}function L(t){let e=t.getNextSibling();return f(e)&&(e=e.getFirstDescendant()),null===e||x(e)||a(e)&&U(e.getTextContent())}function R(t,e,n,r){if(!(t>0?S(n[t-1]):v(r[0])))return!1;return e<n.length?S(n[e]):L(r[r.length-1])}function k(t,e,n){const r=[],l=[],i=[];let o=0,s=0;const u=[...t];for(;u.length>0;){const t=u[0],g=t.getTextContent().length,c=s;s+g<=e?(r.push(t),o+=g):c>=n?i.push(t):l.push(t),s+=g,u.shift()}return[o,r,l,i]}function D(t,e,n,r){const i=l(r.url,r.attributes);if(1===t.length){let l,o=t[0];0===e?[l,o]=o.splitText(n):[,l,o]=o.splitText(e,n);const s=h(r.text);return s.setFormat(l.getFormat()),s.setDetail(l.getDetail()),s.setStyle(l.getStyle()),i.append(s),l.replace(i),o}if(t.length>1){const r=t[0];let l,o=r.getTextContent().length;0===e?l=r:[,l]=r.splitText(e);const s=[];let c;for(let e=1;e<t.length;e++){const r=t[e],l=r.getTextContent().length,i=o;if(i<n)if(o+l<=n)s.push(r);else{const[t,e]=r.splitText(n-i);s.push(t),c=e}o+=l}const f=u(),x=f?f.getNodes().find(a):void 0,d=h(l.getTextContent());return d.setFormat(l.getFormat()),d.setDetail(l.getDetail()),d.setStyle(l.getStyle()),i.append(d,...s),x&&x===l&&(g(f)?d.select(f.anchor.offset,f.focus.offset):p(f)&&d.select(0,d.getTextContent().length)),l.replace(i),c}}function N(t,e,n){const r=t.getChildren(),l=r.length;for(let e=0;e<l;e++){const l=r[e];if(!a(l)||!l.isSimpleText())return I(t),void n(null,t.getURL())}const i=t.getTextContent(),o=T(i,e);if(null===o||o.text!==i)return I(t),void n(null,t.getURL());if(!v(t)||!L(t))return I(t),void n(null,t.getURL());const s=t.getURL();if(s!==o.url&&(t.setURL(o.url),n(o.url,s)),o.attributes){const e=t.getRel();e!==o.attributes.rel&&(t.setRel(o.attributes.rel||null),n(o.attributes.rel||null,e));const r=t.getTarget();r!==o.attributes.target&&(t.setTarget(o.attributes.target||null),n(o.attributes.target||null,r))}}function I(t){const e=t.getChildren();for(let n=e.length-1;n>=0;n--)t.insertAfter(e[n]);return t.remove(),e.map((t=>t.getLatest()))}function P(l,i,f){d((()=>{l.hasNodes([t])||function(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),r=new URLSearchParams;r.append(\"code\",t);for(const t of e)r.append(\"v\",t);throw n.search=r.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}(77);const x=(t,e)=>{f&&f(t,e)};return o(l.registerNodeTransform(s,(t=>{const r=t.getParentOrThrow(),l=t.getPreviousSibling();if(e(r)&&!r.getIsUnlinked())N(r,i,x);else if(!n(r)){if(t.isSimpleText()&&(U(t.getTextContent())||!e(l))){const e=function(t){const e=[t];let n=t.getNextSibling();for(;null!==n&&a(n)&&n.isSimpleText()&&(e.push(n),!/[\\s]/.test(n.getTextContent()));)n=n.getNextSibling();return e}(t);!function(t,e,n){let r=[...t];const l=r.map((t=>t.getTextContent())).join(\"\");let i,o=l,s=0;for(;(i=T(o,e))&&null!==i;){const t=i.index,e=t+i.length;if(R(s+t,s+e,l,r)){const[l,,o,u]=k(r,s+t,s+e),g=D(o,s+t-l,s+e-l,i);r=g?[g,...u]:u,n(i.url,null),s=0}else s+=e;o=o.substring(e)}}(e,i,x)}!function(t,n,r){const l=t.getPreviousSibling(),i=t.getNextSibling(),o=t.getTextContent();var s;!e(l)||l.getIsUnlinked()||U(o)&&(s=o,!(l.isEmailURI()?/^\\.[a-zA-Z]{2,}/.test(s):/^\\.[a-zA-Z0-9]{1,}/.test(s)))||(l.append(t),N(l,n,r),r(null,l.getURL())),!e(i)||i.getIsUnlinked()||b(o)||(I(i),N(i,n,r),r(null,i.getURL()))}(t,i,x)}})),l.registerCommand(r,(t=>{const n=u();if(null!==t||!g(n))return!1;return n.extract().forEach((t=>{const n=t.getParent();if(e(n))return n.setIsUnlinked(!n.getIsUnlinked()),n.markDirty(),!0})),!1}),c))}),[l,i,f])}function w({matchers:t,onChange:e}){const[n]=i();return P(n,t,e),null}export{w as AutoLinkPlugin,m as createLinkMatcherWithRegExp};\n","import { JSX } from \"react\";\nimport {\n  AutoLinkPlugin as LexicalAutoLinkPlugin,\n  createLinkMatcherWithRegExp,\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 { useMemo, useRef } from 'react'\n\nimport { debounce } from 'lodash-es'\n\nexport function useDebounce<T extends (...args: never[]) => void>(\n  fn: T,\n  ms: number,\n  maxWait?: number\n) {\n  const funcRef = useRef<T | null>(null)\n  funcRef.current = fn\n\n  return useMemo(\n    () =>\n      debounce(\n        (...args: Parameters<T>) => {\n          if (funcRef.current) {\n            funcRef.current(...args)\n          }\n        },\n        ms,\n        { maxWait }\n      ),\n    [ms, maxWait]\n  )\n}\n","import { useState } from \"react\";\n\nimport { $isCodeNode } from \"@lexical/code\";\nimport {\n  $getNearestNodeFromDOMNode,\n  $getSelection,\n  $setSelection,\n  LexicalEditor,\n} from \"lexical\";\nimport { CircleCheckIcon, CopyIcon } from \"lucide-react\";\n\nimport { useDebounce } from \"@/components/editor/editor-hooks/use-debounce\";\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      console.error(\"Failed to copy: \", err);\n    }\n  }\n\n  return (\n    <button\n      className=\"flex shrink-0 cursor-pointer items-center rounded border border-transparent bg-none p-1 uppercase text-content-system-global-primary/50\"\n      onClick={handleClick}\n      aria-label=\"copy\"\n    >\n      {isCopyCompleted ? (\n        <CircleCheckIcon className=\"size-4\" />\n      ) : (\n        <CopyIcon className=\"size-4\" />\n      )}\n    </button>\n  );\n}\n","import { useEffect, useRef, useState, JSX } from \"react\";\n\nimport { $isCodeNode, CodeNode, getLanguageFriendlyName } from \"@lexical/code\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $getNearestNodeFromDOMNode } from \"lexical\";\nimport { createPortal } from \"react-dom\";\n\nimport { useDebounce } from \"@/components/editor/editor-hooks/use-debounce\";\nimport { CopyButton } from \"@/components/editor/editor-ui/code-button\";\n\nconst CODE_PADDING = 8;\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 [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\n      editor.update(() => {\n        const maybeCodeNode = $getNearestNodeFromDOMNode(codeDOMNode);\n\n        if ($isCodeNode(maybeCodeNode)) {\n          codeNode = maybeCodeNode;\n          _lang = codeNode.getLanguage() || \"\";\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        setShown(true);\n        setPosition({\n          right: `${editorElemRight - right + CODE_PADDING}px`,\n          top: `${y - editorElemY}px`,\n        });\n      }\n    },\n    50,\n    1000\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 Array.from(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  const codeFriendlyName = getLanguageFriendlyName(lang);\n\n  return (\n    <>\n      {isShown ? (\n        <div\n          className=\"code-action-menu-container user-select-none absolute flex h-9 flex-row items-center space-x-1 text-xs text-content-system-global-primary/50\"\n          style={{ ...position }}\n        >\n          <div>{codeFriendlyName}</div>\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 (target && target instanceof HTMLElement) {\n    const codeDOMNode = target.closest<HTMLElement>(\"code.EditorTheme__code\");\n    const isOutside = !(\n      codeDOMNode ||\n      target.closest<HTMLElement>(\"div.code-action-menu-container\")\n    );\n\n    return { codeDOMNode, isOutside };\n  } else {\n    return { codeDOMNode: null, isOutside: true };\n  }\n}\n\nexport function CodeActionMenuPlugin({\n  anchorElem,\n}: {\n  anchorElem: HTMLDivElement | 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 { useEffect, JSX } from 'react'\n\nimport { registerCodeHighlighting } from '@lexical/code'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\n\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","/**\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 */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{createCommand as e,KEY_ARROW_DOWN_COMMAND as n,KEY_ARROW_UP_COMMAND as o,KEY_ESCAPE_COMMAND as r,KEY_TAB_COMMAND as l,KEY_ENTER_COMMAND as i,COMMAND_PRIORITY_LOW as u,$getSelection as s,$isRangeSelection as c,getDOMSelection as a,$isTextNode as d}from\"lexical\";import m,{useLayoutEffect as f,useEffect as p,useState as g,useCallback as h,useMemo as w,useRef as y}from\"react\";import{mergeRegister as v}from\"@lexical/utils\";import{jsx as b}from\"react/jsx-runtime\";const C=\"startTransition\";const E=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,x=E?f:p;class R{constructor(t){this.key=t,this.ref={current:null},this.setRefElement=this.setRefElement.bind(this)}setRefElement(t){this.ref={current:t}}}const S=t=>{const e=document.getElementById(\"typeahead-menu\");if(!e)return;const n=e.getBoundingClientRect();n.top+n.height>window.innerHeight&&e.scrollIntoView({block:\"center\"}),n.top<0&&e.scrollIntoView({block:\"center\"}),t.scrollIntoView({block:\"nearest\"})};function O(t,e){const n=t.getBoundingClientRect(),o=e.getBoundingClientRect();return n.top>o.top&&n.top<o.bottom}function I(e,n,o,r){const[l]=t();p((()=>{if(null!=n&&null!=e){const t=l.getRootElement(),e=null!=t?function(t,e){let n=getComputedStyle(t);const o=\"absolute\"===n.position,r=/(auto|scroll)/;if(\"fixed\"===n.position)return document.body;for(let e=t;e=e.parentElement;)if(n=getComputedStyle(e),(!o||\"static\"!==n.position)&&r.test(n.overflow+n.overflowY+n.overflowX))return e;return document.body}(t):document.body;let i=!1,u=O(n,e);const s=function(){i||(window.requestAnimationFrame((function(){o(),i=!1})),i=!0);const t=O(n,e);t!==u&&(u=t,null!=r&&r(t))},c=new ResizeObserver(o);return window.addEventListener(\"resize\",o),document.addEventListener(\"scroll\",s,{capture:!0,passive:!0}),c.observe(n),()=>{c.unobserve(n),window.removeEventListener(\"resize\",o),document.removeEventListener(\"scroll\",s,!0)}}}),[n,l,r,o,e])}const A=e(\"SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND\");function T({close:t,editor:e,anchorElementRef:a,resolution:d,options:m,menuRenderFn:f,onSelectOption:y,shouldSplitNodeWithQuery:b=!1,commandPriority:C=u,preselectFirstItem:E=!0}){const[R,O]=g(null),I=d.match&&d.match.matchingString;p((()=>{E&&O(0)}),[I,E]);const T=h((n=>{e.update((()=>{const e=null!=d.match&&b?function(t){const e=s();if(!c(e)||!e.isCollapsed())return null;const n=e.anchor;if(\"text\"!==n.type)return null;const o=n.getNode();if(!o.isSimpleText())return null;const r=n.offset,l=o.getTextContent().slice(0,r),i=t.replaceableString.length,u=r-function(t,e,n){let o=n;for(let n=o;n<=e.length;n++)t.slice(-n)===e.substring(0,n)&&(o=n);return o}(l,t.matchingString,i);if(u<0)return null;let a;return 0===u?[a]=o.splitText(r):[,a]=o.splitText(u,r),a}(d.match):null;y(n,e,t,d.match?d.match.matchingString:\"\")}))}),[e,b,d.match,y,t]),N=h((t=>{const n=e.getRootElement();null!==n&&(n.setAttribute(\"aria-activedescendant\",\"typeahead-item-\"+t),O(t))}),[e]);p((()=>()=>{const t=e.getRootElement();null!==t&&t.removeAttribute(\"aria-activedescendant\")}),[e]),x((()=>{null===m?O(null):null===R&&E&&N(0)}),[m,R,N,E]),p((()=>v(e.registerCommand(A,(({option:t})=>!(!t.ref||null==t.ref.current)&&(S(t.ref.current),!0)),C))),[e,N,C]),p((()=>v(e.registerCommand(n,(t=>{const n=t;if(null!==m&&m.length){const t=null===R?0:R!==m.length-1?R+1:0;N(t);const o=m[t];null!=o.ref&&o.ref.current&&e.dispatchCommand(A,{index:t,option:o}),n.preventDefault(),n.stopImmediatePropagation()}return!0}),C),e.registerCommand(o,(t=>{const e=t;if(null!==m&&m.length){const t=null===R?m.length-1:0!==R?R-1:m.length-1;N(t);const n=m[t];null!=n.ref&&n.ref.current&&S(n.ref.current),e.preventDefault(),e.stopImmediatePropagation()}return!0}),C),e.registerCommand(r,(e=>{const n=e;return n.preventDefault(),n.stopImmediatePropagation(),t(),!0}),C),e.registerCommand(l,(t=>{const e=t;return null!==m&&null!==R&&null!=m[R]&&(e.preventDefault(),e.stopImmediatePropagation(),T(m[R]),!0)}),C),e.registerCommand(i,(t=>null!==m&&null!==R&&null!=m[R]&&(null!==t&&(t.preventDefault(),t.stopImmediatePropagation()),T(m[R]),!0)),C))),[T,t,e,m,R,N,C]);return f(a,w((()=>({options:m,selectOptionAndCleanUp:T,selectedIndex:R,setHighlightedIndex:O})),[T,R,m]),d.match?d.match.matchingString:\"\")}function N(t,e){null!=e&&(t.className=e),t.setAttribute(\"aria-label\",\"Typeahead menu\"),t.setAttribute(\"role\",\"listbox\"),t.style.display=\"block\",t.style.position=\"absolute\"}const L=\"\\\\.,\\\\+\\\\*\\\\?\\\\$\\\\@\\\\|#{}\\\\(\\\\)\\\\^\\\\-\\\\[\\\\]\\\\\\\\/!%'\\\"~=<>_:;\";function P(t,e){let n=getComputedStyle(t);const o=\"absolute\"===n.position,r=e?/(auto|scroll|hidden)/:/(auto|scroll)/;if(\"fixed\"===n.position)return document.body;for(let e=t;e=e.parentElement;)if(n=getComputedStyle(e),(!o||\"static\"!==n.position)&&r.test(n.overflow+n.overflowY+n.overflowX))return e;return document.body}const _=e(\"SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND\");function D(t,{minLength:e=1,maxLength:n=75}){return h((o=>{const r=new RegExp(\"(^|\\\\s|\\\\()([\"+t+\"]((?:\"+(\"[^\"+t+L+\"\\\\s]\")+\"){0,\"+n+\"}))$\").exec(o);if(null!==r){const t=r[1],n=r[3];if(n.length>=e)return{leadOffset:r.index+t.length,matchingString:n,replaceableString:r[2]}}return null}),[n,e,t])}function $({options:e,onQueryChange:n,onSelectOption:o,onOpen:r,onClose:l,menuRenderFn:i,triggerFn:f,anchorClassName:w,commandPriority:v=u,parent:x,preselectFirstItem:R=!0}){const[S]=t(),[O,A]=g(null),L=function(e,n,o,r=(E?document.body:void 0),l=!0){const[i]=t(),u=y(E?document.createElement(\"div\"):null),s=h((()=>{if(null===u.current||void 0===r)return;u.current.style.top=u.current.style.bottom;const t=i.getRootElement(),n=u.current,s=n.firstChild;if(null!==t&&null!==e){const{left:i,top:c,width:a,height:d}=e.getRect(),m=u.current.offsetHeight;if(n.style.top=`${c+m+3+(l?window.pageYOffset:0)}px`,n.style.left=`${i+window.pageXOffset}px`,n.style.height=`${d}px`,n.style.width=`${a}px`,null!==s){s.style.top=`${c}`;const e=s.getBoundingClientRect(),o=e.height,r=e.width,u=t.getBoundingClientRect();i+r>u.right&&(n.style.left=`${u.right-r+window.pageXOffset}px`),(c+o>window.innerHeight||c+o>u.bottom)&&c-u.top>o+d&&(n.style.top=`${c-o-d+(l?window.pageYOffset:0)}px`)}n.isConnected||(N(n,o),r.append(n)),n.setAttribute(\"id\",\"typeahead-menu\"),u.current=n,t.setAttribute(\"aria-controls\",\"typeahead-menu\")}}),[i,e,l,o,r]);p((()=>{const t=i.getRootElement();return null!==e&&s(),()=>{null!==t&&t.removeAttribute(\"aria-controls\");const e=u.current;null!==e&&e.isConnected&&(e.remove(),e.removeAttribute(\"id\"))}}),[i,s,e]);const c=h((t=>{null!==e&&(t||n(null))}),[e,n]);I(e,u.current,s,c);const a=u.current;return null!=a&&(N(a,o),null!=r&&r.append(a)),u}(O,A,w,x),P=h((()=>{A(null),null!=l&&null!==O&&l()}),[l,O]),_=h((t=>{A(t),null!=r&&null===O&&r(t)}),[r,O]);return p((()=>{const t=S.registerUpdateListener((()=>{S.getEditorState().read((()=>{if(!S.isEditable())return void P();const t=S._window||window,e=t.document.createRange(),o=s(),r=function(t){let e=null;return t.getEditorState().read((()=>{const t=s();c(t)&&(e=function(t){const e=t.anchor;if(\"text\"!==e.type)return null;const n=e.getNode();if(!n.isSimpleText())return null;const o=e.offset;return n.getTextContent().slice(0,o)}(t))})),e}(S);if(!c(o)||!o.isCollapsed()||null===r||null===e)return void P();const l=f(r,S);if(n(l?l.matchingString:null),null!==l&&!function(t,e){return 0===e&&t.getEditorState().read((()=>{const t=s();if(c(t)){const e=t.anchor.getNode().getPreviousSibling();return d(e)&&e.isTextEntity()}return!1}))}(S,l.leadOffset)){const n=function(t,e,n){const o=a(n);if(null===o||!o.isCollapsed)return!1;const r=o.anchorNode,l=t,i=o.anchorOffset;if(null==r||null==i)return!1;try{e.setStart(r,l),e.setEnd(r,i)}catch(t){return!1}return!0}(l.leadOffset,e,t);if(null!==n)return i=()=>_({getRect:()=>e.getBoundingClientRect(),match:l}),void(C in m?m[C](i):i())}var i;P()}))}));return()=>{t()}}),[S,f,n,O,P,_]),p((()=>S.registerEditableListener((t=>{t||P()}))),[S,P]),null===O||null===S||null===L.current?null:b(T,{close:P,resolution:O,editor:S,anchorElementRef:L,options:e,menuRenderFn:i,shouldSplitNodeWithQuery:!0,onSelectOption:o,commandPriority:v,preselectFirstItem:R})}export{$ as LexicalTypeaheadMenuPlugin,R as MenuOption,L as PUNCTUATION,_ as SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND,P as getScrollParent,D as useBasicTypeaheadTriggerMatch,I as useDynamicPositioning};\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 { useCallback, useMemo, useState, JSX, Suspense } from \"react\";\n// @ts-ignore\nimport { createPortal } from \"react-dom\";\n\nimport { lazy } from \"react\";\n\nimport { TextNode } from \"lexical\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useBasicTypeaheadTriggerMatch } from \"@lexical/react/LexicalTypeaheadMenuPlugin\";\n\n//@ts-ignore\nimport {\n  Command,\n  CommandGroup,\n  CommandItem,\n  CommandList,\n} from \"@/components/ui/command\";\n\nimport { useEditorModal } from \"@/components/editor/editor-hooks/use-modal\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nconst LexicalTypeaheadMenuPlugin = lazy(\n  () => import(\"./default/lexical-typeahead-menu-plugin\")\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  //@ts-ignore\n  const [queryString, setQueryString] = useState<string | null>(null);\n  //@ts-ignore\n  const checkForTriggerMatch = useBasicTypeaheadTriggerMatch(\"/\", {\n    minLength: 0,\n  });\n  //@ts-ignore\n  const options = useMemo(() => {\n    if (!queryString) {\n      return baseOptions;\n    }\n\n    const regex = new RegExp(queryString, \"i\");\n\n    return [\n      ...(dynamicOptionsFn?.({ queryString }) || []),\n      ...baseOptions.filter(\n        (option) =>\n          regex.test(option.title) ||\n          option.keywords.some((keyword) => regex.test(keyword))\n      ),\n    ];\n  }, [editor, queryString, showModal]);\n  //@ts-ignore\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]\n  );\n  return (\n    <>\n      {modal}\n      <Suspense fallback={<div>Loading...</div>}>\n        {/* @ts-ignore */}\n        <LexicalTypeaheadMenuPlugin<ComponentPickerOption>\n          onQueryChange={setQueryString}\n          onSelectOption={onSelectOption}\n          triggerFn={checkForTriggerMatch}\n          options={options}\n          menuRenderFn={(\n            anchorElementRef,\n            { selectedIndex, selectOptionAndCleanUp, setHighlightedIndex }\n          ) => {\n            return anchorElementRef.current && options.length\n              ? createPortal(\n                  <div className=\"fixed w-[250px] rounded-md shadow-md bg-background-system-body-primary border border-border-system-global-secondary\">\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={`flex items-center gap-2 ${\n                                selectedIndex === index\n                                  ? \"bg-background-presentation-action-selected text-content-system-global-primary\"\n                                  : \"!bg-transparent text-content-system-global-primary hover:bg-background-presentation-action-hover\"\n                              }`}\n                            >\n                              {option.icon}\n                              {option.title}\n                            </CommandItem>\n                          ))}\n                        </CommandGroup>\n                      </CommandList>\n                    </Command>\n                  </div>,\n                  anchorElementRef.current\n                )\n              : null;\n          }}\n        />\n      </Suspense>\n    </>\n  );\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 */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{mergeRegister as e,calculateZoomLevel as n}from\"@lexical/utils\";import{createCommand as o,KEY_ARROW_DOWN_COMMAND as l,KEY_ARROW_UP_COMMAND as r,KEY_ESCAPE_COMMAND as i,KEY_TAB_COMMAND as u,KEY_ENTER_COMMAND as c,COMMAND_PRIORITY_LOW as s,$getSelection as a,$isRangeSelection as m,isDOMNode as d}from\"lexical\";import*as p from\"react\";import{useLayoutEffect as f,useEffect as g,useState as h,useCallback as v,useMemo as w,useRef as y}from\"react\";import{jsx as b}from\"react/jsx-runtime\";const C=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,E=C?f:g;class R{constructor(t){this.key=t,this.ref={current:null},this.setRefElement=this.setRefElement.bind(this)}setRefElement(t){this.ref={current:t}}}const x=t=>{const e=document.getElementById(\"typeahead-menu\");if(!e)return;const n=e.getBoundingClientRect();n.top+n.height>window.innerHeight&&e.scrollIntoView({block:\"center\"}),n.top<0&&e.scrollIntoView({block:\"center\"}),t.scrollIntoView({block:\"nearest\"})};function O(t,e){const n=t.getBoundingClientRect(),o=e.getBoundingClientRect();return n.top>o.top&&n.top<o.bottom}function I(e,n,o,l){const[r]=t();g((()=>{if(null!=n&&null!=e){const t=r.getRootElement(),e=null!=t?function(t,e){let n=getComputedStyle(t);const o=\"absolute\"===n.position,l=/(auto|scroll)/;if(\"fixed\"===n.position)return document.body;for(let e=t;e=e.parentElement;)if(n=getComputedStyle(e),(!o||\"static\"!==n.position)&&l.test(n.overflow+n.overflowY+n.overflowX))return e;return document.body}(t):document.body;let i=!1,u=O(n,e);const c=function(){i||(window.requestAnimationFrame((function(){o(),i=!1})),i=!0);const t=O(n,e);t!==u&&(u=t,null!=l&&l(t))},s=new ResizeObserver(o);return window.addEventListener(\"resize\",o),document.addEventListener(\"scroll\",c,{capture:!0,passive:!0}),s.observe(n),()=>{s.unobserve(n),window.removeEventListener(\"resize\",o),document.removeEventListener(\"scroll\",c,!0)}}}),[n,r,l,o,e])}const A=o(\"SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND\");function S({close:t,editor:n,anchorElementRef:o,resolution:d,options:p,menuRenderFn:f,onSelectOption:y,shouldSplitNodeWithQuery:b=!1,commandPriority:C=s,preselectFirstItem:R=!0}){const[O,I]=h(null),S=d.match&&d.match.matchingString;g((()=>{R&&I(0)}),[S,R]);const L=v((e=>{n.update((()=>{const n=null!=d.match&&b?function(t){const e=a();if(!m(e)||!e.isCollapsed())return null;const n=e.anchor;if(\"text\"!==n.type)return null;const o=n.getNode();if(!o.isSimpleText())return null;const l=n.offset,r=o.getTextContent().slice(0,l),i=t.replaceableString.length,u=l-function(t,e,n){let o=n;for(let n=o;n<=e.length;n++)t.slice(-n)===e.substring(0,n)&&(o=n);return o}(r,t.matchingString,i);if(u<0)return null;let c;return 0===u?[c]=o.splitText(l):[,c]=o.splitText(u,l),c}(d.match):null;y(e,n,t,d.match?d.match.matchingString:\"\")}))}),[n,b,d.match,y,t]),P=v((t=>{const e=n.getRootElement();null!==e&&(e.setAttribute(\"aria-activedescendant\",\"typeahead-item-\"+t),I(t))}),[n]);g((()=>()=>{const t=n.getRootElement();null!==t&&t.removeAttribute(\"aria-activedescendant\")}),[n]),E((()=>{null===p?I(null):null===O&&R&&P(0)}),[p,O,P,R]),g((()=>e(n.registerCommand(A,(({option:t})=>!(!t.ref||null==t.ref.current)&&(x(t.ref.current),!0)),C))),[n,P,C]),g((()=>e(n.registerCommand(l,(t=>{const e=t;if(null!==p&&p.length){const t=null===O?0:O!==p.length-1?O+1:0;P(t);const o=p[t];null!=o.ref&&o.ref.current&&n.dispatchCommand(A,{index:t,option:o}),e.preventDefault(),e.stopImmediatePropagation()}return!0}),C),n.registerCommand(r,(t=>{const e=t;if(null!==p&&p.length){const t=null===O?p.length-1:0!==O?O-1:p.length-1;P(t);const n=p[t];null!=n.ref&&n.ref.current&&x(n.ref.current),e.preventDefault(),e.stopImmediatePropagation()}return!0}),C),n.registerCommand(i,(e=>{const n=e;return n.preventDefault(),n.stopImmediatePropagation(),t(),!0}),C),n.registerCommand(u,(t=>{const e=t;return null!==p&&null!==O&&null!=p[O]&&(e.preventDefault(),e.stopImmediatePropagation(),L(p[O]),!0)}),C),n.registerCommand(c,(t=>null!==p&&null!==O&&null!=p[O]&&(null!==t&&(t.preventDefault(),t.stopImmediatePropagation()),L(p[O]),!0)),C))),[L,t,n,p,O,P,C]);return f(o,w((()=>({options:p,selectOptionAndCleanUp:L,selectedIndex:O,setHighlightedIndex:I})),[L,O,p]),d.match?d.match.matchingString:\"\")}function L(t,e){null!=e&&(t.className=e),t.setAttribute(\"aria-label\",\"Typeahead menu\"),t.setAttribute(\"role\",\"listbox\"),t.style.display=\"block\",t.style.position=\"absolute\"}function P({options:e,onWillOpen:o,onClose:l,onOpen:r,onSelectOption:i,menuRenderFn:u,anchorClassName:c,commandPriority:a=s,parent:m}){const[f]=t(),[w,E]=h(null),R=p.useRef(null),x=function(e,n,o,l=(C?document.body:void 0),r=!0){const[i]=t(),u=y(C?document.createElement(\"div\"):null),c=v((()=>{if(null===u.current||void 0===l)return;u.current.style.top=u.current.style.bottom;const t=i.getRootElement(),n=u.current,c=n.firstChild;if(null!==t&&null!==e){const{left:i,top:s,width:a,height:m}=e.getRect(),d=u.current.offsetHeight;if(n.style.top=`${s+d+3+(r?window.pageYOffset:0)}px`,n.style.left=`${i+window.pageXOffset}px`,n.style.height=`${m}px`,n.style.width=`${a}px`,null!==c){c.style.top=`${s}`;const e=c.getBoundingClientRect(),o=e.height,l=e.width,u=t.getBoundingClientRect();i+l>u.right&&(n.style.left=`${u.right-l+window.pageXOffset}px`),(s+o>window.innerHeight||s+o>u.bottom)&&s-u.top>o+m&&(n.style.top=`${s-o-m+(r?window.pageYOffset:0)}px`)}n.isConnected||(L(n,o),l.append(n)),n.setAttribute(\"id\",\"typeahead-menu\"),u.current=n,t.setAttribute(\"aria-controls\",\"typeahead-menu\")}}),[i,e,r,o,l]);g((()=>{const t=i.getRootElement();return null!==e&&c(),()=>{null!==t&&t.removeAttribute(\"aria-controls\");const e=u.current;null!==e&&e.isConnected&&(e.remove(),e.removeAttribute(\"id\"))}}),[i,c,e]);const s=v((t=>{null!==e&&(t||n(null))}),[e,n]);I(e,u.current,c,s);const a=u.current;return null!=a&&(L(a,o),null!=l&&l.append(a)),u}(w,E,c,m),O=v((()=>{E(null),null!=l&&null!==w&&l()}),[l,w]),A=v((t=>{E(t),null!=r&&null===w&&r(t)}),[r,w]),P=v((t=>{t.preventDefault(),null!=o&&o(t);const e=n(t.target);A({getRect:()=>new DOMRect(t.clientX/e,t.clientY/e,1,1)})}),[A,o]),D=v((t=>{null!==w&&null!=R.current&&null!=t.target&&d(t.target)&&!R.current.contains(t.target)&&O()}),[O,w]);return g((()=>{const t=f.getRootElement();if(t)return t.addEventListener(\"contextmenu\",P),()=>t.removeEventListener(\"contextmenu\",P)}),[f,P]),g((()=>(document.addEventListener(\"click\",D),()=>document.removeEventListener(\"click\",D))),[f,D]),null===x.current||null===w||null===f?null:b(S,{close:O,resolution:w,editor:f,anchorElementRef:x,options:e,menuRenderFn:(t,e)=>u(t,e,{setMenuRef:t=>{R.current=t}}),onSelectOption:i,commandPriority:a})}export{P as LexicalContextMenuPlugin,R as MenuOption};\n","import { useCallback, useMemo, JSX, Suspense } from \"react\";\nimport React from \"react\";\nimport { lazy } from \"react\";\n\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { MenuOption } from \"@lexical/react/LexicalContextMenuPlugin\";\nimport { PopoverPortal } from \"@radix-ui/react-popover\";\nimport {\n  $getNearestNodeFromDOMNode,\n  $getSelection,\n  $isRangeSelection,\n  COPY_COMMAND,\n  CUT_COMMAND,\n  type LexicalNode,\n  PASTE_COMMAND,\n} from \"lexical\";\n\nimport { Command, CommandItem, CommandList } from \"@/components/ui/command\";\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/components/ui/popover\";\n\nconst LexicalContextMenuPlugin = lazy(\n  () => import(\"./default/lexical-context-menu-plugin\")\n);\n\nexport class ContextMenuOption extends MenuOption {\n  title: string;\n  onSelect: (targetNode: LexicalNode | null) => void;\n  constructor(\n    title: string,\n    options: {\n      onSelect: (targetNode: LexicalNode | null) => void;\n    }\n  ) {\n    super(title);\n    this.title = title;\n    this.onSelect = options.onSelect.bind(this);\n  }\n}\n\nexport function ContextMenuPlugin(): JSX.Element {\n  const [editor] = useLexicalComposerContext();\n  const [isOpen, setIsOpen] = React.useState(false);\n\n  const defaultOptions = useMemo(() => {\n    return [\n      new ContextMenuOption(`Copy`, {\n        onSelect: (_node) => {\n          editor.dispatchCommand(COPY_COMMAND, null);\n        },\n      }),\n      new ContextMenuOption(`Cut`, {\n        onSelect: (_node) => {\n          editor.dispatchCommand(CUT_COMMAND, null);\n        },\n      }),\n      new ContextMenuOption(`Paste`, {\n        onSelect: (_node) => {\n          navigator.clipboard.read().then(async function () {\n            const data = new DataTransfer();\n\n            const items = await navigator.clipboard.read();\n            const item = items[0];\n\n            const permission = await navigator.permissions.query({\n              // @ts-expect-error These types are incorrect.\n              name: \"clipboard-read\",\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      }),\n      new ContextMenuOption(`Paste as Plain Text`, {\n        onSelect: (_node) => {\n          navigator.clipboard.read().then(async function () {\n            const permission = await navigator.permissions.query({\n              // @ts-expect-error These types are incorrect.\n              name: \"clipboard-read\",\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 items = await navigator.clipboard.readText();\n            data.setData(\"text/plain\", items);\n\n            const event = new ClipboardEvent(\"paste\", {\n              clipboardData: data,\n            });\n            editor.dispatchCommand(PASTE_COMMAND, event);\n          });\n        },\n      }),\n      new ContextMenuOption(`Delete Node`, {\n        onSelect: (_node) => {\n          const selection = $getSelection();\n          if ($isRangeSelection(selection)) {\n            const currentNode = selection.anchor.getNode();\n            const ancestorNodeWithRootAsParent = currentNode\n              .getParents()\n              .at(-2);\n\n            ancestorNodeWithRootAsParent?.remove();\n          }\n        },\n      }),\n    ];\n  }, [editor]);\n\n  const [options, setOptions] = React.useState(defaultOptions);\n\n  const onSelectOption = useCallback(\n    (\n      selectedOption: ContextMenuOption,\n      targetNode: LexicalNode | null,\n      closeMenu: () => void\n    ) => {\n      editor.update(() => {\n        selectedOption.onSelect(targetNode);\n        closeMenu();\n      });\n    },\n    [editor]\n  );\n\n  const onWillOpen = (event: MouseEvent) => {\n    let newOptions = defaultOptions;\n    setIsOpen(true);\n    editor.update(() => {\n      const node = $getNearestNodeFromDOMNode(event.target as Element);\n      if (node) {\n        const parent = node.getParent();\n        if ($isLinkNode(parent)) {\n          newOptions = [\n            new ContextMenuOption(`Remove Link`, {\n              onSelect: (_node) => {\n                editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n              },\n            }),\n            ...defaultOptions,\n          ];\n        }\n      }\n    });\n    setOptions(newOptions);\n  };\n\n  return (\n    <Suspense fallback={<div>Loading...</div>}>\n      <LexicalContextMenuPlugin\n        options={options}\n        onSelectOption={(option, targetNode) => {\n          onSelectOption(option as ContextMenuOption, targetNode, () => {\n            setIsOpen(false);\n          });\n        }}\n        onWillOpen={onWillOpen}\n        onOpen={() => {\n          setIsOpen(true);\n        }}\n        onClose={() => {\n          setIsOpen(false);\n        }}\n        menuRenderFn={(\n          anchorElementRef,\n          { options: _options, selectOptionAndCleanUp },\n          { setMenuRef }\n        ) => {\n          return anchorElementRef.current ? (\n            <Popover open={isOpen} onOpenChange={setIsOpen}>\n              <PopoverPortal container={anchorElementRef.current}>\n                <div>\n                  <PopoverTrigger\n                    ref={setMenuRef}\n                    style={{\n                      marginLeft: anchorElementRef.current?.style.width,\n                      userSelect: \"none\",\n                    }}\n                  />\n                  <PopoverContent className=\"w-[200px] p-1\">\n                    <Command>\n                      <CommandList>\n                        {options.map((option) => (\n                          <CommandItem\n                            key={option.key}\n                            onSelect={() => {\n                              selectOptionAndCleanUp(option);\n                            }}\n                          >\n                            {option.title}\n                          </CommandItem>\n                        ))}\n                      </CommandList>\n                    </Command>\n                  </PopoverContent>\n                </div>\n              </PopoverPortal>\n            </Popover>\n          ) : null;\n        }}\n      />\n    </Suspense>\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'\n\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 '@/components/editor/plugins/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","/**\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 */\n\nimport{useLexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{eventFiles as e}from\"@lexical/rich-text\";import{mergeRegister as n,isHTMLElement as r,calculateZoomLevel as o}from\"@lexical/utils\";import{DRAGOVER_COMMAND as i,COMMAND_PRIORITY_LOW as s,DROP_COMMAND as a,COMMAND_PRIORITY_HIGH as l,$getNodeByKey as c,$getNearestNodeFromDOMNode as u,$getRoot as h}from\"lexical\";import{useRef as m,useState as g,useCallback as f,useEffect as p}from\"react\";import{createPortal as d}from\"react-dom\";import{jsxs as y,Fragment as x,jsx as _}from\"react/jsx-runtime\";class b{constructor(t,e){this._x=t,this._y=e}get x(){return this._x}get y(){return this._y}equals({x:t,y:e}){return this.x===t&&this.y===e}calcDeltaXTo({x:t}){return this.x-t}calcDeltaYTo({y:t}){return this.y-t}calcHorizontalDistanceTo(t){return Math.abs(this.calcDeltaXTo(t))}calcVerticalDistance(t){return Math.abs(this.calcDeltaYTo(t))}calcDistanceTo(t){return Math.sqrt(Math.pow(this.calcDeltaXTo(t),2)+Math.pow(this.calcDeltaYTo(t),2))}}class B{constructor(t,e,n,r){const[o,i]=e<=r?[e,r]:[r,e],[s,a]=t<=n?[t,n]:[n,t];this._top=o,this._right=a,this._left=s,this._bottom=i}get top(){return this._top}get right(){return this._right}get bottom(){return this._bottom}get left(){return this._left}get width(){return Math.abs(this._left-this._right)}get height(){return Math.abs(this._bottom-this._top)}equals({top:t,left:e,bottom:n,right:r}){return t===this._top&&n===this._bottom&&e===this._left&&r===this._right}contains(t){if(t instanceof b){const{x:e,y:n}=t,r=n<this._top,o=n>this._bottom,i=e<this._left,s=e>this._right;return{reason:{isOnBottomSide:o,isOnLeftSide:i,isOnRightSide:s,isOnTopSide:r},result:!(r||o||i||s)}}{const{top:e,left:n,bottom:r,right:o}=t;return e>=this._top&&e<=this._bottom&&r>=this._top&&r<=this._bottom&&n>=this._left&&n<=this._right&&o>=this._left&&o<=this._right}}intersectsWith(t){const{left:e,top:n,width:r,height:o}=t,{left:i,top:s,width:a,height:l}=this;return(e+r>=i+a?e+r:i+a)-(e<=i?e:i)<=r+a&&(n+o>=s+l?n+o:s+l)-(n<=s?n:s)<=o+l}generateNewRect({left:t=this.left,top:e=this.top,right:n=this.right,bottom:r=this.bottom}){return new B(t,e,n,r)}static fromLTRB(t,e,n,r){return new B(t,e,n,r)}static fromLWTH(t,e,n,r){return new B(t,n,t+e,n+r)}static fromPoints(t,e){const{y:n,x:r}=t,{y:o,x:i}=e;return B.fromLTRB(r,n,i,o)}static fromDOM(t){const{top:e,width:n,left:r,height:o}=t.getBoundingClientRect();return B.fromLWTH(r,n,e,o)}}const T=4,C=2,w=\"application/x-lexical-drag-block\",v=28,D=1,R=-1,E=0;let S=1/0;function M(t){const e=(t,e)=>t?parseFloat(window.getComputedStyle(t)[e]):0,{marginTop:n,marginBottom:r}=window.getComputedStyle(t),o=e(t.previousElementSibling,\"marginBottom\"),i=e(t.nextElementSibling,\"marginTop\"),s=Math.max(parseFloat(n),o);return{marginBottom:Math.max(parseFloat(r),i),marginTop:s}}function L(t,e,n,r=!1){const i=t.getBoundingClientRect(),s=function(t){return t.getEditorState().read((()=>h().getChildrenKeys()))}(e);let a=null;return e.getEditorState().read((()=>{if(r){const[t,r]=[e.getElementByKey(s[0]),e.getElementByKey(s[s.length-1])],[i,l]=[null!=t?t.getBoundingClientRect():void 0,null!=r?r.getBoundingClientRect():void 0];if(i&&l){const e=o(t),s=o(r);if(n.y/e<i.top?a=t:n.y/s>l.bottom&&(a=r),a)return}}let t=0===(l=s.length)?1/0:S>=0&&S<l?S:Math.floor(l/2);var l;let c=E;for(;t>=0&&t<s.length;){const r=s[t],l=e.getElementByKey(r);if(null===l)break;const u=o(l),h=new b(n.x/u,n.y/u),m=B.fromDOM(l),{marginTop:g,marginBottom:f}=M(l),p=m.generateNewRect({bottom:m.bottom+f,left:i.left,right:i.right,top:m.top-g}),{result:d,reason:{isOnTopSide:y,isOnBottomSide:x}}=p.contains(h);if(d){a=l,S=t;break}c===E&&(c=y?R:x?D:1/0),t+=c}})),a}function O(t,h,b,B,D,R,E,S,O){const K=h.parentElement,Y=m(!1),[H,N]=g(null),$=f((t=>{N(t),O&&O(t)}),[O]);return p((()=>{function e(e){const n=e.target;if(!r(n))return void $(null);if(S(n))return;const o=L(h,t,e);$(o)}function n(){$(null)}return null!=K&&(K.addEventListener(\"mousemove\",e),K.addEventListener(\"mouseleave\",n)),()=>{null!=K&&(K.removeEventListener(\"mousemove\",e),K.removeEventListener(\"mouseleave\",n))}}),[K,h,t,S,$]),p((()=>{b.current&&function(t,e,n){if(!t)return e.style.opacity=\"0\",void(e.style.transform=\"translate(-10000px, -10000px)\");const r=t.getBoundingClientRect(),o=window.getComputedStyle(t),i=e.getBoundingClientRect(),s=n.getBoundingClientRect();let a=parseInt(o.lineHeight,10);isNaN(a)&&(a=r.bottom-r.top);const l=r.top+(a-i.height)/2-s.top,c=T;e.style.opacity=\"1\",e.style.transform=`translate(${c}px, ${l}px)`}(H,b.current,h)}),[h,H,b]),p((()=>{function m(n){if(!Y.current)return!1;const[i]=e(n);if(i)return!1;const{pageY:s,target:a}=n;if(!r(a))return!1;const l=L(h,t,n,!0),c=B.current;return null!==l&&null!==c&&(function(t,e,n,r){const{top:o,height:i}=e.getBoundingClientRect(),{top:s,width:a}=r.getBoundingClientRect(),{marginTop:l,marginBottom:c}=M(e);let u=o;n>=o?u+=i+c/2:u-=l/2;const h=u-s-C,m=v-T;t.style.transform=`translate(${m}px, ${h}px)`,t.style.width=a-2*(v-T)+\"px\",t.style.opacity=\".4\"}(c,l,s/o(a),h),n.preventDefault(),!0)}return n(t.registerCommand(i,(t=>m(t)),s),t.registerCommand(a,(n=>function(n){if(!Y.current)return!1;const[i]=e(n);if(i)return!1;const{target:s,dataTransfer:a,pageY:l}=n,m=null!=a?a.getData(w):\"\",g=c(m);if(!g)return!1;if(!r(s))return!1;const f=L(h,t,n,!0);if(!f)return!1;const p=u(f);if(!p)return!1;if(p===g)return!0;const d=f.getBoundingClientRect().top;return l/o(s)>=d?p.insertAfter(g):p.insertBefore(g),$(null),!0}(n)),l))}),[h,t,B,$]),d(y(x,{children:[_(\"div\",{draggable:!0,onDragStart:function(e){const n=e.dataTransfer;if(!n||!H)return;!function(t,e){const{transform:n}=e.style;e.style.transform=\"translateZ(0)\",t.setDragImage(e,0,0),setTimeout((()=>{e.style.transform=n}))}(n,H);let r=\"\";t.update((()=>{const t=u(H);t&&(r=t.getKey())})),Y.current=!0,n.setData(w,r)},onDragEnd:function(){var t;Y.current=!1,(t=B.current)&&(t.style.opacity=\"0\",t.style.transform=\"translate(-10000px, -10000px)\")},children:D&&R}),E]}),h)}function K({anchorElem:e=document.body,menuRef:n,targetLineRef:r,menuComponent:o,targetLineComponent:i,isOnMenu:s,onElementChanged:a}){const[l]=t();return O(l,e,n,r,l._editable,o,i,s,a)}export{K as DraggableBlockPlugin_EXPERIMENTAL};\n","import { useRef, JSX } from \"react\";\n\nimport { DraggableBlockPlugin_EXPERIMENTAL } from \"@lexical/react/LexicalDraggableBlockPlugin\";\nimport { GripVerticalIcon, Plus } from \"lucide-react\";\n\nconst DRAGGABLE_BLOCK_MENU_CLASSNAME = \"draggable-block-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  const handleSlashClick = () => {\n    // Get the active editor element\n    const activeElement = document.activeElement;\n    if (activeElement instanceof HTMLElement) {\n      // Focus the element if it's not already focused\n      activeElement.focus();\n\n      // Insert a slash character at the current cursor position\n      document.execCommand(\"insertText\", false, \"/\");\n    }\n  };\n\n  return (\n    <DraggableBlockPlugin_EXPERIMENTAL\n      anchorElem={anchorElem}\n      menuRef={menuRef as React.RefObject<HTMLElement>}\n      targetLineRef={targetLineRef as React.RefObject<HTMLElement>}\n      menuComponent={\n        <div\n          ref={menuRef}\n          className=\" test draggable-block-menu absolute left-0 top-0 flex items-center cursor-grab rounded-sm px-[1px] py-0.5 opacity-0 will-change-transform active:cursor-grabbing\"\n        >\n          <button\n            onClick={handleSlashClick}\n            className=\"ml-1 p-0.5 rounded-sm cursor-pointer\"\n            title=\"slash command\"\n          >\n            <Plus className=\"size-4 opacity-30\" />\n          </button>\n          <button className=\"p-0.5 rounded-sm cursor-pointer\">\n            <GripVerticalIcon className=\"size-4 opacity-30\" />\n          </button>\n        </div>\n      }\n      targetLineComponent={\n        <div\n          ref={targetLineRef}\n          className=\"pointer-events-none absolute left-0 top-0 h-1 bg-content-system-global-secondary opacity-0 will-change-transform\"\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 */\n\nimport { useCallback, useEffect, useMemo, useState, Suspense } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { lazy } from \"react\";\n\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\";\n\nimport { Command, CommandGroup, CommandItem, CommandList } from \"@/components/ui/command\";\n\nconst LexicalTypeaheadMenuPlugin = lazy(\n  () => import(\"./default/lexical-typeahead-menu-plugin\")\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  //@ts-ignore\n  const [queryString, setQueryString] = useState<string | null>(null);\n  const [emojis, setEmojis] = useState<Array<Emoji>>([]);\n  const [isOpen, 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, {\n                keywords: [...aliases, ...tags],\n              })\n          )\n        : [],\n    [emojis]\n  );\n  //@ts-ignore\n  const checkForTriggerMatch = useBasicTypeaheadTriggerMatch(\":\", {\n    minLength: 0,\n  });\n  //@ts-ignore\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  //@ts-ignore\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  return (\n    <Suspense fallback={<div>Loading...</div>}>\n      {/* @ts-ignore */}\n      <LexicalTypeaheadMenuPlugin<EmojiOption>\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=\"fixed w-[200px] rounded-md 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={`flex items-center gap-2 ${\n                              selectedIndex === index\n                                ? \"bg-background-presentation-action-selected\"\n                                : \"!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    </Suspense>\n  );\n}\n","import { useEffect, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport type { LexicalEditor } from \"lexical\";\nimport { TextNode } from \"lexical\";\n\nimport {\n  $createEmojiNode,\n  EmojiNode,\n} from \"@/components/editor/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 emojiData = emojis.get(text[i]) || emojis.get(text.slice(i, i + 2));\n\n    if (emojiData !== undefined) {\n      const [emojiStyle, emojiText] = emojiData;\n      let targetNode;\n\n      if (i === 0) {\n        [targetNode] = node.splitText(i + 2);\n      } else {\n        [, targetNode] = node.splitText(i, i + 2);\n      }\n\n      const emojiNode = $createEmojiNode(emojiStyle, emojiText);\n      targetNode.replace(emojiNode);\n      return emojiNode;\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 * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-border-presentation-state-focus focus-visible:ring-border-presentation-state-focus/50 focus-visible:ring-[3px] aria-invalid:ring-border-presentation-state-negative/20 aria-invalid:border-border-presentation-state-negative\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"bg-background-presentation-action-primary text-content-presentation-action-light-primary shadow-xs hover:bg-background-presentation-action-primary/90\",\n        destructive:\n          \"bg-background-presentation-state-negative-primary text-content-presentation-action-light-primary shadow-xs hover:bg-background-presentation-state-negative-primary/90 focus-visible:ring-border-presentation-state-negative\",\n        outline:\n          \"border border-border-system-global-secondary bg-background-system-body-primary shadow-xs hover:bg-background-presentation-action-hover hover:text-content-system-global-primary\",\n        secondary:\n          \"bg-background-presentation-action-secondary text-content-system-global-primary shadow-xs hover:bg-background-presentation-action-hover\",\n        ghost:\n          \"hover:bg-background-presentation-action-hover hover:text-content-system-global-primary\",\n        link: \"text-content-presentation-action-link-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n        sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n        lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n        icon: \"size-9\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Button({\n  className,\n  variant,\n  size,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> &\n  VariantProps<typeof buttonVariants> & {\n    asChild?: boolean\n  }) {\n  const Comp = asChild ? Slot : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"button\"\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n  return (\n    <textarea\n      data-slot=\"textarea\"\n      className={cn(\n        \"border-border-system-global-secondary placeholder:text-content-system-global-secondary focus-visible:border-border-presentation-state-focus focus-visible:ring-border-presentation-state-focus/50 aria-invalid:ring-border-presentation-state-negative/20 aria-invalid:border-border-presentation-state-negative bg-background-system-body-primary flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Textarea }\n","import { useEffect, useRef, JSX } from \"react\";\n\nimport katex from \"katex\";\n\nexport default function KatexRenderer({\n  equation,\n  inline,\n  onDoubleClick,\n}: Readonly<{\n  equation: string;\n  inline: boolean;\n  onDoubleClick: () => void;\n}>): JSX.Element {\n  const katexElementRef = useRef(null);\n\n  useEffect(() => {\n    const katexElement = katexElementRef.current;\n\n    if (katexElement !== null) {\n      katex.render(equation, katexElement, {\n        displayMode: !inline, // true === block display //\n        errorColor: \"var(--content-presentation-state-negative-primary)\",\n        output: \"html\",\n        strict: \"warn\",\n        throwOnError: false,\n        trust: false,\n      });\n    }\n  }, [equation, inline]);\n\n  return (\n    // We use an empty image tag either side to ensure Android doesn't try and compose from the\n    // inner text from Katex. There didn't seem to be any other way of making this work,\n    // without having a physical space.\n    <>\n      <img src=\"#\" alt=\"\" />\n      <span\n        role=\"button\"\n        tabIndex={-1}\n        onDoubleClick={onDoubleClick}\n        ref={katexElementRef}\n      />\n      <img src=\"#\" alt=\"\" />\n    </>\n  );\n}\n","import { useCallback, useState, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { ErrorBoundary } from \"react-error-boundary\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Textarea } from \"@/components/ui/textarea\";\n\nimport KatexRenderer from \"@/components/editor/editor-ui/katex-renderer\";\n\ntype Props = {\n  initialEquation?: string;\n  onConfirm: (equation: string, inline: boolean) => void;\n};\n\nexport default function KatexEquationAlterer({\n  onConfirm,\n  initialEquation = \"\",\n}: Props): JSX.Element {\n  const [editor] = useLexicalComposerContext();\n  const [equation, setEquation] = useState<string>(initialEquation);\n  const [inline, setInline] = useState<boolean>(true);\n\n  const onClick = useCallback(() => {\n    onConfirm(equation, inline);\n  }, [onConfirm, equation, inline]);\n\n  const onCheckboxChange = useCallback(() => {\n    setInline(!inline);\n  }, [setInline, inline]);\n\n  return (\n    <>\n      <div className=\"flex items-center space-x-2\">\n        <Label htmlFor=\"inline-toggle\" className=\"text-sm font-medium\">\n          Inline\n        </Label>\n        <Checkbox\n          id=\"inline-toggle\"\n          checked={inline}\n          onCheckedChange={onCheckboxChange}\n        />\n      </div>\n\n      <div className=\"space-y-2\">\n        <Label htmlFor=\"equation-input\" className=\"text-sm font-medium\">\n          Equation\n        </Label>\n        {inline ? (\n          <Input\n            id=\"equation-input\"\n            onChange={(event) => setEquation(event.target.value)}\n            value={equation}\n            placeholder=\"Enter inline equation...\"\n          />\n        ) : (\n          <Textarea\n            id=\"equation-input\"\n            onChange={(event) => setEquation(event.target.value)}\n            value={equation}\n            placeholder=\"Enter block equation...\"\n            className=\"min-h-[100px]\"\n          />\n        )}\n      </div>\n\n      <div className=\"space-y-2\">\n        <Label className=\"text-sm font-medium\">Visualization</Label>\n        <div className=\"rounded-md border bg-muted p-4\">\n          <ErrorBoundary onError={(e) => editor._onError(e)} fallback={null}>\n            <KatexRenderer\n              equation={equation}\n              inline={false}\n              onDoubleClick={() => null}\n            />\n          </ErrorBoundary>\n        </div>\n      </div>\n\n      <div className=\"flex justify-end\">\n        <Button onClick={onClick}>Confirm</Button>\n      </div>\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 { useCallback, useEffect, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $wrapNodeInElement } from \"@lexical/utils\";\nimport \"katex/dist/katex.css\";\nimport {\n  $createParagraphNode,\n  $insertNodes,\n  $isRootOrShadowRoot,\n  COMMAND_PRIORITY_EDITOR,\n  LexicalCommand,\n  LexicalEditor,\n  createCommand,\n} from \"lexical\";\n\nimport {\n  $createEquationNode,\n  EquationNode,\n} from \"@/components/editor/nodes/equation-node\";\nimport KatexEquationAlterer from \"@/components/editor/editor-ui/katex-equation-alterer\";\n\ntype CommandPayload = {\n  equation: string;\n  inline: boolean;\n};\n\nexport const INSERT_EQUATION_COMMAND: LexicalCommand<CommandPayload> =\n  createCommand(\"INSERT_EQUATION_COMMAND\");\n\nexport function InsertEquationDialog({\n  activeEditor,\n  onClose,\n}: {\n  activeEditor: LexicalEditor;\n  onClose: () => void;\n}): JSX.Element {\n  const onEquationConfirm = useCallback(\n    (equation: string, inline: boolean) => {\n      activeEditor.dispatchCommand(INSERT_EQUATION_COMMAND, {\n        equation,\n        inline,\n      });\n      onClose();\n    },\n    [activeEditor, onClose]\n  );\n\n  return <KatexEquationAlterer onConfirm={onEquationConfirm} />;\n}\n\nexport function EquationsPlugin(): JSX.Element | null {\n  const [editor] = useLexicalComposerContext();\n\n  useEffect(() => {\n    if (!editor.hasNodes([EquationNode])) {\n      throw new Error(\n        \"EquationsPlugins: EquationsNode not registered on editor\"\n      );\n    }\n\n    return editor.registerCommand<CommandPayload>(\n      INSERT_EQUATION_COMMAND,\n      (payload) => {\n        const { equation, inline } = payload;\n        const equationNode = $createEquationNode(equation, inline);\n\n        $insertNodes([equationNode]);\n        if ($isRootOrShadowRoot(equationNode.getParentOrThrow())) {\n          $wrapNodeInElement(equationNode, $createParagraphNode).selectEnd();\n        }\n\n        return true;\n      },\n      COMMAND_PRIORITY_EDITOR\n    );\n  }, [editor]);\n\n  return null;\n}\n","import React, { Suspense } from \"react\";\nimport {\n  ReactElement,\n  useEffect,\n  useLayoutEffect,\n  useRef,\n  useState,\n  JSX,\n} from \"react\";\n\nimport { lazy } from \"react\";\n\nimport {\n  AppState,\n  BinaryFiles,\n  ExcalidrawImperativeAPI,\n  ExcalidrawInitialDataState,\n} from \"@excalidraw/excalidraw/types\";\nimport { DialogTrigger } from \"@radix-ui/react-dialog\";\n\nimport { Button } from \"../../../../components/Button\";\nimport { Dialog, DialogClose, DialogContent } from \"../../../../components/Dialog\";\n\n// @ts-ignore\nconst Excalidraw = lazy(() => import(\"./excalidraw\"));\n\nexport type ExcalidrawInitialElements = ExcalidrawInitialDataState[\"elements\"];\n\ntype Props = {\n  closeOnClickOutside?: boolean;\n  /**\n   * The initial set of elements to draw into the scene\n   */\n  initialElements: ExcalidrawInitialElements;\n  /**\n   * The initial set of elements to draw into the scene\n   */\n  initialAppState: AppState;\n  /**\n   * The initial set of elements to draw into the scene\n   */\n  initialFiles: BinaryFiles;\n  /**\n   * Controls the visibility of the modal\n   */\n  isShown?: boolean;\n  /**\n   * Callback when closing and discarding the new changes\n   */\n  onClose: () => void;\n  /**\n   * Completely remove Excalidraw component\n   */\n  onDelete: () => void;\n  /**\n   * Callback when the save button is clicked\n   */\n  onSave: (\n    elements: ExcalidrawInitialElements,\n    appState: Partial<AppState>,\n    files: BinaryFiles\n  ) => void;\n};\n\nexport const useCallbackRefState = () => {\n  const [refValue, setRefValue] =\n    React.useState<ExcalidrawImperativeAPI | null>(null);\n  const refCallback = React.useCallback(\n    (value: ExcalidrawImperativeAPI | null) => setRefValue(value),\n    []\n  );\n  return [refValue, refCallback] as const;\n};\n\n/**\n * @explorer-desc\n * A component which renders a modal with Excalidraw (a painting app)\n * which can be used to export an editable image\n */\nexport function ExcalidrawModal({\n  closeOnClickOutside = false,\n  onSave,\n  initialElements,\n  initialAppState,\n  initialFiles,\n  isShown = false,\n  onDelete,\n  onClose,\n}: Props): ReactElement | null {\n  const excaliDrawModelRef = useRef<HTMLDivElement | null>(null);\n  const [excalidrawAPI, excalidrawAPIRefCallback] = useCallbackRefState();\n  const [discardModalOpen, setDiscardModalOpen] = useState(false);\n  const [elements, setElements] =\n    useState<ExcalidrawInitialElements>(initialElements);\n  const [files, setFiles] = useState<BinaryFiles>(initialFiles);\n\n  useEffect(() => {\n    if (excaliDrawModelRef.current !== null) {\n      excaliDrawModelRef.current.focus();\n    }\n  }, []);\n\n  useEffect(() => {\n    let modalOverlayElement: HTMLElement | null = null;\n\n    const clickOutsideHandler = (event: MouseEvent) => {\n      const target = event.target;\n      if (\n        excaliDrawModelRef.current !== null &&\n        !excaliDrawModelRef.current.contains(target as Node) &&\n        closeOnClickOutside\n      ) {\n        onDelete();\n      }\n    };\n\n    if (excaliDrawModelRef.current !== null) {\n      modalOverlayElement = excaliDrawModelRef.current?.parentElement;\n      if (modalOverlayElement !== null) {\n        modalOverlayElement?.addEventListener(\"click\", clickOutsideHandler);\n      }\n    }\n\n    return () => {\n      if (modalOverlayElement !== null) {\n        modalOverlayElement?.removeEventListener(\"click\", clickOutsideHandler);\n      }\n    };\n  }, [closeOnClickOutside, onDelete]);\n\n  useLayoutEffect(() => {\n    const currentModalRef = excaliDrawModelRef.current;\n\n    const onKeyDown = (event: KeyboardEvent) => {\n      if (event.key === \"Escape\") {\n        onDelete();\n      }\n    };\n\n    if (currentModalRef !== null) {\n      currentModalRef.addEventListener(\"keydown\", onKeyDown);\n    }\n\n    return () => {\n      if (currentModalRef !== null) {\n        currentModalRef.removeEventListener(\"keydown\", onKeyDown);\n      }\n    };\n  }, [elements, files, onDelete]);\n\n  const save = () => {\n    if (elements && elements.filter((el: any) => !el.isDeleted).length > 0) {\n      const appState = excalidrawAPI?.getAppState();\n      // We only need a subset of the state\n      const partialState: Partial<AppState> = {\n        exportBackground: appState?.exportBackground,\n        exportScale: appState?.exportScale,\n        exportWithDarkMode: appState?.theme === \"dark\",\n        isBindingEnabled: appState?.isBindingEnabled,\n        isLoading: appState?.isLoading,\n        name: appState?.name,\n        theme: appState?.theme,\n        viewBackgroundColor: appState?.viewBackgroundColor,\n        viewModeEnabled: appState?.viewModeEnabled,\n        zenModeEnabled: appState?.zenModeEnabled,\n        zoom: appState?.zoom,\n      };\n      onSave(elements, partialState, files);\n    } else {\n      // delete node if the scene is clear\n      onDelete();\n    }\n  };\n  // @ts-ignore\n  const discard = () => {\n    setDiscardModalOpen(true);\n  };\n\n  function ShowDiscardDialog(): JSX.Element {\n    return (\n      <Dialog open={discardModalOpen} onOpenChange={setDiscardModalOpen}>\n        <DialogContent>\n          Are you sure you want to discard the changes?\n        </DialogContent>\n        <DialogClose asChild>\n          <Button\n            onClick={() => {\n              setDiscardModalOpen(false);\n              onClose();\n            }}\n          >\n            Discard\n          </Button>\n        </DialogClose>\n        <DialogClose asChild>\n          <Button onClick={() => setDiscardModalOpen(false)}>Cancel</Button>\n        </DialogClose>\n      </Dialog>\n    );\n  }\n\n  if (isShown === false) {\n    return null;\n  }\n\n  const onChange = (\n    els: ExcalidrawInitialElements,\n    _: AppState,\n    fls: BinaryFiles\n  ) => {\n    setElements(els);\n    setFiles(fls);\n  };\n\n  return (\n    <Dialog open={isShown}>\n      <DialogTrigger />\n      <DialogContent className=\"h-4/6 max-w-4xl overflow-hidden p-0\">\n        <div className=\"relative\" role=\"dialog\">\n          <div className=\"h-full w-full\" ref={excaliDrawModelRef} tabIndex={-1}>\n            <div className=\"h-full w-full\">\n              {discardModalOpen && <ShowDiscardDialog />}\n              <Suspense fallback={<div className=\"flex h-full items-center justify-center\">Loading...</div>}>\n                <Excalidraw\n                  onChange={onChange}\n                  excalidrawAPI={excalidrawAPIRefCallback}\n                  initialData={{\n                    appState: initialAppState || { isLoading: false },\n                    elements: initialElements,\n                    files: initialFiles,\n                  }}\n                />\n              </Suspense>\n              <div className=\"absolute  bottom-5 right-1/2 z-10 flex translate-x-1/2 gap-2\">\n                <Button  onClick={onClose}>\n                  Discard\n                </Button>\n                <Button onClick={save}>Save</Button>\n              </div>\n            </div>\n          </div>\n        </div>\n      </DialogContent>\n    </Dialog>\n  );\n}\n","import { useEffect, useState, JSX } from \"react\";\n\nimport type { AppState, BinaryFiles } from \"@excalidraw/excalidraw/types\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $wrapNodeInElement } from \"@lexical/utils\";\nimport {\n  $createParagraphNode,\n  $insertNodes,\n  $isRootOrShadowRoot,\n  COMMAND_PRIORITY_EDITOR,\n  LexicalCommand,\n  createCommand,\n} from \"lexical\";\n\nimport {\n  $createExcalidrawNode,\n  ExcalidrawNode,\n} from \"@/components/editor/nodes/excalidraw-node\";\nimport type { ExcalidrawInitialElements } from \"@/components/editor/editor-ui/excalidraw-modal\";\nimport { ExcalidrawModal } from \"@/components/editor/editor-ui/excalidraw-modal\";\n\nexport const INSERT_EXCALIDRAW_COMMAND: LexicalCommand<void> = createCommand(\n  \"INSERT_EXCALIDRAW_COMMAND\"\n);\n\nexport function ExcalidrawPlugin(): JSX.Element | null {\n  const [editor] = useLexicalComposerContext();\n  const [isModalOpen, setModalOpen] = useState<boolean>(false);\n\n  useEffect(() => {\n    if (!editor.hasNodes([ExcalidrawNode])) {\n      throw new Error(\n        \"ExcalidrawPlugin: ExcalidrawNode not registered on editor\"\n      );\n    }\n\n    return editor.registerCommand(\n      INSERT_EXCALIDRAW_COMMAND,\n      () => {\n        setModalOpen(true);\n        return true;\n      },\n      COMMAND_PRIORITY_EDITOR\n    );\n  }, [editor]);\n\n  const onClose = () => {\n    setModalOpen(false);\n  };\n\n  const onDelete = () => {\n    setModalOpen(false);\n  };\n\n  const onSave = (\n    elements: ExcalidrawInitialElements,\n    appState: Partial<AppState>,\n    files: BinaryFiles\n  ) => {\n    editor.update(() => {\n      const excalidrawNode = $createExcalidrawNode();\n      excalidrawNode.setData(\n        JSON.stringify({\n          appState,\n          elements,\n          files,\n        })\n      );\n      $insertNodes([excalidrawNode]);\n      if ($isRootOrShadowRoot(excalidrawNode.getParentOrThrow())) {\n        $wrapNodeInElement(excalidrawNode, $createParagraphNode).selectEnd();\n      }\n    });\n    setModalOpen(false);\n  };\n  return (\n    <ExcalidrawModal\n      initialElements={[]}\n      initialAppState={{} as AppState}\n      initialFiles={{}}\n      isShown={isModalOpen}\n      onDelete={onDelete}\n      onClose={onClose}\n      onSave={onSave}\n      closeOnClickOutside={false}\n    />\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","\"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, useCallback, useEffect, useRef, useState, JSX } from \"react\";\n\nimport {\n  $createLinkNode,\n  $isAutoLinkNode,\n  $isLinkNode,\n  TOGGLE_LINK_COMMAND,\n} from \"@lexical/link\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport {\n  $getSelection,\n  $isLineBreakNode,\n  $isRangeSelection,\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 { Button } from \"../../../../components/Button\";\nimport { Input } from \"@/components/ui/input\";\n\nimport { useFloatingLinkContext } from \"@/components/editor/context/floating-link-context\";\nimport { getSelectedNode } from \"@/components/editor/utils/get-selected-node\";\nimport { setFloatingElemPositionForLinkEditor } from \"@/components/editor/utils/set-floating-elem-position-for-link-editor\";\nimport { sanitizeUrl } from \"@/components/editor/utils/url\";\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>(\n    null\n  );\n\n  const $updateLinkEditor = useCallback(() => {\n    const selection = $getSelection();\n    if ($isRangeSelection(selection)) {\n      const node = getSelectedNode(selection);\n      const linkParent = $findMatchingParent(node, $isLinkNode);\n\n      if (linkParent) {\n        setLinkUrl(linkParent.getURL());\n      } else if ($isLinkNode(node)) {\n        setLinkUrl(node.getURL());\n      } else {\n        setLinkUrl(\"\");\n      }\n      if (isLinkEditMode) {\n        setEditedLinkUrl(linkUrl);\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    if (\n      selection !== null &&\n      nativeSelection !== null &&\n      rootElement !== null &&\n      rootElement.contains(nativeSelection.anchorNode) &&\n      editor.isEditable()\n    ) {\n      const domRect: DOMRect | undefined =\n        nativeSelection.focusNode?.parentElement?.getBoundingClientRect();\n      if (domRect) {\n        domRect.y += 40;\n        setFloatingElemPositionForLinkEditor(domRect, editorElem, anchorElem);\n      }\n      setLastSelection(selection);\n    } else if (!activeElement || activeElement.className !== \"link-input\") {\n      if (rootElement !== null) {\n        setFloatingElemPositionForLinkEditor(null, editorElem, anchorElem);\n      }\n      setLastSelection(null);\n      setIsLinkEditMode(false);\n      setLinkUrl(\"\");\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);\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      setIsLink(true);\n    }\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    if (lastSelection !== null) {\n      if (linkUrl !== \"\") {\n        editor.dispatchCommand(TOGGLE_LINK_COMMAND, sanitizeUrl(editedLinkUrl));\n        editor.update(() => {\n          const selection = $getSelection();\n          if ($isRangeSelection(selection)) {\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      }\n      setEditedLinkUrl(\"https://\");\n      setIsLinkEditMode(false);\n    }\n  };\n  return (\n    <div\n      ref={editorRef}\n      className=\"absolute left-0 top-0 w-full max-w-sm rounded-md opacity-0 shadow-md\"\n    >\n      {!isLink ? null : isLinkEditMode ? (\n        <div className=\"flex items-center space-x-2 rounded-md border p-1 pl-2\">\n          <Input\n            ref={inputRef}\n            value={editedLinkUrl}\n            onChange={(event) => setEditedLinkUrl(event.target.value)}\n            onKeyDown={monitorInputInteraction}\n            className=\"flex-grow\"\n          />\n          <Button\n            size=\"M\"\n            variant={\"BlueContStyle\"}\n            onClick={() => {\n              setIsLinkEditMode(false);\n              setIsLink(false);\n            }}\n            className=\"shrink-0\"\n          >\n            <X className=\"h-4 w-4\" />\n          </Button>\n          <Button\n            size=\"M\"\n            variant={\"BlueContStyle\"}\n            onClick={handleLinkSubmission}\n            className=\"shrink-0\"\n          >\n            <Check className=\"h-4 w-4\" />\n          </Button>\n        </div>\n      ) : (\n        <div className=\"flex items-center justify-between rounded-md border p-1 pl-2\">\n          <a\n            href={sanitizeUrl(linkUrl)}\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            className=\"overflow-hidden text-ellipsis whitespace-nowrap text-sm\"\n          >\n            {linkUrl}\n          </a>\n          <div className=\"flex\">\n            <Button\n              size=\"M\"\n              variant={\"BlueContStyle\"}\n              onClick={() => {\n                setEditedLinkUrl(linkUrl);\n                setIsLinkEditMode(true);\n              }}\n            >\n              <Pencil className=\"h-4 w-4\" />\n            </Button>\n            <Button\n              size=\"M\"\n              variant={\"RedContStyle\"}\n              onClick={() => {\n                editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n              }}\n            >\n              <Trash className=\"h-4 w-4\" />\n            </Button>\n          </div>\n        </div>\n      )}\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\n        if (!badNode) {\n          setIsLink(true);\n        } else {\n          setIsLink(false);\n        }\n      }\n    }\n    return mergeRegister(\n      editor.registerUpdateListener(({ editorState }) => {\n        editorState.read(() => {\n          $updateToolbar();\n        });\n      }),\n      editor.registerCommand(\n        SELECTION_CHANGE_COMMAND,\n        (_payload, newEditor) => {\n          $updateToolbar();\n          setActiveEditor(newEditor);\n          return false;\n        },\n        COMMAND_PRIORITY_CRITICAL\n      ),\n      editor.registerCommand(\n        CLICK_COMMAND,\n        (payload) => {\n          const selection = $getSelection();\n          if ($isRangeSelection(selection)) {\n            const node = getSelectedNode(selection);\n            const linkNode = $findMatchingParent(node, $isLinkNode);\n            if ($isLinkNode(linkNode) && (payload.metaKey || payload.ctrlKey)) {\n              window.open(linkNode.getURL(), \"_blank\");\n              return true;\n            }\n          }\n          return false;\n        },\n        COMMAND_PRIORITY_LOW\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}: {\n  anchorElem: HTMLDivElement | null;\n}): JSX.Element | null {\n  const [editor] = useLexicalComposerContext();\n  const { isLinkEditMode, setIsLinkEditMode } = useFloatingLinkContext();\n\n  return useFloatingLinkEditorToolbar(\n    editor,\n    anchorElem,\n    isLinkEditMode,\n    setIsLinkEditMode\n  );\n}\n","import { Dispatch, useCallback, useEffect, useRef, useState, JSX } from \"react\";\n\nimport { $isCodeHighlightNode } from \"@lexical/code\";\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { mergeRegister } from \"@lexical/utils\";\n\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 { SubscriptIcon, SuperscriptIcon } from \"lucide-react\";\nimport { createPortal } from \"react-dom\";\n\nimport { Separator } from \"@/components/ui/separator\";\nimport { ToggleGroup, ToggleGroupItem } from \"@/components/ui/toggle-group\";\n\nimport { useFloatingLinkContext } from \"@/components/editor/context/floating-link-context\";\nimport { getDOMRangeRect } from \"@/components/editor/utils/get-dom-range-rect\";\nimport { getSelectedNode } from \"@/components/editor/utils/get-selected-node\";\nimport { setFloatingElemPosition } from \"@/components/editor/utils/set-floating-elem-position\";\n\nfunction TextFormatFloatingToolbar({\n  editor,\n  anchorElem,\n  isLink,\n  isBold,\n  isItalic,\n  isUnderline,\n  isCode,\n  isStrikethrough,\n  isSubscript,\n  isSuperscript,\n  setIsLinkEditMode,\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  setIsLinkEditMode: Dispatch<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  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 (!popupCharStylesEditorRef.current.contains(elementUnderMouse)) {\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\n  // @ts-ignore\n  function mouseUpListener(e: MouseEvent) {\n    if (popupCharStylesEditorRef?.current) {\n      if (popupCharStylesEditorRef.current.style.pointerEvents !== \"auto\") {\n        popupCharStylesEditorRef.current.style.pointerEvents = \"auto\";\n      }\n    }\n  }\n\n  useEffect(() => {\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]);\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    }\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);\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=\"absolute left-0 top-0 z-50 flex gap-0.5 rounded-[4px] border border-border-system-global-secondary p-1 opacity-0 shadow-md transition-opacity duration-200 will-change-transform bg-background-system-body-primary\"\n    >\n      {editor.isEditable() && (\n        <>\n          <ToggleGroup\n            type=\"multiple\"\n            size=\"sm\"\n            className=\"gap-0\"\n            defaultValue={[\n              isBold ? \"bold\" : \"\",\n              isItalic ? \"italic\" : \"\",\n              isUnderline ? \"underline\" : \"\",\n              isStrikethrough ? \"strikethrough\" : \"\",\n              isSubscript ? \"subscript\" : \"\",\n              isSuperscript ? \"superscript\" : \"\",\n              isCode ? \"code\" : \"\",\n              isLink ? \"link\" : \"\",\n            ]}\n          >\n            <ToggleGroupItem\n              value=\"bold\"\n              aria-label=\"Toggle bold\"\n              className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n              onClick={() => {\n                editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\");\n              }}\n            >\n              <i className=\"ri-bold\"></i>\n            </ToggleGroupItem>\n            <ToggleGroupItem\n              value=\"italic\"\n              aria-label=\"Toggle italic\"\n              className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n              onClick={() => {\n                editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"italic\");\n              }}\n            >\n              <i className=\"ri-italic\"></i>\n            </ToggleGroupItem>\n            <ToggleGroupItem\n              value=\"underline\"\n              aria-label=\"Toggle underline\"\n              className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n              onClick={() => {\n                editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"underline\");\n              }}\n            >\n              <i className=\"ri-underline\"></i>\n            </ToggleGroupItem>\n            <ToggleGroupItem\n              value=\"strikethrough\"\n              aria-label=\"Toggle strikethrough\"\n              className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n              onClick={() => {\n                editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"strikethrough\");\n              }}\n            >\n              <i className=\"ri-strikethrough\"></i>\n            </ToggleGroupItem>\n            <Separator orientation=\"vertical\" className=\"mx-0.5 h-5 bg-border-system-global-secondary\" />\n            <ToggleGroupItem\n              value=\"code\"\n              aria-label=\"Toggle code\"\n              className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n              onClick={() => {\n                editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"code\");\n              }}\n            >\n              <i className=\"ri-code-line\"></i>\n            </ToggleGroupItem>\n            <ToggleGroupItem\n              value=\"link\"\n              aria-label=\"Toggle link\"\n              className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n              onClick={insertLink}\n            >\n              <i className=\"ri-link\"></i>\n            </ToggleGroupItem>\n            <Separator orientation=\"vertical\" className=\"mx-0.5 h-5 bg-border-system-global-secondary\" />\n          </ToggleGroup>\n          <ToggleGroup\n            type=\"single\"\n            size=\"sm\"\n            className=\"gap-0\"\n            defaultValue={\n              isSubscript ? \"subscript\" : isSuperscript ? \"superscript\" : \"\"\n            }\n          >\n            <ToggleGroupItem\n              value=\"subscript\"\n              aria-label=\"Toggle subscript\"\n              className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n              onClick={() => {\n                editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"subscript\");\n              }}\n            >\n              <SubscriptIcon className=\"h-4 w-4\" />\n            </ToggleGroupItem>\n            <ToggleGroupItem\n              value=\"superscript\"\n              aria-label=\"Toggle superscript\"\n              className=\"text-content-system-global-primary hover:text-white data-[state=on]:text-content-system-global-primary\"\n              onClick={() => {\n                editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"superscript\");\n              }}\n            >\n              <SuperscriptIcon className=\"h-4 w-4\" />\n            </ToggleGroupItem>\n          </ToggleGroup>\n        </>\n      )}\n    </div>\n  );\n}\n\nfunction useFloatingTextFormatToolbar(\n  editor: LexicalEditor,\n  anchorElem: HTMLDivElement | null,\n  setIsLinkEditMode: Dispatch<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\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\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    <TextFormatFloatingToolbar\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      setIsLinkEditMode={setIsLinkEditMode}\n    />,\n    anchorElem\n  );\n}\n\nexport function FloatingTextFormatToolbarPlugin({\n  anchorElem,\n}: {\n  anchorElem: HTMLDivElement | null;\n}): JSX.Element | null {\n  const [editor] = useLexicalComposerContext();\n  const { setIsLinkEditMode } = useFloatingLinkContext();\n\n  return useFloatingTextFormatToolbar(editor, anchorElem, setIsLinkEditMode);\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","'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 { useCallback, useEffect, JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalTextEntity } from '@lexical/react/useLexicalTextEntity'\nimport type { TextNode } from 'lexical'\n\nimport { $createKeywordNode, KeywordNode } from '@/components/editor/nodes/keyword-node'\n\nconst KEYWORDS_REGEX =\n  /(^|$|[^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ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ﬀ-ﬆﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼＡ-Ｚａ-ｚｦ-ﾾￂ-ￇￊ-ￏￒ-ￗￚ-ￜ])/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) {\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","/**\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 */\n\nimport{LinkNode as t,TOGGLE_LINK_COMMAND as r,$toggleLink as e}from\"@lexical/link\";import{useLexicalComposerContext as o}from\"@lexical/react/LexicalComposerContext\";import{mergeRegister as i,objectKlassEquals as l}from\"@lexical/utils\";import{COMMAND_PRIORITY_LOW as n,PASTE_COMMAND as a,$getSelection as m,$isRangeSelection as s,$isElementNode as u}from\"lexical\";import{useEffect as d}from\"react\";function c({validateUrl:c,attributes:p}){const[f]=o();return d((()=>{if(!f.hasNodes([t]))throw new Error(\"LinkPlugin: LinkNode not registered on editor\");return i(f.registerCommand(r,(t=>{if(null===t)return e(t),!0;if(\"string\"==typeof t)return!(void 0!==c&&!c(t))&&(e(t,p),!0);{const{url:r,target:o,rel:i,title:l}=t;return e(r,{...p,rel:i,target:o,title:l}),!0}}),n),void 0!==c?f.registerCommand(a,(t=>{const e=m();if(!s(e)||e.isCollapsed()||!l(t,ClipboardEvent))return!1;if(null===t.clipboardData)return!1;const o=t.clipboardData.getData(\"text\");return!!c(o)&&(!e.getNodes().some((t=>u(t)))&&(f.dispatchCommand(r,{...p,url:o}),t.preventDefault(),!0))}),n):()=>{})}),[f,c,p]),null}export{c as LinkPlugin};\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 */\n \nimport { JSX } from 'react'\n\nimport { LinkPlugin as LexicalLinkPlugin } from '@lexical/react/LexicalLinkPlugin'\n\nimport { validateUrl } from '@/components/editor/utils/url'\n\nexport function LinkPlugin(): JSX.Element {\n  return <LexicalLinkPlugin validateUrl={validateUrl} />\n}\n\n","import { useEffect } from 'react'\n\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 */\n\nimport { useCallback, useEffect, useMemo, useState, JSX, Suspense } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { lazy } from \"react\";\n\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\";\n\nimport { $createMentionNode } from \"@/components/editor/nodes/mention-node\";\nimport { Command, CommandGroup, CommandItem, CommandList } from \"@/components/ui/command\";\n\nconst LexicalTypeaheadMenuPlugin = lazy(\n  () => import(\"./default/lexical-typeahead-menu-plugin\")\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      setResults([]);\n      return;\n    }\n\n    if (cachedResults === null) {\n      return;\n    } else if (cachedResults !== undefined) {\n      setResults(cachedResults);\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 maybeLeadingWhitespace = match[1];\n\n    const matchingString = match[3];\n    if (matchingString.length >= minMatchLength) {\n      return {\n        leadOffset: match.index + maybeLeadingWhitespace.length,\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  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              <CircleUserRoundIcon className=\"size-4\" />\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  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    <Suspense fallback={<div>Loading...</div>}>\n      {/* @ts-ignore */}\n      <LexicalTypeaheadMenuPlugin<MentionTypeaheadOption>\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=\"fixed w-[200px] rounded-md 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.name}\n                            onSelect={() => {\n                              selectOptionAndCleanUp(option);\n                            }}\n                            className={`flex items-center gap-2 ${\n                              selectedIndex === index\n                                ? \"bg-background-presentation-action-selected\"\n                                : \"!bg-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    </Suspense>\n  );\n}\n","import { useEffect } from 'react'\n\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\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  ReactPortal,\n  useCallback,\n  useEffect,\n  useRef,\n  useState,\n  JSX,\n} from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useLexicalEditable } from \"@lexical/react/useLexicalEditable\";\nimport {\n  $deleteTableColumn__EXPERIMENTAL,\n  $deleteTableRow__EXPERIMENTAL,\n  $getNodeTriplet,\n  $getTableCellNodeFromLexicalNode,\n  $getTableColumnIndexFromTableCellNode,\n  $getTableNodeFromLexicalNodeOrThrow,\n  $getTableRowIndexFromTableCellNode,\n  $insertTableColumn__EXPERIMENTAL,\n  $insertTableRow__EXPERIMENTAL,\n  $isTableCellNode,\n  $isTableRowNode,\n  $isTableSelection,\n  $unmergeCell,\n  HTMLTableElementWithWithTableSelectionState,\n  TableCellHeaderStates,\n  TableCellNode,\n  TableRowNode,\n  TableSelection,\n  getTableObserverFromTableElement,\n} from \"@lexical/table\";\nimport type { ElementNode, LexicalEditor } from \"lexical\";\nimport {\n  $createParagraphNode,\n  $getRoot,\n  $getSelection,\n  $isElementNode,\n  $isParagraphNode,\n  $isRangeSelection,\n  $isTextNode,\n} from \"lexical\";\nimport { ChevronDownIcon, PaintBucketIcon } from \"lucide-react\";\nimport { createPortal } from \"react-dom\";\n\nimport {\n  Command,\n  CommandGroup,\n  CommandItem,\n  CommandList,\n  CommandSeparator,\n} from \"@/components/ui/command\";\nimport {\n  Popover,\n  PopoverContent,\n  PopoverTrigger,\n} from \"@/components/ui/popover\";\n\nimport ColorPicker from \"@/components/editor/editor-ui/colorpicker\";\n\nfunction computeSelectionCount(selection: TableSelection): {\n  columns: number;\n  rows: number;\n} {\n  const selectionShape = selection.getShape();\n  return {\n    columns: selectionShape.toX - selectionShape.fromX + 1,\n    rows: selectionShape.toY - selectionShape.fromY + 1,\n  };\n}\n\nfunction $canUnmerge(): boolean {\n  const selection = $getSelection();\n  if (\n    ($isRangeSelection(selection) && !selection.isCollapsed()) ||\n    ($isTableSelection(selection) && !selection.anchor.is(selection.focus)) ||\n    (!$isRangeSelection(selection) && !$isTableSelection(selection))\n  ) {\n    return false;\n  }\n  const [cell] = $getNodeTriplet(selection.anchor);\n  return cell.__colSpan > 1 || cell.__rowSpan > 1;\n}\n\nfunction $cellContainsEmptyParagraph(cell: TableCellNode): boolean {\n  if (cell.getChildrenSize() !== 1) {\n    return false;\n  }\n  const firstChild = cell.getFirstChildOrThrow();\n  if (!$isParagraphNode(firstChild) || !firstChild.isEmpty()) {\n    return false;\n  }\n  return true;\n}\n\nfunction $selectLastDescendant(node: ElementNode): void {\n  const lastDescendant = node.getLastDescendant();\n  if ($isTextNode(lastDescendant)) {\n    lastDescendant.select();\n  } else if ($isElementNode(lastDescendant)) {\n    lastDescendant.selectEnd();\n  } else if (lastDescendant !== null) {\n    lastDescendant.selectNext();\n  }\n}\n\nfunction currentCellBackgroundColor(editor: LexicalEditor): null | string {\n  return editor.getEditorState().read(() => {\n    const selection = $getSelection();\n    if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n      const [cell] = $getNodeTriplet(selection.anchor);\n      if ($isTableCellNode(cell)) {\n        return cell.getBackgroundColor();\n      }\n    }\n    return null;\n  });\n}\n\ntype TableCellActionMenuProps = Readonly<{\n  contextRef: { current: null | HTMLElement };\n  onClose: () => void;\n  setIsMenuOpen: (isOpen: boolean) => void;\n  tableCellNode: TableCellNode;\n  cellMerge: boolean;\n}>;\n\nfunction TableActionMenu({\n  onClose,\n  tableCellNode: _tableCellNode,\n  setIsMenuOpen,\n  contextRef,\n  cellMerge,\n}: TableCellActionMenuProps) {\n  const [editor] = useLexicalComposerContext();\n  const dropDownRef = useRef<HTMLDivElement | null>(null);\n  const [tableCellNode, updateTableCellNode] = useState(_tableCellNode);\n  const [selectionCounts, updateSelectionCounts] = useState({\n    columns: 1,\n    rows: 1,\n  });\n  const [canMergeCells, setCanMergeCells] = useState(false);\n  const [canUnmergeCell, setCanUnmergeCell] = useState(false);\n  const [backgroundColor, setBackgroundColor] = useState(\n    () => currentCellBackgroundColor(editor) || \"\"\n  );\n\n  useEffect(() => {\n    return editor.registerMutationListener(\n      TableCellNode,\n      (nodeMutations) => {\n        const nodeUpdated =\n          nodeMutations.get(tableCellNode.getKey()) === \"updated\";\n\n        if (nodeUpdated) {\n          editor.getEditorState().read(() => {\n            updateTableCellNode(tableCellNode.getLatest());\n          });\n          setBackgroundColor(currentCellBackgroundColor(editor) || \"\");\n        }\n      },\n      { skipInitialization: true }\n    );\n  }, [editor, tableCellNode]);\n\n  useEffect(() => {\n    editor.getEditorState().read(() => {\n      const selection = $getSelection();\n      // Merge cells\n      if ($isTableSelection(selection)) {\n        const currentSelectionCounts = computeSelectionCount(selection);\n        updateSelectionCounts(computeSelectionCount(selection));\n        setCanMergeCells(\n          currentSelectionCounts.columns > 1 || currentSelectionCounts.rows > 1\n        );\n      }\n      // Unmerge cell\n      setCanUnmergeCell($canUnmerge());\n    });\n  }, [editor]);\n\n  useEffect(() => {\n    const menuButtonElement = contextRef.current;\n    const dropDownElement = dropDownRef.current;\n    const rootElement = editor.getRootElement();\n\n    if (\n      menuButtonElement != null &&\n      dropDownElement != null &&\n      rootElement != null\n    ) {\n      const rootEleRect = rootElement.getBoundingClientRect();\n      const menuButtonRect = menuButtonElement.getBoundingClientRect();\n      dropDownElement.style.opacity = \"1\";\n      const dropDownElementRect = dropDownElement.getBoundingClientRect();\n      const margin = 5;\n      let leftPosition = menuButtonRect.right + margin;\n      if (\n        leftPosition + dropDownElementRect.width > window.innerWidth ||\n        leftPosition + dropDownElementRect.width > rootEleRect.right\n      ) {\n        const position =\n          menuButtonRect.left - dropDownElementRect.width - margin;\n        leftPosition = (position < 0 ? margin : position) + window.pageXOffset;\n      }\n      dropDownElement.style.left = `${leftPosition + window.pageXOffset}px`;\n\n      let topPosition = menuButtonRect.top;\n      if (topPosition + dropDownElementRect.height > window.innerHeight) {\n        const position = menuButtonRect.bottom - dropDownElementRect.height;\n        topPosition = (position < 0 ? margin : position) + window.pageYOffset;\n      }\n      dropDownElement.style.top = `${topPosition + +window.pageYOffset}px`;\n    }\n  }, [contextRef, dropDownRef, editor]);\n\n  useEffect(() => {\n    function handleClickOutside(event: MouseEvent) {\n      if (\n        dropDownRef.current != null &&\n        contextRef.current != null &&\n        !dropDownRef.current.contains(event.target as Node) &&\n        !contextRef.current.contains(event.target as Node)\n      ) {\n        setIsMenuOpen(false);\n      }\n    }\n\n    window.addEventListener(\"click\", handleClickOutside);\n\n    return () => window.removeEventListener(\"click\", handleClickOutside);\n  }, [setIsMenuOpen, contextRef]);\n\n  const clearTableSelection = useCallback(() => {\n    editor.update(() => {\n      if (tableCellNode.isAttached()) {\n        const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n        const tableElement = editor.getElementByKey(\n          tableNode.getKey()\n        ) as HTMLTableElementWithWithTableSelectionState;\n\n        if (!tableElement) {\n          throw new Error(\"Expected to find tableElement in DOM\");\n        }\n\n        const tableObserver = getTableObserverFromTableElement(tableElement);\n        if (tableObserver !== null) {\n          tableObserver.$clearHighlight();\n        }\n\n        tableNode.markDirty();\n        updateTableCellNode(tableCellNode.getLatest());\n      }\n\n      const rootNode = $getRoot();\n      rootNode.selectStart();\n    });\n  }, [editor, tableCellNode]);\n\n  const mergeTableCellsAtSelection = () => {\n    editor.update(() => {\n      const selection = $getSelection();\n      if ($isTableSelection(selection)) {\n        const { columns, rows } = computeSelectionCount(selection);\n        const nodes = selection.getNodes();\n        let firstCell: null | TableCellNode = null;\n        for (let i = 0; i < nodes.length; i++) {\n          const node = nodes[i];\n          if ($isTableCellNode(node)) {\n            if (firstCell === null) {\n              node.setColSpan(columns).setRowSpan(rows);\n              firstCell = node;\n              const isEmpty = $cellContainsEmptyParagraph(node);\n              let firstChild;\n              if (\n                isEmpty &&\n                $isParagraphNode((firstChild = node.getFirstChild()))\n              ) {\n                firstChild.remove();\n              }\n            } else if ($isTableCellNode(firstCell)) {\n              const isEmpty = $cellContainsEmptyParagraph(node);\n              if (!isEmpty) {\n                firstCell.append(...node.getChildren());\n              }\n              node.remove();\n            }\n          }\n        }\n        if (firstCell !== null) {\n          if (firstCell.getChildrenSize() === 0) {\n            firstCell.append($createParagraphNode());\n          }\n          $selectLastDescendant(firstCell);\n        }\n        onClose();\n      }\n    });\n  };\n\n  const unmergeTableCellsAtSelection = () => {\n    editor.update(() => {\n      $unmergeCell();\n    });\n  };\n\n  const insertTableRowAtSelection = useCallback(\n    (shouldInsertAfter: boolean) => {\n      editor.update(() => {\n        $insertTableRow__EXPERIMENTAL(shouldInsertAfter);\n        onClose();\n      });\n    },\n    [editor, onClose]\n  );\n\n  const insertTableColumnAtSelection = useCallback(\n    (shouldInsertAfter: boolean) => {\n      editor.update(() => {\n        for (let i = 0; i < selectionCounts.columns; i++) {\n          $insertTableColumn__EXPERIMENTAL(shouldInsertAfter);\n        }\n        onClose();\n      });\n    },\n    [editor, onClose, selectionCounts.columns]\n  );\n\n  const deleteTableRowAtSelection = useCallback(() => {\n    editor.update(() => {\n      $deleteTableRow__EXPERIMENTAL();\n      onClose();\n    });\n  }, [editor, onClose]);\n\n  const deleteTableAtSelection = useCallback(() => {\n    editor.update(() => {\n      const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n      tableNode.remove();\n\n      clearTableSelection();\n      onClose();\n    });\n  }, [editor, tableCellNode, clearTableSelection, onClose]);\n\n  const deleteTableColumnAtSelection = useCallback(() => {\n    editor.update(() => {\n      $deleteTableColumn__EXPERIMENTAL();\n      onClose();\n    });\n  }, [editor, onClose]);\n\n  const toggleTableRowIsHeader = useCallback(() => {\n    editor.update(() => {\n      const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n\n      const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode);\n\n      const tableRows = tableNode.getChildren();\n\n      if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\n        throw new Error(\"Expected table cell to be inside of table row.\");\n      }\n\n      const tableRow = tableRows[tableRowIndex];\n\n      if (!$isTableRowNode(tableRow)) {\n        throw new Error(\"Expected table row\");\n      }\n\n      const newStyle =\n        tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.ROW;\n      tableRow.getChildren().forEach((tableCell) => {\n        if (!$isTableCellNode(tableCell)) {\n          throw new Error(\"Expected table cell\");\n        }\n\n        tableCell.setHeaderStyles(newStyle, TableCellHeaderStates.ROW);\n      });\n\n      clearTableSelection();\n      onClose();\n    });\n  }, [editor, tableCellNode, clearTableSelection, onClose]);\n\n  const toggleTableColumnIsHeader = useCallback(() => {\n    editor.update(() => {\n      const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n\n      const tableColumnIndex =\n        $getTableColumnIndexFromTableCellNode(tableCellNode);\n\n      const tableRows = tableNode.getChildren<TableRowNode>();\n      const maxRowsLength = Math.max(\n        ...tableRows.map((row) => row.getChildren().length)\n      );\n\n      if (tableColumnIndex >= maxRowsLength || tableColumnIndex < 0) {\n        throw new Error(\"Expected table cell to be inside of table row.\");\n      }\n\n      const newStyle =\n        tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.COLUMN;\n      for (let r = 0; r < tableRows.length; r++) {\n        const tableRow = tableRows[r];\n\n        if (!$isTableRowNode(tableRow)) {\n          throw new Error(\"Expected table row\");\n        }\n\n        const tableCells = tableRow.getChildren();\n        if (tableColumnIndex >= tableCells.length) {\n          // if cell is outside of bounds for the current row (for example various merge cell cases) we shouldn't highlight it\n          continue;\n        }\n\n        const tableCell = tableCells[tableColumnIndex];\n\n        if (!$isTableCellNode(tableCell)) {\n          throw new Error(\"Expected table cell\");\n        }\n\n        tableCell.setHeaderStyles(newStyle, TableCellHeaderStates.COLUMN);\n      }\n      clearTableSelection();\n      onClose();\n    });\n  }, [editor, tableCellNode, clearTableSelection, onClose]);\n\n  const toggleRowStriping = useCallback(() => {\n    editor.update(() => {\n      if (tableCellNode.isAttached()) {\n        const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n        if (tableNode) {\n          tableNode.setRowStriping(!tableNode.getRowStriping());\n        }\n      }\n      clearTableSelection();\n      onClose();\n    });\n  }, [editor, tableCellNode, clearTableSelection, onClose]);\n\n  const handleCellBackgroundColor = useCallback(\n    (value: string) => {\n      editor.update(() => {\n        const selection = $getSelection();\n        if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n          const [cell] = $getNodeTriplet(selection.anchor);\n          if ($isTableCellNode(cell)) {\n            cell.setBackgroundColor(value);\n          }\n\n          if ($isTableSelection(selection)) {\n            const nodes = selection.getNodes();\n\n            for (let i = 0; i < nodes.length; i++) {\n              const node = nodes[i];\n              if ($isTableCellNode(node)) {\n                node.setBackgroundColor(value);\n              }\n            }\n          }\n        }\n      });\n    },\n    [editor]\n  );\n\n  let mergeCellButton: null | JSX.Element = null;\n  if (cellMerge) {\n    if (canMergeCells) {\n      mergeCellButton = (\n        <CommandItem onSelect={() => mergeTableCellsAtSelection()}>\n          Merge cells\n        </CommandItem>\n      );\n    } else if (canUnmergeCell) {\n      mergeCellButton = (\n        <CommandItem onSelect={() => unmergeTableCellsAtSelection()}>\n          Unmerge cells\n        </CommandItem>\n      );\n    }\n  }\n\n  return (\n    <>\n      <Command>\n        <CommandList>\n          <CommandGroup>\n            {mergeCellButton}\n            <CommandItem className=\"flex justify-between\">\n              Background color\n              <ColorPicker\n                color={backgroundColor}\n                onChange={handleCellBackgroundColor}\n                icon={<PaintBucketIcon className=\"size-4\" />}\n              />\n            </CommandItem>\n            <CommandItem onSelect={() => toggleRowStriping()}>\n              Toggle row striping\n            </CommandItem>\n            <CommandSeparator />\n            <CommandItem onSelect={() => insertTableRowAtSelection(false)}>\n              Insert{\" \"}\n              {selectionCounts.rows === 1\n                ? \"row\"\n                : `${selectionCounts.rows} rows`}{\" \"}\n              above\n            </CommandItem>\n            <CommandItem onSelect={() => insertTableRowAtSelection(true)}>\n              Insert{\" \"}\n              {selectionCounts.rows === 1\n                ? \"row\"\n                : `${selectionCounts.rows} rows`}{\" \"}\n              below\n            </CommandItem>\n            <CommandSeparator />\n            <CommandItem onSelect={() => insertTableColumnAtSelection(false)}>\n              Insert{\" \"}\n              {selectionCounts.columns === 1\n                ? \"column\"\n                : `${selectionCounts.columns} columns`}{\" \"}\n              left\n            </CommandItem>\n            <CommandItem onSelect={() => insertTableColumnAtSelection(true)}>\n              Insert{\" \"}\n              {selectionCounts.columns === 1\n                ? \"column\"\n                : `${selectionCounts.columns} columns`}{\" \"}\n              right\n            </CommandItem>\n            <CommandSeparator />\n            <CommandItem onSelect={() => deleteTableColumnAtSelection()}>\n              Delete column\n            </CommandItem>\n            <CommandItem onSelect={() => deleteTableRowAtSelection()}>\n              Delete row\n            </CommandItem>\n            <CommandItem onSelect={() => deleteTableAtSelection()}>\n              Delete table\n            </CommandItem>\n            <CommandSeparator />\n            <CommandItem onSelect={() => toggleTableRowIsHeader()}>\n              {(tableCellNode.__headerState & TableCellHeaderStates.ROW) ===\n              TableCellHeaderStates.ROW\n                ? \"Remove\"\n                : \"Add\"}{\" \"}\n              row header\n            </CommandItem>\n            <CommandItem onSelect={() => toggleTableColumnIsHeader()}>\n              {(tableCellNode.__headerState & TableCellHeaderStates.COLUMN) ===\n              TableCellHeaderStates.COLUMN\n                ? \"Remove\"\n                : \"Add\"}{\" \"}\n              column header\n            </CommandItem>\n          </CommandGroup>\n        </CommandList>\n      </Command>\n    </>\n  );\n}\n\nfunction TableCellActionMenuContainer({\n  anchorElem,\n  cellMerge,\n}: {\n  anchorElem: HTMLElement;\n  cellMerge: boolean;\n}): JSX.Element {\n  const [editor] = useLexicalComposerContext();\n\n  const menuButtonRef = useRef(null);\n  const menuRootRef = useRef(null);\n  const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n  const [tableCellNode, setTableMenuCellNode] = useState<TableCellNode | null>(\n    null\n  );\n\n  const $moveMenu = useCallback(() => {\n    const menu = menuButtonRef.current;\n    const selection = $getSelection();\n    const nativeSelection = window.getSelection();\n    const activeElement = document.activeElement;\n\n    if (selection == null || menu == null) {\n      setTableMenuCellNode(null);\n      return;\n    }\n\n    const rootElement = editor.getRootElement();\n\n    if (\n      $isRangeSelection(selection) &&\n      rootElement !== null &&\n      nativeSelection !== null &&\n      rootElement.contains(nativeSelection.anchorNode)\n    ) {\n      const tableCellNodeFromSelection = $getTableCellNodeFromLexicalNode(\n        selection.anchor.getNode()\n      );\n\n      if (tableCellNodeFromSelection == null) {\n        setTableMenuCellNode(null);\n        return;\n      }\n\n      const tableCellParentNodeDOM = editor.getElementByKey(\n        tableCellNodeFromSelection.getKey()\n      );\n\n      if (tableCellParentNodeDOM == null) {\n        setTableMenuCellNode(null);\n        return;\n      }\n\n      setTableMenuCellNode(tableCellNodeFromSelection);\n    } else if (!activeElement) {\n      setTableMenuCellNode(null);\n    }\n  }, [editor]);\n\n  useEffect(() => {\n    return editor.registerUpdateListener(() => {\n      editor.getEditorState().read(() => {\n        $moveMenu();\n      });\n    });\n  });\n\n  useEffect(() => {\n    const menuButtonDOM = menuButtonRef.current as HTMLButtonElement | null;\n\n    if (menuButtonDOM != null && tableCellNode != null) {\n      const tableCellNodeDOM = editor.getElementByKey(tableCellNode.getKey());\n\n      if (tableCellNodeDOM != null) {\n        const tableCellRect = tableCellNodeDOM.getBoundingClientRect();\n        const menuRect = menuButtonDOM.getBoundingClientRect();\n        const anchorRect = anchorElem.getBoundingClientRect();\n\n        const top = tableCellRect.top - anchorRect.top + 4;\n        const left =\n          tableCellRect.right - menuRect.width - 10 - anchorRect.left;\n\n        menuButtonDOM.style.opacity = \"1\";\n        menuButtonDOM.style.transform = `translate(${left}px, ${top}px)`;\n      } else {\n        menuButtonDOM.style.opacity = \"0\";\n        menuButtonDOM.style.transform = \"translate(-10000px, -10000px)\";\n      }\n    }\n  }, [menuButtonRef, tableCellNode, editor, anchorElem]);\n\n  const prevTableCellDOM = useRef(tableCellNode);\n\n  useEffect(() => {\n    if (prevTableCellDOM.current !== tableCellNode) {\n      setIsMenuOpen(false);\n    }\n\n    prevTableCellDOM.current = tableCellNode;\n  }, [prevTableCellDOM, tableCellNode]);\n\n  return (\n    <div\n      className=\"table-cell-action-button-container absolute top-0 will-change-transform\"\n      ref={menuButtonRef}\n    >\n      {tableCellNode != null && (\n        <Popover open={isMenuOpen} onOpenChange={setIsMenuOpen}>\n          <PopoverTrigger asChild>\n            <button\n              type=\"button\"\n              className=\"relative  flex cursor-pointer items-center justify-center bg-none\"\n              onClick={(e) => {\n                e.stopPropagation();\n                setIsMenuOpen(!isMenuOpen);\n              }}\n              ref={menuRootRef}\n            >\n              <ChevronDownIcon className=\"h-4 w-4\" />\n            </button>\n          </PopoverTrigger>\n          <PopoverContent className=\"w-[200px] p-0\">\n            <TableActionMenu\n              contextRef={menuRootRef}\n              setIsMenuOpen={setIsMenuOpen}\n              onClose={() => setIsMenuOpen(false)}\n              tableCellNode={tableCellNode}\n              cellMerge={cellMerge}\n            />\n          </PopoverContent>\n        </Popover>\n      )}\n    </div>\n  );\n}\n\nexport function TableActionMenuPlugin({\n  anchorElem,\n  cellMerge = false,\n}: {\n  anchorElem: HTMLDivElement | null;\n  cellMerge?: boolean;\n}): null | ReactPortal {\n  const isEditable = useLexicalEditable();\n\n  if (!anchorElem) {\n    return null;\n  }\n\n  return createPortal(\n    isEditable ? (\n      <TableCellActionMenuContainer\n        anchorElem={anchorElem}\n        cellMerge={cellMerge}\n      />\n    ) : null,\n    anchorElem\n  );\n}\n","import * as React from \"react\";\nimport {\n  MouseEventHandler,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n  JSX,\n} from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useLexicalEditable } from \"@lexical/react/useLexicalEditable\";\nimport type { TableCellNode, TableDOMCell, TableMapType } from \"@lexical/table\";\nimport {\n  $computeTableMapSkipCellCheck,\n  $getTableNodeFromLexicalNodeOrThrow,\n  $getTableRowIndexFromTableCellNode,\n  $isTableCellNode,\n  $isTableRowNode,\n  TableNode,\n  getDOMCellFromTarget,\n} from \"@lexical/table\";\nimport { calculateZoomLevel } from \"@lexical/utils\";\nimport type { LexicalEditor } from \"lexical\";\nimport { $getNearestNodeFromDOMNode } from \"lexical\";\nimport { createPortal } from \"react-dom\";\n\ntype MousePosition = {\n  x: number;\n  y: number;\n};\n\ntype MouseDraggingDirection = \"right\" | \"bottom\";\n\nconst MIN_ROW_HEIGHT = 33;\nconst MIN_COLUMN_WIDTH = 92;\n\nfunction TableCellResizer({ editor }: { editor: LexicalEditor }): JSX.Element {\n  const targetRef = useRef<HTMLElement | null>(null);\n  const resizerRef = useRef<HTMLDivElement | null>(null);\n  const tableRectRef = useRef<ClientRect | null>(null);\n\n  const mouseStartPosRef = useRef<MousePosition | null>(null);\n  const [mouseCurrentPos, updateMouseCurrentPos] =\n    useState<MousePosition | null>(null);\n\n  const [activeCell, updateActiveCell] = useState<TableDOMCell | null>(null);\n  const [isMouseDown, updateIsMouseDown] = useState<boolean>(false);\n  const [draggingDirection, updateDraggingDirection] =\n    useState<MouseDraggingDirection | null>(null);\n\n  const resetState = useCallback(() => {\n    updateActiveCell(null);\n    targetRef.current = null;\n    updateDraggingDirection(null);\n    mouseStartPosRef.current = null;\n    tableRectRef.current = null;\n  }, []);\n\n  const isMouseDownOnEvent = (event: MouseEvent) => {\n    return (event.buttons & 1) === 1;\n  };\n\n  useEffect(() => {\n    return editor.registerNodeTransform(TableNode, (tableNode) => {\n      if (tableNode.getColWidths()) {\n        return tableNode;\n      }\n\n      const numColumns = tableNode.getColumnCount();\n      const columnWidth = MIN_COLUMN_WIDTH;\n\n      tableNode.setColWidths(Array(numColumns).fill(columnWidth));\n      return tableNode;\n    });\n  }, [editor]);\n\n  useEffect(() => {\n    const onMouseMove = (event: MouseEvent) => {\n      setTimeout(() => {\n        const target = event.target;\n\n        if (draggingDirection) {\n          updateMouseCurrentPos({\n            x: event.clientX,\n            y: event.clientY,\n          });\n          return;\n        }\n        updateIsMouseDown(isMouseDownOnEvent(event));\n        if (resizerRef.current && resizerRef.current.contains(target as Node)) {\n          return;\n        }\n\n        if (targetRef.current !== target) {\n          targetRef.current = target as HTMLElement;\n          const cell = getDOMCellFromTarget(target as HTMLElement);\n\n          if (cell && activeCell !== cell) {\n            editor.update(() => {\n              const tableCellNode = $getNearestNodeFromDOMNode(cell.elem);\n              if (!tableCellNode) {\n                throw new Error(\"TableCellResizer: Table cell node not found.\");\n              }\n\n              const tableNode =\n                $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n              const tableElement = editor.getElementByKey(tableNode.getKey());\n\n              if (!tableElement) {\n                throw new Error(\"TableCellResizer: Table element not found.\");\n              }\n\n              targetRef.current = target as HTMLElement;\n              tableRectRef.current = tableElement.getBoundingClientRect();\n              updateActiveCell(cell);\n            });\n          } else if (cell == null) {\n            resetState();\n          }\n        }\n      }, 0);\n    };\n\n    const onMouseDown = () => {\n      setTimeout(() => {\n        updateIsMouseDown(true);\n      }, 0);\n    };\n\n    const onMouseUp = () => {\n      setTimeout(() => {\n        updateIsMouseDown(false);\n      }, 0);\n    };\n\n    const removeRootListener = editor.registerRootListener(\n      (rootElement, prevRootElement) => {\n        prevRootElement?.removeEventListener(\"mousemove\", onMouseMove);\n        prevRootElement?.removeEventListener(\"mousedown\", onMouseDown);\n        prevRootElement?.removeEventListener(\"mouseup\", onMouseUp);\n        rootElement?.addEventListener(\"mousemove\", onMouseMove);\n        rootElement?.addEventListener(\"mousedown\", onMouseDown);\n        rootElement?.addEventListener(\"mouseup\", onMouseUp);\n      }\n    );\n\n    return () => {\n      removeRootListener();\n    };\n  }, [activeCell, draggingDirection, editor, resetState]);\n\n  const isHeightChanging = (direction: MouseDraggingDirection) => {\n    if (direction === \"bottom\") {\n      return true;\n    }\n    return false;\n  };\n\n  const updateRowHeight = useCallback(\n    (heightChange: number) => {\n      if (!activeCell) {\n        throw new Error(\"TableCellResizer: Expected active cell.\");\n      }\n\n      editor.update(\n        () => {\n          const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem);\n          if (!$isTableCellNode(tableCellNode)) {\n            throw new Error(\"TableCellResizer: Table cell node not found.\");\n          }\n\n          const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n\n          const tableRowIndex =\n            $getTableRowIndexFromTableCellNode(tableCellNode) +\n            tableCellNode.getRowSpan() -\n            1;\n\n          const tableRows = tableNode.getChildren();\n\n          if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\n            throw new Error(\"Expected table cell to be inside of table row.\");\n          }\n\n          const tableRow = tableRows[tableRowIndex];\n\n          if (!$isTableRowNode(tableRow)) {\n            throw new Error(\"Expected table row\");\n          }\n\n          let height = tableRow.getHeight();\n          if (height === undefined) {\n            const rowCells = tableRow.getChildren<TableCellNode>();\n            height = Math.min(\n              ...rowCells.map(\n                (cell) => getCellNodeHeight(cell, editor) ?? Infinity\n              )\n            );\n          }\n\n          const newHeight = Math.max(height + heightChange, MIN_ROW_HEIGHT);\n          tableRow.setHeight(newHeight);\n        },\n        { tag: \"skip-scroll-into-view\" }\n      );\n    },\n    [activeCell, editor]\n  );\n\n  const getCellNodeHeight = (\n    cell: TableCellNode,\n    activeEditor: LexicalEditor\n  ): number | undefined => {\n    const domCellNode = activeEditor.getElementByKey(cell.getKey());\n    return domCellNode?.clientHeight;\n  };\n\n  const getCellColumnIndex = (\n    tableCellNode: TableCellNode,\n    tableMap: TableMapType\n  ) => {\n    for (let row = 0; row < tableMap.length; row++) {\n      for (let column = 0; column < tableMap[row].length; column++) {\n        if (tableMap[row][column].cell === tableCellNode) {\n          return column;\n        }\n      }\n    }\n  };\n\n  const updateColumnWidth = useCallback(\n    (widthChange: number) => {\n      if (!activeCell) {\n        throw new Error(\"TableCellResizer: Expected active cell.\");\n      }\n      editor.update(\n        () => {\n          const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem);\n          if (!$isTableCellNode(tableCellNode)) {\n            throw new Error(\"TableCellResizer: Table cell node not found.\");\n          }\n\n          const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n          const [tableMap] = $computeTableMapSkipCellCheck(\n            tableNode,\n            null,\n            null\n          );\n          const columnIndex = getCellColumnIndex(tableCellNode, tableMap);\n          if (columnIndex === undefined) {\n            throw new Error(\"TableCellResizer: Table column not found.\");\n          }\n\n          const colWidths = tableNode.getColWidths();\n          if (!colWidths) {\n            return;\n          }\n          const width = colWidths[columnIndex];\n          if (width === undefined) {\n            return;\n          }\n          const newColWidths = [...colWidths];\n          const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH);\n          newColWidths[columnIndex] = newWidth;\n          tableNode.setColWidths(newColWidths);\n        },\n        { tag: \"skip-scroll-into-view\" }\n      );\n    },\n    [activeCell, editor]\n  );\n\n  const mouseUpHandler = useCallback(\n    (direction: MouseDraggingDirection) => {\n      const handler = (event: MouseEvent) => {\n        event.preventDefault();\n        event.stopPropagation();\n\n        if (!activeCell) {\n          throw new Error(\"TableCellResizer: Expected active cell.\");\n        }\n\n        if (mouseStartPosRef.current) {\n          const { x, y } = mouseStartPosRef.current;\n\n          if (activeCell === null) {\n            return;\n          }\n          const zoom = calculateZoomLevel(event.target as Element);\n\n          if (isHeightChanging(direction)) {\n            const heightChange = (event.clientY - y) / zoom;\n            updateRowHeight(heightChange);\n          } else {\n            const widthChange = (event.clientX - x) / zoom;\n            updateColumnWidth(widthChange);\n          }\n\n          resetState();\n          document.removeEventListener(\"mouseup\", handler);\n        }\n      };\n      return handler;\n    },\n    [activeCell, resetState, updateColumnWidth, updateRowHeight]\n  );\n\n  const toggleResize = useCallback(\n    (direction: MouseDraggingDirection): MouseEventHandler<HTMLDivElement> =>\n      (event) => {\n        event.preventDefault();\n        event.stopPropagation();\n\n        if (!activeCell) {\n          throw new Error(\"TableCellResizer: Expected active cell.\");\n        }\n\n        mouseStartPosRef.current = {\n          x: event.clientX,\n          y: event.clientY,\n        };\n        updateMouseCurrentPos(mouseStartPosRef.current);\n        updateDraggingDirection(direction);\n\n        document.addEventListener(\"mouseup\", mouseUpHandler(direction));\n      },\n    [activeCell, mouseUpHandler]\n  );\n\n  const getResizers = useCallback(() => {\n    if (activeCell) {\n      const { height, width, top, left } =\n        activeCell.elem.getBoundingClientRect();\n      const zoom = calculateZoomLevel(activeCell.elem);\n      const zoneWidth = 10; // Pixel width of the zone where you can drag the edge\n      const styles = {\n        bottom: {\n          backgroundColor: \"none\",\n          cursor: \"row-resize\",\n          height: `${zoneWidth}px`,\n          left: `${window.pageXOffset + left}px`,\n          top: `${window.pageYOffset + top + height - zoneWidth / 2}px`,\n          width: `${width}px`,\n        },\n        right: {\n          backgroundColor: \"none\",\n          cursor: \"col-resize\",\n          height: `${height}px`,\n          left: `${window.pageXOffset + left + width - zoneWidth / 2}px`,\n          top: `${window.pageYOffset + top}px`,\n          width: `${zoneWidth}px`,\n        },\n      };\n\n      const tableRect = tableRectRef.current;\n\n      if (draggingDirection && mouseCurrentPos && tableRect) {\n        if (isHeightChanging(draggingDirection)) {\n          styles[draggingDirection].left = `${\n            window.pageXOffset + tableRect.left\n          }px`;\n          styles[draggingDirection].top = `${\n            window.pageYOffset + mouseCurrentPos.y / zoom\n          }px`;\n          styles[draggingDirection].height = \"3px\";\n          styles[draggingDirection].width = `${tableRect.width}px`;\n        } else {\n          styles[draggingDirection].top = `${\n            window.pageYOffset + tableRect.top\n          }px`;\n          styles[draggingDirection].left = `${\n            window.pageXOffset + mouseCurrentPos.x / zoom\n          }px`;\n          styles[draggingDirection].width = \"3px\";\n          styles[draggingDirection].height = `${tableRect.height}px`;\n        }\n\n        styles[draggingDirection].backgroundColor = \"var(--background-presentation-action-selected)\";\n      }\n\n      return styles;\n    }\n\n    return {\n      bottom: null,\n      left: null,\n      right: null,\n      top: null,\n    };\n  }, [activeCell, draggingDirection, mouseCurrentPos]);\n\n  const resizerStyles = getResizers();\n\n  return (\n    <div ref={resizerRef}>\n      {activeCell != null && !isMouseDown && (\n        <>\n          <div\n            className=\"TableCellResizer__ui absolute\"\n            style={resizerStyles.right || undefined}\n            onMouseDown={toggleResize(\"right\")}\n          />\n          <div\n            className=\"TableCellResizer__ui absolute\"\n            style={resizerStyles.bottom || undefined}\n            onMouseDown={toggleResize(\"bottom\")}\n          />\n        </>\n      )}\n    </div>\n  );\n}\n\nexport function TableCellResizerPlugin(): null | React.ReactElement {\n  const [editor] = useLexicalComposerContext();\n  const isEditable = useLexicalEditable();\n  const [bodyRef, setBodyRef] = useState<HTMLElement | null>(null);\n\n  useEffect(() => {\n    setBodyRef(document.body);\n  }, []);\n\n  return useMemo(\n    () =>\n      isEditable && bodyRef\n        ? createPortal(<TableCellResizer editor={editor} />, bodyRef)\n        : null,\n    [editor, isEditable, bodyRef]\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, useMemo, useRef, useState, JSX } from \"react\";\n\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useLexicalEditable } from \"@lexical/react/useLexicalEditable\";\nimport {\n  $getTableColumnIndexFromTableCellNode,\n  $getTableRowIndexFromTableCellNode,\n  $insertTableColumn__EXPERIMENTAL,\n  $insertTableRow__EXPERIMENTAL,\n  $isTableCellNode,\n  $isTableNode,\n  TableCellNode,\n  TableNode,\n  TableRowNode,\n} from \"@lexical/table\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport { $getNearestNodeFromDOMNode, NodeKey } from \"lexical\";\nimport { PlusIcon } from \"lucide-react\";\nimport { createPortal } from \"react-dom\";\n\nimport { useDebounce } from \"@/components/editor/editor-hooks/use-debounce\";\n\nconst BUTTON_WIDTH_PX = 20;\n\nfunction TableHoverActionsContainer({\n  anchorElem,\n}: {\n  anchorElem: HTMLElement;\n}): JSX.Element | null {\n  const [editor] = useLexicalComposerContext();\n  const isEditable = useLexicalEditable();\n  const [isShownRow, setShownRow] = useState<boolean>(false);\n  const [isShownColumn, setShownColumn] = useState<boolean>(false);\n  const [shouldListenMouseMove, setShouldListenMouseMove] =\n    useState<boolean>(false);\n  const [position, setPosition] = useState({});\n  const tableSetRef = useRef<Set<NodeKey>>(new Set());\n  const tableCellDOMNodeRef = useRef<HTMLElement | null>(null);\n\n  const debouncedOnMouseMove = useDebounce(\n    (event: MouseEvent) => {\n      const { isOutside, tableDOMNode } = getMouseInfo(event);\n\n      if (isOutside) {\n        setShownRow(false);\n        setShownColumn(false);\n        return;\n      }\n\n      if (!tableDOMNode) {\n        return;\n      }\n\n      tableCellDOMNodeRef.current = tableDOMNode;\n\n      let hoveredRowNode: TableCellNode | null = null;\n      let hoveredColumnNode: TableCellNode | null = null;\n      let tableDOMElement: HTMLElement | null = null;\n\n      editor.update(() => {\n        const maybeTableCell = $getNearestNodeFromDOMNode(tableDOMNode);\n\n        if ($isTableCellNode(maybeTableCell)) {\n          const table = $findMatchingParent(maybeTableCell, (node) =>\n            $isTableNode(node)\n          );\n          if (!$isTableNode(table)) {\n            return;\n          }\n\n          tableDOMElement = editor.getElementByKey(table?.getKey());\n\n          if (tableDOMElement) {\n            const rowCount = table.getChildrenSize();\n            const colCount = (\n              (table as TableNode).getChildAtIndex(0) as TableRowNode\n            )?.getChildrenSize();\n\n            const rowIndex = $getTableRowIndexFromTableCellNode(maybeTableCell);\n            const colIndex =\n              $getTableColumnIndexFromTableCellNode(maybeTableCell);\n\n            if (rowIndex === rowCount - 1) {\n              hoveredRowNode = maybeTableCell;\n            } else if (colIndex === colCount - 1) {\n              hoveredColumnNode = maybeTableCell;\n            }\n          }\n        }\n      });\n\n      if (tableDOMElement) {\n        const {\n          width: tableElemWidth,\n          y: tableElemY,\n          right: tableElemRight,\n          left: tableElemLeft,\n          bottom: tableElemBottom,\n          height: tableElemHeight,\n        } = (tableDOMElement as HTMLTableElement).getBoundingClientRect();\n\n        const { y: editorElemY, left: editorElemLeft } =\n          anchorElem.getBoundingClientRect();\n\n        if (hoveredRowNode) {\n          setShownColumn(false);\n          setShownRow(true);\n          setPosition({\n            height: BUTTON_WIDTH_PX,\n            left: tableElemLeft - editorElemLeft,\n            top: tableElemBottom - editorElemY + 5,\n            width: tableElemWidth,\n          });\n        } else if (hoveredColumnNode) {\n          setShownColumn(true);\n          setShownRow(false);\n          setPosition({\n            height: tableElemHeight,\n            left: tableElemRight - editorElemLeft + 5,\n            top: tableElemY - editorElemY,\n            width: BUTTON_WIDTH_PX,\n          });\n        }\n      }\n    },\n    50,\n    250\n  );\n\n  // Hide the buttons on any table dimensions change to prevent last row cells\n  // overlap behind the 'Add Row' button when text entry changes cell height\n  const tableResizeObserver = useMemo(() => {\n    return new ResizeObserver(() => {\n      setShownRow(false);\n      setShownColumn(false);\n    });\n  }, []);\n\n  useEffect(() => {\n    if (!shouldListenMouseMove) {\n      return;\n    }\n\n    document.addEventListener(\"mousemove\", debouncedOnMouseMove);\n\n    return () => {\n      setShownRow(false);\n      setShownColumn(false);\n      debouncedOnMouseMove.cancel();\n      document.removeEventListener(\"mousemove\", debouncedOnMouseMove);\n    };\n  }, [shouldListenMouseMove, debouncedOnMouseMove]);\n\n  useEffect(() => {\n    return mergeRegister(\n      editor.registerMutationListener(\n        TableNode,\n        (mutations) => {\n          editor.getEditorState().read(() => {\n            for (const [key, type] of Array.from(mutations)) {\n              const tableDOMElement = editor.getElementByKey(key);\n              switch (type) {\n                case \"created\":\n                  tableSetRef.current.add(key);\n                  setShouldListenMouseMove(tableSetRef.current.size > 0);\n                  if (tableDOMElement) {\n                    tableResizeObserver.observe(tableDOMElement);\n                  }\n                  break;\n\n                case \"destroyed\":\n                  tableSetRef.current.delete(key);\n                  setShouldListenMouseMove(tableSetRef.current.size > 0);\n                  // Reset resize observers\n                  tableResizeObserver.disconnect();\n                  tableSetRef.current.forEach((tableKey: NodeKey) => {\n                    const tableElement = editor.getElementByKey(tableKey);\n                    if (tableElement) {\n                      tableResizeObserver.observe(tableElement);\n                    }\n                  });\n                  break;\n\n                default:\n                  break;\n              }\n            }\n          });\n        },\n        { skipInitialization: false }\n      )\n    );\n  }, [editor, tableResizeObserver]);\n\n  const insertAction = (insertRow: boolean) => {\n    editor.update(() => {\n      if (tableCellDOMNodeRef.current) {\n        const maybeTableNode = $getNearestNodeFromDOMNode(\n          tableCellDOMNodeRef.current\n        );\n        maybeTableNode?.selectEnd();\n        if (insertRow) {\n          $insertTableRow__EXPERIMENTAL();\n          setShownRow(false);\n        } else {\n          $insertTableColumn__EXPERIMENTAL();\n          setShownColumn(false);\n        }\n      }\n    });\n  };\n\n  if (!isEditable) {\n    return null;\n  }\n\n  return (\n    <>\n      {isShownRow && (\n        <button\n          className={\n            \"EditorTheme__tableAddRows absolute flex w-[calc(100%-25px)] cursor-pointer items-center justify-center border-0 bg-background-presentation-action-secondary hover:bg-background-presentation-action-hover\"\n          }\n          style={{ ...position }}\n          onClick={() => insertAction(true)}\n        >\n          <PlusIcon className=\"h-4 w-4\" />\n        </button>\n      )}\n      {isShownColumn && (\n        <button\n          className={\n            \"EditorTheme__tableAddColumns absolute flex w-[calc(100%-25px)] cursor-pointer items-center justify-center border-0 bg-background-presentation-action-secondary hover:bg-background-presentation-action-hover\"\n          }\n          style={{ ...position }}\n          onClick={() => insertAction(false)}\n        >\n          <PlusIcon className=\"h-4 w-4\" />\n        </button>\n      )}\n    </>\n  );\n}\n\nfunction getMouseInfo(event: MouseEvent): {\n  tableDOMNode: HTMLElement | null;\n  isOutside: boolean;\n} {\n  const target = event.target;\n\n  if (target && target instanceof HTMLElement) {\n    const tableDOMNode = target.closest<HTMLElement>(\n      \"td.EditorTheme__tableCell, th.EditorTheme__tableCell\"\n    );\n\n    const isOutside = !(\n      tableDOMNode ||\n      target.closest<HTMLElement>(\"button.EditorTheme__tableAddRows\") ||\n      target.closest<HTMLElement>(\"button.EditorTheme__tableAddColumns\") ||\n      target.closest<HTMLElement>(\"div.TableCellResizer__resizer\")\n    );\n\n    return { isOutside, tableDOMNode };\n  } else {\n    return { isOutside: true, tableDOMNode: null };\n  }\n}\n\nexport function TableHoverActionsPlugin({\n  anchorElem,\n}: {\n  anchorElem: HTMLDivElement | null;\n}): React.ReactPortal | null {\n  const isEditable = useLexicalEditable();\n\n  if (!anchorElem) {\n    return null;\n  }\n\n  return isEditable\n    ? createPortal(\n        <TableHoverActionsContainer anchorElem={anchorElem} />,\n        anchorElem\n      )\n    : null;\n}\n","'use client'\n\nimport { useEffect } from 'react'\nimport { useState } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { COMMAND_PRIORITY_CRITICAL, SELECTION_CHANGE_COMMAND } from 'lexical'\n\nimport { ToolbarContext } from '@/components/editor/context/toolbar-context'\n\nimport { useEditorModal } from '@/components/editor/editor-hooks/use-modal'\n\nexport function ToolbarPlugin({\n  children,\n}: {\n  children: (props: {\n    blockType: string\n  }) => React.ReactNode\n}) {\n  const [editor] = useLexicalComposerContext()\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  }, [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      {children({ blockType })}\n\n    </ToolbarContext>\n  )\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 */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as t,useEffect as i,forwardRef as a,useState as r,useCallback as n,useMemo as o}from\"react\";import{jsx as l,jsxs as d,Fragment as c}from\"react/jsx-runtime\";import{$canShowPlaceholderCurry as s}from\"@lexical/text\";import{mergeRegister as u}from\"@lexical/utils\";const m=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?t:i;function f({editor:e,ariaActiveDescendant:t,ariaAutoComplete:i,ariaControls:a,ariaDescribedBy:d,ariaErrorMessage:c,ariaExpanded:s,ariaInvalid:u,ariaLabel:f,ariaLabelledBy:b,ariaMultiline:p,ariaOwns:x,ariaRequired:E,autoCapitalize:v,className:w,id:y,role:C=\"textbox\",spellCheck:g=!0,style:h,tabIndex:L,\"data-testid\":D,...I},R){const[k,q]=r(e.isEditable()),z=n((t=>{t&&t.ownerDocument&&t.ownerDocument.defaultView?e.setRootElement(t):e.setRootElement(null)}),[e]),A=o((()=>function(...e){return t=>{e.forEach((e=>{\"function\"==typeof e?e(t):null!=e&&(e.current=t)}))}}(R,z)),[z,R]);return m((()=>(q(e.isEditable()),e.registerEditableListener((e=>{q(e)})))),[e]),l(\"div\",{\"aria-activedescendant\":k?t:void 0,\"aria-autocomplete\":k?i:\"none\",\"aria-controls\":k?a:void 0,\"aria-describedby\":d,...null!=c?{\"aria-errormessage\":c}:{},\"aria-expanded\":k&&\"combobox\"===C?!!s:void 0,...null!=u?{\"aria-invalid\":u}:{},\"aria-label\":f,\"aria-labelledby\":b,\"aria-multiline\":p,\"aria-owns\":k?x:void 0,\"aria-readonly\":!k||void 0,\"aria-required\":E,autoCapitalize:v,className:w,contentEditable:k,\"data-testid\":D,id:y,ref:A,role:k?C:void 0,spellCheck:g,style:h,tabIndex:L,...I})}const b=a(f);function p(e){return e.getEditorState().read(s(e.isComposing()))}const x=a(E);function E(t,i){const{placeholder:a,...r}=t,[n]=e();return d(c,{children:[l(b,{editor:n,...r,ref:i}),null!=a&&l(v,{editor:n,content:a})]})}function v({content:e,editor:i}){const a=function(e){const[t,i]=r((()=>p(e)));return m((()=>{function t(){const t=p(e);i(t)}return t(),u(e.registerUpdateListener((()=>{t()})),e.registerEditableListener((()=>{t()})))}),[e]),t}(i),[n,o]=r(i.isEditable());if(t((()=>(o(i.isEditable()),i.registerEditableListener((e=>{o(e)})))),[i]),!a)return null;let d=null;return\"function\"==typeof e?d=e(n):null!==e&&(d=e),null===d?null:l(\"div\",{\"aria-hidden\":!0,children:d})}export{x as ContentEditable,b as ContentEditableElement};\n","import { JSX } from \"react\";\nimport { ContentEditable as LexicalContentEditable } from \"@lexical/react/LexicalContentEditable\";\n\ntype Props = {\n  placeholder: string;\n  className?: string;\n  placeholderClassName?: string;\n};\n\nexport function ContentEditable({\n  placeholder,\n  className,\n  placeholderClassName,\n}: Props): JSX.Element {\n  return (\n    <LexicalContentEditable\n      className={\n        className ??\n        `ContentEditable__root relative block bg-background-system-body-primary text-content-system-global-primary overflow-auto min-h-full !px-12 py-4 focus:outline-none max-w-full overflow-x-hidden whitespace-pre-wrap break-words`\n      }\n      aria-placeholder={placeholder}\n      placeholder={\n        <div\n          className={\n            placeholderClassName ??\n            `pointer-events-none absolute left-0 top-0 select-none overflow-hidden text-ellipsis px-8 py-[18px] text-content-system-global-secondary`\n          }\n        >\n          {placeholder}\n        </div>\n      }\n    />\n  );\n}\n","import { LexicalEditor } from \"lexical\";\nimport { MenuOption } from \"@lexical/react/LexicalTypeaheadMenuPlugin\";\nimport type { JSX } from \"react\";\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 { AlignCenterIcon, AlignRightIcon, AlignJustifyIcon, AlignLeftIcon } from \"lucide-react\";\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\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 <AlignLeftIcon className=\"size-4\" />\n    case 'center':\n      return <AlignCenterIcon className=\"size-4\" />\n    case 'right':\n      return <AlignRightIcon className=\"size-4\" />\n    case 'justify':\n      return <AlignJustifyIcon className=\"size-4\" />\n  }\n}\n","import { Heading1Icon, Heading2Icon, Heading3Icon } from \"lucide-react\"\nimport { $getSelection, $isRangeSelection } from \"lexical\"\nimport { $setBlocksType } from \"@lexical/selection\"\nimport { $createHeadingNode } from \"@lexical/rich-text\"\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function HeadingPickerPlugin({\n  n\n}: {\n  n: 1 | 2 | 3\n}) {\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 <Heading1Icon className=\"size-4\" />\n    case 2:\n      return <Heading2Icon className=\"size-4\" />\n    case 3:\n      return <Heading3Icon className=\"size-4\" />\n  }\n}","import { TableIcon } from \"lucide-react\";\nimport { INSERT_TABLE_COMMAND } from \"@lexical/table\";\n\nimport { InsertTableDialog } from \"@/components/editor/plugins/table-plugin\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function TablePickerPlugin() {\n  return new ComponentPickerOption('Table', {\n    icon: <TableIcon className=\"size-4\" />,\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\n\nexport function DynamicTablePickerPlugin({queryString}: {queryString: string}) {\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) {\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: <i className=\"icon table\" />,\n            keywords: ['table'],\n            onSelect: (_, editor) =>\n              editor.dispatchCommand(INSERT_TABLE_COMMAND, { columns, rows }),\n          })\n      )\n    )\n  }\n\n  return options\n}","import { INSERT_EMBED_COMMAND } from \"@lexical/react/LexicalAutoEmbedPlugin\";\n//@ts-ignore\nimport {\n  //@ts-ignore\n  CustomEmbedConfig,\n  EmbedConfigs,\n} from \"@/components/editor/plugins/embeds/auto-embed-plugin\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function EmbedsPickerPlugin({\n  embed,\n}: {\n  embed: \"figma\" | \"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","export default [\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","import { TextMatchTransformer } from '@lexical/markdown'\nimport { $createTextNode } from 'lexical'\n\nimport emojiList from '@/components/editor/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    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 { TextMatchTransformer } from '@lexical/markdown'\n\nimport {\n  $createEquationNode,\n  $isEquationNode,\n  EquationNode,\n} from '@/components/editor/nodes/equation-node'\n\nexport const EQUATION: TextMatchTransformer = {\n  dependencies: [EquationNode],\n  export: (node) => {\n    if (!$isEquationNode(node)) {\n      return null\n    }\n\n    return `$${node.getEquation()}$`\n  },\n  importRegExp: /\\$([^$]+?)\\$/,\n  regExp: /\\$([^$]+?)\\$$/,\n  replace: (textNode, match) => {\n    const [, equation] = match\n    const equationNode = $createEquationNode(equation, true)\n    textNode.replace(equationNode)\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 { $createImageNode, $isImageNode, ImageNode } from '@/components/editor/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 `![${node.getAltText()}](${node.getSrc()})`\n  },\n  importRegExp: /!(?:\\[([^[]*)\\])(?:\\(([^(]+)\\))/,\n  regExp: /!(?:\\[([^[]*)\\])(?:\\(([^(]+)\\))$/,\n  replace: (textNode, match) => {\n    const [, altText, src] = match\n    const imageNode = $createImageNode({\n      altText,\n      maxWidth: 800,\n      src,\n    })\n    textNode.replace(imageNode)\n  },\n  trigger: ')',\n  type: 'text-match',\n}\n","import { ElementTransformer } from '@lexical/markdown'\n\nimport {\n  $createTweetNode,\n  $isTweetNode,\n  TweetNode,\n} from '@/components/editor/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    const tweetNode = $createTweetNode(id)\n    textNode.replace(tweetNode)\n  },\n  type: 'element',\n}\n","import { $isParagraphNode, $isTextNode, LexicalNode } from 'lexical'\nimport {\n  $convertFromMarkdownString,\n  $convertToMarkdownString,\n  ElementTransformer,\n  CHECK_LIST,\n  ELEMENT_TRANSFORMERS,\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'\n\nimport { EMOJI } from '@/components/editor/transformers/markdown-emoji-transformer'\nimport { EQUATION } from '@/components/editor/transformers/markdown-equation-transofrmer'\nimport { HR } from '@/components/editor/transformers/markdown-hr-transformer'\nimport { IMAGE } from '@/components/editor/transformers/markdown-image-transformer'\nimport { TWEET } from '@/components/editor/transformers/markdown-tweet-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  EQUATION,\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    // 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        tableRow.append(i < cells.length ? cells[i] : $createTableCell(''))\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 { 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\";\n\nimport { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\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 { Separator } from \"@/components/ui/separator\";\n\nimport { BlockFormatDropDown } from \"@/components/editor/plugins/toolbar/block-format-toolbar-plugin\";\nimport { FormatBulletedList } from \"@/components/editor/plugins/toolbar/block-format/format-bulleted-list\";\nimport { FormatCheckList } from \"@/components/editor/plugins/toolbar/block-format/format-check-list\";\nimport { FormatCodeBlock } from \"@/components/editor/plugins/toolbar/block-format/format-code-block\";\nimport { FormatHeading } from \"@/components/editor/plugins/toolbar/block-format/format-heading\";\nimport { FormatNumberedList } from \"@/components/editor/plugins/toolbar/block-format/format-numbered-list\";\nimport { FormatParagraph } from \"@/components/editor/plugins/toolbar/block-format/format-paragraph\";\nimport { FormatQuote } from \"@/components/editor/plugins/toolbar/block-format/format-quote\";\nimport { BlockInsertPlugin } from \"@/components/editor/plugins/toolbar/block-insert-plugin\";\nimport { InsertCollapsibleContainer } from \"@/components/editor/plugins/toolbar/block-insert/insert-collapsible-container\";\nimport { InsertColumnsLayout } from \"@/components/editor/plugins/toolbar/block-insert/insert-columns-layout\";\nimport { InsertEmbeds } from \"@/components/editor/plugins/toolbar/block-insert/insert-embeds\";\nimport { InsertHorizontalRule } from \"@/components/editor/plugins/toolbar/block-insert/insert-horizontal-rule\";\nimport { InsertImage } from \"@/components/editor/plugins/toolbar/block-insert/insert-image\";\nimport { InsertInlineImage } from \"@/components/editor/plugins/toolbar/block-insert/insert-inline-image\";\nimport { InsertPageBreak } from \"@/components/editor/plugins/toolbar/block-insert/insert-page-break\";\nimport { InsertPoll } from \"@/components/editor/plugins/toolbar/block-insert/insert-poll\";\nimport { InsertTable } from \"@/components/editor/plugins/toolbar/block-insert/insert-table\";\nimport { ClearFormattingToolbarPlugin } from \"@/components/editor/plugins/toolbar/clear-formatting-toolbar-plugin\";\nimport { CodeLanguageToolbarPlugin } from \"@/components/editor/plugins/toolbar/code-language-toolbar-plugin\";\nimport { ElementFormatToolbarPlugin } from \"@/components/editor/plugins/toolbar/element-format-toolbar-plugin\";\nimport { FontBackgroundToolbarPlugin } from \"@/components/editor/plugins/toolbar/font-background-toolbar-plugin\";\nimport { FontColorToolbarPlugin } from \"@/components/editor/plugins/toolbar/font-color-toolbar-plugin\";\nimport { FontFamilyToolbarPlugin } from \"@/components/editor/plugins/toolbar/font-family-toolbar-plugin\";\nimport { FontFormatToolbarPlugin } from \"@/components/editor/plugins/toolbar/font-format-toolbar-plugin\";\nimport { FontSizeToolbarPlugin } from \"@/components/editor/plugins/toolbar/font-size-toolbar-plugin\";\nimport { HistoryToolbarPlugin } from \"@/components/editor/plugins/toolbar/history-toolbar-plugin\";\nimport { LinkToolbarPlugin } from \"@/components/editor/plugins/toolbar/link-toolbar-plugin\";\nimport { SubSuperToolbarPlugin } from \"@/components/editor/plugins/toolbar/subsuper-toolbar-plugin\";\n\nimport { AutoLinkPlugin } from \"@/components/editor/plugins/auto-link-plugin\";\nimport { AutocompletePlugin } from \"@/components/editor/plugins/autocomplete-plugin\";\nimport { CodeActionMenuPlugin } from \"@/components/editor/plugins/code-action-menu-plugin\";\nimport { CodeHighlightPlugin } from \"@/components/editor/plugins/code-highlight-plugin\";\nimport { CollapsiblePlugin } from \"@/components/editor/plugins/collapsible-plugin\";\nimport { ComponentPickerMenuPlugin } from \"@/components/editor/plugins/component-picker-menu-plugin\";\nimport { ContextMenuPlugin } from \"@/components/editor/plugins/context-menu-plugin\";\nimport { DragDropPastePlugin } from \"@/components/editor/plugins/drag-drop-paste-plugin\";\nimport { DraggableBlockPlugin } from \"@/components/editor/plugins/draggable-block-plugin\";\nimport { AutoEmbedPlugin } from \"@/components/editor/plugins/embeds/auto-embed-plugin\";\nimport { FigmaPlugin } from \"@/components/editor/plugins/embeds/figma-plugin\";\nimport { TwitterPlugin } from \"@/components/editor/plugins/embeds/twitter-plugin\";\nimport { YouTubePlugin } from \"@/components/editor/plugins/embeds/youtube-plugin\";\nimport { EmojiPickerPlugin } from \"@/components/editor/plugins/emoji-picker-plugin\";\nimport { EmojisPlugin } from \"@/components/editor/plugins/emojis-plugin\";\nimport { EquationsPlugin } from \"@/components/editor/plugins/equations-plugin\";\nimport { ExcalidrawPlugin } from \"@/components/editor/plugins/excalidraw-plugin\";\nimport { FloatingLinkEditorPlugin } from \"@/components/editor/plugins/floating-link-editor-plugin\";\nimport { FloatingTextFormatToolbarPlugin } from \"@/components/editor/plugins/floating-text-format-plugin\";\nimport { ImagesPlugin } from \"@/components/editor/plugins/images-plugin\";\nimport { InlineImagePlugin } from \"@/components/editor/plugins/inline-image-plugin\";\nimport { KeywordsPlugin } from \"@/components/editor/plugins/keywords-plugin\";\nimport { LayoutPlugin } from \"@/components/editor/plugins/layout-plugin\";\nimport { LinkPlugin } from \"@/components/editor/plugins/link-plugin\";\nimport { ListMaxIndentLevelPlugin } from \"@/components/editor/plugins/list-max-indent-level-plugin\";\nimport { MentionsPlugin } from \"@/components/editor/plugins/mentions-plugin\";\nimport { PageBreakPlugin } from \"@/components/editor/plugins/page-break-plugin\";\nimport { PollPlugin } from \"@/components/editor/plugins/poll-plugin\";\nimport { TabFocusPlugin } from \"@/components/editor/plugins/tab-focus-plugin\";\nimport { TableActionMenuPlugin } from \"@/components/editor/plugins/table-action-menu-plugin\";\nimport { TableCellResizerPlugin } from \"@/components/editor/plugins/table-cell-resizer-plugin\";\nimport { TableHoverActionsPlugin } from \"@/components/editor/plugins/table-hover-actions-plugin\";\nimport { ToolbarPlugin } from \"@/components/editor/plugins/toolbar/toolbar-plugin\";\nimport { ContentEditable } from \"@/components/editor/editor-ui/content-editable\";\n\nimport { AlignmentPickerPlugin } from \"@/components/editor/plugins/picker/alignment-picker-plugin\";\nimport { ParagraphPickerPlugin } from \"@/components/editor/plugins/picker/paragraph-picker-plugin\";\nimport { HeadingPickerPlugin } from \"@/components/editor/plugins/picker/heading-picker-plugin\";\nimport {\n  DynamicTablePickerPlugin,\n  TablePickerPlugin,\n} from \"@/components/editor/plugins/picker/table-picker-plugin\";\nimport { EmbedsPickerPlugin } from \"@/components/editor/plugins/picker/embeds-picker-plugin\";\nimport { CheckListPickerPlugin } from \"@/components/editor/plugins/picker/check-list-picker-plugin\";\nimport { NumberedListPickerPlugin } from \"@/components/editor/plugins/picker/numbered-list-picker-plugin\";\nimport { BulletedListPickerPlugin } from \"@/components/editor/plugins/picker/bulleted-list-picker-plugin\";\nimport { QuotePickerPlugin } from \"@/components/editor/plugins/picker/quote-picker-plugin\";\nimport { CodePickerPlugin } from \"@/components/editor/plugins/picker/code-picker-plugin\";\nimport { DividerPickerPlugin } from \"@/components/editor/plugins/picker/divider-picker-plugin\";\nimport { PageBreakPickerPlugin } from \"@/components/editor/plugins/picker/page-break-picker-plugin\";\nimport { ImagePickerPlugin } from \"@/components/editor/plugins/picker/image-picker-plugin\";\nimport { PollPickerPlugin } from \"@/components/editor/plugins/picker/poll-picker-plugin\";\nimport { EquationPickerPlugin } from \"@/components/editor/plugins/picker/equation-picker-plugin\";\nimport { CollapsiblePickerPlugin } from \"@/components/editor/plugins/picker/collapsible-picker-plugin\";\nimport { ColumnsLayoutPickerPlugin } from \"@/components/editor/plugins/picker/columns-layout-picker-plugin\";\n\nimport { EMOJI } from \"@/components/editor/transformers/markdown-emoji-transformer\";\nimport { EQUATION } from \"@/components/editor/transformers/markdown-equation-transofrmer\";\nimport { HR } from \"@/components/editor/transformers/markdown-hr-transformer\";\nimport { IMAGE } from \"@/components/editor/transformers/markdown-image-transformer\";\nimport { TABLE } from \"@/components/editor/transformers/markdown-table-transformer\";\nimport { TWEET } from \"@/components/editor/transformers/markdown-tweet-transformer\";\n\nexport const placeholder = \"\";\nconst maxLength = 50000000000;\n\nexport function Plugins({}) {\n  const [floatingAnchorElem, setFloatingAnchorElem] =\n    useState<HTMLDivElement | null>(null);\n\n  const onRef = (_floatingAnchorElem: HTMLDivElement) => {\n    if (_floatingAnchorElem !== null) {\n      setFloatingAnchorElem(_floatingAnchorElem);\n    }\n  };\n\n  return (\n    <div className=\"relative w-full flex flex-col h-full max-w-full overflow-hidden\">\n      <ToolbarPlugin>\n        {({ blockType }) => (\n                     <div \n             className=\"flex h-[42px] gap-1 pr-2 p-[5px] items-center border-b border-border-presentation-global-primary bg-background-presentation-form-header shadow-md backdrop-blur-[8px] rounded-[4px] overflow-x-auto overflow-y-hidden scrollbar-hide lg:overflow-x-visible min-w-0 max-w-full w-full flex-nowrap scroll-smooth overscroll-x-contain touch-pan-x\"\n             onWheel={(e) => {\n               const container = e.currentTarget;\n               const canScrollHorizontally = container.scrollWidth > container.clientWidth;\n               if (canScrollHorizontally && Math.abs(e.deltaY) > Math.abs(e.deltaX)) {\n                 e.preventDefault();\n                 container.scrollLeft += e.deltaY;\n               }\n             }}\n           >\n            <HistoryToolbarPlugin />\n            <Separator orientation=\"vertical\" className=\"h-8 bg-border-presentation-global-primary\" />\n            <BlockFormatDropDown>\n              <FormatParagraph />\n              <FormatHeading levels={[\"h1\", \"h2\", \"h3\"]} />\n              <FormatNumberedList />\n              <FormatBulletedList />\n              <FormatCheckList />\n              <FormatCodeBlock />\n              <FormatQuote />\n            </BlockFormatDropDown>\n            \n            {blockType === \"code\" ? (\n              <CodeLanguageToolbarPlugin />\n            ) : (\n              <>\n                <FontFamilyToolbarPlugin />\n                <FontSizeToolbarPlugin />\n                <Separator orientation=\"vertical\" className=\"h-8 bg-border-presentation-global-primary\" />\n                <FontFormatToolbarPlugin format=\"bold\" />\n                <FontFormatToolbarPlugin format=\"italic\" />\n                <FontFormatToolbarPlugin format=\"underline\" />\n                <FontFormatToolbarPlugin format=\"strikethrough\" />\n                <ClearFormattingToolbarPlugin />\n                <Separator orientation=\"vertical\" className=\"h-8 bg-border-presentation-global-primary\" />\n                <SubSuperToolbarPlugin />\n                <LinkToolbarPlugin />\n                <Separator orientation=\"vertical\" className=\"h-8 bg-border-presentation-global-primary\" />\n                <FontColorToolbarPlugin />\n                <FontBackgroundToolbarPlugin />\n                  <Separator orientation=\"vertical\" className=\"h-8 bg-border-presentation-global-primary\" />\n                <ElementFormatToolbarPlugin />\n                <Separator orientation=\"vertical\" className=\"h-8 bg-border-presentation-global-primary\" />\n                <BlockInsertPlugin>\n                  <InsertHorizontalRule />\n                  <InsertPageBreak />\n                  <InsertImage />\n                  <InsertInlineImage />\n                  <InsertCollapsibleContainer />\n                  <InsertTable />\n                  <InsertPoll />\n                  <InsertColumnsLayout />\n                  <InsertEmbeds />\n                </BlockInsertPlugin>\n              </>\n            )}\n          </div>\n        )}\n      </ToolbarPlugin>\n      <div className=\"relative flex-1 min-h-0 bg-background-system-body-primary w-full overflow-x-hidden\">\n        <AutoFocusPlugin />\n        <RichTextPlugin\n          contentEditable={\n            <div className=\"w-full max-w-full overflow-x-hidden bg-background-system-body-primary\">\n              <div className=\"w-full max-w-full overflow-x-hidden bg-background-system-body-primary\" ref={onRef}>\n                                  <ContentEditable\n                    placeholder={placeholder}\n                    className=\"ContentEditable__root relative block !bg-background-system-body-primary !text-content-system-global-primary overflow-y-auto overflow-x-hidden w-full max-w-full px-2 md:px-12 py-4 focus:outline-none h-[calc(100vh-120px)] md:h-[calc(100vh-120px)]\"\n                  />\n              </div>\n            </div>\n          }\n          ErrorBoundary={LexicalErrorBoundary}\n        />\n\n        <ClickableLinkPlugin />\n        <CheckListPlugin />\n        <HorizontalRulePlugin />\n        <TablePlugin />\n        <ListPlugin />\n        <TabIndentationPlugin />\n        <HashtagPlugin />\n        <HistoryPlugin />\n\n        <MentionsPlugin />\n        <PageBreakPlugin />\n        <DraggableBlockPlugin anchorElem={floatingAnchorElem} />\n        <KeywordsPlugin />\n        <EmojisPlugin />\n        <ImagesPlugin />\n        <InlineImagePlugin />\n        <ExcalidrawPlugin />\n        <TableCellResizerPlugin />\n        <TableHoverActionsPlugin anchorElem={floatingAnchorElem} />\n        <TableActionMenuPlugin\n          anchorElem={floatingAnchorElem}\n          cellMerge={true}\n        />\n        <PollPlugin />\n        <LayoutPlugin />\n        <EquationsPlugin />\n        <CollapsiblePlugin />\n\n        <AutoEmbedPlugin />\n        <FigmaPlugin />\n        <TwitterPlugin />\n        <YouTubePlugin />\n\n        <CodeHighlightPlugin />\n        <CodeActionMenuPlugin anchorElem={floatingAnchorElem} />\n\n        <MarkdownShortcutPlugin\n          transformers={[\n            TABLE,\n            HR,\n            IMAGE,\n            EMOJI,\n            EQUATION,\n            TWEET,\n            CHECK_LIST,\n            ...ELEMENT_TRANSFORMERS,\n            ...MULTILINE_ELEMENT_TRANSFORMERS,\n            ...TEXT_FORMAT_TRANSFORMERS,\n            ...TEXT_MATCH_TRANSFORMERS,\n          ]}\n        />\n        <TabFocusPlugin />\n        <AutocompletePlugin />\n        <AutoLinkPlugin />\n        <LinkPlugin />\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            PageBreakPickerPlugin(),\n            PollPickerPlugin(),\n            EmbedsPickerPlugin({ embed: \"figma\" }),\n            EmbedsPickerPlugin({ embed: \"tweet\" }),\n            EmbedsPickerPlugin({ embed: \"youtube-video\" }),\n            EquationPickerPlugin(),\n            ImagePickerPlugin(),\n            CollapsiblePickerPlugin(),\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 anchorElem={floatingAnchorElem} />\n        <FloatingTextFormatToolbarPlugin anchorElem={floatingAnchorElem} />\n\n        <ListMaxIndentLevelPlugin />\n      </div>\n{/*       <ActionsPlugin>\n        <div className=\"clear-both flex items-center justify-between border-t p-1 overflow-auto gap-2\">\n          <div className=\"flex justify-start flex-1\">\n            <MaxLengthPlugin maxLength={maxLength} />\n            <CharacterLimitPlugin maxLength={maxLength} charset=\"UTF-16\" />\n          </div>\n          <div>\n            <CounterCharacterPlugin charset=\"UTF-16\" />\n          </div>\n          <div className=\"flex justify-end flex-1\">\n            <SpeechToTextPlugin />\n            <ShareContentPlugin />\n            <ImportExportPlugin />\n            <MarkdownTogglePlugin\n              shouldPreserveNewLinesInMarkdown={true}\n              transformers={[\n                TABLE,\n                HR,\n                IMAGE,\n                EMOJI,\n                EQUATION,\n                TWEET,\n                CHECK_LIST,\n                ...ELEMENT_TRANSFORMERS,\n                ...MULTILINE_ELEMENT_TRANSFORMERS,\n                ...TEXT_FORMAT_TRANSFORMERS,\n                ...TEXT_MATCH_TRANSFORMERS,\n              ]}\n            />\n            <EditModeTogglePlugin />\n            <>\n              <ClearEditorActionPlugin />\n              <ClearEditorPlugin />\n            </>\n            <TreeViewPlugin />\n          </div>\n        </div>\n      </ActionsPlugin> */}\n    </div>\n  );\n}\n","import { TextIcon } from \"lucide-react\"\nimport { $createParagraphNode, $getSelection, $isRangeSelection } from \"lexical\"\nimport { $setBlocksType } from \"@lexical/selection\"\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function ParagraphPickerPlugin() {\n  return new ComponentPickerOption('Paragraph', {\n    icon: <TextIcon className=\"size-4\" />,\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}","import { ListTodoIcon } from \"lucide-react\";\nimport { INSERT_CHECK_LIST_COMMAND } from \"@lexical/list\";\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function CheckListPickerPlugin() {\n  return new ComponentPickerOption('Check List', {\n    icon: <ListTodoIcon className=\"size-4\" />,\n    keywords: ['check list', 'todo list'],\n    onSelect: (_, editor) =>\n      editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined),\n  })\n}","import { ListOrderedIcon } from \"lucide-react\";\nimport { INSERT_ORDERED_LIST_COMMAND } from \"@lexical/list\";\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function NumberedListPickerPlugin() {\n  return new ComponentPickerOption('Numbered List', {\n    icon: <ListOrderedIcon className=\"size-4\" />,\n    keywords: ['numbered list', 'ordered list', 'ol'],\n    onSelect: (_, editor) =>\n      editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined),\n  })\n}","import { ListIcon } from \"lucide-react\";\n\nimport { INSERT_UNORDERED_LIST_COMMAND } from \"@lexical/list\";\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function BulletedListPickerPlugin() {\n  return new ComponentPickerOption('Bulleted List', {\n    icon: <ListIcon className=\"size-4\" />,\n    keywords: ['bulleted list', 'unordered list', 'ul'],\n    onSelect: (_, editor) =>\n      editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined),\n  })\n}\n","import { QuoteIcon } from \"lucide-react\"\nimport { $getSelection, $isRangeSelection } from \"lexical\"\nimport { $setBlocksType } from \"@lexical/selection\"\nimport { $createQuoteNode } from \"@lexical/rich-text\"\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function QuotePickerPlugin() {\n  return new ComponentPickerOption('Quote', {\n    icon: <QuoteIcon className=\"size-4\" />,\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  }","import { $getSelection, $isRangeSelection } from \"lexical\"\nimport { CodeIcon } from \"lucide-react\"\n\nimport { $createCodeNode } from \"@lexical/code\"\nimport { $setBlocksType } from \"@lexical/selection\"\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function CodePickerPlugin() {\n  return new ComponentPickerOption('Code', {\n    icon: <CodeIcon className=\"size-4\" />,\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}","import { MinusIcon } from \"lucide-react\";\nimport { INSERT_HORIZONTAL_RULE_COMMAND } from \"@lexical/react/LexicalHorizontalRuleNode\";\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function DividerPickerPlugin() {\n  return new ComponentPickerOption('Divider', {\n    icon: <MinusIcon className=\"size-4\" />,\n    keywords: ['horizontal rule', 'divider', 'hr'],\n    onSelect: (_, editor) =>\n      editor.dispatchCommand(INSERT_HORIZONTAL_RULE_COMMAND, undefined),\n  })\n}","import { ScissorsIcon } from \"lucide-react\";\n\nimport { INSERT_PAGE_BREAK } from \"@/components/editor/plugins/page-break-plugin\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function PageBreakPickerPlugin() {\n  return new ComponentPickerOption('Page Break', {\n    icon: <ScissorsIcon className=\"size-4\" />,\n    keywords: ['page break', 'divider'],\n    onSelect: (_, editor) => editor.dispatchCommand(INSERT_PAGE_BREAK, undefined),\n  })\n}","import { ListChecksIcon } from \"lucide-react\";\n\nimport { InsertPollDialog } from \"@/components/editor/plugins/poll-plugin\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function PollPickerPlugin() {\n\n  return new ComponentPickerOption('Poll', {\n    icon: <ListChecksIcon className=\"size-4\" />,\n    keywords: ['poll', 'vote'],\n    onSelect: (_, editor, showModal) =>\n      showModal('Insert Poll', (onClose) => (\n        <InsertPollDialog activeEditor={editor} onClose={onClose} />\n      )),\n  })\n}","import { DiffIcon } from \"lucide-react\";\n\nimport { InsertEquationDialog } from \"@/components/editor/plugins/equations-plugin\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function EquationPickerPlugin() {\n\n  return new ComponentPickerOption('Equation', {\n    icon: <DiffIcon className=\"size-4\" />,\n    keywords: ['equation', 'latex', 'math'],\n    onSelect: (_, editor, showModal) =>\n      showModal('Insert Equation', (onClose) => (\n        <InsertEquationDialog activeEditor={editor} onClose={onClose} />\n      )),\n  })\n}","import { ImageIcon } from \"lucide-react\";\n\nimport { InsertImageDialog } from \"@/components/editor/plugins/images-plugin\";\n\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function ImagePickerPlugin() {\n\n  return new ComponentPickerOption('Image', {\n    icon: <ImageIcon className=\"size-4\" />,\n    keywords: ['image', 'photo', 'picture', 'file'],\n    onSelect: (_, editor, showModal) =>\n      showModal('Insert Image', (onClose) => (\n        <InsertImageDialog activeEditor={editor} onClose={onClose} />\n      )),\n  })\n}","import { ListCollapseIcon } from \"lucide-react\";\n\nimport { INSERT_COLLAPSIBLE_COMMAND } from \"@/components/editor/plugins/collapsible-plugin\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function CollapsiblePickerPlugin() {\n  return new ComponentPickerOption('Collapsible', {\n    icon: <ListCollapseIcon className=\"size-4\" />,\n    keywords: ['collapse', 'collapsible', 'toggle'],\n    onSelect: (_, editor) =>\n      editor.dispatchCommand(INSERT_COLLAPSIBLE_COMMAND, undefined),\n  })\n}","import { Columns3Icon } from \"lucide-react\";\n\nimport { InsertLayoutDialog } from \"@/components/editor/plugins/layout-plugin\";\nimport { ComponentPickerOption } from \"@/components/editor/plugins/picker/component-picker-option\";\n\nexport function ColumnsLayoutPickerPlugin() {\n\n  return new ComponentPickerOption('Columns Layout', {\n    icon: <Columns3Icon className=\"size-4\" />,\n    keywords: ['columns', 'layout', 'grid'],\n    onSelect: (_, editor, showModal) =>\n      showModal('Insert Columns Layout', (onClose) => (\n        <InsertLayoutDialog activeEditor={editor} onClose={onClose} />\n      )),\n  })\n}","import {\n  InitialConfigType,\n  LexicalComposer,\n} from \"@lexical/react/LexicalComposer\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { $generateHtmlFromNodes } from \"@lexical/html\";\nimport { EditorState, SerializedEditorState } from \"lexical\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\n// Dynamic import of r2wc for web component creation\n\nimport { FloatingLinkContext } from \"@/components/editor/context/floating-link-context\";\nimport { SharedAutocompleteContext } from \"@/components/editor/context/shared-autocomplete-context\";\nimport { editorTheme } from \"@/components/editor/themes/editor-theme\";\nimport { TooltipProvider } from \"@/components/ui/tooltip\";\n\nimport { nodes } from \"./nodes\";\nimport { Plugins } from \"./plugins\";\n\nexport interface EditorProps {\n  editorState?: EditorState;\n  editorSerializedState?: SerializedEditorState;\n  onChange?: (editorState: EditorState) => void;\n  onSerializedChange?: (editorSerializedState: SerializedEditorState) => void;\n  onHtmlChange?: (html: string) => void;\n  placeholder?: string;\n  className?: string;\n}\n\nconst editorConfig: InitialConfigType = {\n  namespace: \"Editor\",\n  theme: editorTheme,\n  nodes,\n  onError: (error: Error) => {\n    console.error(error);\n  },\n};\n\nfunction Editor({\n  editorState,\n  editorSerializedState,\n  onChange,\n  onSerializedChange,\n  onHtmlChange,\n  placeholder,\n  className,\n}: EditorProps) {\n  return (\n    <div className=\"overflow-hidden rounded-lg border border-border-system-global-secondary bg-background-system-body-primary shadow w-full h-full max-w-full\">\n      <LexicalComposer\n        initialConfig={{\n          ...editorConfig,\n          ...(editorState ? { editorState } : {}),\n          ...(editorSerializedState\n            ? { editorState: JSON.stringify(editorSerializedState) }\n            : {}),\n        }}\n      >\n        <TooltipProvider>\n          <SharedAutocompleteContext>\n            <FloatingLinkContext>\n              <Plugins />\n              {onHtmlChange ? (\n                <HtmlChangePlugin onChange={onHtmlChange} />\n              ) : null}\n              <OnChangePlugin\n                ignoreSelectionChange={true}\n                onChange={(editorState) => {\n                  onChange?.(editorState);\n                  onSerializedChange?.(editorState.toJSON());\n                }}\n              />\n            </FloatingLinkContext>\n          </SharedAutocompleteContext>\n        </TooltipProvider>\n      </LexicalComposer>\n    </div>\n  );\n}\n\nfunction HtmlChangePlugin({ onChange }: { onChange: (html: string) => void }) {\n  const [editor] = useLexicalComposerContext();\n\n  editor.registerUpdateListener(() => {\n    editor.update(() => {\n      const html = $generateHtmlFromNodes(editor);\n      onChange(html);\n    });\n  });\n\n  return null;\n}\n\n// Create web component from React component (browser only)\nlet EditorWebComponent: any = null;\n\n// Async function to create web component\nasync function createWebComponent() {\n  if (typeof window !== 'undefined' && typeof customElements !== 'undefined') {\n    try {\n      const r2wc = await import(\"@r2wc/react-to-web-component\");\n      const r2wcFunction = r2wc.default || r2wc;\n      \n      EditorWebComponent = r2wcFunction(Editor, {\n        props: {\n          editorState: \"json\",\n          editorSerializedState: \"json\",\n          onChange: \"function\",\n          onSerializedChange: \"function\",\n          onHtmlChange: \"function\",\n        },\n      });\n\n      // Register the web component only if not already defined\n      if (!customElements.get(\"react-editor\")) {\n        customElements.define(\"react-editor\", EditorWebComponent);\n      }\n    } catch (error) {\n      console.warn(\"Failed to create web component:\", error);\n    }\n  }\n}\n\n// Initialize web component when in browser environment\nif (typeof window !== 'undefined') {\n  createWebComponent();\n}\n\n// Export both the React component and the web component\nexport { Editor, EditorWebComponent };\n","import { EditorThemeClasses } from 'lexical'\n\nexport const editorTheme: EditorThemeClasses = {\n  ltr: 'text-left',\n  rtl: 'text-right',\n  heading: {\n    h1: 'scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl',\n    h2: 'scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0',\n    h3: 'scroll-m-20 text-2xl font-semibold tracking-tight',\n    h4: 'scroll-m-20 text-xl font-semibold tracking-tight',\n    h5: 'scroll-m-20 text-lg font-semibold tracking-tight',\n    h6: 'scroll-m-20 text-base font-semibold tracking-tight',\n  },\n  paragraph: 'leading-7 [&:not(:first-child)]:mt-6',\n  quote: 'mt-6 border-l-2 pl-6 italic',\n  link: 'text-content-presentation-action-link-primary hover:underline hover:cursor-pointer',\n  list: {\n    checklist: 'relative',\n    listitem: 'mx-8',\n    listitemChecked:\n      'relative mx-2 px-6 list-none outline-none line-through before:content-[\"\"] before:w-4 before:h-4 before:top-0.5 before:left-0 before:cursor-pointer before:block before:bg-cover before:absolute before:border before:border-border-presentation-action-primary before:rounded before:bg-background-presentation-action-primary before:bg-no-repeat after:content-[\"\"] after:cursor-pointer after:border-white after:border-solid after:absolute after:block after:top-[6px] after:w-[3px] after:left-[7px] after:right-[7px] after:h-[6px] after:rotate-45 after:border-r-2 after:border-b-2 after:border-l-0 after:border-t-0',\n    listitemUnchecked:\n      'relative mx-2 px-6 list-none outline-none before:content-[\"\"] before:w-4 before:h-4 before:top-0.5 before:left-0 before:cursor-pointer before:block before:bg-cover before:absolute before:border before:border-border-presentation-action-primary before:rounded',\n    nested: {\n      listitem: 'list-none before:hidden after:hidden',\n    },\n    ol: 'my-6 ml-6 list-decimal [&>li]:mt-2',\n    olDepth: [\n      'list-outside !list-decimal',\n      'list-outside !list-[upper-roman]',\n      'list-outside !list-[lower-roman]',\n      'list-outside !list-[upper-alpha]',\n      'list-outside !list-[lower-alpha]',\n    ],\n    ul: 'm-0 p-0 list-outside',\n  },\n  hashtag: 'text-content-presentation-badge-blue bg-background-presentation-badge-blue rounded-md px-1',\n  text: {\n    bold: 'font-bold',\n    code: 'bg-background-presentation-form-base p-1 rounded-md',\n    italic: 'italic',\n    strikethrough: 'line-through',\n    subscript: 'sub',\n    superscript: 'sup',\n    underline: 'underline',\n    underlineStrikethrough: 'underline line-through',\n  },\n  image: 'relative inline-block user-select-none cursor-default editor-image',\n  inlineImage:\n    'relative inline-block user-select-none cursor-default inline-editor-image',\n  keyword: 'text-content-presentation-badge-purple font-bold',\n  code: 'font-mono text-sm block p-2 my-2 overflow-x-auto border border-border-system-global-secondary rounded-lg tab-size-2 relative',\n  codeHighlight: {\n    atrule: 'text-content-presentation-badge-purple',\n    attr: 'text-content-presentation-badge-purple',\n    boolean: 'text-content-presentation-badge-red',\n    builtin: 'text-content-presentation-badge-green',\n    cdata: 'text-content-system-global-secondary',\n    char: 'text-content-presentation-badge-green',\n    class: 'text-content-presentation-badge-rose',\n    'class-name': 'text-content-presentation-badge-rose',\n    comment: 'text-content-system-global-secondary',\n    constant: 'text-content-presentation-badge-red',\n    deleted: 'text-content-presentation-badge-red',\n    doctype: 'text-content-system-global-secondary',\n    entity: 'text-content-presentation-badge-orange',\n    function: 'text-content-presentation-badge-rose',\n    important: 'text-content-presentation-badge-yellow',\n    inserted: 'text-content-presentation-badge-green',\n    keyword: 'text-content-presentation-badge-purple',\n    namespace: 'text-content-presentation-badge-yellow',\n    number: 'text-content-presentation-badge-red',\n    operator: 'text-content-presentation-badge-orange',\n    prolog: 'text-content-system-global-secondary',\n    property: 'text-content-presentation-badge-red',\n    punctuation: 'text-content-system-global-secondary/70',\n    regex: 'text-content-presentation-badge-yellow',\n    selector: 'text-content-presentation-badge-green',\n    string: 'text-content-presentation-badge-green',\n    symbol: 'text-content-presentation-badge-red',\n    tag: 'text-content-presentation-badge-red',\n    url: 'text-content-presentation-badge-orange',\n    variable: 'text-content-presentation-badge-yellow',\n  },\n  characterLimit: '!bg-background-presentation-state-negative-primary/50',\n  table: 'EditorTheme__table w-fit overflow-scroll border-collapse',\n  tableCell:\n    'EditorTheme__tableCell w-24 relative border px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right',\n  tableCellActionButton:\n    'EditorTheme__tableCellActionButton bg-background-system-body-primary block border-0 rounded-2xl w-5 h-5 text-content-system-global-primary cursor-pointer',\n  tableCellActionButtonContainer:\n    'EditorTheme__tableCellActionButtonContainer block right-1 top-1.5 absolute z-10 w-5 h-5',\n  tableCellEditing: 'EditorTheme__tableCellEditing rounded-sm shadow-sm',\n  tableCellHeader:\n    'EditorTheme__tableCellHeader bg-background-system-body-secondary border px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right',\n  tableCellPrimarySelected:\n    'EditorTheme__tableCellPrimarySelected border border-border-presentation-action-primary border-solid block h-[calc(100%-2px)] w-[calc(100%-2px)] absolute -left-[1px] -top-[1px] z-10 ',\n  tableCellResizer:\n    'EditorTheme__tableCellResizer absolute -right-1 h-full w-2 cursor-ew-resize z-10 top-0',\n  tableCellSelected: 'EditorTheme__tableCellSelected bg-background-system-body-secondary',\n  tableCellSortedIndicator:\n    'EditorTheme__tableCellSortedIndicator block opacity-50 absolute bottom-0 left-0 w-full h-1 bg-background-system-body-secondary',\n  tableResizeRuler:\n    'EditorTheme__tableCellResizeRuler block absolute w-[1px] h-full bg-background-presentation-action-primary top-0',\n  tableRowStriping:\n    'EditorTheme__tableRowStriping m-0 border-t p-0 even:bg-background-system-body-secondary',\n  tableSelected: 'EditorTheme__tableSelected ring-2 ring-border-presentation-state-focus ring-offset-2',\n  tableSelection: 'EditorTheme__tableSelection bg-transparent',\n  layoutItem: 'border border-dashed px-4 py-2',\n  layoutContainer: 'grid gap-2.5 my-2.5 mx-0',\n  autocomplete: 'text-content-system-global-secondary',\n  blockCursor: '',\n  embedBlock: {\n    base: 'user-select-none',\n    focus: 'ring-2 ring-border-presentation-state-focus ring-offset-2',\n  },\n  hr: 'p-0.5 border-none my-1 mx-0 cursor-pointer after:content-[\"\"] after:block after:h-0.5 after:bg-background-system-body-secondary selected:ring-2 selected:ring-border-presentation-state-focus selected:ring-offset-2 selected:user-select-none',\n  indent: '[--lexical-indent-base-value:40px]',\n  mark: '',\n  markOverlap: '',\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { Editor, EditorProps } from \"./editor\";\n\n/**\n * Client-only wrapper for the Editor component to prevent SSR issues\n * Use this component in Next.js applications to avoid HTMLElement errors\n */\nexport function EditorClient(props: EditorProps) {\n  const [isClient, setIsClient] = useState(false);\n\n  useEffect(() => {\n    setIsClient(true);\n  }, []);\n\n  // Return null during SSR to prevent hydration mismatch\n  if (!isClient) {\n    return null;\n  }\n\n  return <Editor {...props} />;\n}\n\nexport type { EditorProps } from \"./editor\";"],"names":["r","n","createContext","t","e","getTheme","o","URL","URLSearchParams","append","search","toString","Error","s","window","document","createElement","m","a","c","u","tag","p","initialConfig","children","l","theme","namespace","nodes","onError","d","editorState","html","f","E","createEditor","editable","update","$getRoot","isEmpty","i","activeElement","$getSelection","getRootElement","select","parseEditorState","setEditorState","setEditable","jsx","Provider","value","useEffect","ignoreHistoryMergeTagChange","ignoreSelectionChange","onChange","registerUpdateListener","dirtyElements","dirtyLeaves","prevEditorState","tags","size","has","Context","isLinkEditMode","setIsLinkEditMode","FloatingLinkContext","useState","useFloatingLinkContext","useContext","_cb","_newSuggestion","SharedAutocompleteContext","context","useMemo","suggestion","listeners","Set","cb","add","delete","newSuggestion","listener","Array","from","useSharedAutocompleteContext","subscribe","publish","setSuggestion","cn","inputs","twMerge","clsx","TooltipProvider","delayDuration","props","jsxRuntime","TooltipPrimitive","getEditorState","read","$getNodeByKey","isSelected","$setSelection","useCallback","$isNodeSelection","clear","nodeKey","registerCommand","CLICK_COMMAND","getElementByKey","target","shiftKey","_config","hrSelected","addClassNamesToElement","f$3","getType","clone","__key","importJSON","y","updateFromJSON","importDOM","hr","conversion","x","priority","exportDOM","element","createDOM","getTextContent","isInline","updateDOM","decorate","this","node","h","elements","WeakMap","readTouch","touch","changedTouches","clientX","clientY","addListener","elementValues","get","handleTouchstart","start","handleTouchend","end","addEventListener","set","removeEventListener","deleteListener","uuid","Math","random","replace","substr","$search","selection","$isRangeSelection","isCollapsed","getNodes","anchor","$isTextNode","isSimpleText","$isAtNodeEnd","word","text","getTextContentSize","push","length","reverse","join","AutocompletePlugin","editor","useLexicalComposerContext","query","searchText","server","AutocompleteServer","console","time","response","timeEnd","autocompleteNodeKey","lastMatch","lastSuggestion","searchPromise","$clearSuggestion","autocompleteNode","isAttached","remove","dismiss","$handleAutocompleteIntent","textNode","$createTextNode","selectNext","$handleKeypressCommand","preventDefault","rootElem","mergeRegister","registerNodeTransform","AutocompleteNode","key","getKey","__uuid","hasMatch","match","promise","then","refSearchPromise","selectionCopy","$createAutocompleteNode","insertNodes","updateAsyncSuggestion","catch","KEY_TAB_COMMAND","COMMAND_PRIORITY_LOW","KEY_ARROW_RIGHT_COMMAND","_force","force","abs","constructor","__publicField","DICTIONARY","isDismissed","Promise","resolve","reject","setTimeout","searchTextLength","char0","charCodeAt","isCapitalized","caseInsensitiveSearchText","String","fromCharCode","substring","DATABASE","find","dictionaryWord","startsWith","autocompleteChunk","LATENCY","DecoratorNode","super","serializedNode","exportJSON","type","version","prevNode","dom","config","UUID","AutocompleteComponent","className","autocomplete","userAgentData","navigator","isMobile","mobile","innerWidth","innerHeight","jsxs","spellCheck","CAN_USE_DOM","documentMode","InputEvent","IS_CHROME","test","userAgent","invariant","cond","message","setDomHiddenUntilFound","hidden","$convertDetailsElement","domNode","$createCollapsibleContainerNode","open","CollapsibleContainerNode","ElementNode","__open","setAttribute","detailsDom","getOpen","toggleOpen","currentOpen","contentDom","isHTMLElement","removeAttribute","details","setOpen","getWritable","getLatest","isOpen","$isCollapsibleContainerNode","$convertCollapsibleContentElement","$createCollapsibleContentNode","CollapsibleContentNode","classList","containerNode","getParentOrThrow","callback","onbeforematch","domOnBeforeMatch","div","hasAttribute","isShadowRoot","$isCollapsibleContentNode","$convertSummaryElement","$createCollapsibleTitleNode","CollapsibleTitleNode","collapsibleContainer","summary","collapseAtStart","_selection","insertBefore","transform","$isCollapsibleTitleNode","insertNewAfter","_","restoreSelection","contentNode","getNextSibling","firstChild","getFirstChild","$isElementNode","paragraph","$createParagraphNode","insertAfter","__format","format","setFormat","canIndent","g","N","C","v","F","L","FORMAT_ELEMENT_COMMAND","current","base","focus","filter","Boolean","ref","style","textAlign","FigmaComponent","documentID","BlockWithAlignableContents","width","height","src","allowFullScreen","FigmaNode","DecoratorBlockNode","id","__id","$createFigmaNode","getId","_includeInert","_includeDirectionless","_editor","embedBlockTheme","embedBlock","$convertTweetElement","getAttribute","$createTweetNode","isTwitterScriptLoading","TweetComponent","loadingComponent","onLoad","tweetID","containerRef","useRef","previousTweetIDRef","isTweetLoading","setIsTweetLoading","createTweet","async","twttr","widgets","error","script","body","appendChild","onload","onerror","display","TweetNode","createTextNode","YouTubeComponent","videoID","frameBorder","allow","title","$convertYoutubeElement","$createYouTubeNode","YouTubeNode","iframe","EmojiNode","TextNode","__className","__text","inner","$createEmojiNode","setDetail","detail","setMode","mode","setStyle","getClassName","emojiText","$applyNodeReplacement","EquationComponent","React","lazy","$convertEquationElement","equation","inline","atob","$createEquationNode","EquationNode","__equation","__inline","getEquation","btoa","katex","render","displayMode","errorColor","output","strict","throwOnError","trust","span","setEquation","Suspense","fallback","equationNode","$isEquationNode","ExcalidrawComponent","$convertExcalidrawElement","excalidrawData","styleAttributes","getComputedStyle","heightStr","getPropertyValue","widthStr","parseInt","$createExcalidrawNode","ExcalidrawNode","data","__data","__width","__height","image","content","svg","querySelector","innerHTML","outerHTML","setData","getWidth","setWidth","getHeight","setHeight","ImageComponent","require","$convertImageElement","img","parentElement","tagName","previousSibling","isGoogleDocCheckboxImg","alt","altText","$createImageNode","ImageNode","maxWidth","showCaption","caption","captionsEnabled","__src","__altText","__maxWidth","__showCaption","__caption","__captionsEnabled","nestedEditor","getAltText","toJSON","getSrc","setWidthAndHeight","writable","setShowCaption","resizable","$isImageNode","InlineImageComponent","$convertInlineImageElement","HTMLImageElement","$createInlineImageNode","InlineImageNode","position","__position","setAltText","getShowCaption","getPosition","setPosition","payload","getPositionClassName","inlineImage","$isInlineImageNode","KeywordNode","$createKeywordNode","cursor","canInsertTextBefore","canInsertTextAfter","isTextEntity","keyword","$convertLayoutContainerElement","templateColumns","$createLayoutContainerNode","LayoutContainerNode","__templateColumns","gridTemplateColumns","layoutContainer","json","canBeEmpty","getTemplateColumns","setTemplateColumns","$isLayoutContainerNode","LayoutItemNode","layoutItem","$createLayoutItemNode","$isLayoutItemNode","$convertMentionElement","textContent","$createMentionNode","MentionNode","mentionName","__mention","setTextContent","cssText","mentionNode","toggleDirectionless","PageBreakComponent","setSelected","clearSelection","useLexicalNodeSelection","$onDelete","event","deleteSelection","forEach","PageBreakNode","$isPageBreakNode","pbElem","KEY_DELETE_COMMAND","KEY_BACKSPACE_COMMAND","$createPageBreakNode","figure","$convertPageBreakElement","COMMAND_PRIORITY_HIGH","el","pageBreakAfter","PollComponent","createPollOption","uid","votes","cloneOption","option","$convertPollElement","question","options","$createPollNode","JSON","parse","PollNode","__question","__options","addOption","self","deleteOption","index","indexOf","splice","setOptionText","clonedOption","toggleVote","clientID","votesClone","voteIndex","stringify","elem","HeadingNode","ParagraphNode","QuoteNode","ListNode","ListItemNode","LinkNode","OverflowNode","HashtagNode","TableNode","TableCellNode","TableRowNode","CodeNode","CodeHighlightNode","HorizontalRuleNode","AutoLinkNode","defaultSelection","contains","preventScroll","registerCheckList","newTab","disabled","sanitizeUrl","getURL","getTarget","parentNode","isHTMLAnchorElement","href","button","metaKey","ctrlKey","registerRootListener","Object","setPrototypeOf","bind","__proto__","arguments","call","apply","concat","state","resetErrorBoundary","onReset","reset","prototype","create","getDerivedStateFromError","setState","componentDidCatch","componentDidUpdate","resetKeys","some","is","onResetKeysChange","fallbackRender","FallbackComponent","isValidElement","Component","border","color","padding","registerLexicalTextEntity","RegExp","alpha","alphanumeric","hashChars","hasNodes","$createHashtagNode","exec","k","Date","now","_nodeMap","$isRootNode","offset","__mode","M","z","isComposing","S","__parent","undoStack","redoStack","delay","externalHistoryState","pop","dispatchCommand","COMMAND_PRIORITY_EDITOR","CLEAR_EDITOR_COMMAND","CAN_REDO_COMMAND","getNode","hasStrictIndent","dependencies","export","regExp","transformers","registerMarkdownShortcuts","useLayoutEffect","initialValueFn","isEditable","registerEditableListener","contentEditable","placeholder","ErrorBoundary","getDecorators","registerDecoratorListener","keys","_onError","createPortal","registerRichText","location","origin","protocol","functionId","args","setTextNodeRange","insertRawText","stopImmediatePropagation","w","maxIndent","isBefore","$normalizeSelection__EXPERIMENTAL","INDENT_CONTENT_COMMAND","map","$getNearestBlockElementAncestorOrThrow","getIndent","max","COMMAND_PRIORITY_CRITICAL","hasCellMerge","hasCellBackgroundColor","hasTabHandler","hasHorizontalScroll","getBackgroundColor","setBackgroundColor","Separator","forwardRef","orientation","decorative","SeparatorPrimitive","Root","displayName","activeEditor","$updateToolbar","blockType","setBlockType","showModal","ToolbarContext","useToolbarContext","useUpdateToolbarHandler","SELECTION_CHANGE_COMMAND","blockTypeToBlockName","label","icon","TextIcon","h1","Heading1Icon","h2","Heading2Icon","h3","Heading3Icon","number","ListOrderedIcon","bullet","ListIcon","check","ListTodoIcon","code","CodeIcon","quote","QuoteIcon","Button","is_loading","variant","asChild","as","Tag","buttonType","containerClassName","Slot","buttonVariants","cloneElement","LoadingIcon","iconVariants","cva","variants","XL","defaultVariants","viewBox","fill","xmlns","PrimeStyle","BlueSecStyle","YelSecStyle","RedSecStyle","BorderStyle","PrimeContStyle","BlueContStyle","RedContStyle","true","compoundVariants","ToolTipRoot","TooltipTrigger","Trigger","TooltipContent","sideOffset","Portal","Content","TooltipArrow","Arrow","tooltipStyles","primary","highlight","Tooltip","onOpenChange","toolTipSide","contentAlign","avoidCollisions","tip","side","align","Select","SelectPrimitive","SelectGroup","Group","SelectValue","Value","SelectTrigger","errors","PopoverTriggerStyles","ScrollUpButton","ScrollDownButton","SelectContent","SelectContentStyles","Viewport","Label","SelectItem","active","Item","SelectItemStyles","ItemText","SystemStyle","PresentationStyle","Default","Warning","Negative","BlockFormatDropDown","anchorNode","$findMatchingParent","parent","getParent","$isRootOrShadowRoot","getTopLevelElementOrThrow","elementKey","$isListNode","parentList","$getNearestNodeOfType","getListType","$isHeadingNode","getTag","onValueChange","BLOCK_FORMAT_VALUE","FormatBulletedList","onPointerDown","INSERT_UNORDERED_LIST_COMMAND","$setBlocksType","FormatCheckList","INSERT_CHECK_LIST_COMMAND","FormatCodeBlock","$createCodeNode","codeNode","selection$1","FormatHeading","levels","level","headingSize","$createHeadingNode","FormatNumberedList","INSERT_ORDERED_LIST_COMMAND","FormatParagraph","FormatQuote","$createQuoteNode","Dialog","DialogPrimitive","DialogPortal","DialogClose","Close","DialogOverlay","Overlay","DialogContent","DialogHeader","DialogFooter","DialogTitle","Title","useEditorModal","modalContent","setModalContent","onClose","getContent","closeOnClickOutside","BlockInsertPlugin","modal","Fragment","PlusIcon","Description","INSERT_COLLAPSIBLE_COMMAND","createCommand","CollapsiblePlugin","$onEscapeUp","container","getFirstDescendant","$onEscapeDown","getLastChild","titleParagraph","contentParagraph","getLastDescendant","getChildren","child","DELETE_CHARACTER_COMMAND","topLevelElement","getTopLevelElement","getPreviousSibling","KEY_ARROW_DOWN_COMMAND","KEY_ARROW_UP_COMMAND","KEY_ARROW_LEFT_COMMAND","INSERT_PARAGRAPH_COMMAND","titleNode","selectEnd","utils","$insertNodeToNearestRoot","InsertCollapsibleContainer","onPointerUp","ChevronRightIcon","Icon","ChevronDownIcon","SelectScrollUpButton","SelectScrollDownButton","ItemIndicator","CheckIcon","ChevronUpIcon","LAYOUTS","InsertLayoutDialog","layout","setLayout","buttonLabel","item","defaultValue","onClick","INSERT_LAYOUT_COMMAND","UPDATE_LAYOUT_COMMAND","LayoutPlugin","$onEscape","before","descendant","template","itemsCount","getItemsCountFromTemplate","selectStart","prevItemsCount","getChildAtIndex","every","trim","split","InsertColumnsLayout","Columns3Icon","b","setRefElement","R","getElementById","getBoundingClientRect","top","scrollIntoView","block","I","bottom","A","close","anchorElementRef","resolution","menuRenderFn","onSelectOption","shouldSplitNodeWithQuery","commandPriority","preselectFirstItem","O","matchingString","P","slice","replaceableString","splitText","T","KEY_ENTER_COMMAND","selectOptionAndCleanUp","selectedIndex","setHighlightedIndex","onOpen","anchorClassName","left","getRect","offsetHeight","pageYOffset","pageXOffset","right","isConnected","overflow","overflowY","overflowX","requestAnimationFrame","ResizeObserver","capture","passive","observe","unobserve","onSelect","embedConfigs","onOpenEmbedModalForConfig","getMenuOptions","menuCommandPriority","parseUrl","registerMutationListener","updateTags","skipInitialization","__url","insertNode","Command","CommandPrimitive","CommandList","List","CommandGroup","CommandSeparator","CommandItem","Input","Popover","PopoverPrimitive","PopoverTrigger","PopoverContent","INSERT_FIGMA_COMMAND","FigmaPlugin","figmaNode","INSERT_TWEET_COMMAND","TwitterPlugin","tweetNode","INSERT_YOUTUBE_COMMAND","YouTubePlugin","youTubeNode","YoutubeEmbedConfig","contentName","exampleUrl","YoutubeIcon","result","keywords","url","EmbedConfigs","TwitterIcon","FigmaIcon","AutoEmbedDialog","embedConfig","setText","embedResult","setEmbedResult","validateText","timeoutId","clearTimeout","debounce","inputText","urlMatch","URL_MATCHER","parseResult","AutoEmbedPlugin","LexicalAutoEmbedPlugin","activeEmbedConfig","embedFn","dismissFn","AutoEmbedOption","PopoverPortal","InsertEmbeds","INSERT_EMBED_COMMAND","InsertHorizontalRule","INSERT_HORIZONTAL_RULE_COMMAND","ScissorsIcon","LabelPrimitive","Tabs","TabsPrimitive","TabsList","TabsTrigger","TabsContent","INSERT_IMAGE_COMMAND","InsertImageUriDialogBody","setSrc","isDisabled","htmlFor","InsertImageUploadedDialogBody","files","reader","FileReader","readAsDataURL","loadImage","accept","InsertImageDialog","hasModifier","handler","altKey","ImagesPlugin","imageNode","lexical","$insertNodes","$wrapNodeInElement","DRAGSTART_COMMAND","$getImageNodeInSelection","dataTransfer","TRANSPARENT_IMAGE","setDragImage","$onDragStart","DRAGOVER_COMMAND","canDropImage","$onDragover","DROP_COMMAND","dragData","getData","getDragImageData","range","targetWindow","nodeType","defaultView","ownerDocument","domSelection","getSelection","getDOMSelection","caretRangeFromPoint","rangeParent","collapse","rangeOffset","getRangeAt","getDragSelection","rangeSelection","$createRangeSelection","applyDOMRange","$onDrop","HTMLElement","closest","InsertImage","ImageIcon","Checkbox","CheckboxPrimitive","Indicator","INSERT_INLINE_IMAGE_COMMAND","InsertInlineImageDialog","checked","onCheckedChange","handleOnClick","InlineImagePlugin","InsertInlineImage","FileImageIcon","INSERT_PAGE_BREAK","PageBreakPlugin","pgBreak","InsertPageBreak","SquareSplitVerticalIcon","INSERT_POLL_COMMAND","InsertPollDialog","setQuestion","PollPlugin","pollNode","InsertPoll","ListChecksIcon","InsertTableDialog","rows","setRows","columns","setColumns","setIsDisabled","row","Number","column","INSERT_TABLE_COMMAND","InsertTable","TableIcon","ClearFormattingToolbarPlugin","clearFormatting","$isTableSelection","extractedNodes","extract","idx","extractedTextNode","__style","$isQuoteNode","$isDecoratorBlockNode","cellEditorConfig","cellEditorPlugins","CODE_LANGUAGE_OPTIONS","lang","friendlyName","entries","CODE_LANGUAGE_FRIENDLY_NAME_MAP","getCodeLanguageOptions","CodeLanguageToolbarPlugin","codeLanguage","setCodeLanguage","selectedElementKey","setSelectedElementKey","$isCodeNode","language","getLanguage","CODE_LANGUAGE_MAP","onCodeLanguageSelect","setLanguage","getLanguageFriendlyName","toggleVariants","default","outline","sm","lg","ToggleGroupContext","ToggleGroup","ToggleGroupPrimitive","ToggleGroupItem","getSelectedNode","focusNode","isBackward","ELEMENT_FORMAT_OPTIONS","iconRTL","name","center","justify","ElementFormatToolbarPlugin","elementFormat","setElementFormat","matchingParent","$isLinkNode","getFormatType","OUTDENT_CONTENT_COMMAND","ColorPicker","stopCloseOnClickSelf","rest","HexColorPicker","maxLength","stopPropagation","currentTarget","FontBackgroundToolbarPlugin","bgColor","setBgColor","$getSelectionStyleValueForProperty","applyStyleText","styles","skipHistoryStack","$patchStyleText","onBgColorSelect","PaintBucketIcon","FontColorToolbarPlugin","fontColor","setFontColor","onFontColorSelect","FONT_FAMILY_OPTIONS","FontFamilyToolbarPlugin","fontFamily","setFontFamily","handleClick","TypeIcon","iconClasses","bold","italic","underline","strikethrough","FontFormatToolbarPlugin","setIsSelected","hasFormat","iconClass","FORMAT_TEXT_COMMAND","FontSizeToolbarPlugin","fontSize","setFontSize","updateFontSize","newSize","min","HistoryToolbarPlugin","setIsEditable","canUndo","setCanUndo","canRedo","setCanRedo","CAN_UNDO_COMMAND","UNDO_COMMAND","REDO_COMMAND","SUPPORTED_URL_PROTOCOLS","parsedUrl","urlRegExp","validateUrl","LinkToolbarPlugin","isLink","setIsLink","KEY_MODIFIER_COMMAND","TOGGLE_LINK_COMMAND","COMMAND_PRIORITY_NORMAL","insertLink","SubSuperToolbarPlugin","isSubscript","setIsSubscript","isSuperscript","setIsSuperscript","U","$isLineBreakNode","shift","D","attributes","getFormat","getDetail","getStyle","setURL","getRel","rel","setRel","setTarget","matchers","getIsUnlinked","isEmailURI","$isAutoLinkNode","setIsUnlinked","markDirty","MATCHERS","createLinkMatcherWithRegExp","AutoLinkPlugin","LexicalAutoLinkPlugin","useDebounce","fn","ms","maxWait","funcRef","CopyButton","getCodeDOMNode","isCopyCompleted","setCopyCompleted","removeSuccessIcon","codeDOMNode","$getNearestNodeFromDOMNode","clipboard","writeText","err","CircleCheckIcon","CopyIcon","CodeActionMenuContainer","anchorElem","setLang","isShown","setShown","shouldListenMouseMove","setShouldListenMouseMove","codeSetRef","codeDOMNodeRef","debouncedOnMouseMove","isOutside","getMouseInfo","_lang","maybeCodeNode","editorElemY","editorElemRight","cancel","mutations","codeFriendlyName","CodeActionMenuPlugin","CodeHighlightPlugin","registerCodeHighlighting","R$2","KEY_ESCAPE_COMMAND","minLength","leadOffset","LexicalTypeaheadMenuPlugin","ComponentPickerMenuPlugin","baseOptions","dynamicOptionsFn","queryString","setQueryString","checkForTriggerMatch","useBasicTypeaheadTriggerMatch","regex","selectedOption","nodeToRemove","closeMenu","onQueryChange","triggerFn","onKeyDown","LexicalContextMenuPlugin","ContextMenuOption","MenuOption","ContextMenuPlugin","setIsOpen","defaultOptions","_node","COPY_COMMAND","CUT_COMMAND","DataTransfer","permissions","alert","types","dataString","ClipboardEvent","clipboardData","PASTE_COMMAND","items","readText","ancestorNodeWithRootAsParent","getParents","at","setOptions","targetNode","onWillOpen","newOptions","_options","setMenuRef","marginLeft","userSelect","ACCEPTABLE_IMAGE_TYPES","DragDropPastePlugin","DRAG_DROP_PASTE","filesResult","mediaFileReader","flatMap","file","isMimeType","b$1","_x","_y","equals","calcDeltaXTo","calcDeltaYTo","calcHorizontalDistanceTo","calcVerticalDistance","calcDistanceTo","sqrt","pow","B","_top","_right","_left","_bottom","reason","isOnBottomSide","isOnLeftSide","isOnRightSide","isOnTopSide","intersectsWith","generateNewRect","fromLTRB","fromLWTH","fromPoints","fromDOM","parseFloat","marginTop","marginBottom","previousElementSibling","nextElementSibling","getChildrenKeys","floor","K","Y","H","$","opacity","lineHeight","isNaN","pageY","draggable","onDragStart","onDragEnd","menuRef","targetLineRef","menuComponent","targetLineComponent","isOnMenu","onElementChanged","_editable","DraggableBlockPlugin","DraggableBlockPlugin_EXPERIMENTAL","execCommand","Plus","GripVerticalIcon","EmojiOption","emoji","EmojiPickerPlugin","emojis","setEmojis","emojiOptions","aliases","Map","$findAndTransformEmoji","emojiData","emojiStyle","emojiNode","$textNodeTransform","EmojisPlugin","useEmojis","destructive","secondary","ghost","link","Comp","Textarea","KatexRenderer","onDoubleClick","katexElementRef","katexElement","role","tabIndex","KatexEquationAlterer","onConfirm","initialEquation","setInline","onCheckboxChange","INSERT_EQUATION_COMMAND","InsertEquationDialog","onEquationConfirm","EquationsPlugin","Excalidraw","ExcalidrawModal","onSave","initialElements","initialAppState","initialFiles","onDelete","excaliDrawModelRef","excalidrawAPI","excalidrawAPIRefCallback","refValue","setRefValue","useCallbackRefState","discardModalOpen","setDiscardModalOpen","setElements","setFiles","modalOverlayElement","clickOutsideHandler","currentModalRef","ShowDiscardDialog","DialogTrigger","els","fls","initialData","appState","isLoading","isDeleted","getAppState","exportBackground","exportScale","exportWithDarkMode","isBindingEnabled","viewBackgroundColor","viewModeEnabled","zenModeEnabled","zoom","INSERT_EXCALIDRAW_COMMAND","ExcalidrawPlugin","isModalOpen","setModalOpen","excalidrawNode","setFloatingElemPositionForLinkEditor","targetRect","floatingElem","verticalGap","horizontalOffset","scrollerElem","floatingElemRect","anchorElementRect","editorScrollerRect","FloatingLinkEditor","editorRef","inputRef","linkUrl","setLinkUrl","editedLinkUrl","setEditedLinkUrl","lastSelection","setLastSelection","$updateLinkEditor","linkParent","editorElem","nativeSelection","rootElement","domRect","handleLinkSubmission","linkNode","$createLinkNode","__rel","__target","__title","X","Check","Pencil","Trash","FloatingLinkEditorPlugin","setActiveEditor","focusLinkNode","focusAutoLinkNode","badNode","autoLinkNode","_payload","newEditor","useFloatingLinkEditorToolbar","TextFormatFloatingToolbar","isBold","isItalic","isUnderline","isCode","isStrikethrough","popupCharStylesEditorRef","mouseMoveListener","buttons","pointerEvents","elementUnderMouse","elementFromPoint","mouseUpListener","$updateTextFormatFloatingToolbar","popupCharStylesEditorElem","rangeRect","domRange","rect","firstElementChild","getDOMRangeRect","setFloatingElemPosition","SubscriptIcon","SuperscriptIcon","FloatingTextFormatToolbarPlugin","isText","setIsText","setIsBold","setIsItalic","setIsUnderline","setIsStrikethrough","setIsCode","updatePopup","$isCodeHighlightNode","$isParagraphNode","rawTextContent","useFloatingTextFormatToolbar","KEYWORDS_REGEX","KeywordsPlugin","$createKeywordNode_","useLexicalTextEntity","matchArr","hashtagLength","startOffset","$toggleLink","objectKlassEquals","LinkPlugin","LexicalLinkPlugin","$shouldPreventIndent","maxDepth","elementNodesInSelection","nodesInSelection","getElementNodesInSelection","totalDepth","elementNode","$getListDepth","$isListItemNode","ListMaxIndentLevelPlugin","PUNC","PUNCTUATION","TRIGGERS","VALID_CHARS","AtSignMentionsRegex","AtSignMentionsRegexAliasRegex","mentionsCache","dummyMentionsData","dummyLookupService","string","results","mention","toLowerCase","includes","getPossibleQueryMatch","minMatchLength","maybeLeadingWhitespace","checkForAtSignMentions","MentionTypeaheadOption","picture","MentionsPlugin","mentionString","setResults","cachedResults","newResults","useMentionLookupService","checkForSlashTriggerMatch","CircleUserRoundIcon","nodeToReplace","checkForMentionMatch","lastTabKeyDownTimestamp","hasRegisteredKeyDownListener","TabFocusPlugin","timeStamp","FOCUS_COMMAND","computeSelectionCount","selectionShape","getShape","toX","fromX","toY","fromY","$cellContainsEmptyParagraph","cell","getChildrenSize","getFirstChildOrThrow","currentCellBackgroundColor","$getNodeTriplet","$isTableCellNode","TableActionMenu","tableCellNode","_tableCellNode","setIsMenuOpen","contextRef","cellMerge","dropDownRef","updateTableCellNode","selectionCounts","updateSelectionCounts","canMergeCells","setCanMergeCells","canUnmergeCell","setCanUnmergeCell","backgroundColor","nodeMutations","currentSelectionCounts","__colSpan","__rowSpan","$canUnmerge","menuButtonElement","dropDownElement","rootEleRect","menuButtonRect","dropDownElementRect","margin","leftPosition","topPosition","handleClickOutside","clearTableSelection","tableNode","$getTableNodeFromLexicalNodeOrThrow","tableElement","tableObserver","getTableObserverFromTableElement","$clearHighlight","mergeTableCellsAtSelection","firstCell","setColSpan","setRowSpan","lastDescendant","$selectLastDescendant","insertTableRowAtSelection","shouldInsertAfter","$insertTableRow__EXPERIMENTAL","insertTableColumnAtSelection","$insertTableColumn__EXPERIMENTAL","deleteTableRowAtSelection","$deleteTableRow__EXPERIMENTAL","deleteTableAtSelection","deleteTableColumnAtSelection","$deleteTableColumn__EXPERIMENTAL","toggleTableRowIsHeader","tableRowIndex","$getTableRowIndexFromTableCellNode","tableRows","tableRow","$isTableRowNode","newStyle","getHeaderStyles","TableCellHeaderStates","ROW","tableCell","setHeaderStyles","toggleTableColumnIsHeader","tableColumnIndex","$getTableColumnIndexFromTableCellNode","COLUMN","tableCells","toggleRowStriping","setRowStriping","getRowStriping","handleCellBackgroundColor","mergeCellButton","$unmergeCell","__headerState","TableCellActionMenuContainer","menuButtonRef","menuRootRef","isMenuOpen","setTableMenuCellNode","$moveMenu","menu","tableCellNodeFromSelection","$getTableCellNodeFromLexicalNode","menuButtonDOM","tableCellNodeDOM","tableCellRect","menuRect","anchorRect","prevTableCellDOM","TableActionMenuPlugin","useLexicalEditable","TableCellResizer","targetRef","resizerRef","tableRectRef","mouseStartPosRef","mouseCurrentPos","updateMouseCurrentPos","activeCell","updateActiveCell","isMouseDown","updateIsMouseDown","draggingDirection","updateDraggingDirection","resetState","getColWidths","numColumns","getColumnCount","setColWidths","onMouseMove","isMouseDownOnEvent","getDOMCellFromTarget","onMouseDown","onMouseUp","removeRootListener","prevRootElement","isHeightChanging","direction","updateRowHeight","heightChange","getRowSpan","rowCells","getCellNodeHeight","Infinity","newHeight","domCellNode","clientHeight","updateColumnWidth","widthChange","tableMap","$computeTableMapSkipCellCheck","columnIndex","getCellColumnIndex","colWidths","newColWidths","newWidth","mouseUpHandler","calculateZoomLevel","toggleResize","resizerStyles","zoneWidth","tableRect","getResizers","TableCellResizerPlugin","bodyRef","setBodyRef","TableHoverActionsContainer","isShownRow","setShownRow","isShownColumn","setShownColumn","tableSetRef","tableCellDOMNodeRef","tableDOMNode","hoveredRowNode","hoveredColumnNode","tableDOMElement","maybeTableCell","table","$isTableNode","rowCount","colCount","rowIndex","colIndex","tableElemWidth","tableElemY","tableElemRight","tableElemLeft","tableElemBottom","tableElemHeight","editorElemLeft","tableResizeObserver","disconnect","tableKey","insertAction","insertRow","maybeTableNode","TableHoverActionsPlugin","ToolbarPlugin","ariaActiveDescendant","ariaAutoComplete","ariaControls","ariaDescribedBy","ariaErrorMessage","ariaExpanded","ariaInvalid","ariaLabel","ariaLabelledBy","ariaMultiline","ariaOwns","ariaRequired","autoCapitalize","q","setRootElement","ContentEditable","placeholderClassName","LexicalContentEditable","ComponentPickerOption","keyboardShortcut","AlignmentPickerPlugin","alignment","AlignIcons","AlignLeftIcon","AlignCenterIcon","AlignRightIcon","AlignJustifyIcon","HeadingPickerPlugin","HeadingIcons","DynamicTablePickerPlugin","tableMatch","colOptions","EmbedsPickerPlugin","embed","emojiList","description","category","unicode_version","ios_version","skin_tones","EMOJI","importRegExp","trigger","EQUATION","HR","$isHorizontalRuleNode","_1","_2","isImport","line","$createHorizontalRuleNode","IMAGE","TWEET","$isTweetNode","TABLE_ROW_REG_EXP","TABLE_ROW_DIVIDER_REG_EXP","OTHER_MARKDOWN_TRANSFORMERS","CHECK_LIST","ELEMENT_TRANSFORMERS","MULTILINE_ELEMENT_TRANSFORMERS","TEXT_FORMAT_TRANSFORMERS","TEXT_MATCH_TRANSFORMERS","TABLE","rowOutput","isHeaderRow","$convertToMarkdownString","lastRow","matchCells","mapToTableCells","sibling","maxCells","cells","unshift","$createTableNode","$createTableRowNode","$createTableCell","getTableColumnsSize","$createTableCellNode","NO_STATUS","Plugins","floatingAnchorElem","setFloatingAnchorElem","onWheel","scrollWidth","clientWidth","deltaY","deltaX","scrollLeft","AutoFocusPlugin","RichTextPlugin","_floatingAnchorElem","LexicalErrorBoundary","ClickableLinkPlugin","CheckListPlugin","HorizontalRulePlugin","TablePlugin","ListPlugin","TabIndentationPlugin","HashtagPlugin","HistoryPlugin","MarkdownShortcutPlugin","MinusIcon","DiffIcon","ListCollapseIcon","editorConfig","ltr","rtl","heading","h4","h5","h6","list","checklist","listitem","listitemChecked","listitemUnchecked","nested","ol","olDepth","ul","hashtag","subscript","superscript","underlineStrikethrough","codeHighlight","atrule","attr","boolean","builtin","cdata","char","class","comment","constant","deleted","doctype","entity","function","important","inserted","operator","prolog","property","punctuation","selector","symbol","variable","characterLimit","tableCellActionButton","tableCellActionButtonContainer","tableCellEditing","tableCellHeader","tableCellPrimarySelected","tableCellResizer","tableCellSelected","tableCellSortedIndicator","tableResizeRuler","tableRowStriping","tableSelected","tableSelection","blockCursor","indent","mark","markOverlap","Editor","editorSerializedState","onSerializedChange","onHtmlChange","LexicalComposer","HtmlChangePlugin","OnChangePlugin","$generateHtmlFromNodes","EditorWebComponent","customElements","r2wc","import","r2wcFunction","exports","define","warn","createWebComponent","_window","createRange","anchorOffset","setStart","setEnd","isClient","setIsClient","DOMRect","isDOMNode"],"mappings":"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C,GAAe,KAAfO,GAAqBqD,EAAmB,EAC1C,OAAOH,EAAQ,MAEX,MAAAI,EAAQtD,EAAWuD,WAAW,GAC9BC,EAAgBF,GAAS,IAAMA,GAAS,GACxCG,EAA4BD,EAC9BE,OAAOC,aAAaL,EAAQ,IAAMtD,EAAW4D,UAAU,GACvD5D,EACE8B,EAAQ5E,KAAK2G,SAASC,KACzBC,GACCA,EAAeC,WAAWP,IAA8B,MAE5D,QAAc,IAAV3B,EACF,OAAOoB,EAAQ,MAEjB,MAGMe,GAHmBT,EACrBE,OAAOC,aAAa7B,EAAMyB,WAAW,GAAK,IAAMzB,EAAM8B,UAAU,GAChE9B,GACuC8B,UAAUP,GACrD,OACSH,EADiB,KAAtBe,EACa,KAEFA,IACd/G,KAAKgH,aAOZ,EAIF,MAAMnB,GAAa,CACjB,cACA,YACA,YACA,aACA,aACA,gBACA,cACA,YACA,YACA,aACA,YACA,YACA,YACA,YACA,aACA,aACA,cACA,YACA,YACA,aACA,aACA,cACA,YACA,YACA,cACA,YACA,YACA,cACA,aACA,YACA,aACA,aACA,YACA,eACA,YACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,aACA,gBACA,YACA,YACA,cACA,aACA,YACA,cACA,YACA,YACA,aACA,cACA,YACA,YACA,eACA,eACA,aACA,YACA,aACA,aACA,aACA,cACA,YACA,aACA,YACA,YACA,eACA,aACA,aACA,cACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,gBACA,eACA,aACA,aACA,iBACA,YACA,YACA,aACA,YACA,YACA,eACA,YACA,cACA,YACA,YACA,YACA,aACA,aACA,gBACA,cACA,aACA,aACA,YACA,eACA,YACA,YACA,YACA,eACA,aACA,YACA,cACA,iBACA,aACA,aACA,YACA,gBACA,cACA,YACA,YACA,YACA,aACA,aACA,aACA,YACA,YACA,aACA,eACA,YACA,aACA,YACA,eACA,aACA,gBACA,YACA,cACA,aACA,aACA,YACA,YACA,cACA,YACA,YACA,cACA,eACA,eACA,YACA,YACA,aACA,YACA,aACA,cACA,YACA,cACA,aACA,iBACA,aACA,cACA,YACA,cACA,aACA,aACA,YACA,gBACA,YACA,iBACA,aACA,aACA,cACA,aACA,YACA,cACA,YACA,aACA,cACA,YACA,aACA,aACA,aACA,cACA,cACA,YACA,eACA,YACA,gBACA,YACA,aACA,cACA,aACA,YACA,aACA,aACA,eACA,cACA,YACA,aACA,YACA,cACA,aACA,iBACA,YACA,aACA,YACA,aACA,aACA,aACA,YACA,aACA,aACA,YACA,YACA,cACA,aACA,eACA,YACA,YACA,aACA,cACA,cACA,aACA,gBACA,aACA,aACA,cACA,YACA,aACA,YACA,aACA,YACA,cACA,gBACA,aACA,YACA,YACA,aACA,YACA,eACA,aACA,aACA,eACA,YACA,aACA,aACA,gBACA,YACA,YACA,YACA,aACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,cACA,YACA,cACA,YACA,aACA,YACA,aACA,YACA,iBACA,YACA,YACA,YACA,YACA,cACA,aACA,aACA,gBACA,gBACA,YACA,eACA,YACA,aACA,cACA,eACA,YACA,aACA,aACA,aACA,aACA,YACA,YACA,cACA,YACA,aACA,YACA,YACA,YACA,gBACA,kBACA,aACA,gBACA,YACA,YACA,eACA,YACA,gBACA,YACA,YACA,aACA,YACA,YACA,aACA,aACA,aACA,aACA,gBACA,YACA,YACA,YACA,aACA,YACA,YACA,aACA,gBACA,YACA,cACA,YACA,YACA,gBACA,cACA,YACA,YACA,YACA,gBACA,YACA,aACA,cACA,aACA,cACA,eACA,iBACA,cACA,cACA,YACA,aACA,cACA,YACA,aACA,aACA,aACA,cACA,cACA,YACA,YACA,aACA,YACA,cACA,aACA,aACA,eACA,YACA,cACA,YACA,YACA,eACA,YACA,YACA,cACA,aACA,gBACA,YACA,iBACA,YACA,aACA,cACA,YACA,YACA,YACA,gBACA,YACA,YACA,cACA,cACA,YACA,YACA,YACA,eACA,iBACA,YACA,aACA,YACA,aACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,YACA,YACA,aACA,aACA,aACA,YACA,YACA,gBACA,aACA,cACA,YACA,aACA,YACA,cACA,YACA,cACA,aACA,YACA,gBACA,aACA,YACA,YACA,YACA,YACA,eACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,aACA,YACA,YACA,aACA,YACA,eACA,eACA,YACA,eACA,YACA,aACA,cACA,YACA,eACA,aACA,YACA,YACA,aACA,eACA,aACA,cACA,cACA,YACA,cACA,YACA,aACA,YACA,YACA,eACA,cACA,cACA,aACA,cACA,YACA,YACA,YACA,cACA,eACA,YACA,aACA,cACA,YACA,cACA,YACA,YACA,eACA,aACA,cACA,cACA,aACA,cACA,gBACA,cACA,YACA,cACA,eACA,kBACA,cACA,YACA,cACA,YACA,aACA,aACA,aACA,YACA,eACA,YACA,YACA,aACA,aACA,YACA,gBACA,iBACA,aACA,aACA,YACA,YACA,cACA,YACA,YACA,YACA,YACA,YACA,aACA,cACA,cACA,kBACA,YACA,YACA,cACA,eACA,aACA,aACA,YACA,aACA,YACA,aACA,YACA,aACA,YACA,YACA,aACA,aACA,YACA,aACA,YACA,cACA,YACA,YACA,eACA,YACA,YACA,aACA,YACA,aACA,cACA,YACA,YACA,aACA,aACA,aACA,cACA,aACA,YACA,aACA,aACA,YACA,YACA,cACA,aACA,gBACA,aACA,YACA,YACA,aACA,YACA,aACA,YACA,aACA,cACA,YACA,YACA,YACA,aACA,YACA,YACA,cACA,cACA,YACA,aACA,gBACA,YACA,YACA,aACA,YACA,cACA,YACA,YACA,YACA,YACA,aACA,YACA,aACA,YACA,YACA,YACA,aACA,gBACA,YACA,aACA,YACA,YACA,eACA,cACA,eACA,YACA,eACA,YACA,YACA,YACA,YACA,cACA,aACA,YACA,aACA,YACA,aACA,aACA,cACA,aACA,iBACA,YACA,YACA,YACA,YACA,cACA,aACA,eACA,aACA,aACA,YACA,eACA,cACA,cACA,YACA,cACA,eACA,aACA,gBACA,YACA,YACA,aACA,cACA,YACA,cACA,cACA,cACA,cACA,aACA,eACA,YACA,YACA,YACA,YACA,cACA,gBACA,YACA,YACA,aACA,eACA,YACA,cACA,gBACA,YACA,YACA,YACA,YACA,cACA,eACA,gBACA,aACA,YACA,YACA,iBACA,eACA,cACA,YACA,cACA,aACA,YACA,aACA,aACA,YACA,aACA,cACA,cACA,cACA,YACA,YACA,YACA,YACA,cACA,cACA,cACA,aACA,YACA,cACA,YACA,YACA,aACA,YACA,YACA,eACA,YACA,YACA,eACA,iBACA,cACA,YACA,YACA,YACA,gBACA,YACA,aACA,YACA,YACA,YACA,aACA,aACA,cACA,aACA,aACA,YACA,gBACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,eACA,YACA,cACA,aACA,YACA,cACA,gBACA,eACA,gBACA,YACA,cACA,qBACA,aACA,aACA,aACA,YACA,YACA,aACA,YACA,YACA,cACA,eACA,YACA,cACA,gBACA,eACA,aACA,aACA,cACA,YACA,YACA,cACA,YACA,mBACA,YACA,eACA,YACA,cACA,YACA,YACA,YACA,aACA,aACA,eACA,YACA,YACA,YACA,YACA,YACA,cACA,YACA,YACA,aACA,aACA,YACA,cACA,aACA,YACA,YACA,eACA,YACA,aACA,YACA,aACA,cACA,gBACA,iBACA,aACA,eACA,aACA,aACA,eACA,gBACA,aACA,cACA,aACA,aACA,YACA,aACA,aACA,eACA,cACA,eACA,cACA,YACA,aACA,cACA,YACA,aACA,aACA,cACA,YACA,cACA,cACA,cACA,eACA,aACA,aACA,aACA,eACA,cACA,YACA,cACA,aACA,aACA,cACA,YACA,YACA,YACA,aACA,YACA,cACA,cACA,YACA,eACA,YACA,aACA,aACA,aACA,gBACA,gBACA,gBACA,aACA,YACA,eACA,aACA,YACA,YACA,YACA,YACA,eACA,YACA,gBACA,cACA,aACA,aACA,YACA,aACA,aACA,YACA,YACA,YACA,aACA,aACA,YACA,eACA,YACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,gBACA,eACA,eACA,aACA,aACA,aACA,YACA,aACA,YACA,YACA,YACA,YACA,cACA,YACA,aACA,aACA,aACA,aACA,YACA,aACA,YACA,YACA,aACA,eACA,aACA,YACA,aACA,YACA,YACA,aACA,YACA,aACA,YACA,cACA,cACA,cACA,aACA,cACA,YACA,eACA,YACA,eACA,aACA,YACA,YACA,cACA,eACA,cACA,YACA,aACA,aACA,iBACA,cACA,eACA,YACA,YACA,eACA,YACA,YACA,YACA,iBACA,YACA,eACA,gBACA,eACA,YACA,YACA,YACA,aACA,cACA,YACA,YACA,cACA,YACA,cACA,YACA,aACA,aACA,iBACA,cACA,aACA,YACA,YACA,YACA,YACA,cACA,YACA,YACA,aACA,YACA,cACA,cACA,YACA,cACA,cACA,YACA,YACA,aACA,cACA,YACA,cACA,eACA,aACA,aACA,aACA,cACA,aACA,aACA,YACA,YACA,aACA,YACA,YACA,eACA,cACA,eACA,eACA,eACA,cACA,eACA,YACA,YACA,eACA,aACA,eACA,aACA,aACA,aACA,aACA,aACA,YACA,aACA,YACA,YACA,aACA,cACA,eACA,cACA,cACA,cACA,YACA,aACA,YACA,YACA,eACA,aACA,cACA,cACA,YACA,cACA,eACA,eACA,aACA,eACA,aACA,aACA,YACA,YACA,aACA,eACA,cACA,eACA,aACA,aACA,YACA,YACA,cACA,YACA,aACA,cACA,aACA,aACA,aACA,eACA,cACA,eACA,aACA,aACA,YACA,eACA,YACA,cACA,YACA,YACA,aACA,YACA,YACA,cACA,cACA,eACA,gBACA,cACA,cACA,YACA,eACA,eACA,YACA,iBACA,cACA,iBACA,cACA,aACA,aACA,aACA,YACA,YACA,aACA,eACA,iBACA,YACA,YACA,iBACA,aACA,aACA,YACA,YACA,YACA,cACA,aACA,aACA,YACA,YACA,YACA,iBACA,YACA,YACA,cACA,aACA,cACA,aACA,YACA,YACA,YACA,aACA,eACA,cACA,aACA,eACA,eACA,YACA,aACA,eACA,YACA,iBACA,YACA,aACA,YACA,YACA,YACA,cACA,aACA,YACA,YACA,YACA,aACA,aACA,YACA,YACA,cACA,YACA,YACA,YACA,YACA,cACA,eACA,iBACA,YACA,YACA,aACA,cACA,eACA,aACA,YACA,gBACA,YACA,YACA,cACA,aACA,aACA,cACA,eACA,YACA,aACA,aACA,YACA,cACA,aACA,YACA,cACA,cACA,YACA,cACA,eACA,YACA,aACA,YACA,eACA,aACA,aACA,YACA,eACA,cACA,cACA,cACA,cACA,cACA,cACA,cACA,YACA,eACA,YACA,YACA,aACA,YACA,YACA,YACA,YACA,cACA,cACA,aACA,YACA,aACA,gBACA,aACA,YACA,YACA,YACA,YACA,gBACA,YACA,cACA,gBACA,YACA,YACA,cACA,YACA,eACA,aACA,YACA,gBACA,YACA,YACA,aACA,YACA,cACA,aACA,YACA,aACA,eACA,YACA,aACA,aACA,cACA,cACA,YACA,YACA,iBACA,cACA,eACA,aACA,YACA,cACA,YACA,aACA,cACA,cACA,YACA,aACA,YACA,aACA,aACA,YACA,YACA,YACA,YACA,eACA,YACA,aACA,gBACA,YACA,cACA,gBACA,aACA,YACA,aACA,cACA,eACA,YACA,YACA,cACA,cACA,iBACA,aACA,YACA,YACA,cACA,cACA,YACA,cACA,YACA,cACA,eACA,YACA,YACA,gBACA,YACA,YACA,aACA,aACA,aACA,aACA,YACA,YACA,gBACA,eACA,eACA,aACA,aACA,YACA,cACA,YACA,YACA,eACA,cACA,YACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,YACA,aACA,aACA,aACA,aACA,cACA,eACA,eACA,YACA,aACA,YACA,aACA,iBACA,cACA,YACA,aACA,aACA,eACA,gBACA,aACA,eACA,aACA,aACA,YACA,aACA,YACA,cACA,YACA,gBACA,iBACA,YACA,aACA,YACA,aACA,aACA,eACA,YACA,aACA,cACA,aACA,cACA,YACA,cACA,YACA,YACA,aACA,eACA,aACA,eACA,eACA,aACA,YACA,aACA,iBACA,eACA,eACA,YACA,aACA,YACA,gBACA,eACA,gBACA,aACA,YACA,YACA,aACA,YACA,aACA,YACA,YACA,eACA,aACA,YACA,aACA,YACA,aACA,aACA,YACA,aACA,aACA,cACA,YACA,cACA,YACA,aACA,aACA,aACA,aACA,cACA,eACA,YACA,gBACA,YACA,eACA,gBACA,aACA,YACA,YACA,cACA,aACA,aACA,YACA,aACA,cACA,eACA,YACA,YACA,gBACA,aACA,aACA,cACA,aACA,aACA,eACA,YACA,YACA,cACA,YACA,cACA,YACA,YACA,cACA,YACA,aACA,cACA,cACA,aACA,YACA,YACA,YACA,YACA,cACA,YACA,aACA,cACA,YACA,YACA,gBACA,aACA,aACA,YACA,gBACA,eACA,aACA,cACA,aACA,YACA,eACA,YACA,aACA,aACA,YACA,YACA,YACA,YACA,aACA,aACA,YACA,eACA,eACA,YACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,cACA,aACA,YACA,eACA,YACA,cACA,YACA,aACA,YACA,YACA,aACA,aACA,YACA,aACA,aACA,YACA,aACA,YACA,gBACA,gBACA,YACA,gBACA,aACA,eACA,aACA,eACA,cACA,aACA,cACA,YACA,YACA,cACA,aACA,YACA,aACA,aACA,gBACA,YACA,aACA,aACA,cACA,cACA,cACA,gBACA,YACA,cACA,eACA,gBACA,YACA,cACA,aACA,aACA,YACA,cACA,aACA,aACA,aACA,YACA,aACA,YACA,cACA,gBACA,aACA,aACA,aACA,eACA,YACA,cACA,cACA,aACA,cACA,YACA,YACA,aACA,aACA,YACA,aACA,YACA,YACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,YACA,iBACA,YACA,YACA,aACA,cACA,YACA,YACA,aACA,aACA,aACA,YACA,aACA,eACA,YACA,YACA,YACA,YACA,YACA,aACA,gBACA,YACA,YACA,aACA,cACA,aACA,gBACA,YACA,cACA,YACA,YACA,YACA,eACA,aACA,YACA,aACA,iBACA,mBACA,YACA,aACA,YACA,aACA,eACA,aACA,aACA,aACA,eACA,aACA,aACA,aACA,eACA,eACA,aACA,cACA,cACA,cACA,YACA,cACA,gBACA,gBACA,YACA,aACA,YACA,YACA,YACA,YACA,aACA,cACA,cACA,cACA,aACA,aACA,aACA,cACA,YACA,iBACA,aACA,YACA,cACA,YACA,aACA,cACA,aACA,gBACA,cACA,aACA,cACA,YACA,YACA,YACA,aACA,kBACA,YACA,eACA,cACA,YACA,aACA,YACA,aACA,aACA,YACA,eACA,aACA,cACA,gBACA,YACA,YACA,aACA,YACA,YACA,aACA,aACA,aACA,aACA,YACA,YACA,YACA,cACA,cACA,YACA,eACA,YACA,cACA,aACA,cACA,YACA,YACA,gBACA,YACA,YACA,cACA,aACA,YACA,YACA,aACA,YACA,aACA,cACA,eACA,YACA,YACA,gBACA,YACA,aACA,eACA,YACA,YACA,cACA,YACA,aACA,YACA,iBACA,YACA,eACA,eACA,YACA,YACA,eACA,eACA,cACA,cACA,YACA,YACA,iBACA,aACA,cACA,YACA,cACA,YACA,eACA,gBACA,YACA,YACA,YACA,YACA,cACA,YACA,aACA,YACA,aACA,YACA,YACA,YACA,YACA,YACA,gBACA,aACA,aACA,aACA,YACA,YACA,eACA,aACA,aACA,aACA,YACA,YACA,YACA,eACA,YACA,aACA,eACA,aACA,aACA,kBACA,aACA,cACA,cACA,cACA,cACA,aACA,aACA,eACA,cACA,cACA,aACA,kBACA,YACA,YACA,aACA,YACA,aACA,YACA,gBACA,cACA,aACA,aACA,aACA,gBACA,gBACA,YACA,YACA,aACA,cACA,aACA,YACA,aACA,aACA,kBACA,aACA,YACA,YACA,aACA,aACA,aACA,aACA,cACA,aACA,YACA,aACA,aACA,gBACA,aACA,eACA,YACA,YACA,YACA,aACA,YACA,eACA,YACA,aACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,cACA,YACA,YACA,aACA,cACA,cACA,cACA,aACA,YACA,YACA,aACA,YACA,aACA,YACA,YACA,aACA,aACA,YACA,aACA,YACA,cACA,YACA,cACA,cACA,eACA,eACA,aACA,YACA,aACA,eACA,YACA,eACA,YACA,cACA,aACA,aACA,YACA,YACA,eACA,aACA,YACA,YACA,YACA,YACA,aACA,YACA,YACA,YACA,eACA,YACA,YACA,cACA,iBACA,aACA,YACA,cACA,YACA,cACA,YACA,YACA,eACA,aACA,aACA,YACA,cACA,kBACA,aACA,YACA,YACA,aACA,aACA,eACA,eACA,aACA,YACA,aACA,aACA,eACA,YACA,aACA,aACA,aACA,YACA,YACA,cACA,cACA,YACA,YACA,aACA,YACA,YACA,aACA,YACA,aACA,YACA,cACA,eACA,cACA,gBACA,YACA,aACA,aACA,YACA,eACA,aACA,YACA,YACA,iBACA,YACA,YACA,YACA,cACA,cACA,aACA,eACA,YACA,cACA,eACA,YACA,YACA,aACA,aACA,YACA,YACA,aACA,cACA,YACA,gBACA,aACA,cACA,gBACA,YACA,YACA,iBACA,aACA,aACA,cACA,aACA,YACA,YACA,cACA,aACA,YACA,YACA,YACA,YACA,cACA,YACA,aACA,aACA,YACA,aACA,YACA,YACA,cACA,aACA,YACA,aACA,cACA,eACA,cACA,cACA,cACA,eACA,YACA,eACA,YACA,YACA,YACA,cACA,YACA,YACA,cACA,YACA,gBACA,YACA,YACA,YACA,cACA,aACA,YACA,cACA,iBACA,YACA,cACA,eACA,YACA,cACA,cACA,aACA,YACA,YACA,cACA,YACA,eACA,cACA,YACA,YACA,YACA,YACA,aACA,aACA,cACA,eACA,cACA,cACA,YACA,aACA,YACA,YACA,eACA,eACA,cACA,cACA,aACA,aACA,cACA,YACA,eACA,YACA,aACA,YACA,cACA,eACA,YACA,YACA,cACA,cACA,cACA,eACA,aACA,gBACA,aACA,YACA,cACA,cACA,YACA,aACA,cACA,eACA,aACA,mBACA,aACA,eACA,gBACA,aACA,aACA,aACA,YACA,aACA,cACA,YACA,YACA,kBACA,YACA,YACA,gBACA,aACA,gBACA,YACA,YACA,YACA,YACA,YACA,YACA,cACA,YACA,gBACA,cACA,eACA,YACA,cACA,YACA,aACA,aACA,eACA,aACA,eACA,aACA,YACA,cACA,aACA,cACA,cACA,cACA,eACA,YACA,eACA,YACA,cACA,aACA,aACA,YACA,YACA,cACA,YACA,aACA,YACA,YACA,cACA,cACA,YACA,aACA,YACA,cACA,eACA,cACA,YACA,cACA,gBACA,YACA,eACA,eACA,aACA,YACA,aACA,YACA,eACA,YACA,aACA,YACA,YACA,aACA,aACA,gBACA,aACA,YACA,aACA,cACA,YACA,YACA,aACA,cACA,aACA,aACA,YACA,cACA,cACA,YACA,gBACA,aACA,aACA,YACA,YACA,aACA,cACA,cACA,YACA,aACA,aACA,cACA,YACA,cACA,aACA,eACA,aACA,eACA,cACA,YACA,YACA,YACA,YACA,cACA,YACA,YACA,YACA,aACA,YACA,gBACA,YACA,cACA,eACA,cACA,YACA,aACA,gBACA,aACA,cACA,YACA,YACA,aACA,cACA,YACA,kBACA,aACA,cACA,gBACA,aACA,eACA,aACA,YACA,YACA,YACA,kBCn8EK,MAAMtB,WAAyB0C,EAAAA,cAmCpC,WAAAtB,CAAYtE,EAAcmD,GACxB0C,MAAM1C,GA3BRoB,EAAA5F,KAAA,UA4BEA,KAAK0E,OAASrD,CAAA,CA1BhB,YAAOtC,CAAMkB,GACX,OAAO,IAAIsE,GAAiBtE,EAAKyE,OAAQzE,EAAKjB,MAAK,CAGrD,cAAOF,GACE,MAA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D,GAAe,EAAGD,QAC7CG,GAAAA,EAAAA,gBAAgBF,GAAc,CACjC,MAAAhyB,EAASgyB,EAAY/xB,YAEvB,IAACI,EAAAA,YAAYL,GACf,MAAM,IAAIl0B,MACR,+EAIJimD,EAAal9C,KAAKyjB,IAAI25B,EAAAA,cAAcjyB,GAAU,EAAG+xB,EAAU,CAI/D,OAAOA,EAAaJ,CACtB,CAEO,SAASQ,IAAyBR,SACvCA,EAAW,IAIL,MAACz7C,GAAUC,IASV,OAPP9H,EAAAA,UAAU,IACD6H,EAAOtE,gBACZsmB,EAAAA,uBACA,IAAMw5B,GAAqBC,GAC3Bp5B,EAAAA,2BAED,CAACriB,EAAQy7C,IACL,IACT,CClDA,MAAMvR,GAA6B76B,EAAAA,KACjC,IAAMjM,mCAAO,kDAYT84C,GALwB,CAE5BC,YALA,gEAQiCA,YAE7BC,GAAW,CAAC,KAAKt8C,KAAK,IAGtBu8C,GAAc,KAAOD,GAAWF,GAAO,OAevCI,GAAsB,IAAIl+B,OAC9B,gBAEEg+B,GACA,QAEAC,IAhBF,kBAIAH,GACA,OAMA,cAiBIK,GAAgC,IAAIn+B,OACxC,gBAEEg+B,GACA,QAEAC,GALF,cAeIG,OAAoBjL,IAEpBkL,GAAoB,CACxB,eACA,aACA,sBACA,uBACA,sBACA,gBACA,iBACA,2BACA,iBACA,uBACA,aACA,eACA,2BACA,UACA,QACA,eACA,OACA,OACA,eACA,QACA,eACA,iBACA,aACA,QACA,WACA,SACA,kBACA,kBACA,gBACA,cACA,eACA,OACA,QACA,iBACA,eACA,YACA,cACA,oBACA,kBACA,iBACA,YACA,UACA,aACA,iBACA,YACA,QACA,wBACA,cACA,cACA,OACA,QACA,SACA,WACA,eACA,iBACA,iBACA,wBACA,cACA,kBACA,gBACA,gBACA,eACA,gBACA,uBACA,YACA,uBACA,eACA,eACA,YACA,cACA,iBACA,cACA,eACA,iBACA,iBACA,gBACA,2BACA,0BACA,gBACA,iBACA,gBACA,mBACA,sBACA,aACA,kBACA,QACA,gBACA,cACA,eACA,aACA,OACA,aACA,aACA,gBACA,iBACA,YACA,cACA,SACA,eACA,gBACA,kBACA,kBACA,KACA,eACA,gBACA,QACA,QACA,WACA,YACA,gBACA,aACA,WACA,kBACA,iBACA,YACA,iBACA,SACA,YACA,OACA,YACA,OACA,WACA,aACA,SACA,iBACA,aACA,eACA,cACA,QACA,gBACA,gBACA,OACA,QACA,UACA,UACA,sBACA,UACA,OACA,QACA,aACA,cACA,yBACA,oBACA,iBACA,eACA,cACA,cACA,eACA,aACA,mBACA,sBACA,SACA,eACA,WACA,WACA,QACA,aACA,WACA,iBACA,YACA,gBACA,OACA,eACA,SACA,cACA,QACA,aACA,cACA,oBACA,QACA,iBACA,cACA,aACA,kBACA,gBACA,YACA,SACA,mBACA,kBACA,OACA,iBACA,aACA,eACA,YACA,aACA,kBACA,cACA,SACA,WACA,QACA,eACA,SACA,mBACA,cACA,aACA,eACA,gBACA,YACA,gBACA,SACA,YACA,aACA,WACA,QACA,UACA,mBACA,oBACA,cACA,gBACA,8BACA,mBACA,QACA,SACA,WACA,iBACA,gBACA,cACA,WACA,iBACA,QACA,kBACA,cACA,SACA,YACA,aACA,WACA,gBACA,WACA,aACA,WACA,WACA,mBACA,aACA,SACA,cACA,kBACA,eACA,gBACA,eACA,aACA,eACA,aACA,gBACA,cACA,SACA,gBACA,cACA,kBACA,YACA,iBACA,QACA,eACA,cACA,aACA,iBACA,WACA,eACA,MACA,gBACA,OACA,QACA,gBACA,eACA,cACA,YACA,aACA,YACA,aACA,gBACA,eACA,aACA,SACA,0BACA,kBACA,WACA,UACA,cACA,oBACA,aACA,iBACA,SACA,UACA,eACA,iBACA,iBACA,kBACA,eACA,WACA,cACA,QACA,QACA,QACA,SACA,QACA,OACA,OACA,eACA,mBACA,cACA,gBACA,kBACA,WACA,gBACA,MACA,WACA,cACA,QACA,eACA,aACA,iBACA,QACA,eACA,YACA,iBACA,OACA,aACA,cACA,iBACA,gBACA,OACA,cACA,QACA,cACA,cACA,qBACA,WACA,eACA,cACA,SACA,eACA,gBACA,UACA,iBACA,iBACA,iBACA,WACA,YACA,iBACA,UACA,eACA,YACA,WACA,oBACA,aACA,gBACA,YACA,YACA,eACA,cACA,QACA,gBACA,YACA,eACA,cACA,mBACA,UACA,aACA,UACA,QACA,eACA,QACA,QACA,kBACA,eACA,SACA,UACA,eACA,YACA,eACA,SACA,kBACA,aACA,iBACA,kBACA,MACA,QACA,cACA,cACA,iBACA,4BACA,aACA,SACA,UACA,OACA,aACA,QACA,aACA,QACA,iBACA,aACA,oBACA,iBACA,WACA,QACA,gBACA,gBACA,SACA,cACA,OACA,aACA,cACA,gBACA,WAGIC,GAAqB,CACzB,MAAAhnD,CAAOinD,EAAgB10C,GACrB1E,WAAW,KACT,MAAMq5C,EAAUH,GAAkB9xC,OAAQkyC,GACxCA,EAAQC,cAAcC,SAASJ,EAAOG,gBAExC70C,EAAS20C,IACR,IAAG,GA2DV,SAASI,GAAsBv9C,GACtB,OA5BT,SACEA,EACAw9C,GAEI,IAAAh7C,EAAQq6C,GAAoB59B,KAAKjf,GAKrC,GAHc,OAAVwC,IACMA,EAAAs6C,GAA8B79B,KAAKjf,IAE/B,OAAVwC,EAAgB,CAIZ,MAAAi7C,EAAyBj7C,EAAM,GAE/BqwB,EAAiBrwB,EAAM,GACzB,GAAAqwB,EAAe1yB,QAAUq9C,EACpB,MAAA,CACLhT,WAAYhoC,EAAM2X,MAAQsjC,EAAuBt9C,OACjD0yB,iBACAG,kBAAmBxwB,EAAM,GAE7B,CAEK,OAAA,IACT,CAGSk7C,CAAuB19C,EAAM,EACtC,CAEA,MAAM29C,WAA+BjS,GAInC,WAAAnoC,CAAYk+B,EAAcmc,GACxB94C,MAAM28B,GAJRj+B,EAAA5F,KAAA,QACA4F,EAAA5F,KAAA,WAIEA,KAAK6jC,KAAOA,EACZ7jC,KAAKggD,QAAUA,CAAA,EAIZ,SAASC,KACR,MAACt9C,GAAUC,KAEVqqC,EAAaC,GAAkBrxC,EAAAA,SAAwB,MACxD0jD,EA1ER,SAAiCW,GAC/B,MAAOX,EAASY,GAActkD,EA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","x_google_ignoreList":[0,1,2,7,8,19,20,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,76,77,116,122,124,127,144,153]}