@openeditor/ui 0.0.18 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { useOpenEditorThemeStyle, getDefaultSlashMenuItems, useOpenEditorController, OpenEditorThemeProvider, OpenEditorContent } from '@openeditor/react';
1
+ import { useOpenEditorThemeStyle, getDefaultSlashMenuItems, OpenEditorDragHandle, useOpenEditorController, OpenEditorThemeProvider, OpenEditorContent } from '@openeditor/react';
2
2
  export { OpenEditorContent, OpenEditorThemeProvider, createOpenEditorThemeStyle, openEditorThemeTokenNames, useOpenEditorController } from '@openeditor/react';
3
3
  export { OpenEditorEmojiPicker } from '@openeditor/emoji';
4
4
  import { Button } from '@base-ui/react/button';
@@ -9,7 +9,6 @@ import { Popover } from '@base-ui/react/popover';
9
9
  import { Toggle } from '@base-ui/react/toggle';
10
10
  import { ToggleGroup } from '@base-ui/react/toggle-group';
11
11
  import { Toolbar } from '@base-ui/react/toolbar';
12
- import { DragHandle } from '@tiptap/extension-drag-handle-react';
13
12
  import { Pilcrow, List, ListOrdered, ListTodo, Quote, Code, Heading1, Heading2, Heading3, Heading4, Heading5, Heading6, Bold, Italic, Underline, Strikethrough, Link, ChevronRight, GripVertical, ChevronDown, X, ArrowDown, ArrowUp, Upload, FileText, GitBranch, MessageSquare, Table, Columns2, Image, Minus, Type, Copy, CopyPlus, Trash2 } from 'lucide-react';
14
13
  import { useState, useRef, useMemo, useEffect, useCallback, Fragment as Fragment$1 } from 'react';
