dishui 0.0.72 → 0.0.73

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.
Files changed (93) hide show
  1. package/dist/components/Button/index.d.ts +4 -4
  2. package/dist/components/Button/index.js +18 -17
  3. package/dist/components/Button/index.js.map +1 -1
  4. package/dist/components/Card/Metric.d.ts +17 -0
  5. package/dist/components/Card/Metric2.js +50 -0
  6. package/dist/components/Card/Metric2.js.map +1 -0
  7. package/dist/components/Card/index.d.ts +3 -0
  8. package/dist/components/Card/index.js +118 -117
  9. package/dist/components/Card/index.js.map +1 -1
  10. package/dist/components/Group/index.d.ts +2 -0
  11. package/dist/components/GroupButton/index.d.ts +16 -0
  12. package/dist/components/GroupButton/index.js +41 -0
  13. package/dist/components/GroupButton/index.js.map +1 -0
  14. package/dist/components/GroupedTable/index.d.ts +38 -0
  15. package/dist/components/GroupedTable/index.js +92 -0
  16. package/dist/components/GroupedTable/index.js.map +1 -0
  17. package/dist/components/Layout/index.d.ts +4 -2
  18. package/dist/components/Layout/index.js +1 -1
  19. package/dist/components/Layout/index.js.map +1 -1
  20. package/dist/components/NavigationList/index.d.ts +17 -0
  21. package/dist/components/NavigationList/index.js +48 -0
  22. package/dist/components/NavigationList/index.js.map +1 -0
  23. package/dist/components/Section/index.d.ts +28 -0
  24. package/dist/components/Section/index.js +58 -0
  25. package/dist/components/Section/index.js.map +1 -0
  26. package/dist/components/Select/index.d.ts +2 -0
  27. package/dist/components/Select/index.js +83 -82
  28. package/dist/components/Select/index.js.map +1 -1
  29. package/dist/components/SidebarToggleButton/index.d.ts +16 -1
  30. package/dist/components/SidebarToggleButton/index.js +90 -30
  31. package/dist/components/SidebarToggleButton/index.js.map +1 -1
  32. package/dist/components/Skeleton/index.d.ts +7 -0
  33. package/dist/components/Skeleton/index.js +21 -0
  34. package/dist/components/Skeleton/index.js.map +1 -0
  35. package/dist/components/Tree/Tree.js +5 -2
  36. package/dist/components/Tree/Tree.js.map +1 -1
  37. package/dist/components/pro/RichTextEditor/AIRewrite.js +114 -72
  38. package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
  39. package/dist/components/pro/RichTextEditor/BlockHandle.js +315 -196
  40. package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
  41. package/dist/components/pro/RichTextEditor/BubbleToolbar.d.ts +1 -1
  42. package/dist/components/pro/RichTextEditor/BubbleToolbar.js +69 -33
  43. package/dist/components/pro/RichTextEditor/BubbleToolbar.js.map +1 -1
  44. package/dist/components/pro/RichTextEditor/CommentPanel.d.ts +2 -1
  45. package/dist/components/pro/RichTextEditor/CommentPanel.js +100 -81
  46. package/dist/components/pro/RichTextEditor/CommentPanel.js.map +1 -1
  47. package/dist/components/pro/RichTextEditor/CommentPopover.d.ts +2 -1
  48. package/dist/components/pro/RichTextEditor/CommentPopover.js +92 -68
  49. package/dist/components/pro/RichTextEditor/CommentPopover.js.map +1 -1
  50. package/dist/components/pro/RichTextEditor/RichTextEditor.js +24 -22
  51. package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
  52. package/dist/components/pro/RichTextEditor/SearchReplace.d.ts +7 -0
  53. package/dist/components/pro/RichTextEditor/SlashMenu.js +136 -73
  54. package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
  55. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.d.ts +1 -1
  56. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js +346 -313
  57. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
  58. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js +114 -146
  59. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js.map +1 -1
  60. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js +2 -2
  61. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js.map +1 -1
  62. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js +178 -163
  63. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js.map +1 -1
  64. package/dist/components/pro/RichTextEditor/extensions/FontSize.js +8 -5
  65. package/dist/components/pro/RichTextEditor/extensions/FontSize.js.map +1 -1
  66. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.d.ts +6 -0
  67. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js +85 -74
  68. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js.map +1 -1
  69. package/dist/components/pro/RichTextEditor/searchUtils.d.ts +23 -0
  70. package/dist/contexts/AppContext.js +47 -45
  71. package/dist/contexts/AppContext.js.map +1 -1
  72. package/dist/dishui.css +1 -1
  73. package/dist/index-nostyled.d.ts +11 -1
  74. package/dist/index.d.ts +11 -1
  75. package/dist/index.js +119 -114
  76. package/dist/layouts/MainLayout.js +9 -10
  77. package/dist/layouts/MainLayout.js.map +1 -1
  78. package/dist/layouts/Sidebar.d.ts +9 -0
  79. package/dist/layouts/Sidebar.js +99 -80
  80. package/dist/layouts/Sidebar.js.map +1 -1
  81. package/dist/layouts/headbar/Headbar.d.ts +1 -1
  82. package/dist/layouts/headbar/Headbar.js +2 -2
  83. package/dist/layouts/headbar/Headbar.js.map +1 -1
  84. package/dist/lite.d.ts +19 -1
  85. package/dist/lite.js +17 -8
  86. package/dist/styles/themeStyles.js +6 -6
  87. package/dist/styles/themeStyles.js.map +1 -1
  88. package/dist/utils/i18n.d.ts +3 -0
  89. package/dist/utils/i18n.js +78 -0
  90. package/dist/utils/i18n.js.map +1 -1
  91. package/dist/utils/menu.js +23 -6
  92. package/dist/utils/menu.js.map +1 -1
  93. package/package.json +8 -2
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.js","names":[],"sources":["../../../../../src/components/pro/RichTextEditor/Toolbar/Toolbar.tsx"],"sourcesContent":["import React, { useCallback, useState, useEffect } from 'react';\nimport type { Editor } from '@tiptap/react';\nimport type { ToolbarSection, RichTextEditorLabels } from '../types';\nimport { defaultLabels } from '../types';\nimport { getNextFloatZIndex } from '../extensions/FloatingDialog';\nimport { ToolbarButton, ToolbarDivider } from './ToolbarButton';\nimport { ColorPicker } from './ColorPicker';\nimport { SelectDropdown, FONT_FAMILIES, FONT_SIZES } from './SelectDropdown';\nimport { MarkdownTemplateMenu } from './MarkdownTemplates';\nimport { FloatingDialogMenu } from './FloatingDialogMenu';\nimport { TableOpsMenu } from './TableOpsMenu';\n\ninterface ToolbarProps {\n editor: Editor;\n config?: ToolbarSection;\n labels?: RichTextEditorLabels;\n hasAI?: boolean;\n onAIClick?: () => void;\n onFormatPainterChange?: (active: boolean) => void;\n children?: React.ReactNode;\n}\n\nconst Toolbar: React.FC<ToolbarProps> = ({\n editor,\n config,\n labels: propsLabels,\n hasAI,\n onAIClick,\n onFormatPainterChange,\n children,\n}) => {\n const labels = { ...defaultLabels, ...propsLabels };\n const [formatPainterMarks, setFormatPainterMarks] = useState<Record<string, unknown>[] | null>(null);\n\n const cfg: Required<ToolbarSection> = {\n textFormat: config?.textFormat ?? true,\n heading: config?.heading ?? true,\n alignment: config?.alignment ?? true,\n list: config?.list ?? true,\n insert: config?.insert ?? true,\n color: config?.color ?? true,\n history: config?.history ?? true,\n ai: config?.ai ?? true,\n tableOps: config?.tableOps ?? true,\n fontStyle: config?.fontStyle ?? true,\n formatPainter: config?.formatPainter ?? true,\n };\n\n const setLink = useCallback(() => {\n const previousUrl = editor.getAttributes('link').href;\n const url = window.prompt(labels.insertLinkUrl, previousUrl);\n if (url === null) return;\n if (url === '') {\n editor.chain().focus().extendMarkRange('link').unsetLink().run();\n return;\n }\n editor.chain().focus().extendMarkRange('link').setLink({ href: url }).run();\n }, [editor, labels.insertLinkUrl]);\n\n const addImage = useCallback(() => {\n const url = window.prompt(labels.insertImageUrl);\n if (url) {\n editor.chain().focus().setImage({ src: url }).run();\n }\n }, [editor, labels.insertImageUrl]);\n\n const insertTable = useCallback(() => {\n editor.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run();\n }, [editor]);\n\n const insertMarkdownBlock = useCallback(() => {\n editor.chain().focus().insertContent({\n type: 'codeBlock',\n attrs: { language: 'r-markdown' },\n content: [{ type: 'text', text: '# Markdown\\n\\nWrite your **markdown** here.' }],\n }).run();\n }, [editor]);\n\n const insertMarkdownTemplate = useCallback((content: string) => {\n editor.chain().focus().insertContent({\n type: 'codeBlock',\n attrs: { language: 'r-markdown' },\n content: [{ type: 'text', text: content }],\n }).run();\n }, [editor]);\n\n const insertFloatingDialog = useCallback((layout: 'block' | 'wrap-left' | 'wrap-right' | 'float' = 'block') => {\n const extraAttrs = layout === 'float'\n ? { x: 40, y: 40, zIndex: getNextFloatZIndex(editor) }\n : layout === 'block'\n ? {}\n : { width: 240 };\n editor.chain().focus().insertContent({\n type: 'floatingDialog',\n attrs: { title: 'Note', layout, ...extraAttrs },\n content: [{ type: 'paragraph' }],\n }).run();\n }, [editor]);\n\n const handleFormatPainter = useCallback(() => {\n if (formatPainterMarks) {\n setFormatPainterMarks(null);\n onFormatPainterChange?.(false);\n return;\n }\n const { from, to } = editor.state.selection;\n if (from === to) return;\n\n const marks: Record<string, unknown>[] = [];\n editor.state.doc.nodesBetween(from, to, (node) => {\n if (node.marks) {\n node.marks.forEach((mark) => {\n marks.push({ type: mark.type.name, attrs: mark.attrs });\n });\n }\n });\n setFormatPainterMarks(marks);\n onFormatPainterChange?.(true);\n }, [editor, formatPainterMarks, onFormatPainterChange]);\n\n useEffect(() => {\n if (!formatPainterMarks) return;\n\n const editorEl = editor.view.dom;\n\n const applyMarks = () => {\n const { from, to } = editor.state.selection;\n if (from === to || !formatPainterMarks) return;\n\n const { tr } = editor.state;\n tr.removeMark(from, to);\n for (const mark of formatPainterMarks) {\n const markType = editor.schema.marks[mark.type as string];\n if (markType) {\n tr.addMark(from, to, markType.create(mark.attrs as Record<string, unknown>));\n }\n }\n editor.view.dispatch(tr);\n\n setFormatPainterMarks(null);\n onFormatPainterChange?.(false);\n };\n\n const onMouseUp = () => {\n requestAnimationFrame(applyMarks);\n };\n\n editorEl.addEventListener('mouseup', onMouseUp);\n return () => { editorEl.removeEventListener('mouseup', onMouseUp); };\n }, [editor, formatPainterMarks, onFormatPainterChange]);\n\n const currentFontFamily = editor.getAttributes('textStyle').fontFamily || '';\n const currentFontSize = editor.getAttributes('textStyle').fontSize || '';\n\n return (\n <div className=\"rte-toolbar\">\n {cfg.history && (\n <>\n <ToolbarButton\n onClick={() => editor.chain().focus().undo().run()}\n disabled={!editor.can().undo()}\n title={labels.undo}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"1 4 1 10 7 10\" />\n <path d=\"M3.51 15a9 9 0 102.13-9.36L1 10\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().redo().run()}\n disabled={!editor.can().redo()}\n title={labels.redo}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"23 4 23 10 17 10\" />\n <path d=\"M20.49 15a9 9 0 11-2.13-9.36L23 10\" />\n </svg>\n </ToolbarButton>\n <ToolbarDivider />\n </>\n )}\n\n {cfg.fontStyle && (\n <>\n <SelectDropdown\n value={currentFontFamily}\n options={FONT_FAMILIES}\n onChange={(val) => {\n if (val) {\n editor.chain().focus().setFontFamily(val).run();\n } else {\n editor.chain().focus().unsetFontFamily().run();\n }\n }}\n title={labels.fontFamily}\n width={120}\n />\n <SelectDropdown\n value={currentFontSize}\n options={FONT_SIZES}\n onChange={(val) => {\n if (val) {\n (editor.chain().focus() as any).setFontSize(val).run();\n } else {\n (editor.chain().focus() as any).unsetFontSize().run();\n }\n }}\n title={labels.fontSize}\n width={80}\n />\n <ToolbarDivider />\n </>\n )}\n\n {cfg.textFormat && (\n <>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleBold().run()}\n isActive={editor.isActive('bold')}\n title={labels.bold}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M6 4h8a4 4 0 014 4 4 4 0 01-4 4H6z\" />\n <path d=\"M6 12h9a4 4 0 014 4 4 4 0 01-4 4H6z\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleItalic().run()}\n isActive={editor.isActive('italic')}\n title={labels.italic}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"19\" y1=\"4\" x2=\"10\" y2=\"4\" />\n <line x1=\"14\" y1=\"20\" x2=\"5\" y2=\"20\" />\n <line x1=\"15\" y1=\"4\" x2=\"9\" y2=\"20\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleUnderline().run()}\n isActive={editor.isActive('underline')}\n title={labels.underline}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M6 3v7a6 6 0 006 6 6 6 0 006-6V3\" />\n <line x1=\"4\" y1=\"21\" x2=\"20\" y2=\"21\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleStrike().run()}\n isActive={editor.isActive('strike')}\n title={labels.strikethrough}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M17.3 4.9c-2.3-.6-4.4-1-6.2-.9-2.7 0-5.3.7-5.3 3.6 0 1.5 1.8 3.3 7.2 3.3\" />\n <path d=\"M13 15.1c0 2.8-2.6 3.6-5.3 3.6-1.8-.1-3.9-.5-6.2-.9\" />\n <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleSubscript().run()}\n isActive={editor.isActive('subscript')}\n title={labels.subscript}\n >\n <span style={{ fontSize: '13px', fontWeight: 600 }}>X<sub style={{ fontSize: '9px' }}>2</sub></span>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleSuperscript().run()}\n isActive={editor.isActive('superscript')}\n title={labels.superscript}\n >\n <span style={{ fontSize: '13px', fontWeight: 600 }}>X<sup style={{ fontSize: '9px' }}>2</sup></span>\n </ToolbarButton>\n {cfg.formatPainter && (\n <ToolbarButton\n onClick={handleFormatPainter}\n isActive={!!formatPainterMarks}\n title={formatPainterMarks ? labels.formatPainterActive : labels.formatPainter}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M19 3H5a2 2 0 00-2 2v2a2 2 0 002 2h14a2 2 0 002-2V5a2 2 0 00-2-2z\" />\n <path d=\"M10 7v4a2 2 0 01-2 2H7\" />\n <path d=\"M7 13l-3 8\" />\n <path d=\"M4 21h6\" />\n </svg>\n </ToolbarButton>\n )}\n <ToolbarDivider />\n </>\n )}\n\n {cfg.heading && (\n <>\n {([1, 2, 3, 4, 5, 6] as const).map((level) => (\n <ToolbarButton\n key={level}\n onClick={() => editor.chain().focus().toggleHeading({ level }).run()}\n isActive={editor.isActive('heading', { level })}\n title={`${labels.heading} ${level}`}\n >\n <span style={{ fontSize: '12px', fontWeight: 700 }}>H{level}</span>\n </ToolbarButton>\n ))}\n <ToolbarDivider />\n </>\n )}\n\n {cfg.alignment && (\n <>\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign('left').run()}\n isActive={editor.isActive({ textAlign: 'left' })}\n title={labels.alignLeft}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"17\" y1=\"10\" x2=\"3\" y2=\"10\" /><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\" />\n <line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\" /><line x1=\"17\" y1=\"18\" x2=\"3\" y2=\"18\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign('center').run()}\n isActive={editor.isActive({ textAlign: 'center' })}\n title={labels.alignCenter}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"18\" y1=\"10\" x2=\"6\" y2=\"10\" /><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\" />\n <line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\" /><line x1=\"18\" y1=\"18\" x2=\"6\" y2=\"18\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign('right').run()}\n isActive={editor.isActive({ textAlign: 'right' })}\n title={labels.alignRight}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"21\" y1=\"10\" x2=\"7\" y2=\"10\" /><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\" />\n <line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\" /><line x1=\"21\" y1=\"18\" x2=\"7\" y2=\"18\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign('justify').run()}\n isActive={editor.isActive({ textAlign: 'justify' })}\n title={labels.alignJustify}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"21\" y1=\"10\" x2=\"3\" y2=\"10\" /><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\" />\n <line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\" /><line x1=\"21\" y1=\"18\" x2=\"3\" y2=\"18\" />\n </svg>\n </ToolbarButton>\n <ToolbarDivider />\n </>\n )}\n\n {cfg.list && (\n <>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n isActive={editor.isActive('bulletList')}\n title={labels.bulletList}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\" /><line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\" />\n <circle cx=\"4\" cy=\"6\" r=\"1\" fill=\"currentColor\" /><circle cx=\"4\" cy=\"12\" r=\"1\" fill=\"currentColor\" />\n <circle cx=\"4\" cy=\"18\" r=\"1\" fill=\"currentColor\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n isActive={editor.isActive('orderedList')}\n title={labels.orderedList}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"10\" y1=\"6\" x2=\"21\" y2=\"6\" /><line x1=\"10\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"10\" y1=\"18\" x2=\"21\" y2=\"18\" />\n <text x=\"2\" y=\"8\" fontSize=\"8\" fill=\"currentColor\" stroke=\"none\" fontWeight=\"bold\">1</text>\n <text x=\"2\" y=\"14\" fontSize=\"8\" fill=\"currentColor\" stroke=\"none\" fontWeight=\"bold\">2</text>\n <text x=\"2\" y=\"20\" fontSize=\"8\" fill=\"currentColor\" stroke=\"none\" fontWeight=\"bold\">3</text>\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleTaskList().run()}\n isActive={editor.isActive('taskList')}\n title={labels.taskList}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"3\" y=\"5\" width=\"6\" height=\"6\" rx=\"1\" /><path d=\"M5 8l1.5 1.5L9 6.5\" />\n <line x1=\"12\" y1=\"8\" x2=\"21\" y2=\"8\" />\n <rect x=\"3\" y=\"14\" width=\"6\" height=\"6\" rx=\"1\" />\n <line x1=\"12\" y1=\"17\" x2=\"21\" y2=\"17\" />\n </svg>\n </ToolbarButton>\n <ToolbarDivider />\n </>\n )}\n\n {cfg.insert && (\n <>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleBlockquote().run()}\n isActive={editor.isActive('blockquote')}\n title={labels.blockquote}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M3 21c3 0 7-1 7-8V5c0-1.25-.756-2.017-2-2H4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1 0 1 1v1c0 1-1 2-2 2s-1 .008-1 1.031V21z\" />\n <path d=\"M15 21c3 0 7-1 7-8V5c0-1.25-.757-2.017-2-2h-4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2h.75c0 2.25.25 4-2.75 4v3z\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleNode('codeBlock', 'paragraph').run()}\n isActive={editor.isActive('codeBlock')}\n title={labels.codeBlock}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"16 18 22 12 16 6\" /><polyline points=\"8 6 2 12 8 18\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => {\n editor.chain().focus().insertContent({\n type: 'codeBlock',\n attrs: { language: 'r-mermaid' },\n content: [{ type: 'text', text: 'graph TD\\n A[Start] --> B[End]' }],\n }).run();\n }}\n title={labels.mermaidBlock}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"6\" cy=\"6\" r=\"3\" /><circle cx=\"18\" cy=\"6\" r=\"3\" />\n <circle cx=\"12\" cy=\"18\" r=\"3\" />\n <line x1=\"6\" y1=\"9\" x2=\"12\" y2=\"15\" /><line x1=\"18\" y1=\"9\" x2=\"12\" y2=\"15\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton onClick={setLink} isActive={editor.isActive('link')} title={labels.link}>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton onClick={addImage} title={labels.image}>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\" /><polyline points=\"21 15 16 10 5 21\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton onClick={insertTable} title={labels.table}>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <line x1=\"3\" y1=\"9\" x2=\"21\" y2=\"9\" /><line x1=\"3\" y1=\"15\" x2=\"21\" y2=\"15\" />\n <line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"21\" /><line x1=\"15\" y1=\"3\" x2=\"15\" y2=\"21\" />\n </svg>\n </ToolbarButton>\n {cfg.tableOps && <TableOpsMenu editor={editor} labels={labels} />}\n <ToolbarButton\n onClick={() => editor.chain().focus().setHorizontalRule().run()}\n title={labels.horizontalRule}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton onClick={insertMarkdownBlock} title={labels.markdownBlock}>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M2 3h20v18H2z\" />\n <path d=\"M5 15V9l3 3.5L11 9v6\" />\n <path d=\"M17 9l-2.5 3H17v3\" />\n </svg>\n </ToolbarButton>\n <MarkdownTemplateMenu labels={labels} onSelect={insertMarkdownTemplate} />\n <FloatingDialogMenu labels={labels} onInsert={insertFloatingDialog} />\n <ToolbarDivider />\n </>\n )}\n\n {cfg.color && (\n <>\n <ColorPicker\n value={editor.getAttributes('textStyle').color || ''}\n onChange={(color) => {\n if (color) {\n editor.chain().focus().setColor(color).run();\n } else {\n editor.chain().focus().unsetColor().run();\n }\n }}\n title={labels.color}\n icon={\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 2L2 22h20L12 2z\" />\n </svg>\n }\n />\n <ColorPicker\n value={editor.getAttributes('highlight').color || ''}\n onChange={(color) => {\n if (color) {\n editor.chain().focus().toggleHighlight({ color }).run();\n } else {\n editor.chain().focus().unsetHighlight().run();\n }\n }}\n title={labels.highlight}\n icon={\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 20h9\" /><path d=\"M16.5 3.5a2.121 2.121 0 013 3L7 19l-4 1 1-4L16.5 3.5z\" />\n </svg>\n }\n />\n <ToolbarDivider />\n </>\n )}\n\n {cfg.ai && hasAI && onAIClick && (\n <ToolbarButton onClick={onAIClick} title={labels.ai}>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M9.5 2A2.5 2.5 0 0112 4.5v15a2.5 2.5 0 01-4.96.44 2.5 2.5 0 01-2.96-3.08 3 3 0 01-.34-5.58 2.5 2.5 0 011.32-4.24 2.5 2.5 0 011.98-3A2.5 2.5 0 019.5 2z\" />\n <path d=\"M14.5 2A2.5 2.5 0 0012 4.5v15a2.5 2.5 0 004.96.44 2.5 2.5 0 002.96-3.08 3 3 0 00.34-5.58 2.5 2.5 0 00-1.32-4.24 2.5 2.5 0 00-1.98-3A2.5 2.5 0 0014.5 2z\" />\n </svg>\n </ToolbarButton>\n )}\n\n {children}\n </div>\n );\n};\n\nexport default Toolbar;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Toolbar.js","names":[],"sources":["../../../../../src/components/pro/RichTextEditor/Toolbar/Toolbar.tsx"],"sourcesContent":["import React, { useCallback, useState, useEffect, useRef } from 'react';\nimport { useEditorState, type Editor } from '@tiptap/react';\nimport type { Mark } from '@tiptap/pm/model';\nimport type { ToolbarSection, RichTextEditorLabels } from '../types';\nimport { defaultLabels } from '../types';\nimport { getNextFloatZIndex } from '../extensions/FloatingDialog';\nimport { ToolbarButton, ToolbarDivider } from './ToolbarButton';\nimport { ColorPicker } from './ColorPicker';\nimport { SelectDropdown, FONT_FAMILIES, FONT_SIZES } from './SelectDropdown';\nimport { MarkdownTemplateMenu } from './MarkdownTemplates';\nimport { FloatingDialogMenu } from './FloatingDialogMenu';\nimport { TableOpsMenu } from './TableOpsMenu';\n\n// Only visual formatting belongs to the painter, never links or comment IDs.\nconst PAINT_MARKS = new Set(['bold', 'italic', 'underline', 'strike', 'code', 'subscript', 'superscript', 'textStyle', 'highlight']);\n\ninterface ToolbarProps {\n editor: Editor;\n config?: ToolbarSection;\n labels?: RichTextEditorLabels;\n hasAI?: boolean;\n onAIClick?: () => void;\n onFormatPainterChange?: (active: boolean) => void;\n children?: React.ReactNode;\n}\n\nconst Toolbar: React.FC<ToolbarProps> = ({\n editor,\n config,\n labels: propsLabels,\n hasAI,\n onAIClick,\n onFormatPainterChange,\n children,\n}) => {\n const labels = { ...defaultLabels, ...propsLabels };\n useEditorState({ editor, selector: ({ transactionNumber }) => transactionNumber });\n const [formatPainterMarks, setFormatPainterMarks] = useState<readonly Mark[] | null>(null);\n const painterChange = useRef(onFormatPainterChange);\n useEffect(() => {\n painterChange.current = onFormatPainterChange;\n }, [onFormatPainterChange]);\n\n const cfg: Required<ToolbarSection> = {\n textFormat: config?.textFormat ?? true,\n heading: config?.heading ?? true,\n alignment: config?.alignment ?? true,\n list: config?.list ?? true,\n insert: config?.insert ?? true,\n color: config?.color ?? true,\n history: config?.history ?? true,\n ai: config?.ai ?? true,\n tableOps: config?.tableOps ?? true,\n fontStyle: config?.fontStyle ?? true,\n formatPainter: config?.formatPainter ?? true,\n };\n\n const setLink = useCallback(() => {\n const previousUrl = editor.getAttributes('link').href;\n const url = window.prompt(labels.insertLinkUrl, previousUrl);\n if (url === null) return;\n if (editor.isDestroyed || !editor.isEditable) return;\n if (url.trim() === '') {\n editor.chain().focus().extendMarkRange('link').unsetLink().run();\n return;\n }\n editor.chain().focus().extendMarkRange('link').setLink({ href: url.trim() }).run();\n }, [editor, labels.insertLinkUrl]);\n\n const addImage = useCallback(() => {\n const url = window.prompt(labels.insertImageUrl);\n if (url) {\n editor.chain().focus().setImage({ src: url }).run();\n }\n }, [editor, labels.insertImageUrl]);\n\n const insertTable = useCallback(() => {\n editor.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run();\n }, [editor]);\n\n const insertMarkdownBlock = useCallback(() => {\n editor.chain().focus().insertContent({\n type: 'codeBlock',\n attrs: { language: 'r-markdown' },\n content: [{ type: 'text', text: '# Markdown\\n\\nWrite your **markdown** here.' }],\n }).run();\n }, [editor]);\n\n const insertMarkdownTemplate = useCallback((content: string) => {\n editor.chain().focus().insertContent({\n type: 'codeBlock',\n attrs: { language: 'r-markdown' },\n content: [{ type: 'text', text: content }],\n }).run();\n }, [editor]);\n\n const insertFloatingDialog = useCallback((layout: 'block' | 'wrap-left' | 'wrap-right' | 'float' = 'block') => {\n const extraAttrs = layout === 'float'\n ? { x: 40, y: 40, zIndex: getNextFloatZIndex(editor) }\n : layout === 'block'\n ? {}\n : { width: 240 };\n editor.chain().focus().insertContent({\n type: 'floatingDialog',\n attrs: { title: 'Note', layout, ...extraAttrs },\n content: [{ type: 'paragraph' }],\n }).run();\n }, [editor]);\n\n const handleFormatPainter = useCallback(() => {\n if (formatPainterMarks) {\n setFormatPainterMarks(null);\n return;\n }\n if (editor.isDestroyed || !editor.isEditable) return;\n const { from, to } = editor.state.selection;\n if (from === to) return;\n\n let marks: readonly Mark[] | undefined;\n editor.state.doc.nodesBetween(from, to, (node) => {\n if (!node.isText) return;\n const formatting = node.marks.filter((mark) => PAINT_MARKS.has(mark.type.name));\n marks = marks === undefined ? formatting : marks.filter((mark) => formatting.some((other) => mark.eq(other)));\n });\n if (marks === undefined) return;\n setFormatPainterMarks(marks);\n }, [editor, formatPainterMarks]);\n\n useEffect(() => {\n if (!formatPainterMarks) return;\n if (editor.isDestroyed || !editor.isEditable || !cfg.formatPainter || !cfg.textFormat) {\n setFormatPainterMarks(null);\n return;\n }\n\n painterChange.current?.(true);\n const editorEl = editor.view.dom;\n let frame: number | null = null;\n let cancelled = false;\n const cancel = () => {\n cancelled = true;\n if (frame !== null) cancelAnimationFrame(frame);\n frame = null;\n setFormatPainterMarks(null);\n };\n const onTransaction = () => {\n if (!editor.isEditable) cancel();\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') cancel();\n };\n\n const applyMarks = () => {\n frame = null;\n if (cancelled || editor.isDestroyed || !editor.isEditable) return;\n const { from, to } = editor.state.selection;\n if (from === to) return;\n\n const { tr } = editor.state;\n for (const name of PAINT_MARKS) {\n const type = editor.schema.marks[name];\n if (type) tr.removeMark(from, to, type);\n }\n editor.state.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isText) return;\n const semantic = node.marks.filter((mark) => !PAINT_MARKS.has(mark.type.name));\n for (const mark of formatPainterMarks) {\n // Code and custom exclusions must not implicitly remove semantic marks.\n if (semantic.some((other) => mark.type.excludes(other.type) || other.type.excludes(mark.type))) continue;\n tr.addMark(Math.max(from, pos), Math.min(to, pos + node.nodeSize), mark);\n }\n });\n cancelled = true;\n editor.view.dispatch(tr);\n setFormatPainterMarks(null);\n };\n\n const onMouseUp = () => {\n if (cancelled) return;\n if (frame !== null) cancelAnimationFrame(frame);\n frame = requestAnimationFrame(applyMarks);\n };\n\n editorEl.addEventListener('mouseup', onMouseUp);\n editorEl.ownerDocument.addEventListener('keydown', onKeyDown);\n editor.on('transaction', onTransaction);\n editor.on('destroy', cancel);\n return () => {\n cancelled = true;\n if (frame !== null) cancelAnimationFrame(frame);\n editorEl.removeEventListener('mouseup', onMouseUp);\n editorEl.ownerDocument.removeEventListener('keydown', onKeyDown);\n editor.off('transaction', onTransaction);\n editor.off('destroy', cancel);\n painterChange.current?.(false);\n };\n }, [editor, formatPainterMarks, cfg.formatPainter, cfg.textFormat]);\n\n const currentFontFamily = editor.getAttributes('textStyle').fontFamily || '';\n const currentFontSize = editor.getAttributes('textStyle').fontSize || '';\n\n return (\n <div className=\"rte-toolbar\" role=\"group\" aria-label=\"Text formatting\">\n {cfg.history && (\n <>\n <ToolbarButton\n onClick={() => editor.chain().focus().undo().run()}\n disabled={!editor.can().undo()}\n title={labels.undo}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"1 4 1 10 7 10\" />\n <path d=\"M3.51 15a9 9 0 102.13-9.36L1 10\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().redo().run()}\n disabled={!editor.can().redo()}\n title={labels.redo}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"23 4 23 10 17 10\" />\n <path d=\"M20.49 15a9 9 0 11-2.13-9.36L23 10\" />\n </svg>\n </ToolbarButton>\n <ToolbarDivider />\n </>\n )}\n\n {cfg.fontStyle && (\n <>\n <SelectDropdown\n value={currentFontFamily}\n options={FONT_FAMILIES}\n onChange={(val) => {\n if (val) {\n editor.chain().focus().setFontFamily(val).run();\n } else {\n editor.chain().focus().unsetFontFamily().run();\n }\n }}\n title={labels.fontFamily}\n width={120}\n />\n <SelectDropdown\n value={currentFontSize}\n options={FONT_SIZES}\n onChange={(val) => {\n if (val) {\n (editor.chain().focus() as any).setFontSize(val).run();\n } else {\n (editor.chain().focus() as any).unsetFontSize().run();\n }\n }}\n title={labels.fontSize}\n width={80}\n />\n <ToolbarDivider />\n </>\n )}\n\n {cfg.textFormat && (\n <>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleBold().run()}\n isActive={editor.isActive('bold')}\n title={labels.bold}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M6 4h8a4 4 0 014 4 4 4 0 01-4 4H6z\" />\n <path d=\"M6 12h9a4 4 0 014 4 4 4 0 01-4 4H6z\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleItalic().run()}\n isActive={editor.isActive('italic')}\n title={labels.italic}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"19\" y1=\"4\" x2=\"10\" y2=\"4\" />\n <line x1=\"14\" y1=\"20\" x2=\"5\" y2=\"20\" />\n <line x1=\"15\" y1=\"4\" x2=\"9\" y2=\"20\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleUnderline().run()}\n isActive={editor.isActive('underline')}\n title={labels.underline}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M6 3v7a6 6 0 006 6 6 6 0 006-6V3\" />\n <line x1=\"4\" y1=\"21\" x2=\"20\" y2=\"21\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleStrike().run()}\n isActive={editor.isActive('strike')}\n title={labels.strikethrough}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M17.3 4.9c-2.3-.6-4.4-1-6.2-.9-2.7 0-5.3.7-5.3 3.6 0 1.5 1.8 3.3 7.2 3.3\" />\n <path d=\"M13 15.1c0 2.8-2.6 3.6-5.3 3.6-1.8-.1-3.9-.5-6.2-.9\" />\n <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleSubscript().run()}\n isActive={editor.isActive('subscript')}\n title={labels.subscript}\n >\n <span style={{ fontSize: '13px', fontWeight: 600 }}>X<sub style={{ fontSize: '9px' }}>2</sub></span>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleSuperscript().run()}\n isActive={editor.isActive('superscript')}\n title={labels.superscript}\n >\n <span style={{ fontSize: '13px', fontWeight: 600 }}>X<sup style={{ fontSize: '9px' }}>2</sup></span>\n </ToolbarButton>\n {cfg.formatPainter && (\n <ToolbarButton\n onClick={handleFormatPainter}\n disabled={!editor.isEditable || (!formatPainterMarks && editor.state.selection.empty)}\n isActive={!!formatPainterMarks}\n title={formatPainterMarks ? labels.formatPainterActive : labels.formatPainter}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M19 3H5a2 2 0 00-2 2v2a2 2 0 002 2h14a2 2 0 002-2V5a2 2 0 00-2-2z\" />\n <path d=\"M10 7v4a2 2 0 01-2 2H7\" />\n <path d=\"M7 13l-3 8\" />\n <path d=\"M4 21h6\" />\n </svg>\n </ToolbarButton>\n )}\n <ToolbarDivider />\n </>\n )}\n\n {cfg.heading && (\n <>\n {([1, 2, 3, 4, 5, 6] as const).map((level) => (\n <ToolbarButton\n key={level}\n onClick={() => editor.chain().focus().toggleHeading({ level }).run()}\n isActive={editor.isActive('heading', { level })}\n title={`${labels.heading} ${level}`}\n >\n <span style={{ fontSize: '12px', fontWeight: 700 }}>H{level}</span>\n </ToolbarButton>\n ))}\n <ToolbarDivider />\n </>\n )}\n\n {cfg.alignment && (\n <>\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign('left').run()}\n isActive={editor.isActive({ textAlign: 'left' })}\n title={labels.alignLeft}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"17\" y1=\"10\" x2=\"3\" y2=\"10\" /><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\" />\n <line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\" /><line x1=\"17\" y1=\"18\" x2=\"3\" y2=\"18\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign('center').run()}\n isActive={editor.isActive({ textAlign: 'center' })}\n title={labels.alignCenter}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"18\" y1=\"10\" x2=\"6\" y2=\"10\" /><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\" />\n <line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\" /><line x1=\"18\" y1=\"18\" x2=\"6\" y2=\"18\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign('right').run()}\n isActive={editor.isActive({ textAlign: 'right' })}\n title={labels.alignRight}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"21\" y1=\"10\" x2=\"7\" y2=\"10\" /><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\" />\n <line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\" /><line x1=\"21\" y1=\"18\" x2=\"7\" y2=\"18\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().setTextAlign('justify').run()}\n isActive={editor.isActive({ textAlign: 'justify' })}\n title={labels.alignJustify}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"21\" y1=\"10\" x2=\"3\" y2=\"10\" /><line x1=\"21\" y1=\"6\" x2=\"3\" y2=\"6\" />\n <line x1=\"21\" y1=\"14\" x2=\"3\" y2=\"14\" /><line x1=\"21\" y1=\"18\" x2=\"3\" y2=\"18\" />\n </svg>\n </ToolbarButton>\n <ToolbarDivider />\n </>\n )}\n\n {cfg.list && (\n <>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleBulletList().run()}\n isActive={editor.isActive('bulletList')}\n title={labels.bulletList}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\" /><line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\" />\n <circle cx=\"4\" cy=\"6\" r=\"1\" fill=\"currentColor\" /><circle cx=\"4\" cy=\"12\" r=\"1\" fill=\"currentColor\" />\n <circle cx=\"4\" cy=\"18\" r=\"1\" fill=\"currentColor\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\n isActive={editor.isActive('orderedList')}\n title={labels.orderedList}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"10\" y1=\"6\" x2=\"21\" y2=\"6\" /><line x1=\"10\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"10\" y1=\"18\" x2=\"21\" y2=\"18\" />\n <text x=\"2\" y=\"8\" fontSize=\"8\" fill=\"currentColor\" stroke=\"none\" fontWeight=\"bold\">1</text>\n <text x=\"2\" y=\"14\" fontSize=\"8\" fill=\"currentColor\" stroke=\"none\" fontWeight=\"bold\">2</text>\n <text x=\"2\" y=\"20\" fontSize=\"8\" fill=\"currentColor\" stroke=\"none\" fontWeight=\"bold\">3</text>\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleTaskList().run()}\n isActive={editor.isActive('taskList')}\n title={labels.taskList}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"3\" y=\"5\" width=\"6\" height=\"6\" rx=\"1\" /><path d=\"M5 8l1.5 1.5L9 6.5\" />\n <line x1=\"12\" y1=\"8\" x2=\"21\" y2=\"8\" />\n <rect x=\"3\" y=\"14\" width=\"6\" height=\"6\" rx=\"1\" />\n <line x1=\"12\" y1=\"17\" x2=\"21\" y2=\"17\" />\n </svg>\n </ToolbarButton>\n <ToolbarDivider />\n </>\n )}\n\n {cfg.insert && (\n <>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleBlockquote().run()}\n isActive={editor.isActive('blockquote')}\n title={labels.blockquote}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M3 21c3 0 7-1 7-8V5c0-1.25-.756-2.017-2-2H4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1 0 1 1v1c0 1-1 2-2 2s-1 .008-1 1.031V21z\" />\n <path d=\"M15 21c3 0 7-1 7-8V5c0-1.25-.757-2.017-2-2h-4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2h.75c0 2.25.25 4-2.75 4v3z\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => editor.chain().focus().toggleNode('codeBlock', 'paragraph').run()}\n isActive={editor.isActive('codeBlock')}\n title={labels.codeBlock}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"16 18 22 12 16 6\" /><polyline points=\"8 6 2 12 8 18\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton\n onClick={() => {\n editor.chain().focus().insertContent({\n type: 'codeBlock',\n attrs: { language: 'r-mermaid' },\n content: [{ type: 'text', text: 'graph TD\\n A[Start] --> B[End]' }],\n }).run();\n }}\n title={labels.mermaidBlock}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"6\" cy=\"6\" r=\"3\" /><circle cx=\"18\" cy=\"6\" r=\"3\" />\n <circle cx=\"12\" cy=\"18\" r=\"3\" />\n <line x1=\"6\" y1=\"9\" x2=\"12\" y2=\"15\" /><line x1=\"18\" y1=\"9\" x2=\"12\" y2=\"15\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton onClick={setLink} isActive={editor.isActive('link')} title={labels.link}>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton onClick={addImage} title={labels.image}>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\" /><polyline points=\"21 15 16 10 5 21\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton onClick={insertTable} title={labels.table}>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <line x1=\"3\" y1=\"9\" x2=\"21\" y2=\"9\" /><line x1=\"3\" y1=\"15\" x2=\"21\" y2=\"15\" />\n <line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"21\" /><line x1=\"15\" y1=\"3\" x2=\"15\" y2=\"21\" />\n </svg>\n </ToolbarButton>\n {cfg.tableOps && <TableOpsMenu editor={editor} labels={labels} />}\n <ToolbarButton\n onClick={() => editor.chain().focus().setHorizontalRule().run()}\n title={labels.horizontalRule}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\">\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n </svg>\n </ToolbarButton>\n <ToolbarButton onClick={insertMarkdownBlock} title={labels.markdownBlock}>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M2 3h20v18H2z\" />\n <path d=\"M5 15V9l3 3.5L11 9v6\" />\n <path d=\"M17 9l-2.5 3H17v3\" />\n </svg>\n </ToolbarButton>\n <MarkdownTemplateMenu labels={labels} onSelect={insertMarkdownTemplate} />\n <FloatingDialogMenu labels={labels} onInsert={insertFloatingDialog} />\n <ToolbarDivider />\n </>\n )}\n\n {cfg.color && (\n <>\n <ColorPicker\n value={editor.getAttributes('textStyle').color || ''}\n onChange={(color) => {\n if (color) {\n editor.chain().focus().setColor(color).run();\n } else {\n editor.chain().focus().unsetColor().run();\n }\n }}\n title={labels.color}\n icon={\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 2L2 22h20L12 2z\" />\n </svg>\n }\n />\n <ColorPicker\n value={editor.getAttributes('highlight').color || ''}\n onChange={(color) => {\n if (color) {\n editor.chain().focus().toggleHighlight({ color }).run();\n } else {\n editor.chain().focus().unsetHighlight().run();\n }\n }}\n title={labels.highlight}\n icon={\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 20h9\" /><path d=\"M16.5 3.5a2.121 2.121 0 013 3L7 19l-4 1 1-4L16.5 3.5z\" />\n </svg>\n }\n />\n <ToolbarDivider />\n </>\n )}\n\n {cfg.ai && hasAI && onAIClick && (\n <ToolbarButton onClick={onAIClick} title={labels.ai}>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M9.5 2A2.5 2.5 0 0112 4.5v15a2.5 2.5 0 01-4.96.44 2.5 2.5 0 01-2.96-3.08 3 3 0 01-.34-5.58 2.5 2.5 0 011.32-4.24 2.5 2.5 0 011.98-3A2.5 2.5 0 019.5 2z\" />\n <path d=\"M14.5 2A2.5 2.5 0 0012 4.5v15a2.5 2.5 0 004.96.44 2.5 2.5 0 002.96-3.08 3 3 0 00.34-5.58 2.5 2.5 0 00-1.32-4.24 2.5 2.5 0 00-1.98-3A2.5 2.5 0 0014.5 2z\" />\n </svg>\n </ToolbarButton>\n )}\n\n {children}\n </div>\n );\n};\n\nexport default Toolbar;\n"],"mappings":"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"}