@netless/app-presentation 0.1.8 → 0.1.9-beta.0

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/index.js CHANGED
@@ -1157,7 +1157,7 @@ var Presentation = class {
1157
1157
  };
1158
1158
 
1159
1159
  // src/style.scss?inline
1160
- var style_default = ".netless-app-presentation{height:100%;display:flex;flex-flow:column nowrap}.netless-app-presentation-content{position:relative;height:100%;overflow:hidden}.netless-app-presentation-preview-mask{display:none;position:absolute;z-index:200;top:0;left:0;width:100%;height:100%}.netless-app-presentation-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:#ededf0e6;box-shadow:inset -1px 0 #0000001c;transition:transform .4s;overflow:auto;overflow-y:scroll}.netless-app-presentation-preview-active .netless-app-presentation-preview-mask{display:block}.netless-app-presentation-preview-active .netless-app-presentation-preview{transform:translate(0)}.netless-app-presentation-preview-page{position:relative;display:block;width:55%;margin-bottom:10px;font-size:0;color:#0000;outline:none;border:7px solid rgba(0,0,0,0);border-radius:4px;transition:border-color .3s;user-select:none}.netless-app-presentation-preview-page:hover,.netless-app-presentation-preview-page.netless-app-presentation-preview-page-active{border-color:#444e601a}.netless-app-presentation-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-presentation-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-presentation-footer{box-sizing:border-box;height:26px;display:flex;align-items:center;padding:0 16px;border-top:1px solid #eeeef7;color:#191919}.netless-app-presentation-float-footer{width:100%;min-height:26px;position:absolute;left:0;bottom:0;z-index:2000;background:#f9f9fce6;transition:opacity .4s}.netless-app-presentation-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:#0000;transition:background .4s;cursor:pointer;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-presentation-footer-btn:hover{background:#ededf0e6}@media (hover: none){.netless-app-presentation-footer-btn:hover{background:#0000!important}}.netless-app-presentation-footer-btn>svg{width:100%;height:100%}.netless-app-presentation-footer-btn>svg:nth-of-type(2){display:none}.netless-app-presentation-footer-btn.netless-app-presentation-footer-btn-playing>svg:nth-of-type(1){display:none}.netless-app-presentation-footer-btn.netless-app-presentation-footer-btn-playing>svg:nth-of-type(2){display:initial}.netless-app-presentation-footer-btn~.netless-app-presentation-footer-btn{margin-left:15px}.netless-app-presentation-page-jumps{flex:1;display:flex;justify-content:center;align-items:center}.netless-app-presentation-page-number{margin-left:auto;font-size:13px;user-select:none;white-space:nowrap;word-break:keep-all}.netless-app-presentation-page-number-input{border:none;outline:none;width:3em;margin:0;padding:0 2px;text-align:right;font-size:13px;line-height:1;font-weight:400;font-family:inherit;border-radius:2px;color:currentColor;background:#0000;transition:background .4s;user-select:text;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-presentation-page-number-input:hover,.netless-app-presentation-page-number-input:focus,.netless-app-presentation-page-number-input:active{background:#fff;box-shadow:#63636333 0 2px 8px}.netless-app-presentation-readonly.netless-app-presentation-footer{display:none}.netless-app-presentation-wb-view{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;overflow:hidden;transition:opacity .2s}.netless-app-presentation-image{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.netless-app-presentation-image>img{max-width:100%;max-height:100%;object-fit:contain}.telebox-color-scheme-dark .netless-app-presentation-page-number-input{color:#a6a6a8}.telebox-color-scheme-dark .netless-app-presentation-page-number-input:active,.telebox-color-scheme-dark .netless-app-presentation-page-number-input:focus,.telebox-color-scheme-dark .netless-app-presentation-page-number-input:hover{color:#222}.telebox-color-scheme-dark .netless-app-presentation-footer{color:#a6a6a8;background:#2d2d33;border-top:none}.telebox-color-scheme-dark .netless-app-presentation-footer-btn:hover{background:#212126}.telebox-color-scheme-dark .netless-app-presentation-preview{background:#323232e6}";
1160
+ var style_default = ".netless-app-presentation{height:100%;display:flex;flex-flow:column nowrap}.netless-app-presentation-content{position:relative;height:100%;overflow:hidden}.netless-app-presentation-preview-mask{display:none;position:absolute;z-index:200;top:0;left:0;width:100%;height:100%}.netless-app-presentation-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:#ededf0e6;box-shadow:inset -1px 0 #0000001c;transition:transform .4s;overflow:auto;overflow-y:scroll}.netless-app-presentation-preview-active .netless-app-presentation-preview-mask{display:block}.netless-app-presentation-preview-active .netless-app-presentation-preview{transform:translate(0)}.netless-app-presentation-preview-page{position:relative;display:block;width:55%;margin-bottom:10px;font-size:0;color:#0000;outline:none;border:7px solid rgba(0,0,0,0);border-radius:4px;transition:border-color .3s;user-select:none}.netless-app-presentation-preview-page:hover,.netless-app-presentation-preview-page.netless-app-presentation-preview-page-active{border-color:#444e601a}.netless-app-presentation-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-presentation-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-presentation-footer{box-sizing:border-box;height:26px;display:flex;align-items:center;padding:0 16px;border-top:1px solid #eeeef7;color:#191919}.netless-app-presentation-float-footer{width:100%;min-height:26px;position:absolute;left:0;bottom:0;z-index:2000;background:#f9f9fce6;transition:opacity .4s}.netless-app-presentation-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:#0000;transition:background .4s;cursor:pointer;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-presentation-footer-btn:hover{background:#ededf0e6}@media (hover: none){.netless-app-presentation-footer-btn:hover{background:#0000!important}}.netless-app-presentation-footer-btn>svg{width:100%;height:100%}.netless-app-presentation-footer-btn>svg:nth-of-type(2){display:none}.netless-app-presentation-footer-btn.netless-app-presentation-footer-btn-playing>svg:nth-of-type(1){display:none}.netless-app-presentation-footer-btn.netless-app-presentation-footer-btn-playing>svg:nth-of-type(2){display:initial}.netless-app-presentation-footer-btn~.netless-app-presentation-footer-btn{margin-left:15px}.netless-app-presentation-page-jumps{flex:1;display:flex;justify-content:center;align-items:center}.netless-app-presentation-page-number{margin-left:auto;font-size:13px;user-select:none;white-space:nowrap;word-break:keep-all}.netless-app-presentation-page-number-input{border:none;outline:none;width:3em;margin:0;padding:0 2px;text-align:right;font-size:13px;line-height:1;font-weight:400;font-family:inherit;border-radius:2px;color:currentColor;background:#0000;transition:background .4s;user-select:text;-webkit-tap-highlight-color:rgba(0,0,0,0)}.netless-app-presentation-page-number-input:hover,.netless-app-presentation-page-number-input:focus,.netless-app-presentation-page-number-input:active{background:#fff;box-shadow:#63636333 0 2px 8px}.netless-app-presentation-readonly.netless-app-presentation-footer{display:none}.netless-app-presentation-wb-view{position:absolute;top:0;left:0;width:100%;height:100%;z-index:100;overflow:hidden;transition:opacity .2s}.netless-app-presentation-image{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.netless-app-presentation-image>img{max-width:100%;max-height:100%;object-fit:contain}.telebox-color-scheme-dark .netless-app-presentation-page-number-input{color:#a6a6a8}.telebox-color-scheme-dark .netless-app-presentation-page-number-input:active,.telebox-color-scheme-dark .netless-app-presentation-page-number-input:focus,.telebox-color-scheme-dark .netless-app-presentation-page-number-input:hover{color:#222}.telebox-color-scheme-dark .netless-app-presentation-footer{color:#a6a6a8;background:#2d2d33;border-top:none}.telebox-color-scheme-dark .netless-app-presentation-footer-btn:hover{background:#212126}.telebox-color-scheme-dark .netless-app-presentation-preview{background:#323232e6}.netless-app-presentation-scrollbar-container{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:101}.netless-app-presentation-scrollbar-container-x,.netless-app-presentation-scrollbar-container-y{position:absolute;pointer-events:none;display:flex;justify-content:center;box-sizing:border-box;padding:0}.netless-app-presentation-scrollbar-container-x{bottom:0;left:0;height:6px;width:100%;padding-right:6px}.netless-app-presentation-scrollbar-container-y{top:0;right:0;width:6px;height:100%;flex-direction:column;padding-bottom:6px}.netless-app-presentation-scrollbar-x,.netless-app-presentation-scrollbar-y{border-radius:2px;background-color:#1b1f4d4d;pointer-events:auto;cursor:default}.netless-app-presentation-scrollbar-x{height:6px}.netless-app-presentation-scrollbar-y{width:6px}";
1161
1161
 
