@netless/app-presentation 0.1.9-beta.4 → 0.1.9-beta.6
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/build.ts +3 -0
- package/dist/index.d.ts +53 -40
- package/dist/index.global.js +236 -138
- package/dist/index.js +236 -138
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +237 -138
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -4
- package/src/app-presentation.ts +104 -17
- package/src/presentation.ts +5 -5
- package/src/scrollbar/index.ts +57 -31
package/dist/index.global.js
CHANGED
|
@@ -40,7 +40,7 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
40
40
|
// file that has been converted to a CommonJS file using a Babel-
|
|
41
41
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
42
42
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
43
|
-
|
|
43
|
+
!mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
44
44
|
mod
|
|
45
45
|
));
|
|
46
46
|
|
|
@@ -1026,9 +1026,9 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
1026
1026
|
return getMapData(this, key).has(key);
|
|
1027
1027
|
}
|
|
1028
1028
|
function mapCacheSet(key, value) {
|
|
1029
|
-
var data = getMapData(this, key),
|
|
1029
|
+
var data = getMapData(this, key), size3 = data.size;
|
|
1030
1030
|
data.set(key, value);
|
|
1031
|
-
this.size += data.size ==
|
|
1031
|
+
this.size += data.size == size3 ? 0 : 1;
|
|
1032
1032
|
return this;
|
|
1033
1033
|
}
|
|
1034
1034
|
MapCache.prototype.clear = mapCacheClear;
|
|
@@ -2485,7 +2485,7 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
2485
2485
|
bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG;
|
|
2486
2486
|
bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
|
|
2487
2487
|
if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
|
|
2488
|
-
bitmask &=
|
|
2488
|
+
bitmask &= -4;
|
|
2489
2489
|
}
|
|
2490
2490
|
var newData = [
|
|
2491
2491
|
func,
|
|
@@ -2541,7 +2541,7 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
2541
2541
|
}
|
|
2542
2542
|
var length = partials ? partials.length : 0;
|
|
2543
2543
|
if (!length) {
|
|
2544
|
-
bitmask &=
|
|
2544
|
+
bitmask &= -97;
|
|
2545
2545
|
partials = holders = undefined2;
|
|
2546
2546
|
}
|
|
2547
2547
|
ary2 = ary2 === undefined2 ? ary2 : nativeMax(toInteger(ary2), 0);
|
|
@@ -2574,7 +2574,7 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
2574
2574
|
holders = newData[4];
|
|
2575
2575
|
arity = newData[9] = newData[9] === undefined2 ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0);
|
|
2576
2576
|
if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
|
|
2577
|
-
bitmask &=
|
|
2577
|
+
bitmask &= -25;
|
|
2578
2578
|
}
|
|
2579
2579
|
if (!bitmask || bitmask == WRAP_BIND_FLAG) {
|
|
2580
2580
|
var result2 = createBind(func, bitmask, thisArg);
|
|
@@ -2842,19 +2842,19 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
2842
2842
|
function getView(start, end, transforms) {
|
|
2843
2843
|
var index = -1, length = transforms.length;
|
|
2844
2844
|
while (++index < length) {
|
|
2845
|
-
var data = transforms[index],
|
|
2845
|
+
var data = transforms[index], size3 = data.size;
|
|
2846
2846
|
switch (data.type) {
|
|
2847
2847
|
case "drop":
|
|
2848
|
-
start +=
|
|
2848
|
+
start += size3;
|
|
2849
2849
|
break;
|
|
2850
2850
|
case "dropRight":
|
|
2851
|
-
end -=
|
|
2851
|
+
end -= size3;
|
|
2852
2852
|
break;
|
|
2853
2853
|
case "take":
|
|
2854
|
-
end = nativeMin(end, start +
|
|
2854
|
+
end = nativeMin(end, start + size3);
|
|
2855
2855
|
break;
|
|
2856
2856
|
case "takeRight":
|
|
2857
|
-
start = nativeMax(start, end -
|
|
2857
|
+
start = nativeMax(start, end - size3);
|
|
2858
2858
|
break;
|
|
2859
2859
|
}
|
|
2860
2860
|
}
|
|
@@ -3114,15 +3114,15 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
3114
3114
|
return func.apply(undefined2, arguments);
|
|
3115
3115
|
};
|
|
3116
3116
|
}
|
|
3117
|
-
function shuffleSelf(array,
|
|
3117
|
+
function shuffleSelf(array, size3) {
|
|
3118
3118
|
var index = -1, length = array.length, lastIndex = length - 1;
|
|
3119
|
-
|
|
3120
|
-
while (++index <
|
|
3119
|
+
size3 = size3 === undefined2 ? length : size3;
|
|
3120
|
+
while (++index < size3) {
|
|
3121
3121
|
var rand = baseRandom(index, lastIndex), value = array[rand];
|
|
3122
3122
|
array[rand] = array[index];
|
|
3123
3123
|
array[index] = value;
|
|
3124
3124
|
}
|
|
3125
|
-
array.length =
|
|
3125
|
+
array.length = size3;
|
|
3126
3126
|
return array;
|
|
3127
3127
|
}
|
|
3128
3128
|
var stringToPath = memoizeCapped(function(string) {
|
|
@@ -3174,19 +3174,19 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
3174
3174
|
result2.__values__ = wrapper.__values__;
|
|
3175
3175
|
return result2;
|
|
3176
3176
|
}
|
|
3177
|
-
function chunk(array,
|
|
3178
|
-
if (guard ? isIterateeCall(array,
|
|
3179
|
-
|
|
3177
|
+
function chunk(array, size3, guard) {
|
|
3178
|
+
if (guard ? isIterateeCall(array, size3, guard) : size3 === undefined2) {
|
|
3179
|
+
size3 = 1;
|
|
3180
3180
|
} else {
|
|
3181
|
-
|
|
3181
|
+
size3 = nativeMax(toInteger(size3), 0);
|
|
3182
3182
|
}
|
|
3183
3183
|
var length = array == null ? 0 : array.length;
|
|
3184
|
-
if (!length ||
|
|
3184
|
+
if (!length || size3 < 1) {
|
|
3185
3185
|
return [];
|
|
3186
3186
|
}
|
|
3187
|
-
var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length /
|
|
3187
|
+
var index = 0, resIndex = 0, result2 = Array2(nativeCeil(length / size3));
|
|
3188
3188
|
while (index < length) {
|
|
3189
|
-
result2[resIndex++] = baseSlice(array, index, index +=
|
|
3189
|
+
result2[resIndex++] = baseSlice(array, index, index += size3);
|
|
3190
3190
|
}
|
|
3191
3191
|
return result2;
|
|
3192
3192
|
}
|
|
@@ -3862,7 +3862,7 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
3862
3862
|
result2.placeholder = curryRight.placeholder;
|
|
3863
3863
|
return result2;
|
|
3864
3864
|
}
|
|
3865
|
-
function
|
|
3865
|
+
function debounce3(func, wait, options) {
|
|
3866
3866
|
var lastArgs, lastThis, maxWait, result2, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
|
|
3867
3867
|
if (typeof func != "function") {
|
|
3868
3868
|
throw new TypeError2(FUNC_ERROR_TEXT);
|
|
@@ -4042,7 +4042,7 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
4042
4042
|
leading = "leading" in options ? !!options.leading : leading;
|
|
4043
4043
|
trailing = "trailing" in options ? !!options.trailing : trailing;
|
|
4044
4044
|
}
|
|
4045
|
-
return
|
|
4045
|
+
return debounce3(func, wait, {
|
|
4046
4046
|
"leading": leading,
|
|
4047
4047
|
"maxWait": wait,
|
|
4048
4048
|
"trailing": trailing
|
|
@@ -4994,7 +4994,7 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
4994
4994
|
var id = ++idCounter;
|
|
4995
4995
|
return toString(prefix) + id;
|
|
4996
4996
|
}
|
|
4997
|
-
var
|
|
4997
|
+
var add2 = createMathOperation(function(augend, addend) {
|
|
4998
4998
|
return augend + addend;
|
|
4999
4999
|
}, 0);
|
|
5000
5000
|
var ceil = createRound("ceil");
|
|
@@ -5056,7 +5056,7 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
5056
5056
|
lodash.create = create;
|
|
5057
5057
|
lodash.curry = curry;
|
|
5058
5058
|
lodash.curryRight = curryRight;
|
|
5059
|
-
lodash.debounce =
|
|
5059
|
+
lodash.debounce = debounce3;
|
|
5060
5060
|
lodash.defaults = defaults;
|
|
5061
5061
|
lodash.defaultsDeep = defaultsDeep;
|
|
5062
5062
|
lodash.defer = defer;
|
|
@@ -5187,7 +5187,7 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
5187
5187
|
lodash.extend = assignIn;
|
|
5188
5188
|
lodash.extendWith = assignInWith;
|
|
5189
5189
|
mixin(lodash, lodash);
|
|
5190
|
-
lodash.add =
|
|
5190
|
+
lodash.add = add2;
|
|
5191
5191
|
lodash.attempt = attempt;
|
|
5192
5192
|
lodash.camelCase = camelCase;
|
|
5193
5193
|
lodash.capitalize = capitalize;
|
|
@@ -5524,72 +5524,81 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
5524
5524
|
}
|
|
5525
5525
|
});
|
|
5526
5526
|
|
|
5527
|
-
// node_modules/.pnpm/@wopjs+disposable@0.1.
|
|
5528
|
-
var
|
|
5529
|
-
var
|
|
5527
|
+
// node_modules/.pnpm/@wopjs+disposable@0.1.19/node_modules/@wopjs/disposable/dist/index.mjs
|
|
5528
|
+
var isFn = (value) => !!(value && value.constructor && value.call && value.apply);
|
|
5529
|
+
var isDisposable = (value) => isFn(value) || isFn(value == null ? void 0 : value.dispose);
|
|
5530
|
+
function dispose(disposable) {
|
|
5530
5531
|
try {
|
|
5531
5532
|
if (disposable) {
|
|
5532
|
-
if (disposable.dispose) {
|
|
5533
|
+
if (isFn(disposable.dispose)) {
|
|
5533
5534
|
disposable.dispose();
|
|
5534
|
-
} else if (disposable
|
|
5535
|
+
} else if (isFn(disposable)) {
|
|
5535
5536
|
disposable();
|
|
5536
5537
|
}
|
|
5537
5538
|
}
|
|
5538
5539
|
} catch (e) {
|
|
5539
5540
|
console.error(e);
|
|
5540
5541
|
}
|
|
5541
|
-
}
|
|
5542
|
-
var
|
|
5543
|
-
|
|
5544
|
-
|
|
5545
|
-
|
|
5546
|
-
|
|
5547
|
-
|
|
5548
|
-
|
|
5549
|
-
|
|
5550
|
-
|
|
5551
|
-
|
|
5552
|
-
if (!this._d.has(disposable2)) {
|
|
5553
|
-
this._d.add(disposable2);
|
|
5554
|
-
if (isAbortable(disposable2)) {
|
|
5555
|
-
disposable2.abortable(() => this.remove(disposable2));
|
|
5556
|
-
}
|
|
5557
|
-
}
|
|
5558
|
-
}
|
|
5559
|
-
return disposable;
|
|
5560
|
-
},
|
|
5561
|
-
make(executor) {
|
|
5562
|
-
const disposable = executor();
|
|
5563
|
-
if (disposable) {
|
|
5564
|
-
return this.add(disposable);
|
|
5565
|
-
}
|
|
5566
|
-
},
|
|
5567
|
-
remove(disposable) {
|
|
5568
|
-
return this._d.delete(disposable);
|
|
5569
|
-
},
|
|
5570
|
-
flush(disposable) {
|
|
5571
|
-
if (disposable) {
|
|
5572
|
-
if (this.remove(disposable)) {
|
|
5573
|
-
dispose(disposable);
|
|
5574
|
-
}
|
|
5575
|
-
} else {
|
|
5576
|
-
this.dispose();
|
|
5577
|
-
}
|
|
5542
|
+
}
|
|
5543
|
+
var isAbortable = (disposable) => isDisposable(disposable) && isFn(disposable.abortable);
|
|
5544
|
+
function disposableStore(disposables) {
|
|
5545
|
+
function disposableStore2() {
|
|
5546
|
+
var _a, _b;
|
|
5547
|
+
if (disposableStore2._i)
|
|
5548
|
+
return;
|
|
5549
|
+
disposableStore2._i = 1;
|
|
5550
|
+
(_a = disposableStore2._d) == null ? void 0 : _a.forEach(dispose);
|
|
5551
|
+
(_b = disposableStore2._d) == null ? void 0 : _b.clear();
|
|
5552
|
+
disposableStore2._i = 0;
|
|
5578
5553
|
}
|
|
5579
|
-
|
|
5580
|
-
var disposableStore = (disposables) => {
|
|
5581
|
-
const disposableStore2 = () => {
|
|
5582
|
-
disposableStore2._d.forEach(dispose);
|
|
5583
|
-
disposableStore2._d.clear();
|
|
5584
|
-
};
|
|
5585
|
-
disposableStore2._d = /* @__PURE__ */ new Set();
|
|
5554
|
+
disposableStore2._i = 0;
|
|
5586
5555
|
disposableStore2.dispose = disposableStore2;
|
|
5587
|
-
|
|
5588
|
-
|
|
5589
|
-
|
|
5556
|
+
disposableStore2.size = size2;
|
|
5557
|
+
disposableStore2.has = has2;
|
|
5558
|
+
disposableStore2.add = add;
|
|
5559
|
+
disposableStore2.make = make3;
|
|
5560
|
+
disposableStore2.remove = remove3;
|
|
5561
|
+
disposableStore2.flush = flush2;
|
|
5562
|
+
return disposableStore2;
|
|
5563
|
+
}
|
|
5564
|
+
function _addOne(disposable) {
|
|
5565
|
+
var _a, _b;
|
|
5566
|
+
if (!((_a = this._d) == null ? void 0 : _a.has(disposable))) {
|
|
5567
|
+
((_b = this._d) != null ? _b : this._d = /* @__PURE__ */ new Set()).add(disposable);
|
|
5568
|
+
if (isAbortable(disposable)) {
|
|
5569
|
+
disposable.abortable(() => this.remove(disposable));
|
|
5570
|
+
}
|
|
5590
5571
|
}
|
|
5591
|
-
|
|
5592
|
-
|
|
5572
|
+
}
|
|
5573
|
+
function add(disposables) {
|
|
5574
|
+
Array.isArray(disposables) ? disposables.forEach(_addOne, this) : _addOne.call(this, disposables);
|
|
5575
|
+
return disposables;
|
|
5576
|
+
}
|
|
5577
|
+
function flush2(disposable) {
|
|
5578
|
+
if (disposable) {
|
|
5579
|
+
if (this.remove(disposable)) {
|
|
5580
|
+
dispose(disposable);
|
|
5581
|
+
}
|
|
5582
|
+
} else {
|
|
5583
|
+
this.dispose();
|
|
5584
|
+
}
|
|
5585
|
+
}
|
|
5586
|
+
function has2(disposable) {
|
|
5587
|
+
var _a;
|
|
5588
|
+
return ((_a = this._d) == null ? void 0 : _a.has(disposable)) || false;
|
|
5589
|
+
}
|
|
5590
|
+
function make3(executor) {
|
|
5591
|
+
const disposable = executor();
|
|
5592
|
+
return disposable && this.add(disposable);
|
|
5593
|
+
}
|
|
5594
|
+
function remove3(disposable) {
|
|
5595
|
+
var _a;
|
|
5596
|
+
return ((_a = this._d) == null ? void 0 : _a.delete(disposable)) || false;
|
|
5597
|
+
}
|
|
5598
|
+
function size2() {
|
|
5599
|
+
var _a;
|
|
5600
|
+
return ((_a = this._d) == null ? void 0 : _a.size) || 0;
|
|
5601
|
+
}
|
|
5593
5602
|
|
|
5594
5603
|
// node_modules/.pnpm/@wopjs+dom@0.1.3/node_modules/@wopjs/dom/dist/index.js
|
|
5595
5604
|
function addEventListener(target, type, listener, options) {
|
|
@@ -6456,9 +6465,6 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
6456
6465
|
this.contentDOM.className = this.c("content");
|
|
6457
6466
|
this.previewDOM = document.createElement("div");
|
|
6458
6467
|
this.previewDOM.className = this.c("preview");
|
|
6459
|
-
this.imageDOM = document.createElement("div");
|
|
6460
|
-
this.imageDOM.className = this.c("image");
|
|
6461
|
-
this.image = document.createElement("img");
|
|
6462
6468
|
this.whiteboardDOM = document.createElement("div");
|
|
6463
6469
|
this.whiteboardDOM.className = this.c("wb-view");
|
|
6464
6470
|
this.footerDOM = document.createElement("div");
|
|
@@ -6528,8 +6534,6 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
6528
6534
|
this.togglePreview(false);
|
|
6529
6535
|
}
|
|
6530
6536
|
}));
|
|
6531
|
-
this.imageDOM.appendChild(this.image);
|
|
6532
|
-
this.contentDOM.appendChild(this.imageDOM);
|
|
6533
6537
|
this.updateImage();
|
|
6534
6538
|
this.contentDOM.appendChild(this.whiteboardDOM);
|
|
6535
6539
|
this.footerDOM.classList.toggle(this.c("readonly"), this.readonly);
|
|
@@ -6838,17 +6842,22 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
6838
6842
|
return;
|
|
6839
6843
|
const { scale, centerX, centerY } = this.view.camera;
|
|
6840
6844
|
const originScale = this.option.getOriginScale();
|
|
6841
|
-
const
|
|
6842
|
-
const
|
|
6843
|
-
const
|
|
6845
|
+
const { width: pageWidth, height: pageHeight } = this.option.getPageSize();
|
|
6846
|
+
const { width: viewWidth, height: viewHeight } = this.view.size;
|
|
6847
|
+
const originScaleX = viewWidth / pageWidth;
|
|
6848
|
+
const originScaleY = viewHeight / pageHeight;
|
|
6849
|
+
const ratioX = Math.min(Math.round(originScaleX / scale * 100) / 100, 1);
|
|
6850
|
+
const ratioY = Math.min(Math.round(originScaleY / scale * 100) / 100, 1);
|
|
6851
|
+
const scrollX = Math.round(centerX * originScaleX);
|
|
6852
|
+
const scrollY = Math.round(centerY * originScaleY);
|
|
6844
6853
|
if (this.scrollbarX) {
|
|
6845
|
-
this.scrollbarX.style.width = `${
|
|
6846
|
-
this.scrollbarX.style.display =
|
|
6854
|
+
this.scrollbarX.style.width = `${ratioX * 100}%`;
|
|
6855
|
+
this.scrollbarX.style.display = ratioX === 1 ? "none" : "block";
|
|
6847
6856
|
this.scrollbarX.style.transform = `translateX(${scrollX}px)`;
|
|
6848
6857
|
}
|
|
6849
6858
|
if (this.scrollbarY) {
|
|
6850
|
-
this.scrollbarY.style.height = `${
|
|
6851
|
-
this.scrollbarY.style.display =
|
|
6859
|
+
this.scrollbarY.style.height = `${ratioY * 100}%`;
|
|
6860
|
+
this.scrollbarY.style.display = ratioY === 1 ? "none" : "block";
|
|
6852
6861
|
this.scrollbarY.style.transform = `translateY(${scrollY}px)`;
|
|
6853
6862
|
}
|
|
6854
6863
|
(_b = (_a = this.option.scrollbarEventCallback) == null ? void 0 : _a.onScrollCameraUpdated) == null ? void 0 : _b.call(_a, this.appId, originScale, scale);
|
|
@@ -6867,9 +6876,11 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
6867
6876
|
var _a, _b;
|
|
6868
6877
|
if (this.cameraCache) {
|
|
6869
6878
|
const { x } = transformedDrag;
|
|
6870
|
-
const
|
|
6879
|
+
const { width: pageWidth } = this.option.getPageSize();
|
|
6880
|
+
const { width: viewWidth } = this.view.size;
|
|
6881
|
+
const originScaleX = viewWidth / pageWidth;
|
|
6871
6882
|
const { minX, maxX } = this.getScrollXRange(this.cameraCache);
|
|
6872
|
-
const scrollX = Math.round(x /
|
|
6883
|
+
const scrollX = Math.round(x / originScaleX);
|
|
6873
6884
|
let centerX = scrollX + this.cameraCache.centerX;
|
|
6874
6885
|
if (centerX < minX) {
|
|
6875
6886
|
centerX = minX;
|
|
@@ -6887,9 +6898,11 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
6887
6898
|
var _a, _b;
|
|
6888
6899
|
if (this.cameraCache) {
|
|
6889
6900
|
const { y } = transformedDrag;
|
|
6890
|
-
const
|
|
6901
|
+
const { height: pageHeight } = this.option.getPageSize();
|
|
6902
|
+
const { height: viewHeight } = this.view.size;
|
|
6903
|
+
const originScaleY = viewHeight / pageHeight;
|
|
6891
6904
|
const { minY, maxY } = this.getScrollYRange(this.cameraCache);
|
|
6892
|
-
const scrollY = Math.round(y /
|
|
6905
|
+
const scrollY = Math.round(y / originScaleY);
|
|
6893
6906
|
let centerY = scrollY + this.cameraCache.centerY;
|
|
6894
6907
|
if (centerY < minY) {
|
|
6895
6908
|
centerY = minY;
|
|
@@ -6922,28 +6935,29 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
6922
6935
|
}
|
|
6923
6936
|
setReadonly(bol) {
|
|
6924
6937
|
this.readonly = bol;
|
|
6925
|
-
|
|
6926
|
-
|
|
6927
|
-
} else {
|
|
6938
|
+
this.destroy();
|
|
6939
|
+
if (!this.readonly) {
|
|
6928
6940
|
this.init();
|
|
6929
6941
|
}
|
|
6930
6942
|
}
|
|
6931
6943
|
getScrollXRange(camera) {
|
|
6932
|
-
const { width } = this.option.getPageSize();
|
|
6933
|
-
const
|
|
6944
|
+
const { width: pageWidth } = this.option.getPageSize();
|
|
6945
|
+
const { width: viewWidth } = this.view.size;
|
|
6946
|
+
const originScaleX = viewWidth / pageWidth;
|
|
6934
6947
|
const scale = camera.scale;
|
|
6935
|
-
const ratio = Math.round(
|
|
6936
|
-
const scrollWidth =
|
|
6948
|
+
const ratio = Math.min(Math.round(originScaleX / scale * 100) / 100, 1);
|
|
6949
|
+
const scrollWidth = pageWidth * (1 - ratio);
|
|
6937
6950
|
const minX = -scrollWidth / 2;
|
|
6938
6951
|
const maxX = scrollWidth / 2;
|
|
6939
6952
|
return { minX, maxX };
|
|
6940
6953
|
}
|
|
6941
6954
|
getScrollYRange(camera) {
|
|
6942
|
-
const { height } = this.option.getPageSize();
|
|
6943
|
-
const
|
|
6955
|
+
const { height: pageHeight } = this.option.getPageSize();
|
|
6956
|
+
const { height: viewHeight } = this.view.size;
|
|
6957
|
+
const originScaleY = viewHeight / pageHeight;
|
|
6944
6958
|
const scale = camera.scale;
|
|
6945
|
-
const ratio = Math.round(
|
|
6946
|
-
const scrollHeight =
|
|
6959
|
+
const ratio = Math.min(Math.round(originScaleY / scale * 100) / 100, 1);
|
|
6960
|
+
const scrollHeight = pageHeight * (1 - ratio);
|
|
6947
6961
|
const minY = -scrollHeight / 2;
|
|
6948
6962
|
const maxY = scrollHeight / 2;
|
|
6949
6963
|
return { minY, maxY };
|
|
@@ -6989,20 +7003,32 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
6989
7003
|
this.onCameraUpdated();
|
|
6990
7004
|
}
|
|
6991
7005
|
destroy() {
|
|
6992
|
-
var _a, _b, _c, _d;
|
|
6993
7006
|
this.view.callbacks.off("onCameraUpdated", this.onCameraUpdated);
|
|
6994
|
-
(
|
|
6995
|
-
|
|
6996
|
-
|
|
6997
|
-
|
|
6998
|
-
|
|
6999
|
-
|
|
7000
|
-
this.
|
|
7001
|
-
|
|
7007
|
+
if (this.scrollbarX && this.scrollbarContainerX) {
|
|
7008
|
+
this.scrollbarContainerX.removeChild(this.scrollbarX);
|
|
7009
|
+
this.scrollbarX.remove();
|
|
7010
|
+
this.scrollbarContainerX.remove();
|
|
7011
|
+
this.scrollbarX = void 0;
|
|
7012
|
+
}
|
|
7013
|
+
if (this.scrollbarY && this.scrollbarContainerY) {
|
|
7014
|
+
this.scrollbarContainerY.removeChild(this.scrollbarY);
|
|
7015
|
+
this.scrollbarY.remove();
|
|
7016
|
+
this.scrollbarContainerY.remove();
|
|
7017
|
+
this.scrollbarY = void 0;
|
|
7018
|
+
}
|
|
7019
|
+
if (this.draggableX) {
|
|
7020
|
+
this.draggableX.destroy();
|
|
7021
|
+
this.draggableX = void 0;
|
|
7022
|
+
}
|
|
7023
|
+
if (this.draggableY) {
|
|
7024
|
+
this.draggableY.destroy();
|
|
7025
|
+
this.draggableY = void 0;
|
|
7026
|
+
}
|
|
7002
7027
|
}
|
|
7003
7028
|
};
|
|
7004
7029
|
|
|
7005
7030
|
// src/app-presentation.ts
|
|
7031
|
+
var import_lodash2 = __toESM(require_lodash());
|
|
7006
7032
|
var emptySceneName = "$$empty$$";
|
|
7007
7033
|
var ppt2page = (ppt, name) => ppt ? { width: ppt.width, height: ppt.height, src: ppt.src, thumbnail: ppt.previewURL, name } : null;
|
|
7008
7034
|
var createLogger = (room) => {
|
|
@@ -7084,9 +7110,9 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
7084
7110
|
if (pages.length > 100)
|
|
7085
7111
|
console.warn(`[Presentation]: too many pages (${pages.length}), may cause performance issues`);
|
|
7086
7112
|
let redirectResolve = void 0;
|
|
7087
|
-
const
|
|
7088
|
-
if (
|
|
7089
|
-
const scenes =
|
|
7113
|
+
const room2 = context.getRoom();
|
|
7114
|
+
if (room2 && room2.isWritable) {
|
|
7115
|
+
const scenes = room2.entireScenes()[scenePath];
|
|
7090
7116
|
if (pageIndex$.value < 0 || pageIndex$.value >= pages.length) {
|
|
7091
7117
|
throw new Error(`[Presentation] Invalid page index: ${pageIndex$.value}, scenes length: ${pages.length}`);
|
|
7092
7118
|
}
|
|
@@ -7101,8 +7127,8 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
7101
7127
|
};
|
|
7102
7128
|
});
|
|
7103
7129
|
if (!scenesEqual(scenes, _scenes)) {
|
|
7104
|
-
|
|
7105
|
-
|
|
7130
|
+
room2.removeScenes(scenePath);
|
|
7131
|
+
room2.putScenes(scenePath, _scenes);
|
|
7106
7132
|
}
|
|
7107
7133
|
if (name === _scenes[pageIndex$.value].name && !ppt) {
|
|
7108
7134
|
context.addPage({ scene: { name: emptySceneName } }).then(() => {
|
|
@@ -7115,10 +7141,10 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
7115
7141
|
redirectResolve && redirectResolve(false);
|
|
7116
7142
|
}
|
|
7117
7143
|
}).then(async (bol) => {
|
|
7118
|
-
await syncPage(pageIndex$.value,
|
|
7144
|
+
await syncPage(pageIndex$.value, room2.logger);
|
|
7119
7145
|
if (bol) {
|
|
7120
7146
|
log(`[Presentation] setup removeScenes ${scenePath}/${emptySceneName}`);
|
|
7121
|
-
|
|
7147
|
+
room2.removeScenes(`${scenePath}/${emptySceneName}`);
|
|
7122
7148
|
}
|
|
7123
7149
|
});
|
|
7124
7150
|
}
|
|
@@ -7233,14 +7259,32 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
7233
7259
|
}
|
|
7234
7260
|
};
|
|
7235
7261
|
dispose2.add(view$$.addStateChangedListener(() => syncViewFromRemote(false, true)));
|
|
7262
|
+
const getPageSize = () => {
|
|
7263
|
+
const { width, height } = app.page() || {};
|
|
7264
|
+
return { width: width || 0, height: height || 0 };
|
|
7265
|
+
};
|
|
7236
7266
|
const box = context.getBox();
|
|
7237
|
-
const app = dispose2.add(createPresentation(box, pages, jumpPage, pageIndex$, options.thumbnail));
|
|
7238
|
-
app.contentDOM.dataset.appPresentationVersion = "0.1.9-beta.
|
|
7267
|
+
const app = dispose2.add(createPresentation(box, pages, jumpPage, pageIndex$, view, options.thumbnail, options.useClipView));
|
|
7268
|
+
app.contentDOM.dataset.appPresentationVersion = "0.1.9-beta.6";
|
|
7239
7269
|
app.scaleDocsToFit = scaleDocsToFit;
|
|
7240
7270
|
app.log = log;
|
|
7241
7271
|
if (options.justDocsViewReadonly) {
|
|
7242
7272
|
app.setDocsViewReadonly(true);
|
|
7243
7273
|
}
|
|
7274
|
+
const room = context.getRoom();
|
|
7275
|
+
const goToPageByClick = () => {
|
|
7276
|
+
var _a2, _b2, _c2, _d;
|
|
7277
|
+
const currentApplianceName = (_d = (_c2 = (_b2 = (_a2 = context.getRoom()) == null ? void 0 : _a2.state) == null ? void 0 : _b2.memberState) == null ? void 0 : _c2.currentApplianceName) != null ? _d : "";
|
|
7278
|
+
if (!app.readonly && currentApplianceName === "clicker") {
|
|
7279
|
+
nextPage();
|
|
7280
|
+
}
|
|
7281
|
+
};
|
|
7282
|
+
if (room && options.goToPageByClick && app.whiteboardDOM) {
|
|
7283
|
+
dispose2.make(() => {
|
|
7284
|
+
app.whiteboardDOM.addEventListener("click", goToPageByClick);
|
|
7285
|
+
return () => app.whiteboardDOM.removeEventListener("click", goToPageByClick);
|
|
7286
|
+
});
|
|
7287
|
+
}
|
|
7244
7288
|
context.mountView(app.whiteboardDOM);
|
|
7245
7289
|
if (options.disableCameraTransform) {
|
|
7246
7290
|
view.disableCameraTransform = true;
|
|
@@ -7270,10 +7314,6 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
7270
7314
|
dispose2.add(context.emitter.on("writableChange", (isWritable) => {
|
|
7271
7315
|
app.setReadonly(!isWritable);
|
|
7272
7316
|
}));
|
|
7273
|
-
const getPageSize = () => {
|
|
7274
|
-
const { width, height } = app.page() || {};
|
|
7275
|
-
return { width: width || 0, height: height || 0 };
|
|
7276
|
-
};
|
|
7277
7317
|
const getOriginScale = () => {
|
|
7278
7318
|
const { size } = view;
|
|
7279
7319
|
const { width, height } = getPageSize();
|
|
@@ -7282,6 +7322,42 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
7282
7322
|
const getScale = () => {
|
|
7283
7323
|
return view.camera.scale;
|
|
7284
7324
|
};
|
|
7325
|
+
const screenshotCurrentPageAsync = async (_context, _width, _height) => {
|
|
7326
|
+
var _a2, _b2;
|
|
7327
|
+
(_b2 = (_a2 = room == null ? void 0 : room.calibrationTimestamp) == null ? void 0 : _a2.toString()) != null ? _b2 : Date.now().toString();
|
|
7328
|
+
const currentPage = pages[pageIndex$.value];
|
|
7329
|
+
if (!currentPage) {
|
|
7330
|
+
throw new Error("[Presentation]: current page not found");
|
|
7331
|
+
}
|
|
7332
|
+
const { width, height, src } = currentPage;
|
|
7333
|
+
const img = document.createElement("img");
|
|
7334
|
+
img.width = width;
|
|
7335
|
+
img.height = height;
|
|
7336
|
+
img.crossOrigin = "Anonymous";
|
|
7337
|
+
await new Promise((resolve) => {
|
|
7338
|
+
img.onload = resolve;
|
|
7339
|
+
img.src = src;
|
|
7340
|
+
});
|
|
7341
|
+
_context.drawImage(img, 0, 0, width, height, 0, 0, _width || width, _height || height);
|
|
7342
|
+
const currentScenePath = view.focusScenePath;
|
|
7343
|
+
if (!currentScenePath) {
|
|
7344
|
+
throw new Error("[Presentation]: current scene path not found");
|
|
7345
|
+
}
|
|
7346
|
+
const windowManger = context.getWindowManager();
|
|
7347
|
+
if (windowManger._appliancePlugin) {
|
|
7348
|
+
await windowManger._appliancePlugin.screenshotToCanvasAsync(_context, currentScenePath, _width || width, _height || height, {
|
|
7349
|
+
centerX: 0,
|
|
7350
|
+
centerY: 0,
|
|
7351
|
+
scale: _width && _height ? Math.min(_width / width, _height / height) : 1
|
|
7352
|
+
});
|
|
7353
|
+
} else {
|
|
7354
|
+
await view.screenshotToCanvasAsync(_context, currentScenePath, _width || width, _height || height, {
|
|
7355
|
+
centerX: 0,
|
|
7356
|
+
centerY: 0,
|
|
7357
|
+
scale: _width && _height ? Math.min(_width / width, _height / height) : 1
|
|
7358
|
+
});
|
|
7359
|
+
}
|
|
7360
|
+
};
|
|
7285
7361
|
const moveCamera = (camera) => {
|
|
7286
7362
|
if (context.getIsWritable()) {
|
|
7287
7363
|
view.moveCamera(__spreadProps(__spreadValues({}, camera), { animationMode: "immediately" }));
|
|
@@ -7372,12 +7448,12 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
7372
7448
|
const name = (_a2 = p.name) != null ? _a2 : String(index + 1);
|
|
7373
7449
|
if (scenes.some((scene) => scene.name == name)) {
|
|
7374
7450
|
const camera = { centerX: 0, centerY: 0, scale: Math.min(wb_canvas.width / width2, wb_canvas.height / height2) };
|
|
7375
|
-
const sPath = `${scenePath}/${
|
|
7376
|
-
const windowManger = context.
|
|
7451
|
+
const sPath = `${scenePath}/${name}`;
|
|
7452
|
+
const windowManger = context.getWindowManager();
|
|
7377
7453
|
if (windowManger._appliancePlugin) {
|
|
7378
7454
|
await windowManger._appliancePlugin.screenshotToCanvasAsync(wb, sPath, wb_canvas.width, wb_canvas.height, camera);
|
|
7379
7455
|
} else {
|
|
7380
|
-
view.
|
|
7456
|
+
await view.screenshotToCanvasAsync(
|
|
7381
7457
|
wb,
|
|
7382
7458
|
sPath,
|
|
7383
7459
|
wb_canvas.width,
|
|
@@ -7423,11 +7499,12 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
7423
7499
|
};
|
|
7424
7500
|
const setReadonly = (bol) => {
|
|
7425
7501
|
app.setReadonly(bol);
|
|
7502
|
+
if (options.goToPageByClick) ;
|
|
7426
7503
|
if (scrollbar) {
|
|
7427
7504
|
scrollbar.setReadonly(bol);
|
|
7428
7505
|
}
|
|
7429
7506
|
};
|
|
7430
|
-
const controller = { app, view, context, jumpPage, prevPage, nextPage, pageState, toPdf, log, setDocsViewReadonly, setReadonly, moveCamera, getOriginScale, getScale };
|
|
7507
|
+
const controller = { app, view, context, jumpPage, prevPage, nextPage, pageState, toPdf, log, setDocsViewReadonly, setReadonly, moveCamera, getOriginScale, getScale, getPageSize, screenshotCurrentPageAsync };
|
|
7431
7508
|
dispose2.add(listen(window, "message", (ev) => {
|
|
7432
7509
|
if (ev.data === "@netless/_presentation_") {
|
|
7433
7510
|
if (typeof window !== "undefined")
|
|
@@ -7446,7 +7523,6 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
7446
7523
|
constructor(config) {
|
|
7447
7524
|
super(config);
|
|
7448
7525
|
this.jumpPage = config.jumpPage;
|
|
7449
|
-
this.image.style.display = "none";
|
|
7450
7526
|
}
|
|
7451
7527
|
updateImage() {
|
|
7452
7528
|
super.updateImage();
|
|
@@ -7463,7 +7539,7 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
7463
7539
|
}
|
|
7464
7540
|
}
|
|
7465
7541
|
};
|
|
7466
|
-
function createPresentation(box, pages, jumpPage, pageIndex$, thumbnail) {
|
|
7542
|
+
function createPresentation(box, pages, jumpPage, pageIndex$, view, thumbnail, useClipView) {
|
|
7467
7543
|
box.mountStyles(style_default);
|
|
7468
7544
|
const app = new AppPresentation({ pages, readonly: box.readonly, jumpPage, thumbnail });
|
|
7469
7545
|
app.box = box;
|
|
@@ -7472,6 +7548,29 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
7472
7548
|
app.dispose.add(pageIndex$.subscribe((pageIndex) => {
|
|
7473
7549
|
app.setPageIndex(pageIndex);
|
|
7474
7550
|
}));
|
|
7551
|
+
if (useClipView && view) {
|
|
7552
|
+
const onCameraUpdatedEffectForMaskView = (0, import_lodash2.debounce)(() => {
|
|
7553
|
+
const { width: pageWidth, height: pageHeight } = app.page() || {};
|
|
7554
|
+
if (!pageWidth || !pageHeight) {
|
|
7555
|
+
return;
|
|
7556
|
+
}
|
|
7557
|
+
const { scale } = view.camera;
|
|
7558
|
+
const { width, height } = view.size;
|
|
7559
|
+
const pageRatioX = Math.round((1 - pageWidth * scale / width) / 2 * 100);
|
|
7560
|
+
const pageRatioY = Math.round((1 - pageHeight * scale / height) / 2 * 100);
|
|
7561
|
+
app.whiteboardDOM.style.clipPath = `inset(${pageRatioY}% ${pageRatioX}%)`;
|
|
7562
|
+
}, 50);
|
|
7563
|
+
onCameraUpdatedEffectForMaskView();
|
|
7564
|
+
const onCameraUpdatedEffect = () => {
|
|
7565
|
+
view.callbacks.on("onSizeUpdated", onCameraUpdatedEffectForMaskView);
|
|
7566
|
+
view.callbacks.on("onCameraUpdated", onCameraUpdatedEffectForMaskView);
|
|
7567
|
+
return () => {
|
|
7568
|
+
view.callbacks.off("onCameraUpdated", onCameraUpdatedEffectForMaskView);
|
|
7569
|
+
view.callbacks.off("onSizeUpdated", onCameraUpdatedEffectForMaskView);
|
|
7570
|
+
};
|
|
7571
|
+
};
|
|
7572
|
+
app.dispose.make(onCameraUpdatedEffect);
|
|
7573
|
+
}
|
|
7475
7574
|
return app;
|
|
7476
7575
|
}
|
|
7477
7576
|
var install = (register, options = {}) => {
|
|
@@ -7483,7 +7582,7 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
7483
7582
|
};
|
|
7484
7583
|
|
|
7485
7584
|
// src/index.ts
|
|
7486
|
-
var version = "0.1.9-beta.
|
|
7585
|
+
var version = "0.1.9-beta.6";
|
|
7487
7586
|
/*! Bundled license information:
|
|
7488
7587
|
|
|
7489
7588
|
lodash/lodash.js:
|
|
@@ -7501,7 +7600,6 @@ var NetlessAppPresentation = (function (exports) {
|
|
|
7501
7600
|
exports.Presentation = Presentation;
|
|
7502
7601
|
exports.default = NetlessAppPresentation;
|
|
7503
7602
|
exports.install = install;
|
|
7504
|
-
exports.styles = style_default;
|
|
7505
7603
|
exports.version = version;
|
|
7506
7604
|
|
|
7507
7605
|
Object.defineProperty(exports, '__esModule', { value: true });
|