15
14
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -636,7 +635,7 @@ var OpenEditorBlockMenu = ({
636
635
  const activeTarget = target ?? (open ? lastTargetRef.current : null);
637
636
  if (!controller.editable || !controller.editor) return null;
638
637
  const handle = /* @__PURE__ */ jsx(
639
- DragHandle,
638
+ OpenEditorDragHandle,
640
639
  {
641
640
  className: "oe-block-handle-anchor",
642
641
  computePositionConfig: blockHandlePositionConfig,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.tsx"],"names":["ImageIcon","Fragment","OpenEditorThemeProvider"],"mappings":"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","file":"index.js","sourcesContent":["import \"./styles.css\";\nexport {\n createOpenEditorThemeStyle,\n OpenEditorThemeProvider,\n openEditorThemeTokenNames,\n type OpenEditorTheme,\n type OpenEditorThemeStyle,\n type OpenEditorThemeToken,\n} from \"@openeditor/react\";\nexport { OpenEditorEmojiPicker, type OpenEditorEmojiPickerProps } from \"@openeditor/emoji\";\nimport { Button, type Button as BaseButton } from \"@base-ui/react/button\";\nimport { Dialog } from \"@base-ui/react/dialog\";\nimport { Input, type Input as BaseInput } from \"@base-ui/react/input\";\nimport { Menu } from \"@base-ui/react/menu\";\nimport { Popover } from \"@base-ui/react/popover\";\nimport { Toggle, type Toggle as BaseToggle } from \"@base-ui/react/toggle\";\nimport { ToggleGroup, type ToggleGroup as BaseToggleGroup } from \"@base-ui/react/toggle-group\";\nimport { Toolbar } from \"@base-ui/react/toolbar\";\nimport { DragHandle } from \"@tiptap/extension-drag-handle-react\";\nimport {\n ArrowDown,\n ArrowUp,\n Bold,\n Copy,\n CopyPlus,\n ChevronDown,\n ChevronRight,\n Columns2,\n Code,\n FileText,\n GitBranch,\n GripVertical,\n Heading1,\n Heading2,\n Heading3,\n Heading4,\n Heading5,\n Heading6,\n Image as ImageIcon,\n Italic,\n Link,\n List,\n ListOrdered,\n ListTodo,\n MessageSquare,\n Minus,\n Pilcrow,\n Quote,\n Strikethrough,\n Table,\n Trash2,\n Type,\n Underline,\n Upload,\n X,\n type LucideIcon,\n} from \"lucide-react\";\nimport {\n getDefaultSlashMenuItems,\n OpenEditorContent,\n useOpenEditorController,\n type OpenEditorController,\n type OpenEditorBlockAction,\n type OpenEditorBlockTarget,\n type OpenEditorReactProps,\n type OpenEditorSlashMenuItem,\n OpenEditorThemeProvider,\n useOpenEditorThemeStyle,\n type OpenEditorTheme,\n} from \"@openeditor/react\";\nimport {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type FormEvent,\n} from \"react\";\n\nexport type OpenEditorSlashMenuProps = {\n controller: OpenEditorController;\n className?: string;\n items?: readonly OpenEditorSlashMenuItem[];\n container?: HTMLElement | null;\n};\n\nexport type OpenEditorSelectionBubbleProps = {\n controller: OpenEditorController;\n className?: string;\n container?: HTMLElement | null;\n};\n\nexport type OpenEditorBlockMenuProps = {\n controller: OpenEditorController;\n className?: string;\n container?: HTMLElement | null;\n};\n\nexport type OpenEditorProps = OpenEditorReactProps & {\n className?: string;\n contentClassName?: string;\n overlayContainer?: HTMLElement | null;\n theme?: OpenEditorTheme;\n};\n\nexport type OpenEditorButtonProps = BaseButton.Props;\nexport type OpenEditorToggleProps<Value extends string = string> = BaseToggle.Props<Value>;\nexport type OpenEditorToggleGroupProps<Value extends string = string> = BaseToggleGroup.Props<Value>;\nexport type OpenEditorInputProps = BaseInput.Props;\n\ntype OverlayRect = {\n left: number;\n right: number;\n top: number;\n bottom: number;\n width: number;\n height: number;\n};\n\ntype AnchoredOverlayState = {\n left: number;\n top: number;\n anchorRect?: OverlayRect;\n};\n\ntype VirtualAnchor = {\n contextElement?: Element;\n getBoundingClientRect: () => DOMRect;\n};\n\ntype SelectionAction = {\n key: string;\n label: string;\n active: boolean;\n Icon: LucideIcon;\n run: () => void;\n};\n\ntype BlockTransformAction = {\n key: string;\n label: string;\n Icon: LucideIcon;\n isActive: (controller: OpenEditorController) => boolean;\n run: (controller: OpenEditorController) => void;\n};\n\nconst headingDefinitions = [\n { level: 1, Icon: Heading1 },\n { level: 2, Icon: Heading2 },\n { level: 3, Icon: Heading3 },\n { level: 4, Icon: Heading4 },\n { level: 5, Icon: Heading5 },\n { level: 6, Icon: Heading6 },\n] as const;\n\nconst blockTransformActions: BlockTransformAction[] = [\n {\n key: \"paragraph\",\n label: \"Paragraph\",\n Icon: Pilcrow,\n isActive: ({ editor }) => editor?.isActive(\"paragraph\") ?? false,\n run: (controller) => controller.setParagraph(),\n },\n ...headingDefinitions.map(({ level, Icon }) => ({\n key: `heading${level}`,\n label: `Heading ${level}`,\n Icon,\n isActive: ({ editor }: OpenEditorController) => editor?.isActive(\"heading\", { level }) ?? false,\n run: (controller: OpenEditorController) => controller.toggleHeading(level),\n })),\n {\n key: \"bulletList\",\n label: \"Bullet List\",\n Icon: List,\n isActive: ({ editor }) => editor?.isActive(\"bulletList\") ?? false,\n run: (controller) => controller.toggleBulletList(),\n },\n {\n key: \"orderedList\",\n label: \"Numbered List\",\n Icon: ListOrdered,\n isActive: ({ editor }) => editor?.isActive(\"orderedList\") ?? false,\n run: (controller) => controller.toggleOrderedList(),\n },\n {\n key: \"taskList\",\n label: \"Task List\",\n Icon: ListTodo,\n isActive: ({ editor }) => editor?.isActive(\"taskList\") ?? false,\n run: (controller) => controller.toggleTaskList(),\n },\n {\n key: \"blockquote\",\n label: \"Quote\",\n Icon: Quote,\n isActive: ({ editor }) => editor?.isActive(\"blockquote\") ?? false,\n run: (controller) => controller.toggleBlockquote(),\n },\n {\n key: \"codeBlock\",\n label: \"Code\",\n Icon: Code,\n isActive: ({ editor }) => editor?.isActive(\"codeBlock\") ?? false,\n run: (controller) => controller.toggleCodeBlock(),\n },\n];\n\nconst getActiveBlockTransform = (controller: OpenEditorController) =>\n [\n \"taskList\",\n \"bulletList\",\n \"orderedList\",\n \"blockquote\",\n \"codeBlock\",\n \"heading1\",\n \"heading2\",\n \"heading3\",\n \"heading4\",\n \"heading5\",\n \"heading6\",\n \"paragraph\",\n ]\n .map((key) => blockTransformActions.find((action) => action.key === key))\n .find((action) => action?.isActive(controller)) ?? blockTransformActions[0];\n\nconst isHeadingKey = (key: string) => /^heading[1-6]$/.test(key);\n\nconst slashMenuIcons: Record<string, LucideIcon> = {\n paragraph: Pilcrow,\n ...Object.fromEntries(headingDefinitions.map(({ level, Icon }) => [`heading${level}`, Icon])),\n bulletList: List,\n orderedList: ListOrdered,\n taskList: ListTodo,\n blockquote: Quote,\n codeBlock: Code,\n divider: Minus,\n image: ImageIcon,\n columns: Columns2,\n table: Table,\n toggleList: ChevronRight,\n callout: MessageSquare,\n diagram: GitBranch,\n page: FileText,\n attachment: Upload,\n moveBlockUp: ArrowUp,\n moveBlockDown: ArrowDown,\n};\n\nconst getSlashMenuIcon = (item: OpenEditorSlashMenuItem) => slashMenuIcons[item.key] ?? Type;\n\nconst pointRect = (left: number, top: number): OverlayRect => ({\n left,\n right: left,\n top,\n bottom: top,\n width: 0,\n height: 0,\n});\n\nconst getAnchorRect = (state: AnchoredOverlayState) => state.anchorRect ?? pointRect(state.left, state.top);\n\nconst toVirtualAnchor = (\n state: AnchoredOverlayState,\n contextElement?: Element | null,\n): VirtualAnchor => ({\n contextElement: contextElement ?? undefined,\n getBoundingClientRect: () => {\n const rect = getAnchorRect(state);\n return {\n ...rect,\n x: rect.left,\n y: rect.top,\n toJSON: () => rect,\n } as DOMRect;\n },\n});\n\nconst cx = (...classes: Array<string | false | null | undefined>) => classes.filter(Boolean).join(\" \");\n\nconst withBaseClass = <State,>(baseClassName: string, className?: string | ((state: State) => string | undefined)) => {\n if (typeof className === \"function\") {\n return (state: State) => cx(baseClassName, className(state));\n }\n\n return cx(baseClassName, className);\n};\n\nexport const OpenEditorButton = ({ className, ...props }: OpenEditorButtonProps) => (\n <Button className={withBaseClass<BaseButton.State>(\"oe-button\", className)} {...props} />\n);\n\nexport const OpenEditorToggle = <Value extends string = string>({\n className,\n ...props\n}: OpenEditorToggleProps<Value>) => (\n <Toggle<Value> className={withBaseClass<BaseToggle.State>(\"oe-button oe-toggle\", className)} {...props} />\n);\n\nexport const OpenEditorToggleGroup = <Value extends string = string>({\n className,\n ...props\n}: OpenEditorToggleGroupProps<Value>) => (\n <ToggleGroup<Value> className={withBaseClass<BaseToggleGroup.State>(\"oe-toggle-group\", className)} {...props} />\n);\n\nexport const OpenEditorInput = ({ className, ...props }: OpenEditorInputProps) => (\n <Input className={withBaseClass<BaseInput.State>(\"oe-input\", className)} {...props} />\n);\n\nconst OpenEditorLinkDialog = ({\n controller,\n open,\n onOpenChange,\n}: {\n controller: OpenEditorController;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}) => {\n const themeStyle = useOpenEditorThemeStyle();\n const [url, setUrl] = useState(\"\");\n\n useEffect(() => {\n if (open) {\n setUrl(controller.getActiveLink() ?? \"https://\");\n }\n }, [open]);\n\n const submitLink = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n controller.setLink(url.trim());\n onOpenChange(false);\n };\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Backdrop className=\"oe-dialog-backdrop\" />\n <Dialog.Popup className=\"oe-dialog\" initialFocus={false} style={themeStyle}>\n <Dialog.Close className=\"oe-dialog-close\" aria-label=\"Close link dialog\">\n <X aria-hidden=\"true\" size={15} strokeWidth={2} />\n </Dialog.Close>\n <form className=\"oe-link-dialog-form\" onSubmit={submitLink}>\n <Dialog.Title className=\"oe-dialog-title\">Link</Dialog.Title>\n <OpenEditorInput\n aria-label=\"Link URL\"\n autoComplete=\"url\"\n inputMode=\"url\"\n value={url}\n onValueChange={setUrl}\n placeholder=\"https://example.com\"\n />\n <div className=\"oe-dialog-actions\">\n <OpenEditorButton\n type=\"button\"\n className=\"oe-dialog-button oe-dialog-button-remove\"\n onClick={() => {\n controller.setLink(null);\n onOpenChange(false);\n }}\n >\n Remove\n </OpenEditorButton>\n <OpenEditorButton type=\"submit\" className=\"oe-dialog-button oe-dialog-button-primary\">Apply</OpenEditorButton>\n </div>\n </form>\n </Dialog.Popup>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n\nconst SelectionButton = ({\n action,\n}: {\n action: SelectionAction;\n}) => (\n <Toolbar.Button\n type=\"button\"\n aria-label={action.label}\n aria-pressed={action.active}\n className=\"oe-toolbar-button\"\n data-active={action.active ? \"\" : undefined}\n onClick={action.run}\n >\n <action.Icon aria-hidden=\"true\" className=\"oe-toolbar-icon\" size={15} strokeWidth={2} />\n </Toolbar.Button>\n);\n\nconst SelectionBlockTransformMenu = ({\n controller,\n container,\n}: {\n controller: OpenEditorController;\n container?: HTMLElement | null;\n}) => {\n const themeStyle = useOpenEditorThemeStyle();\n const activeAction = getActiveBlockTransform(controller);\n const [menuOpen, setMenuOpen] = useState(false);\n const [headingPanelOpen, setHeadingPanelOpen] = useState(false);\n const headingActions = blockTransformActions.filter((action) => isHeadingKey(action.key));\n\n return (\n <Menu.Root\n modal={false}\n open={menuOpen}\n onOpenChange={(open) => {\n setMenuOpen(open);\n if (!open) setHeadingPanelOpen(false);\n }}\n >\n <Menu.Trigger\n type=\"button\"\n aria-label={`${activeAction.label}. Turn into`}\n className=\"oe-toolbar-button oe-block-transform-trigger\"\n onMouseDown={(event) => event.preventDefault()}\n >\n <activeAction.Icon aria-hidden=\"true\" className=\"oe-toolbar-icon\" size={15} strokeWidth={2} />\n <span className=\"oe-block-transform-trigger-label\">{activeAction.label}</span>\n <ChevronDown aria-hidden=\"true\" className=\"oe-toolbar-chevron\" size={12} strokeWidth={2} />\n </Menu.Trigger>\n <Menu.Portal container={container}>\n <Menu.Positioner\n positionMethod=\"fixed\"\n side=\"bottom\"\n align=\"start\"\n sideOffset={8}\n collisionPadding={12}\n collisionAvoidance={{ side: \"flip\", align: \"shift\", fallbackAxisSide: \"none\" }}\n >\n <Menu.Popup\n className=\"oe-cascade-menu\"\n style={themeStyle}\n onMouseLeave={() => setHeadingPanelOpen(false)}\n >\n <div className=\"oe-block-transform-menu oe-cascade-panel\">\n {blockTransformActions.map((action) => {\n if (isHeadingKey(action.key)) {\n if (action.key !== \"heading1\") return null;\n return (\n <Menu.Item\n closeOnClick={false}\n key=\"heading\"\n className=\"oe-block-transform-item\"\n data-active={isHeadingKey(activeAction.key) ? \"\" : undefined}\n label=\"Heading\"\n onClick={() => setHeadingPanelOpen(true)}\n onFocus={() => setHeadingPanelOpen(true)}\n onMouseEnter={() => setHeadingPanelOpen(true)}\n >\n <Heading1 aria-hidden=\"true\" className=\"oe-block-transform-icon\" size={15} strokeWidth={2} />\n <span>Heading</span>\n <ChevronRight aria-hidden=\"true\" className=\"oe-submenu-chevron\" size={13} strokeWidth={2} />\n </Menu.Item>\n );\n }\n\n const active = action.key === activeAction.key;\n return (\n <Menu.Item\n key={action.key}\n className=\"oe-block-transform-item\"\n data-active={active ? \"\" : undefined}\n label={action.label}\n onMouseEnter={() => setHeadingPanelOpen(false)}\n onClick={() => { if (!active) action.run(controller); }}\n >\n <action.Icon aria-hidden=\"true\" className=\"oe-block-transform-icon\" size={15} strokeWidth={2} />\n <span>{action.label}</span>\n </Menu.Item>\n );\n })}\n </div>\n {headingPanelOpen ? (\n <div className=\"oe-block-transform-menu oe-block-transform-submenu oe-cascade-panel\">\n {headingActions.map((headingAction) => {\n const headingActive = headingAction.key === activeAction.key;\n return (\n <button\n type=\"button\"\n key={headingAction.key}\n className=\"oe-block-transform-item\"\n data-active={headingActive ? \"\" : undefined}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => {\n if (!headingActive) headingAction.run(controller);\n setMenuOpen(false);\n }}\n role=\"menuitem\"\n >\n <headingAction.Icon aria-hidden=\"true\" className=\"oe-block-transform-icon\" size={15} strokeWidth={2} />\n <span>{headingAction.label}</span>\n </button>\n );\n })}\n </div>\n ) : null}\n </Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal>\n </Menu.Root>\n );\n};\n\nexport const OpenEditorSelectionBubble = ({\n controller,\n className = \"oe-bubble-menu\",\n container,\n}: OpenEditorSelectionBubbleProps) => {\n const themeStyle = useOpenEditorThemeStyle();\n const { editor, selectionBubbleState } = controller;\n const [linkDialogOpen, setLinkDialogOpen] = useState(false);\n const lastAnchorRef = useRef<AnchoredOverlayState | null>(null);\n\n if (selectionBubbleState) {\n lastAnchorRef.current = selectionBubbleState;\n }\n\n const anchor = useMemo(\n () => {\n const anchorState = selectionBubbleState ?? lastAnchorRef.current;\n return anchorState ? toVirtualAnchor(anchorState, editor?.view.dom) : null;\n },\n [editor?.view.dom, selectionBubbleState],\n );\n\n const actions: SelectionAction[] = editor\n ? [\n {\n key: \"bold\",\n label: \"Bold\",\n active: editor.isActive(\"bold\"),\n Icon: Bold,\n run: () => controller.toggleBold(),\n },\n {\n key: \"italic\",\n label: \"Italic\",\n active: editor.isActive(\"italic\"),\n Icon: Italic,\n run: () => controller.toggleItalic(),\n },\n {\n key: \"underline\",\n label: \"Underline\",\n active: editor.isActive(\"underline\"),\n Icon: Underline,\n run: () => controller.toggleUnderline(),\n },\n {\n key: \"strike\",\n label: \"Strikethrough\",\n active: editor.isActive(\"strike\"),\n Icon: Strikethrough,\n run: () => controller.toggleStrike(),\n },\n {\n key: \"code\",\n label: \"Inline code\",\n active: editor.isActive(\"code\"),\n Icon: Code,\n run: () => controller.toggleInlineCode(),\n },\n ]\n : [];\n\n if (!editor || (!selectionBubbleState && !linkDialogOpen)) {\n return null;\n }\n\n return (\n <>\n <Popover.Root open={Boolean(selectionBubbleState)} modal={false}>\n <Popover.Portal container={container}>\n <Popover.Positioner\n anchor={anchor}\n positionMethod=\"fixed\"\n side=\"top\"\n align=\"center\"\n sideOffset={10}\n collisionPadding={12}\n collisionAvoidance={{ side: \"flip\", align: \"shift\", fallbackAxisSide: \"none\" }}\n >\n <Popover.Popup\n className={className}\n style={themeStyle}\n onMouseDown={(event) => event.preventDefault()}\n >\n <Toolbar.Root className=\"oe-selection-toolbar\" aria-label=\"Selection formatting\">\n <SelectionBlockTransformMenu controller={controller} container={container} />\n {actions.map((action) => (\n <SelectionButton key={action.key} action={action} />\n ))}\n <Toolbar.Button\n type=\"button\"\n aria-label=\"Link\"\n className=\"oe-toolbar-button\"\n data-active={editor.isActive(\"link\") ? \"\" : undefined}\n onClick={() => setLinkDialogOpen(true)}\n >\n <Link aria-hidden=\"true\" className=\"oe-toolbar-icon\" size={15} strokeWidth={2} />\n </Toolbar.Button>\n </Toolbar.Root>\n </Popover.Popup>\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n <OpenEditorLinkDialog\n controller={controller}\n open={linkDialogOpen}\n onOpenChange={setLinkDialogOpen}\n />\n </>\n );\n};\n\nexport const OpenEditorSlashMenu = ({\n controller,\n className = \"oe-slash-menu\",\n items,\n container,\n}: OpenEditorSlashMenuProps) => {\n const themeStyle = useOpenEditorThemeStyle();\n const slashMenuItems = items ?? getDefaultSlashMenuItems(controller);\n const slashState = controller.slashState;\n const [headingPanelOpen, setHeadingPanelOpen] = useState(false);\n const anchor = useMemo(\n () =>\n slashState\n ? toVirtualAnchor(\n slashState,\n controller.editor?.view.dom,\n )\n : null,\n [controller.editor?.view.dom, slashState],\n );\n\n useEffect(() => setHeadingPanelOpen(false), [slashState?.query]);\n\n if (!slashState) {\n return null;\n }\n\n const matchingItems = slashMenuItems.filter((item) => {\n const haystack = `${item.label} ${item.group} ${item.keywords?.join(\" \") ?? \"\"}`.toLowerCase();\n return haystack.includes(slashState.query.toLowerCase());\n });\n const firstHeadingKey = matchingItems.find((item) => isHeadingKey(item.key))?.key;\n\n return (\n <Popover.Root open modal={false}>\n <Popover.Portal container={container}>\n <Popover.Positioner\n anchor={anchor}\n positionMethod=\"fixed\"\n side=\"bottom\"\n align=\"start\"\n sideOffset={8}\n collisionPadding={12}\n collisionAvoidance={{ side: \"flip\", align: \"shift\", fallbackAxisSide: \"none\" }}\n >\n <Popover.Popup\n className=\"oe-cascade-menu\"\n style={themeStyle}\n finalFocus={false}\n initialFocus={false}\n onMouseLeave={() => setHeadingPanelOpen(false)}\n >\n <div className={`${className} oe-cascade-panel`}>\n <div className=\"oe-slash-menu-scroll\">\n {matchingItems.map((item) => {\n if (isHeadingKey(item.key)) {\n if (item.key !== firstHeadingKey) return null;\n\n return (\n <button\n type=\"button\"\n key=\"heading\"\n className=\"oe-slash-menu-item\"\n onClick={() => setHeadingPanelOpen(true)}\n onFocus={() => setHeadingPanelOpen(true)}\n onMouseEnter={() => setHeadingPanelOpen(true)}\n onMouseDown={(event) => event.preventDefault()}\n >\n <Heading1 aria-hidden=\"true\" className=\"oe-slash-menu-icon\" size={15} strokeWidth={2} />\n <span>Heading</span>\n <ChevronRight aria-hidden=\"true\" className=\"oe-submenu-chevron\" size={13} strokeWidth={2} />\n </button>\n );\n }\n\n const Icon = getSlashMenuIcon(item);\n\n return (\n <button\n type=\"button\"\n key={item.key}\n className=\"oe-slash-menu-item\"\n onMouseEnter={() => setHeadingPanelOpen(false)}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => {\n item.execute({ controller, range: { from: slashState.from, to: slashState.to } });\n }}\n >\n <Icon aria-hidden=\"true\" className=\"oe-slash-menu-icon\" size={15} strokeWidth={2} />\n <span>{item.label}</span>\n </button>\n );\n })}\n </div>\n </div>\n {headingPanelOpen ? (\n <div className=\"oe-slash-menu oe-slash-submenu oe-cascade-panel\">\n {matchingItems.filter((item) => isHeadingKey(item.key)).map((headingItem) => {\n const HeadingIcon = getSlashMenuIcon(headingItem);\n return (\n <button\n type=\"button\"\n key={headingItem.key}\n className=\"oe-slash-menu-item\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => {\n headingItem.execute({ controller, range: { from: slashState.from, to: slashState.to } });\n }}\n role=\"menuitem\"\n >\n <HeadingIcon aria-hidden=\"true\" className=\"oe-slash-menu-icon\" size={15} strokeWidth={2} />\n <span>{headingItem.label}</span>\n </button>\n );\n })}\n </div>\n ) : null}\n </Popover.Popup>\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n\ntype ResolvedBlockAction = OpenEditorBlockAction & {\n Icon?: LucideIcon;\n};\n\nconst blockHandlePositionConfig = {\n placement: \"left-start\",\n strategy: \"absolute\",\n} as const;\n\nconst blockHandleNestedConfig = { edgeDetection: \"none\" } as const;\n\nconst builtInBlockActions = (\n controller: OpenEditorController,\n target: OpenEditorBlockTarget,\n): ResolvedBlockAction[] => [\n {\n id: \"copy\",\n label: \"Copy block\",\n group: \"edit\",\n Icon: Copy,\n run: () => controller.copyBlock(target),\n },\n {\n id: \"duplicate\",\n label: \"Duplicate\",\n group: \"edit\",\n Icon: CopyPlus,\n run: () => { controller.duplicateBlock(target); },\n },\n {\n id: \"delete\",\n label: \"Delete\",\n group: \"danger\",\n Icon: Trash2,\n run: () => { controller.deleteBlock(target); },\n },\n];\n\nexport const OpenEditorBlockMenu = ({\n controller,\n className,\n container,\n}: OpenEditorBlockMenuProps) => {\n const target = controller.blockTarget;\n const themeStyle = useOpenEditorThemeStyle();\n const [open, setOpen] = useState(false);\n const lastTargetRef = useRef<OpenEditorBlockTarget | null>(null);\n const dragHandleReferenceRef = useRef<VirtualAnchor | null>(null);\n const controllerRef = useRef(controller);\n controllerRef.current = controller;\n const getDragHandleReference = useCallback(\n () => dragHandleReferenceRef.current,\n [],\n );\n const handleDragNodeChange = useCallback(({\n editor,\n pos,\n }: {\n editor: NonNullable<OpenEditorController[\"editor\"]>;\n pos: number;\n }) => {\n const nodeDom = pos >= 0 ? editor.view.nodeDOM(pos) : null;\n if (nodeDom instanceof Element) {\n const geometryDom = nodeDom.matches(\"[data-node-view-wrapper]\")\n ? nodeDom\n : nodeDom.querySelector(\"[data-node-view-wrapper]\") ?? nodeDom;\n const nodeRect = geometryDom.getBoundingClientRect();\n const editorStyle = getComputedStyle(editor.view.dom);\n const gutterWidth = Number.parseFloat(\n editorStyle.getPropertyValue(\"--oe-block-gutter-width\"),\n ) || 0;\n const editorLeft = editor.view.dom.getBoundingClientRect().left + gutterWidth;\n dragHandleReferenceRef.current = {\n contextElement: editor.view.dom,\n getBoundingClientRect: () => ({\n bottom: nodeRect.bottom,\n height: nodeRect.height,\n x: editorLeft,\n y: nodeRect.y,\n left: editorLeft,\n right: editorLeft,\n top: nodeRect.top,\n width: 0,\n toJSON: () => undefined,\n } as DOMRect),\n };\n } else {\n dragHandleReferenceRef.current = null;\n }\n controllerRef.current.setBlockTargetAt(pos >= 0 ? pos : null);\n }, []);\n if (target) lastTargetRef.current = target;\n const activeTarget = target ?? (open ? lastTargetRef.current : null);\n\n if (!controller.editable || !controller.editor) return null;\n const handle = (\n <DragHandle\n className=\"oe-block-handle-anchor\"\n computePositionConfig={blockHandlePositionConfig}\n editor={controller.editor}\n getReferencedVirtualElement={getDragHandleReference}\n nested={blockHandleNestedConfig}\n onNodeChange={handleDragNodeChange}\n >\n {activeTarget ? (\n <Menu.Trigger\n aria-label={`Actions for ${activeTarget.blockName ?? activeTarget.nodeType} block`}\n className={cx(\"oe-block-handle\", className)}\n onMouseDown={(event) => {\n event.preventDefault();\n controller.editor?.commands.setMeta(\"lockDragHandle\", true);\n controller.selectBlock(activeTarget);\n }}\n type=\"button\"\n >\n <GripVertical aria-hidden=\"true\" size={16} strokeWidth={2} />\n </Menu.Trigger>\n ) : null}\n </DragHandle>\n );\n const actions: ResolvedBlockAction[] = activeTarget\n ? [...builtInBlockActions(controller, activeTarget), ...controller.blockActions]\n : [];\n return (\n <Menu.Root modal={false} open={open} onOpenChange={(nextOpen) => {\n setOpen(nextOpen);\n controller.editor?.commands.setMeta(\"lockDragHandle\", nextOpen);\n }}>\n {handle}\n {activeTarget ? <Menu.Portal container={container}>\n <Menu.Positioner\n align=\"start\"\n collisionAvoidance={{ side: \"flip\", align: \"shift\", fallbackAxisSide: \"none\" }}\n collisionPadding={12}\n positionMethod=\"fixed\"\n side=\"bottom\"\n sideOffset={8}\n >\n <Menu.Popup className=\"oe-block-menu\" style={themeStyle}>\n {actions.map((action, index) => {\n const previous = actions[index - 1];\n const Icon = action.Icon;\n const context = { controller, target: activeTarget };\n return (\n <Fragment key={action.id}>\n {previous && previous.group !== action.group ? <Menu.Separator className=\"oe-block-menu-separator\" /> : null}\n <Menu.Item\n className=\"oe-block-menu-item\"\n data-danger={action.group === \"danger\" ? \"\" : undefined}\n disabled={action.disabled?.(context)}\n onClick={() => { void action.run(context); }}\n >\n {Icon ? <Icon aria-hidden=\"true\" size={15} strokeWidth={2} /> : <span aria-hidden=\"true\" className=\"oe-block-menu-icon-placeholder\" />}\n <span>{action.label}</span>\n </Menu.Item>\n </Fragment>\n );\n })}\n </Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal> : null}\n </Menu.Root>\n );\n};\n\nexport const OpenEditor = ({\n className = \"oe-editor-surface\",\n contentClassName,\n overlayContainer,\n theme,\n ...props\n}: OpenEditorProps) => {\n const controller = useOpenEditorController(props);\n\n const editor = (\n <div className={className}>\n <OpenEditorContent controller={controller} className={contentClassName} />\n <OpenEditorBlockMenu controller={controller} container={overlayContainer} />\n <OpenEditorSelectionBubble controller={controller} container={overlayContainer} />\n <OpenEditorSlashMenu controller={controller} container={overlayContainer} />\n </div>\n );\n return theme ? <OpenEditorThemeProvider theme={theme}>{editor}</OpenEditorThemeProvider> : editor;\n};\n\nexport { OpenEditorContent, useOpenEditorController };\nexport type { OpenEditorBlockAction, OpenEditorBlockTarget, OpenEditorController, OpenEditorReactProps, OpenEditorSlashMenuItem };\n"]}
1
+ {"version":3,"sources":["../src/index.tsx"],"names":["ImageIcon","Fragment","OpenEditorThemeProvider"],"mappings":"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","file":"index.js","sourcesContent":["import \"./styles.css\";\nexport {\n createOpenEditorThemeStyle,\n OpenEditorThemeProvider,\n openEditorThemeTokenNames,\n type OpenEditorTheme,\n type OpenEditorThemeStyle,\n type OpenEditorThemeToken,\n} from \"@openeditor/react\";\nexport { OpenEditorEmojiPicker, type OpenEditorEmojiPickerProps } from \"@openeditor/emoji\";\nimport { Button, type Button as BaseButton } from \"@base-ui/react/button\";\nimport { Dialog } from \"@base-ui/react/dialog\";\nimport { Input, type Input as BaseInput } from \"@base-ui/react/input\";\nimport { Menu } from \"@base-ui/react/menu\";\nimport { Popover } from \"@base-ui/react/popover\";\nimport { Toggle, type Toggle as BaseToggle } from \"@base-ui/react/toggle\";\nimport { ToggleGroup, type ToggleGroup as BaseToggleGroup } from \"@base-ui/react/toggle-group\";\nimport { Toolbar } from \"@base-ui/react/toolbar\";\nimport { OpenEditorDragHandle } from \"@openeditor/react\";\nimport {\n ArrowDown,\n ArrowUp,\n Bold,\n Copy,\n CopyPlus,\n ChevronDown,\n ChevronRight,\n Columns2,\n Code,\n FileText,\n GitBranch,\n GripVertical,\n Heading1,\n Heading2,\n Heading3,\n Heading4,\n Heading5,\n Heading6,\n Image as ImageIcon,\n Italic,\n Link,\n List,\n ListOrdered,\n ListTodo,\n MessageSquare,\n Minus,\n Pilcrow,\n Quote,\n Strikethrough,\n Table,\n Trash2,\n Type,\n Underline,\n Upload,\n X,\n type LucideIcon,\n} from \"lucide-react\";\nimport {\n getDefaultSlashMenuItems,\n OpenEditorContent,\n useOpenEditorController,\n type OpenEditorController,\n type OpenEditorBlockAction,\n type OpenEditorBlockTarget,\n type OpenEditorReactProps,\n type OpenEditorSlashMenuItem,\n OpenEditorThemeProvider,\n useOpenEditorThemeStyle,\n type OpenEditorTheme,\n} from \"@openeditor/react\";\nimport {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type FormEvent,\n} from \"react\";\n\nexport type OpenEditorSlashMenuProps = {\n controller: OpenEditorController;\n className?: string;\n items?: readonly OpenEditorSlashMenuItem[];\n container?: HTMLElement | null;\n};\n\nexport type OpenEditorSelectionBubbleProps = {\n controller: OpenEditorController;\n className?: string;\n container?: HTMLElement | null;\n};\n\nexport type OpenEditorBlockMenuProps = {\n controller: OpenEditorController;\n className?: string;\n container?: HTMLElement | null;\n};\n\nexport type OpenEditorProps = OpenEditorReactProps & {\n className?: string;\n contentClassName?: string;\n overlayContainer?: HTMLElement | null;\n theme?: OpenEditorTheme;\n};\n\nexport type OpenEditorButtonProps = BaseButton.Props;\nexport type OpenEditorToggleProps<Value extends string = string> = BaseToggle.Props<Value>;\nexport type OpenEditorToggleGroupProps<Value extends string = string> = BaseToggleGroup.Props<Value>;\nexport type OpenEditorInputProps = BaseInput.Props;\n\ntype OverlayRect = {\n left: number;\n right: number;\n top: number;\n bottom: number;\n width: number;\n height: number;\n};\n\ntype AnchoredOverlayState = {\n left: number;\n top: number;\n anchorRect?: OverlayRect;\n};\n\ntype VirtualAnchor = {\n contextElement?: Element;\n getBoundingClientRect: () => DOMRect;\n};\n\ntype SelectionAction = {\n key: string;\n label: string;\n active: boolean;\n Icon: LucideIcon;\n run: () => void;\n};\n\ntype BlockTransformAction = {\n key: string;\n label: string;\n Icon: LucideIcon;\n isActive: (controller: OpenEditorController) => boolean;\n run: (controller: OpenEditorController) => void;\n};\n\nconst headingDefinitions = [\n { level: 1, Icon: Heading1 },\n { level: 2, Icon: Heading2 },\n { level: 3, Icon: Heading3 },\n { level: 4, Icon: Heading4 },\n { level: 5, Icon: Heading5 },\n { level: 6, Icon: Heading6 },\n] as const;\n\nconst blockTransformActions: BlockTransformAction[] = [\n {\n key: \"paragraph\",\n label: \"Paragraph\",\n Icon: Pilcrow,\n isActive: ({ editor }) => editor?.isActive(\"paragraph\") ?? false,\n run: (controller) => controller.setParagraph(),\n },\n ...headingDefinitions.map(({ level, Icon }) => ({\n key: `heading${level}`,\n label: `Heading ${level}`,\n Icon,\n isActive: ({ editor }: OpenEditorController) => editor?.isActive(\"heading\", { level }) ?? false,\n run: (controller: OpenEditorController) => controller.toggleHeading(level),\n })),\n {\n key: \"bulletList\",\n label: \"Bullet List\",\n Icon: List,\n isActive: ({ editor }) => editor?.isActive(\"bulletList\") ?? false,\n run: (controller) => controller.toggleBulletList(),\n },\n {\n key: \"orderedList\",\n label: \"Numbered List\",\n Icon: ListOrdered,\n isActive: ({ editor }) => editor?.isActive(\"orderedList\") ?? false,\n run: (controller) => controller.toggleOrderedList(),\n },\n {\n key: \"taskList\",\n label: \"Task List\",\n Icon: ListTodo,\n isActive: ({ editor }) => editor?.isActive(\"taskList\") ?? false,\n run: (controller) => controller.toggleTaskList(),\n },\n {\n key: \"blockquote\",\n label: \"Quote\",\n Icon: Quote,\n isActive: ({ editor }) => editor?.isActive(\"blockquote\") ?? false,\n run: (controller) => controller.toggleBlockquote(),\n },\n {\n key: \"codeBlock\",\n label: \"Code\",\n Icon: Code,\n isActive: ({ editor }) => editor?.isActive(\"codeBlock\") ?? false,\n run: (controller) => controller.toggleCodeBlock(),\n },\n];\n\nconst getActiveBlockTransform = (controller: OpenEditorController) =>\n [\n \"taskList\",\n \"bulletList\",\n \"orderedList\",\n \"blockquote\",\n \"codeBlock\",\n \"heading1\",\n \"heading2\",\n \"heading3\",\n \"heading4\",\n \"heading5\",\n \"heading6\",\n \"paragraph\",\n ]\n .map((key) => blockTransformActions.find((action) => action.key === key))\n .find((action) => action?.isActive(controller)) ?? blockTransformActions[0];\n\nconst isHeadingKey = (key: string) => /^heading[1-6]$/.test(key);\n\nconst slashMenuIcons: Record<string, LucideIcon> = {\n paragraph: Pilcrow,\n ...Object.fromEntries(headingDefinitions.map(({ level, Icon }) => [`heading${level}`, Icon])),\n bulletList: List,\n orderedList: ListOrdered,\n taskList: ListTodo,\n blockquote: Quote,\n codeBlock: Code,\n divider: Minus,\n image: ImageIcon,\n columns: Columns2,\n table: Table,\n toggleList: ChevronRight,\n callout: MessageSquare,\n diagram: GitBranch,\n page: FileText,\n attachment: Upload,\n moveBlockUp: ArrowUp,\n moveBlockDown: ArrowDown,\n};\n\nconst getSlashMenuIcon = (item: OpenEditorSlashMenuItem) => slashMenuIcons[item.key] ?? Type;\n\nconst pointRect = (left: number, top: number): OverlayRect => ({\n left,\n right: left,\n top,\n bottom: top,\n width: 0,\n height: 0,\n});\n\nconst getAnchorRect = (state: AnchoredOverlayState) => state.anchorRect ?? pointRect(state.left, state.top);\n\nconst toVirtualAnchor = (\n state: AnchoredOverlayState,\n contextElement?: Element | null,\n): VirtualAnchor => ({\n contextElement: contextElement ?? undefined,\n getBoundingClientRect: () => {\n const rect = getAnchorRect(state);\n return {\n ...rect,\n x: rect.left,\n y: rect.top,\n toJSON: () => rect,\n } as DOMRect;\n },\n});\n\nconst cx = (...classes: Array<string | false | null | undefined>) => classes.filter(Boolean).join(\" \");\n\nconst withBaseClass = <State,>(baseClassName: string, className?: string | ((state: State) => string | undefined)) => {\n if (typeof className === \"function\") {\n return (state: State) => cx(baseClassName, className(state));\n }\n\n return cx(baseClassName, className);\n};\n\nexport const OpenEditorButton = ({ className, ...props }: OpenEditorButtonProps) => (\n <Button className={withBaseClass<BaseButton.State>(\"oe-button\", className)} {...props} />\n);\n\nexport const OpenEditorToggle = <Value extends string = string>({\n className,\n ...props\n}: OpenEditorToggleProps<Value>) => (\n <Toggle<Value> className={withBaseClass<BaseToggle.State>(\"oe-button oe-toggle\", className)} {...props} />\n);\n\nexport const OpenEditorToggleGroup = <Value extends string = string>({\n className,\n ...props\n}: OpenEditorToggleGroupProps<Value>) => (\n <ToggleGroup<Value> className={withBaseClass<BaseToggleGroup.State>(\"oe-toggle-group\", className)} {...props} />\n);\n\nexport const OpenEditorInput = ({ className, ...props }: OpenEditorInputProps) => (\n <Input className={withBaseClass<BaseInput.State>(\"oe-input\", className)} {...props} />\n);\n\nconst OpenEditorLinkDialog = ({\n controller,\n open,\n onOpenChange,\n}: {\n controller: OpenEditorController;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}) => {\n const themeStyle = useOpenEditorThemeStyle();\n const [url, setUrl] = useState(\"\");\n\n useEffect(() => {\n if (open) {\n setUrl(controller.getActiveLink() ?? \"https://\");\n }\n }, [open]);\n\n const submitLink = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n controller.setLink(url.trim());\n onOpenChange(false);\n };\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Backdrop className=\"oe-dialog-backdrop\" />\n <Dialog.Popup className=\"oe-dialog\" initialFocus={false} style={themeStyle}>\n <Dialog.Close className=\"oe-dialog-close\" aria-label=\"Close link dialog\">\n <X aria-hidden=\"true\" size={15} strokeWidth={2} />\n </Dialog.Close>\n <form className=\"oe-link-dialog-form\" onSubmit={submitLink}>\n <Dialog.Title className=\"oe-dialog-title\">Link</Dialog.Title>\n <OpenEditorInput\n aria-label=\"Link URL\"\n autoComplete=\"url\"\n inputMode=\"url\"\n value={url}\n onValueChange={setUrl}\n placeholder=\"https://example.com\"\n />\n <div className=\"oe-dialog-actions\">\n <OpenEditorButton\n type=\"button\"\n className=\"oe-dialog-button oe-dialog-button-remove\"\n onClick={() => {\n controller.setLink(null);\n onOpenChange(false);\n }}\n >\n Remove\n </OpenEditorButton>\n <OpenEditorButton type=\"submit\" className=\"oe-dialog-button oe-dialog-button-primary\">Apply</OpenEditorButton>\n </div>\n </form>\n </Dialog.Popup>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n\nconst SelectionButton = ({\n action,\n}: {\n action: SelectionAction;\n}) => (\n <Toolbar.Button\n type=\"button\"\n aria-label={action.label}\n aria-pressed={action.active}\n className=\"oe-toolbar-button\"\n data-active={action.active ? \"\" : undefined}\n onClick={action.run}\n >\n <action.Icon aria-hidden=\"true\" className=\"oe-toolbar-icon\" size={15} strokeWidth={2} />\n </Toolbar.Button>\n);\n\nconst SelectionBlockTransformMenu = ({\n controller,\n container,\n}: {\n controller: OpenEditorController;\n container?: HTMLElement | null;\n}) => {\n const themeStyle = useOpenEditorThemeStyle();\n const activeAction = getActiveBlockTransform(controller);\n const [menuOpen, setMenuOpen] = useState(false);\n const [headingPanelOpen, setHeadingPanelOpen] = useState(false);\n const headingActions = blockTransformActions.filter((action) => isHeadingKey(action.key));\n\n return (\n <Menu.Root\n modal={false}\n open={menuOpen}\n onOpenChange={(open) => {\n setMenuOpen(open);\n if (!open) setHeadingPanelOpen(false);\n }}\n >\n <Menu.Trigger\n type=\"button\"\n aria-label={`${activeAction.label}. Turn into`}\n className=\"oe-toolbar-button oe-block-transform-trigger\"\n onMouseDown={(event) => event.preventDefault()}\n >\n <activeAction.Icon aria-hidden=\"true\" className=\"oe-toolbar-icon\" size={15} strokeWidth={2} />\n <span className=\"oe-block-transform-trigger-label\">{activeAction.label}</span>\n <ChevronDown aria-hidden=\"true\" className=\"oe-toolbar-chevron\" size={12} strokeWidth={2} />\n </Menu.Trigger>\n <Menu.Portal container={container}>\n <Menu.Positioner\n positionMethod=\"fixed\"\n side=\"bottom\"\n align=\"start\"\n sideOffset={8}\n collisionPadding={12}\n collisionAvoidance={{ side: \"flip\", align: \"shift\", fallbackAxisSide: \"none\" }}\n >\n <Menu.Popup\n className=\"oe-cascade-menu\"\n style={themeStyle}\n onMouseLeave={() => setHeadingPanelOpen(false)}\n >\n <div className=\"oe-block-transform-menu oe-cascade-panel\">\n {blockTransformActions.map((action) => {\n if (isHeadingKey(action.key)) {\n if (action.key !== \"heading1\") return null;\n return (\n <Menu.Item\n closeOnClick={false}\n key=\"heading\"\n className=\"oe-block-transform-item\"\n data-active={isHeadingKey(activeAction.key) ? \"\" : undefined}\n label=\"Heading\"\n onClick={() => setHeadingPanelOpen(true)}\n onFocus={() => setHeadingPanelOpen(true)}\n onMouseEnter={() => setHeadingPanelOpen(true)}\n >\n <Heading1 aria-hidden=\"true\" className=\"oe-block-transform-icon\" size={15} strokeWidth={2} />\n <span>Heading</span>\n <ChevronRight aria-hidden=\"true\" className=\"oe-submenu-chevron\" size={13} strokeWidth={2} />\n </Menu.Item>\n );\n }\n\n const active = action.key === activeAction.key;\n return (\n <Menu.Item\n key={action.key}\n className=\"oe-block-transform-item\"\n data-active={active ? \"\" : undefined}\n label={action.label}\n onMouseEnter={() => setHeadingPanelOpen(false)}\n onClick={() => { if (!active) action.run(controller); }}\n >\n <action.Icon aria-hidden=\"true\" className=\"oe-block-transform-icon\" size={15} strokeWidth={2} />\n <span>{action.label}</span>\n </Menu.Item>\n );\n })}\n </div>\n {headingPanelOpen ? (\n <div className=\"oe-block-transform-menu oe-block-transform-submenu oe-cascade-panel\">\n {headingActions.map((headingAction) => {\n const headingActive = headingAction.key === activeAction.key;\n return (\n <button\n type=\"button\"\n key={headingAction.key}\n className=\"oe-block-transform-item\"\n data-active={headingActive ? \"\" : undefined}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => {\n if (!headingActive) headingAction.run(controller);\n setMenuOpen(false);\n }}\n role=\"menuitem\"\n >\n <headingAction.Icon aria-hidden=\"true\" className=\"oe-block-transform-icon\" size={15} strokeWidth={2} />\n <span>{headingAction.label}</span>\n </button>\n );\n })}\n </div>\n ) : null}\n </Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal>\n </Menu.Root>\n );\n};\n\nexport const OpenEditorSelectionBubble = ({\n controller,\n className = \"oe-bubble-menu\",\n container,\n}: OpenEditorSelectionBubbleProps) => {\n const themeStyle = useOpenEditorThemeStyle();\n const { editor, selectionBubbleState } = controller;\n const [linkDialogOpen, setLinkDialogOpen] = useState(false);\n const lastAnchorRef = useRef<AnchoredOverlayState | null>(null);\n\n if (selectionBubbleState) {\n lastAnchorRef.current = selectionBubbleState;\n }\n\n const anchor = useMemo(\n () => {\n const anchorState = selectionBubbleState ?? lastAnchorRef.current;\n return anchorState ? toVirtualAnchor(anchorState, editor?.view.dom) : null;\n },\n [editor?.view.dom, selectionBubbleState],\n );\n\n const actions: SelectionAction[] = editor\n ? [\n {\n key: \"bold\",\n label: \"Bold\",\n active: editor.isActive(\"bold\"),\n Icon: Bold,\n run: () => controller.toggleBold(),\n },\n {\n key: \"italic\",\n label: \"Italic\",\n active: editor.isActive(\"italic\"),\n Icon: Italic,\n run: () => controller.toggleItalic(),\n },\n {\n key: \"underline\",\n label: \"Underline\",\n active: editor.isActive(\"underline\"),\n Icon: Underline,\n run: () => controller.toggleUnderline(),\n },\n {\n key: \"strike\",\n label: \"Strikethrough\",\n active: editor.isActive(\"strike\"),\n Icon: Strikethrough,\n run: () => controller.toggleStrike(),\n },\n {\n key: \"code\",\n label: \"Inline code\",\n active: editor.isActive(\"code\"),\n Icon: Code,\n run: () => controller.toggleInlineCode(),\n },\n ]\n : [];\n\n if (!editor || (!selectionBubbleState && !linkDialogOpen)) {\n return null;\n }\n\n return (\n <>\n <Popover.Root open={Boolean(selectionBubbleState)} modal={false}>\n <Popover.Portal container={container}>\n <Popover.Positioner\n anchor={anchor}\n positionMethod=\"fixed\"\n side=\"top\"\n align=\"center\"\n sideOffset={10}\n collisionPadding={12}\n collisionAvoidance={{ side: \"flip\", align: \"shift\", fallbackAxisSide: \"none\" }}\n >\n <Popover.Popup\n className={className}\n style={themeStyle}\n onMouseDown={(event) => event.preventDefault()}\n >\n <Toolbar.Root className=\"oe-selection-toolbar\" aria-label=\"Selection formatting\">\n <SelectionBlockTransformMenu controller={controller} container={container} />\n {actions.map((action) => (\n <SelectionButton key={action.key} action={action} />\n ))}\n <Toolbar.Button\n type=\"button\"\n aria-label=\"Link\"\n className=\"oe-toolbar-button\"\n data-active={editor.isActive(\"link\") ? \"\" : undefined}\n onClick={() => setLinkDialogOpen(true)}\n >\n <Link aria-hidden=\"true\" className=\"oe-toolbar-icon\" size={15} strokeWidth={2} />\n </Toolbar.Button>\n </Toolbar.Root>\n </Popover.Popup>\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n <OpenEditorLinkDialog\n controller={controller}\n open={linkDialogOpen}\n onOpenChange={setLinkDialogOpen}\n />\n </>\n );\n};\n\nexport const OpenEditorSlashMenu = ({\n controller,\n className = \"oe-slash-menu\",\n items,\n container,\n}: OpenEditorSlashMenuProps) => {\n const themeStyle = useOpenEditorThemeStyle();\n const slashMenuItems = items ?? getDefaultSlashMenuItems(controller);\n const slashState = controller.slashState;\n const [headingPanelOpen, setHeadingPanelOpen] = useState(false);\n const anchor = useMemo(\n () =>\n slashState\n ? toVirtualAnchor(\n slashState,\n controller.editor?.view.dom,\n )\n : null,\n [controller.editor?.view.dom, slashState],\n );\n\n useEffect(() => setHeadingPanelOpen(false), [slashState?.query]);\n\n if (!slashState) {\n return null;\n }\n\n const matchingItems = slashMenuItems.filter((item) => {\n const haystack = `${item.label} ${item.group} ${item.keywords?.join(\" \") ?? \"\"}`.toLowerCase();\n return haystack.includes(slashState.query.toLowerCase());\n });\n const firstHeadingKey = matchingItems.find((item) => isHeadingKey(item.key))?.key;\n\n return (\n <Popover.Root open modal={false}>\n <Popover.Portal container={container}>\n <Popover.Positioner\n anchor={anchor}\n positionMethod=\"fixed\"\n side=\"bottom\"\n align=\"start\"\n sideOffset={8}\n collisionPadding={12}\n collisionAvoidance={{ side: \"flip\", align: \"shift\", fallbackAxisSide: \"none\" }}\n >\n <Popover.Popup\n className=\"oe-cascade-menu\"\n style={themeStyle}\n finalFocus={false}\n initialFocus={false}\n onMouseLeave={() => setHeadingPanelOpen(false)}\n >\n <div className={`${className} oe-cascade-panel`}>\n <div className=\"oe-slash-menu-scroll\">\n {matchingItems.map((item) => {\n if (isHeadingKey(item.key)) {\n if (item.key !== firstHeadingKey) return null;\n\n return (\n <button\n type=\"button\"\n key=\"heading\"\n className=\"oe-slash-menu-item\"\n onClick={() => setHeadingPanelOpen(true)}\n onFocus={() => setHeadingPanelOpen(true)}\n onMouseEnter={() => setHeadingPanelOpen(true)}\n onMouseDown={(event) => event.preventDefault()}\n >\n <Heading1 aria-hidden=\"true\" className=\"oe-slash-menu-icon\" size={15} strokeWidth={2} />\n <span>Heading</span>\n <ChevronRight aria-hidden=\"true\" className=\"oe-submenu-chevron\" size={13} strokeWidth={2} />\n </button>\n );\n }\n\n const Icon = getSlashMenuIcon(item);\n\n return (\n <button\n type=\"button\"\n key={item.key}\n className=\"oe-slash-menu-item\"\n onMouseEnter={() => setHeadingPanelOpen(false)}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => {\n item.execute({ controller, range: { from: slashState.from, to: slashState.to } });\n }}\n >\n <Icon aria-hidden=\"true\" className=\"oe-slash-menu-icon\" size={15} strokeWidth={2} />\n <span>{item.label}</span>\n </button>\n );\n })}\n </div>\n </div>\n {headingPanelOpen ? (\n <div className=\"oe-slash-menu oe-slash-submenu oe-cascade-panel\">\n {matchingItems.filter((item) => isHeadingKey(item.key)).map((headingItem) => {\n const HeadingIcon = getSlashMenuIcon(headingItem);\n return (\n <button\n type=\"button\"\n key={headingItem.key}\n className=\"oe-slash-menu-item\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => {\n headingItem.execute({ controller, range: { from: slashState.from, to: slashState.to } });\n }}\n role=\"menuitem\"\n >\n <HeadingIcon aria-hidden=\"true\" className=\"oe-slash-menu-icon\" size={15} strokeWidth={2} />\n <span>{headingItem.label}</span>\n </button>\n );\n })}\n </div>\n ) : null}\n </Popover.Popup>\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n\ntype ResolvedBlockAction = OpenEditorBlockAction & {\n Icon?: LucideIcon;\n};\n\nconst blockHandlePositionConfig = {\n placement: \"left-start\",\n strategy: \"absolute\",\n} as const;\n\nconst blockHandleNestedConfig = { edgeDetection: \"none\" } as const;\n\nconst builtInBlockActions = (\n controller: OpenEditorController,\n target: OpenEditorBlockTarget,\n): ResolvedBlockAction[] => [\n {\n id: \"copy\",\n label: \"Copy block\",\n group: \"edit\",\n Icon: Copy,\n run: () => controller.copyBlock(target),\n },\n {\n id: \"duplicate\",\n label: \"Duplicate\",\n group: \"edit\",\n Icon: CopyPlus,\n run: () => { controller.duplicateBlock(target); },\n },\n {\n id: \"delete\",\n label: \"Delete\",\n group: \"danger\",\n Icon: Trash2,\n run: () => { controller.deleteBlock(target); },\n },\n];\n\nexport const OpenEditorBlockMenu = ({\n controller,\n className,\n container,\n}: OpenEditorBlockMenuProps) => {\n const target = controller.blockTarget;\n const themeStyle = useOpenEditorThemeStyle();\n const [open, setOpen] = useState(false);\n const lastTargetRef = useRef<OpenEditorBlockTarget | null>(null);\n const dragHandleReferenceRef = useRef<VirtualAnchor | null>(null);\n const controllerRef = useRef(controller);\n controllerRef.current = controller;\n const getDragHandleReference = useCallback(\n () => dragHandleReferenceRef.current,\n [],\n );\n const handleDragNodeChange = useCallback(({\n editor,\n pos,\n }: {\n editor: NonNullable<OpenEditorController[\"editor\"]>;\n pos: number;\n }) => {\n const nodeDom = pos >= 0 ? editor.view.nodeDOM(pos) : null;\n if (nodeDom instanceof Element) {\n const geometryDom = nodeDom.matches(\"[data-node-view-wrapper]\")\n ? nodeDom\n : nodeDom.querySelector(\"[data-node-view-wrapper]\") ?? nodeDom;\n const nodeRect = geometryDom.getBoundingClientRect();\n const editorStyle = getComputedStyle(editor.view.dom);\n const gutterWidth = Number.parseFloat(\n editorStyle.getPropertyValue(\"--oe-block-gutter-width\"),\n ) || 0;\n const editorLeft = editor.view.dom.getBoundingClientRect().left + gutterWidth;\n dragHandleReferenceRef.current = {\n contextElement: editor.view.dom,\n getBoundingClientRect: () => ({\n bottom: nodeRect.bottom,\n height: nodeRect.height,\n x: editorLeft,\n y: nodeRect.y,\n left: editorLeft,\n right: editorLeft,\n top: nodeRect.top,\n width: 0,\n toJSON: () => undefined,\n } as DOMRect),\n };\n } else {\n dragHandleReferenceRef.current = null;\n }\n controllerRef.current.setBlockTargetAt(pos >= 0 ? pos : null);\n }, []);\n if (target) lastTargetRef.current = target;\n const activeTarget = target ?? (open ? lastTargetRef.current : null);\n\n if (!controller.editable || !controller.editor) return null;\n const handle = (\n <OpenEditorDragHandle\n className=\"oe-block-handle-anchor\"\n computePositionConfig={blockHandlePositionConfig}\n editor={controller.editor}\n getReferencedVirtualElement={getDragHandleReference}\n nested={blockHandleNestedConfig}\n onNodeChange={handleDragNodeChange}\n >\n {activeTarget ? (\n <Menu.Trigger\n aria-label={`Actions for ${activeTarget.blockName ?? activeTarget.nodeType} block`}\n className={cx(\"oe-block-handle\", className)}\n onMouseDown={(event) => {\n event.preventDefault();\n controller.editor?.commands.setMeta(\"lockDragHandle\", true);\n controller.selectBlock(activeTarget);\n }}\n type=\"button\"\n >\n <GripVertical aria-hidden=\"true\" size={16} strokeWidth={2} />\n </Menu.Trigger>\n ) : null}\n </OpenEditorDragHandle>\n );\n const actions: ResolvedBlockAction[] = activeTarget\n ? [...builtInBlockActions(controller, activeTarget), ...controller.blockActions]\n : [];\n return (\n <Menu.Root modal={false} open={open} onOpenChange={(nextOpen) => {\n setOpen(nextOpen);\n controller.editor?.commands.setMeta(\"lockDragHandle\", nextOpen);\n }}>\n {handle}\n {activeTarget ? <Menu.Portal container={container}>\n <Menu.Positioner\n align=\"start\"\n collisionAvoidance={{ side: \"flip\", align: \"shift\", fallbackAxisSide: \"none\" }}\n collisionPadding={12}\n positionMethod=\"fixed\"\n side=\"bottom\"\n sideOffset={8}\n >\n <Menu.Popup className=\"oe-block-menu\" style={themeStyle}>\n {actions.map((action, index) => {\n const previous = actions[index - 1];\n const Icon = action.Icon;\n const context = { controller, target: activeTarget };\n return (\n <Fragment key={action.id}>\n {previous && previous.group !== action.group ? <Menu.Separator className=\"oe-block-menu-separator\" /> : null}\n <Menu.Item\n className=\"oe-block-menu-item\"\n data-danger={action.group === \"danger\" ? \"\" : undefined}\n disabled={action.disabled?.(context)}\n onClick={() => { void action.run(context); }}\n >\n {Icon ? <Icon aria-hidden=\"true\" size={15} strokeWidth={2} /> : <span aria-hidden=\"true\" className=\"oe-block-menu-icon-placeholder\" />}\n <span>{action.label}</span>\n </Menu.Item>\n </Fragment>\n );\n })}\n </Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal> : null}\n </Menu.Root>\n );\n};\n\nexport const OpenEditor = ({\n className = \"oe-editor-surface\",\n contentClassName,\n overlayContainer,\n theme,\n ...props\n}: OpenEditorProps) => {\n const controller = useOpenEditorController(props);\n\n const editor = (\n <div className={className}>\n <OpenEditorContent controller={controller} className={contentClassName} />\n <OpenEditorBlockMenu controller={controller} container={overlayContainer} />\n <OpenEditorSelectionBubble controller={controller} container={overlayContainer} />\n <OpenEditorSlashMenu controller={controller} container={overlayContainer} />\n </div>\n );\n return theme ? <OpenEditorThemeProvider theme={theme}>{editor}</OpenEditorThemeProvider> : editor;\n};\n\nexport { OpenEditorContent, useOpenEditorController };\nexport type { OpenEditorBlockAction, OpenEditorBlockTarget, OpenEditorController, OpenEditorReactProps, OpenEditorSlashMenuItem };\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openeditor/ui",
3
- "version": "0.0.18",
3
+ "version": "0.0.19",
4
4
  "type": "module",
5
5
  "sideEffects": [
6
6
  "**/*.css"
@@ -28,9 +28,8 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "@base-ui/react": "^1.6.0",
31
- "@openeditor/emoji": "0.0.18",
32
- "@openeditor/react": "0.0.18",
33
- "@tiptap/extension-drag-handle-react": "3.27.1",
31
+ "@openeditor/emoji": "0.0.19",
32
+ "@openeditor/react": "0.0.19",
34
33
  "lucide-react": "^1.23.0",
35
34
  "react": "19.2.7",
36
35
  "react-dom": "19.2.7"