@dingrtc/whiteboard 1.1.8 → 1.1.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.
@@ -0,0 +1,768 @@
1
+ import * as pdfjs_dist_types_src_display_api from 'pdfjs-dist/types/src/display/api';
2
+ import * as pdfjs_dist_types_src_display_display_utils from 'pdfjs-dist/types/src/display/display_utils';
3
+ import { EventEmitter } from '@dingrtc/shared';
4
+
5
+ type ImageScalingMode = 'auto' | 'fillWidth' | 'fillHeight';
6
+
7
+ declare enum ResizeType {
8
+ width = 0,
9
+ height = 1,
10
+ widthAndHeight = 2,
11
+ none = 3
12
+ }
13
+ /**
14
+ * 图形被选中时,在外部提示框上可以被按住拖动的点
15
+ *
16
+ * @export
17
+ * @class OutlineResizeHandle
18
+ */
19
+ declare class OutlineResizeHandle {
20
+ getX: () => number;
21
+ getY: () => number;
22
+ cursorStyle: string;
23
+ resizeType: ResizeType;
24
+ renderSelf: boolean;
25
+ static ResizeType: typeof ResizeType;
26
+ constructor(getX: () => number, getY: () => number, cursorStyle: string, resizeType: ResizeType, renderSelf?: boolean);
27
+ /**
28
+ * transparent 为 true 会绘制透明样式, 用于测算点位
29
+ * @param renderContext
30
+ * @param transparent 是否应用透明样式
31
+ */
32
+ render(renderContext: CanvasRenderingContext2D, transparent: boolean, scale: number): void;
33
+ isPointInShape(x: number, y: number): boolean;
34
+ }
35
+
36
+ /**
37
+ * 基础图形点位描述
38
+ */
39
+ declare class Model {
40
+ points: Point[];
41
+ /**
42
+ * 图形点位模型
43
+ * @param points
44
+ */
45
+ constructor(points: Point[]);
46
+ setPoints(points: Point[]): void;
47
+ setPointAtIndex(index: number, point: Point): void;
48
+ get minx(): number;
49
+ get miny(): number;
50
+ get maxx(): number;
51
+ get maxy(): number;
52
+ get width(): number;
53
+ get height(): number;
54
+ /**
55
+ * 中心点位置
56
+ */
57
+ get center(): {
58
+ x: number;
59
+ y: number;
60
+ };
61
+ /**
62
+ * 以当前图形中心点为圆心旋转
63
+ * @param angle
64
+ */
65
+ rotate(angle: number): Point[];
66
+ }
67
+
68
+ declare enum ShapeType {
69
+ Click = "click",
70
+ Select = "select",
71
+ Pen = "pen",
72
+ Line = "line",
73
+ Rect = "rect",
74
+ Square = "square",
75
+ Ellipse = "ellipse",
76
+ Circle = "circle",
77
+ Text = "text",
78
+ Triangle = "triangle",// 三角形
79
+ Rhombic = "rhombic",// 菱形
80
+ Arrow = "arrow",
81
+ Delete = "delete",
82
+ Image = "image",
83
+ Stamp = "stamp",
84
+ Video = "video",
85
+ Audio = "audio",
86
+ Eraser = "eraser",
87
+ Brush = "eraser",
88
+ EraserIndicator = "eraserIndicator",
89
+ LaserPointer = "laserPointer",
90
+ Cursor = "cursor",
91
+ Drag = "drag"
92
+ }
93
+ declare enum ShapeOrderType {
94
+ back = "back",
95
+ front = "front",
96
+ normal = "normal",
97
+ bg = "bg"
98
+ }
99
+ declare enum ShapeVisibleType {
100
+ invisible = "0",
101
+ visible = "1"
102
+ }
103
+ declare enum InteractionStatusType {
104
+ default = 0,
105
+ focused = 1,
106
+ selected = 2,
107
+ resizing = 3,
108
+ rotating = 4,
109
+ willBeDeleted = 5
110
+ }
111
+
112
+ /**
113
+ * 图形消息
114
+ */
115
+ interface IShapeData {
116
+ name: string;
117
+ pageId: string;
118
+ shape: ShapeType;
119
+ order: ShapeOrderType;
120
+ orderTime: string;
121
+ text?: string;
122
+ data: string;
123
+ visible: ShapeVisibleType;
124
+ style?: string;
125
+ font?: string;
126
+ image?: string;
127
+ video?: string;
128
+ audio?: string;
129
+ }
130
+ /**
131
+ * 图形消息
132
+ */
133
+ interface IShapeRgnData {
134
+ name: string;
135
+ pageId: string;
136
+ shape: ShapeType;
137
+ rgn: string;
138
+ }
139
+
140
+ /**
141
+ * 所有图形的基础类型
142
+ *
143
+ * shape 通过 shapeId + creator 唯一确定
144
+ */
145
+ declare abstract class BaseShape extends EventEmitter<{
146
+ requestRender: (shape: BaseShape) => void;
147
+ }> {
148
+ shapeId: string;
149
+ readonly creator: string;
150
+ readonly pageId: string;
151
+ static GIF_RENDER_RATE: number;
152
+ hash: number;
153
+ get shouldRenderOutline(): boolean;
154
+ protected emitRenderRequest(): void;
155
+ private _order;
156
+ get order(): ShapeOrderType;
157
+ set order(order: ShapeOrderType);
158
+ private _orderTime;
159
+ get orderTime(): number;
160
+ set orderTime(orderTime: number);
161
+ rngReverse: {
162
+ xReversed: boolean;
163
+ yReversed: boolean;
164
+ };
165
+ transformOriginalInfo?: BaseShape;
166
+ resizeStartHandle?: Point & {
167
+ resizeType: ResizeType;
168
+ index: number;
169
+ };
170
+ resizeOriginPosition?: Point;
171
+ protected _visible: boolean;
172
+ get visible(): boolean;
173
+ set visible(visible: boolean);
174
+ abstract get shapeType(): ShapeType;
175
+ abstract clone(userId: string, shapeId: string): BaseShape;
176
+ protected _interactionStatus: InteractionStatusType;
177
+ get interactionStatus(): InteractionStatusType;
178
+ set interactionStatus(interactionStatus: InteractionStatusType);
179
+ get points(): Point[];
180
+ set points(points: Point[]);
181
+ protected model: Model;
182
+ /**
183
+ * 用于消息通信时传输的 shape 序列号
184
+ */
185
+ get shapeSeq(): string;
186
+ /**
187
+ * @param points 图形点位信息
188
+ * @param shapeId 图形序列
189
+ * @param creator 创建者 uid
190
+ * @param pageId 所属页面 id,不设置表示图形不属于任何页面
191
+ */
192
+ constructor(points: Point[], shapeId: string, creator: string, pageId?: string);
193
+ /**
194
+ * 是否可以被选中
195
+ */
196
+ abstract shouldSelectAfterAdd(): boolean;
197
+ render(ctx: CanvasRenderingContext2D, options: {
198
+ viewport: {
199
+ minx: number;
200
+ miny: number;
201
+ maxx: number;
202
+ maxy: number;
203
+ };
204
+ scale: number;
205
+ translate: number[];
206
+ wrapperDom: HTMLElement;
207
+ lineWidth: number;
208
+ insertType: ShapeType;
209
+ forceRenderText: boolean;
210
+ }): void;
211
+ /**
212
+ * 渲染图形(不包括边框和形变抓手按钮)
213
+ * @param renderContext
214
+ * @param options
215
+ */
216
+ protected abstract renderShape(renderContext: CanvasRenderingContext2D, options: {
217
+ viewport: {
218
+ minx: number;
219
+ miny: number;
220
+ maxx: number;
221
+ maxy: number;
222
+ };
223
+ scale: number;
224
+ translate: number[];
225
+ wrapperDom: HTMLElement;
226
+ lineWidth: number;
227
+ insertType: ShapeType;
228
+ forceRenderText: boolean;
229
+ }): void;
230
+ /**
231
+ * 当图形被选中或者被聚焦时,渲染图形外部边框;当图形被单选时显示图形的变形把手
232
+ */
233
+ renderOutline(ctx: CanvasRenderingContext2D, scale: number): void;
234
+ /**
235
+ * 图形是否在选的的rect范围内(任意一点出现在选的范围内即认为可见)
236
+ * @param x
237
+ * @param y
238
+ * @param width
239
+ * @param height
240
+ * @returns
241
+ */
242
+ private isShapeInRect;
243
+ /**
244
+ * 测试点位是否在图形边线上
245
+ * @param x 点位在 canvas 上的 x 坐标
246
+ * @param y 点位在 canvas 上的 y 坐标
247
+ * @param renderContext
248
+ */
249
+ abstract isPointInShape(x: number, y: number): boolean;
250
+ /**
251
+ * 测试点位是否在图形边框矩形内
252
+ * @param x 点位在 canvas 上的 x 坐标
253
+ * @param y 点位在 canvas 上的 y 坐标
254
+ */
255
+ isPointInShapeRect(x: number, y: number): boolean;
256
+ export(): ShapeReservedState;
257
+ /**
258
+ * 获取 rgn 信息,用来在设备之间传输,实现 shape 的移动和缩放
259
+ */
260
+ getRgnData(): string;
261
+ get minx(): number;
262
+ get miny(): number;
263
+ get maxx(): number;
264
+ get maxy(): number;
265
+ get width(): number;
266
+ get height(): number;
267
+ /**
268
+ * 中心点位置
269
+ */
270
+ get center(): {
271
+ x: number;
272
+ y: number;
273
+ };
274
+ /**
275
+ * deepcopy 存储变化开始时候的 points 位置
276
+ */
277
+ storeTransformStartPoints(): void;
278
+ onMoveStart(): void;
279
+ onMove(deltaX: number, deltaY: number): void;
280
+ onMoveEnd(deltaX: number, deltaY: number): void;
281
+ onResizeStart(x: number, y: number): void;
282
+ onResize(deltaX: number, deltaY: number, shiftPressing: boolean): void;
283
+ /**
284
+ * 对所有的点位根据 resizeOriginPosition 进行缩放
285
+ * @param xRatio
286
+ * @param yRatio
287
+ * @param resizeOriginPosition
288
+ */
289
+ resizeByRatio(xRatio: number, yRatio: number, resizeOriginPosition?: Point): void;
290
+ private updateRgnReverse;
291
+ onResizeEnd(deltaX: number, deltaY: number, shiftPressing: boolean): void;
292
+ /**
293
+ * 以中心点为基准旋转
294
+ * @param angle
295
+ */
296
+ onRotate(angle: number): void;
297
+ /**
298
+ * outline 上的 resize 把手
299
+ */
300
+ get outlineResizeHandles(): OutlineResizeHandle[];
301
+ destructor(): void;
302
+ genDrawMsg(name: string): IShapeData;
303
+ genRgnMsg(name: string): IShapeRgnData;
304
+ }
305
+
306
+ /**
307
+ * 图片图形,普通普通会缓存img对象,背景图(order='bg')的图片不缓存img
308
+ */
309
+ declare class Image extends BaseShape {
310
+ imgUrl: string;
311
+ clone(userId: string, shapeId: string): Image;
312
+ private loadedUrl;
313
+ private _img?;
314
+ get img(): HTMLImageElement | undefined;
315
+ set img(value: HTMLImageElement | undefined);
316
+ private gifData?;
317
+ private gifRenderInterval;
318
+ get shapeType(): ShapeType;
319
+ export(): ShapeReservedState;
320
+ constructor(baseConfig: {
321
+ points: Point[];
322
+ shapeId: string;
323
+ creator: string;
324
+ pageId: string;
325
+ }, imgUrl: string);
326
+ shouldSelectAfterAdd(): boolean;
327
+ genDrawMsg(userName: string): IShapeData;
328
+ loadImage(): Promise<HTMLImageElement>;
329
+ isPointInShape(x: number, y: number): boolean;
330
+ isGif(): any;
331
+ renderShape(renderContext: CanvasRenderingContext2D): void;
332
+ genRgnMsg(name: string): {
333
+ pageId: string;
334
+ name: string;
335
+ shape: ShapeType;
336
+ rgn: string;
337
+ };
338
+ destructor(): void;
339
+ }
340
+
341
+ declare class ShapeHistory {
342
+ actionType: HistoryActionType;
343
+ shapeId: string;
344
+ currentState: ShapeReservedState;
345
+ lastState?: ShapeReservedState;
346
+ shapeCreator: string;
347
+ constructor(actionType: HistoryActionType, shapeId: string, currentState: ShapeReservedState, lastState?: ShapeReservedState);
348
+ }
349
+ declare class BatchHistory {
350
+ actionType: HistoryActionType;
351
+ shapeStates: {
352
+ shapeId: string;
353
+ currentState: ShapeReservedState;
354
+ lastState?: ShapeReservedState;
355
+ }[];
356
+ constructor(actionType: HistoryActionType, shapeStates: {
357
+ shapeId: string;
358
+ currentState: ShapeReservedState;
359
+ lastState?: ShapeReservedState;
360
+ }[]);
361
+ }
362
+ declare enum HistoryActionType {
363
+ reveiveShape = 0,
364
+ newShape = 1,
365
+ hideShape = 2,
366
+ rgnShape = 3,
367
+ updateStyle = 4,
368
+ updateText = 5,
369
+ deleteShape = 6
370
+ }
371
+ declare class History extends EventEmitter<{
372
+ 'history-changed': (state: {
373
+ undo: boolean;
374
+ redo: boolean;
375
+ }) => void;
376
+ }> {
377
+ private undoList;
378
+ private redoList;
379
+ private emitHistoryEvent;
380
+ saveHistory(shapeHistory: ShapeHistory): void;
381
+ batchSave(batchHistory: BatchHistory): void;
382
+ undo(): ShapeHistory | BatchHistory;
383
+ redo(): ShapeHistory | BatchHistory;
384
+ clearAll(): void;
385
+ clearUserHistory(userId: string): void;
386
+ clearShapeHistory(shapeId: string): void;
387
+ canUndo(): boolean;
388
+ canRedo(): boolean;
389
+ }
390
+
391
+ declare class Page extends EventEmitter<{
392
+ 'background-image-updated': () => void;
393
+ 'page-content-updated': (page: Page) => void;
394
+ }> {
395
+ pageId: string;
396
+ private shapes;
397
+ private _backgroundColor;
398
+ private _backgroundImage?;
399
+ private _scale;
400
+ private _translate;
401
+ history: History;
402
+ get scale(): number;
403
+ set scale(value: number);
404
+ get translate(): [number, number];
405
+ set translate(value: [number, number]);
406
+ get miny(): number;
407
+ get minx(): number;
408
+ get visibleShapes(): BaseShape[];
409
+ get backgroundImage(): Image | undefined;
410
+ set backgroundImage(value: Image | undefined);
411
+ get backgroundColor(): string;
412
+ set backgroundColor(value: string);
413
+ addShape(shape: BaseShape): void;
414
+ getShapeBySeq(shapeSeq: string, userId: string): BaseShape;
415
+ /**
416
+ * 根据 page 中shapes 的 order 分类以及时间重新排序
417
+ */
418
+ updateShapesOrder(): void;
419
+ /**
420
+ * 返回当前页面内所有图形,包括背景图
421
+ * @returns
422
+ */
423
+ getShapes(): BaseShape[];
424
+ /**
425
+ * 清除所有图形
426
+ */
427
+ clearShapes(): void;
428
+ /**
429
+ * 清除所有图形和背景图
430
+ */
431
+ clearPage(): void;
432
+ /**
433
+ * 清除背景图
434
+ */
435
+ clearBackgroundImage(): void;
436
+ /**
437
+ * 清除某个用户的背景图
438
+ */
439
+ clearUserBackgroundImage(userId: string): void;
440
+ /**
441
+ * 清除某个用户的图形
442
+ * @param userId
443
+ */
444
+ clearUserShapes(userId: string): void;
445
+ removeShape(shapeId: string): void;
446
+ constructor(pageId: string);
447
+ reset(): void;
448
+ export(): {
449
+ pageId: string;
450
+ scale: number;
451
+ translate: [number, number];
452
+ backgroundColor: string;
453
+ backgroundImage: ShapeReservedState;
454
+ shapes: ShapeReservedState[];
455
+ };
456
+ static restore(data: any): Page;
457
+ private static restoreShapes;
458
+ restoreShapes(shapeStates: ShapeReservedState[]): BaseShape[];
459
+ }
460
+
461
+ interface IDomRect {
462
+ x: number;
463
+ y: number;
464
+ width: number;
465
+ height: number;
466
+ top: number;
467
+ right: number;
468
+ bottom: number;
469
+ left: number;
470
+ }
471
+
472
+ declare enum DocBrowserMode {
473
+ flip = "flip",
474
+ scroll = "scroll"
475
+ }
476
+ declare enum DocType {
477
+ 'normal' = "normal",
478
+ 'externalDoc' = "externalDoc",
479
+ 'h5' = "h5",
480
+ 'pdf' = "pdf"
481
+ }
482
+ declare abstract class BaseDoc extends EventEmitter<{
483
+ requestRender: (docId: string) => void;
484
+ 'viewport-updated': (docId: string) => void;
485
+ 'page-index-changed': (docId: string) => void;
486
+ }> {
487
+ /**
488
+ * 文档类型
489
+ */
490
+ abstract get type(): DocType;
491
+ /**
492
+ * 文档内所有页面是否共享缩放和平移属性
493
+ *
494
+ * @type {boolean}
495
+ */
496
+ abstract get sharePageSize(): boolean;
497
+ /**
498
+ * 是否可以增加、删除页面
499
+ */
500
+ abstract get canModifyPage(): boolean;
501
+ createdEventNotEmited: boolean;
502
+ docId: string;
503
+ name: string;
504
+ creator: string;
505
+ pageVersion: number;
506
+ fileKey?: string;
507
+ private pages;
508
+ private previousPageIndex;
509
+ curPageId: string;
510
+ maxSeq: number;
511
+ protected _browseMode: DocBrowserMode;
512
+ disableScale: boolean;
513
+ get browseMode(): DocBrowserMode;
514
+ set browseMode(mode: DocBrowserMode);
515
+ pageSize: {
516
+ width: number;
517
+ height: number;
518
+ };
519
+ private _scrollPages;
520
+ get scrollPages(): number;
521
+ set scrollPages(pages: number);
522
+ get width(): number;
523
+ get scrollPageHeight(): number;
524
+ get scrollHeight(): number;
525
+ get y(): number;
526
+ get currentPageIndex(): number;
527
+ set currentPageIndex(index: number);
528
+ get currentPage(): Page;
529
+ get totalPages(): number;
530
+ get scale(): number;
531
+ get translate(): number[];
532
+ sizeConfig: {
533
+ width: number;
534
+ height: number;
535
+ limited: boolean;
536
+ };
537
+ setSizeConfig(sizeConfig: {
538
+ width: number;
539
+ height: number;
540
+ limited: boolean;
541
+ }): void;
542
+ get isSizeLimited(): boolean;
543
+ getPageByPageId(pageId: string): any;
544
+ getPageIndexByPageId(pageId: string): any;
545
+ getPages(): Page[];
546
+ getPageAtIndex(index: number): Page;
547
+ generateNewPageId(): string;
548
+ addPage(page: Page, index?: number): void;
549
+ removePage(index: number): void;
550
+ /**
551
+ * 监听 page 更新事件,向外部发送渲染请求
552
+ * @param page
553
+ */
554
+ private setUpPageListeners;
555
+ protected requestRender(): void;
556
+ /**
557
+ * 通知外部文档更新,需要重新渲染
558
+ */
559
+ private onPageUpdated;
560
+ /**
561
+ * 根据pageId列表更新page,本地多的删掉,少的新建page补齐
562
+ * @param pageIds
563
+ */
564
+ regenerate(pageIds: string[]): void;
565
+ constructor(pageInfo: {
566
+ docId: string;
567
+ name: string;
568
+ creator: string;
569
+ curPageId: string;
570
+ pageVersion: number;
571
+ sizeConfig?: {
572
+ width: number;
573
+ height: number;
574
+ limited: boolean;
575
+ };
576
+ fileKey?: string;
577
+ browseMode: DocBrowserMode;
578
+ });
579
+ setScrollY(y: number, wrapperRect: IDomRect): void;
580
+ /**
581
+ * 设置画板偏移
582
+ * @param x 水平方向偏移
583
+ * @param y 竖直方向偏移 (如果是pdf view,只能垂直方向移动)
584
+ * @param smooth 是否平滑移动
585
+ * @param duration 平滑移动时间,默认 400 ms
586
+ */
587
+ setTranslate(x: number, y: number, wrapperRect: IDomRect, smooth?: boolean, duration?: number): void;
588
+ /**
589
+ * 设置当前白板视图的缩放比例,可以选择是否已白板中心作为缩放原点
590
+ * @param nextScale 缩放比例
591
+ * @param scaleByPosition 是否以某个位置为中心缩放,默认开启,且以当前画板中心为中心缩放
592
+ * @param scalePosition 指定缩放中心位置,如果不指定,则以当前画板中心为中心缩放
593
+ */
594
+ setScale(nextScale: number, scaleByPosition: boolean, wrapperRect: IDomRect, scalePosition?: {
595
+ x: number;
596
+ y: number;
597
+ }): void;
598
+ setScaleAndTranslate(nextScale: number, translate: number[], limited: boolean, wrapperRect: IDomRect): void;
599
+ /**
600
+ * 设置本地视角信息
601
+ * @param visionInfo 视角信息
602
+ */
603
+ setDocViewport(visionInfo: {
604
+ width: number;
605
+ height: number;
606
+ minx: number;
607
+ miny: number;
608
+ }, wrapperRect: IDomRect, page?: Page): void;
609
+ /**
610
+ * 获取 sizeConfig 下或 白板在"scroll"模式下的被限定,在当前画布大小下缩放居中之后真实的画布大小
611
+ *
612
+ */
613
+ private getSizeConfigLimitSize;
614
+ /**
615
+ * 以 传入的点位更新当前白板页面 scale 比例,如果白板被限制大小,会自动计算出合适的 scale 和 translate
616
+ * @param nextScale 要更新的 scale
617
+ * @param originalX 缩放点的 x 坐标,点位是在白板 canvas 元素上的位置
618
+ * @param originalY 缩放点的 y 坐标,点位是在白板 canvas 元素上的位置
619
+ */
620
+ updateBoardWithNewScale: (nextScale: number, originalX: number, originalY: number, rect: IDomRect) => void;
621
+ /**
622
+ * 根据传入的translate 和 scale计算出视窗位置
623
+ */
624
+ private getPotentialViewportPosition;
625
+ /**
626
+ * 计算在被限定大小的情况下,在某个缩放值下,translate能取的极限值
627
+ * @param scale
628
+ * @param viewport 限定的视窗位置
629
+ */
630
+ private getLimitedTranslate;
631
+ scaleBoardFitBackgroundImage(page: Page, wrapperRect: IDomRect, bgScaleMode: ImageScalingMode): void;
632
+ /**
633
+ * 返回文档可见区域的坐标
634
+ */
635
+ getDocViewportPosition(wrapperRect: IDomRect): {
636
+ minx: number;
637
+ miny: number;
638
+ maxx: number;
639
+ maxy: number;
640
+ };
641
+ export(): {
642
+ docId: string;
643
+ name: string;
644
+ creator: string;
645
+ pageIndex: number;
646
+ pageVersion: number;
647
+ pages: {
648
+ pageId: string;
649
+ scale: number;
650
+ translate: [number, number];
651
+ backgroundColor: string;
652
+ backgroundImage: ShapeReservedState;
653
+ shapes: ShapeReservedState[];
654
+ }[];
655
+ fileKey: string;
656
+ };
657
+ toJson(): {
658
+ docId: string;
659
+ name: string;
660
+ creator: string;
661
+ pageIndex: number;
662
+ pageLength: number;
663
+ fileKey: string;
664
+ };
665
+ /**
666
+ * 清除所有页面数据
667
+ */
668
+ clear(): void;
669
+ clearPageById(pageId: string): void;
670
+ /**
671
+ * 清除某个用户所有图形
672
+ * @param userId
673
+ */
674
+ clearUserShapes(userId: string): void;
675
+ /**
676
+ * 清除某个用户背景图
677
+ * @param userId
678
+ */
679
+ clearUserBackgroundImage(userId: string): void;
680
+ reset(): void;
681
+ }
682
+
683
+ interface PDFViewer {
684
+ pageIndex: number;
685
+ width: number;
686
+ totalHeight: number;
687
+ domRef: HTMLDivElement;
688
+ state: 'notloaded' | 'loading' | 'loaded';
689
+ url: string;
690
+ y: number;
691
+ pdfPages: Map<number, {
692
+ viewport: pdfjs_dist_types_src_display_display_utils.PageViewport;
693
+ rendered: boolean;
694
+ top: number;
695
+ img: HTMLImageElement;
696
+ domRef: HTMLDivElement;
697
+ skeleton: HTMLDivElement;
698
+ pdfProxy: pdfjs_dist_types_src_display_api.PDFPageProxy;
699
+ rendering: boolean;
700
+ }>;
701
+ /**
702
+ * pdf 页面加载完之后按顺序保存每页的高度(累计高度),用于计算当前页面的高度
703
+ */
704
+ pageHightList: number[];
705
+ }
706
+ /**
707
+ * pdf 文档
708
+ */
709
+ declare class PdfDoc extends BaseDoc {
710
+ pdfViewer: PDFViewer;
711
+ static DOC_TYPE: DocType;
712
+ get browseMode(): DocBrowserMode;
713
+ set browseMode(mode: DocBrowserMode);
714
+ get type(): DocType;
715
+ get sharePageSize(): boolean;
716
+ get canModifyPage(): boolean;
717
+ get width(): number;
718
+ get scrollHeight(): number;
719
+ url: string;
720
+ lastSyncY: number;
721
+ /**
722
+ * 缓存当前页面高度范围,减少计算页码运算
723
+ */
724
+ private currentPageMem;
725
+ /**
726
+ * 判断当前滚动位置是否在当前缓存的页面范围内
727
+ */
728
+ private isInCurrentMemPage;
729
+ get currentPageIndex(): number;
730
+ constructor(docInfo: {
731
+ docId: string;
732
+ name: string;
733
+ creator: string;
734
+ curPageId: string;
735
+ pageVersion: number;
736
+ fileKey?: string;
737
+ browseMode: DocBrowserMode;
738
+ }, pdfViewer: PDFViewer);
739
+ load(): Promise<any>;
740
+ setScrollY(y: number, wrapperRect: IDomRect): void;
741
+ setScaleAndTranslate(nextScale: number, translate: number[], limited: boolean, wrapperRect: IDomRect): void;
742
+ createPdfLoadingPage(): void;
743
+ centerPdfDoc(): void;
744
+ protected getPdfVisiblePage(wrapperRect: IDomRect): {
745
+ pagesNum: number;
746
+ start: number;
747
+ end: number;
748
+ firstVisibleIndex: number;
749
+ lastVisibleIndex: number;
750
+ };
751
+ /**
752
+ * 检测当前滚动位置,显示周围几张PDF图片
753
+ */
754
+ lazyLoadPdfPage: any;
755
+ /**
756
+ * 检测当前展示位置,如果当前位置的pfd未渲染,则开始渲染当前页面
757
+ */
758
+ lazyRenderPdfPage: any;
759
+ }
760
+
761
+ declare class PdfPlugin {
762
+ static getDevicePixelRatio(): number;
763
+ static loadPdf(url: string, doc: PdfDoc): Promise<void>;
764
+ private static preparePdfPage;
765
+ static updatePdfWidth(doc: PdfDoc, newWidth: number): void;
766
+ }
767
+
768
+ export { PdfPlugin, PdfPlugin as default };