zartui 2.0.8 → 2.0.9

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/lib/index.js CHANGED
@@ -194,6 +194,10 @@ var _pdfViewer = _interopRequireDefault(require("./pdf-viewer"));
194
194
 
195
195
  exports.PdfViewer = _pdfViewer.default;
196
196
 
197
+ var _pdfViewerV = _interopRequireDefault(require("./pdf-viewer-v2"));
198
+
199
+ exports.PdfViewerV2 = _pdfViewerV.default;
200
+
197
201
  var _picker = _interopRequireDefault(require("./picker"));
198
202
 
199
203
  exports.Picker = _picker.default;
@@ -313,11 +317,11 @@ exports.Toast = _toast.default;
313
317
  var _uploader = _interopRequireDefault(require("./uploader"));
314
318
 
315
319
  exports.Uploader = _uploader.default;
316
- var version = '2.0.8';
320
+ var version = '2.0.9';
317
321
  exports.version = version;
318
322
 
319
323
  function install(Vue) {
320
- var components = [_actionSheet.default, _area.default, _avatar.default, _backTop.default, _badge.default, _button.default, _calendar.default, _cascader.default, _cell.default, _cellGroup.default, _checkbox.default, _checkboxGroup.default, _col.default, _collapse.default, _collapseItem.default, _countDown.default, _datetimePicker.default, _dialog.default, _divider.default, _dropdownItem.default, _dropdownMenu.default, _empty.default, _field.default, _foldDialog.default, _form.default, _grid.default, _gridItem.default, _hierarchySelect.default, _icon.default, _image.default, _imagePreview.default, _indexAnchor.default, _indexBar.default, _info.default, _lazyload.default, _list.default, _loading.default, _locale.default, _mediaPicker.default, _mediaPlayer.default, _multiplePicker.default, _navBar.default, _noticeBar.default, _numberKeyboard.default, _overlay.default, _passwordInput.default, _pdfViewer.default, _picker.default, _popover.default, _popup.default, _pullRefresh.default, _radio.default, _radioGroup.default, _rate.default, _row.default, _search.default, _signature.default, _skeleton.default, _slider.default, _step.default, _stepper.default, _steps.default, _sticky.default, _swipe.default, _swipeCell.default, _swipeItem.default, _switch.default, _switchCell.default, _tab.default, _tabbar.default, _tabbarItem.default, _table.default, _tabs.default, _tag.default, _timeline.default, _toast.default, _uploader.default];
324
+ var components = [_actionSheet.default, _area.default, _avatar.default, _backTop.default, _badge.default, _button.default, _calendar.default, _cascader.default, _cell.default, _cellGroup.default, _checkbox.default, _checkboxGroup.default, _col.default, _collapse.default, _collapseItem.default, _countDown.default, _datetimePicker.default, _dialog.default, _divider.default, _dropdownItem.default, _dropdownMenu.default, _empty.default, _field.default, _foldDialog.default, _form.default, _grid.default, _gridItem.default, _hierarchySelect.default, _icon.default, _image.default, _imagePreview.default, _indexAnchor.default, _indexBar.default, _info.default, _lazyload.default, _list.default, _loading.default, _locale.default, _mediaPicker.default, _mediaPlayer.default, _multiplePicker.default, _navBar.default, _noticeBar.default, _numberKeyboard.default, _overlay.default, _passwordInput.default, _pdfViewer.default, _pdfViewerV.default, _picker.default, _popover.default, _popup.default, _pullRefresh.default, _radio.default, _radioGroup.default, _rate.default, _row.default, _search.default, _signature.default, _skeleton.default, _slider.default, _step.default, _stepper.default, _steps.default, _sticky.default, _swipe.default, _swipeCell.default, _swipeItem.default, _switch.default, _switchCell.default, _tab.default, _tabbar.default, _tabbarItem.default, _table.default, _tabs.default, _tag.default, _timeline.default, _toast.default, _uploader.default];
321
325
  components.forEach(function (item) {
322
326
  if (item.install) {
323
327
  Vue.use(item);
package/lib/index.less CHANGED
@@ -34,6 +34,7 @@
34
34
  @import "./dialog/index.less";
35
35
  @import "./calendar/index.less";
36
36
  @import "./picker/index.less";
37
+ @import "./pdf-viewer-v2/index.less";
37
38
  @import "./pdf-viewer/index.less";
38
39
  @import "./action-sheet/index.less";
39
40
  @import "./avatar/index.less";
@@ -0,0 +1 @@
1
+ .zt-pdf-viewer-v2{width:100%;height:100%;position:relative;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;flex-direction:column}.zt-pdf-viewer-v2__inner-container{-webkit-box-flex:1;-webkit-flex:1;flex:1;overflow:scroll}.zt-pdf-viewer-v2::-webkit-scrollbar{width:0;height:0}.zt-pdf-viewer-v2__page-box{width:100%;height:44px;background-color:#fff;text-align:center;font-size:16px;line-height:44px}.zt-pdf-viewer-v2__page-box .zt-pdf-viewer-v2__next,.zt-pdf-viewer-v2__page-box .zt-pdf-viewer-v2__pre{cursor:pointer;color:#3a90f6}.zt-pdf-viewer-v2__page-box .zt-pdf-viewer-v2__page{margin:0 10px}.zt-pdf-viewer-v2 .zt-loading{position:absolute;top:50%;left:50%;margin-left:-18px;margin-top:-18px}
@@ -0,0 +1,345 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+
8
+ var _utils = require("../utils");
9
+
10
+ var _toast = _interopRequireDefault(require("../toast"));
11
+
12
+ var _loading = _interopRequireDefault(require("../loading"));
13
+
14
+ var _picker = _interopRequireDefault(require("../picker"));
15
+
16
+ var _index = require("../utils/index");
17
+
18
+ var _createNamespace = (0, _utils.createNamespace)('pdf-viewer-v2'),
19
+ createComponent = _createNamespace[0],
20
+ bem = _createNamespace[1];
21
+
22
+ var _ = require('lodash');
23
+
24
+ var defaultData = function defaultData() {
25
+ return {
26
+ pdfDocRef: null,
27
+ totalPage: 0,
28
+ currentPage: 1,
29
+ loading: false,
30
+ PDFJS: null,
31
+ pageChangeByButton: false,
32
+ showPicker: false
33
+ };
34
+ };
35
+
36
+ var _default2 = createComponent({
37
+ props: {
38
+ /**
39
+ * pdf地址
40
+ */
41
+ pdfUrl: {
42
+ type: String,
43
+ default: ""
44
+ },
45
+
46
+ /**
47
+ * cMap的url地址(用于解决中文乱码或中文显示为空白的问题). 该资源的物理路径在: node_modules/pdfjs-dist/cmaps
48
+ */
49
+ cMapUrl: {
50
+ type: String,
51
+ default: ""
52
+ },
53
+
54
+ /**
55
+ * 携带的特定http请求头
56
+ */
57
+ httpHeaders: {
58
+ type: Object,
59
+ default: function _default() {
60
+ return {};
61
+ }
62
+ }
63
+ },
64
+ data: function data() {
65
+ return defaultData();
66
+ },
67
+ mounted: function mounted() {
68
+ this.reset();
69
+ this.renderPdf();
70
+ },
71
+ deactivated: function deactivated() {
72
+ this.pdfDocRef.destroy();
73
+ },
74
+ computed: {
75
+ urlObj: function urlObj() {
76
+ return {
77
+ pdfUrl: this.pdfUrl,
78
+ cMapUrl: this.cMapUrl
79
+ };
80
+ }
81
+ },
82
+ watch: {
83
+ urlObj: function urlObj() {
84
+ this.reset();
85
+ this.renderPdf();
86
+ }
87
+ },
88
+ methods: {
89
+ reset: function reset() {
90
+ (0, _index.resetObject)(this, defaultData());
91
+ },
92
+
93
+ /**
94
+ * 渲染pdf文件的指定页到画板
95
+ * @param pdfViewerDom 承载pdf画板的dom容器
96
+ * @param pdfDoc pdf文件
97
+ * @param pageNum 需要渲染的页码
98
+ */
99
+ renderPdfOnePage: function renderPdfOnePage(pdfViewerDom, pdfDoc, pageNum) {
100
+ var _this = this;
101
+
102
+ // 创建画布
103
+ var canvas = document.createElement("canvas");
104
+ canvas.id = "pdfCanvas" + pageNum;
105
+ pdfViewerDom.appendChild(canvas); // 获取2d上下文
106
+
107
+ var context = canvas.getContext("2d");
108
+ pdfDoc.getPage(pageNum).then(function (page) {
109
+ // 获取当前pdf页内容, 并设置缩放
110
+ var viewport = page.getViewport({
111
+ scale: 1
112
+ });
113
+ var width = viewport.width;
114
+
115
+ _this.$nextTick(function () {
116
+ var containerWidth = _this.$refs.pdfContainer.offsetWidth;
117
+ var ratio = containerWidth / width;
118
+ viewport = page.getViewport({
119
+ scale: ratio
120
+ }); // @ts-ignore
121
+
122
+ var realCanvas = context.canvas;
123
+ realCanvas.width = viewport.width;
124
+ realCanvas.height = viewport.height; // 将pdf当前页内容画到2d画板中
125
+ // @ts-ignore
126
+
127
+ page.render({
128
+ canvasContext: context,
129
+ viewport: viewport
130
+ });
131
+ });
132
+ });
133
+ },
134
+
135
+ /**
136
+ * 渲染pdf的画布
137
+ * @param pdfViewerDom 承载pdf画布的dom容器
138
+ * @param pdfDoc pdf文档
139
+ */
140
+ renderPdfCanvas: function renderPdfCanvas(pdfViewerDom, pdfDoc) {
141
+ var _this2 = this;
142
+
143
+ // 清除原来的pdf画布
144
+ pdfViewerDom.innerHTML = ""; // 获取总页数
145
+
146
+ this.totalPage = pdfDoc.numPages;
147
+ this.loading = false; // 获取显示容器
148
+
149
+ for (var i = 1; i <= this.totalPage; i++) {
150
+ // 循环处理pdf的每页
151
+ this.renderPdfOnePage(pdfViewerDom, pdfDoc, i);
152
+ }
153
+
154
+ this.$nextTick(function () {
155
+ _this2.bindScrollEvent();
156
+ });
157
+ },
158
+ bindScrollEvent: function bindScrollEvent() {
159
+ var _this3 = this;
160
+
161
+ var element = document.getElementById("pdfContainer");
162
+
163
+ var scrollEvent = _.throttle(function () {
164
+ if (_this3.pageChangeByButton) {
165
+ _this3.pageChangeByButton = false;
166
+ return;
167
+ }
168
+
169
+ if (element.scrollTop === 0) {
170
+ _this3.currentPage = 1;
171
+ return;
172
+ }
173
+
174
+ var i = 1,
175
+ count = _this3.totalPage;
176
+ var offsetHeight = element.offsetHeight;
177
+
178
+ do {
179
+ var start = _this3.findPos(document.getElementById("pdfCanvas" + i));
180
+
181
+ var end = start + document.getElementById("pdfCanvas" + i).offsetHeight;
182
+
183
+ if (element.scrollTop + offsetHeight >= start && element.scrollTop + offsetHeight <= end) {
184
+ _this3.currentPage = i;
185
+ break;
186
+ }
187
+
188
+ if (i === count && element.scrollTop + offsetHeight > end) {
189
+ _this3.currentPage = i;
190
+ break;
191
+ }
192
+
193
+ i++;
194
+ } while (i < count + 1);
195
+ }, 500);
196
+
197
+ element.addEventListener("scroll", function () {
198
+ scrollEvent();
199
+ });
200
+ },
201
+ findPos: function findPos(obj) {
202
+ if (obj) {
203
+ return obj.offsetTop;
204
+ } else {
205
+ return 0;
206
+ }
207
+ },
208
+ renderPdf: function renderPdf() {
209
+ var _this4 = this;
210
+
211
+ if (!this.PDFJS) {
212
+ this.PDFJS = window['pdfjs-dist/build/pdf'] || window.pdfjsLib;
213
+
214
+ if (this.PDFJS && this.PDFJS.GlobalWorkerOptions) {
215
+ this.PDFJS.GlobalWorkerOptions.workerSrc = require("pdfjs-dist/build/pdf.worker.entry");
216
+ }
217
+ }
218
+
219
+ this.loading = true;
220
+ var pdfViewerDom = this.$refs.pdfViewerContainer;
221
+
222
+ if (this.pdfUrl) {
223
+ // 获取pdf文件
224
+ var pdfLoadingTask = this.PDFJS.getDocument({
225
+ url: this.pdfUrl,
226
+ withCredentials: true,
227
+ // 携带凭证
228
+ httpHeaders: this.httpHeaders,
229
+ cMapUrl: this.cMapUrl,
230
+ cMapPacked: true
231
+ });
232
+ pdfLoadingTask.promise.then(function (pdfDoc) {
233
+ if (pdfDoc && pdfViewerDom) {
234
+ // 缓存pdf内容
235
+ _this4.pdfDocRef = pdfDoc;
236
+
237
+ _this4.renderPdfCanvas(pdfViewerDom, pdfDoc);
238
+ }
239
+ });
240
+ }
241
+ },
242
+ changePage: function changePage(page) {
243
+ if (page < 1) {
244
+ (0, _toast.default)("已经是首页");
245
+ return;
246
+ }
247
+
248
+ if (page > this.totalPage) {
249
+ (0, _toast.default)("已经是最后一页");
250
+ return;
251
+ }
252
+
253
+ this.pageChangeByButton = true;
254
+
255
+ if (document.getElementById("pdfCanvas" + page)) {
256
+ document.getElementById("pdfCanvas" + page).scrollIntoView({
257
+ block: "end",
258
+ inline: "nearest"
259
+ });
260
+ }
261
+
262
+ this.currentPage = page;
263
+ },
264
+ clickPre: function clickPre() {
265
+ this.changePage(this.currentPage - 1);
266
+ },
267
+ clickNext: function clickNext() {
268
+ this.changePage(this.currentPage + 1);
269
+ },
270
+ showPagePicker: function showPagePicker() {
271
+ this.showPicker = true;
272
+ },
273
+ setPage: function setPage(i) {
274
+ this.changePage(i);
275
+ this.showPicker = false;
276
+ },
277
+ cancel: function cancel() {
278
+ this.showPicker = false;
279
+ },
280
+ getPageList: function getPageList() {
281
+ var total = this.totalPage;
282
+ var arr = [];
283
+
284
+ for (var i = 1; i <= total; i++) {
285
+ arr.push(i);
286
+ }
287
+
288
+ return arr;
289
+ }
290
+ },
291
+ render: function render(h) {
292
+ return h("div", {
293
+ "class": bem(),
294
+ "ref": "pdfContainer"
295
+ }, [h("div", {
296
+ "class": bem("inner-container"),
297
+ "attrs": {
298
+ "id": "pdfContainer"
299
+ }
300
+ }, [h(_loading.default, {
301
+ "directives": [{
302
+ name: "show",
303
+ value: this.loading
304
+ }],
305
+ "class": bem('loading-icon')
306
+ }), h("div", {
307
+ "directives": [{
308
+ name: "show",
309
+ value: !this.loading
310
+ }],
311
+ "ref": "pdfViewerContainer",
312
+ "class": bem("container")
313
+ })]), this.totalPage ? h("div", {
314
+ "class": bem("page-box")
315
+ }, [h("span", {
316
+ "class": bem("pre"),
317
+ "on": {
318
+ "click": this.clickPre
319
+ }
320
+ }, ["<"]), h("span", {
321
+ "class": bem("page"),
322
+ "on": {
323
+ "click": this.showPagePicker
324
+ }
325
+ }, [this.currentPage, " / ", this.totalPage]), h("span", {
326
+ "class": bem("next"),
327
+ "on": {
328
+ "click": this.clickNext
329
+ }
330
+ }, [">"])]) : h(), h(_picker.default, {
331
+ "attrs": {
332
+ "show-picker": this.showPicker,
333
+ "default-index": this.currentPage - 1,
334
+ "title": "页码",
335
+ "columns": this.getPageList()
336
+ },
337
+ "on": {
338
+ "cancel": this.cancel,
339
+ "confirm": this.setPage
340
+ }
341
+ })]);
342
+ }
343
+ });
344
+
345
+ exports.default = _default2;
@@ -0,0 +1,44 @@
1
+ @import '../style/var';
2
+ .zt-pdf-viewer-v2 {
3
+ width: 100%;
4
+ height: 100%;
5
+ position: relative;
6
+ display: flex;
7
+ flex-direction: column;
8
+
9
+ &__inner-container {
10
+ flex: 1;
11
+ overflow: scroll;
12
+ }
13
+
14
+ &::-webkit-scrollbar {
15
+ width: 0;
16
+ height: 0;
17
+ }
18
+
19
+ &__page-box {
20
+ width: 100%;
21
+ height: 44px;
22
+ background-color: #fff;
23
+ text-align: center;
24
+ font-size: 16px;
25
+ line-height: 44px;
26
+
27
+ .zt-pdf-viewer-v2__pre, .zt-pdf-viewer-v2__next {
28
+ cursor: pointer;
29
+ color: #3a90f6;
30
+ }
31
+
32
+ .zt-pdf-viewer-v2__page {
33
+ margin: 0 10px;
34
+ }
35
+ }
36
+
37
+ .zt-loading {
38
+ position: absolute;
39
+ top: 50%;
40
+ left: 50%;
41
+ margin-left: -18px;
42
+ margin-top: -18px;
43
+ }
44
+ }
@@ -0,0 +1,10 @@
1
+ require('../../style/base.css');
2
+ require('../../overlay/index.css');
3
+ require('../../info/index.css');
4
+ require('../../icon/index.css');
5
+ require('../../popup/index.css');
6
+ require('../../loading/index.css');
7
+ require('../../toast/index.css');
8
+ require('../../button/index.css');
9
+ require('../../picker/index.css');
10
+ require('../index.css');
@@ -0,0 +1,10 @@
1
+ require('../../style/base.less');
2
+ require('../../overlay/index.less');
3
+ require('../../info/index.less');
4
+ require('../../icon/index.less');
5
+ require('../../popup/index.less');
6
+ require('../../loading/index.less');
7
+ require('../../toast/index.less');
8
+ require('../../button/index.less');
9
+ require('../../picker/index.less');
10
+ require('../index.less');
@@ -408,7 +408,7 @@
408
408
  @dialog-button-height: 44px;
409
409
  @dialog-round-button-height: 36px;
410
410
  @dialog-confirm-button-text-color: @blue;
411
- @dialog-footer-padding: 0 32px 24px 32px;
411
+ @dialog-footer-padding: 24px 32px;
412
412
 
413
413
  // Divider
414
414
  @divider-margin: @padding-md 0;