@netless/forge-slide 0.1.0 → 0.1.1-alpha.1
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/dist/Slide.d.ts +57 -1
- package/dist/Slide.d.ts.map +1 -1
- package/dist/SlideApplication.d.ts +7 -1
- package/dist/SlideApplication.d.ts.map +1 -1
- package/dist/index.esm.js +190 -11
- package/dist/index.esm.js.map +2 -2
- package/dist/index.js +190 -11
- package/dist/index.js.map +3 -3
- package/package.json +6 -5
- package/src/Slide.ts +57 -2
- package/src/SlideApplication.ts +164 -18
package/dist/Slide.d.ts
CHANGED
|
@@ -19,15 +19,71 @@ export interface SlideEvents {
|
|
|
19
19
|
* @param {number} pageIndex 页面索引
|
|
20
20
|
*/
|
|
21
21
|
renderEnd: (pageIndex: number) => void;
|
|
22
|
+
/**
|
|
23
|
+
* 主序列动画完成时触发
|
|
24
|
+
* @param {number} animateIndex 主动画索引
|
|
25
|
+
*/
|
|
26
|
+
mainSeqStepEnd: (animateIndex: number) => void;
|
|
27
|
+
/**
|
|
28
|
+
* 主序列动画开始时触发
|
|
29
|
+
* @param {number} animateIndex 主动画索引
|
|
30
|
+
*/
|
|
31
|
+
mainSeqStepStart: (animateIndex: number) => void;
|
|
22
32
|
}
|
|
23
33
|
export declare class SlideForge extends EventEmitter<SlideEvents> implements ApplicationInstanceType {
|
|
24
34
|
readonly view: HTMLDivElement;
|
|
25
35
|
readonly permissions: ForgeSlidePermissions;
|
|
36
|
+
readonly footView: HTMLDivElement;
|
|
37
|
+
/**
|
|
38
|
+
* 当前页面索引, 从 0 开始
|
|
39
|
+
*/
|
|
26
40
|
readonly pageIndex: number;
|
|
41
|
+
/**
|
|
42
|
+
* 总页数
|
|
43
|
+
*/
|
|
44
|
+
readonly pageCount: number;
|
|
27
45
|
/**
|
|
28
46
|
* 切换到参数指定页面, index 从 0 开始
|
|
29
47
|
* @param {number} index 页面索引
|
|
30
48
|
*/
|
|
31
|
-
goto: (index: number) =>
|
|
49
|
+
goto: (index: number) => void;
|
|
50
|
+
/**
|
|
51
|
+
* 下一步, 如果已经是本页的最后一步, 则切换到下一页
|
|
52
|
+
*/
|
|
53
|
+
nextStep: () => void;
|
|
54
|
+
/**
|
|
55
|
+
* 上一步, 如果已经是本页的第一步, 则切换到上一页
|
|
56
|
+
*/
|
|
57
|
+
prevStep: () => void;
|
|
58
|
+
/**
|
|
59
|
+
* 下一页, 如果是最后一页, 则不执行任何操作
|
|
60
|
+
*/
|
|
61
|
+
nextPage: () => void;
|
|
62
|
+
/**
|
|
63
|
+
* 上一页, 如果是第一页, 则不执行任何操作
|
|
64
|
+
*/
|
|
65
|
+
prevPage: () => void;
|
|
66
|
+
/**
|
|
67
|
+
* 切换侧栏显示状态
|
|
68
|
+
*/
|
|
69
|
+
sideBarToggle: () => void;
|
|
70
|
+
/**
|
|
71
|
+
* 获取预览图图片内容, base64 编码
|
|
72
|
+
* @param {number} index 页面索引
|
|
73
|
+
*/
|
|
74
|
+
imgContent: (index: number) => Promise<string>;
|
|
75
|
+
/**
|
|
76
|
+
* 获取预览图图片链接
|
|
77
|
+
* @param {number} index 页面索引
|
|
78
|
+
*/
|
|
79
|
+
imgUrl: (index: number) => Promise<string>;
|
|
80
|
+
/**
|
|
81
|
+
* 获取预览图图片尺寸
|
|
82
|
+
* @param {number} index 页面索引
|
|
83
|
+
*/
|
|
84
|
+
imgSize: (index: number) => Promise<{
|
|
85
|
+
width: number;
|
|
86
|
+
height: number;
|
|
87
|
+
}>;
|
|
32
88
|
}
|
|
33
89
|
//# sourceMappingURL=Slide.d.ts.map
|
package/dist/Slide.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slide.d.ts","sourceRoot":"","sources":["../src/Slide.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEzF,MAAM,WAAW,WAAW;IACxB;;;;;OAKG;IACH,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7F;;;OAGG;IACH,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC;;;OAGG;IACH,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Slide.d.ts","sourceRoot":"","sources":["../src/Slide.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEzF,MAAM,WAAW,WAAW;IACxB;;;;;OAKG;IACH,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7F;;;OAGG;IACH,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC;;;OAGG;IACH,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC;;;OAGG;IACH,cAAc,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAE/C;;;OAGG;IACH,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAGD,qBAAa,UAAW,SAAQ,YAAY,CAAC,WAAW,CAAE,YAAW,uBAAuB;IAExF,SAAgB,IAAI,EAAG,cAAc,CAAC;IACtC,SAAgB,WAAW,EAAG,qBAAqB,CAAC;IACpD,SAAgB,QAAQ,EAAG,cAAc,CAAC;IAC1C;;OAEG;IACH,SAAgB,SAAS,EAAG,MAAM,CAAC;IACnC;;OAEG;IACH,SAAgB,SAAS,EAAG,MAAM,CAAC;IACnC;;;OAGG;IACI,IAAI,EAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC;;OAEG;IACI,QAAQ,EAAG,MAAM,IAAI,CAAA;IAC5B;;OAEG;IACI,QAAQ,EAAG,MAAM,IAAI,CAAA;IAC5B;;OAEG;IACI,QAAQ,EAAG,MAAM,IAAI,CAAA;IAC5B;;OAEG;IACI,QAAQ,EAAG,MAAM,IAAI,CAAA;IAC5B;;OAEG;IACI,aAAa,EAAG,MAAM,IAAI,CAAA;IAEjC;;;OAGG;IACI,UAAU,EAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD;;;OAGG;IACI,MAAM,EAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD;;;OAGG;IACI,OAAO,EAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;CAChF"}
|
|
@@ -14,6 +14,7 @@ export declare const Slide_APP_NAME = "forge_slide";
|
|
|
14
14
|
export declare class SlideApplication extends AbstractApplication<SlideApplicationOption, SlideForge> {
|
|
15
15
|
static applicationName: string;
|
|
16
16
|
readonly name: string;
|
|
17
|
+
readonly emitter: SlideForge;
|
|
17
18
|
private whiteboardApp;
|
|
18
19
|
private whiteboard;
|
|
19
20
|
private rootView;
|
|
@@ -25,8 +26,13 @@ export declare class SlideApplication extends AbstractApplication<SlideApplicati
|
|
|
25
26
|
private sideBar;
|
|
26
27
|
private slide;
|
|
27
28
|
private currentSlideIndex;
|
|
29
|
+
private taskId;
|
|
30
|
+
private prefix;
|
|
28
31
|
constructor();
|
|
29
|
-
|
|
32
|
+
private getPreviewImage;
|
|
33
|
+
private getImageUrl;
|
|
34
|
+
private getImageSize;
|
|
35
|
+
private getImageContent;
|
|
30
36
|
private applySlideState;
|
|
31
37
|
private onSlideEventHandler;
|
|
32
38
|
initialize(option: SlideApplicationOption): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlideApplication.d.ts","sourceRoot":"","sources":["../src/SlideApplication.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"SlideApplication.d.ts","sourceRoot":"","sources":["../src/SlideApplication.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AAQnC,MAAM,WAAW,sBAAsB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AASD,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAE5C,qBAAa,gBAAiB,SAAQ,mBAAmB,CAAC,sBAAsB,EAAE,UAAU,CAAC;IAEzF,MAAM,CAAC,eAAe,SAAkB;IAExC,SAAgB,IAAI,EAAE,MAAM,CAAkB;IAC9C,SAAgB,OAAO,EAAE,UAAU,CAAoB;IAEvD,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,QAAQ,CAAiD;IACjE,OAAO,CAAC,gBAAgB,CAAiD;IACzE,OAAO,CAAC,mBAAmB,CAAiD;IAC5E,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAc;;YAkLd,eAAe;YAuBf,WAAW;YAIX,YAAY;YAiBZ,eAAe;IAiB7B,OAAO,CAAC,eAAe,CAYtB;IAED,OAAO,CAAC,mBAAmB,CAS1B;IAEY,UAAU,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoItE,OAAO,CAAC,OAAO;IAIF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CASxC"}
|
package/dist/index.esm.js
CHANGED
|
@@ -66585,12 +66585,55 @@ import EventEmitter14 from "eventemitter3";
|
|
|
66585
66585
|
var SlideForge = class extends EventEmitter14 {
|
|
66586
66586
|
view;
|
|
66587
66587
|
permissions;
|
|
66588
|
+
footView;
|
|
66589
|
+
/**
|
|
66590
|
+
* 当前页面索引, 从 0 开始
|
|
66591
|
+
*/
|
|
66588
66592
|
pageIndex;
|
|
66593
|
+
/**
|
|
66594
|
+
* 总页数
|
|
66595
|
+
*/
|
|
66596
|
+
pageCount;
|
|
66589
66597
|
/**
|
|
66590
66598
|
* 切换到参数指定页面, index 从 0 开始
|
|
66591
66599
|
* @param {number} index 页面索引
|
|
66592
66600
|
*/
|
|
66593
66601
|
goto;
|
|
66602
|
+
/**
|
|
66603
|
+
* 下一步, 如果已经是本页的最后一步, 则切换到下一页
|
|
66604
|
+
*/
|
|
66605
|
+
nextStep;
|
|
66606
|
+
/**
|
|
66607
|
+
* 上一步, 如果已经是本页的第一步, 则切换到上一页
|
|
66608
|
+
*/
|
|
66609
|
+
prevStep;
|
|
66610
|
+
/**
|
|
66611
|
+
* 下一页, 如果是最后一页, 则不执行任何操作
|
|
66612
|
+
*/
|
|
66613
|
+
nextPage;
|
|
66614
|
+
/**
|
|
66615
|
+
* 上一页, 如果是第一页, 则不执行任何操作
|
|
66616
|
+
*/
|
|
66617
|
+
prevPage;
|
|
66618
|
+
/**
|
|
66619
|
+
* 切换侧栏显示状态
|
|
66620
|
+
*/
|
|
66621
|
+
sideBarToggle;
|
|
66622
|
+
/**
|
|
66623
|
+
* 获取预览图图片内容, base64 编码
|
|
66624
|
+
* @param {number} index 页面索引
|
|
66625
|
+
*/
|
|
66626
|
+
imgContent;
|
|
66627
|
+
/**
|
|
66628
|
+
* 获取预览图图片链接
|
|
66629
|
+
* @param {number} index 页面索引
|
|
66630
|
+
*/
|
|
66631
|
+
imgUrl;
|
|
66632
|
+
/**
|
|
66633
|
+
* 获取预览图图片尺寸
|
|
66634
|
+
* @param {number} index 页面索引
|
|
66635
|
+
*/
|
|
66636
|
+
imgSize;
|
|
66594
66637
|
};
|
|
66595
66638
|
|
|
66596
66639
|
// src/ForgeSlidePermession.ts
|
|
@@ -66934,10 +66977,12 @@ async function delay2(time) {
|
|
|
66934
66977
|
}
|
|
66935
66978
|
|
|
66936
66979
|
// src/SlideApplication.ts
|
|
66980
|
+
import { kvStore } from "@netless/forge-room";
|
|
66937
66981
|
var Slide_APP_NAME = "forge_slide";
|
|
66938
66982
|
var SlideApplication = class extends AbstractApplication2 {
|
|
66939
66983
|
static applicationName = Slide_APP_NAME;
|
|
66940
66984
|
name = Slide_APP_NAME;
|
|
66985
|
+
emitter = new SlideForge();
|
|
66941
66986
|
whiteboardApp;
|
|
66942
66987
|
whiteboard;
|
|
66943
66988
|
rootView = document.createElement("div");
|
|
@@ -66949,8 +66994,11 @@ var SlideApplication = class extends AbstractApplication2 {
|
|
|
66949
66994
|
sideBar;
|
|
66950
66995
|
slide;
|
|
66951
66996
|
currentSlideIndex = 0;
|
|
66997
|
+
taskId = "";
|
|
66998
|
+
prefix = "";
|
|
66952
66999
|
constructor() {
|
|
66953
67000
|
super();
|
|
67001
|
+
window.emitter = this.emitter;
|
|
66954
67002
|
this.rootView.setAttribute("data-forge-app", Slide_APP_NAME);
|
|
66955
67003
|
this.rootView.style.background = "#f0f0f0f0";
|
|
66956
67004
|
this.rootView.style.overflow = "hidden";
|
|
@@ -66963,7 +67011,9 @@ var SlideApplication = class extends AbstractApplication2 {
|
|
|
66963
67011
|
this.footer = new FooterView();
|
|
66964
67012
|
this.sideBar = new SideBarView();
|
|
66965
67013
|
this.sideBar.on("pageChange", (index) => {
|
|
66966
|
-
this.slide.
|
|
67014
|
+
if (index > 0 && index <= this.slide.slideCount) {
|
|
67015
|
+
this.slide.renderSlide(index);
|
|
67016
|
+
}
|
|
66967
67017
|
});
|
|
66968
67018
|
this.footer.on("prevStep", () => {
|
|
66969
67019
|
if (!this.permissions.hasPermission(1 /* changeStep */)) {
|
|
@@ -67032,28 +67082,147 @@ var SlideApplication = class extends AbstractApplication2 {
|
|
|
67032
67082
|
return that.permissions;
|
|
67033
67083
|
}
|
|
67034
67084
|
});
|
|
67085
|
+
Object.defineProperty(this.emitter, "footView", {
|
|
67086
|
+
get() {
|
|
67087
|
+
return that.footer.root;
|
|
67088
|
+
}
|
|
67089
|
+
});
|
|
67035
67090
|
Object.defineProperty(this.emitter, "pageIndex", {
|
|
67036
67091
|
get() {
|
|
67037
67092
|
return that.currentSlideIndex;
|
|
67038
67093
|
}
|
|
67039
67094
|
});
|
|
67040
|
-
Object.defineProperty(this.emitter, "
|
|
67095
|
+
Object.defineProperty(this.emitter, "pageCount", {
|
|
67041
67096
|
get() {
|
|
67042
|
-
return
|
|
67043
|
-
|
|
67044
|
-
|
|
67045
|
-
|
|
67046
|
-
|
|
67097
|
+
return that.slide.slideCount;
|
|
67098
|
+
}
|
|
67099
|
+
});
|
|
67100
|
+
Object.defineProperty(this.emitter, "goto", {
|
|
67101
|
+
writable: false,
|
|
67102
|
+
enumerable: false,
|
|
67103
|
+
value: (pageIndex) => {
|
|
67104
|
+
this.sideBar.emit("pageChange", pageIndex);
|
|
67105
|
+
}
|
|
67106
|
+
});
|
|
67107
|
+
Object.defineProperty(this.emitter, "nextStep", {
|
|
67108
|
+
writable: false,
|
|
67109
|
+
enumerable: false,
|
|
67110
|
+
value: () => {
|
|
67111
|
+
this.footer.emit("nextStep");
|
|
67112
|
+
}
|
|
67113
|
+
});
|
|
67114
|
+
Object.defineProperty(this.emitter, "prevStep", {
|
|
67115
|
+
writable: false,
|
|
67116
|
+
enumerable: false,
|
|
67117
|
+
value: () => {
|
|
67118
|
+
this.footer.emit("prevStep");
|
|
67119
|
+
}
|
|
67120
|
+
});
|
|
67121
|
+
Object.defineProperty(this.emitter, "nextPage", {
|
|
67122
|
+
writable: false,
|
|
67123
|
+
enumerable: false,
|
|
67124
|
+
value: () => {
|
|
67125
|
+
this.footer.emit("nextPage");
|
|
67126
|
+
}
|
|
67127
|
+
});
|
|
67128
|
+
Object.defineProperty(this.emitter, "prevPage", {
|
|
67129
|
+
writable: false,
|
|
67130
|
+
enumerable: false,
|
|
67131
|
+
value: () => {
|
|
67132
|
+
this.footer.emit("prevPage");
|
|
67133
|
+
}
|
|
67134
|
+
});
|
|
67135
|
+
Object.defineProperty(this.emitter, "sideBarToggle", {
|
|
67136
|
+
writable: false,
|
|
67137
|
+
enumerable: false,
|
|
67138
|
+
value: () => {
|
|
67139
|
+
this.footer.emit("sideBarToggle");
|
|
67140
|
+
}
|
|
67141
|
+
});
|
|
67142
|
+
Object.defineProperty(this.emitter, "imgContent", {
|
|
67143
|
+
writable: false,
|
|
67144
|
+
enumerable: false,
|
|
67145
|
+
value: (pageIndex) => {
|
|
67146
|
+
return this.getImageContent(pageIndex);
|
|
67147
|
+
}
|
|
67148
|
+
});
|
|
67149
|
+
Object.defineProperty(this.emitter, "imgUrl", {
|
|
67150
|
+
writable: false,
|
|
67151
|
+
enumerable: false,
|
|
67152
|
+
value: (pageIndex) => {
|
|
67153
|
+
return this.getImageUrl(pageIndex);
|
|
67154
|
+
}
|
|
67155
|
+
});
|
|
67156
|
+
Object.defineProperty(this.emitter, "imgSize", {
|
|
67157
|
+
writable: false,
|
|
67158
|
+
enumerable: false,
|
|
67159
|
+
value: (pageIndex) => {
|
|
67160
|
+
return this.getImageSize(pageIndex);
|
|
67047
67161
|
}
|
|
67048
67162
|
});
|
|
67049
67163
|
}
|
|
67050
|
-
|
|
67164
|
+
async getPreviewImage(imageUrl) {
|
|
67165
|
+
const image = fetch(imageUrl);
|
|
67166
|
+
return await image.then((res) => res.blob()).then((blob) => {
|
|
67167
|
+
return new Promise((resolve) => {
|
|
67168
|
+
const reader = new FileReader();
|
|
67169
|
+
reader.onloadend = () => {
|
|
67170
|
+
const base64Data = reader.result;
|
|
67171
|
+
const img = document.createElement("img");
|
|
67172
|
+
img.src = base64Data;
|
|
67173
|
+
img.onload = () => {
|
|
67174
|
+
resolve({
|
|
67175
|
+
url: imageUrl,
|
|
67176
|
+
src: base64Data,
|
|
67177
|
+
width: img.width,
|
|
67178
|
+
height: img.height
|
|
67179
|
+
});
|
|
67180
|
+
};
|
|
67181
|
+
};
|
|
67182
|
+
reader.readAsDataURL(blob);
|
|
67183
|
+
});
|
|
67184
|
+
});
|
|
67185
|
+
}
|
|
67186
|
+
async getImageUrl(pageIndex) {
|
|
67187
|
+
return `${this.prefix}/${this.taskId}/preview/${pageIndex + 1}.png`;
|
|
67188
|
+
}
|
|
67189
|
+
async getImageSize(pageIndex) {
|
|
67190
|
+
const imageUrl = `${this.prefix}/${this.taskId}/preview/${pageIndex + 1}.png`;
|
|
67191
|
+
let preview = null;
|
|
67192
|
+
try {
|
|
67193
|
+
const result = await kvStore.getItem(imageUrl);
|
|
67194
|
+
preview = result ? JSON.parse(result) : null;
|
|
67195
|
+
} catch (e) {
|
|
67196
|
+
console.warn("kvStore getItem error", e);
|
|
67197
|
+
}
|
|
67198
|
+
if (preview) {
|
|
67199
|
+
return { width: preview.width, height: preview.height };
|
|
67200
|
+
}
|
|
67201
|
+
preview = await this.getPreviewImage(imageUrl);
|
|
67202
|
+
await kvStore.setItem(imageUrl, JSON.stringify(preview));
|
|
67203
|
+
return { width: preview.width, height: preview.height };
|
|
67204
|
+
}
|
|
67205
|
+
async getImageContent(pageIndex) {
|
|
67206
|
+
const imageUrl = `${this.prefix}/${this.taskId}/preview/${pageIndex + 1}.png`;
|
|
67207
|
+
let preview = null;
|
|
67208
|
+
try {
|
|
67209
|
+
const result = await kvStore.getItem(imageUrl);
|
|
67210
|
+
preview = result ? JSON.parse(result) : null;
|
|
67211
|
+
} catch (e) {
|
|
67212
|
+
console.warn("kvStore getItem error", e);
|
|
67213
|
+
}
|
|
67214
|
+
if (preview) {
|
|
67215
|
+
return preview.src;
|
|
67216
|
+
}
|
|
67217
|
+
preview = await this.getPreviewImage(imageUrl);
|
|
67218
|
+
await kvStore.setItem(imageUrl, JSON.stringify(preview));
|
|
67219
|
+
return preview.src;
|
|
67220
|
+
}
|
|
67051
67221
|
applySlideState = async (slideState, lastDispatch) => {
|
|
67052
67222
|
if (this.slide.slideState.currentSlideIndex < 0) {
|
|
67053
67223
|
this.slide.emit(import_slide.SLIDE_EVENTS.syncReceive, lastDispatch);
|
|
67054
67224
|
return;
|
|
67055
67225
|
}
|
|
67056
|
-
console.log("%cisEqual", "color: blue; font-size: 20px;", deepEqual(this.slide.slideState, slideState));
|
|
67057
67226
|
if (this.slide.slideState.currentSlideIndex > 0 && deepEqual(this.slide.slideState, slideState)) {
|
|
67058
67227
|
this.slide.emit(import_slide.SLIDE_EVENTS.syncReceive, lastDispatch);
|
|
67059
67228
|
} else {
|
|
@@ -67073,6 +67242,8 @@ var SlideApplication = class extends AbstractApplication2 {
|
|
|
67073
67242
|
}
|
|
67074
67243
|
};
|
|
67075
67244
|
async initialize(option) {
|
|
67245
|
+
this.prefix = option.prefix;
|
|
67246
|
+
this.taskId = option.taskId;
|
|
67076
67247
|
const whiteboardApp = new WhiteboardApplication();
|
|
67077
67248
|
whiteboardApp.roomDoc = this.roomDoc;
|
|
67078
67249
|
whiteboardApp.appId = `${option.taskId}_wb`;
|
|
@@ -67106,7 +67277,6 @@ var SlideApplication = class extends AbstractApplication2 {
|
|
|
67106
67277
|
this.contentContainer.appendChild(this.sideBar.root);
|
|
67107
67278
|
if (option.inheritWhiteboardId) {
|
|
67108
67279
|
whiteboardApp.linkToWhiteboard(option.inheritWhiteboardId);
|
|
67109
|
-
console.log("inheritWhiteboardId", option.inheritWhiteboardId);
|
|
67110
67280
|
}
|
|
67111
67281
|
this.whiteboard.setViewModeToMain();
|
|
67112
67282
|
this.slideContainer.setAttribute("builder", "slide-builder");
|
|
@@ -67129,14 +67299,22 @@ var SlideApplication = class extends AbstractApplication2 {
|
|
|
67129
67299
|
dispatch: event
|
|
67130
67300
|
});
|
|
67131
67301
|
});
|
|
67302
|
+
this.slide.on("mainSeqStepStart", (animateIndex) => {
|
|
67303
|
+
this.emitter.emit("mainSeqStepStart", animateIndex);
|
|
67304
|
+
});
|
|
67305
|
+
this.slide.on("mainSeqStepEnd", (animateIndex) => {
|
|
67306
|
+
this.emitter.emit("mainSeqStepEnd", animateIndex);
|
|
67307
|
+
});
|
|
67132
67308
|
this.slide.on("renderStart", (slideIndex) => {
|
|
67133
67309
|
this.whiteboardApp.emitter.view.style.opacity = "0";
|
|
67134
67310
|
this.whiteboardApp.emitter.addPage(`${slideIndex}`);
|
|
67135
67311
|
this.whiteboardApp.emitter.gotoPage(`${slideIndex}`);
|
|
67312
|
+
this.emitter.emit("renderStart", slideIndex);
|
|
67136
67313
|
});
|
|
67137
67314
|
this.slide.on("renderEnd", (slideIndex) => {
|
|
67138
67315
|
this.currentSlideIndex = slideIndex;
|
|
67139
67316
|
this.whiteboardApp.emitter.view.style.opacity = "1";
|
|
67317
|
+
this.emitter.emit("renderEnd", slideIndex);
|
|
67140
67318
|
});
|
|
67141
67319
|
this.slide.on("stateChange", (state) => {
|
|
67142
67320
|
this.getMap(this.name).set("slideState", state);
|
|
@@ -67144,6 +67322,7 @@ var SlideApplication = class extends AbstractApplication2 {
|
|
|
67144
67322
|
this.getMap(this.name).observe(this.onSlideEventHandler);
|
|
67145
67323
|
window.slide = this.slide;
|
|
67146
67324
|
window.slideWhiteboard = this.whiteboardApp;
|
|
67325
|
+
window.forgeSlide = this;
|
|
67147
67326
|
const syncSlide = this.getMap(this.name).get("slideState");
|
|
67148
67327
|
if (syncSlide && syncSlide.taskId === option.taskId) {
|
|
67149
67328
|
await this.slide.setSlideState(syncSlide);
|
|
@@ -67154,7 +67333,7 @@ var SlideApplication = class extends AbstractApplication2 {
|
|
|
67154
67333
|
return this.userMap(userId);
|
|
67155
67334
|
});
|
|
67156
67335
|
this.permissions.on("change", (userId, flags, value) => {
|
|
67157
|
-
|
|
67336
|
+
this.emitter.emit("permissionChange", userId, flags, value);
|
|
67158
67337
|
if (this.userId === userId) {
|
|
67159
67338
|
if (flags.includes(4 /* clickAnim */)) {
|
|
67160
67339
|
this.slideContainer.style.pointerEvents = "auto";
|