@netless/app-slide 0.2.7 → 0.2.10
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/SlideController/index.d.ts +1 -0
- package/dist/SlideDocsViewer/index.d.ts +3 -0
- package/dist/main.cjs.js +251 -1041
- package/dist/main.cjs.js.map +1 -1
- package/dist/main.es.js +20974 -28383
- package/dist/main.es.js.map +1 -1
- package/dist/main.iife.js +251 -1041
- package/dist/main.iife.js.map +1 -1
- package/package.json +3 -4
- package/src/SlideController/index.ts +1 -1
- package/src/SlideDocsViewer/index.ts +18 -0
- package/src/SlideDocsViewer/style.scss +16 -0
- package/src/SlidePreviewer/index.ts +0 -1
- package/src/index.ts +1 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@netless/app-slide",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.10",
|
|
4
4
|
"main": "dist/main.cjs.js",
|
|
5
5
|
"module": "dist/main.es.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -10,11 +10,10 @@
|
|
|
10
10
|
"README-zh.md"
|
|
11
11
|
],
|
|
12
12
|
"devDependencies": {
|
|
13
|
-
"@netless/
|
|
14
|
-
"@netless/slide": "^0.6.1",
|
|
13
|
+
"@netless/slide": "^0.6.5",
|
|
15
14
|
"@types/color-string": "^1.5.2",
|
|
16
15
|
"color-string": "^1.9.1",
|
|
17
|
-
"side-effect-manager": "^1.1
|
|
16
|
+
"side-effect-manager": "^1.2.1",
|
|
18
17
|
"vanilla-lazyload": "^17.8.3"
|
|
19
18
|
},
|
|
20
19
|
"scripts": {
|
|
@@ -31,6 +31,7 @@ export const EmptyAttributes: Attributes = {
|
|
|
31
31
|
export interface SlideControllerOptions {
|
|
32
32
|
context: AppContext<Attributes, MagixEvents, AppOptions>;
|
|
33
33
|
anchor: HTMLDivElement;
|
|
34
|
+
onRenderEnd: () => void;
|
|
34
35
|
onPageChanged: (page: number) => void;
|
|
35
36
|
onTransitionStart: () => void;
|
|
36
37
|
onTransitionEnd: () => void;
|
|
@@ -252,7 +253,6 @@ export class SlideController {
|
|
|
252
253
|
anchor,
|
|
253
254
|
interactive: true,
|
|
254
255
|
mode: "interactive",
|
|
255
|
-
resize: true,
|
|
256
256
|
controller: logger.enable,
|
|
257
257
|
enableGlobalClick: true,
|
|
258
258
|
renderOptions: {
|
|
@@ -54,10 +54,12 @@ export class SlideDocsViewer {
|
|
|
54
54
|
|
|
55
55
|
public $slide!: HTMLDivElement;
|
|
56
56
|
public $whiteboardView!: HTMLDivElement;
|
|
57
|
+
public $overlay!: HTMLDivElement;
|
|
57
58
|
|
|
58
59
|
public render() {
|
|
59
60
|
this.viewer.$content.appendChild(this.renderSlideContainer());
|
|
60
61
|
this.viewer.$content.appendChild(this.renderWhiteboardView());
|
|
62
|
+
this.viewer.$content.appendChild(this.renderOverlay());
|
|
61
63
|
this.sideEffect.addEventListener(window, "keydown", ev => {
|
|
62
64
|
if (this.box.focus && this.slideController) {
|
|
63
65
|
switch (ev.key) {
|
|
@@ -79,6 +81,15 @@ export class SlideDocsViewer {
|
|
|
79
81
|
});
|
|
80
82
|
}
|
|
81
83
|
|
|
84
|
+
protected renderOverlay(): HTMLDivElement {
|
|
85
|
+
if (!this.$overlay) {
|
|
86
|
+
const $overlay = document.createElement("div");
|
|
87
|
+
$overlay.className = this.wrapClassName("overlay");
|
|
88
|
+
this.$overlay = $overlay;
|
|
89
|
+
}
|
|
90
|
+
return this.$overlay;
|
|
91
|
+
}
|
|
92
|
+
|
|
82
93
|
protected renderSlideContainer(): HTMLDivElement {
|
|
83
94
|
if (!this.$slide) {
|
|
84
95
|
const $slide = document.createElement("div");
|
|
@@ -103,6 +114,7 @@ export class SlideDocsViewer {
|
|
|
103
114
|
|
|
104
115
|
this.slideController = this.mountSlideController({
|
|
105
116
|
anchor: this.$slide,
|
|
117
|
+
onRenderEnd: this.onRenderEnd,
|
|
106
118
|
onTransitionStart: this.viewer.setPlaying,
|
|
107
119
|
onTransitionEnd: this.viewer.setPaused,
|
|
108
120
|
onReady: this.refreshPages,
|
|
@@ -120,9 +132,15 @@ export class SlideDocsViewer {
|
|
|
120
132
|
|
|
121
133
|
protected onError = ({ error }: { error: Error }) => {
|
|
122
134
|
this.viewer.setPaused();
|
|
135
|
+
this.$overlay.textContent = `Error on slide[page=${this.slideController?.page}]: ${error.message}`;
|
|
136
|
+
this.$overlay.style.opacity = "1";
|
|
123
137
|
logger.warn("[Slide] render error", error);
|
|
124
138
|
};
|
|
125
139
|
|
|
140
|
+
protected onRenderEnd = () => {
|
|
141
|
+
this.$overlay.style.opacity = "";
|
|
142
|
+
};
|
|
143
|
+
|
|
126
144
|
protected refreshPages = () => {
|
|
127
145
|
if (this.slideController) {
|
|
128
146
|
this.viewer.pages = createDocsViewerPages(this.slideController.slide);
|
|
@@ -9,3 +9,19 @@ $namespace: "netless-app-slide";
|
|
|
9
9
|
z-index: 100;
|
|
10
10
|
overflow: hidden;
|
|
11
11
|
}
|
|
12
|
+
|
|
13
|
+
.#{$namespace}-overlay {
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
justify-content: center;
|
|
17
|
+
position: absolute;
|
|
18
|
+
z-index: 200;
|
|
19
|
+
top: 0;
|
|
20
|
+
left: 0;
|
|
21
|
+
width: 100%;
|
|
22
|
+
height: 100%;
|
|
23
|
+
background: rgba(255, 0, 0, 0.25);
|
|
24
|
+
transition: opacity 0.3s;
|
|
25
|
+
opacity: 0;
|
|
26
|
+
pointer-events: none;
|
|
27
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -141,6 +141,7 @@ const SlideApp: NetlessApp<Attributes, MagixEvents, AppOptions, Controller> = {
|
|
|
141
141
|
}
|
|
142
142
|
const page = slideController.slide.slideState.currentSlideIndex;
|
|
143
143
|
log("[Slide] page to", page, synced ? "(synced)" : "", "(on ready)");
|
|
144
|
+
slideController.slide.on("renderEnd", options.onRenderEnd);
|
|
144
145
|
});
|
|
145
146
|
return slideController;
|
|
146
147
|
};
|