office-viewer 0.3.15 → 0.3.16
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/esm/Word.d.ts +4 -0
- package/esm/Word.js +34 -0
- package/esm/openxml/word/Note.d.ts +1 -0
- package/esm/openxml/word/Note.js +3 -0
- package/esm/openxml/word/Run.d.ts +6 -1
- package/esm/openxml/word/Run.js +14 -1
- package/esm/word/render/renderNotes.js +19 -0
- package/esm/word/render/renderRun.js +17 -1
- package/lib/Word.d.ts +4 -0
- package/lib/Word.js +34 -0
- package/lib/createOfficeViewer.d.ts +1 -1
- package/lib/excel/formula/builtinFunctions.d.ts +1 -1
- package/lib/excel/lang/lang.d.ts +1 -1
- package/lib/excel/render/dnd/mousedownColHeader.d.ts +1 -1
- package/lib/excel/render/dnd/mousedownRowHeader.d.ts +1 -1
- package/lib/openxml/word/Note.d.ts +1 -0
- package/lib/openxml/word/Note.js +3 -0
- package/lib/openxml/word/Run.d.ts +6 -1
- package/lib/openxml/word/Run.js +14 -0
- package/lib/package/XMLPackageParser.d.ts +1 -1
- package/lib/package/ZipPackageParser.d.ts +1 -1
- package/lib/word/parse/jcToTextAlign.d.ts +1 -1
- package/lib/word/render/renderNotes.js +19 -0
- package/lib/word/render/renderRun.js +16 -0
- package/package.json +6 -1
package/esm/Word.d.ts
CHANGED
|
@@ -170,6 +170,10 @@ export default class Word implements OfficeViewer {
|
|
|
170
170
|
currentParagraph: Paragraph;
|
|
171
171
|
footNotes: Record<string, Note>;
|
|
172
172
|
endNotes: Record<string, Note>;
|
|
173
|
+
/**
|
|
174
|
+
* 脚注/尾注 id 到显示序号的映射,key 为 type+'-'+id,value 为从 1 开始的序号
|
|
175
|
+
*/
|
|
176
|
+
noteIndexMap: Record<string, number>;
|
|
173
177
|
/**
|
|
174
178
|
* 当前页码
|
|
175
179
|
*/
|
package/esm/Word.js
CHANGED
|
@@ -77,6 +77,10 @@ var Word = /** @class */ (function () {
|
|
|
77
77
|
this.wrapClassName = 'docx-viewer-wrapper';
|
|
78
78
|
this.footNotes = {};
|
|
79
79
|
this.endNotes = {};
|
|
80
|
+
/**
|
|
81
|
+
* 脚注/尾注 id 到显示序号的映射,key 为 type+'-'+id,value 为从 1 开始的序号
|
|
82
|
+
*/
|
|
83
|
+
this.noteIndexMap = {};
|
|
80
84
|
this.inited = false;
|
|
81
85
|
/**
|
|
82
86
|
* 分页标记,如果为 true,那么在渲染的时候会强制分页
|
|
@@ -280,6 +284,29 @@ var Word = /** @class */ (function () {
|
|
|
280
284
|
}
|
|
281
285
|
finally { if (e_6) throw e_6.error; }
|
|
282
286
|
}
|
|
287
|
+
// Fallback: some docx files declare footnotes/endnotes via relationships
|
|
288
|
+
// rather than ContentTypes overrides (e.g., Word-generated files)
|
|
289
|
+
if (Object.keys(this.footNotes).length === 0 &&
|
|
290
|
+
this.parser.fileExists('/word/footnotes.xml')) {
|
|
291
|
+
this.footNotes = parseFootnotes(this, this.parser.getXML('/word/footnotes.xml'));
|
|
292
|
+
}
|
|
293
|
+
if (Object.keys(this.endNotes).length === 0 &&
|
|
294
|
+
this.parser.fileExists('/word/endnotes.xml')) {
|
|
295
|
+
this.endNotes = parseEndnotes(this, this.parser.getXML('/word/endnotes.xml'));
|
|
296
|
+
}
|
|
297
|
+
// 建立序号映射,供正文引用渲染使用
|
|
298
|
+
var fnIndex = 1;
|
|
299
|
+
for (var id in this.footNotes) {
|
|
300
|
+
if (id !== '0' && id !== '-1' && !this.footNotes[id].isEmpty()) {
|
|
301
|
+
this.noteIndexMap['footnote-' + id] = fnIndex++;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
var enIndex = 1;
|
|
305
|
+
for (var id in this.endNotes) {
|
|
306
|
+
if (id !== '0' && id !== '-1' && !this.endNotes[id].isEmpty()) {
|
|
307
|
+
this.noteIndexMap['endnote-' + id] = enIndex++;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
283
310
|
};
|
|
284
311
|
/**
|
|
285
312
|
* 获取全局关系
|
|
@@ -446,8 +473,14 @@ var Word = /** @class */ (function () {
|
|
|
446
473
|
return [];
|
|
447
474
|
}
|
|
448
475
|
var classNames = [this.getStyleIdDisplayName(stylId)];
|
|
476
|
+
if (stylId.match(/^[a-zA-Z]+[a-zA-Z0-9\-\_]*$/)) {
|
|
477
|
+
classNames.push('docx-' + stylId);
|
|
478
|
+
}
|
|
449
479
|
if (style.basedOn) {
|
|
450
480
|
classNames.unshift(this.getStyleIdDisplayName(style.basedOn));
|
|
481
|
+
if (style.basedOn.match(/^[a-zA-Z]+[a-zA-Z0-9\-\_]*$/)) {
|
|
482
|
+
classNames.push('docx-' + style.basedOn);
|
|
483
|
+
}
|
|
451
484
|
}
|
|
452
485
|
return classNames;
|
|
453
486
|
};
|
|
@@ -492,6 +525,7 @@ var Word = /** @class */ (function () {
|
|
|
492
525
|
*/
|
|
493
526
|
Word.prototype.addClass = function (element, className) {
|
|
494
527
|
element.classList.add("".concat(this.getClassPrefix(), "-").concat(className));
|
|
528
|
+
element.classList.add("docx-".concat(className));
|
|
495
529
|
};
|
|
496
530
|
/**
|
|
497
531
|
* 更新页面中的变量,这个要在 render 后运行
|
package/esm/openxml/word/Note.js
CHANGED
|
@@ -12,6 +12,9 @@ var Note = /** @class */ (function () {
|
|
|
12
12
|
Note.prototype.addChild = function (child) {
|
|
13
13
|
this.children.push(child);
|
|
14
14
|
};
|
|
15
|
+
Note.prototype.isEmpty = function () {
|
|
16
|
+
return this.children.length === 0;
|
|
17
|
+
};
|
|
15
18
|
Note.fromXML = function (word, element) {
|
|
16
19
|
var e_1, _a;
|
|
17
20
|
var note = new Note();
|
|
@@ -23,7 +23,12 @@ export declare class Text {
|
|
|
23
23
|
text: string;
|
|
24
24
|
constructor(text: string | number);
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
export declare class FootnoteRef {
|
|
27
|
+
id: string;
|
|
28
|
+
type: 'footnote' | 'endnote';
|
|
29
|
+
constructor(id: string, type: 'footnote' | 'endnote');
|
|
30
|
+
}
|
|
31
|
+
type RunChild = Break | Drawing | Text | Tab | Pict | Ruby | InstrText | Sym | SoftHyphen | Separator | NoBreakHyphen | FootnoteRef;
|
|
27
32
|
export declare class Run {
|
|
28
33
|
properties: RunPr;
|
|
29
34
|
children: RunChild[];
|
package/esm/openxml/word/Run.js
CHANGED
|
@@ -19,6 +19,13 @@ var Text = /** @class */ (function () {
|
|
|
19
19
|
}
|
|
20
20
|
return Text;
|
|
21
21
|
}());
|
|
22
|
+
var FootnoteRef = /** @class */ (function () {
|
|
23
|
+
function FootnoteRef(id, type) {
|
|
24
|
+
this.id = id;
|
|
25
|
+
this.type = type;
|
|
26
|
+
}
|
|
27
|
+
return FootnoteRef;
|
|
28
|
+
}());
|
|
22
29
|
var Run = /** @class */ (function () {
|
|
23
30
|
function Run() {
|
|
24
31
|
this.properties = {};
|
|
@@ -96,6 +103,12 @@ var Run = /** @class */ (function () {
|
|
|
96
103
|
case 'w:noBreakHyphen':
|
|
97
104
|
run.addChild(new NoBreakHyphen());
|
|
98
105
|
break;
|
|
106
|
+
case 'w:footnoteReference':
|
|
107
|
+
run.addChild(new FootnoteRef(child.getAttribute('w:id') || '', 'footnote'));
|
|
108
|
+
break;
|
|
109
|
+
case 'w:endnoteReference':
|
|
110
|
+
run.addChild(new FootnoteRef(child.getAttribute('w:id') || '', 'endnote'));
|
|
111
|
+
break;
|
|
99
112
|
case 'w:separator':
|
|
100
113
|
run.addChild(new Separator());
|
|
101
114
|
break;
|
|
@@ -119,4 +132,4 @@ var Run = /** @class */ (function () {
|
|
|
119
132
|
return Run;
|
|
120
133
|
}());
|
|
121
134
|
|
|
122
|
-
export { Run, Text };
|
|
135
|
+
export { FootnoteRef, Run, Text };
|
|
@@ -10,12 +10,23 @@ import renderTable from './renderTable.js';
|
|
|
10
10
|
*/
|
|
11
11
|
function renderNote(word, noteRoot, type, id, note) {
|
|
12
12
|
var e_1, _a;
|
|
13
|
+
var _b;
|
|
13
14
|
var noteChild = note.children;
|
|
14
15
|
var noteElement = createElement('div');
|
|
16
|
+
noteElement.style.display = 'flex';
|
|
17
|
+
noteElement.style.alignItems = 'baseline';
|
|
15
18
|
var mark = createElement('a');
|
|
16
19
|
var fName = type + '-' + id;
|
|
17
20
|
mark.name = fName;
|
|
18
21
|
mark.id = fName;
|
|
22
|
+
var index = (_b = word.noteIndexMap[fName]) !== null && _b !== void 0 ? _b : id;
|
|
23
|
+
var indexAnchor = createElement('a');
|
|
24
|
+
indexAnchor.style.flexShrink = '0';
|
|
25
|
+
indexAnchor.style.marginRight = '0.3em';
|
|
26
|
+
indexAnchor.style.textDecoration = 'none';
|
|
27
|
+
indexAnchor.textContent = '[' + String(index) + ']';
|
|
28
|
+
noteElement.appendChild(mark);
|
|
29
|
+
noteElement.appendChild(indexAnchor);
|
|
19
30
|
noteRoot.appendChild(noteElement);
|
|
20
31
|
try {
|
|
21
32
|
for (var noteChild_1 = __values(noteChild), noteChild_1_1 = noteChild_1.next(); !noteChild_1_1.done; noteChild_1_1 = noteChild_1.next()) {
|
|
@@ -58,11 +69,19 @@ function renderNotes(word) {
|
|
|
58
69
|
var noteRoot = createElement('div');
|
|
59
70
|
if (hasNote(word.footNotes)) {
|
|
60
71
|
for (var fId in word.footNotes) {
|
|
72
|
+
if (fId === '0' || fId === '-1')
|
|
73
|
+
continue;
|
|
74
|
+
if (word.footNotes[fId].isEmpty())
|
|
75
|
+
continue;
|
|
61
76
|
renderNote(word, noteRoot, 'footnote', fId, word.footNotes[fId]);
|
|
62
77
|
}
|
|
63
78
|
}
|
|
64
79
|
if (hasNote(word.endNotes)) {
|
|
65
80
|
for (var fId in word.endNotes || {}) {
|
|
81
|
+
if (fId === '0' || fId === '-1')
|
|
82
|
+
continue;
|
|
83
|
+
if (word.endNotes[fId].isEmpty())
|
|
84
|
+
continue;
|
|
66
85
|
renderNote(word, noteRoot, 'endnote', fId, word.endNotes[fId]);
|
|
67
86
|
}
|
|
68
87
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __values } from 'tslib';
|
|
2
2
|
import { renderBr } from './renderBr.js';
|
|
3
3
|
import { createElement, applyStyle, appendChild } from '../../util/dom.js';
|
|
4
|
-
import { Text } from '../../openxml/word/Run.js';
|
|
4
|
+
import { Text, FootnoteRef } from '../../openxml/word/Run.js';
|
|
5
5
|
import { Break } from '../../openxml/word/Break.js';
|
|
6
6
|
import { Drawing } from '../../openxml/drawing/Drawing.js';
|
|
7
7
|
import { renderDrawing } from './renderDrawing.js';
|
|
@@ -127,6 +127,22 @@ function renderRun(word, run, paragraph, inFldChar, inHeader) {
|
|
|
127
127
|
else if (child instanceof Separator) {
|
|
128
128
|
appendChild(span, renderSeparator());
|
|
129
129
|
}
|
|
130
|
+
else if (child instanceof FootnoteRef) {
|
|
131
|
+
var target = child.type + '-' + child.id;
|
|
132
|
+
var displayIndex = word.noteIndexMap[target];
|
|
133
|
+
// 如果脚注内容为空(不在映射中),不渲染引用
|
|
134
|
+
if (displayIndex == null)
|
|
135
|
+
break;
|
|
136
|
+
var anchor = createElement('a');
|
|
137
|
+
anchor.href = '#' + target;
|
|
138
|
+
anchor.style.verticalAlign = 'super';
|
|
139
|
+
anchor.style.fontSize = '0.75em';
|
|
140
|
+
anchor.style.textDecoration = 'none';
|
|
141
|
+
anchor.dataset.noteId = child.id;
|
|
142
|
+
anchor.dataset.noteType = child.type;
|
|
143
|
+
anchor.textContent = '[' + String(displayIndex) + ']';
|
|
144
|
+
appendChild(span, anchor);
|
|
145
|
+
}
|
|
130
146
|
else {
|
|
131
147
|
console.warn('unknown child', child);
|
|
132
148
|
}
|
package/lib/Word.d.ts
CHANGED
|
@@ -170,6 +170,10 @@ export default class Word implements OfficeViewer {
|
|
|
170
170
|
currentParagraph: Paragraph;
|
|
171
171
|
footNotes: Record<string, Note>;
|
|
172
172
|
endNotes: Record<string, Note>;
|
|
173
|
+
/**
|
|
174
|
+
* 脚注/尾注 id 到显示序号的映射,key 为 type+'-'+id,value 为从 1 开始的序号
|
|
175
|
+
*/
|
|
176
|
+
noteIndexMap: Record<string, number>;
|
|
173
177
|
/**
|
|
174
178
|
* 当前页码
|
|
175
179
|
*/
|
package/lib/Word.js
CHANGED
|
@@ -81,6 +81,10 @@ var Word = /** @class */ (function () {
|
|
|
81
81
|
this.wrapClassName = 'docx-viewer-wrapper';
|
|
82
82
|
this.footNotes = {};
|
|
83
83
|
this.endNotes = {};
|
|
84
|
+
/**
|
|
85
|
+
* 脚注/尾注 id 到显示序号的映射,key 为 type+'-'+id,value 为从 1 开始的序号
|
|
86
|
+
*/
|
|
87
|
+
this.noteIndexMap = {};
|
|
84
88
|
this.inited = false;
|
|
85
89
|
/**
|
|
86
90
|
* 分页标记,如果为 true,那么在渲染的时候会强制分页
|
|
@@ -284,6 +288,29 @@ var Word = /** @class */ (function () {
|
|
|
284
288
|
}
|
|
285
289
|
finally { if (e_6) throw e_6.error; }
|
|
286
290
|
}
|
|
291
|
+
// Fallback: some docx files declare footnotes/endnotes via relationships
|
|
292
|
+
// rather than ContentTypes overrides (e.g., Word-generated files)
|
|
293
|
+
if (Object.keys(this.footNotes).length === 0 &&
|
|
294
|
+
this.parser.fileExists('/word/footnotes.xml')) {
|
|
295
|
+
this.footNotes = Footnotes.parseFootnotes(this, this.parser.getXML('/word/footnotes.xml'));
|
|
296
|
+
}
|
|
297
|
+
if (Object.keys(this.endNotes).length === 0 &&
|
|
298
|
+
this.parser.fileExists('/word/endnotes.xml')) {
|
|
299
|
+
this.endNotes = parseEndnotes.parseEndnotes(this, this.parser.getXML('/word/endnotes.xml'));
|
|
300
|
+
}
|
|
301
|
+
// 建立序号映射,供正文引用渲染使用
|
|
302
|
+
var fnIndex = 1;
|
|
303
|
+
for (var id in this.footNotes) {
|
|
304
|
+
if (id !== '0' && id !== '-1' && !this.footNotes[id].isEmpty()) {
|
|
305
|
+
this.noteIndexMap['footnote-' + id] = fnIndex++;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
var enIndex = 1;
|
|
309
|
+
for (var id in this.endNotes) {
|
|
310
|
+
if (id !== '0' && id !== '-1' && !this.endNotes[id].isEmpty()) {
|
|
311
|
+
this.noteIndexMap['endnote-' + id] = enIndex++;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
287
314
|
};
|
|
288
315
|
/**
|
|
289
316
|
* 获取全局关系
|
|
@@ -450,8 +477,14 @@ var Word = /** @class */ (function () {
|
|
|
450
477
|
return [];
|
|
451
478
|
}
|
|
452
479
|
var classNames = [this.getStyleIdDisplayName(stylId)];
|
|
480
|
+
if (stylId.match(/^[a-zA-Z]+[a-zA-Z0-9\-\_]*$/)) {
|
|
481
|
+
classNames.push('docx-' + stylId);
|
|
482
|
+
}
|
|
453
483
|
if (style.basedOn) {
|
|
454
484
|
classNames.unshift(this.getStyleIdDisplayName(style.basedOn));
|
|
485
|
+
if (style.basedOn.match(/^[a-zA-Z]+[a-zA-Z0-9\-\_]*$/)) {
|
|
486
|
+
classNames.push('docx-' + style.basedOn);
|
|
487
|
+
}
|
|
455
488
|
}
|
|
456
489
|
return classNames;
|
|
457
490
|
};
|
|
@@ -496,6 +529,7 @@ var Word = /** @class */ (function () {
|
|
|
496
529
|
*/
|
|
497
530
|
Word.prototype.addClass = function (element, className) {
|
|
498
531
|
element.classList.add("".concat(this.getClassPrefix(), "-").concat(className));
|
|
532
|
+
element.classList.add("docx-".concat(className));
|
|
499
533
|
};
|
|
500
534
|
/**
|
|
501
535
|
* 更新页面中的变量,这个要在 render 后运行
|
|
@@ -13,4 +13,4 @@ import { PackageParser } from './package/PackageParser';
|
|
|
13
13
|
* @param parser 文件解析器,支持 zip 和 xml 两种,也可以扩展
|
|
14
14
|
* @returns OfficeViewer 实例
|
|
15
15
|
*/
|
|
16
|
-
export declare function createOfficeViewer(docFile: ArrayBuffer, renderOptions?: Partial<RenderOptions>, fileName?: string, parser?: PackageParser): Promise<Word |
|
|
16
|
+
export declare function createOfficeViewer(docFile: ArrayBuffer, renderOptions?: Partial<RenderOptions>, fileName?: string, parser?: PackageParser): Promise<Word | Excel | UnSupport>;
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* 内置函数列表
|
|
3
3
|
*/
|
|
4
4
|
export declare const builtinFunctions: readonly ["ABS", "ACCRINT", "ACCRINTM", "ACOS", "ACOSH", "ACOT", "ACOTH", "ADDRESS", "AGGREGATE", "AMORDEGRC", "AMORLINC", "AND", "ARABIC", "AREAS", "ARRAYTOTEXT", "ASC", "ASIN", "ASINH", "ATAN", "ATAN2", "ATANH", "AVEDEV", "AVERAGE", "AVERAGEA", "AVERAGEIF", "AVERAGEIFS", "BAHTTEXT", "BASE", "BESSELI", "BESSELJ", "BESSELK", "BESSELY", "BETA.DIST", "BETA.INV", "BETADIST", "BETAINV", "BIN2DEC", "BIN2HEX", "BIN2OCT", "BINOM.DIST", "BINOM.DIST.RANGE", "BINOM.INV", "BINOMDIST", "BITAND", "BITLSHIFT", "BITOR", "BITRSHIFT", "BITXOR", "CALL", "CEILING", "CEILING.MATH", "CEILING.PRECISE", "CELL", "CHAR", "CHIDIST", "CHIINV", "CHISQ.DIST", "CHISQ.DIST.RT", "CHISQ.INV", "CHISQ.INV.RT", "CHISQ.TEST", "CHITEST", "CLEAN", "CODE", "COLUMN", "COLUMNS", "COMBIN", "COMBINA", "COMPLEX", "CONCAT", "CONCATENATE", "CONFIDENCE", "CONFIDENCE.NORM", "CONFIDENCE.T", "CONVERT", "CORREL", "COS", "COSH", "COT", "COTH", "COUNT", "COUNTA", "COUNTBLANK", "COUNTIF", "COUNTIFS", "COUPDAYBS", "COUPDAYS", "COUPDAYSNC", "COUPNCD", "COUPNUM", "COUPPCD", "COVAR", "COVARIANCE.P", "COVARIANCE.S", "CRITBINOM", "CSC", "CSCH", "CUBEKPIMEMBER", "CUBEMEMBER", "CUBEMEMBERPROPERTY", "CUBERANKEDMEMBER", "CUBESET", "CUBESETCOUNT", "CUBEVALUE", "CUMIPMT", "CUMPRINC", "DATE", "DATEDIF", "DATEVALUE", "DAVERAGE", "DAY", "DAYS", "DAYS360", "DB", "DBCS", "DCOUNT", "DCOUNTA", "DDB", "DEC2BIN", "DEC2HEX", "DEC2OCT", "DECIMAL", "DEGREES", "DELTA", "DEVSQ", "DGET", "DISC", "DMAX", "DMIN", "DOLLAR", "DOLLARDE", "DOLLARFR", "DPRODUCT", "DSTDEV", "DSTDEVP", "DSUM", "DURATION", "DVAR", "DVARP", "EDATE", "EFFECT", "ENCODEURL", "EOMONTH", "ERF", "ERF.PRECISE", "ERFC", "ERFC.PRECISE", "ERROR.TYPE", "EUROCONVERT", "EVEN", "EXACT", "EXP", "EXPON.DIST", "EXPONDIST", "F.DIST", "F.DIST.RT", "F.INV", "F.INV.RT", "F.TEST", "FACT", "FACTDOUBLE", "FALSE", "FDIST", "FILTER", "FILTERXML", "FIND", "FINDB", "FINV", "FISHER", "FISHERINV", "FIXED", "FLOOR", "FLOOR.MATH", "FLOOR.PRECISE", "FORECAST", "FORECAST.ETS", "FORECAST.ETS.CONFINT", "FORECAST.ETS.SEASONALITY", "FORECAST.ETS.STAT", "FORECAST.LINEAR", "FORMULATEXT", "FREQUENCY", "FTEST", "FV", "FVSCHEDULE", "GAMMA", "GAMMA.DIST", "GAMMA.INV", "GAMMADIST", "GAMMAINV", "GAMMALN", "GAMMALN.PRECISE", "GAUSS", "GCD", "GEOMEAN", "GESTEP", "GETPIVOTDATA", "GROWTH", "HARMEAN", "HEX2BIN", "HEX2DEC", "HEX2OCT", "HLOOKUP", "HOUR", "HYPERLINK", "HYPGEOM.DIST", "HYPGEOMDIST", "IF", "IFERROR", "IFNA", "IFS", "IMABS", "IMAGINARY", "IMARGUMENT", "IMCONJUGATE", "IMCOS", "IMCOSH", "IMCOT", "IMCSC", "IMCSCH", "IMDIV", "IMEXP", "IMLN", "IMLOG10", "IMLOG2", "IMPOWER", "IMPRODUCT", "IMREAL", "IMSEC", "IMSECH", "IMSIN", "IMSINH", "IMSQRT", "IMSUB", "IMSUM", "IMTAN", "INFO", "INT", "INTERCEPT", "INTRATE", "IPMT", "IRR", "ISBLANK", "ISERR", "ISERROR", "ISEVEN", "ISFORMULA", "ISLOGICAL", "ISNA", "ISNONTEXT", "ISNUMBER", "ISO.CEILING", "ISODD", "ISOWEEKNUM", "ISPMT", "ISREF", "ISTEXT", "JIS", "KURT", "LARGE", "LCM", "LEFT", "LEFTB", "LEN", "LENB", "LET", "LINEST", "LN", "LOG", "LOG10", "LOGEST", "LOGINV", "LOGNORM.DIST", "LOGNORM.INV", "LOGNORMDIST", "LOOKUP", "LOWER", "MATCH", "MAX", "MAXA", "MAXIFS", "MDETERM", "MDURATION", "MEDIAN", "MID", "MIDB", "MIN", "MINA", "MINIFS", "MINUTE", "MINVERSE", "MIRR", "MMULT", "MOD", "MODE", "MODE.MULT", "MODE.SNGL", "MONTH", "MROUND", "MULTINOMIAL", "MUNIT", "N", "NA", "NEGBINOM.DIST", "NEGBINOMDIST", "NETWORKDAYS", "NETWORKDAYS.INTL", "NOMINAL", "NORM.DIST", "NORM.INV", "NORM.S.DIST", "NORM.S.INV", "NORMDIST", "NORMINV", "NORMSDIST", "NORMSINV", "NOT", "NOW", "NPER", "NPV", "NUMBERVALUE", "OCT2BIN", "OCT2DEC", "OCT2HEX", "ODD", "ODDFPRICE", "ODDFYIELD", "ODDLPRICE", "ODDLYIELD", "OR", "PDURATION", "PEARSON", "PERCENTILE", "PERCENTILE.EXC", "PERCENTILE.INC", "PERCENTRANK", "PERCENTRANK.EXC", "PERCENTRANK.INC", "PERMUT", "PERMUTATIONA", "PHI", "PHONETIC", "PI", "PMT", "POISSON", "POISSON.DIST", "POWER", "PPMT", "PRICE", "PRICEDISC", "PRICEMAT", "PROB", "PRODUCT", "PROPER", "PV", "QUARTILE", "QUARTILE.EXC", "QUARTILE.INC", "QUOTIENT", "RADIANS", "RAND", "RANDARRAY", "RANDBETWEEN", "RANK", "RANK.AVG", "RANK.EQ", "RATE", "RECEIVED", "REGISTER.ID", "REPLACE", "REPLACEB", "REPT", "RIGHT", "RIGHTB", "ROMAN", "ROUND", "ROUNDDOWN", "ROUNDUP", "ROW", "ROWS", "RRI", "RSQ", "RTD", "SEARCH", "SEARCHB", "SEC", "SECH", "SECOND", "SEQUENCE", "SERIESSUM", "SHEET", "SHEETS", "SIGN", "SIN", "SINH", "SKEW", "SKEW.P", "SLN", "SLOPE", "SMALL", "SORT", "SORTBY", "SQRT", "SQRTPI", "STANDARDIZE", "STDEV", "STDEV.P", "STDEV.S", "STDEVA", "STDEVP", "STDEVPA", "STEYX", "SUBSTITUTE", "SUBTOTAL", "SUM", "SUMIF", "SUMIFS", "SUMPRODUCT", "SUMSQ", "SUMX2MY2", "SUMX2PY2", "SUMXMY2", "SWITCH", "SYD", "T", "T.DIST", "T.DIST.2T", "T.DIST.RT", "T.INV", "T.INV.2T", "T.TEST", "TAN", "TANH", "TBILLEQ", "TBILLPRICE", "TBILLYIELD", "TDIST", "TEXT", "TEXTJOIN", "TIME", "TIMEVALUE", "TINV", "TODAY", "TRANSPOSE", "TREND", "TRIM", "TRIMMEAN", "TRUE", "TRUNC", "TTEST", "TYPE", "UNICHAR", "UNICODE", "UNIQUE", "UPPER", "VALUE", "VALUETOTEXT", "VAR", "VAR.P", "VAR.S", "VARA", "VARP", "VARPA", "VDB", "VLOOKUP", "WEBSERVICE", "WEEKDAY", "WEEKNUM", "WEIBULL", "WEIBULL.DIST", "WORKDAY", "WORKDAY.INTL", "XIRR", "XLOOKUP", "XMATCH", "XNPV", "XOR", "YEAR", "YEARFRAC", "YIELD", "YIELDDISC", "YIELDMAT", "Z.TEST", "ZTEST"];
|
|
5
|
-
export declare const builtinFunctionSet: Set<"
|
|
5
|
+
export declare const builtinFunctionSet: Set<"SUM" | "NA" | "SHEET" | "CELL" | "CONCAT" | "ABS" | "ACCRINT" | "ACCRINTM" | "ACOS" | "ACOSH" | "ACOT" | "ACOTH" | "ADDRESS" | "AGGREGATE" | "AMORDEGRC" | "AMORLINC" | "AND" | "ARABIC" | "AREAS" | "ARRAYTOTEXT" | "ASC" | "ASIN" | "ASINH" | "ATAN" | "ATAN2" | "ATANH" | "AVEDEV" | "AVERAGE" | "AVERAGEA" | "AVERAGEIF" | "AVERAGEIFS" | "BAHTTEXT" | "BASE" | "BESSELI" | "BESSELJ" | "BESSELK" | "BESSELY" | "BETA.DIST" | "BETA.INV" | "BETADIST" | "BETAINV" | "BIN2DEC" | "BIN2HEX" | "BIN2OCT" | "BINOM.DIST" | "BINOM.DIST.RANGE" | "BINOM.INV" | "BINOMDIST" | "BITAND" | "BITLSHIFT" | "BITOR" | "BITRSHIFT" | "BITXOR" | "CALL" | "CEILING" | "CEILING.MATH" | "CEILING.PRECISE" | "CHAR" | "CHIDIST" | "CHIINV" | "CHISQ.DIST" | "CHISQ.DIST.RT" | "CHISQ.INV" | "CHISQ.INV.RT" | "CHISQ.TEST" | "CHITEST" | "CLEAN" | "CODE" | "COLUMN" | "COLUMNS" | "COMBIN" | "COMBINA" | "COMPLEX" | "CONCATENATE" | "CONFIDENCE" | "CONFIDENCE.NORM" | "CONFIDENCE.T" | "CONVERT" | "CORREL" | "COS" | "COSH" | "COT" | "COTH" | "COUNT" | "COUNTA" | "COUNTBLANK" | "COUNTIF" | "COUNTIFS" | "COUPDAYBS" | "COUPDAYS" | "COUPDAYSNC" | "COUPNCD" | "COUPNUM" | "COUPPCD" | "COVAR" | "COVARIANCE.P" | "COVARIANCE.S" | "CRITBINOM" | "CSC" | "CSCH" | "CUBEKPIMEMBER" | "CUBEMEMBER" | "CUBEMEMBERPROPERTY" | "CUBERANKEDMEMBER" | "CUBESET" | "CUBESETCOUNT" | "CUBEVALUE" | "CUMIPMT" | "CUMPRINC" | "DATE" | "DATEDIF" | "DATEVALUE" | "DAVERAGE" | "DAY" | "DAYS" | "DAYS360" | "DB" | "DBCS" | "DCOUNT" | "DCOUNTA" | "DDB" | "DEC2BIN" | "DEC2HEX" | "DEC2OCT" | "DECIMAL" | "DEGREES" | "DELTA" | "DEVSQ" | "DGET" | "DISC" | "DMAX" | "DMIN" | "DOLLAR" | "DOLLARDE" | "DOLLARFR" | "DPRODUCT" | "DSTDEV" | "DSTDEVP" | "DSUM" | "DURATION" | "DVAR" | "DVARP" | "EDATE" | "EFFECT" | "ENCODEURL" | "EOMONTH" | "ERF" | "ERF.PRECISE" | "ERFC" | "ERFC.PRECISE" | "ERROR.TYPE" | "EUROCONVERT" | "EVEN" | "EXACT" | "EXP" | "EXPON.DIST" | "EXPONDIST" | "F.DIST" | "F.DIST.RT" | "F.INV" | "F.INV.RT" | "F.TEST" | "FACT" | "FACTDOUBLE" | "FALSE" | "FDIST" | "FILTER" | "FILTERXML" | "FIND" | "FINDB" | "FINV" | "FISHER" | "FISHERINV" | "FIXED" | "FLOOR" | "FLOOR.MATH" | "FLOOR.PRECISE" | "FORECAST" | "FORECAST.ETS" | "FORECAST.ETS.CONFINT" | "FORECAST.ETS.SEASONALITY" | "FORECAST.ETS.STAT" | "FORECAST.LINEAR" | "FORMULATEXT" | "FREQUENCY" | "FTEST" | "FV" | "FVSCHEDULE" | "GAMMA" | "GAMMA.DIST" | "GAMMA.INV" | "GAMMADIST" | "GAMMAINV" | "GAMMALN" | "GAMMALN.PRECISE" | "GAUSS" | "GCD" | "GEOMEAN" | "GESTEP" | "GETPIVOTDATA" | "GROWTH" | "HARMEAN" | "HEX2BIN" | "HEX2DEC" | "HEX2OCT" | "HLOOKUP" | "HOUR" | "HYPERLINK" | "HYPGEOM.DIST" | "HYPGEOMDIST" | "IF" | "IFERROR" | "IFNA" | "IFS" | "IMABS" | "IMAGINARY" | "IMARGUMENT" | "IMCONJUGATE" | "IMCOS" | "IMCOSH" | "IMCOT" | "IMCSC" | "IMCSCH" | "IMDIV" | "IMEXP" | "IMLN" | "IMLOG10" | "IMLOG2" | "IMPOWER" | "IMPRODUCT" | "IMREAL" | "IMSEC" | "IMSECH" | "IMSIN" | "IMSINH" | "IMSQRT" | "IMSUB" | "IMSUM" | "IMTAN" | "INFO" | "INT" | "INTERCEPT" | "INTRATE" | "IPMT" | "IRR" | "ISBLANK" | "ISERR" | "ISERROR" | "ISEVEN" | "ISFORMULA" | "ISLOGICAL" | "ISNA" | "ISNONTEXT" | "ISNUMBER" | "ISO.CEILING" | "ISODD" | "ISOWEEKNUM" | "ISPMT" | "ISREF" | "ISTEXT" | "JIS" | "KURT" | "LARGE" | "LCM" | "LEFT" | "LEFTB" | "LEN" | "LENB" | "LET" | "LINEST" | "LN" | "LOG" | "LOG10" | "LOGEST" | "LOGINV" | "LOGNORM.DIST" | "LOGNORM.INV" | "LOGNORMDIST" | "LOOKUP" | "LOWER" | "MATCH" | "MAX" | "MAXA" | "MAXIFS" | "MDETERM" | "MDURATION" | "MEDIAN" | "MID" | "MIDB" | "MIN" | "MINA" | "MINIFS" | "MINUTE" | "MINVERSE" | "MIRR" | "MMULT" | "MOD" | "MODE" | "MODE.MULT" | "MODE.SNGL" | "MONTH" | "MROUND" | "MULTINOMIAL" | "MUNIT" | "N" | "NEGBINOM.DIST" | "NEGBINOMDIST" | "NETWORKDAYS" | "NETWORKDAYS.INTL" | "NOMINAL" | "NORM.DIST" | "NORM.INV" | "NORM.S.DIST" | "NORM.S.INV" | "NORMDIST" | "NORMINV" | "NORMSDIST" | "NORMSINV" | "NOT" | "NOW" | "NPER" | "NPV" | "NUMBERVALUE" | "OCT2BIN" | "OCT2DEC" | "OCT2HEX" | "ODD" | "ODDFPRICE" | "ODDFYIELD" | "ODDLPRICE" | "ODDLYIELD" | "OR" | "PDURATION" | "PEARSON" | "PERCENTILE" | "PERCENTILE.EXC" | "PERCENTILE.INC" | "PERCENTRANK" | "PERCENTRANK.EXC" | "PERCENTRANK.INC" | "PERMUT" | "PERMUTATIONA" | "PHI" | "PHONETIC" | "PI" | "PMT" | "POISSON" | "POISSON.DIST" | "POWER" | "PPMT" | "PRICE" | "PRICEDISC" | "PRICEMAT" | "PROB" | "PRODUCT" | "PROPER" | "PV" | "QUARTILE" | "QUARTILE.EXC" | "QUARTILE.INC" | "QUOTIENT" | "RADIANS" | "RAND" | "RANDARRAY" | "RANDBETWEEN" | "RANK" | "RANK.AVG" | "RANK.EQ" | "RATE" | "RECEIVED" | "REGISTER.ID" | "REPLACE" | "REPLACEB" | "REPT" | "RIGHT" | "RIGHTB" | "ROMAN" | "ROUND" | "ROUNDDOWN" | "ROUNDUP" | "ROW" | "ROWS" | "RRI" | "RSQ" | "RTD" | "SEARCH" | "SEARCHB" | "SEC" | "SECH" | "SECOND" | "SEQUENCE" | "SERIESSUM" | "SHEETS" | "SIGN" | "SIN" | "SINH" | "SKEW" | "SKEW.P" | "SLN" | "SLOPE" | "SMALL" | "SORT" | "SORTBY" | "SQRT" | "SQRTPI" | "STANDARDIZE" | "STDEV" | "STDEV.P" | "STDEV.S" | "STDEVA" | "STDEVP" | "STDEVPA" | "STEYX" | "SUBSTITUTE" | "SUBTOTAL" | "SUMIF" | "SUMIFS" | "SUMPRODUCT" | "SUMSQ" | "SUMX2MY2" | "SUMX2PY2" | "SUMXMY2" | "SWITCH" | "SYD" | "T" | "T.DIST" | "T.DIST.2T" | "T.DIST.RT" | "T.INV" | "T.INV.2T" | "T.TEST" | "TAN" | "TANH" | "TBILLEQ" | "TBILLPRICE" | "TBILLYIELD" | "TDIST" | "TEXT" | "TEXTJOIN" | "TIME" | "TIMEVALUE" | "TINV" | "TODAY" | "TRANSPOSE" | "TREND" | "TRIM" | "TRIMMEAN" | "TRUE" | "TRUNC" | "TTEST" | "TYPE" | "UNICHAR" | "UNICODE" | "UNIQUE" | "UPPER" | "VALUE" | "VALUETOTEXT" | "VAR" | "VAR.P" | "VAR.S" | "VARA" | "VARP" | "VARPA" | "VDB" | "VLOOKUP" | "WEBSERVICE" | "WEEKDAY" | "WEEKNUM" | "WEIBULL" | "WEIBULL.DIST" | "WORKDAY" | "WORKDAY.INTL" | "XIRR" | "XLOOKUP" | "XMATCH" | "XNPV" | "XOR" | "YEAR" | "YEARFRAC" | "YIELD" | "YIELDDISC" | "YIELDMAT" | "Z.TEST" | "ZTEST">;
|
|
6
6
|
export type FunctionName = (typeof builtinFunctions)[number];
|
package/lib/excel/lang/lang.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ declare const languages: {
|
|
|
23
23
|
count: string;
|
|
24
24
|
sum: string;
|
|
25
25
|
};
|
|
26
|
-
zh_CN: Record<"
|
|
26
|
+
zh_CN: Record<"autoFilter.sortAscending" | "autoFilter.sortDescending" | "checkBox.selectAll" | "checkBox.search" | "customFilter.equal" | "customFilter.notEqual" | "customFilter.greaterThan" | "customFilter.greaterThanOrEqual" | "customFilter.lessThan" | "customFilter.lessThanOrEqual" | "customFilter.beginsWith" | "customFilter.notBeginsWith" | "customFilter.endsWith" | "customFilter.notEndsWith" | "customFilter.contains" | "customFilter.notContains" | "customFilter.and" | "customFilter.or" | "average" | "count" | "sum", string>;
|
|
27
27
|
};
|
|
28
28
|
export type Language = keyof typeof languages;
|
|
29
29
|
export declare function getTranslate(language: string): (key: EnKeys) => string;
|
|
@@ -10,7 +10,7 @@ import { HitTestResult } from '../selection/hitTest';
|
|
|
10
10
|
export declare function mousedownColHeader(workbook: Workbook, hitTestResult: HitTestResult): {
|
|
11
11
|
user: string;
|
|
12
12
|
region: import("../../sheet/ViewRange").Region;
|
|
13
|
-
selectType: "
|
|
13
|
+
selectType: "drawing" | "corner" | "cell" | "row-header" | "col-header" | "row-grid" | "col-grid";
|
|
14
14
|
activeCell: RangeRef;
|
|
15
15
|
sheetIndex: number;
|
|
16
16
|
cellRanges: {
|
|
@@ -10,7 +10,7 @@ import { HitTestResult } from '../selection/hitTest';
|
|
|
10
10
|
export declare function mousedownRowHeader(workbook: Workbook, hitTestResult: HitTestResult): {
|
|
11
11
|
user: string;
|
|
12
12
|
region: import("../../sheet/ViewRange").Region;
|
|
13
|
-
selectType: "
|
|
13
|
+
selectType: "drawing" | "corner" | "cell" | "row-header" | "col-header" | "row-grid" | "col-grid";
|
|
14
14
|
activeCell: RangeRef;
|
|
15
15
|
sheetIndex: number;
|
|
16
16
|
cellRanges: {
|
package/lib/openxml/word/Note.js
CHANGED
|
@@ -16,6 +16,9 @@ var Note = /** @class */ (function () {
|
|
|
16
16
|
Note.prototype.addChild = function (child) {
|
|
17
17
|
this.children.push(child);
|
|
18
18
|
};
|
|
19
|
+
Note.prototype.isEmpty = function () {
|
|
20
|
+
return this.children.length === 0;
|
|
21
|
+
};
|
|
19
22
|
Note.fromXML = function (word, element) {
|
|
20
23
|
var e_1, _a;
|
|
21
24
|
var note = new Note();
|
|
@@ -23,7 +23,12 @@ export declare class Text {
|
|
|
23
23
|
text: string;
|
|
24
24
|
constructor(text: string | number);
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
export declare class FootnoteRef {
|
|
27
|
+
id: string;
|
|
28
|
+
type: 'footnote' | 'endnote';
|
|
29
|
+
constructor(id: string, type: 'footnote' | 'endnote');
|
|
30
|
+
}
|
|
31
|
+
type RunChild = Break | Drawing | Text | Tab | Pict | Ruby | InstrText | Sym | SoftHyphen | Separator | NoBreakHyphen | FootnoteRef;
|
|
27
32
|
export declare class Run {
|
|
28
33
|
properties: RunPr;
|
|
29
34
|
children: RunChild[];
|
package/lib/openxml/word/Run.js
CHANGED
|
@@ -23,6 +23,13 @@ var Text = /** @class */ (function () {
|
|
|
23
23
|
}
|
|
24
24
|
return Text;
|
|
25
25
|
}());
|
|
26
|
+
var FootnoteRef = /** @class */ (function () {
|
|
27
|
+
function FootnoteRef(id, type) {
|
|
28
|
+
this.id = id;
|
|
29
|
+
this.type = type;
|
|
30
|
+
}
|
|
31
|
+
return FootnoteRef;
|
|
32
|
+
}());
|
|
26
33
|
var Run = /** @class */ (function () {
|
|
27
34
|
function Run() {
|
|
28
35
|
this.properties = {};
|
|
@@ -100,6 +107,12 @@ var Run = /** @class */ (function () {
|
|
|
100
107
|
case 'w:noBreakHyphen':
|
|
101
108
|
run.addChild(new NoBreakHyphen.NoBreakHyphen());
|
|
102
109
|
break;
|
|
110
|
+
case 'w:footnoteReference':
|
|
111
|
+
run.addChild(new FootnoteRef(child.getAttribute('w:id') || '', 'footnote'));
|
|
112
|
+
break;
|
|
113
|
+
case 'w:endnoteReference':
|
|
114
|
+
run.addChild(new FootnoteRef(child.getAttribute('w:id') || '', 'endnote'));
|
|
115
|
+
break;
|
|
103
116
|
case 'w:separator':
|
|
104
117
|
run.addChild(new Separator.Separator());
|
|
105
118
|
break;
|
|
@@ -123,5 +136,6 @@ var Run = /** @class */ (function () {
|
|
|
123
136
|
return Run;
|
|
124
137
|
}());
|
|
125
138
|
|
|
139
|
+
exports.FootnoteRef = FootnoteRef;
|
|
126
140
|
exports.Run = Run;
|
|
127
141
|
exports.Text = Text;
|
|
@@ -20,7 +20,7 @@ export default class XMLPackageParser implements PackageParser {
|
|
|
20
20
|
/**
|
|
21
21
|
* 在 xml 下基本不用这个
|
|
22
22
|
*/
|
|
23
|
-
getFileByType(filePath: string, type: 'string' | 'blob'): string |
|
|
23
|
+
getFileByType(filePath: string, type: 'string' | 'blob'): string | Blob | Uint8Array | null;
|
|
24
24
|
/**
|
|
25
25
|
* 读取文本内容
|
|
26
26
|
*/
|
|
@@ -18,7 +18,7 @@ export default class ZipPackageParser implements PackageParser {
|
|
|
18
18
|
/**
|
|
19
19
|
* 根据类型读取文件
|
|
20
20
|
*/
|
|
21
|
-
getFileByType(filePath: string, type?: 'string' | 'blob' | 'uint8array'): string |
|
|
21
|
+
getFileByType(filePath: string, type?: 'string' | 'blob' | 'uint8array'): string | Blob | Uint8Array | null;
|
|
22
22
|
/**
|
|
23
23
|
* 读取文本内容
|
|
24
24
|
*/
|
|
@@ -14,12 +14,23 @@ var renderTable = require('./renderTable.js');
|
|
|
14
14
|
*/
|
|
15
15
|
function renderNote(word, noteRoot, type, id, note) {
|
|
16
16
|
var e_1, _a;
|
|
17
|
+
var _b;
|
|
17
18
|
var noteChild = note.children;
|
|
18
19
|
var noteElement = dom.createElement('div');
|
|
20
|
+
noteElement.style.display = 'flex';
|
|
21
|
+
noteElement.style.alignItems = 'baseline';
|
|
19
22
|
var mark = dom.createElement('a');
|
|
20
23
|
var fName = type + '-' + id;
|
|
21
24
|
mark.name = fName;
|
|
22
25
|
mark.id = fName;
|
|
26
|
+
var index = (_b = word.noteIndexMap[fName]) !== null && _b !== void 0 ? _b : id;
|
|
27
|
+
var indexAnchor = dom.createElement('a');
|
|
28
|
+
indexAnchor.style.flexShrink = '0';
|
|
29
|
+
indexAnchor.style.marginRight = '0.3em';
|
|
30
|
+
indexAnchor.style.textDecoration = 'none';
|
|
31
|
+
indexAnchor.textContent = '[' + String(index) + ']';
|
|
32
|
+
noteElement.appendChild(mark);
|
|
33
|
+
noteElement.appendChild(indexAnchor);
|
|
23
34
|
noteRoot.appendChild(noteElement);
|
|
24
35
|
try {
|
|
25
36
|
for (var noteChild_1 = tslib.__values(noteChild), noteChild_1_1 = noteChild_1.next(); !noteChild_1_1.done; noteChild_1_1 = noteChild_1.next()) {
|
|
@@ -62,11 +73,19 @@ function renderNotes(word) {
|
|
|
62
73
|
var noteRoot = dom.createElement('div');
|
|
63
74
|
if (hasNote(word.footNotes)) {
|
|
64
75
|
for (var fId in word.footNotes) {
|
|
76
|
+
if (fId === '0' || fId === '-1')
|
|
77
|
+
continue;
|
|
78
|
+
if (word.footNotes[fId].isEmpty())
|
|
79
|
+
continue;
|
|
65
80
|
renderNote(word, noteRoot, 'footnote', fId, word.footNotes[fId]);
|
|
66
81
|
}
|
|
67
82
|
}
|
|
68
83
|
if (hasNote(word.endNotes)) {
|
|
69
84
|
for (var fId in word.endNotes || {}) {
|
|
85
|
+
if (fId === '0' || fId === '-1')
|
|
86
|
+
continue;
|
|
87
|
+
if (word.endNotes[fId].isEmpty())
|
|
88
|
+
continue;
|
|
70
89
|
renderNote(word, noteRoot, 'endnote', fId, word.endNotes[fId]);
|
|
71
90
|
}
|
|
72
91
|
}
|
|
@@ -131,6 +131,22 @@ function renderRun(word, run, paragraph, inFldChar, inHeader) {
|
|
|
131
131
|
else if (child instanceof Separator.Separator) {
|
|
132
132
|
dom.appendChild(span, renderSeparator.renderSeparator());
|
|
133
133
|
}
|
|
134
|
+
else if (child instanceof Run.FootnoteRef) {
|
|
135
|
+
var target = child.type + '-' + child.id;
|
|
136
|
+
var displayIndex = word.noteIndexMap[target];
|
|
137
|
+
// 如果脚注内容为空(不在映射中),不渲染引用
|
|
138
|
+
if (displayIndex == null)
|
|
139
|
+
break;
|
|
140
|
+
var anchor = dom.createElement('a');
|
|
141
|
+
anchor.href = '#' + target;
|
|
142
|
+
anchor.style.verticalAlign = 'super';
|
|
143
|
+
anchor.style.fontSize = '0.75em';
|
|
144
|
+
anchor.style.textDecoration = 'none';
|
|
145
|
+
anchor.dataset.noteId = child.id;
|
|
146
|
+
anchor.dataset.noteType = child.type;
|
|
147
|
+
anchor.textContent = '[' + String(displayIndex) + ']';
|
|
148
|
+
dom.appendChild(span, anchor);
|
|
149
|
+
}
|
|
134
150
|
else {
|
|
135
151
|
console.warn('unknown child', child);
|
|
136
152
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "office-viewer",
|
|
3
|
-
"
|
|
3
|
+
"repository": {
|
|
4
|
+
"type": "git",
|
|
5
|
+
"url": "https://github.com/baidu/amis-inner.git"
|
|
6
|
+
},
|
|
7
|
+
"version": "0.3.16",
|
|
4
8
|
"description": "office 文档在线预览",
|
|
5
9
|
"main": "lib/index.js",
|
|
6
10
|
"module": "esm/index.js",
|
|
@@ -77,6 +81,7 @@
|
|
|
77
81
|
"amis-formula": "^2.7.2",
|
|
78
82
|
"jest": "^29.0.3",
|
|
79
83
|
"jest-environment-jsdom": "^29.0.3",
|
|
84
|
+
"puppeteer": "^22.8.0",
|
|
80
85
|
"rollup": "^2.60.2",
|
|
81
86
|
"rollup-plugin-terser": "^7.0.2",
|
|
82
87
|
"sass": "^1.69.7",
|