{"id":47082021,"url":"https://github.com/eigenpal/docx-editor","last_synced_at":"2026-06-08T13:00:56.612Z","repository":{"id":336598325,"uuid":"1147585130","full_name":"eigenpal/docx-editor","owner":"eigenpal","description":"Open-source WYSIWYG .docx editor library with canonical OOXML, tracked changes, and real-time collaboration.","archived":false,"fork":false,"pushed_at":"2026-06-04T23:13:16.000Z","size":59314,"stargazers_count":1557,"open_issues_count":47,"forks_count":157,"subscribers_count":14,"default_branch":"main","last_synced_at":"2026-06-04T23:15:59.953Z","etag":null,"topics":["docx","docx-editor","editor","js","msword","next","prosemirror","react","vite","vue","word","word-editor","wysiwyg"],"latest_commit_sha":null,"homepage":"https://docx-editor.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eigenpal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"docs/agents.md","dco":null,"cla":"CLA.md"}},"created_at":"2026-02-02T00:43:53.000Z","updated_at":"2026-06-04T21:35:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/eigenpal/docx-editor","commit_stats":null,"previous_names":["eigenpal/docx-js-editor","eigenpal/docx-editor"],"tags_count":116,"template":false,"template_full_name":null,"purl":"pkg:github/eigenpal/docx-editor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eigenpal%2Fdocx-editor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eigenpal%2Fdocx-editor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eigenpal%2Fdocx-editor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eigenpal%2Fdocx-editor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eigenpal","download_url":"https://codeload.github.com/eigenpal/docx-editor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eigenpal%2Fdocx-editor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34063159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docx","docx-editor","editor","js","msword","next","prosemirror","react","vite","vue","word","word-editor","wysiwyg"],"created_at":"2026-03-12T07:03:10.997Z","updated_at":"2026-06-08T13:00:56.559Z","avatar_url":"https://github.com/eigenpal.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.docx-editor.dev/\"\u003e\n    \u003cimg src=\"./.github/assets/header.png\" alt=\"DOCX Editor — .docx in, .docx out. Open source, agent ready, client-side.\" width=\"500\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@eigenpal/docx-editor-core\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/@eigenpal/docx-editor-core.svg?style=flat-square\u0026color=3B5BDB\" alt=\"npm version\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@eigenpal/docx-js-editor\"\u003e\u003cimg src=\"https://img.shields.io/npm/dm/@eigenpal/docx-js-editor.svg?style=flat-square\u0026color=3B5BDB\" alt=\"npm downloads\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/eigenpal/docx-editor/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-Apache_2.0-blue.svg?style=flat-square\u0026color=3B5BDB\" alt=\"license\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://docx-editor.dev/editor\"\u003e\u003cimg src=\"https://img.shields.io/badge/Live_Demo-3B5BDB?style=flat-square\u0026logo=vercel\u0026logoColor=white\" alt=\"Demo\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.docx-editor.dev/docs\"\u003e\u003cimg src=\"https://img.shields.io/badge/Docs-3B5BDB?style=flat-square\u0026logo=readthedocs\u0026logoColor=white\" alt=\"Documentation\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nOpen-source WYSIWYG `.docx` editor for React and Vue with canonical OOXML, tracked changes, and real-time collaboration. Agent-ready. **[Live demo](https://docx-editor.dev/editor)** | **[Documentation](https://www.docx-editor.dev/docs)**\n\n## Quick Start\n\n```bash\nnpm install @eigenpal/docx-editor-react\n```\n\nSee the [React quick start](#react) below.\n\n```bash\nnpm install @eigenpal/docx-editor-vue\n```\n\nSee the [Vue quick start](#vue) below.\n\n```bash\nnpm install @eigenpal/nuxt-docx-editor\n```\n\nSee the [Nuxt quick start](#nuxt) below.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://docx-editor.dev/editor\"\u003e\n    \u003cimg src=\"./.github/assets/editor.png\" alt=\"docx-editor screenshot\" width=\"100%\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Packages\n\n| Package                                                                                      | Description                                                                                                                                | Docs                                                  |\n| -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------- |\n| [`@eigenpal/docx-editor-react`](https://www.npmjs.com/package/@eigenpal/docx-editor-react)   | \u003cimg src=\"https://cdn.simpleicons.org/react/61DAFB\" width=\"20\" align=\"middle\" /\u003e \u0026nbsp; React adapter. Toolbar, paged editor, plugins.     | [Docs](https://www.docx-editor.dev/docs/1.x/react)    |\n| [`@eigenpal/docx-editor-vue`](https://www.npmjs.com/package/@eigenpal/docx-editor-vue)       | \u003cimg src=\"https://cdn.simpleicons.org/vuedotjs/4FC08D\" width=\"20\" align=\"middle\" /\u003e \u0026nbsp; Vue 3 adapter. Toolbar, paged editor, plugins.  | [Docs](https://www.docx-editor.dev/docs/1.x/vue)      |\n| [`@eigenpal/nuxt-docx-editor`](https://www.npmjs.com/package/@eigenpal/nuxt-docx-editor)     | \u003cimg src=\"https://cdn.simpleicons.org/nuxt/00DC82\" width=\"20\" align=\"middle\" /\u003e \u0026nbsp; Nuxt 3 \u0026 4 module wrapping the Vue adapter.         | [Docs](https://www.docx-editor.dev/docs/1.x/vue/nuxt) |\n| [`@eigenpal/docx-editor-core`](https://www.npmjs.com/package/@eigenpal/docx-editor-core)     | Framework-agnostic core: OOXML parser, serializer, layout engine, ProseMirror schema. Depend on this if you fork the React or Vue adapter. | [Docs](https://www.docx-editor.dev/docs/1.x/core)     |\n| [`@eigenpal/docx-editor-i18n`](https://www.npmjs.com/package/@eigenpal/docx-editor-i18n)     | Shared locale strings and types consumed by both adapters.                                                                                 | [Docs](https://www.docx-editor.dev/docs/1.x/i18n)     |\n| [`@eigenpal/docx-editor-agents`](https://www.npmjs.com/package/@eigenpal/docx-editor-agents) | Agent SDK and chat UI: framework-agnostic bridge, MCP server, AI SDK adapters, plus UI components.                                         | [Docs](https://www.docx-editor.dev/docs/1.x/agents)   |\n\n\u003e **Forking the adapter?** Keep your fork thin. Depend on `@eigenpal/docx-editor-core` directly so parser, serializer, and rendering fixes land in your build automatically, without backporting each upstream change by hand.\n\n## React\n\n```tsx\nimport { useState } from 'react';\nimport { DocxEditor } from '@eigenpal/docx-editor-react';\nimport '@eigenpal/docx-editor-react/styles.css';\n\nexport function App() {\n  const [buffer, setBuffer] = useState\u003cArrayBuffer | null\u003e(null);\n\n  return (\n    \u003c\u003e\n      \u003cinput\n        type=\"file\"\n        accept=\".docx\"\n        onChange={async (e) =\u003e setBuffer((await e.target.files?.[0]?.arrayBuffer()) ?? null)}\n      /\u003e\n      {buffer \u0026\u0026 \u003cDocxEditor documentBuffer={buffer} mode=\"editing\" /\u003e}\n    \u003c/\u003e\n  );\n}\n```\n\n\u003e **Next.js / SSR:** Use dynamic import. The editor requires the DOM.\n\nFull docs: [`packages/react`](packages/react) · [API reference](https://www.docx-editor.dev/docs/props).\n\n## Vue\n\n```vue\n\u003cscript setup lang=\"ts\"\u003e\nimport { ref } from 'vue';\nimport { DocxEditor } from '@eigenpal/docx-editor-vue';\nimport '@eigenpal/docx-editor-vue/styles.css';\n\nconst buffer = ref\u003cArrayBuffer | null\u003e(null);\n\nasync function loadFile(e: Event) {\n  const file = (e.target as HTMLInputElement).files?.[0];\n  buffer.value = file ? await file.arrayBuffer() : null;\n}\n\u003c/script\u003e\n\n\u003ctemplate\u003e\n  \u003cinput type=\"file\" accept=\".docx\" @change=\"loadFile\" /\u003e\n  \u003cDocxEditor v-if=\"buffer\" :document-buffer=\"buffer\" mode=\"editing\" /\u003e\n\u003c/template\u003e\n```\n\nFull docs: [`packages/vue`](packages/vue) · [API reference](https://www.docx-editor.dev/docs/props).\n\n## Nuxt\n\n```ts\n// nuxt.config.ts\nexport default defineNuxtConfig({\n  modules: ['@eigenpal/nuxt-docx-editor'],\n});\n```\n\n`@eigenpal/nuxt-docx-editor` wraps the Vue adapter as a Nuxt 3 \u0026 4 module: it auto-imports an SSR-safe `\u003cDocxEditor\u003e` component (no manual import, no `\u003cClientOnly\u003e` wrapper) and the Vue composables.\n\nFull docs: [`packages/nuxt`](packages/nuxt).\n\n## Plugins\n\n```tsx\nimport { DocxEditor } from '@eigenpal/docx-editor-react';\nimport { PluginHost, templatePlugin } from '@eigenpal/docx-editor-react/plugin-api';\n\n\u003cPluginHost plugins={[templatePlugin]}\u003e\n  \u003cDocxEditor documentBuffer={buffer} /\u003e\n\u003c/PluginHost\u003e;\n```\n\nSee the [plugin documentation](https://www.docx-editor.dev/docs/plugins) for the full plugin API.\n\n## Development\n\n```bash\nbun install\nbun run dev        # localhost:5173\nbun run build\nbun run typecheck\n```\n\nA live preview of `main` is auto-deployed at **[latest.docx-editor.dev](https://latest.docx-editor.dev/)** — useful for trying out changes before they ship to npm.\n\nExamples: [Vite](examples/vite) | [Next.js](examples/nextjs) | [Remix](examples/remix) | [Astro](examples/astro) | [Vue](examples/vue) | [Nuxt](examples/nuxt)\n\n**[Documentation](https://www.docx-editor.dev/docs)** | **[Props \u0026 Ref Methods](https://www.docx-editor.dev/docs/props)** | **[Plugins](https://www.docx-editor.dev/docs/plugins)** | **[Architecture](https://www.docx-editor.dev/docs/architecture)**\n\n## Contributing\n\nContributions welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for setup, tests, and the one-time CLA signature.\n\n## Translations\n\n| Locale  | Language             |\n| ------- | -------------------- |\n| `en`    | English              |\n| `de`    | German               |\n| `fr`    | French               |\n| `he`    | Hebrew               |\n| `hi`    | Hindi                |\n| `pl`    | Polish               |\n| `pt-BR` | Portuguese (Brazil)  |\n| `tr`    | Turkish              |\n| `zh-CN` | Chinese (Simplified) |\n\nHelp translate the editor into your language! See the full **[i18n contribution guide](docs/i18n.md)**.\n\n```bash\nbun run i18n:new de      # scaffold German locale\nbun run i18n:status      # check translation coverage\n```\n\n## Commercial Support\n\n\u003e [!TIP]\n\u003e Questions or custom features? Email **[docx-editor@eigenpal.com](mailto:docx-editor@eigenpal.com)**.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feigenpal%2Fdocx-editor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feigenpal%2Fdocx-editor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feigenpal%2Fdocx-editor/lists"}