@netless/app-slide 0.0.32 → 0.0.36
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 +14 -1
- package/dist/DocsViewer/index.d.ts +1 -5
- package/dist/SlidePreviewer/index.d.ts +43 -0
- package/dist/index.d.ts +2 -0
- package/dist/main.cjs.js +120 -120
- package/dist/main.cjs.js.map +1 -1
- package/dist/main.es.js +161 -15
- package/dist/main.es.js.map +1 -1
- package/dist/main.iife.js +114 -114
- package/dist/main.iife.js.map +1 -1
- package/package.json +3 -3
- package/src/DocsViewer/index.ts +1 -10
- package/src/SlideDocsViewer/index.ts +2 -2
- package/src/SlidePreviewer/index.ts +208 -0
- package/src/index.ts +3 -0
package/dist/main.es.js
CHANGED
|
@@ -35471,9 +35471,9 @@ cs.get.rgb = function(string) {
|
|
|
35471
35471
|
}
|
|
35472
35472
|
var abbr = /^#([a-f0-9]{3,4})$/i;
|
|
35473
35473
|
var hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;
|
|
35474
|
-
var rgba = /^rgba?\(\s*([+-]?\d+)\s
|
|
35474
|
+
var rgba = /^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
|
|
35475
35475
|
var per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
|
|
35476
|
-
var keyword =
|
|
35476
|
+
var keyword = /^(\w+)$/;
|
|
35477
35477
|
var rgb = [0, 0, 0, 1];
|
|
35478
35478
|
var match;
|
|
35479
35479
|
var i;
|
|
@@ -35503,7 +35503,7 @@ cs.get.rgb = function(string) {
|
|
|
35503
35503
|
}
|
|
35504
35504
|
if (match[4]) {
|
|
35505
35505
|
if (match[5]) {
|
|
35506
|
-
rgb[3] =
|
|
35506
|
+
rgb[3] = parseFloat(match[4]) * 0.01;
|
|
35507
35507
|
} else {
|
|
35508
35508
|
rgb[3] = parseFloat(match[4]);
|
|
35509
35509
|
}
|
|
@@ -35514,7 +35514,7 @@ cs.get.rgb = function(string) {
|
|
|
35514
35514
|
}
|
|
35515
35515
|
if (match[4]) {
|
|
35516
35516
|
if (match[5]) {
|
|
35517
|
-
rgb[3] =
|
|
35517
|
+
rgb[3] = parseFloat(match[4]) * 0.01;
|
|
35518
35518
|
} else {
|
|
35519
35519
|
rgb[3] = parseFloat(match[4]);
|
|
35520
35520
|
}
|
|
@@ -35542,7 +35542,7 @@ cs.get.hsl = function(string) {
|
|
|
35542
35542
|
if (!string) {
|
|
35543
35543
|
return null;
|
|
35544
35544
|
}
|
|
35545
|
-
var hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?[\d
|
|
35545
|
+
var hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;
|
|
35546
35546
|
var match = string.match(hsl);
|
|
35547
35547
|
if (match) {
|
|
35548
35548
|
var alpha = parseFloat(match[4]);
|
|
@@ -35558,7 +35558,7 @@ cs.get.hwb = function(string) {
|
|
|
35558
35558
|
if (!string) {
|
|
35559
35559
|
return null;
|
|
35560
35560
|
}
|
|
35561
|
-
var hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d
|
|
35561
|
+
var hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;
|
|
35562
35562
|
var match = string.match(hwb);
|
|
35563
35563
|
if (match) {
|
|
35564
35564
|
var alpha = parseFloat(match[4]);
|
|
@@ -36638,7 +36638,7 @@ if (runningOnBrowser) {
|
|
|
36638
36638
|
autoInitialize(LazyLoad, window.lazyLoadOptions);
|
|
36639
36639
|
}
|
|
36640
36640
|
class DocsViewer {
|
|
36641
|
-
constructor({ readonly,
|
|
36641
|
+
constructor({ readonly, onNewPageIndex, onPlay }) {
|
|
36642
36642
|
this._pages = [];
|
|
36643
36643
|
this.pageIndex = 0;
|
|
36644
36644
|
this.setPaused = () => {
|
|
@@ -36652,7 +36652,6 @@ class DocsViewer {
|
|
|
36652
36652
|
this.isSmallBox = false;
|
|
36653
36653
|
this.sideEffect = new o();
|
|
36654
36654
|
this.readonly = readonly;
|
|
36655
|
-
this.box = box;
|
|
36656
36655
|
this.onNewPageIndex = onNewPageIndex;
|
|
36657
36656
|
this.onPlay = onPlay;
|
|
36658
36657
|
this.render();
|
|
@@ -36666,10 +36665,6 @@ class DocsViewer {
|
|
|
36666
36665
|
get pages() {
|
|
36667
36666
|
return this._pages;
|
|
36668
36667
|
}
|
|
36669
|
-
mount() {
|
|
36670
|
-
this.box.mountContent(this.$content);
|
|
36671
|
-
this.box.mountFooter(this.$footer);
|
|
36672
|
-
}
|
|
36673
36668
|
unmount() {
|
|
36674
36669
|
this.$content.remove();
|
|
36675
36670
|
this.$footer.remove();
|
|
@@ -36962,7 +36957,6 @@ class SlideDocsViewer {
|
|
|
36962
36957
|
this.mountSlideController = mountSlideController;
|
|
36963
36958
|
this.mountWhiteboard = mountWhiteboard;
|
|
36964
36959
|
this.viewer = new DocsViewer({
|
|
36965
|
-
box,
|
|
36966
36960
|
readonly: box.readonly,
|
|
36967
36961
|
onNewPageIndex: this.onNewPageIndex,
|
|
36968
36962
|
onPlay: this.onPlay
|
|
@@ -37013,7 +37007,8 @@ class SlideDocsViewer {
|
|
|
37013
37007
|
return this.$whiteboardView;
|
|
37014
37008
|
}
|
|
37015
37009
|
mount() {
|
|
37016
|
-
this.
|
|
37010
|
+
this.box.mountContent(this.viewer.$content);
|
|
37011
|
+
this.box.mountFooter(this.viewer.$footer);
|
|
37017
37012
|
this.slideController = this.mountSlideController({
|
|
37018
37013
|
anchor: this.$slide,
|
|
37019
37014
|
onTransitionStart: this.viewer.setPlaying,
|
|
@@ -37102,6 +37097,157 @@ const addHooks = (emitter) => {
|
|
|
37102
37097
|
});
|
|
37103
37098
|
};
|
|
37104
37099
|
var styles = ".netless-app-slide-content{position:relative;height:100%;overflow:hidden}.netless-app-slide-preview-mask{display:none;position:absolute;z-index:200;top:0;left:0;width:100%;height:100%}.netless-app-slide-preview{display:flex;flex-direction:column;align-items:center;position:absolute;z-index:300;top:0;left:0;width:33%;max-width:200px;height:100%;padding-top:10px;transform:translate(-100%);background:rgba(237,237,240,.9);box-shadow:inset -1px 0 #0000001c;transition:transform .4s}.netless-app-slide-preview-active .netless-app-slide-preview-mask{display:block}.netless-app-slide-preview-active .netless-app-slide-preview{transform:translate(0)}.netless-app-slide-preview-page{position:relative;display:block;width:55%;margin-bottom:10px;font-size:0;color:transparent;outline:none;border:7px solid transparent;border-radius:4px;transition:border-color .3s;user-select:none}.netless-app-slide-preview-page:hover,.netless-app-slide-preview-page.netless-app-slide-preview-page-active{border-color:#444e601a}.netless-app-slide-preview-page>img{width:100%;height:auto;box-sizing:border-box;border:1px solid rgba(0,0,0,.5);border-radius:1px;background-color:#fff;box-shadow:0 2px 8px #0000004d}.netless-app-slide-preview-page-name{position:absolute;top:1px;left:-10px;transform:translate(-100%);text-align:right;font-size:12px;color:#5f5f5f;user-select:none}.netless-app-slide-footer{box-sizing:border-box;height:26px;display:flex;align-items:center;padding:0 16px;border-top:1px solid #eeeef7;color:#191919}.netless-app-slide-float-footer{width:100%;min-height:26px;position:absolute;left:0;bottom:0;z-index:2000;background:rgba(249,249,252,.9);transition:opacity .4s}.netless-app-slide-footer-btn{box-sizing:border-box;width:26px;height:26px;font-size:0;margin:0;padding:3px;border:none;border-radius:1px;outline:none;color:currentColor;background:transparent;transition:background .4s;cursor:pointer;user-select:none}.netless-app-slide-footer-btn:hover{background:rgba(237,237,240,.9)}.netless-app-slide-footer-btn>svg{width:100%;height:100%}.netless-app-slide-footer-btn>svg:nth-of-type(2){display:none}.netless-app-slide-footer-btn.netless-app-slide-footer-btn-playing>svg:nth-of-type(1){display:none}.netless-app-slide-footer-btn.netless-app-slide-footer-btn-playing>svg:nth-of-type(2){display:initial}.netless-app-slide-footer-btn~.netless-app-slide-footer-btn{margin-left:15px}.netless-app-slide-page-jumps{flex:1;display:flex;justify-content:center;align-items:center}.netless-app-slide-page-number{margin-left:auto;font-size:13px;user-select:none;white-space:nowrap;word-break:keep-all}.netless-app-slide-page-number-input{border:none;outline:none;width:1.5em;text-align:right;border-radius:2px;color:currentColor;background:transparent;transition:background .4s;user-select:text}.netless-app-slide-page-number-input:hover,.netless-app-slide-page-number-input:focus,.netless-app-slide-page-number-input:active{background:#fff;box-shadow:#63636333 0 2px 8px}.netless-app-slide-readonly .netless-app-slide-footer-btn{cursor:not-allowed}.netless-app-slide-readonly .netless-app-slide-footer-btn:hover{background:transparent}.netless-app-slide-readonly .netless-app-slide-page-number-input{cursor:not-allowed}.netless-app-slide-readonly .netless-app-slide-page-number-input:hover,.netless-app-slide-readonly .netless-app-slide-page-number-input:focus,.netless-app-slide-readonly .netless-app-slide-page-number-input:active{background:transparent;box-shadow:none}.netless-app-slide-readonly .netless-app-slide-page-number-input:disabled{color:inherit}.netless-app-slide-readonly.netless-app-slide-float-footer{display:none}.netless-app-slide-wb-view{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;overflow:hidden}.netless-app-slide-slide{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.netless-app-slide-slide canvas{transform:scale(var(--netless-app-slide-scale, 1))}\n";
|
|
37100
|
+
function previewSlide({
|
|
37101
|
+
container,
|
|
37102
|
+
taskId,
|
|
37103
|
+
url = DefaultUrl,
|
|
37104
|
+
debug = false
|
|
37105
|
+
}) {
|
|
37106
|
+
if (!taskId) {
|
|
37107
|
+
throw new Error("[Slide] taskId is required");
|
|
37108
|
+
}
|
|
37109
|
+
container.style.cssText += `display:flex;flex-direction:column`;
|
|
37110
|
+
const previewer = new SlidePreviewer({ target: container });
|
|
37111
|
+
previewer.debug = !!debug;
|
|
37112
|
+
previewer.mount(taskId, url);
|
|
37113
|
+
return previewer;
|
|
37114
|
+
}
|
|
37115
|
+
class SlidePreviewer {
|
|
37116
|
+
constructor(config) {
|
|
37117
|
+
this.slide = null;
|
|
37118
|
+
this.debug = false;
|
|
37119
|
+
this.sideEffect = new o();
|
|
37120
|
+
this.ready = false;
|
|
37121
|
+
this.readyPromise = new Promise((resolve) => {
|
|
37122
|
+
this.resolveReady = () => {
|
|
37123
|
+
this.ready = true;
|
|
37124
|
+
resolve();
|
|
37125
|
+
};
|
|
37126
|
+
});
|
|
37127
|
+
this.onPageChanged = (page) => {
|
|
37128
|
+
this.viewer.setPageIndex(page - 1);
|
|
37129
|
+
};
|
|
37130
|
+
this.onTransitionStart = () => {
|
|
37131
|
+
this.viewer.setPlaying();
|
|
37132
|
+
};
|
|
37133
|
+
this.onTransitionEnd = () => {
|
|
37134
|
+
this.viewer.setPaused();
|
|
37135
|
+
};
|
|
37136
|
+
this.onError = ({ error }) => {
|
|
37137
|
+
this.viewer.setPaused();
|
|
37138
|
+
console.warn("[Slide] render error", error);
|
|
37139
|
+
};
|
|
37140
|
+
this.destroyed = false;
|
|
37141
|
+
this.refreshPages = () => {
|
|
37142
|
+
if (this.slide) {
|
|
37143
|
+
this.viewer.pages = createDocsViewerPages(this.slide);
|
|
37144
|
+
this.viewer.setPageIndex(this.getPageIndex(this.slide.slideState.currentSlideIndex));
|
|
37145
|
+
}
|
|
37146
|
+
};
|
|
37147
|
+
this.onPlay = () => {
|
|
37148
|
+
if (this.slide) {
|
|
37149
|
+
this.slide.nextStep();
|
|
37150
|
+
}
|
|
37151
|
+
};
|
|
37152
|
+
this.onNewPageIndex = (index) => {
|
|
37153
|
+
if (this.slide && this.slide.slideCount > 0) {
|
|
37154
|
+
this.slide.renderSlide(clamp$1(index + 1, 1, this.slide.slideCount));
|
|
37155
|
+
}
|
|
37156
|
+
};
|
|
37157
|
+
this.namespace = "netless-app-slide";
|
|
37158
|
+
this.target = config.target;
|
|
37159
|
+
this.bgColor = cachedGetBgColor(this.target);
|
|
37160
|
+
this.viewer = new DocsViewer({
|
|
37161
|
+
readonly: false,
|
|
37162
|
+
onNewPageIndex: this.onNewPageIndex,
|
|
37163
|
+
onPlay: this.onPlay
|
|
37164
|
+
});
|
|
37165
|
+
this.render();
|
|
37166
|
+
}
|
|
37167
|
+
render() {
|
|
37168
|
+
this.viewer.$content.appendChild(this.renderSlideContainer());
|
|
37169
|
+
this.sideEffect.addEventListener(window, "keydown", (ev) => {
|
|
37170
|
+
if (this.slide) {
|
|
37171
|
+
switch (ev.key) {
|
|
37172
|
+
case "ArrowUp":
|
|
37173
|
+
case "ArrowLeft": {
|
|
37174
|
+
this.slide.prevStep();
|
|
37175
|
+
break;
|
|
37176
|
+
}
|
|
37177
|
+
case "ArrowRight":
|
|
37178
|
+
case "ArrowDown": {
|
|
37179
|
+
this.slide.nextStep();
|
|
37180
|
+
break;
|
|
37181
|
+
}
|
|
37182
|
+
}
|
|
37183
|
+
}
|
|
37184
|
+
});
|
|
37185
|
+
}
|
|
37186
|
+
mount(taskId, url) {
|
|
37187
|
+
this.target.appendChild(this.renderStyle());
|
|
37188
|
+
this.target.appendChild(this.viewer.$content);
|
|
37189
|
+
this.target.appendChild(this.viewer.$footer);
|
|
37190
|
+
this.slide = new Slide.Slide({
|
|
37191
|
+
anchor: this.$slide,
|
|
37192
|
+
interactive: false,
|
|
37193
|
+
mode: "local",
|
|
37194
|
+
resize: true,
|
|
37195
|
+
controller: this.debug,
|
|
37196
|
+
renderOptions: {
|
|
37197
|
+
minFPS: 25,
|
|
37198
|
+
maxFPS: 30,
|
|
37199
|
+
autoFPS: true,
|
|
37200
|
+
autoResolution: true,
|
|
37201
|
+
transactionBgColor: this.bgColor
|
|
37202
|
+
}
|
|
37203
|
+
});
|
|
37204
|
+
this.registerEventListeners();
|
|
37205
|
+
this.slide.setResource(taskId, url);
|
|
37206
|
+
this.slide.renderSlide(1);
|
|
37207
|
+
}
|
|
37208
|
+
renderStyle() {
|
|
37209
|
+
const element = document.createElement("style");
|
|
37210
|
+
element.appendChild(document.createTextNode(styles));
|
|
37211
|
+
return element;
|
|
37212
|
+
}
|
|
37213
|
+
registerEventListeners() {
|
|
37214
|
+
if (!this.slide)
|
|
37215
|
+
return;
|
|
37216
|
+
const { slide } = this;
|
|
37217
|
+
slide.on(Slide.SLIDE_EVENTS.slideChange, this.onPageChanged);
|
|
37218
|
+
slide.on(Slide.SLIDE_EVENTS.renderStart, this.onTransitionStart);
|
|
37219
|
+
slide.on(Slide.SLIDE_EVENTS.renderEnd, this.onTransitionEnd);
|
|
37220
|
+
slide.on(Slide.SLIDE_EVENTS.mainSeqStepStart, this.onTransitionStart);
|
|
37221
|
+
slide.on(Slide.SLIDE_EVENTS.mainSeqStepEnd, this.onTransitionEnd);
|
|
37222
|
+
slide.on(Slide.SLIDE_EVENTS.renderError, this.onError);
|
|
37223
|
+
slide.on(Slide.SLIDE_EVENTS.renderEnd, this.resolveReady);
|
|
37224
|
+
this.readyPromise.then(this.refreshPages);
|
|
37225
|
+
}
|
|
37226
|
+
destroy() {
|
|
37227
|
+
this.sideEffect.flushAll();
|
|
37228
|
+
if (this.slide && !this.destroyed) {
|
|
37229
|
+
log("[Slide] destroy slide (once)");
|
|
37230
|
+
this.slide.destroy();
|
|
37231
|
+
this.destroyed = true;
|
|
37232
|
+
}
|
|
37233
|
+
this.viewer.destroy();
|
|
37234
|
+
}
|
|
37235
|
+
getPageIndex(page) {
|
|
37236
|
+
return (page > 0 ? page : 1) - 1;
|
|
37237
|
+
}
|
|
37238
|
+
renderSlideContainer() {
|
|
37239
|
+
if (!this.$slide) {
|
|
37240
|
+
const $slide = document.createElement("div");
|
|
37241
|
+
$slide.className = this.wrapClassName("slide");
|
|
37242
|
+
$slide.dataset.appKind = "Slide";
|
|
37243
|
+
this.$slide = $slide;
|
|
37244
|
+
}
|
|
37245
|
+
return this.$slide;
|
|
37246
|
+
}
|
|
37247
|
+
wrapClassName(className) {
|
|
37248
|
+
return `${this.namespace}-${className}`;
|
|
37249
|
+
}
|
|
37250
|
+
}
|
|
37105
37251
|
const SlideApp = {
|
|
37106
37252
|
kind: "Slide",
|
|
37107
37253
|
setup(context) {
|
|
@@ -37184,5 +37330,5 @@ const SlideApp = {
|
|
|
37184
37330
|
docsViewer.mount();
|
|
37185
37331
|
}
|
|
37186
37332
|
};
|
|
37187
|
-
export { DefaultUrl, FreezerLength, addHooks, apps, SlideApp as default };
|
|
37333
|
+
export { DefaultUrl, FreezerLength, SlidePreviewer, addHooks, apps, SlideApp as default, previewSlide };
|
|
37188
37334
|
//# sourceMappingURL=main.es.js.map
|