{ "version": 3, "file": "index.umd.min.js", "sources": [ "../src/lib/shared.js", "../src/lib/api.js", "../src/lib/events.js", "../src/lib/defaults.js", "../src/lib/markup.js", "../src/lib/styles.js", "../src/lib/setup.js", "../src/lib/index.js" ], "sourcesContent": [ "const _shared = {\n pullStartY: null,\n pullMoveY: null,\n handlers: [],\n styleEl: null,\n events: null,\n dist: 0,\n state: 'pending',\n timeout: null,\n distResisted: 0,\n supportsPassive: false,\n supportsPointerEvents: !!window.PointerEvent,\n};\n\ntry {\n window.addEventListener('test', null, {\n get passive() { // eslint-disable-line getter-return\n _shared.supportsPassive = true;\n },\n });\n} catch (e) {\n // do nothing\n}\n\nexport default _shared;\n", "import _shared from './shared';\n\nfunction setupDOM(handler) {\n if (!handler.ptrElement) {\n const ptr = document.createElement('div');\n\n if (handler.mainElement !== document.body) {\n handler.mainElement.parentNode.insertBefore(ptr, handler.mainElement);\n } else {\n document.body.insertBefore(ptr, document.body.firstChild);\n }\n\n ptr.classList.add(`${handler.classPrefix}ptr`);\n ptr.innerHTML = handler.getMarkup()\n .replace(/__PREFIX__/g, handler.classPrefix);\n\n handler.ptrElement = ptr;\n\n if (typeof handler.onInit === 'function') {\n handler.onInit(handler);\n }\n\n // Add the css styles to the style node, and then\n // insert it into the dom\n if (!_shared.styleEl) {\n _shared.styleEl = document.createElement('style');\n _shared.styleEl.setAttribute('id', 'pull-to-refresh-js-style');\n\n document.head.appendChild(_shared.styleEl);\n }\n\n _shared.styleEl.textContent = handler.getStyles()\n .replace(/__PREFIX__/g, handler.classPrefix)\n .replace(/\\s+/g, ' ');\n }\n\n return handler;\n}\n\nfunction onReset(handler) {\n handler.ptrElement.classList.remove(`${handler.classPrefix}refresh`);\n handler.ptrElement.style[handler.cssProp] = '0px';\n\n setTimeout(() => {\n // remove previous ptr-element from DOM\n if (handler.ptrElement && handler.ptrElement.parentNode) {\n handler.ptrElement.parentNode.removeChild(handler.ptrElement);\n handler.ptrElement = null;\n }\n\n // reset state\n _shared.state = 'pending';\n }, handler.refreshTimeout);\n}\n\nfunction update(handler) {\n const iconEl = handler.ptrElement.querySelector(`.${handler.classPrefix}icon`);\n const textEl = handler.ptrElement.querySelector(`.${handler.classPrefix}text`);\n\n if (iconEl) {\n if (_shared.state === 'refreshing') {\n iconEl.innerHTML = handler.iconRefreshing;\n } else {\n iconEl.innerHTML = handler.iconArrow;\n }\n }\n\n if (textEl) {\n if (_shared.state === 'releasing') {\n textEl.innerHTML = handler.instructionsReleaseToRefresh;\n }\n\n if (_shared.state === 'pulling' || _shared.state === 'pending') {\n textEl.innerHTML = handler.instructionsPullToRefresh;\n }\n\n if (_shared.state === 'refreshing') {\n textEl.innerHTML = handler.instructionsRefreshing;\n }\n }\n}\n\nexport default {\n setupDOM,\n onReset,\n update,\n};\n", "import _ptr from './api';\nimport _shared from './shared';\n\nconst screenY = function screenY(event) {\n if (_shared.pointerEventsEnabled && _shared.supportsPointerEvents) {\n return event.screenY;\n }\n return event.touches[0].screenY;\n};\n\nexport default () => {\n _el;\n\n function _onTouchStart(e) {\n // here, we must pick a handler first, and then append their html/css on the DOM\n const target = _shared.handlers.filter(h => h.contains(e.target))[0];\n\n _shared.enable = !!target;\n\n if (target && _shared.state === 'pending') {\n _el = _ptr.setupDOM(target);\n\n if (target.shouldPullToRefresh()) {\n _shared.pullStartY = screenY(e);\n }\n\n clearTimeout(_shared.timeout);\n\n _ptr.update(target);\n }\n }\n\n function _onTouchMove(e) {\n if (!(_el && _el.ptrElement && _shared.enable)) {\n return;\n }\n\n if (!_shared.pullStartY) {\n if (_el.shouldPullToRefresh()) {\n _shared.pullStartY = screenY(e);\n }\n } else {\n _shared.pullMoveY = screenY(e);\n }\n\n if (_shared.state === 'refreshing') {\n if (_el.shouldPullToRefresh() && _shared.pullStartY < _shared.pullMoveY) {\n e.preventDefault();\n }\n\n return;\n }\n\n if (_shared.state === 'pending') {\n _el.ptrElement.classList.add(`${_el.classPrefix}pull`);\n _shared.state = 'pulling';\n _ptr.update(_el);\n }\n\n if (_shared.pullStartY && _shared.pullMoveY) {\n _shared.dist = _shared.pullMoveY - _shared.pullStartY;\n }\n\n _shared.distExtra = _shared.dist - _el.distIgnore;\n\n if (_shared.distExtra > 0) {\n e.preventDefault();\n\n _el.ptrElement.style[_el.cssProp] = `${_shared.distResisted}px`;\n\n _shared.distResisted = _el.resistanceFunction(_shared.distExtra / _el.distThreshold)\n * Math.min(_el.distMax, _shared.distExtra);\n\n if (_shared.state === 'pulling' && _shared.distResisted > _el.distThreshold) {\n _el.ptrElement.classList.add(`${_el.classPrefix}release`);\n _shared.state = 'releasing';\n _ptr.update(_el);\n }\n\n if (_shared.state === 'releasing' && _shared.distResisted < _el.distThreshold) {\n _el.ptrElement.classList.remove(`${_el.classPrefix}release`);\n _shared.state = 'pulling';\n _ptr.update(_el);\n }\n }\n }\n\n function _onTouchEnd() {\n if (!(_el && _el.ptrElement && _shared.enable)) {\n return;\n }\n\n if (_shared.state === 'releasing' && _shared.distResisted > _el.distThreshold) {\n _shared.state = 'refreshing';\n\n _el.ptrElement.style[_el.cssProp] = `${_el.distReload}px`;\n _el.ptrElement.classList.add(`${_el.classPrefix}refresh`);\n\n _shared.timeout = setTimeout(() => {\n const retval = _el.onRefresh(() => _ptr.onReset(_el));\n\n if (retval && typeof retval.then === 'function') {\n retval.then(() => _ptr.onReset(_el));\n }\n\n if (!retval && !_el.onRefresh.length) {\n _ptr.onReset(_el);\n }\n }, _el.refreshTimeout);\n } else {\n if (_shared.state === 'refreshing') {\n return;\n }\n\n _el.ptrElement.style[_el.cssProp] = '0px';\n\n _shared.state = 'pending';\n }\n\n _ptr.update(_el);\n\n _el.ptrElement.classList.remove(`${_el.classPrefix}release`);\n _el.ptrElement.classList.remove(`${_el.classPrefix}pull`);\n\n _shared.pullStartY = _shared.pullMoveY = null;\n _shared.dist = _shared.distResisted = 0;\n }\n\n function _onScroll() {\n if (_el) {\n _el.mainElement.classList.toggle(`${_el.classPrefix}top`, _el.shouldPullToRefresh());\n }\n }\n\n const _passiveSettings = _shared.supportsPassive\n ? { passive: _shared.passive || false }\n : undefined;\n\n if (_shared.pointerEventsEnabled && _shared.supportsPointerEvents) {\n window.addEventListener('pointerup', _onTouchEnd);\n window.addEventListener('pointerdown', _onTouchStart);\n window.addEventListener('pointermove', _onTouchMove, _passiveSettings);\n } else {\n window.addEventListener('touchend', _onTouchEnd);\n window.addEventListener('touchstart', _onTouchStart);\n window.addEventListener('touchmove', _onTouchMove, _passiveSettings);\n }\n\n window.addEventListener('scroll', _onScroll);\n\n return {\n onTouchEnd: _onTouchEnd,\n onTouchStart: _onTouchStart,\n onTouchMove: _onTouchMove,\n onScroll: _onScroll,\n\n destroy() {\n if (_shared.pointerEventsEnabled && _shared.supportsPointerEvents) {\n window.removeEventListener('pointerdown', _onTouchStart);\n window.removeEventListener('pointerup', _onTouchEnd);\n window.removeEventListener('pointermove', _onTouchMove, _passiveSettings);\n } else {\n window.removeEventListener('touchstart', _onTouchStart);\n window.removeEventListener('touchend', _onTouchEnd);\n window.removeEventListener('touchmove', _onTouchMove, _passiveSettings);\n }\n\n window.removeEventListener('scroll', _onScroll);\n },\n };\n};\n", "import _ptrMarkup from './markup';\nimport _ptrStyles from './styles';\n\nexport default {\n distThreshold: 60,\n distMax: 80,\n distReload: 50,\n distIgnore: 0,\n mainElement: 'body',\n triggerElement: 'body',\n ptrElement: '.ptr',\n classPrefix: 'ptr--',\n cssProp: 'min-height',\n iconArrow: '⇣',\n iconRefreshing: '…',\n instructionsPullToRefresh: 'Pull down to refresh',\n instructionsReleaseToRefresh: 'Release to refresh',\n instructionsRefreshing: 'Refreshing',\n refreshTimeout: 500,\n getMarkup: () => _ptrMarkup,\n getStyles: () => _ptrStyles,\n onInit: () => {},\n onRefresh: () => location.reload(),\n resistanceFunction: t => Math.min(1, t / 2.5),\n shouldPullToRefresh() {\n return typeof this.mainElement === 'string'\n ? !document.querySelector(this.mainElement).scrollTop\n : this.mainElement && !this.mainElement.scrollTop;\n },\n};\n", "export default `\n
\n
\n
\n
\n
\n
\n`;\n", "export default `\n.__PREFIX__ptr {\n box-shadow: inset 0 -3px 5px rgba(0, 0, 0, 0.12);\n pointer-events: none;\n font-size: 0.85em;\n font-weight: bold;\n top: 0;\n height: 0;\n transition: height 0.3s, min-height 0.3s;\n text-align: center;\n width: 100%;\n overflow: hidden;\n display: flex;\n align-items: flex-end;\n align-content: stretch;\n}\n\n.__PREFIX__box {\n padding: 10px;\n flex-basis: 100%;\n}\n\n.__PREFIX__pull {\n transition: none;\n}\n\n.__PREFIX__text {\n margin-top: .33em;\n color: rgba(0, 0, 0, 0.3);\n}\n\n.__PREFIX__icon {\n color: rgba(0, 0, 0, 0.3);\n transition: transform .3s;\n}\n\n/*\nWhen at the top of the page, disable vertical overscroll so passive touch\nlisteners can take over.\n*/\n.__PREFIX__top {\n touch-action: pan-x pan-down pinch-zoom;\n}\n\n.__PREFIX__release {\n .__PREFIX__icon {\n transform: rotate(180deg);\n }\n}\n`;\n", "import _setupEvents from './events';\nimport _defaults from './defaults';\nimport _shared from './shared';\n\nconst _methods = ['mainElement', 'ptrElement', 'triggerElement'];\n\nexport default options => {\n const _handler = {};\n\n // merge options with defaults\n Object.keys(_defaults).forEach(key => {\n _handler[key] = options[key] || _defaults[key];\n });\n\n // normalize timeout value, even if it is zero\n _handler.refreshTimeout = typeof options.refreshTimeout === 'number'\n ? options.refreshTimeout\n : _defaults.refreshTimeout;\n\n // normalize elements\n _methods.forEach(method => {\n if (typeof _handler[method] === 'string') {\n _handler[method] = document.querySelector(_handler[method]);\n }\n });\n\n // attach events lazily\n if (!_shared.events) {\n _shared.events = _setupEvents();\n }\n\n _handler.contains = target => {\n return _handler.triggerElement.contains(target);\n };\n\n _handler.destroy = () => {\n // stop pending any pending callbacks\n clearTimeout(_shared.timeout);\n\n // remove handler from shared state\n const offset = _shared.handlers.indexOf(_handler);\n _shared.handlers.splice(offset, 1);\n };\n\n return _handler;\n};\n", "import _ptr from './api';\nimport _shared from './shared';\nimport _setupEvents from './events';\nimport _setupHandler from './setup';\n\n// public API\nexport default {\n setPassiveMode(isPassive) {\n _shared.passive = isPassive;\n },\n setPointerEventsMode(isEnabled) {\n _shared.pointerEventsEnabled = isEnabled;\n },\n destroyAll() {\n if (_shared.events) {\n _shared.events.destroy();\n _shared.events = null;\n }\n\n _shared.handlers.forEach(h => {\n h.destroy();\n });\n },\n init(options = {}) {\n const handler = _setupHandler(options);\n\n _shared.handlers.push(handler);\n\n return handler;\n },\n\n // export utils for testing\n _: {\n setupHandler: _setupHandler,\n setupEvents: _setupEvents,\n setupDOM: _ptr.setupDOM,\n onReset: _ptr.onReset,\n update: _ptr.update,\n },\n};\n" ], "names": [ "const", "_shared", "pullStartY", "pullMoveY", "handlers", "styleEl", "events", "dist", "state", "timeout", "distResisted", "supportsPassive", "supportsPointerEvents", "window", "PointerEvent", "addEventListener", "e", "handler", "ptrElement", "ptr", "document", "createElement", "mainElement", "body", "parentNode", "insertBefore", "firstChild", "classList", "add", "innerHTML", "getMarkup", "replace", "classPrefix", "onInit", "setAttribute", "head", "appendChild", "textContent", "getStyles", "remove", "style", "cssProp", "setTimeout", "removeChild", "refreshTimeout", "iconEl", "querySelector", "textEl", "iconRefreshing", "iconArrow", "instructionsReleaseToRefresh", "instructionsPullToRefresh", "instructionsRefreshing", "screenY", "event", "pointerEventsEnabled", "touches", "_el", "_onTouchStart", "target", "filter", "h", "contains", "enable", "_ptr", "setupDOM", "shouldPullToRefresh", "clearTimeout", "update", "_onTouchMove", "distExtra", "distIgnore", "preventDefault", "resistanceFunction", "distThreshold", "Math", "min", "distMax", "_onTouchEnd", "retval", "onRefresh", "onReset", "then", "length", "_onScroll", "toggle", "_passiveSettings", "passive", "undefined", "onTouchEnd", "onTouchStart", "onTouchMove", "onScroll", "destroy", "removeEventListener", "distReload", "triggerElement", "location", "reload", "t", "this", "scrollTop", "_methods", "options", "_handler", "Object", "keys", "_defaults", "forEach", "key", "method", "_setupEvents", "offset", "indexOf", "splice", "setPassiveMode", "isPassive", "setPointerEventsMode", "isEnabled", "destroyAll", "init", "_setupHandler", "push", "_", "setupHandler", "setupEvents" ], "mappings": "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" }