@netless/app-slide 0.3.0-canary.3 → 0.3.0-canary.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/dist/SlideViewer.d.ts +2 -3
- package/dist/main.iife.js +2 -6362
- package/dist/main.iife.js.map +1 -1
- package/dist/main.js +3 -0
- package/dist/main.js.map +1 -0
- package/dist/main.mjs +1091 -0
- package/dist/main.mjs.map +1 -0
- package/dist/typings.d.ts +2 -15
- package/package.json +9 -7
- package/src/SlideViewer.ts +12 -20
- package/src/index.ts +3 -1
- package/src/style.scss +16 -6
- package/src/typings.ts +2 -15
- package/dist/main.cjs.js +0 -6363
- package/dist/main.cjs.js.map +0 -1
- package/dist/main.es.js +0 -38217
- package/dist/main.es.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.mjs","sources":["../../../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js","../../../node_modules/.pnpm/is-arrayish@0.3.2/node_modules/is-arrayish/index.js","../../../node_modules/.pnpm/simple-swizzle@0.2.2/node_modules/simple-swizzle/index.js","../../../node_modules/.pnpm/color-string@1.9.1/node_modules/color-string/index.js","../../../node_modules/.pnpm/side-effect-manager@1.1.1/node_modules/side-effect-manager/dist/side-effect-manager.es.js","../../../node_modules/.pnpm/vanilla-lazyload@17.8.3/node_modules/vanilla-lazyload/dist/lazyload.esm.js","../src/constants.ts","../src/utils.ts","../src/icons/sidebar.ts","../src/icons/arrow-left.ts","../src/icons/play.ts","../src/icons/pause.ts","../src/icons/arrow-right.ts","../src/SlideViewer.ts","../src/Refrigerator.ts","../src/index.ts"],"sourcesContent":["'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar 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*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar 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*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","const s=\"!#%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\",e=s.length,t=Array(20),i=()=>{for(let i=0;i<20;i++)t[i]=s.charAt(Math.random()*e);return t.join(\"\")};function r(s){try{return s()}catch(e){console.error(e)}}class n{constructor(){this.disposers=new Map}addDisposer(s,e=this.genUID()){return this.flush(e),this.disposers.set(e,Array.isArray(s)?()=>s.forEach(r):s),e}add(s,e=this.genUID()){const t=s();return t?this.addDisposer(t,e):e}addEventListener(s,e,t,i,r=this.genUID()){return s.addEventListener(e,t,i),this.addDisposer((()=>s.removeEventListener(e,t,i)),r),r}setTimeout(s,e,t=this.genUID()){const i=window.setTimeout((()=>{this.remove(t),s()}),e);return this.addDisposer((()=>window.clearTimeout(i)),t)}setInterval(s,e,t=this.genUID()){const i=window.setInterval(s,e);return this.addDisposer((()=>window.clearInterval(i)),t)}remove(s){const e=this.disposers.get(s);return this.disposers.delete(s),e}flush(s){const e=this.remove(s);if(e)try{e()}catch(t){console.error(t)}}flushAll(){this.disposers.forEach(r),this.disposers.clear()}genUID(){let s;do{s=i()}while(this.disposers.has(s));return s}}class h{constructor(){this.finished=Promise.resolve(),this.disposers=new Map,this._nextTask=new Map,this._isRunning=new Set}add(s,e=this.genUID()){return this._isRunning.has(e)?this._nextTask.set(e,(()=>this._add(s,e))):this._add(s,e),e}async _add(s,e){this._startTask(e);const t=this.remove(e);if(t)try{await t()}catch(n){console.error(n)}try{const t=await s();t&&this.disposers.set(e,Array.isArray(t)?async()=>Promise.all(t.map(r)):t)}catch(n){console.error(n)}this._endTask(e);const i=this._nextTask.get(e);i&&(this._nextTask.delete(e),i())}addDisposer(s,e=this.genUID()){return this.add((()=>s),e)}remove(s){const e=this.disposers.get(s);return this.disposers.delete(s),e}flush(s){this._isRunning.has(s)?this._nextTask.set(s,(()=>this._flush(s))):this._flush(s)}async _flush(s){const e=this.remove(s);if(e){this._startTask(s);try{await e()}catch(i){console.error(i)}this._endTask(s)}const t=this._nextTask.get(s);t&&(this._nextTask.delete(s),t())}flushAll(){this.disposers.forEach(((s,e)=>this.flush(e)))}genUID(){let s;do{s=i()}while(this.disposers.has(s));return s}_startTask(s){this._isRunning.add(s),this._resolveFinished||(this.finished=new Promise((s=>{this._resolveFinished=s})))}_endTask(s){this._isRunning.delete(s),this._resolveFinished&&this._isRunning.size<=0&&this._nextTask.size<=0&&(this._resolveFinished(),this._resolveFinished=void 0)}}export{h as AsyncSideEffectManager,n as SideEffectManager,i as genUID};\n//# sourceMappingURL=side-effect-manager.es.js.map\n","const runningOnBrowser = typeof window !== \"undefined\";\n\nconst isBot =\n (runningOnBrowser && !(\"onscroll\" in window)) ||\n (typeof navigator !== \"undefined\" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent));\n\nconst supportsIntersectionObserver = runningOnBrowser && \"IntersectionObserver\" in window;\n\nconst supportsClassList = runningOnBrowser && \"classList\" in document.createElement(\"p\");\n\nconst isHiDpi = runningOnBrowser && window.devicePixelRatio > 1;\n\nconst defaultSettings = {\n elements_selector: \".lazy\",\n container: isBot || runningOnBrowser ? document : null,\n threshold: 300,\n thresholds: null,\n data_src: \"src\",\n data_srcset: \"srcset\",\n data_sizes: \"sizes\",\n data_bg: \"bg\",\n data_bg_hidpi: \"bg-hidpi\",\n data_bg_multi: \"bg-multi\",\n data_bg_multi_hidpi: \"bg-multi-hidpi\",\n data_bg_set: \"bg-set\",\n data_poster: \"poster\",\n class_applied: \"applied\",\n class_loading: \"loading\",\n class_loaded: \"loaded\",\n class_error: \"error\",\n class_entered: \"entered\",\n class_exited: \"exited\",\n unobserve_completed: true,\n unobserve_entered: false,\n cancel_on_exit: true,\n callback_enter: null,\n callback_exit: null,\n callback_applied: null,\n callback_loading: null,\n callback_loaded: null,\n callback_error: null,\n callback_finish: null,\n callback_cancel: null,\n use_native: false,\n restore_on_error: false,\n};\n\nconst getExtendedSettings = (customSettings) => {\n return Object.assign({}, defaultSettings, customSettings);\n};\n\n/* Creates instance and notifies it through the window element */\nconst createInstance = function(classObj, options) {\n let event;\n const eventString = \"LazyLoad::Initialized\";\n const instance = new classObj(options);\n try {\n // Works in modern browsers\n event = new CustomEvent(eventString, { detail: { instance } });\n } catch (err) {\n // Works in Internet Explorer (all versions)\n event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(eventString, false, false, { instance });\n }\n window.dispatchEvent(event);\n};\n\n/* Auto initialization of one or more instances of lazyload, depending on the \n options passed in (plain object or an array) */\nconst autoInitialize = (classObj, options) => {\n if (!options) {\n return;\n }\n if (!options.length) {\n // Plain object\n createInstance(classObj, options);\n } else {\n // Array of objects\n for (let i = 0, optionsItem; (optionsItem = options[i]); i += 1) {\n createInstance(classObj, optionsItem);\n }\n }\n};\n\nconst SRC = \"src\";\nconst SRCSET = \"srcset\";\nconst SIZES = \"sizes\";\nconst POSTER = \"poster\";\nconst ORIGINALS = \"llOriginalAttrs\";\nconst DATA = \"data\";\n\nconst statusLoading = \"loading\";\nconst statusLoaded = \"loaded\";\nconst statusApplied = \"applied\";\nconst statusEntered = \"entered\";\nconst statusError = \"error\";\nconst statusNative = \"native\";\n\nconst dataPrefix = \"data-\";\nconst statusDataName = \"ll-status\";\n\nconst getData = (element, attribute) => {\n return element.getAttribute(dataPrefix + attribute);\n};\n\nconst setData = (element, attribute, value) => {\n var attrName = dataPrefix + attribute;\n if (value === null) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst getStatus = (element) => getData(element, statusDataName);\nconst setStatus = (element, status) => setData(element, statusDataName, status);\nconst resetStatus = (element) => setStatus(element, null);\n\nconst hasEmptyStatus = (element) => getStatus(element) === null;\nconst hasStatusLoading = (element) => getStatus(element) === statusLoading;\nconst hasStatusError = (element) => getStatus(element) === statusError;\nconst hasStatusNative = (element) => getStatus(element) === statusNative;\n\nconst statusesAfterLoading = [statusLoading, statusLoaded, statusApplied, statusError];\nconst hadStartedLoading = (element) => statusesAfterLoading.indexOf(getStatus(element)) >= 0;\n\nconst safeCallback = (callback, arg1, arg2, arg3) => {\n\tif (!callback) {\n\t\treturn;\n\t}\n\n\tif (arg3 !== undefined) {\n\t\tcallback(arg1, arg2, arg3);\n\t\treturn;\n\t}\n\tif (arg2 !== undefined) {\n\t\tcallback(arg1, arg2);\n\t\treturn;\n\t}\n\tcallback(arg1);\n};\n\nconst addClass = (element, className) => {\n\tif (supportsClassList) {\n\t\telement.classList.add(className);\n\t\treturn;\n\t}\n\telement.className += (element.className ? \" \" : \"\") + className;\n};\n\nconst removeClass = (element, className) => {\n\tif (supportsClassList) {\n\t\telement.classList.remove(className);\n\t\treturn;\n\t}\n\telement.className = element.className.\n\t\treplace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").\n\t\treplace(/^\\s+/, \"\").\n\t\treplace(/\\s+$/, \"\");\n};\n\nconst addTempImage = (element) => {\n element.llTempImage = document.createElement(\"IMG\");\n};\n\nconst deleteTempImage = (element) => {\n delete element.llTempImage;\n};\n\nconst getTempImage = (element) => element.llTempImage;\n\nconst unobserve = (element, instance) => {\n if (!instance) return;\n const observer = instance._observer;\n if (!observer) return;\n observer.unobserve(element);\n};\n\nconst resetObserver = (observer) => {\n observer.disconnect();\n};\n\nconst unobserveEntered = (element, settings, instance) => {\n if (settings.unobserve_entered) unobserve(element, instance);\n};\n\nconst updateLoadingCount = (instance, delta) => {\n if (!instance) return;\n instance.loadingCount += delta;\n};\n\nconst decreaseToLoadCount = (instance) => {\n if (!instance) return;\n instance.toLoadCount -= 1;\n};\n\nconst setToLoadCount = (instance, value) => {\n if (!instance) return;\n instance.toLoadCount = value;\n};\n\nconst isSomethingLoading = (instance) => instance.loadingCount > 0;\n\nconst haveElementsToLoad = (instance) => instance.toLoadCount > 0;\n\nconst getSourceTags = (parentTag) => {\n let sourceTags = [];\n for (let i = 0, childTag; (childTag = parentTag.children[i]); i += 1) {\n if (childTag.tagName === \"SOURCE\") {\n sourceTags.push(childTag);\n }\n }\n return sourceTags;\n};\n\nconst forEachPictureSource = (element, fn) => {\n const parent = element.parentNode;\n if (!parent || parent.tagName !== \"PICTURE\") {\n return;\n }\n let sourceTags = getSourceTags(parent);\n sourceTags.forEach(fn);\n};\n\nconst forEachVideoSource = (element, fn) => {\n let sourceTags = getSourceTags(element);\n sourceTags.forEach(fn);\n};\n\nconst attrsSrc = [SRC];\nconst attrsSrcPoster = [SRC, POSTER];\nconst attrsSrcSrcsetSizes = [SRC, SRCSET, SIZES];\nconst attrsData = [DATA];\n\nconst hasOriginalAttrs = (element) => !!element[ORIGINALS];\nconst getOriginalAttrs = (element) => element[ORIGINALS];\nconst deleteOriginalAttrs = (element) => delete element[ORIGINALS];\n\n// ## SAVE ##\n\nconst setOriginalsObject = (element, attributes) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n const originals = {};\n attributes.forEach((attribute) => {\n originals[attribute] = element.getAttribute(attribute);\n });\n element[ORIGINALS] = originals;\n};\n\nconst saveOriginalBackgroundStyle = (element) => {\n if (hasOriginalAttrs(element)) {\n return;\n }\n element[ORIGINALS] = { backgroundImage: element.style.backgroundImage };\n};\n\n// ## RESTORE ##\n\nconst setOrResetAttribute = (element, attrName, value) => {\n if (!value) {\n element.removeAttribute(attrName);\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst restoreOriginalAttrs = (element, attributes) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n attributes.forEach((attribute) => {\n setOrResetAttribute(element, attribute, originals[attribute]);\n });\n};\n\nconst restoreOriginalBgImage = (element) => {\n if (!hasOriginalAttrs(element)) {\n return;\n }\n const originals = getOriginalAttrs(element);\n element.style.backgroundImage = originals.backgroundImage;\n};\n\nconst manageApplied = (element, settings, instance) => {\n addClass(element, settings.class_applied);\n setStatus(element, statusApplied);\n // Instance is not provided when loading is called from static class\n if (!instance) return;\n if (settings.unobserve_completed) {\n // Unobserve now because we can't do it on load\n unobserve(element, settings);\n }\n safeCallback(settings.callback_applied, element, instance);\n};\n\nconst manageLoading = (element, settings, instance) => {\n addClass(element, settings.class_loading);\n setStatus(element, statusLoading);\n // Instance is not provided when loading is called from static class\n if (!instance) return;\n updateLoadingCount(instance, +1);\n safeCallback(settings.callback_loading, element, instance);\n};\n\nconst setAttributeIfValue = (element, attrName, value) => {\n if (!value) {\n return;\n }\n element.setAttribute(attrName, value);\n};\n\nconst setImageAttributes = (element, settings) => {\n setAttributeIfValue(element, SIZES, getData(element, settings.data_sizes));\n setAttributeIfValue(element, SRCSET, getData(element, settings.data_srcset));\n setAttributeIfValue(element, SRC, getData(element, settings.data_src));\n};\n\nconst setSourcesImg = (imgEl, settings) => {\n forEachPictureSource(imgEl, (sourceTag) => {\n setOriginalsObject(sourceTag, attrsSrcSrcsetSizes);\n setImageAttributes(sourceTag, settings);\n });\n setOriginalsObject(imgEl, attrsSrcSrcsetSizes);\n setImageAttributes(imgEl, settings);\n};\n\nconst setSourcesIframe = (iframe, settings) => {\n setOriginalsObject(iframe, attrsSrc);\n setAttributeIfValue(iframe, SRC, getData(iframe, settings.data_src));\n};\n\nconst setSourcesVideo = (videoEl, settings) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n setOriginalsObject(sourceEl, attrsSrc);\n setAttributeIfValue(sourceEl, SRC, getData(sourceEl, settings.data_src));\n });\n setOriginalsObject(videoEl, attrsSrcPoster);\n\n setAttributeIfValue(videoEl, POSTER, getData(videoEl, settings.data_poster));\n setAttributeIfValue(videoEl, SRC, getData(videoEl, settings.data_src));\n videoEl.load();\n};\n\nconst setSourcesObject = (object, settings) => {\n setOriginalsObject(object, attrsData);\n setAttributeIfValue(object, DATA, getData(object, settings.data_src));\n};\n\nconst setBackground = (element, settings, instance) => {\n const bg1xValue = getData(element, settings.data_bg);\n const bgHiDpiValue = getData(element, settings.data_bg_hidpi);\n const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue) return;\n element.style.backgroundImage = `url(\"${bgDataValue}\")`;\n getTempImage(element).setAttribute(SRC, bgDataValue);\n manageLoading(element, settings, instance);\n};\n\n// NOTE: THE TEMP IMAGE TRICK CANNOT BE DONE WITH data-multi-bg\n// BECAUSE INSIDE ITS VALUES MUST BE WRAPPED WITH URL() AND ONE OF THEM\n// COULD BE A GRADIENT BACKGROUND IMAGE\nconst setMultiBackground = (element, settings, instance) => {\n const bg1xValue = getData(element, settings.data_bg_multi);\n const bgHiDpiValue = getData(element, settings.data_bg_multi_hidpi);\n const bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;\n if (!bgDataValue) {\n return;\n }\n element.style.backgroundImage = bgDataValue;\n manageApplied(element, settings, instance);\n};\n\nconst setImgsetBackground = (element, settings, instance) => {\n const bgImgSetDataValue = getData(element, settings.data_bg_set);\n if (!bgImgSetDataValue) {\n return;\n }\n const imgSetValues = bgImgSetDataValue.split(\"|\");\n let bgImageValues = imgSetValues.map((value) => `image-set(${value})`);\n element.style.backgroundImage = bgImageValues.join();\n // Temporary fix for Chromeium with the -webkit- prefix\n if (element.style.backgroundImage === '') {\n bgImageValues = imgSetValues.map((value) => `-webkit-image-set(${value})`);\n element.style.backgroundImage = bgImageValues.join();\n }\n manageApplied(element, settings, instance);\n};\n\nconst setSourcesFunctions = {\n IMG: setSourcesImg,\n IFRAME: setSourcesIframe,\n VIDEO: setSourcesVideo,\n OBJECT: setSourcesObject\n};\n\nconst setSourcesNative = (element, settings) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n};\n\nconst setSources = (element, settings, instance) => {\n const setSourcesFunction = setSourcesFunctions[element.tagName];\n if (!setSourcesFunction) {\n return;\n }\n setSourcesFunction(element, settings);\n manageLoading(element, settings, instance);\n};\n\nconst elementsWithLoadEvent = [\"IMG\", \"IFRAME\", \"VIDEO\", \"OBJECT\"];\nconst hasLoadEvent = (element) => elementsWithLoadEvent.indexOf(element.tagName) > -1;\n\nconst checkFinish = (settings, instance) => {\n if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) {\n safeCallback(settings.callback_finish, instance);\n }\n};\n\nconst addEventListener = (element, eventName, handler) => {\n element.addEventListener(eventName, handler);\n element.llEvLisnrs[eventName] = handler;\n};\n\nconst removeEventListener = (element, eventName, handler) => {\n element.removeEventListener(eventName, handler);\n};\n\nconst hasEventListeners = (element) => {\n return !!element.llEvLisnrs;\n};\n\nconst addEventListeners = (element, loadHandler, errorHandler) => {\n if (!hasEventListeners(element)) element.llEvLisnrs = {};\n const loadEventName = element.tagName === \"VIDEO\" ? \"loadeddata\" : \"load\";\n addEventListener(element, loadEventName, loadHandler);\n addEventListener(element, \"error\", errorHandler);\n};\n\nconst removeEventListeners = (element) => {\n if (!hasEventListeners(element)) {\n return;\n }\n const eventListeners = element.llEvLisnrs;\n for (let eventName in eventListeners) {\n const handler = eventListeners[eventName];\n removeEventListener(element, eventName, handler);\n }\n delete element.llEvLisnrs;\n};\n\nconst doneHandler = (element, settings, instance) => {\n deleteTempImage(element);\n updateLoadingCount(instance, -1);\n decreaseToLoadCount(instance);\n removeClass(element, settings.class_loading);\n if (settings.unobserve_completed) {\n unobserve(element, instance);\n }\n};\n\nconst loadHandler = (event, element, settings, instance) => {\n const goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_loaded);\n setStatus(element, statusLoaded);\n safeCallback(settings.callback_loaded, element, instance);\n if (!goingNative) checkFinish(settings, instance);\n};\n\nconst errorHandler = (event, element, settings, instance) => {\n const goingNative = hasStatusNative(element);\n doneHandler(element, settings, instance);\n addClass(element, settings.class_error);\n setStatus(element, statusError);\n safeCallback(settings.callback_error, element, instance);\n if (settings.restore_on_error) restoreOriginalAttrs(element, attrsSrcSrcsetSizes);\n if (!goingNative) checkFinish(settings, instance);\n};\n\nconst addOneShotEventListeners = (element, settings, instance) => {\n const elementToListenTo = getTempImage(element) || element;\n if (hasEventListeners(elementToListenTo)) {\n // This happens when loading is retried twice\n return;\n }\n const _loadHandler = (event) => {\n loadHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n const _errorHandler = (event) => {\n errorHandler(event, element, settings, instance);\n removeEventListeners(elementToListenTo);\n };\n addEventListeners(elementToListenTo, _loadHandler, _errorHandler);\n};\n\nconst loadBackground = (element, settings, instance) => {\n addTempImage(element);\n addOneShotEventListeners(element, settings, instance);\n saveOriginalBackgroundStyle(element);\n setBackground(element, settings, instance);\n setMultiBackground(element, settings, instance);\n setImgsetBackground(element, settings, instance);\n};\n\nconst loadRegular = (element, settings, instance) => {\n addOneShotEventListeners(element, settings, instance);\n setSources(element, settings, instance);\n};\n\nconst load = (element, settings, instance) => {\n if (hasLoadEvent(element)) {\n loadRegular(element, settings, instance);\n } else {\n loadBackground(element, settings, instance);\n }\n};\n\nconst loadNative = (element, settings, instance) => {\n element.setAttribute(\"loading\", \"lazy\");\n addOneShotEventListeners(element, settings, instance);\n setSourcesNative(element, settings);\n setStatus(element, statusNative);\n};\n\nconst removeImageAttributes = (element) => {\n element.removeAttribute(SRC);\n element.removeAttribute(SRCSET);\n element.removeAttribute(SIZES);\n};\n\nconst resetSourcesImg = (element) => {\n forEachPictureSource(element, (sourceTag) => {\n removeImageAttributes(sourceTag);\n });\n removeImageAttributes(element);\n};\n\nconst restoreImg = (imgEl) => {\n forEachPictureSource(imgEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrcSrcsetSizes);\n });\n restoreOriginalAttrs(imgEl, attrsSrcSrcsetSizes);\n};\n\nconst restoreVideo = (videoEl) => {\n forEachVideoSource(videoEl, (sourceEl) => {\n restoreOriginalAttrs(sourceEl, attrsSrc);\n });\n restoreOriginalAttrs(videoEl, attrsSrcPoster);\n videoEl.load();\n};\n\nconst restoreIframe = (iframeEl) => {\n restoreOriginalAttrs(iframeEl, attrsSrc);\n};\n\nconst restoreObject = (objectEl) => {\n restoreOriginalAttrs(objectEl, attrsData);\n};\n\nconst restoreFunctions = {\n IMG: restoreImg,\n IFRAME: restoreIframe,\n VIDEO: restoreVideo,\n OBJECT: restoreObject\n};\n\nconst restoreAttributes = (element) => {\n const restoreFunction = restoreFunctions[element.tagName];\n if (!restoreFunction) {\n restoreOriginalBgImage(element);\n return;\n }\n restoreFunction(element);\n};\n\nconst resetClasses = (element, settings) => {\n if (hasEmptyStatus(element) || hasStatusNative(element)) {\n return;\n }\n removeClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n removeClass(element, settings.class_applied);\n removeClass(element, settings.class_loading);\n removeClass(element, settings.class_loaded);\n removeClass(element, settings.class_error);\n};\n\nconst restore = (element, settings) => {\n restoreAttributes(element);\n resetClasses(element, settings);\n resetStatus(element);\n deleteOriginalAttrs(element);\n};\n\nconst cancelLoading = (element, entry, settings, instance) => {\n if (!settings.cancel_on_exit) return;\n if (!hasStatusLoading(element)) return;\n if (element.tagName !== \"IMG\") return; //Works only on images\n removeEventListeners(element);\n resetSourcesImg(element);\n restoreImg(element);\n removeClass(element, settings.class_loading);\n updateLoadingCount(instance, -1);\n resetStatus(element);\n safeCallback(settings.callback_cancel, element, entry, instance);\n};\n\nconst onEnter = (element, entry, settings, instance) => {\n const dontLoad = hadStartedLoading(element); /* Save status \n before setting it, to prevent loading it again. Fixes #526. */\n setStatus(element, statusEntered);\n addClass(element, settings.class_entered);\n removeClass(element, settings.class_exited);\n unobserveEntered(element, settings, instance);\n safeCallback(settings.callback_enter, element, entry, instance);\n if (dontLoad) return;\n load(element, settings, instance);\n};\n\nconst onExit = (element, entry, settings, instance) => {\n if (hasEmptyStatus(element)) return; //Ignore the first pass, at landing\n addClass(element, settings.class_exited);\n cancelLoading(element, entry, settings, instance);\n safeCallback(settings.callback_exit, element, entry, instance);\n};\n\nconst tagsWithNativeLazy = [\"IMG\", \"IFRAME\", \"VIDEO\"];\n\nconst shouldUseNative = (settings) =>\n settings.use_native && \"loading\" in HTMLImageElement.prototype;\n\nconst loadAllNative = (elements, settings, instance) => {\n elements.forEach((element) => {\n if (tagsWithNativeLazy.indexOf(element.tagName) === -1) {\n return;\n }\n loadNative(element, settings, instance);\n });\n setToLoadCount(instance, 0);\n};\n\nconst isIntersecting = (entry) => entry.isIntersecting || entry.intersectionRatio > 0;\n\nconst getObserverSettings = (settings) => ({\n root: settings.container === document ? null : settings.container,\n rootMargin: settings.thresholds || settings.threshold + \"px\"\n});\n\nconst intersectionHandler = (entries, settings, instance) => {\n entries.forEach((entry) =>\n isIntersecting(entry)\n ? onEnter(entry.target, entry, settings, instance)\n : onExit(entry.target, entry, settings, instance)\n );\n};\n\nconst observeElements = (observer, elements) => {\n elements.forEach((element) => {\n observer.observe(element);\n });\n};\n\nconst updateObserver = (observer, elementsToObserve) => {\n resetObserver(observer);\n observeElements(observer, elementsToObserve);\n};\n\nconst setObserver = (settings, instance) => {\n if (!supportsIntersectionObserver || shouldUseNative(settings)) {\n return;\n }\n instance._observer = new IntersectionObserver((entries) => {\n intersectionHandler(entries, settings, instance);\n }, getObserverSettings(settings));\n};\n\nconst toArray = (nodeSet) => Array.prototype.slice.call(nodeSet);\n\nconst queryElements = (settings) =>\n settings.container.querySelectorAll(settings.elements_selector);\n\nconst excludeManagedElements = (elements) => toArray(elements).filter(hasEmptyStatus);\n\nconst hasError = (element) => hasStatusError(element);\nconst filterErrorElements = (elements) => toArray(elements).filter(hasError);\n\nconst getElementsToLoad = (elements, settings) =>\n excludeManagedElements(elements || queryElements(settings));\n\nconst retryLazyLoad = (settings, instance) => {\n const errorElements = filterErrorElements(queryElements(settings));\n errorElements.forEach((element) => {\n removeClass(element, settings.class_error);\n resetStatus(element);\n });\n instance.update();\n};\n\nconst setOnlineCheck = (settings, instance) => {\n if (!runningOnBrowser) {\n return;\n }\n instance._onlineHandler = () => {\n retryLazyLoad(settings, instance);\n };\n window.addEventListener(\"online\", instance._onlineHandler);\n};\n\nconst resetOnlineCheck = (instance) => {\n if (!runningOnBrowser) {\n return;\n }\n window.removeEventListener(\"online\", instance._onlineHandler);\n};\n\nconst LazyLoad = function (customSettings, elements) {\n const settings = getExtendedSettings(customSettings);\n this._settings = settings;\n this.loadingCount = 0;\n setObserver(settings, this);\n setOnlineCheck(settings, this);\n this.update(elements);\n};\n\nLazyLoad.prototype = {\n update: function (givenNodeset) {\n const settings = this._settings;\n const elementsToLoad = getElementsToLoad(givenNodeset, settings);\n setToLoadCount(this, elementsToLoad.length);\n\n if (isBot || !supportsIntersectionObserver) {\n this.loadAll(elementsToLoad);\n return;\n }\n if (shouldUseNative(settings)) {\n loadAllNative(elementsToLoad, settings, this);\n return;\n }\n\n updateObserver(this._observer, elementsToLoad);\n },\n\n destroy: function () {\n // Observer\n if (this._observer) {\n this._observer.disconnect();\n }\n // Clean handlers\n resetOnlineCheck(this);\n // Clean custom attributes on elements\n queryElements(this._settings).forEach((element) => {\n deleteOriginalAttrs(element);\n });\n // Delete all internal props\n delete this._observer;\n delete this._settings;\n delete this._onlineHandler;\n delete this.loadingCount;\n delete this.toLoadCount;\n },\n\n loadAll: function (elements) {\n const settings = this._settings;\n const elementsToLoad = getElementsToLoad(elements, settings);\n elementsToLoad.forEach((element) => {\n unobserve(element, this);\n load(element, settings, this);\n });\n },\n\n restoreAll: function() {\n const settings = this._settings;\n queryElements(settings).forEach((element) => {\n restore(element, settings);\n });\n }\n};\n\nLazyLoad.load = (element, customSettings) => {\n const settings = getExtendedSettings(customSettings);\n load(element, settings);\n};\n\nLazyLoad.resetStatus = (element) => {\n resetStatus(element);\n};\n\n// Automatic instances creation if required (useful for async script loading)\nif (runningOnBrowser) {\n autoInitialize(LazyLoad, window.lazyLoadOptions);\n}\n\nexport { LazyLoad as default };\n","export const namespace = \"netless-app-slide\";\n\nexport const DefaultUrl = \"https://convertcdn.netless.link/dynamicConvert\";\n","export function noop() {\n return;\n}\n","export function sidebarSVG(namespace: string): SVGElement {\n const NS = \"http://www.w3.org/2000/svg\";\n\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-sidebar`);\n $svg.setAttribute(\"viewBox\", \"0 0 64 64\");\n\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\n \"d\",\n \"M50 8H14c-3.309 0-6 2.691-6 6v36c0 3.309 2.691 6 6 6h36c3.309 0 6-2.691 6-6V14c0-3.309-2.691-6-6-6zM12 50V14c0-1.103.897-2 2-2h8v40h-8c-1.103 0-2-.897-2-2zm40 0c0 1.103-.897 2-2 2H26V12h24c1.103 0 2 .897 2 2z\"\n );\n\n $svg.appendChild($path);\n\n return $svg;\n}\n","export function arrowLeftSVG(namespace: string): SVGElement {\n const NS = \"http://www.w3.org/2000/svg\";\n\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-arrow-left`);\n $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\n \"d\",\n \"M177.81 249.959L337.473 90.295c2.722-2.865 2.651-7.378-.143-10.1-2.793-2.65-7.163-2.65-9.956 0l-164.75 164.75c-2.793 2.793-2.793 7.306 0 10.1l164.75 164.75c2.865 2.722 7.378 2.65 10.099-.143 2.651-2.794 2.651-7.163 0-9.957L177.809 249.959z\"\n );\n\n $svg.appendChild($path);\n\n return $svg;\n}\n","export function playSVG(namespace: string): SVGElement {\n const NS = \"http://www.w3.org/2000/svg\";\n\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-play`);\n $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\n \"d\",\n \"M418.158 257.419L174.663 413.33c-6.017 3.919-15.708 3.772-21.291-.29-2.791-2.018-4.295-4.483-4.295-7.084V94.109c0-5.65 6.883-10.289 15.271-10.289 4.298 0 8.391 1.307 11.181 3.332l242.629 155.484c6.016 3.917 6.451 10.292.649 14.491-.216.154-.432.154-.649.292zM170.621 391.288l223.116-141.301L170.71 107.753l-.089 283.535z\"\n );\n\n $svg.appendChild($path);\n\n return $svg;\n}\n","export function pauseSVG(namespace: string): SVGElement {\n const NS = \"http://www.w3.org/2000/svg\";\n\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-pause`);\n $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\n \"d\",\n \"M312.491 78.261c0-6.159 4.893-11.213 11.04-11.213 6.158 0 11.211 5.054 11.211 11.213v343.478c0 6.159-5.053 11.213-11.211 11.213-6.147 0-11.04-5.054-11.04-11.213V78.261zM165.257 78.261c0-6.159 4.893-11.213 11.04-11.213 6.158 0 11.211 5.054 11.211 11.213v343.478c0 6.159-5.053 11.213-11.211 11.213-6.147 0-11.04-5.054-11.04-11.213V78.261z\"\n );\n\n $svg.appendChild($path);\n\n return $svg;\n}\n","export function arrowRightSVG(namespace: string): SVGElement {\n const NS = \"http://www.w3.org/2000/svg\";\n\n const $svg = document.createElementNS(NS, \"svg\");\n $svg.setAttribute(\"class\", `${namespace}-footer-icon-arrow-right`);\n $svg.setAttribute(\"viewBox\", \"0 0 500 500\");\n\n const $path = document.createElementNS(NS, \"path\");\n $path.setAttribute(\"fill\", \"currentColor\");\n $path.setAttribute(\n \"d\",\n \"M322.19 250.041L162.527 409.705c-2.722 2.865-2.651 7.378.143 10.1 2.793 2.65 7.163 2.65 9.956 0l164.75-164.75c2.793-2.793 2.793-7.306 0-10.1l-164.75-164.75c-2.865-2.722-7.378-2.65-10.099.143-2.651 2.794-2.651 7.163 0 9.957l159.664 159.736z\"\n );\n\n $svg.appendChild($path);\n\n return $svg;\n}\n","import type { ISlideConfig } from \"@netless/slide\";\n\nimport { Slide } from \"@netless/slide\";\nimport { SideEffectManager } from \"side-effect-manager\";\nimport LazyLoad from \"vanilla-lazyload\";\n\nimport { DefaultUrl, namespace } from \"./constants\";\nimport { noop } from \"./utils\";\nimport styles from \"./style.scss?inline\";\n\nimport { sidebarSVG } from \"./icons/sidebar\";\nimport { arrowLeftSVG } from \"./icons/arrow-left\";\nimport { playSVG } from \"./icons/play\";\nimport { pauseSVG } from \"./icons/pause\";\nimport { arrowRightSVG } from \"./icons/arrow-right\";\n\nfunction h<K extends keyof HTMLElementTagNameMap>(tag: K) {\n return document.createElement(tag);\n}\n\nfunction append(parent: HTMLElement, child: HTMLElement) {\n return parent.appendChild(child);\n}\n\nfunction wrap_class(name: string) {\n return `${namespace}-${name}`;\n}\n\nfunction set_class(el: HTMLElement, name: string) {\n el.className = wrap_class(name);\n}\n\nfunction trim_slash(s: string) {\n return s.endsWith(\"/\") ? s.slice(0, -1) : s;\n}\n\ninterface SlideAttributes {\n taskId: string;\n url?: string;\n}\n\ninterface PreviewPage {\n width: number;\n height: number;\n thumbnail: string;\n}\n\nasync function fetch_slide_info({ taskId, url }: SlideAttributes) {\n const prefix = make_prefix(taskId, url);\n const imgSrc = `${prefix}/preview/1.png`;\n const jsonUrl = `${prefix}/jsonOutput/slide-1.json`;\n\n interface PreviewInfo {\n width: number;\n height: number;\n }\n const p1 = new Promise<PreviewInfo | null>(resolve => {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = () => resolve(null);\n image.src = imgSrc;\n });\n\n interface SlideInfo {\n width: number;\n height: number;\n slideCount: number;\n }\n const p2: Promise<SlideInfo> = fetch(jsonUrl).then(r => r.json());\n\n return { preview: await p1, slide: await p2 };\n}\n\nfunction make_prefix(taskId: string, url?: string) {\n return `${trim_slash(url || DefaultUrl)}/${taskId}`;\n}\n\nfunction create_sidebar() {\n type NewPageIndexCallback = (newPageIndex: number) => void;\n let new_page_index_callback: NewPageIndexCallback = noop;\n const on_new_page_index = (callback: NewPageIndexCallback) => {\n new_page_index_callback = callback;\n };\n\n let destroyed = false;\n let readonly = false;\n let active = false;\n let pages: PreviewPage[] = [];\n let page_index = 0;\n\n const class_readonly = wrap_class(\"readonly\");\n const class_preview_active = wrap_class(\"preview-active\");\n\n const $content = h(\"div\");\n set_class($content, \"content\");\n\n const $previewMask = h(\"div\");\n set_class($previewMask, \"preview-mask\");\n $previewMask.onclick = function on_click_preview_mask(ev) {\n if (readonly) return;\n if (ev.target !== $previewMask) return;\n set_active(false);\n };\n append($content, $previewMask);\n\n const $preview = h(\"div\");\n set_class($preview, \"preview\");\n $preview.classList.add(wrap_class(\"tele-fancy-scrollbar\"));\n $preview.onclick = function on_click_preview(ev) {\n if (readonly) return;\n const page_index = (ev.target as HTMLElement).dataset?.pageIndex;\n if (page_index) {\n ev.preventDefault();\n ev.stopPropagation();\n ev.stopImmediatePropagation();\n new_page_index_callback(Number(page_index));\n set_active(false);\n }\n };\n append($content, $preview);\n\n const lazyload = new LazyLoad({\n container: $preview,\n elements_selector: `.${wrap_class(\"preview-page>img\")}`,\n });\n\n function set_readonly(readonly_: boolean) {\n if (readonly !== readonly_) {\n readonly = readonly_;\n $content.classList.toggle(class_readonly, readonly);\n }\n }\n\n function set_active(active_: boolean) {\n if (active !== active_) {\n active = active_;\n $content.classList.toggle(class_preview_active, active);\n }\n }\n\n function set_pages(pages_: PreviewPage[]) {\n if (pages !== pages_) {\n pages = pages_;\n\n const page_class = wrap_class(\"preview-page\");\n const page_name_class = wrap_class(\"preview-page-name\");\n\n pages.forEach((page, i) => {\n const pageIndex = String(i);\n\n const $page = h(\"a\");\n $page.className = page_class + \" \" + wrap_class(`preview-page-${i}`);\n $page.href = \"#\";\n $page.dataset.pageIndex = pageIndex;\n\n const $name = h(\"span\");\n $name.className = page_name_class;\n $name.textContent = String(i + 1);\n $name.dataset.pageIndex = pageIndex;\n\n const $img = h(\"img\");\n $img.width = page.width;\n $img.height = page.height;\n $img.src = page.thumbnail;\n $img.alt = `page-${i}`;\n $img.dataset.pageIndex = pageIndex;\n\n append($page, $img);\n append($page, $name);\n append($preview, $page);\n });\n\n if (!destroyed) {\n lazyload.update();\n }\n }\n }\n\n function set_page_index(page_index_: number, force = false) {\n if (force || page_index !== page_index_) {\n page_index = page_index_;\n const $page = $preview.querySelector<HTMLElement>(\n `.${wrap_class(`preview-page-${page_index}`)}`\n );\n if ($page) {\n $preview.scrollTo({ top: $page.offsetTop - 16 });\n }\n }\n }\n\n function destroy() {\n destroyed = true;\n lazyload.destroy();\n }\n\n function get_active() {\n return active;\n }\n\n return {\n $content,\n $preview,\n set_readonly,\n set_active,\n get_active,\n set_pages,\n on_new_page_index,\n set_page_index,\n destroy,\n };\n}\n\nfunction create_footer() {\n type NewPageIndexCallback = (newPageIndex: number) => void;\n let new_page_index_callback: NewPageIndexCallback = noop;\n const on_new_page_index = (callback: NewPageIndexCallback) => {\n new_page_index_callback = callback;\n };\n\n let toggle_preview_callback: () => void = noop;\n const on_toggle_preview = (callback: () => void) => {\n toggle_preview_callback = callback;\n };\n\n let play_callback: () => void = noop;\n const on_play = (callback: () => void) => {\n play_callback = callback;\n };\n\n let readonly = false;\n let sidebar = false;\n let page_index = 0;\n let page_count = 0;\n\n const $footer = h(\"div\");\n set_class($footer, \"footer\");\n\n const $btnSidebar = h(\"button\");\n set_class($btnSidebar, \"btn-sidebar\");\n $btnSidebar.classList.add(wrap_class(\"footer-btn\"));\n $btnSidebar.appendChild(sidebarSVG(namespace));\n $btnSidebar.onclick = function on_click_btn_sidebar() {\n if (readonly) return;\n toggle_preview_callback();\n };\n $btnSidebar.style.display = \"none\";\n $footer.appendChild($btnSidebar);\n\n const $pageJumps = h(\"div\");\n set_class($pageJumps, \"page-jumps\");\n\n const $btnPageBack = h(\"button\");\n set_class($btnPageBack, \"btn-page-back\");\n $btnPageBack.classList.add(wrap_class(\"footer-btn\"));\n $btnPageBack.appendChild(arrowLeftSVG(namespace));\n $btnPageBack.onclick = function on_click_btn_page_back() {\n if (readonly) return;\n new_page_index_callback(page_index - 1);\n };\n $pageJumps.appendChild($btnPageBack);\n\n const $btnPlay = h(\"button\");\n set_class($btnPlay, \"btn-page-play\");\n $btnPlay.classList.add(wrap_class(\"footer-btn\"));\n $btnPlay.appendChild(playSVG(namespace));\n $btnPlay.appendChild(pauseSVG(namespace));\n let returnPlayTimer = 0;\n $btnPlay.onclick = function on_click_btn_play() {\n if (readonly) return;\n $btnPlay.classList.add(wrap_class(\"footer-btn-playing\"));\n play_callback();\n clearTimeout(returnPlayTimer);\n returnPlayTimer = setTimeout(() => {\n $btnPlay.classList.remove(wrap_class(\"footer-btn-playing\"));\n }, 500);\n };\n $pageJumps.appendChild($btnPlay);\n\n const $btnPageNext = h(\"button\");\n set_class($btnPageNext, \"btn-page-next\");\n $btnPageNext.classList.add(wrap_class(\"footer-btn\"));\n $btnPageNext.appendChild(arrowRightSVG(namespace));\n $btnPageNext.onclick = function on_click_btn_page_next() {\n if (readonly) return;\n new_page_index_callback(page_index + 1);\n };\n $pageJumps.appendChild($btnPageNext);\n\n const $pageNumber = h(\"div\");\n set_class($pageNumber, \"page-number\");\n\n const $pageNumberInput = h(\"input\");\n set_class($pageNumberInput, \"page-number-input\");\n $pageNumberInput.value = String(page_index + 1);\n $pageNumberInput.onchange = function on_change_page_number_input() {\n if (readonly) return;\n if ($pageNumberInput.value) {\n new_page_index_callback(Number($pageNumberInput.value) - 1);\n }\n };\n\n const $totalPage = h(\"span\");\n set_class($totalPage, \"total-page\");\n $totalPage.textContent = \" / \";\n\n $pageNumber.appendChild($pageNumberInput);\n $pageNumber.appendChild($totalPage);\n\n $footer.appendChild($pageJumps);\n $footer.appendChild($pageNumber);\n\n const class_readonly = wrap_class(\"readonly\");\n\n function set_readonly(readonly_: boolean) {\n if (readonly !== readonly_) {\n readonly = readonly_;\n $footer.classList.toggle(class_readonly, readonly);\n $pageNumberInput.disabled = readonly;\n }\n }\n\n function set_sidebar(sidebar_: boolean) {\n if (sidebar !== sidebar_) {\n sidebar = sidebar_;\n $btnSidebar.style.display = sidebar ? \"\" : \"none\";\n }\n }\n\n function set_page_index(page_index_: number, force = false) {\n if (force || page_index !== page_index_) {\n page_index = page_index_;\n $pageNumberInput.value = String(page_index + 1);\n }\n }\n\n function set_page_count(page_count_: number) {\n if (page_count !== page_count_) {\n page_count = page_count_;\n $totalPage.textContent = ` / ${page_count}`;\n }\n }\n\n return {\n $footer,\n $pageNumberInput,\n set_readonly,\n set_sidebar,\n set_page_index,\n set_page_count,\n on_new_page_index,\n on_toggle_preview,\n on_play,\n };\n}\n\nfunction create_slide_wrapper() {\n const $slide = h(\"div\");\n set_class($slide, \"slide\");\n return $slide;\n}\n\nfunction on_visibility_change(callback: (visible: boolean) => void) {\n if (typeof document !== \"undefined\") {\n const listener = () => callback(document.visibilityState === \"visible\");\n document.addEventListener(\"visibilitychange\", listener);\n return () => document.removeEventListener(\"visibilitychange\", listener);\n }\n return noop;\n}\n\nexport type SlideViewerOptions = Omit<ISlideConfig, \"anchor\" | \"mode\" | \"interactive\"> & {\n mode?: ISlideConfig[\"mode\"];\n interactive?: ISlideConfig[\"interactive\"];\n} & SlideAttributes;\n\nexport interface SlideViewerInfoResponse {\n width: number;\n height: number;\n slideCount: number;\n}\n\nexport class SlideViewer {\n static styles = styles;\n\n private readonly sideEffect = new SideEffectManager();\n\n readonly $slide = create_slide_wrapper();\n readonly sidebar = create_sidebar();\n readonly footer = create_footer();\n readonly $content: HTMLElement;\n readonly $footer: HTMLElement;\n\n readonly slide;\n\n private readonly _readyPromise: Promise<void>;\n private readonly _infoPromise: Promise<SlideViewerInfoResponse>;\n private _ready = false;\n private _slideCount = 0;\n private _destroyed = false;\n\n constructor(options: SlideViewerOptions) {\n this.$content = this.sidebar.$content;\n this.$footer = this.footer.$footer;\n append(this.$content, this.$slide);\n\n let resolveReady: () => void;\n this._readyPromise = new Promise(resolve => {\n resolveReady = resolve;\n });\n\n const on_new_page_index = (index: number) => {\n if (this._ready && index >= 0 && index < this._slideCount) {\n this.slide.renderSlide(index + 1);\n } else {\n this.setPage(this.slide.slideState.currentSlideIndex);\n }\n };\n this.sidebar.on_new_page_index(on_new_page_index);\n this.footer.on_new_page_index(on_new_page_index);\n\n this.footer.on_toggle_preview(() => {\n this.sidebar.set_active(!this.sidebar.get_active());\n });\n\n this.footer.on_play(() => {\n this.slide.nextStep();\n });\n\n this.sideEffect.addDisposer(this.sidebar.destroy);\n this.sideEffect.addDisposer(() => this.slide.destroy());\n this.sideEffect.addDisposer(() => {\n this.$content.parentElement && this.$content.remove();\n this.$footer.parentElement && this.$footer.remove();\n this.$slide.parentElement && this.$slide.remove();\n });\n\n let saved_is_frozen = false;\n this.sideEffect.addDisposer(\n on_visibility_change(visible => {\n if (this._destroyed) return;\n if (!visible) {\n saved_is_frozen = this._isFrozen;\n this.freeze();\n } else {\n if (!saved_is_frozen) this.unfreeze();\n }\n })\n );\n\n this.slide = new Slide({\n anchor: this.$slide,\n resize: true,\n mode: \"local\",\n interactive: true,\n enableGlobalClick: true,\n ...options,\n });\n this.slide.setResource(options.taskId, options.url || DefaultUrl);\n\n let resolveFetching: (response: SlideViewerInfoResponse) => void;\n this._infoPromise = new Promise<SlideViewerInfoResponse>(resolve => {\n resolveFetching = resolve;\n });\n\n this.slide.on(\"slideChange\", page => {\n if (this._destroyed) return;\n this.setPage(page);\n });\n\n this.slide.on(\"renderEnd\", () => {\n if (!this._ready)\n setTimeout(() => {\n this._ready = true;\n resolveReady();\n }, 1000);\n });\n\n const fetching = fetch_slide_info(options).then(({ preview, slide }) => {\n if (this._destroyed) return;\n\n this._slideCount = slide.slideCount;\n\n if (preview) {\n const { taskId, url } = options;\n const { slideCount } = slide;\n const { width, height } = preview;\n\n const prefix = make_prefix(taskId, url);\n const pages = Array.from({ length: slideCount }, (_, i) => ({\n width,\n height,\n thumbnail: `${prefix}/preview/${i + 1}.png`,\n }));\n\n this.sidebar.set_pages(pages);\n this.footer.set_sidebar(true);\n }\n\n this.footer.set_page_count(slide.slideCount);\n resolveFetching(slide);\n });\n\n fetching.catch(error => {\n console.log(\"[Slide] fetch slide info error\");\n console.error(error);\n });\n\n this.ready(() => {\n if (this._isFrozen) {\n this.freeze();\n }\n });\n }\n\n prepare(callback: (response: SlideViewerInfoResponse) => void) {\n return this._infoPromise.then(callback);\n }\n\n ready(callback: () => void) {\n return this._readyPromise.then(callback);\n }\n\n destroy() {\n this._destroyed = true;\n this.sideEffect.flushAll();\n }\n\n setReadonly(readonly: boolean) {\n this.slide.setInteractive(!readonly);\n this.sidebar.set_readonly(readonly);\n this.footer.set_readonly(readonly);\n }\n\n setPage(page: number) {\n this.sidebar.set_page_index(page - 1, true);\n this.footer.set_page_index(page - 1, true);\n }\n\n private _isFrozen = false;\n\n freeze() {\n if (this._destroyed) return;\n this._isFrozen = true;\n if (!this._ready) return;\n this.slide.frozen();\n }\n\n unfreeze() {\n if (this._destroyed) return;\n this._isFrozen = false;\n if (!this._ready) return;\n this.slide.release();\n }\n}\n","import type { SlideViewer } from \"./SlideViewer\";\nimport type { AddHooks } from \"./typings\";\n\nexport class Refrigerator {\n threshold = 2;\n\n private _map = new Map<string, SlideViewer>();\n private _queue: string[] = [];\n\n set(appId: string, viewer: SlideViewer) {\n this._map.set(appId, viewer);\n if (!this._queue.includes(appId)) {\n this._queue.unshift(appId);\n }\n this._refresh();\n return () => {\n this.delete(appId);\n };\n }\n\n delete(appId: string) {\n this._map.delete(appId);\n this._queue = this._queue.filter(id => id !== appId);\n this._refresh();\n }\n\n focus(appId: string) {\n const index = this._queue.indexOf(appId);\n if (index >= 0) {\n this._queue.splice(index, 1);\n }\n this._queue.unshift(appId);\n this._refresh();\n }\n\n private _refresh() {\n let viewer: SlideViewer | undefined;\n this._queue.forEach((appId, i) => {\n if (!(viewer = this._map.get(appId))) return;\n if (i < this.threshold) {\n viewer.unfreeze();\n } else {\n viewer.freeze();\n }\n });\n if (import.meta.env.DEV) {\n console.log(\n \"[Slide] refrigerator._refresh\",\n `[${this._queue.slice(0, this.threshold)}]`,\n `[${this._queue.slice(this.threshold)}]`\n );\n }\n }\n}\n\nexport const refrigerator = new Refrigerator();\nif (import.meta.env.DEV) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).refrigerator = refrigerator;\n}\n\nexport const addHooks: AddHooks = function addHooks(emitter) {\n emitter.on(\"focus\", event => {\n refrigerator.focus(event.appId);\n });\n};\n","import type { AppContext, NetlessApp, Player, WhiteBoardView } from \"@netless/window-manager\";\nimport type { AddHooks, AppOptions, Attributes, MagixEvents, SlideState } from \"./typings\";\nimport type { SlideViewerOptions } from \"./SlideViewer\";\n\nexport type { SlideState, AddHooks, AppOptions, Attributes, MagixEvents, SlideViewerOptions };\n\nimport ColorString from \"color-string\";\nimport { SideEffectManager } from \"side-effect-manager\";\nimport { SlideViewer } from \"./SlideViewer\";\nimport { refrigerator, addHooks } from \"./Refrigerator\";\n\nexport { SlideViewer, refrigerator, addHooks };\n\nexport const version = __APP_VERSION__;\n\nconst SlideApp: NetlessApp<Attributes, MagixEvents, AppOptions, void> = {\n kind: \"Slide\",\n setup(context) {\n console.log(\"[Slide] setup @ \" + __APP_VERSION__);\n\n if (!context.storage.state.taskId) {\n throw new Error(\"[Slide] no taskId\");\n }\n\n const options = context.getAppOptions() || {};\n const logger = make_logger(context);\n logger.info(\"[Slide] setup @ \" + __APP_VERSION__);\n\n const sideEffect = new SideEffectManager();\n\n // Create UI\n const viewer = new SlideViewer({\n interactive: true,\n mode: \"interactive\",\n resize: true,\n enableGlobalClick: true,\n timestamp: make_timestamp(context),\n logger,\n renderOptions: {\n minFPS: options.minFPS || 25,\n maxFPS: options.maxFPS || 30,\n autoFPS: options.autoFPS ?? true,\n autoResolution: options.autoResolution ?? true,\n resolution: options.resolution,\n maxResolutionLevel: options.maxResolutionLevel,\n transactionBgColor: options.transactionBgColor || make_bg_color(context.box.$content),\n },\n\n taskId: context.storage.state.taskId,\n url: context.storage.state.url,\n });\n\n // For debugging.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (viewer as any).context = context;\n\n sideEffect.addDisposer(refrigerator.set(context.appId, viewer));\n\n if (import.meta.env.DEV) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).slideViewer = viewer;\n }\n\n // Mount UI\n context.box.mountStyles(SlideViewer.styles);\n context.box.mountStage(viewer.$slide);\n context.box.mountFooter(viewer.$footer);\n context.box.mountContent(viewer.$content);\n sideEffect.addDisposer(() => viewer.destroy());\n\n // Connect UI with Netless App\n connect({ context, viewer, sideEffect, logger });\n\n onUnmount(context, () => {\n logger.info(\"[Slide] destroy\");\n sideEffect.flushAll();\n });\n },\n};\n\nexport default SlideApp;\n\nexport function previewSlide(options: SlideViewerOptions & { container: HTMLElement }) {\n const { container } = options;\n container.style.cssText = \"display:flex;flex-direction:column\";\n const viewer = new SlideViewer(options);\n container.appendChild(document.createElement(\"style\")).textContent = SlideViewer.styles;\n container.appendChild(viewer.$content);\n container.appendChild(viewer.$footer);\n viewer.prepare(() => viewer.slide.renderSlide(1));\n return viewer;\n}\n\nif (import.meta.env.DEV) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).previewSlide = previewSlide;\n}\n\nfunction make_timestamp(context: AppContext): () => number {\n const room = context.room;\n const player = context.displayer as Player;\n if (room) {\n return () => room.calibrationTimestamp;\n } else if (player) {\n return () => player.beginTimestamp + player.progressTime;\n } else {\n return () => Date.now();\n }\n}\n\nfunction make_logger(context: AppContext): { info: (msg: string) => void } {\n if (import.meta.env.DEV) {\n return { info: console.debug.bind(console) };\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (context.displayer as any).logger;\n}\n\nfunction make_bg_color(el: HTMLElement): string {\n try {\n let bg = window.getComputedStyle(el).backgroundColor;\n if (bg !== \"rgba(0, 0, 0, 0)\" && bg !== \"transparent\") {\n bg = hex(bg);\n console.log(\"[Slide] guess bg color:\", bg);\n return bg;\n }\n if (el.parentElement) {\n return make_bg_color(el.parentElement);\n }\n } catch {\n // ignored\n }\n return \"#ffffff\";\n}\n\n// https://github.com/Qix-/color-convert/blob/8dfdbbc6b46fa6a305bf394d942cc1b08e23fca5/conversions.js#L616\nfunction hex(color: string): string {\n const result = ColorString.get(color);\n if (result && result.model === \"rgb\") {\n const args = result.value;\n\n const integer =\n ((Math.round(args[0]) & 0xff) << 16) +\n ((Math.round(args[1]) & 0xff) << 8) +\n (Math.round(args[2]) & 0xff);\n\n const string = integer.toString(16);\n return \"#\" + \"000000\".substring(string.length) + string;\n } else {\n return color;\n }\n}\n\nfunction onUnmount(context: AppContext, callback: () => void) {\n context.emitter.on(\"destroy\", callback);\n}\n\ninterface ConnectParams {\n context: AppContext;\n viewer: SlideViewer;\n sideEffect: SideEffectManager;\n logger: { info: (msg: string) => void };\n}\n\nfunction connect({ context, viewer, sideEffect, logger }: ConnectParams) {\n const log = import.meta.env.DEV ? console.log.bind(console) : logger.info.bind(logger);\n\n let whiteboard: WhiteBoardView | null = null;\n\n viewer.prepare(({ width, height, slideCount }) => {\n if (context.destroyed) return;\n width && context.box.setStageRatio(height / width);\n whiteboard = context.createWhiteBoardView({ size: slideCount });\n whiteboard.setBaseRect({ width, height });\n kick_start();\n });\n\n const { slide } = viewer;\n\n function kick_start() {\n if (context.storage.state.state) {\n log(\"[Slide] restore\", { ...context.storage.state.state });\n slide.setSlideState(context.storage.state.state);\n } else if (context.isAddApp) {\n log(\"[Slide] kick start\");\n slide.renderSlide(1);\n } else {\n log(\"[Slide] wait for restore\");\n const timeoutID = sideEffect.add(() => {\n const timer = setInterval(() => {\n if (!context.storage.state.state) {\n log(\"[Slide] timeout\");\n slide.renderSlide(1);\n }\n }, 15 * 1000);\n return () => clearInterval(timer);\n });\n const disposerID = sideEffect.addDisposer(\n context.storage.addStateChangedListener(() => {\n if (context.storage.state.state) {\n log(\"[Slide] restore\", { ...context.storage.state.state });\n slide.setSlideState(context.storage.state.state);\n sideEffect.flush(disposerID);\n sideEffect.flush(timeoutID);\n }\n })\n );\n }\n }\n\n // setup sync event\n slide.on(\"stateChange\", () => {\n if (context.isWritable) {\n log(\"[Slide] save state\", { ...slide.slideState });\n context.storage.setState({ state: slide.slideState });\n }\n });\n slide.on(\"syncDispatch\", payload => {\n if (context.isWritable) {\n log(\"[Slide] dispatch\", { ...payload });\n context.dispatchMagixEvent(\"syncDispatch\", payload);\n }\n });\n sideEffect.addDisposer(\n context.addMagixEventListener(\n \"syncDispatch\",\n ({ payload }) => {\n log(\"[Slide] receive\", { ...payload });\n slide.emit(\"syncReceive\", payload);\n },\n { fireSelfEventAfterCommit: true }\n )\n );\n\n // save state\n slide.on(\"slideChange\", page => {\n if (context.isWritable && whiteboard) {\n log(\"[Slide] page to\", page);\n whiteboard.jumpPage(page - 1);\n }\n });\n\n // handle ui events\n viewer.setReadonly(!context.isWritable);\n sideEffect.addDisposer(\n context.emitter.on(\"writableChange\", w => {\n viewer.setReadonly(!w);\n })\n );\n}\n"],"names":["isArrayish","require$$0","swizzle","simpleSwizzleModule","require$$1","colorStringModule","SideEffectManager","ColorString"],"mappings":"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"}
|
package/dist/typings.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Slide, SLIDE_EVENTS, SyncEvent } from "@netless/slide";
|
|
1
|
+
import type { ISlideRenderOptions, Slide, SLIDE_EVENTS, SyncEvent } from "@netless/slide";
|
|
2
2
|
import type { RegisterParams } from "@netless/window-manager";
|
|
3
3
|
export declare type SlideState = Slide["slideState"];
|
|
4
4
|
export declare type AddHooks = NonNullable<RegisterParams["addHooks"]>;
|
|
@@ -13,19 +13,6 @@ export interface Attributes {
|
|
|
13
13
|
export interface MagixEvents {
|
|
14
14
|
[SLIDE_EVENTS.syncDispatch]: SyncEvent;
|
|
15
15
|
}
|
|
16
|
-
export interface AppOptions {
|
|
17
|
-
/** show debug controller */
|
|
16
|
+
export interface AppOptions extends ISlideRenderOptions {
|
|
18
17
|
debug?: boolean;
|
|
19
|
-
/** scale */
|
|
20
|
-
resolution?: number;
|
|
21
|
-
/** background color for slide animations */
|
|
22
|
-
bgColor?: string;
|
|
23
|
-
/** minimal fps (default: 25) */
|
|
24
|
-
minFPS?: number;
|
|
25
|
-
/** maximal fps (default: 30) */
|
|
26
|
-
maxFPS?: number;
|
|
27
|
-
/** automatically decrease fps (default: true) */
|
|
28
|
-
autoFPS?: boolean;
|
|
29
|
-
/** whether to re-scale automatically (default: true) */
|
|
30
|
-
autoResolution?: boolean;
|
|
31
18
|
}
|
package/package.json
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@netless/app-slide",
|
|
3
|
-
"version": "0.3.0-canary.
|
|
4
|
-
"main": "dist/main.
|
|
5
|
-
"module": "dist/main.
|
|
3
|
+
"version": "0.3.0-canary.6",
|
|
4
|
+
"main": "dist/main.js",
|
|
5
|
+
"module": "dist/main.mjs",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"files": [
|
|
8
8
|
"src",
|
|
9
9
|
"dist",
|
|
10
10
|
"README-zh.md"
|
|
11
11
|
],
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@netless/slide": "^0.5.10"
|
|
14
|
+
},
|
|
12
15
|
"devDependencies": {
|
|
13
|
-
"@netless/slide": "^0.4.7",
|
|
14
16
|
"@types/color-string": "^1.5.2",
|
|
15
17
|
"color-string": "^1.9.1",
|
|
16
|
-
"side-effect-manager": "^1.1.
|
|
17
|
-
"value-enhancer": "^1.3.
|
|
18
|
-
"vanilla-lazyload": "^17.8.
|
|
18
|
+
"side-effect-manager": "^1.1.1",
|
|
19
|
+
"value-enhancer": "^1.3.2",
|
|
20
|
+
"vanilla-lazyload": "^17.8.3"
|
|
19
21
|
},
|
|
20
22
|
"scripts": {
|
|
21
23
|
"types": "cross-env NODE_ENV=production tsc --declaration --emitDeclarationOnly --outDir dist",
|
package/src/SlideViewer.ts
CHANGED
|
@@ -176,8 +176,8 @@ function create_sidebar() {
|
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
178
|
|
|
179
|
-
function set_page_index(page_index_: number) {
|
|
180
|
-
if (page_index !== page_index_) {
|
|
179
|
+
function set_page_index(page_index_: number, force = false) {
|
|
180
|
+
if (force || page_index !== page_index_) {
|
|
181
181
|
page_index = page_index_;
|
|
182
182
|
const $page = $preview.querySelector<HTMLElement>(
|
|
183
183
|
`.${wrap_class(`preview-page-${page_index}`)}`
|
|
@@ -292,9 +292,6 @@ function create_footer() {
|
|
|
292
292
|
const $pageNumberInput = h("input");
|
|
293
293
|
set_class($pageNumberInput, "page-number-input");
|
|
294
294
|
$pageNumberInput.value = String(page_index + 1);
|
|
295
|
-
$pageNumberInput.onfocus = function on_focus_page_number_input() {
|
|
296
|
-
$pageNumberInput.select();
|
|
297
|
-
};
|
|
298
295
|
$pageNumberInput.onchange = function on_change_page_number_input() {
|
|
299
296
|
if (readonly) return;
|
|
300
297
|
if ($pageNumberInput.value) {
|
|
@@ -329,8 +326,8 @@ function create_footer() {
|
|
|
329
326
|
}
|
|
330
327
|
}
|
|
331
328
|
|
|
332
|
-
function set_page_index(page_index_: number) {
|
|
333
|
-
if (page_index !== page_index_) {
|
|
329
|
+
function set_page_index(page_index_: number, force = false) {
|
|
330
|
+
if (force || page_index !== page_index_) {
|
|
334
331
|
page_index = page_index_;
|
|
335
332
|
$pageNumberInput.value = String(page_index + 1);
|
|
336
333
|
}
|
|
@@ -414,6 +411,8 @@ export class SlideViewer {
|
|
|
414
411
|
const on_new_page_index = (index: number) => {
|
|
415
412
|
if (this._ready && index >= 0 && index < this._slideCount) {
|
|
416
413
|
this.slide.renderSlide(index + 1);
|
|
414
|
+
} else {
|
|
415
|
+
this.setPage(this.slide.slideState.currentSlideIndex);
|
|
417
416
|
}
|
|
418
417
|
};
|
|
419
418
|
this.sidebar.on_new_page_index(on_new_page_index);
|
|
@@ -533,30 +532,23 @@ export class SlideViewer {
|
|
|
533
532
|
}
|
|
534
533
|
|
|
535
534
|
setPage(page: number) {
|
|
536
|
-
this.sidebar.set_page_index(page - 1);
|
|
537
|
-
this.footer.set_page_index(page - 1);
|
|
535
|
+
this.sidebar.set_page_index(page - 1, true);
|
|
536
|
+
this.footer.set_page_index(page - 1, true);
|
|
538
537
|
}
|
|
539
538
|
|
|
540
539
|
private _isFrozen = false;
|
|
541
|
-
private _freezePromise: Promise<void> | null = null;
|
|
542
540
|
|
|
543
541
|
freeze() {
|
|
544
542
|
if (this._destroyed) return;
|
|
545
543
|
this._isFrozen = true;
|
|
546
|
-
if (!this._ready
|
|
547
|
-
this.
|
|
548
|
-
this._freezePromise = null;
|
|
549
|
-
if (!this._isFrozen) this.unfreeze();
|
|
550
|
-
});
|
|
544
|
+
if (!this._ready) return;
|
|
545
|
+
this.slide.frozen();
|
|
551
546
|
}
|
|
552
547
|
|
|
553
548
|
unfreeze() {
|
|
554
549
|
if (this._destroyed) return;
|
|
555
550
|
this._isFrozen = false;
|
|
556
|
-
if (!this._ready
|
|
557
|
-
this.
|
|
558
|
-
this._freezePromise = null;
|
|
559
|
-
if (this._isFrozen) this.freeze();
|
|
560
|
-
});
|
|
551
|
+
if (!this._ready) return;
|
|
552
|
+
this.slide.release();
|
|
561
553
|
}
|
|
562
554
|
}
|
package/src/index.ts
CHANGED
|
@@ -42,7 +42,8 @@ const SlideApp: NetlessApp<Attributes, MagixEvents, AppOptions, void> = {
|
|
|
42
42
|
autoFPS: options.autoFPS ?? true,
|
|
43
43
|
autoResolution: options.autoResolution ?? true,
|
|
44
44
|
resolution: options.resolution,
|
|
45
|
-
|
|
45
|
+
maxResolutionLevel: options.maxResolutionLevel,
|
|
46
|
+
transactionBgColor: options.transactionBgColor || make_bg_color(context.box.$content),
|
|
46
47
|
},
|
|
47
48
|
|
|
48
49
|
taskId: context.storage.state.taskId,
|
|
@@ -170,6 +171,7 @@ function connect({ context, viewer, sideEffect, logger }: ConnectParams) {
|
|
|
170
171
|
if (context.destroyed) return;
|
|
171
172
|
width && context.box.setStageRatio(height / width);
|
|
172
173
|
whiteboard = context.createWhiteBoardView({ size: slideCount });
|
|
174
|
+
whiteboard.setBaseRect({ width, height });
|
|
173
175
|
kick_start();
|
|
174
176
|
});
|
|
175
177
|
|
package/src/style.scss
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
@import "./fancy-scrollbar.scss";
|
|
2
2
|
|
|
3
|
+
@mixin no-user-select {
|
|
4
|
+
-webkit-touch-callout: none;
|
|
5
|
+
-webkit-user-select: none;
|
|
6
|
+
-moz-user-select: none;
|
|
7
|
+
-ms-user-select: none;
|
|
8
|
+
user-select: none;
|
|
9
|
+
}
|
|
10
|
+
|
|
3
11
|
$namespace: "netless-app-slide";
|
|
4
12
|
|
|
5
13
|
.#{$namespace}-content {
|
|
@@ -11,6 +19,7 @@ $namespace: "netless-app-slide";
|
|
|
11
19
|
.#{$namespace}-slide {
|
|
12
20
|
width: 100%;
|
|
13
21
|
height: 100%;
|
|
22
|
+
@include no-user-select;
|
|
14
23
|
}
|
|
15
24
|
|
|
16
25
|
.#{$namespace}-preview-mask {
|
|
@@ -39,6 +48,7 @@ $namespace: "netless-app-slide";
|
|
|
39
48
|
background: rgba(237, 237, 240, 0.9);
|
|
40
49
|
box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.11);
|
|
41
50
|
transition: transform 0.4s;
|
|
51
|
+
@include no-user-select;
|
|
42
52
|
}
|
|
43
53
|
|
|
44
54
|
.#{$namespace}-preview-active {
|
|
@@ -62,7 +72,7 @@ $namespace: "netless-app-slide";
|
|
|
62
72
|
border: 7px solid transparent;
|
|
63
73
|
border-radius: 4px;
|
|
64
74
|
transition: border-color 0.3s;
|
|
65
|
-
user-select
|
|
75
|
+
@include no-user-select;
|
|
66
76
|
|
|
67
77
|
&:hover,
|
|
68
78
|
&.#{$namespace}-preview-page-active {
|
|
@@ -87,8 +97,8 @@ $namespace: "netless-app-slide";
|
|
|
87
97
|
transform: translate(-100%);
|
|
88
98
|
text-align: right;
|
|
89
99
|
font-size: 12px;
|
|
90
|
-
|
|
91
|
-
user-select
|
|
100
|
+
color: #5f5f5f;
|
|
101
|
+
@include no-user-select;
|
|
92
102
|
}
|
|
93
103
|
|
|
94
104
|
.#{$namespace}-footer {
|
|
@@ -127,7 +137,7 @@ $namespace: "netless-app-slide";
|
|
|
127
137
|
background: transparent;
|
|
128
138
|
transition: background 0.4s;
|
|
129
139
|
cursor: pointer;
|
|
130
|
-
user-select
|
|
140
|
+
@include no-user-select;
|
|
131
141
|
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
|
132
142
|
|
|
133
143
|
&:hover {
|
|
@@ -177,7 +187,7 @@ $namespace: "netless-app-slide";
|
|
|
177
187
|
height: 26px;
|
|
178
188
|
margin-left: auto;
|
|
179
189
|
font-size: 13px;
|
|
180
|
-
user-select
|
|
190
|
+
@include no-user-select;
|
|
181
191
|
white-space: nowrap;
|
|
182
192
|
word-break: keep-all;
|
|
183
193
|
font-variant-numeric: tabular-nums;
|
|
@@ -200,13 +210,13 @@ $namespace: "netless-app-slide";
|
|
|
200
210
|
sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
|
201
211
|
background: transparent;
|
|
202
212
|
transition: background 0.4s;
|
|
203
|
-
user-select: text;
|
|
204
213
|
font-variant-numeric: tabular-nums;
|
|
205
214
|
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
|
206
215
|
|
|
207
216
|
&:hover,
|
|
208
217
|
&:focus,
|
|
209
218
|
&:active {
|
|
219
|
+
user-select: text;
|
|
210
220
|
background: #fff;
|
|
211
221
|
box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;
|
|
212
222
|
}
|
package/src/typings.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Slide, SLIDE_EVENTS, SyncEvent } from "@netless/slide";
|
|
1
|
+
import type { ISlideRenderOptions, Slide, SLIDE_EVENTS, SyncEvent } from "@netless/slide";
|
|
2
2
|
import type { RegisterParams } from "@netless/window-manager";
|
|
3
3
|
|
|
4
4
|
export type SlideState = Slide["slideState"];
|
|
@@ -18,19 +18,6 @@ export interface MagixEvents {
|
|
|
18
18
|
[SLIDE_EVENTS.syncDispatch]: SyncEvent;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
export interface AppOptions {
|
|
22
|
-
/** show debug controller */
|
|
21
|
+
export interface AppOptions extends ISlideRenderOptions {
|
|
23
22
|
debug?: boolean;
|
|
24
|
-
/** scale */
|
|
25
|
-
resolution?: number;
|
|
26
|
-
/** background color for slide animations */
|
|
27
|
-
bgColor?: string;
|
|
28
|
-
/** minimal fps (default: 25) */
|
|
29
|
-
minFPS?: number;
|
|
30
|
-
/** maximal fps (default: 30) */
|
|
31
|
-
maxFPS?: number;
|
|
32
|
-
/** automatically decrease fps (default: true) */
|
|
33
|
-
autoFPS?: boolean;
|
|
34
|
-
/** whether to re-scale automatically (default: true) */
|
|
35
|
-
autoResolution?: boolean;
|
|
36
23
|
}
|