1162
1162
  // src/store.ts
1163
1163
  function noop() {
@@ -1228,6 +1228,235 @@ function readable(value, start = noop) {
1228
1228
  };
1229
1229
  }
1230
1230
 
1231
+ // src/scrollbar/Draggable.ts
1232
+ function makeDraggable(element, options) {
1233
+ let currentDragger = null;
1234
+ let originalMouseX = 0;
1235
+ let originalMouseY = 0;
1236
+ const { onDragEnd, onDrag, onDragStart, direction = "xy" } = options;
1237
+ const drag = (e, state) => {
1238
+ e.stopPropagation();
1239
+ if (!currentDragger)
1240
+ return;
1241
+ let transformedDragX = 0;
1242
+ let transformedDragY = 0;
1243
+ if (direction === "x") {
1244
+ transformedDragX = Math.round(e.pageX - originalMouseX);
1245
+ } else if (direction === "y") {
1246
+ transformedDragY = Math.round(e.pageY - originalMouseY);
1247
+ } else {
1248
+ transformedDragX = Math.round(e.pageX - originalMouseX);
1249
+ transformedDragY = Math.round(e.pageY - originalMouseY);
1250
+ }
1251
+ if (state === 3 /* END */) {
1252
+ onDragEnd == null ? void 0 : onDragEnd({ x: transformedDragX, y: transformedDragY });
1253
+ } else {
1254
+ onDrag == null ? void 0 : onDrag({ x: transformedDragX, y: transformedDragY });
1255
+ }
1256
+ };
1257
+ element.addEventListener("pointerdown", bindDrag);
1258
+ function bindDrag(e) {
1259
+ currentDragger = e.target;
1260
+ e.stopPropagation();
1261
+ if (currentDragger !== element) {
1262
+ return;
1263
+ }
1264
+ originalMouseX = e.pageX;
1265
+ originalMouseY = e.pageY;
1266
+ element.addEventListener("pointermove", drag);
1267
+ document.body.addEventListener("pointerup", stopDrag);
1268
+ element.setPointerCapture(e.pointerId);
1269
+ onDragStart == null ? void 0 : onDragStart();
1270
+ }
1271
+ function removeEventListener2() {
1272
+ currentDragger = null;
1273
+ element.removeEventListener("pointermove", drag);
1274
+ document.body.removeEventListener("pointerup", stopDrag);
1275
+ }
1276
+ function stopDrag(e) {
1277
+ if (!currentDragger)
1278
+ return;
1279
+ e.stopPropagation();
1280
+ drag(e, 3 /* END */);
1281
+ removeEventListener2();
1282
+ }
1283
+ function destroy() {
1284
+ stop();
1285
+ element.removeEventListener("pointerdown", bindDrag);
1286
+ }
1287
+ function stop() {
1288
+ removeEventListener2();
1289
+ }
1290
+ return { destroy };
1291
+ }
1292
+
1293
+ // src/scrollbar/index.ts
1294
+ var Scrollbar = class {
1295
+ constructor(container, option, view) {
1296
+ this.namespace = "netless-app-presentation";
1297
+ this.scrollContainer = document.createElement("div");
1298
+ this.option = {
1299
+ getPageSize: () => {
1300
+ return {
1301
+ width: 0,
1302
+ height: 0
1303
+ };
1304
+ },
1305
+ getWritable: () => false,
1306
+ syncView: () => void 0
1307
+ };
1308
+ this.onCameraUpdated = () => {
1309
+ const { scale, centerX, centerY } = this.view.camera;
1310
+ const originScale = this.getOriginScale();
1311
+ const ratio = Math.round(originScale / scale * 1e3) / 1e3;
1312
+ const scrollX = Math.round(centerX * originScale);
1313
+ const scrollY = Math.round(centerY * originScale);
1314
+ if (this.scrollbarX) {
1315
+ this.scrollbarX.style.width = `${ratio * 100}%`;
1316
+ this.scrollbarX.style.display = ratio === 1 ? "none" : "block";
1317
+ this.scrollbarX.style.transform = `translateX(${scrollX}px)`;
1318
+ }
1319
+ if (this.scrollbarY) {
1320
+ this.scrollbarY.style.height = `${ratio * 100}%`;
1321
+ this.scrollbarY.style.display = ratio === 1 ? "none" : "block";
1322
+ this.scrollbarY.style.transform = `translateY(${scrollY}px)`;
1323
+ }
1324
+ };
1325
+ this.onDragStart = () => {
1326
+ const camera = this.view.camera;
1327
+ this.cameraCache = {
1328
+ centerX: camera.centerX,
1329
+ centerY: camera.centerY,
1330
+ scale: camera.scale
1331
+ };
1332
+ };
1333
+ this.onDragX = (transformedDrag) => {
1334
+ if (this.cameraCache) {
1335
+ const { x } = transformedDrag;
1336
+ const originScale = this.getOriginScale();
1337
+ const { minX, maxX } = this.getScrollXRange(this.cameraCache);
1338
+ const scrollX = Math.round(x / originScale);
1339
+ let centerX = scrollX + this.cameraCache.centerX;
1340
+ if (centerX < minX) {
1341
+ centerX = minX;
1342
+ } else if (centerX > maxX) {
1343
+ centerX = maxX;
1344
+ }
1345
+ this.view.moveCamera({
1346
+ centerX,
1347
+ animationMode: "immediately"
1348
+ });
1349
+ }
1350
+ };
1351
+ this.onDragY = (transformedDrag) => {
1352
+ if (this.cameraCache) {
1353
+ const { y } = transformedDrag;
1354
+ const originScale = this.getOriginScale();
1355
+ const { minY, maxY } = this.getScrollYRange(this.cameraCache);
1356
+ const scrollY = Math.round(y / originScale);
1357
+ let centerY = scrollY + this.cameraCache.centerY;
1358
+ if (centerY < minY) {
1359
+ centerY = minY;
1360
+ } else if (centerY > maxY) {
1361
+ centerY = maxY;
1362
+ }
1363
+ this.view.moveCamera({
1364
+ centerY,
1365
+ animationMode: "immediately"
1366
+ });
1367
+ }
1368
+ };
1369
+ this.onDragEnd = () => {
1370
+ this.cameraCache = void 0;
1371
+ this.option.syncView();
1372
+ };
1373
+ this.scrollContainer.className = this.c("scrollbar-container");
1374
+ this.container = container;
1375
+ this.option = option;
1376
+ this.view = view;
1377
+ this.init();
1378
+ this.view.callbacks.on("onCameraUpdated", this.onCameraUpdated);
1379
+ }
1380
+ c(className) {
1381
+ return `${this.namespace}-${className}`;
1382
+ }
1383
+ getOriginScale() {
1384
+ const { size } = this.view;
1385
+ const { width, height } = this.option.getPageSize();
1386
+ return Math.min(size.height / height, size.width / width);
1387
+ }
1388
+ getScrollXRange(camera) {
1389
+ const { width } = this.option.getPageSize();
1390
+ const originScale = this.getOriginScale();
1391
+ const scale = camera.scale;
1392
+ const ratio = Math.round(originScale / scale * 1e3) / 1e3;
1393
+ const scrollWidth = width * (1 - ratio);
1394
+ const minX = -scrollWidth / 2;
1395
+ const maxX = scrollWidth / 2;
1396
+ return { minX, maxX };
1397
+ }
1398
+ getScrollYRange(camera) {
1399
+ const { height } = this.option.getPageSize();
1400
+ const originScale = this.getOriginScale();
1401
+ const scale = camera.scale;
1402
+ const ratio = Math.round(originScale / scale * 1e3) / 1e3;
1403
+ const scrollHeight = height * (1 - ratio);
1404
+ const minY = -scrollHeight / 2;
1405
+ const maxY = scrollHeight / 2;
1406
+ return { minY, maxY };
1407
+ }
1408
+ init() {
1409
+ this.scrollbarX = document.createElement("div");
1410
+ this.scrollbarX.classList.add(this.c("scrollbar-x"));
1411
+ if (this.option.getWritable()) {
1412
+ this.draggableX = makeDraggable(this.scrollbarX, {
1413
+ direction: "x",
1414
+ onDrag: this.onDragX,
1415
+ onDragEnd: this.onDragEnd,
1416
+ onDragStart: this.onDragStart
1417
+ });
1418
+ }
1419
+ Object.assign(this.scrollbarX.style, {
1420
+ width: "100%",
1421
+ display: "none"
1422
+ });
1423
+ this.scrollbarContainerX = document.createElement("div");
1424
+ this.scrollbarContainerX.classList.add(this.c("scrollbar-container-x"));
1425
+ this.scrollbarContainerX.appendChild(this.scrollbarX);
1426
+ this.scrollbarY = document.createElement("div");
1427
+ this.scrollbarY.classList.add(this.c("scrollbar-y"));
1428
+ if (this.option.getWritable()) {
1429
+ this.draggableY = makeDraggable(this.scrollbarY, {
1430
+ direction: "y",
1431
+ onDrag: this.onDragY,
1432
+ onDragEnd: this.onDragEnd,
1433
+ onDragStart: this.onDragStart
1434
+ });
1435
+ }
1436
+ Object.assign(this.scrollbarY.style, {
1437
+ height: "100%",
1438
+ display: "none"
1439
+ });
1440
+ this.scrollbarContainerY = document.createElement("div");
1441
+ this.scrollbarContainerY.classList.add(this.c("scrollbar-container-y"));
1442
+ this.scrollbarContainerY.appendChild(this.scrollbarY);
1443
+ this.scrollContainer.append(this.scrollbarContainerX, this.scrollbarContainerY);
1444
+ this.container.appendChild(this.scrollContainer);
1445
+ }
1446
+ destroy() {
1447
+ var _a, _b, _c, _d;
1448
+ this.view.callbacks.off("onCameraUpdated", this.onCameraUpdated);
1449
+ (_a = this.scrollbarX) == null ? void 0 : _a.remove();
1450
+ (_b = this.scrollbarY) == null ? void 0 : _b.remove();
1451
+ this.scrollbarX = void 0;
1452
+ this.scrollbarY = void 0;
1453
+ (_c = this.draggableX) == null ? void 0 : _c.destroy();
1454
+ (_d = this.draggableY) == null ? void 0 : _d.destroy();
1455
+ this.draggableX = void 0;
1456
+ this.draggableY = void 0;
1457
+ }
1458
+ };
1459
+
1231
1460
  // src/app-presentation.ts
