office-viewer 0.3.1 → 0.3.4

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 CHANGED
@@ -1,12 +1,12 @@
1
1
  # 说明
2
2
 
3
- docxexcel 渲染器
3
+ WordExcel 渲染器,目前接口还未完全稳定,新版可能会修改,请参考 examples
4
4
 
5
- ## docx 渲染
5
+ ## Word 渲染
6
6
 
7
7
  ### 原理
8
8
 
9
- docx 渲染器,原理是将 docx 里的 xml 格式转成 html
9
+ Word 渲染器,原理是将 docx 里的 xml 格式转成 html
10
10
 
11
11
  相对于 Canvas 渲染,这个实现方案比较简单,最终页面也可以很方便复制,但无法保证和原始 docx 文件展现一致,因为有部分功能难以在 HTML 中实现,比如图文环绕效果。
12
12
 
@@ -29,7 +29,7 @@ docx 渲染器,原理是将 docx 里的 xml 格式转成 html
29
29
  - [docx](https://github.com/dolanmiu/docx) 的类型定义
30
30
  - [docxjs](https://github.com/zVolodymyr/docxjs) 里格式的实现
31
31
 
32
- ## xlsx 渲染
32
+ ## Excel 渲染
33
33
 
34
34
  ### 原理
35
35
 
@@ -497,4 +497,4 @@
497
497
  overflow: hidden;
498
498
  }
499
499
 
500
- /*# sourceMappingURL=index.css.map */
500
+ /*# sourceMappingURL=office.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../scss/excel/excel.scss","../scss/excel/button.scss","../scss/excel/toolbar.scss","../scss/excel/checkbox.scss","../scss/excel/divider.scss","../scss/excel/input.scss","../scss/excel/select.scss","../scss/excel/formula-bar.scss","../scss/excel/sheet-tab-bar.scss","../scss/excel/sheet-tab/tab-list.scss","../scss/excel/content.scss","../scss/excel/scroll-bar.scss","../scss/excel/resize-box.scss","../scss/excel/auto-filter.scss","../scss/excel/auto-filter/sort-state.scss","../scss/excel/auto-filter/filters.scss","../scss/excel/auto-filter/custom-filters.scss","../scss/excel/cell-editor.scss","../scss/excel/chart.scss","../scss/excel/pic.scss"],"names":[],"mappings":";AAAA;AAEA;AACE;EACA;EAGA;EACA;EACA;EACA;EACA;;;ACXF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;ACpBF;AACA;EACE;EACA;;;ACHF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;ACnBF;EACE;EACA;EACA;EACA;EACA;EACA;;;ACNF;EACE;EACA;EACA;EACA;EACA;EACA,QLwBa;;;AKrBf;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AClBF;EACE;EACA;;;ACFF;AACA;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AACA;EACE;;;AAGF;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;;AC9BF;AACA;EACE;EACA;EACA;EACA;EACA;;;ACNF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,ST5BqB;ES6BrB;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE,kBTrCe;;;ASwCjB;EACE,kBTzCe;;;AS4CjB;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAOF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;EACE;EACA,kBT9Fa;;;ASkGjB;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADpIF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;AAAA;EAEE;;;AEhCF;AACA;EACE;EACA;EACA;EACA,SVSgB;;;AUNlB;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;ACrBF;EACE;EACA;EACA;EACA;EACA,SXamB;;;AWVrB;EACE;EACA;EACA;EACA;EACA,SXKmB;;;AWFrB;EACE;EACA;;;AAGF;EACE;;;ACtBF;AAEA;EACE;EACA;EACA,SZamB;;;AYVrB;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SZG2B;;;AapB7B;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,SbMoB;;;AaHtB;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,SbXoB;EaYpB;;;AC7BF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;ACpCF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AClBF;EACE;EACA;EACA;;;AAGF;AACA;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;ACnBF;EACE;;;ACDF;EACE;EACA,SlBqBc;;;AmBvBhB;EACE;EACA,SnBsBY;EmBrBZ","file":"index.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../scss/excel/excel.scss","../scss/excel/button.scss","../scss/excel/toolbar.scss","../scss/excel/checkbox.scss","../scss/excel/divider.scss","../scss/excel/input.scss","../scss/excel/select.scss","../scss/excel/formula-bar.scss","../scss/excel/sheet-tab-bar.scss","../scss/excel/sheet-tab/tab-list.scss","../scss/excel/content.scss","../scss/excel/scroll-bar.scss","../scss/excel/resize-box.scss","../scss/excel/auto-filter.scss","../scss/excel/auto-filter/sort-state.scss","../scss/excel/auto-filter/filters.scss","../scss/excel/auto-filter/custom-filters.scss","../scss/excel/cell-editor.scss","../scss/excel/chart.scss","../scss/excel/pic.scss"],"names":[],"mappings":";AAAA;AAEA;AACE;EACA;EAGA;EACA;EACA;EACA;EACA;;;ACXF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;ACpBF;AACA;EACE;EACA;;;ACHF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;ACnBF;EACE;EACA;EACA;EACA;EACA;EACA;;;ACNF;EACE;EACA;EACA;EACA;EACA;EACA,QLwBa;;;AKrBf;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AClBF;EACE;EACA;;;ACFF;AACA;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AACA;EACE;;;AAGF;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;;AC9BF;AACA;EACE;EACA;EACA;EACA;EACA;;;ACNF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,ST5BqB;ES6BrB;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE,kBTrCe;;;ASwCjB;EACE,kBTzCe;;;AS4CjB;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAOF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;EACE;EACA,kBT9Fa;;;ASkGjB;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ADpIF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;AAAA;EAEE;;;AEhCF;AACA;EACE;EACA;EACA;EACA,SVSgB;;;AUNlB;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;ACrBF;EACE;EACA;EACA;EACA;EACA,SXamB;;;AWVrB;EACE;EACA;EACA;EACA;EACA,SXKmB;;;AWFrB;EACE;EACA;;;AAGF;EACE;;;ACtBF;AAEA;EACE;EACA;EACA,SZamB;;;AYVrB;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SZG2B;;;AapB7B;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,SbMoB;;;AaHtB;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,SbXoB;EaYpB;;;AC7BF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;ACpCF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AClBF;EACE;EACA;EACA;;;AAGF;AACA;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;ACnBF;EACE;;;ACDF;EACE;EACA,SlBqBc;;;AmBvBhB;EACE;EACA,SnBsBY;EmBrBZ","file":"office.css"}
package/esm/Excel.d.ts CHANGED
@@ -42,6 +42,7 @@ export default class Excel implements OfficeViewer {
42
42
  * 加载 Excel 文件
43
43
  */
44
44
  loadExcel(): Promise<void>;
45
+ loaded: boolean;
45
46
  /**
46
47
  * 加载 CSV 文件
47
48
  */
package/esm/Excel.js CHANGED
@@ -20,7 +20,7 @@ var defaultRenderOptions = {
20
20
  return get(data, path);
21
21
  },
22
22
  useWorker: false,
23
- height: 400,
23
+ height: 500,
24
24
  gridLineColor: '#D4D4D4',
25
25
  gridLineWidth: 1,
26
26
  dragGridLineColor: '#5D5D5D',
@@ -53,6 +53,8 @@ var defaultRenderOptions = {
53
53
  var Excel = /** @class */ (function () {
54
54
  function Excel(docFile, fileName, renderOptions, parser) {
55
55
  if (parser === void 0) { parser = new ZipPackageParser(); }
56
+ // 后续优化一下
57
+ this.loaded = false;
56
58
  this.id = Excel.globalId++;
57
59
  this.parser = parser;
58
60
  this.docFile = docFile;
@@ -71,6 +73,9 @@ var Excel = /** @class */ (function () {
71
73
  return __generator(this, function (_b) {
72
74
  switch (_b.label) {
73
75
  case 0:
76
+ if (this.loaded) {
77
+ return [2 /*return*/];
78
+ }
74
79
  this.parser.load(this.docFile);
75
80
  startParse = performance.now();
76
81
  _a = this;
@@ -81,6 +86,7 @@ var Excel = /** @class */ (function () {
81
86
  console.log('parse time', performance.now() - startParse, 'ms');
82
87
  console.log('excelFile', this.excelFile);
83
88
  }
89
+ this.loaded = true;
84
90
  return [2 /*return*/];
85
91
  }
86
92
  });
@@ -95,6 +101,9 @@ var Excel = /** @class */ (function () {
95
101
  return __generator(this, function (_b) {
96
102
  switch (_b.label) {
97
103
  case 0:
104
+ if (this.loaded) {
105
+ return [2 /*return*/];
106
+ }
98
107
  // 目前 csv 的实现复用了 xlsx 的解析
99
108
  this.parser.load(emptyXLSX);
100
109
  _a = this;
@@ -112,6 +121,7 @@ var Excel = /** @class */ (function () {
112
121
  if (this.fileName) {
113
122
  this.excelFile.workbook.sheets[0].name = this.fileName.split('/').pop();
114
123
  }
124
+ this.loaded = true;
115
125
  return [2 /*return*/];
116
126
  }
117
127
  });
@@ -70,7 +70,7 @@ var ScrollBar = /** @class */ (function () {
70
70
  xScrollBarContent.addEventListener('scroll', function (event) {
71
71
  var currentSheet = _this.workbook.getActiveSheet();
72
72
  var sheetScrollLeft = currentSheet.getScrollLeft();
73
- var scrollBarLeft = yScrollBarContent.scrollTop;
73
+ var scrollBarLeft = xScrollBarContent.scrollLeft;
74
74
  if (Math.round(sheetScrollLeft) !== Math.round(scrollBarLeft)) {
75
75
  currentSheet.setScrollLeft(xScrollBarContent.scrollLeft);
76
76
  _this.workbook.uiEvent.emit('SCROLL_X', xScrollBarContent.scrollLeft);
@@ -23,6 +23,7 @@ function setColumnSortOrder(sheet, colIndex, rangeRef, autoFilter, sortOrder, he
23
23
  ref: sortStateRef,
24
24
  sortCondition: [sortCondition]
25
25
  };
26
+ sheet.applyAutoFilter(autoFilter, headerRowCount);
26
27
  return;
27
28
  }
28
29
  if (autoFilter.sortState.sortCondition === undefined) {
@@ -3,8 +3,8 @@
3
3
  */
4
4
  function getMouseRelativePosition(container, event) {
5
5
  var dataContainerOffset = container.getBoundingClientRect();
6
- var offsetX = event.pageX - dataContainerOffset.x;
7
- var offsetY = event.pageY - dataContainerOffset.y;
6
+ var offsetX = event.clientX - dataContainerOffset.x;
7
+ var offsetY = event.clientY - dataContainerOffset.y;
8
8
  return { offsetX: offsetX, offsetY: offsetY };
9
9
  }
10
10
 
package/lib/Excel.d.ts CHANGED
@@ -42,6 +42,7 @@ export default class Excel implements OfficeViewer {
42
42
  * 加载 Excel 文件
43
43
  */
44
44
  loadExcel(): Promise<void>;
45
+ loaded: boolean;
45
46
  /**
46
47
  * 加载 CSV 文件
47
48
  */
package/lib/Excel.js CHANGED
@@ -42,7 +42,7 @@ var defaultRenderOptions = {
42
42
  return get.get(data, path);
43
43
  },
44
44
  useWorker: false,
45
- height: 400,
45
+ height: 500,
46
46
  gridLineColor: '#D4D4D4',
47
47
  gridLineWidth: 1,
48
48
  dragGridLineColor: '#5D5D5D',
@@ -75,6 +75,8 @@ var defaultRenderOptions = {
75
75
  var Excel = /** @class */ (function () {
76
76
  function Excel(docFile, fileName, renderOptions, parser) {
77
77
  if (parser === void 0) { parser = new ZipPackageParser["default"](); }
78
+ // 后续优化一下
79
+ this.loaded = false;
78
80
  this.id = Excel.globalId++;
79
81
  this.parser = parser;
80
82
  this.docFile = docFile;
@@ -93,6 +95,9 @@ var Excel = /** @class */ (function () {
93
95
  return tslib.__generator(this, function (_b) {
94
96
  switch (_b.label) {
95
97
  case 0:
98
+ if (this.loaded) {
99
+ return [2 /*return*/];
100
+ }
96
101
  this.parser.load(this.docFile);
97
102
  startParse = performance.now();
98
103
  _a = this;
@@ -103,6 +108,7 @@ var Excel = /** @class */ (function () {
103
108
  console.log('parse time', performance.now() - startParse, 'ms');
104
109
  console.log('excelFile', this.excelFile);
105
110
  }
111
+ this.loaded = true;
106
112
  return [2 /*return*/];
107
113
  }
108
114
  });
@@ -117,6 +123,9 @@ var Excel = /** @class */ (function () {
117
123
  return tslib.__generator(this, function (_b) {
118
124
  switch (_b.label) {
119
125
  case 0:
126
+ if (this.loaded) {
127
+ return [2 /*return*/];
128
+ }
120
129
  // 目前 csv 的实现复用了 xlsx 的解析
121
130
  this.parser.load(emptyXLSX.emptyXLSX);
122
131
  _a = this;
@@ -134,6 +143,7 @@ var Excel = /** @class */ (function () {
134
143
  if (this.fileName) {
135
144
  this.excelFile.workbook.sheets[0].name = this.fileName.split('/').pop();
136
145
  }
146
+ this.loaded = true;
137
147
  return [2 /*return*/];
138
148
  }
139
149
  });
@@ -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 | UnSupport | Excel>;
16
+ export declare function createOfficeViewer(docFile: ArrayBuffer, renderOptions?: Partial<RenderOptions>, fileName?: string, parser?: PackageParser): Promise<Excel | Word | UnSupport>;
@@ -23,7 +23,7 @@ declare const languages: {
23
23
  count: string;
24
24
  sum: string;
25
25
  };
26
- zh_CN: Record<"count" | "sum" | "average" | "customFilter.equal" | "customFilter.notEqual" | "customFilter.beginsWith" | "customFilter.notBeginsWith" | "customFilter.endsWith" | "customFilter.notEndsWith" | "customFilter.contains" | "customFilter.notContains" | "customFilter.greaterThan" | "customFilter.greaterThanOrEqual" | "customFilter.lessThan" | "customFilter.lessThanOrEqual" | "autoFilter.sortAscending" | "autoFilter.sortDescending" | "checkBox.selectAll" | "checkBox.search" | "customFilter.and" | "customFilter.or", string>;
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;
@@ -74,7 +74,7 @@ var ScrollBar = /** @class */ (function () {
74
74
  xScrollBarContent.addEventListener('scroll', function (event) {
75
75
  var currentSheet = _this.workbook.getActiveSheet();
76
76
  var sheetScrollLeft = currentSheet.getScrollLeft();
77
- var scrollBarLeft = yScrollBarContent.scrollTop;
77
+ var scrollBarLeft = xScrollBarContent.scrollLeft;
78
78
  if (Math.round(sheetScrollLeft) !== Math.round(scrollBarLeft)) {
79
79
  currentSheet.setScrollLeft(xScrollBarContent.scrollLeft);
80
80
  _this.workbook.uiEvent.emit('SCROLL_X', xScrollBarContent.scrollLeft);
@@ -3,4 +3,4 @@
3
3
  */
4
4
  import { CT_SortState } from '../../../../openxml/ExcelTypes';
5
5
  import { RangeRef } from '../../../types/RangeRef';
6
- export declare function getColumnSortOrder(colIndex: number, rangeRef: RangeRef, sortState?: CT_SortState): "desc" | "none" | "asc";
6
+ export declare function getColumnSortOrder(colIndex: number, rangeRef: RangeRef, sortState?: CT_SortState): "asc" | "desc" | "none";
@@ -27,6 +27,7 @@ function setColumnSortOrder(sheet, colIndex, rangeRef, autoFilter, sortOrder, he
27
27
  ref: sortStateRef,
28
28
  sortCondition: [sortCondition]
29
29
  };
30
+ sheet.applyAutoFilter(autoFilter, headerRowCount);
30
31
  return;
31
32
  }
32
33
  if (autoFilter.sortState.sortCondition === undefined) {
@@ -7,8 +7,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
7
7
  */
8
8
  function getMouseRelativePosition(container, event) {
9
9
  var dataContainerOffset = container.getBoundingClientRect();
10
- var offsetX = event.pageX - dataContainerOffset.x;
11
- var offsetY = event.pageY - dataContainerOffset.y;
10
+ var offsetX = event.clientX - dataContainerOffset.x;
11
+ var offsetY = event.clientY - dataContainerOffset.y;
12
12
  return { offsetX: offsetX, offsetY: offsetY };
13
13
  }
14
14
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "office-viewer",
3
- "version": "0.3.1",
3
+ "version": "0.3.4",
4
4
  "description": "office 文档在线预览",
5
5
  "main": "lib/index.js",
6
6
  "module": "esm/index.js",
@@ -8,7 +8,7 @@
8
8
  "scripts": {
9
9
  "dev": "vite --host",
10
10
  "start": "vite --host",
11
- "build": "npm run clean-dist && cross-env NODE_ENV=production rollup -c && sass scss/office.scss dist/index.css",
11
+ "build": "npm run clean-dist && cross-env NODE_ENV=production rollup -c && sass scss/office.scss dist/office.css",
12
12
  "build-esm": "npm run clean-dist && cross-env NODE_ENV=production rollup -c rollup.esm.config.js",
13
13
  "test": "jest",
14
14
  "lib": "npm run clean-dist && cross-env NODE_ENV=production IS_LIB=1 rollup -c",
@@ -119,4 +119,4 @@
119
119
  "printBasicPrototype": false
120
120
  }
121
121
  }
122
- }
122
+ }