@coding01/docsjs 0.1.5 → 0.1.7
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 +57 -28
- package/README.zh-CN.md +56 -27
- package/dist/index.cjs +26 -2265
- package/dist/index.d.ts +44 -3
- package/dist/index.js +60 -75
- package/dist/react.cjs +1 -2264
- package/dist/react.d.ts +3 -2
- package/dist/react.js +1 -41
- package/dist/{types-DF14w1ol.d.cts → types-BgP7Zasj.d.ts} +19 -0
- package/dist/vue.cjs +1 -2267
- package/dist/vue.d.ts +1 -1
- package/dist/vue.js +1 -44
- package/package.json +7 -3
- package/dist/chunk-IBVWD4UO.js +0 -2193
- package/dist/chunk-IBVWD4UO.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -73
- package/dist/index.js.map +0 -1
- package/dist/react.cjs.map +0 -1
- package/dist/react.d.cts +0 -16
- package/dist/react.js.map +0 -1
- package/dist/types-DF14w1ol.d.ts +0 -20
- package/dist/vue.cjs.map +0 -1
- package/dist/vue.d.cts +0 -24
- package/dist/vue.js.map +0 -1
package/README.md
CHANGED
|
@@ -6,9 +6,16 @@ Import Word/WPS/Google Docs content from paste or `.docx` while preserving struc
|
|
|
6
6
|
[](https://www.npmjs.com/package/@coding01/docsjs)
|
|
7
7
|
[](https://www.npmjs.com/package/@coding01/docsjs)
|
|
8
8
|
[](https://github.com/fanly/docsjs/actions/workflows/ci.yml)
|
|
9
|
+
[](https://github.com/fanly/docsjs/actions/workflows/pages.yml)
|
|
9
10
|
|
|
10
11
|
[中文文档](./README.zh-CN.md)
|
|
11
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
|
+
|
|
12
19
|
## What You Get
|
|
13
20
|
|
|
14
21
|
- Web Component core: `docs-word-editor`
|
|
@@ -74,7 +81,7 @@ el.addEventListener("docsjs-change", (e) => {
|
|
|
74
81
|
### Events
|
|
75
82
|
|
|
76
83
|
- `docsjs-change`
|
|
77
|
-
- payload: `{ htmlSnapshot: string; source: "paste" | "upload" | "api" | "clear"; fileName?: string }`
|
|
84
|
+
- payload: `{ htmlSnapshot: string; source: "paste" | "upload" | "api" | "clear"; fileName?: string; parseReport?: DocxParseReport }`
|
|
78
85
|
- `docsjs-error`
|
|
79
86
|
- payload: `{ message: string }`
|
|
80
87
|
- `docsjs-ready`
|
|
@@ -95,34 +102,49 @@ el.addEventListener("docsjs-change", (e) => {
|
|
|
95
102
|
|
|
96
103
|
## Feature Checklist
|
|
97
104
|
|
|
105
|
+
<!-- GENERATED:FEATURE_CHECKLIST_EN:START -->
|
|
106
|
+
### Core
|
|
107
|
+
|
|
98
108
|
- ✅ Web Component core (`docs-word-editor`)
|
|
99
|
-
- ✅ React adapter
|
|
100
|
-
- ✅
|
|
101
|
-
- ✅
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
- ✅
|
|
106
|
-
- ✅
|
|
107
|
-
- ✅
|
|
108
|
-
- ✅
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
- ✅
|
|
113
|
-
- ✅
|
|
114
|
-
- ✅
|
|
115
|
-
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
- ✅
|
|
120
|
-
- ✅
|
|
121
|
-
- ✅
|
|
122
|
-
- ✅
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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 -->
|
|
126
148
|
|
|
127
149
|
## What's New in v0.1.3
|
|
128
150
|
|
|
@@ -166,6 +188,13 @@ npm run build
|
|
|
166
188
|
npm run benchmark:fidelity
|
|
167
189
|
```
|
|
168
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
|
+
|
|
169
198
|
## Demos
|
|
170
199
|
|
|
171
200
|
### React demo
|
package/README.zh-CN.md
CHANGED
|
@@ -6,9 +6,16 @@
|
|
|
6
6
|
[](https://www.npmjs.com/package/@coding01/docsjs)
|
|
7
7
|
[](https://www.npmjs.com/package/@coding01/docsjs)
|
|
8
8
|
[](https://github.com/fanly/docsjs/actions/workflows/ci.yml)
|
|
9
|
+
[](https://github.com/fanly/docsjs/actions/workflows/pages.yml)
|
|
9
10
|
|
|
10
11
|
[English README](./README.md)
|
|
11
12
|
|
|
13
|
+
## GitHub Pages
|
|
14
|
+
|
|
15
|
+
- 产品单页: [https://docsjs.coding01.cn/](https://docsjs.coding01.cn/)
|
|
16
|
+
- 页面源码: `docs/index.html`
|
|
17
|
+
- 自动部署: `.github/workflows/pages.yml`
|
|
18
|
+
|
|
12
19
|
## 核心能力
|
|
13
20
|
|
|
14
21
|
- Web Component 内核:`docs-word-editor`
|
|
@@ -90,34 +97,49 @@ document.body.appendChild(el);
|
|
|
90
97
|
|
|
91
98
|
## 功能清单
|
|
92
99
|
|
|
100
|
+
<!-- GENERATED:FEATURE_CHECKLIST_ZH:START -->
|
|
101
|
+
### 核心
|
|
102
|
+
|
|
93
103
|
- ✅ Web Component 内核(`docs-word-editor`)
|
|
94
|
-
- ✅ React
|
|
95
|
-
- ✅
|
|
96
|
-
- ✅
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
- ✅
|
|
101
|
-
- ✅
|
|
102
|
-
- ✅
|
|
103
|
-
- ✅
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
- ✅
|
|
108
|
-
- ✅
|
|
109
|
-
- ✅
|
|
110
|
-
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
- ✅
|
|
115
|
-
- ✅
|
|
116
|
-
- ✅
|
|
117
|
-
- ✅
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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 -->
|
|
121
143
|
|
|
122
144
|
## v0.1.3 更新内容
|
|
123
145
|
|
|
@@ -161,6 +183,13 @@ npm run build
|
|
|
161
183
|
npm run benchmark:fidelity
|
|
162
184
|
```
|
|
163
185
|
|
|
186
|
+
## 工程模式
|
|
187
|
+
|
|
188
|
+
- 规则说明: [ENGINEERING_MODES.md](./ENGINEERING_MODES.md)
|
|
189
|
+
- 解析 API 支持:
|
|
190
|
+
- `parseDocxToHtmlSnapshot(file)`
|
|
191
|
+
- `parseDocxToHtmlSnapshotWithReport(file)`
|
|
192
|
+
|
|
164
193
|
## 演示
|
|
165
194
|
|
|
166
195
|
### React demo
|