UNPKG

reactjs-tiptap-editor

Version:

A modern WYSIWYG rich text editor based on tiptap and shadcn ui for React

845 lines (844 loc) 23.6 kB
{ "name": "reactjs-tiptap-editor", "type": "module", "version": "1.0.17", "packageManager": "pnpm@8.15.9", "description": "A modern WYSIWYG rich text editor based on tiptap and shadcn ui for React", "license": "MIT", "homepage": "https://reactjs-tiptap-editor.vercel.app/", "repository": { "type": "git", "url": "git+https://github.com/hunghg255/reactjs-tiptap-editor.git" }, "bugs": "https://github.com/hunghg255/reactjs-tiptap-editor/issues", "keywords": [ "react", "tiptap", "editor", "wysiwyg", "rich-text", "reactjs-tiptap-editor", "tiptap-editor", "tiptap-react", "tiptap-react-editor", "tiptap-react-wysiwyg", "tiptap-react-rich-text", "tiptap-react-rc-editor", "tiptap-react-rc-wysiwyg", "tiptap-react-rc-rich-text" ], "sideEffects": false, "main": "./lib/index.cjs", "module": "./lib/index.js", "types": "./lib/index.d.ts", "pnpm": { "overrides": { "@excalidraw/excalidraw>nanoid": "3.3.11", "@excalidraw/mermaid-to-excalidraw": "2.0.0", "@excalidraw/mermaid-to-excalidraw>nanoid": "5.1.6", "esbuild": "0.25.12", "prosemirror-view": "1.41.1" } }, "exports": { ".": { "require": { "types": "./lib/index.d.cts", "default": "./lib/index.cjs" }, "import": { "types": "./lib/index.d.ts", "default": "./lib/index.js" } }, "./locale-bundle": { "require": { "types": "./lib/locale-bundle.d.cts", "default": "./lib/locale-bundle.cjs" }, "import": { "types": "./lib/locale-bundle.d.ts", "default": "./lib/locale-bundle.js" } }, "./bubble": { "require": { "types": "./lib/bubble.d.cts", "default": "./lib/bubble.cjs" }, "import": { "types": "./lib/bubble.d.ts", "default": "./lib/bubble.js" } }, "./theme": { "require": { "types": "./lib/theme/theme.d.cts", "default": "./lib/theme.cjs" }, "import": { "types": "./lib/theme/theme.d.ts", "default": "./lib/theme.js" } }, "./style.css": { "require": "./lib/style.css", "import": "./lib/style.css" }, "./lib/*": "./lib/*", "./package.json": "./package.json", "./*": "./lib/*", "./attachment": { "require": { "types": "./lib/extensions/Attachment/index.d.ts", "default": "./lib/Attachment.cjs" }, "import": { "types": "./lib/extensions/Attachment/index.d.ts", "default": "./lib/Attachment.js" } }, "./blockquote": { "require": { "types": "./lib/extensions/Blockquote/index.d.ts", "default": "./lib/Blockquote.cjs" }, "import": { "types": "./lib/extensions/Blockquote/index.d.ts", "default": "./lib/Blockquote.js" } }, "./bold": { "require": { "types": "./lib/extensions/Bold/index.d.ts", "default": "./lib/Bold.cjs" }, "import": { "types": "./lib/extensions/Bold/index.d.ts", "default": "./lib/Bold.js" } }, "./bulletlist": { "require": { "types": "./lib/extensions/BulletList/index.d.ts", "default": "./lib/BulletList.cjs" }, "import": { "types": "./lib/extensions/BulletList/index.d.ts", "default": "./lib/BulletList.js" } }, "./clear": { "require": { "types": "./lib/extensions/Clear/index.d.ts", "default": "./lib/Clear.cjs" }, "import": { "types": "./lib/extensions/Clear/index.d.ts", "default": "./lib/Clear.js" } }, "./code": { "require": { "types": "./lib/extensions/Code/index.d.ts", "default": "./lib/Code.cjs" }, "import": { "types": "./lib/extensions/Code/index.d.ts", "default": "./lib/Code.js" } }, "./codeview": { "require": { "types": "./lib/extensions/CodeView/index.d.ts", "default": "./lib/CodeView.cjs" }, "import": { "types": "./lib/extensions/CodeView/index.d.ts", "default": "./lib/CodeView.js" } }, "./codeblock": { "require": { "types": "./lib/extensions/CodeBlock/index.d.ts", "default": "./lib/CodeBlock.cjs" }, "import": { "types": "./lib/extensions/CodeBlock/index.d.ts", "default": "./lib/CodeBlock.js" } }, "./color": { "require": { "types": "./lib/extensions/Color/index.d.ts", "default": "./lib/Color.cjs" }, "import": { "types": "./lib/extensions/Color/index.d.ts", "default": "./lib/Color.js" } }, "./drawer": { "require": { "types": "./lib/extensions/Drawer/index.d.ts", "default": "./lib/Drawer.cjs" }, "import": { "types": "./lib/extensions/Drawer/index.d.ts", "default": "./lib/Drawer.js" } }, "./emoji": { "require": { "types": "./lib/extensions/Emoji/index.d.ts", "default": "./lib/Emoji.cjs" }, "import": { "types": "./lib/extensions/Emoji/index.d.ts", "default": "./lib/Emoji.js" } }, "./excalidraw": { "require": { "types": "./lib/extensions/Excalidraw/index.d.ts", "default": "./lib/Excalidraw.cjs" }, "import": { "types": "./lib/extensions/Excalidraw/index.d.ts", "default": "./lib/Excalidraw.js" } }, "./exportpdf": { "require": { "types": "./lib/extensions/ExportPdf/index.d.ts", "default": "./lib/ExportPdf.cjs" }, "import": { "types": "./lib/extensions/ExportPdf/index.d.ts", "default": "./lib/ExportPdf.js" } }, "./exportword": { "require": { "types": "./lib/extensions/ExportWord/index.d.ts", "default": "./lib/ExportWord.cjs" }, "import": { "types": "./lib/extensions/ExportWord/index.d.ts", "default": "./lib/ExportWord.js" } }, "./fontfamily": { "require": { "types": "./lib/extensions/FontFamily/index.d.ts", "default": "./lib/FontFamily.cjs" }, "import": { "types": "./lib/extensions/FontFamily/index.d.ts", "default": "./lib/FontFamily.js" } }, "./fontsize": { "require": { "types": "./lib/extensions/FontSize/index.d.ts", "default": "./lib/FontSize.cjs" }, "import": { "types": "./lib/extensions/FontSize/index.d.ts", "default": "./lib/FontSize.js" } }, "./heading": { "require": { "types": "./lib/extensions/Heading/index.d.ts", "default": "./lib/Heading.cjs" }, "import": { "types": "./lib/extensions/Heading/index.d.ts", "default": "./lib/Heading.js" } }, "./highlight": { "require": { "types": "./lib/extensions/Highlight/index.d.ts", "default": "./lib/Highlight.cjs" }, "import": { "types": "./lib/extensions/Highlight/index.d.ts", "default": "./lib/Highlight.js" } }, "./history": { "require": { "types": "./lib/extensions/History/index.d.ts", "default": "./lib/History.cjs" }, "import": { "types": "./lib/extensions/History/index.d.ts", "default": "./lib/History.js" } }, "./horizontalrule": { "require": { "types": "./lib/extensions/HorizontalRule/index.d.ts", "default": "./lib/HorizontalRule.cjs" }, "import": { "types": "./lib/extensions/HorizontalRule/index.d.ts", "default": "./lib/HorizontalRule.js" } }, "./iframe": { "require": { "types": "./lib/extensions/Iframe/index.d.ts", "default": "./lib/Iframe.cjs" }, "import": { "types": "./lib/extensions/Iframe/index.d.ts", "default": "./lib/Iframe.js" } }, "./image": { "require": { "types": "./lib/extensions/Image/index.d.ts", "default": "./lib/Image.cjs" }, "import": { "types": "./lib/extensions/Image/index.d.ts", "default": "./lib/Image.js" } }, "./imagegif": { "require": { "types": "./lib/extensions/ImageGif/index.d.ts", "default": "./lib/ImageGif.cjs" }, "import": { "types": "./lib/extensions/ImageGif/index.d.ts", "default": "./lib/ImageGif.js" } }, "./importword": { "require": { "types": "./lib/extensions/ImportWord/index.d.ts", "default": "./lib/ImportWord.cjs" }, "import": { "types": "./lib/extensions/ImportWord/index.d.ts", "default": "./lib/ImportWord.js" } }, "./indent": { "require": { "types": "./lib/extensions/Indent/index.d.ts", "default": "./lib/Indent.cjs" }, "import": { "types": "./lib/extensions/Indent/index.d.ts", "default": "./lib/Indent.js" } }, "./italic": { "require": { "types": "./lib/extensions/Italic/index.d.ts", "default": "./lib/Italic.cjs" }, "import": { "types": "./lib/extensions/Italic/index.d.ts", "default": "./lib/Italic.js" } }, "./katex": { "require": { "types": "./lib/extensions/Katex/index.d.ts", "default": "./lib/Katex.cjs" }, "import": { "types": "./lib/extensions/Katex/index.d.ts", "default": "./lib/Katex.js" } }, "./lineheight": { "require": { "types": "./lib/extensions/LineHeight/index.d.ts", "default": "./lib/LineHeight.cjs" }, "import": { "types": "./lib/extensions/LineHeight/index.d.ts", "default": "./lib/LineHeight.js" } }, "./link": { "require": { "types": "./lib/extensions/Link/index.d.ts", "default": "./lib/Link.cjs" }, "import": { "types": "./lib/extensions/Link/index.d.ts", "default": "./lib/Link.js" } }, "./mention": { "require": { "types": "./lib/extensions/Mention/index.d.ts", "default": "./lib/Mention.cjs" }, "import": { "types": "./lib/extensions/Mention/index.d.ts", "default": "./lib/Mention.js" } }, "./mermaid": { "require": { "types": "./lib/extensions/Mermaid/index.d.ts", "default": "./lib/Mermaid.cjs" }, "import": { "types": "./lib/extensions/Mermaid/index.d.ts", "default": "./lib/Mermaid.js" } }, "./moremark": { "require": { "types": "./lib/extensions/MoreMark/index.d.ts", "default": "./lib/MoreMark.cjs" }, "import": { "types": "./lib/extensions/MoreMark/index.d.ts", "default": "./lib/MoreMark.js" } }, "./column": { "require": { "types": "./lib/extensions/Column/index.d.ts", "default": "./lib/Column.cjs" }, "import": { "types": "./lib/extensions/Column/index.d.ts", "default": "./lib/Column.js" } }, "./orderedlist": { "require": { "types": "./lib/extensions/OrderedList/index.d.ts", "default": "./lib/OrderedList.cjs" }, "import": { "types": "./lib/extensions/OrderedList/index.d.ts", "default": "./lib/OrderedList.js" } }, "./searchandreplace": { "require": { "types": "./lib/extensions/SearchAndReplace/index.d.ts", "default": "./lib/SearchAndReplace.cjs" }, "import": { "types": "./lib/extensions/SearchAndReplace/index.d.ts", "default": "./lib/SearchAndReplace.js" } }, "./slashcommand": { "require": { "types": "./lib/extensions/SlashCommand/index.d.ts", "default": "./lib/SlashCommand.cjs" }, "import": { "types": "./lib/extensions/SlashCommand/index.d.ts", "default": "./lib/SlashCommand.js" } }, "./strike": { "require": { "types": "./lib/extensions/Strike/index.d.ts", "default": "./lib/Strike.cjs" }, "import": { "types": "./lib/extensions/Strike/index.d.ts", "default": "./lib/Strike.js" } }, "./table": { "require": { "types": "./lib/extensions/Table/index.d.ts", "default": "./lib/Table.cjs" }, "import": { "types": "./lib/extensions/Table/index.d.ts", "default": "./lib/Table.js" } }, "./tasklist": { "require": { "types": "./lib/extensions/TaskList/index.d.ts", "default": "./lib/TaskList.cjs" }, "import": { "types": "./lib/extensions/TaskList/index.d.ts", "default": "./lib/TaskList.js" } }, "./textalign": { "require": { "types": "./lib/extensions/TextAlign/index.d.ts", "default": "./lib/TextAlign.cjs" }, "import": { "types": "./lib/extensions/TextAlign/index.d.ts", "default": "./lib/TextAlign.js" } }, "./textdirection": { "require": { "types": "./lib/extensions/TextDirection/index.d.ts", "default": "./lib/TextDirection.cjs" }, "import": { "types": "./lib/extensions/TextDirection/index.d.ts", "default": "./lib/TextDirection.js" } }, "./textunderline": { "require": { "types": "./lib/extensions/TextUnderline/index.d.ts", "default": "./lib/TextUnderline.cjs" }, "import": { "types": "./lib/extensions/TextUnderline/index.d.ts", "default": "./lib/TextUnderline.js" } }, "./twitter": { "require": { "types": "./lib/extensions/Twitter/index.d.ts", "default": "./lib/Twitter.cjs" }, "import": { "types": "./lib/extensions/Twitter/index.d.ts", "default": "./lib/Twitter.js" } }, "./video": { "require": { "types": "./lib/extensions/Video/index.d.ts", "default": "./lib/Video.cjs" }, "import": { "types": "./lib/extensions/Video/index.d.ts", "default": "./lib/Video.js" } }, "./callout": { "require": { "types": "./lib/extensions/Callout/index.d.ts", "default": "./lib/Callout.cjs" }, "import": { "types": "./lib/extensions/Callout/index.d.ts", "default": "./lib/Callout.js" } } }, "typesVersions": { "*": { "locale-bundle": [ "./lib/locale-bundle.d.ts" ], "bubble": [ "./lib/bubble.d.ts" ], "theme": [ "./lib/theme.d.ts" ], "*": [ "./lib/*", "./*" ], "./attachment": [ "./lib/extensions/Attachment/index.d.ts" ], "./blockquote": [ "./lib/extensions/Blockquote/index.d.ts" ], "./bold": [ "./lib/extensions/Bold/index.d.ts" ], "./bulletlist": [ "./lib/extensions/BulletList/index.d.ts" ], "./clear": [ "./lib/extensions/Clear/index.d.ts" ], "./code": [ "./lib/extensions/Code/index.d.ts" ], "./codeblock": [ "./lib/extensions/CodeBlock/index.d.ts" ], "./codeview": [ "./lib/extensions/CodeView/index.d.ts" ], "./color": [ "./lib/extensions/Color/index.d.ts" ], "./drawer": [ "./lib/extensions/Drawer/index.d.ts" ], "./emoji": [ "./lib/extensions/Emoji/index.d.ts" ], "./excalidraw": [ "./lib/extensions/Excalidraw/index.d.ts" ], "./exportpdf": [ "./lib/extensions/ExportPdf/index.d.ts" ], "./exportword": [ "./lib/extensions/ExportWord/index.d.ts" ], "./fontfamily": [ "./lib/extensions/FontFamily/index.d.ts" ], "./fontsize": [ "./lib/extensions/FontSize/index.d.ts" ], "./heading": [ "./lib/extensions/Heading/index.d.ts" ], "./highlight": [ "./lib/extensions/Highlight/index.d.ts" ], "./history": [ "./lib/extensions/History/index.d.ts" ], "./horizontalrule": [ "./lib/extensions/HorizontalRule/index.d.ts" ], "./iframe": [ "./lib/extensions/Iframe/index.d.ts" ], "./image": [ "./lib/extensions/Image/index.d.ts" ], "./imagegif": [ "./lib/extensions/ImageGif/index.d.ts" ], "./importword": [ "./lib/extensions/ImportWord/index.d.ts" ], "./indent": [ "./lib/extensions/Indent/index.d.ts" ], "./italic": [ "./lib/extensions/Italic/index.d.ts" ], "./katex": [ "./lib/extensions/Katex/index.d.ts" ], "./lineheight": [ "./lib/extensions/LineHeight/index.d.ts" ], "./link": [ "./lib/extensions/Link/index.d.ts" ], "./mention": [ "./lib/extensions/Mention/index.d.ts" ], "./mermaid": [ "./lib/extensions/Mermaid/index.d.ts" ], "./moremark": [ "./lib/extensions/MoreMark/index.d.ts" ], "./column": [ "./lib/extensions/Column/index.d.ts" ], "./orderedlist": [ "./lib/extensions/OrderedList/index.d.ts" ], "./searchandreplace": [ "./lib/extensions/SearchAndReplace/index.d.ts" ], "./slashcommand": [ "./lib/extensions/SlashCommand/index.d.ts" ], "./strike": [ "./lib/extensions/Strike/index.d.ts" ], "./table": [ "./lib/extensions/Table/index.d.ts" ], "./tasklist": [ "./lib/extensions/TaskList/index.d.ts" ], "./textalign": [ "./lib/extensions/TextAlign/index.d.ts" ], "./textdirection": [ "./lib/extensions/TextDirection/index.d.ts" ], "./textunderline": [ "./lib/extensions/TextUnderline/index.d.ts" ], "./twitter": [ "./lib/extensions/Twitter/index.d.ts" ], "./video": [ "./lib/extensions/Video/index.d.ts" ], "./callout": [ "./lib/extensions/Callout/index.d.ts" ] } }, "files": [ "lib", "package.json", "README.md", "LICENSE" ], "engines": { "node": ">=18.0.0" }, "scripts": { "build:lib": "vite build", "build:lib:dev": "vite build --mode development --watch", "build:playground": "pnpm build:lib && pnpm --dir ./playground run build", "docs:dev": "pnpm --parallel --filter docs... dev", "docs:build": "pnpm --filter docs... build", "docs:preview": "pnpm -C docs preview", "prepublishOnly": "pnpm build:lib", "playground": "pnpm --dir ./playground run dev", "preview": "pnpm --dir ./playground run preview", "lint": "eslint src --quiet", "lint:fix": "eslint src --fix --quiet", "type-check": "tsc", "verify-commit": "verify-commit-msg", "prepare": "git-scm-hooks", "release": "bumpp -r", "gen-changelog": "esno ./scripts/genExtensions.ts && esno ./scripts/changelog.ts", "gen-contributors": "contributorkit" }, "dependencies": { "@excalidraw/excalidraw": "^0.18.0", "@floating-ui/dom": "^1.7.4", "@hocuspocus/provider": "^3.4.3", "@radix-ui/react-checkbox": "^1.3.3", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-icons": "^1.3.2", "@radix-ui/react-label": "^2.1.8", "@radix-ui/react-popover": "^1.1.15", "@radix-ui/react-select": "^2.2.6", "@radix-ui/react-separator": "^1.1.8", "@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-switch": "^1.2.6", "@radix-ui/react-tabs": "^1.1.13", "@radix-ui/react-toast": "^1.2.15", "@radix-ui/react-toggle": "^1.1.10", "@radix-ui/react-tooltip": "^1.2.8", "@tiptap/core": "^3.14.0", "@tiptap/extension-blockquote": "^3.14.0", "@tiptap/extension-bold": "^3.14.0", "@tiptap/extension-bullet-list": "^3.14.0", "@tiptap/extension-code": "^3.14.0", "@tiptap/extension-collaboration": "^3.14.0", "@tiptap/extension-collaboration-caret": "^3.14.0", "@tiptap/extension-document": "^3.14.0", "@tiptap/extension-drag-handle": "^3.14.0", "@tiptap/extension-drag-handle-react": "^3.14.0", "@tiptap/extension-emoji": "^3.14.0", "@tiptap/extension-hard-break": "^3.14.0", "@tiptap/extension-heading": "^3.14.0", "@tiptap/extension-highlight": "^2.27.1", "@tiptap/extension-horizontal-rule": "^3.14.0", "@tiptap/extension-image": "^3.14.0", "@tiptap/extension-italic": "^3.14.0", "@tiptap/extension-link": "^3.14.0", "@tiptap/extension-list": "^3.14.0", "@tiptap/extension-list-item": "^3.14.0", "@tiptap/extension-mention": "^3.14.0", "@tiptap/extension-node-range": "^3.14.0", "@tiptap/extension-ordered-list": "^3.14.0", "@tiptap/extension-paragraph": "^3.14.0", "@tiptap/extension-strike": "^3.14.0", "@tiptap/extension-subscript": "^3.14.0", "@tiptap/extension-superscript": "^3.14.0", "@tiptap/extension-table": "^3.14.0", "@tiptap/extension-task-item": "^3.14.0", "@tiptap/extension-task-list": "^3.14.0", "@tiptap/extension-text": "^3.14.0", "@tiptap/extension-text-align": "^3.14.0", "@tiptap/extension-text-style": "^3.14.0", "@tiptap/extension-underline": "^3.14.0", "@tiptap/extensions": "^3.14.0", "@tiptap/pm": "^3.14.0", "@tiptap/react": "^3.14.0", "@tiptap/suggestion": "^3.14.0", "@tiptap/y-tiptap": "^3.0.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "deep-equal": "^2.2.3", "docx": "^9.5.1", "easydrawer": "^0.0.15", "frimousse": "^0.3.0", "katex": "^0.16.27", "lodash-es": "^4.17.22", "lucide-react": "^0.427.0", "mermaid": "^11.12.2", "prism-code-editor-lightweight": "^0.0.3", "prosemirror-docx": "^0.2.1", "re-resizable": "^6.11.2", "react-colorful": "^5.6.1", "react-image-crop": "^11.0.10", "react-tweet": "^3.3.0", "reactjs-signal": "^2.0.4", "scroll-into-view-if-needed": "^3.1.0", "svg64": "^2.0.0", "y-protocols": "^1.0.7", "yjs": "^13.6.28" }, "devDependencies": { "@hunghg255/eslint-config": "^1.0.1", "@types/deep-equal": "^1.0.4", "@types/katex": "^0.16.7", "@types/lodash-es": "^4.17.12", "@types/node": "^24.10.4", "@types/react": "^19.2.7", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.2", "autoprefixer": "^10.4.23", "bumpp": "^10.3.2", "contributorkit": "^0.0.4", "eslint": "^9.39.2", "eslint-plugin-tailwindcss": "^3.18.2", "esno": "^4.8.0", "execa": "^9.6.1", "git-scm-hooks": "^0.2.0", "globby": "^14.1.0", "mammoth": "^1.11.0", "md5": "^2.3.0", "postcss": "^8.5.6", "postcss-replace": "^2.0.1", "postcss-scss": "^4.0.9", "react": "^19.2.3", "react-dom": "^19.2.3", "sass": "^1.97.1", "tailwind-merge": "^2.6.0", "tailwindcss": "^3.4.19", "typescript": "^5.9.3", "unplugin-dts": "1.0.0-beta.6", "verify-commit-msg": "^0.1.0", "vite": "^6.4.1" }, "browserslist": [ ">0.3%", "not ie 11", "not dead", "not op_mini all" ], "git-hooks": { "pre-commit": "npm run lint:fix", "commit-msg": "npm run verify-commit" } }