1232
1461
  var emptySceneName = "$$empty$$";
1233
1462
  var ppt2page = (ppt, name) => ppt ? { width: ppt.width, height: ppt.height, src: ppt.src, thumbnail: ppt.previewURL, name } : null;
@@ -1419,21 +1648,27 @@ var NetlessAppPresentation = {
1419
1648
  }
1420
1649
  };
1421
1650
  const syncView = () => {
1422
- if (throttleSyncView > 0)
1423
- return;
1424
- const { width, height } = app.page() || {};
1425
- if (width && height && context.getIsWritable()) {
1426
- const { camera, size } = view;
1427
- const fixedW = Math.min(size.width, size.height * width / height);
1428
- const fixedH = Math.min(size.height, size.width * height / width);
1429
- const w = fixedW / camera.scale;
1430
- const h = fixedH / camera.scale;
1431
- const x = camera.centerX - w / 2;
1432
- const y = camera.centerY - h / 2;
1433
- throttleSyncView = setTimeout(() => {
1651
+ if (context.getIsWritable()) {
1652
+ if (options.debounceSync) {
1653
+ clearTimeout(throttleSyncView);
1434
1654
  throttleSyncView = 0;
1435
- view$$.setState({ uid: me, originX: x, originY: y, width: w, height: h });
1436
- }, 50);
1655
+ }
1656
+ if (throttleSyncView > 0)
1657
+ return;
1658
+ const { width, height } = app.page() || {};
1659
+ if (width && height) {
1660
+ throttleSyncView = setTimeout(() => {
1661
+ throttleSyncView = 0;
1662
+ const { camera, size } = view;
1663
+ const fixedW = Math.min(size.width, size.height * width / height);
1664
+ const fixedH = Math.min(size.height, size.width * height / width);
1665
+ const w = fixedW / camera.scale;
1666
+ const h = fixedH / camera.scale;
1667
+ const x = camera.centerX - w / 2;
1668
+ const y = camera.centerY - h / 2;
1669
+ view$$.setState({ uid: me, originX: x, originY: y, width: w, height: h });
1670
+ }, 50);
1671
+ }
1437
1672
  }
1438
1673
  };
1439
1674
  dispose2.add(() => {
@@ -1455,7 +1690,7 @@ var NetlessAppPresentation = {
1455
1690
  dispose2.add(view$$.addStateChangedListener(() => syncViewFromRemote(false, true)));
1456
1691
  const box = context.getBox();
1457
1692
  const app = dispose2.add(createPresentation(box, pages, jumpPage, pageIndex$, options.thumbnail));
1458
- app.contentDOM.dataset.appPresentationVersion = "0.1.8";
1693
+ app.contentDOM.dataset.appPresentationVersion = "0.1.9-beta.0";
1459
1694
  app.scaleDocsToFit = scaleDocsToFit;
1460
1695
  app.log = log;
1461
1696
  if (options.justDocsViewReadonly) {
@@ -1490,6 +1725,19 @@ var NetlessAppPresentation = {
1490
1725
  dispose2.add(context.emitter.on("writableChange", (isWritable) => {
1491
1726
  app.setReadonly(!isWritable);
1492
1727
  }));
1728
+ if (options.useScrollbar) {
1729
+ dispose2.make(() => {
1730
+ const scrollbar = new Scrollbar(app.contentDOM, {
1731
+ getPageSize: () => {
1732
+ const { width, height } = app.page() || {};
1733
+ return { width: width || 0, height: height || 0 };
1734
+ },
1735
+ getWritable: () => context.getIsWritable(),
1736
+ syncView: () => syncView()
1737
+ }, view);
1738
+ return () => scrollbar.destroy();
1739
+ });
1740
+ }
1493
1741
  context.emitter.on("destroy", () => dispose2());
1494
1742
  const reportProgress = (progress, result) => {
1495
1743
  window.postMessage({ type: "@netless/_result_save_pdf_", appId: context.appId, progress, result }, "*");
@@ -1663,7 +1911,7 @@ var install = (register, options = {}) => {
1663
1911
  };
1664
1912
 
1665
1913
  // src/index.ts
1666
- var version = "0.1.8";
1914
+ var version = "0.1.9-beta.0";
1667
1915
 
1668
1916
  exports.NetlessAppPresentation = NetlessAppPresentation;
1669
1917
  exports.Presentation = Presentation;