@coding01/docsjs 0.1.3 → 0.1.6
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/README.md +77 -21
- package/README.zh-CN.md +74 -20
- package/dist/{chunk-PRPDJOB7.js → chunk-632UOG2B.js} +448 -102
- package/dist/chunk-632UOG2B.js.map +1 -0
- package/dist/index.cjs +452 -103
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +11 -4
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +449 -102
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.js +12 -3
- package/dist/react.js.map +1 -1
- package/dist/types-VvdwVF0_.d.cts +44 -0
- package/dist/types-VvdwVF0_.d.ts +44 -0
- package/dist/vue.cjs +438 -100
- package/dist/vue.cjs.map +1 -1
- package/dist/vue.d.cts +1 -1
- package/dist/vue.d.ts +1 -1
- package/dist/vue.js +1 -1
- package/package.json +3 -1
- package/dist/chunk-PRPDJOB7.js.map +0 -1
- package/dist/types-DF14w1ol.d.cts +0 -20
- package/dist/types-DF14w1ol.d.ts +0 -20
package/README.md
CHANGED
|
@@ -3,8 +3,19 @@
|
|
|
3
3
|
Render-first Word fidelity component for the web.
|
|
4
4
|
Import Word/WPS/Google Docs content from paste or `.docx` while preserving structure and layout as much as possible.
|
|
5
5
|
|
|
6
|
+
[](https://www.npmjs.com/package/@coding01/docsjs)
|
|
7
|
+
[](https://www.npmjs.com/package/@coding01/docsjs)
|
|
8
|
+
[](https://github.com/fanly/docsjs/actions/workflows/ci.yml)
|
|
9
|
+
[](https://github.com/fanly/docsjs/actions/workflows/pages.yml)
|
|
10
|
+
|
|
6
11
|
[中文文档](./README.zh-CN.md)
|
|
7
12
|
|
|
13
|
+
## GitHub Pages
|
|
14
|
+
|
|
15
|
+
- Product page: [https://docsjs.coding01.cn/](https://docsjs.coding01.cn/)
|
|
16
|
+
- Source: `docs/index.html`
|
|
17
|
+
- Deploy workflow: `.github/workflows/pages.yml`
|
|
18
|
+
|
|
8
19
|
## What You Get
|
|
9
20
|
|
|
10
21
|
- Web Component core: `docs-word-editor`
|
|
@@ -70,7 +81,7 @@ el.addEventListener("docsjs-change", (e) => {
|
|
|
70
81
|
### Events
|
|
71
82
|
|
|
72
83
|
- `docsjs-change`
|
|
73
|
-
- payload: `{ htmlSnapshot: string; source: "paste" | "upload" | "api" | "clear"; fileName?: string }`
|
|
84
|
+
- payload: `{ htmlSnapshot: string; source: "paste" | "upload" | "api" | "clear"; fileName?: string; parseReport?: DocxParseReport }`
|
|
74
85
|
- `docsjs-error`
|
|
75
86
|
- payload: `{ message: string }`
|
|
76
87
|
- `docsjs-ready`
|
|
@@ -91,27 +102,49 @@ el.addEventListener("docsjs-change", (e) => {
|
|
|
91
102
|
|
|
92
103
|
## Feature Checklist
|
|
93
104
|
|
|
105
|
+
<!-- GENERATED:FEATURE_CHECKLIST_EN:START -->
|
|
106
|
+
### Core
|
|
107
|
+
|
|
94
108
|
- ✅ Web Component core (`docs-word-editor`)
|
|
95
|
-
- ✅ React adapter
|
|
96
|
-
- ✅
|
|
97
|
-
- ✅
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
- ✅
|
|
102
|
-
- ✅
|
|
103
|
-
- ✅
|
|
104
|
-
- ✅
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
- ✅
|
|
109
|
-
- ✅
|
|
110
|
-
-
|
|
111
|
-
- ⏳
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
109
|
+
- ✅ React adapter + Vue adapter
|
|
110
|
+
- ✅ Events and imperative public API
|
|
111
|
+
- ✅ Strict-only parser strategy
|
|
112
|
+
|
|
113
|
+
### Import Pipeline
|
|
114
|
+
|
|
115
|
+
- ✅ Clipboard import (`text/html`, `text/plain`)
|
|
116
|
+
- ✅ `.docx` upload + relationship media mapping
|
|
117
|
+
- ✅ Clipboard image hydration (`file:/blob:/cid:`)
|
|
118
|
+
- ✅ Output as stable HTML snapshot
|
|
119
|
+
|
|
120
|
+
### Layout Fidelity
|
|
121
|
+
|
|
122
|
+
- ✅ List reconstruction (`numId`, `ilvl`, `lvlText`)
|
|
123
|
+
- ✅ Table v1 (`tblGrid/tcW`, merge, border, spacing)
|
|
124
|
+
- ✅ Floating anchors v1 (`wp:anchor` metadata)
|
|
125
|
+
- ⏳ Anchor collision parity (pixel-level wrap)
|
|
126
|
+
|
|
127
|
+
### Advanced Semantics
|
|
128
|
+
|
|
129
|
+
- ✅ Footnotes / endnotes / comments
|
|
130
|
+
- ✅ Revision markers (`ins` / `del`) + metadata
|
|
131
|
+
- ✅ Page break semantic markers
|
|
132
|
+
- ✅ DOCX hyperlink relationship + anchor mapping
|
|
133
|
+
|
|
134
|
+
### Semantic Fallback
|
|
135
|
+
|
|
136
|
+
- ✅ OMML fallback output
|
|
137
|
+
- ✅ Chart semantic extraction fallback
|
|
138
|
+
- ✅ SmartArt node fallback extraction
|
|
139
|
+
- ⏳ OMML high-fidelity render pipeline (MathML/KaTeX)
|
|
140
|
+
|
|
141
|
+
### Engineering Quality
|
|
142
|
+
|
|
143
|
+
- ✅ 50 automated tests (regression + boundary)
|
|
144
|
+
- ✅ Baseline snapshot regression framework
|
|
145
|
+
- ✅ `verify` quality gate (lint/typecheck/test/build/size)
|
|
146
|
+
- ✅ Parse report API for performance tuning
|
|
147
|
+
<!-- GENERATED:FEATURE_CHECKLIST_EN:END -->
|
|
115
148
|
|
|
116
149
|
## What's New in v0.1.3
|
|
117
150
|
|
|
@@ -121,15 +154,21 @@ el.addEventListener("docsjs-change", (e) => {
|
|
|
121
154
|
- footnotes and endnotes (read-only rendering)
|
|
122
155
|
- comments (read-only rendering)
|
|
123
156
|
- revisions insert/delete markers (read-only rendering)
|
|
157
|
+
- comment range markers and revision metadata attributes
|
|
124
158
|
- page break semantic markers (`w:br type=page`, `lastRenderedPageBreak`)
|
|
159
|
+
- table width mapping (`tblGrid/gridCol`, `tcW`)
|
|
160
|
+
- table border model / cell spacing / table-layout mapping
|
|
161
|
+
- OMML formula fallback rendering and chart/SmartArt semantic fallback
|
|
125
162
|
- Added floating image MVP:
|
|
126
163
|
- anchor position mapping (`wp:anchor`)
|
|
127
164
|
- wrap mode markers (`square`, `tight`, `topAndBottom`, `none`)
|
|
165
|
+
- anchor layout metadata (`relativeFrom`, `behindDoc`, `allowOverlap`, `layoutInCell`, `relativeHeight`, `dist*`)
|
|
128
166
|
- Added fidelity tooling:
|
|
129
167
|
- semantic stats collector
|
|
130
168
|
- fidelity score calculator
|
|
131
169
|
- baseline regression framework (config-driven)
|
|
132
170
|
- visual regression workflow scaffold (Playwright + diff artifacts)
|
|
171
|
+
- golden corpus benchmark + trend report workflow (`fidelity-benchmark.yml`)
|
|
133
172
|
- Added engineering quality gates:
|
|
134
173
|
- ESLint + strict verify pipeline (`lint`, `typecheck`, `test`, `build`, `sizecheck`)
|
|
135
174
|
- CI workflow for mandatory quality checks
|
|
@@ -146,8 +185,16 @@ npm install
|
|
|
146
185
|
npm run typecheck
|
|
147
186
|
npm run test
|
|
148
187
|
npm run build
|
|
188
|
+
npm run benchmark:fidelity
|
|
149
189
|
```
|
|
150
190
|
|
|
191
|
+
## Engineering Modes
|
|
192
|
+
|
|
193
|
+
- Spec and conventions: [ENGINEERING_MODES.md](./ENGINEERING_MODES.md)
|
|
194
|
+
- Parse API now supports:
|
|
195
|
+
- `parseDocxToHtmlSnapshot(file)`
|
|
196
|
+
- `parseDocxToHtmlSnapshotWithReport(file)`
|
|
197
|
+
|
|
151
198
|
## Demos
|
|
152
199
|
|
|
153
200
|
### React demo
|
|
@@ -184,6 +231,15 @@ Workflow: `.github/workflows/publish.yml`
|
|
|
184
231
|
- Trigger: push tag `v*.*.*`
|
|
185
232
|
- Steps: `npm ci` -> `npm run typecheck` -> `npm run build` -> `npm publish --provenance`
|
|
186
233
|
|
|
234
|
+
### GitHub Packages (repo sidebar "Packages")
|
|
235
|
+
|
|
236
|
+
Workflow: `.github/workflows/publish-github-packages.yml`
|
|
237
|
+
|
|
238
|
+
- Trigger: push tag `v*.*.*` or manual run
|
|
239
|
+
- Target registry: `https://npm.pkg.github.com`
|
|
240
|
+
- Package name in GitHub Packages: `@fanly/docsjs`
|
|
241
|
+
- Note: GitHub sidebar "Packages" only shows packages published to GitHub Packages, not npmjs
|
|
242
|
+
|
|
187
243
|
## Roadmap
|
|
188
244
|
|
|
189
245
|
See [ROADMAP.md](./ROADMAP.md) for prioritized execution plan (P0/P1/P2) and acceptance criteria.
|
package/README.zh-CN.md
CHANGED
|
@@ -3,8 +3,19 @@
|
|
|
3
3
|
面向 Web 的 Render-first Word 高保真导入组件。
|
|
4
4
|
目标是在粘贴或上传 `.docx` 时,尽可能无损保留 Word/WPS/Google Docs 的结构和版式。
|
|
5
5
|
|
|
6
|
+
[](https://www.npmjs.com/package/@coding01/docsjs)
|
|
7
|
+
[](https://www.npmjs.com/package/@coding01/docsjs)
|
|
8
|
+
[](https://github.com/fanly/docsjs/actions/workflows/ci.yml)
|
|
9
|
+
[](https://github.com/fanly/docsjs/actions/workflows/pages.yml)
|
|
10
|
+
|
|
6
11
|
[English README](./README.md)
|
|
7
12
|
|
|
13
|
+
## GitHub Pages
|
|
14
|
+
|
|
15
|
+
- 产品单页: [https://docsjs.coding01.cn/](https://docsjs.coding01.cn/)
|
|
16
|
+
- 页面源码: `docs/index.html`
|
|
17
|
+
- 自动部署: `.github/workflows/pages.yml`
|
|
18
|
+
|
|
8
19
|
## 核心能力
|
|
9
20
|
|
|
10
21
|
- Web Component 内核:`docs-word-editor`
|
|
@@ -86,27 +97,49 @@ document.body.appendChild(el);
|
|
|
86
97
|
|
|
87
98
|
## 功能清单
|
|
88
99
|
|
|
100
|
+
<!-- GENERATED:FEATURE_CHECKLIST_ZH:START -->
|
|
101
|
+
### 核心
|
|
102
|
+
|
|
89
103
|
- ✅ Web Component 内核(`docs-word-editor`)
|
|
90
|
-
- ✅ React
|
|
91
|
-
- ✅
|
|
92
|
-
- ✅
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
- ✅
|
|
97
|
-
- ✅
|
|
98
|
-
- ✅
|
|
99
|
-
- ✅
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
- ✅
|
|
104
|
-
- ✅
|
|
105
|
-
-
|
|
106
|
-
- ⏳
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
104
|
+
- ✅ React + Vue 适配层
|
|
105
|
+
- ✅ 事件体系与命令式公开 API
|
|
106
|
+
- ✅ 严格模式唯一解析策略
|
|
107
|
+
|
|
108
|
+
### 导入链路
|
|
109
|
+
|
|
110
|
+
- ✅ 剪贴板导入(`text/html`、`text/plain`)
|
|
111
|
+
- ✅ `.docx` 上传与关系媒体映射
|
|
112
|
+
- ✅ 不稳定图片 URI 修复(`file:/blob:/cid:`)
|
|
113
|
+
- ✅ 输出稳定 HTML Snapshot
|
|
114
|
+
|
|
115
|
+
### 版式保真
|
|
116
|
+
|
|
117
|
+
- ✅ 列表结构恢复(`numId`、`ilvl`、`lvlText`)
|
|
118
|
+
- ✅ 表格 v1(`tblGrid/tcW`、合并、边框、间距)
|
|
119
|
+
- ✅ 浮动锚点 v1(`wp:anchor` 元数据)
|
|
120
|
+
- ⏳ 锚点碰撞一致性(像素级绕排)
|
|
121
|
+
|
|
122
|
+
### 高级语义
|
|
123
|
+
|
|
124
|
+
- ✅ 脚注/尾注/批注
|
|
125
|
+
- ✅ 修订标记(`ins`/`del`)与元数据
|
|
126
|
+
- ✅ 分页语义标记
|
|
127
|
+
- ✅ DOCX 超链接关系与锚点映射
|
|
128
|
+
|
|
129
|
+
### 语义降级
|
|
130
|
+
|
|
131
|
+
- ✅ OMML 语义降级输出
|
|
132
|
+
- ✅ 图表语义提取降级
|
|
133
|
+
- ✅ SmartArt 节点降级提取
|
|
134
|
+
- ⏳ OMML 高保真渲染链(MathML/KaTeX)
|
|
135
|
+
|
|
136
|
+
### 工程质量
|
|
137
|
+
|
|
138
|
+
- ✅ 50 条自动化测试(回归 + 边界)
|
|
139
|
+
- ✅ 基准快照回归框架
|
|
140
|
+
- ✅ `verify` 质量门禁(lint/typecheck/test/build/size)
|
|
141
|
+
- ✅ 解析报告 API(性能调优)
|
|
142
|
+
<!-- GENERATED:FEATURE_CHECKLIST_ZH:END -->
|
|
110
143
|
|
|
111
144
|
## v0.1.3 更新内容
|
|
112
145
|
|
|
@@ -116,15 +149,21 @@ document.body.appendChild(el);
|
|
|
116
149
|
- 脚注与尾注(只读渲染)
|
|
117
150
|
- 批注(只读渲染)
|
|
118
151
|
- 修订新增/删除标记(只读渲染)
|
|
152
|
+
- 批注区间标记与修订元数据属性
|
|
119
153
|
- 分页语义标记(`w:br type=page`、`lastRenderedPageBreak`)
|
|
154
|
+
- 表格宽度映射(`tblGrid/gridCol`、`tcW`)
|
|
155
|
+
- 表格边框模型/单元格间距/布局类型映射
|
|
156
|
+
- OMML 公式降级渲染、图表/SmartArt 语义降级渲染
|
|
120
157
|
- 浮动图片 MVP:
|
|
121
158
|
- 锚点定位(`wp:anchor`)
|
|
122
159
|
- 绕排模式标记(`square`、`tight`、`topAndBottom`、`none`)
|
|
160
|
+
- 锚点布局元数据(`relativeFrom`、`behindDoc`、`allowOverlap`、`layoutInCell`、`relativeHeight`、`dist*`)
|
|
123
161
|
- 保真工具链增强:
|
|
124
162
|
- 语义统计器
|
|
125
163
|
- 保真评分器
|
|
126
164
|
- 配置驱动的基准回归测试框架
|
|
127
165
|
- 视觉回归工作流骨架(Playwright + diff artifacts)
|
|
166
|
+
- golden corpus 基准评分 + 趋势报告工作流(`fidelity-benchmark.yml`)
|
|
128
167
|
- 工程质量门增强:
|
|
129
168
|
- ESLint + 严格 `verify`(`lint/typecheck/test/build/sizecheck`)
|
|
130
169
|
- CI 必过质量门
|
|
@@ -141,8 +180,16 @@ npm install
|
|
|
141
180
|
npm run typecheck
|
|
142
181
|
npm run test
|
|
143
182
|
npm run build
|
|
183
|
+
npm run benchmark:fidelity
|
|
144
184
|
```
|
|
145
185
|
|
|
186
|
+
## 工程模式
|
|
187
|
+
|
|
188
|
+
- 规则说明: [ENGINEERING_MODES.md](./ENGINEERING_MODES.md)
|
|
189
|
+
- 解析 API 支持:
|
|
190
|
+
- `parseDocxToHtmlSnapshot(file)`
|
|
191
|
+
- `parseDocxToHtmlSnapshotWithReport(file)`
|
|
192
|
+
|
|
146
193
|
## 演示
|
|
147
194
|
|
|
148
195
|
### React demo
|
|
@@ -165,6 +212,13 @@ npm run dev
|
|
|
165
212
|
|
|
166
213
|
执行优先级与验收标准见 [ROADMAP.md](./ROADMAP.md)。
|
|
167
214
|
|
|
215
|
+
## 发布与关联
|
|
216
|
+
|
|
217
|
+
- npmjs 发布工作流:`.github/workflows/publish.yml`
|
|
218
|
+
- GitHub Packages 发布工作流:`.github/workflows/publish-github-packages.yml`
|
|
219
|
+
- GitHub 侧栏 `Packages` 只显示发布到 GitHub Packages 的包,不显示 npmjs 包
|
|
220
|
+
- 当前 GitHub Packages 包名:`@fanly/docsjs`
|
|
221
|
+
|
|
168
222
|
## 安全说明
|
|
169
223
|
|
|
170
224
|
- 默认策略是保真优先,不主动清洗 Word 内联样式。
|