UNPKG

vue-files-preview-inno

Version:

A tool for previewing files such as doc, excel, pdf, image, markdown, txt, audio, and video and so on.

1 lines 14.4 kB
{"version":3,"file":"snap.mjs","sources":["../../../../../../../node_modules/epubjs/src/managers/helpers/snap.js"],"sourcesContent":["import {extend, defer, requestAnimationFrame, prefixed} from \"../../utils/core\";\nimport { EVENTS, DOM_EVENTS } from \"../../utils/constants\";\nimport EventEmitter from \"event-emitter\";\n\n// easing equations from https://github.com/danro/easing-js/blob/master/easing.js\nconst PI_D2 = (Math.PI / 2);\nconst EASING_EQUATIONS = {\n\t\teaseOutSine: function (pos) {\n\t\t\t\treturn Math.sin(pos * PI_D2);\n\t\t},\n\t\teaseInOutSine: function (pos) {\n\t\t\t\treturn (-0.5 * (Math.cos(Math.PI * pos) - 1));\n\t\t},\n\t\teaseInOutQuint: function (pos) {\n\t\t\t\tif ((pos /= 0.5) < 1) {\n\t\t\t\t\t\treturn 0.5 * Math.pow(pos, 5);\n\t\t\t\t}\n\t\t\t\treturn 0.5 * (Math.pow((pos - 2), 5) + 2);\n\t\t},\n\t\teaseInCubic: function(pos) {\n\t\t\treturn Math.pow(pos, 3);\n \t}\n};\n\nclass Snap {\n\tconstructor(manager, options) {\n\n\t\tthis.settings = extend({\n\t\t\tduration: 80,\n\t\t\tminVelocity: 0.2,\n\t\t\tminDistance: 10,\n\t\t\teasing: EASING_EQUATIONS['easeInCubic']\n\t\t}, options || {});\n\n\t\tthis.supportsTouch = this.supportsTouch();\n\n\t\tif (this.supportsTouch) {\n\t\t\tthis.setup(manager);\n\t\t}\n\t}\n\n\tsetup(manager) {\n\t\tthis.manager = manager;\n\n\t\tthis.layout = this.manager.layout;\n\n\t\tthis.fullsize = this.manager.settings.fullsize;\n\t\tif (this.fullsize) {\n\t\t\tthis.element = this.manager.stage.element;\n\t\t\tthis.scroller = window;\n\t\t\tthis.disableScroll();\n\t\t} else {\n\t\t\tthis.element = this.manager.stage.container;\n\t\t\tthis.scroller = this.element;\n\t\t\tthis.element.style[\"WebkitOverflowScrolling\"] = \"touch\";\n\t\t}\n\n\t\t// this.overflow = this.manager.overflow;\n\n\t\t// set lookahead offset to page width\n\t\tthis.manager.settings.offset = this.layout.width;\n\t\tthis.manager.settings.afterScrolledTimeout = this.settings.duration * 2;\n\n\t\tthis.isVertical = this.manager.settings.axis === \"vertical\";\n\n\t\t// disable snapping if not paginated or axis in not horizontal\n\t\tif (!this.manager.isPaginated || this.isVertical) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.touchCanceler = false;\n\t\tthis.resizeCanceler = false;\n\t\tthis.snapping = false;\n\n\n\t\tthis.scrollLeft;\n\t\tthis.scrollTop;\n\n\t\tthis.startTouchX = undefined;\n\t\tthis.startTouchY = undefined;\n\t\tthis.startTime = undefined;\n\t\tthis.endTouchX = undefined;\n\t\tthis.endTouchY = undefined;\n\t\tthis.endTime = undefined;\n\n\t\tthis.addListeners();\n\t}\n\n\tsupportsTouch() {\n\t\tif (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tdisableScroll() {\n\t\tthis.element.style.overflow = \"hidden\";\n\t}\n\n\tenableScroll() {\n\t\tthis.element.style.overflow = \"\";\n\t}\n\n\taddListeners() {\n\t\tthis._onResize = this.onResize.bind(this);\n\t\twindow.addEventListener('resize', this._onResize);\n\n\t\tthis._onScroll = this.onScroll.bind(this);\n\t\tthis.scroller.addEventListener('scroll', this._onScroll);\n\n\t\tthis._onTouchStart = this.onTouchStart.bind(this);\n\t\tthis.scroller.addEventListener('touchstart', this._onTouchStart, { passive: true });\n\t\tthis.on('touchstart', this._onTouchStart);\n\n\t\tthis._onTouchMove = this.onTouchMove.bind(this);\n\t\tthis.scroller.addEventListener('touchmove', this._onTouchMove, { passive: true });\n\t\tthis.on('touchmove', this._onTouchMove);\n\n\t\tthis._onTouchEnd = this.onTouchEnd.bind(this);\n\t\tthis.scroller.addEventListener('touchend', this._onTouchEnd, { passive: true });\n\t\tthis.on('touchend', this._onTouchEnd);\n\n\t\tthis._afterDisplayed = this.afterDisplayed.bind(this);\n\t\tthis.manager.on(EVENTS.MANAGERS.ADDED, this._afterDisplayed);\n\t}\n\n\tremoveListeners() {\n\t\twindow.removeEventListener('resize', this._onResize);\n\t\tthis._onResize = undefined;\n\n\t\tthis.scroller.removeEventListener('scroll', this._onScroll);\n\t\tthis._onScroll = undefined;\n\n\t\tthis.scroller.removeEventListener('touchstart', this._onTouchStart, { passive: true });\n\t\tthis.off('touchstart', this._onTouchStart);\n\t\tthis._onTouchStart = undefined;\n\n\t\tthis.scroller.removeEventListener('touchmove', this._onTouchMove, { passive: true });\n\t\tthis.off('touchmove', this._onTouchMove);\n\t\tthis._onTouchMove = undefined;\n\n\t\tthis.scroller.removeEventListener('touchend', this._onTouchEnd, { passive: true });\n\t\tthis.off('touchend', this._onTouchEnd);\n\t\tthis._onTouchEnd = undefined;\n\n\t\tthis.manager.off(EVENTS.MANAGERS.ADDED, this._afterDisplayed);\n\t\tthis._afterDisplayed = undefined;\n\t}\n\n\tafterDisplayed(view) {\n\t\tlet contents = view.contents;\n\t\t[\"touchstart\", \"touchmove\", \"touchend\"].forEach((e) => {\n\t\t\tcontents.on(e, (ev) => this.triggerViewEvent(ev, contents));\n\t\t});\n\t}\n\n\ttriggerViewEvent(e, contents){\n\t\tthis.emit(e.type, e, contents);\n\t}\n\n\tonScroll(e) {\n\t\tthis.scrollLeft = this.fullsize ? window.scrollX : this.scroller.scrollLeft;\n\t\tthis.scrollTop = this.fullsize ? window.scrollY : this.scroller.scrollTop;\n\t}\n\n\tonResize(e) {\n\t\tthis.resizeCanceler = true;\n\t}\n\n\tonTouchStart(e) {\n\t\tlet { screenX, screenY } = e.touches[0];\n\n\t\tif (this.fullsize) {\n\t\t\tthis.enableScroll();\n\t\t}\n\n\t\tthis.touchCanceler = true;\n\n\t\tif (!this.startTouchX) {\n\t\t\tthis.startTouchX = screenX;\n\t\t\tthis.startTouchY = screenY;\n\t\t\tthis.startTime = this.now();\n\t\t}\n\n\t\tthis.endTouchX = screenX;\n\t\tthis.endTouchY = screenY;\n\t\tthis.endTime = this.now();\n\t}\n\n\tonTouchMove(e) {\n\t\tlet { screenX, screenY } = e.touches[0];\n\t\tlet deltaY = Math.abs(screenY - this.endTouchY);\n\n\t\tthis.touchCanceler = true;\n\n\n\t\tif (!this.fullsize && deltaY < 10) {\n\t\t\tthis.element.scrollLeft -= screenX - this.endTouchX;\n\t\t}\n\n\t\tthis.endTouchX = screenX;\n\t\tthis.endTouchY = screenY;\n\t\tthis.endTime = this.now();\n\t}\n\n\tonTouchEnd(e) {\n\t\tif (this.fullsize) {\n\t\t\tthis.disableScroll();\n\t\t}\n\n\t\tthis.touchCanceler = false;\n\n\t\tlet swipped = this.wasSwiped();\n\n\t\tif (swipped !== 0) {\n\t\t\tthis.snap(swipped);\n\t\t} else {\n\t\t\tthis.snap();\n\t\t}\n\n\t\tthis.startTouchX = undefined;\n\t\tthis.startTouchY = undefined;\n\t\tthis.startTime = undefined;\n\t\tthis.endTouchX = undefined;\n\t\tthis.endTouchY = undefined;\n\t\tthis.endTime = undefined;\n\t}\n\n\twasSwiped() {\n\t\tlet snapWidth = this.layout.pageWidth * this.layout.divisor;\n\t\tlet distance = (this.endTouchX - this.startTouchX);\n\t\tlet absolute = Math.abs(distance);\n\t\tlet time = this.endTime - this.startTime;\n\t\tlet velocity = (distance / time);\n\t\tlet minVelocity = this.settings.minVelocity;\n\n\t\tif (absolute <= this.settings.minDistance || absolute >= snapWidth) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif (velocity > minVelocity) {\n\t\t\t// previous\n\t\t\treturn -1;\n\t\t} else if (velocity < -minVelocity) {\n\t\t\t// next\n\t\t\treturn 1;\n\t\t}\n\t}\n\n\tneedsSnap() {\n\t\tlet left = this.scrollLeft;\n\t\tlet snapWidth = this.layout.pageWidth * this.layout.divisor;\n\t\treturn (left % snapWidth) !== 0;\n\t}\n\n\tsnap(howMany=0) {\n\t\tlet left = this.scrollLeft;\n\t\tlet snapWidth = this.layout.pageWidth * this.layout.divisor;\n\t\tlet snapTo = Math.round(left / snapWidth) * snapWidth;\n\n\t\tif (howMany) {\n\t\t\tsnapTo += (howMany * snapWidth);\n\t\t}\n\n\t\treturn this.smoothScrollTo(snapTo);\n\t}\n\n\tsmoothScrollTo(destination) {\n\t\tconst deferred = new defer();\n\t\tconst start = this.scrollLeft;\n\t\tconst startTime = this.now();\n\n\t\tconst duration = this.settings.duration;\n\t\tconst easing = this.settings.easing;\n\n\t\tthis.snapping = true;\n\n\t\t// add animation loop\n\t\tfunction tick() {\n\t\t\tconst now = this.now();\n\t\t\tconst time = Math.min(1, ((now - startTime) / duration));\n\t\t\tconst timeFunction = easing(time);\n\n\n\t\t\tif (this.touchCanceler || this.resizeCanceler) {\n\t\t\t\tthis.resizeCanceler = false;\n\t\t\t\tthis.snapping = false;\n\t\t\t\tdeferred.resolve();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (time < 1) {\n\t\t\t\t\twindow.requestAnimationFrame(tick.bind(this));\n\t\t\t\t\tthis.scrollTo(start + ((destination - start) * time), 0);\n\t\t\t} else {\n\t\t\t\t\tthis.scrollTo(destination, 0);\n\t\t\t\t\tthis.snapping = false;\n\t\t\t\t\tdeferred.resolve();\n\t\t\t}\n\t\t}\n\n\t\ttick.call(this);\n\n\t\treturn deferred.promise;\n\t}\n\n\tscrollTo(left=0, top=0) {\n\t\tif (this.fullsize) {\n\t\t\twindow.scroll(left, top);\n\t\t} else {\n\t\t\tthis.scroller.scrollLeft = left;\n\t\t\tthis.scroller.scrollTop = top;\n\t\t}\n\t}\n\n\tnow() {\n\t\treturn ('now' in window.performance) ? performance.now() : new Date().getTime();\n\t}\n\n\tdestroy() {\n\t\tif (!this.scroller) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.fullsize) {\n\t\t\tthis.enableScroll();\n\t\t}\n\n\t\tthis.removeListeners();\n\n\t\tthis.scroller = undefined;\n\t}\n}\n\nEventEmitter(Snap.prototype);\n\nexport default Snap;\n"],"names":["EASING_EQUATIONS","pos","Snap","manager","options","extend","EVENTS","view","contents","e","ev","screenX","screenY","deltaY","swipped","snapWidth","distance","absolute","time","velocity","minVelocity","left","howMany","snapTo","destination","deferred","defer","start","startTime","duration","easing","tick","now","top","EventEmitter"],"mappings":"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","x_google_ignoreList":[0]}