{"version":3,"sources":["webpack:///./node_modules/query-string/index.js","webpack:///./node_modules/react-swipeable/dist/react-swipeable.umd.js","webpack:///./node_modules/strict-uri-encode/index.js","webpack:///./node_modules/decode-uri-component/index.js","webpack:///./node_modules/split-on-first/index.js","webpack:///./node_modules/filter-obj/index.js","webpack:///./node_modules/framer-motion/dist/es/utils/use-reduced-motion.js","webpack:///./node_modules/framer-motion/dist/es/value/use-on-change.js","webpack:///./node_modules/react-use/esm/useInterval.js","webpack:///./node_modules/framer-motion/dist/es/animation/animation-controls.js","webpack:///./node_modules/framer-motion/dist/es/animation/use-animation.js"],"names":["strictUriEncode","decodeComponent","splitOnFirst","filterObject","encodeFragmentIdentifier","Symbol","validateArrayFormatSeparator","value","length","TypeError","encode","options","strict","encodeURIComponent","decode","removeHash","input","hashStart","indexOf","slice","extract","queryStart","parseValue","parseNumbers","Number","isNaN","trim","parseBooleans","toLowerCase","parse","query","Object","assign","sort","arrayFormat","arrayFormatSeparator","formatter","result","key","accumulator","exec","replace","undefined","concat","isArray","includes","isEncodedArray","newValue","split","map","item","test","arrayValue","parserForArrayFormat","ret","create","param","keys","k","reduce","Boolean","Array","keysSorter","a","b","exports","stringify","object","shouldFilter","skipNull","skipEmptyString","index","join","keyValueSep","encoderForArrayFormat","objectCopy","filter","x","parseUrl","url","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","pick","exclude","exclusionFilter","React","_extends","target","i","arguments","source","prototype","hasOwnProperty","call","apply","this","defaultProps","delta","preventDefaultTouchmoveEvent","rotationAngle","trackMouse","trackTouch","initialState","first","initial","start","swiping","xy","rotateXYByAngle","pos","angle","angleInRadians","Math","PI","cos","sin","DOWN","LEFT","RIGHT","UP","useSwipeable","transientState","useRef","transientProps","current","_React$useMemo","useMemo","set","handlerProps","onStart","event","touches","state","props","document","addEventListener","onMove","onUp","_ref","clientX","clientY","timeStamp","_ref2","_rotateXYByAngle","y","deltaX","deltaY","absX","abs","absY","time","velocity","sqrt","vxvy","dir","getDirection","eventData","onSwipeStart","onSwiping","cancelablePageSwipe","onSwiped","cancelable","preventDefault","onEnd","onSwipedDir","onTap","cleanUpMouse","removeEventListener","e","attachTouch","el","passive","cleanup","tls","forEach","_ref3","h","_ref4","output","ref","addState","cleanUpTouch","onMouseDown","getHandlers","stateSetter","handlers","updateTransientState","factory","module","str","charCodeAt","toString","toUpperCase","singleMatcher","RegExp","multiMatcher","decodeComponents","components","decodeURIComponent","err","left","right","tokens","match","encodedURI","replaceMap","entries","customDecodeURIComponent","string","separator","separatorIndex","obj","predicate","isArr","val","prefersReducedMotion","useReducedMotion","window","matchMedia","motionMediaQuery_1","setReducedMotionPreferences","matches","addListener","initPrefersReducedMotion","callback","_a","get","shouldReduceMotion","setShouldReduceMotion","onChange","delay","savedCallback","interval_1","setInterval","clearInterval","animationControls","hasMounted","pendingAnimations","subscribers","Set","controls","subscribe","visualElement","add","delete","definition","transitionOverride","animations_1","push","Promise","all","resolve","animation","stop","mount","then","useAnimation"],"mappings":"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","file":"8-c00bf333332406e57928.js","sourcesContent":["'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :\n typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :\n (global = global || self, factory(global.swipeable = {}, global.react));\n}(this, (function (exports, React) {\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n var LEFT = \"Left\";\n var RIGHT = \"Right\";\n var UP = \"Up\";\n var DOWN = \"Down\";\n\n var defaultProps = {\n delta: 10,\n preventDefaultTouchmoveEvent: false,\n rotationAngle: 0,\n trackMouse: false,\n trackTouch: true\n };\n var initialState = {\n first: true,\n initial: [0, 0],\n start: 0,\n swiping: false,\n xy: [0, 0]\n };\n var mouseMove = \"mousemove\";\n var mouseUp = \"mouseup\";\n var touchEnd = \"touchend\";\n var touchMove = \"touchmove\";\n var touchStart = \"touchstart\";\n\n function getDirection(absX, absY, deltaX, deltaY) {\n if (absX > absY) {\n if (deltaX > 0) {\n return RIGHT;\n }\n\n return LEFT;\n } else if (deltaY > 0) {\n return DOWN;\n }\n\n return UP;\n }\n\n function rotateXYByAngle(pos, angle) {\n if (angle === 0) return pos;\n var angleInRadians = Math.PI / 180 * angle;\n var x = pos[0] * Math.cos(angleInRadians) + pos[1] * Math.sin(angleInRadians);\n var y = pos[1] * Math.cos(angleInRadians) - pos[0] * Math.sin(angleInRadians);\n return [x, y];\n }\n\n function getHandlers(set, handlerProps) {\n var onStart = function onStart(event) {\n // if more than a single touch don't track, for now...\n if (event && \"touches\" in event && event.touches.length > 1) return;\n set(function (state, props) {\n // setup mouse listeners on document to track swipe since swipe can leave container\n if (props.trackMouse) {\n document.addEventListener(mouseMove, onMove);\n document.addEventListener(mouseUp, onUp);\n }\n\n var _ref = \"touches\" in event ? event.touches[0] : event,\n clientX = _ref.clientX,\n clientY = _ref.clientY;\n\n var xy = rotateXYByAngle([clientX, clientY], props.rotationAngle);\n return _extends({}, state, initialState, {\n initial: [].concat(xy),\n xy: xy,\n start: event.timeStamp || 0\n });\n });\n };\n\n var onMove = function onMove(event) {\n set(function (state, props) {\n // Discount a swipe if additional touches are present after\n // a swipe has started.\n if (\"touches\" in event && event.touches.length > 1) {\n return state;\n }\n\n var _ref2 = \"touches\" in event ? event.touches[0] : event,\n clientX = _ref2.clientX,\n clientY = _ref2.clientY;\n\n var _rotateXYByAngle = rotateXYByAngle([clientX, clientY], props.rotationAngle),\n x = _rotateXYByAngle[0],\n y = _rotateXYByAngle[1];\n\n var deltaX = x - state.xy[0];\n var deltaY = y - state.xy[1];\n var absX = Math.abs(deltaX);\n var absY = Math.abs(deltaY);\n var time = (event.timeStamp || 0) - state.start;\n var velocity = Math.sqrt(absX * absX + absY * absY) / (time || 1);\n var vxvy = [deltaX / (time || 1), deltaY / (time || 1)]; // if swipe is under delta and we have not started to track a swipe: skip update\n\n if (absX < props.delta && absY < props.delta && !state.swiping) return state;\n var dir = getDirection(absX, absY, deltaX, deltaY);\n var eventData = {\n absX: absX,\n absY: absY,\n deltaX: deltaX,\n deltaY: deltaY,\n dir: dir,\n event: event,\n first: state.first,\n initial: state.initial,\n velocity: velocity,\n vxvy: vxvy\n }; // call onSwipeStart if present and is first swipe event\n\n eventData.first && props.onSwipeStart && props.onSwipeStart(eventData); // Call onSwiping if present\n\n props.onSwiping && props.onSwiping(eventData); // track if a swipe is cancelable(handler for swiping or swiped(dir) exists)\n // so we can call preventDefault if needed\n\n var cancelablePageSwipe = false;\n\n if (props.onSwiping || props.onSwiped || \"onSwiped\" + dir in props) {\n cancelablePageSwipe = true;\n }\n\n if (cancelablePageSwipe && props.preventDefaultTouchmoveEvent && props.trackTouch && event.cancelable) event.preventDefault();\n return _extends({}, state, {\n // first is now always false\n first: false,\n eventData: eventData,\n swiping: true\n });\n });\n };\n\n var onEnd = function onEnd(event) {\n set(function (state, props) {\n var eventData;\n\n if (state.swiping && state.eventData) {\n eventData = _extends({}, state.eventData, {\n event: event\n });\n props.onSwiped && props.onSwiped(eventData);\n var onSwipedDir = \"onSwiped\" + eventData.dir;\n\n if (onSwipedDir in props) {\n props[onSwipedDir](eventData);\n }\n } else {\n props.onTap && props.onTap({\n event: event\n });\n }\n\n return _extends({}, state, initialState, {\n eventData: eventData\n });\n });\n };\n\n var cleanUpMouse = function cleanUpMouse() {\n // safe to just call removeEventListener\n document.removeEventListener(mouseMove, onMove);\n document.removeEventListener(mouseUp, onUp);\n };\n\n var onUp = function onUp(e) {\n cleanUpMouse();\n onEnd(e);\n };\n /**\r\n * Switch of \"passive\" property for now.\r\n * When `preventDefaultTouchmoveEvent` is:\r\n * - true => { passive: false }\r\n * - false => { passive: true }\r\n *\r\n * Could take entire `addEventListener` options object as a param later?\r\n */\n\n\n var attachTouch = function attachTouch(el, passive) {\n var cleanup = function cleanup() {};\n\n if (el && el.addEventListener) {\n // attach touch event listeners and handlers\n var tls = [[touchStart, onStart], [touchMove, onMove], [touchEnd, onEnd]];\n tls.forEach(function (_ref3) {\n var e = _ref3[0],\n h = _ref3[1];\n return el.addEventListener(e, h, {\n passive: passive\n });\n }); // return properly scoped cleanup method for removing listeners, options not required\n\n cleanup = function cleanup() {\n return tls.forEach(function (_ref4) {\n var e = _ref4[0],\n h = _ref4[1];\n return el.removeEventListener(e, h);\n });\n };\n }\n\n return cleanup;\n };\n\n var onRef = function onRef(el) {\n // \"inline\" ref functions are called twice on render, once with null then again with DOM element\n // ignore null here\n if (el === null) return;\n set(function (state, props) {\n // if the same DOM el as previous just return state\n if (state.el === el) return state;\n var addState = {}; // if new DOM el clean up old DOM and reset cleanUpTouch\n\n if (state.el && state.el !== el && state.cleanUpTouch) {\n state.cleanUpTouch();\n addState.cleanUpTouch = undefined;\n } // only attach if we want to track touch\n\n\n if (props.trackTouch && el) {\n addState.cleanUpTouch = attachTouch(el, !props.preventDefaultTouchmoveEvent);\n } // store event attached DOM el for comparison, clean up, and re-attachment\n\n\n return _extends({}, state, {\n el: el\n }, addState);\n });\n }; // set ref callback to attach touch event listeners\n\n\n var output = {\n ref: onRef\n }; // if track mouse attach mouse down listener\n\n if (handlerProps.trackMouse) {\n output.onMouseDown = onStart;\n }\n\n return [output, attachTouch];\n }\n\n function updateTransientState(state, props, attachTouch) {\n var addState = {}; // clean up touch handlers if no longer tracking touches\n\n if (!props.trackTouch && state.cleanUpTouch) {\n state.cleanUpTouch();\n addState.cleanUpTouch = undefined;\n } else if (props.trackTouch && !state.cleanUpTouch) {\n // attach/re-attach touch handlers\n if (state.el) {\n addState.cleanUpTouch = attachTouch(state.el, !props.preventDefaultTouchmoveEvent);\n }\n }\n\n return _extends({}, state, addState);\n }\n\n function useSwipeable(options) {\n var trackMouse = options.trackMouse;\n var transientState = React.useRef(_extends({}, initialState));\n var transientProps = React.useRef(_extends({}, defaultProps));\n transientProps.current = _extends({}, defaultProps, options);\n\n var _React$useMemo = React.useMemo(function () {\n return getHandlers(function (stateSetter) {\n return transientState.current = stateSetter(transientState.current, transientProps.current);\n }, {\n trackMouse: trackMouse\n });\n }, [trackMouse]),\n handlers = _React$useMemo[0],\n attachTouch = _React$useMemo[1];\n\n transientState.current = updateTransientState(transientState.current, transientProps.current, attachTouch);\n return handlers;\n }\n\n exports.DOWN = DOWN;\n exports.LEFT = LEFT;\n exports.RIGHT = RIGHT;\n exports.UP = UP;\n exports.useSwipeable = useSwipeable;\n\n})));\n//# sourceMappingURL=react-swipeable.umd.js.map\n","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","import { __read } from 'tslib';\nimport { useState } from 'react';\nimport { motionValue } from '../value/index.js';\nimport { useOnChange } from '../value/use-on-change.js';\n\n// Does this device prefer reduced motion? Returns `null` server-side.\nvar prefersReducedMotion;\nfunction initPrefersReducedMotion() {\n prefersReducedMotion = motionValue(null);\n if (typeof window === \"undefined\")\n return;\n if (window.matchMedia) {\n var motionMediaQuery_1 = window.matchMedia(\"(prefers-reduced-motion)\");\n var setReducedMotionPreferences = function () {\n return prefersReducedMotion.set(motionMediaQuery_1.matches);\n };\n motionMediaQuery_1.addListener(setReducedMotionPreferences);\n setReducedMotionPreferences();\n }\n else {\n prefersReducedMotion.set(false);\n }\n}\n/**\n * A hook that returns `true` if we should be using reduced motion based on the current device's Reduced Motion setting.\n *\n * This can be used to implement changes to your UI based on Reduced Motion. For instance, replacing motion-sickness inducing\n * `x`/`y` animations with `opacity`, disabling the autoplay of background videos, or turning off parallax motion.\n *\n * It will actively respond to changes and re-render your components with the latest setting.\n *\n * ```jsx\n * export function Sidebar({ isOpen }) {\n * const shouldReduceMotion = useReducedMotion()\n * const closedX = shouldReduceMotion ? 0 : \"-100%\"\n *\n * return (\n * \n * )\n * }\n * ```\n *\n * @return boolean\n *\n * @public\n */\nfunction useReducedMotion() {\n /**\n * Lazy initialisation of prefersReducedMotion\n */\n !prefersReducedMotion && initPrefersReducedMotion();\n var _a = __read(useState(prefersReducedMotion.get()), 2), shouldReduceMotion = _a[0], setShouldReduceMotion = _a[1];\n useOnChange(prefersReducedMotion, setShouldReduceMotion);\n return shouldReduceMotion;\n}\n\nexport { useReducedMotion };\n","import { useEffect } from 'react';\nimport { isMotionValue } from './utils/is-motion-value.js';\n\nfunction useOnChange(value, callback) {\n useEffect(function () {\n if (isMotionValue(value))\n return value.onChange(callback);\n }, [callback]);\n}\nfunction useMultiOnChange(values, handler) {\n useEffect(function () {\n var subscriptions = values.map(function (value) { return value.onChange(handler); });\n return function () { return subscriptions.forEach(function (unsubscribe) { return unsubscribe(); }); };\n });\n}\n\nexport { useMultiOnChange, useOnChange };\n","import { useEffect, useRef } from 'react';\nvar useInterval = function (callback, delay) {\n var savedCallback = useRef(function () { });\n useEffect(function () {\n savedCallback.current = callback;\n });\n useEffect(function () {\n if (delay !== null) {\n var interval_1 = setInterval(function () { return savedCallback.current(); }, delay || 0);\n return function () { return clearInterval(interval_1); };\n }\n return undefined;\n }, [delay]);\n};\nexport default useInterval;\n","import { __spreadArray, __read } from 'tslib';\nimport { invariant } from 'hey-listen';\nimport { stopAnimation, animateVisualElement } from '../render/utils/animation.js';\nimport { setValues } from '../render/utils/setters.js';\n\n/**\n * @public\n */\nfunction animationControls() {\n /**\n * Track whether the host component has mounted.\n */\n var hasMounted = false;\n /**\n * Pending animations that are started before a component is mounted.\n * TODO: Remove this as animations should only run in effects\n */\n var pendingAnimations = [];\n /**\n * A collection of linked component animation controls.\n */\n var subscribers = new Set();\n var controls = {\n subscribe: function (visualElement) {\n subscribers.add(visualElement);\n return function () { return void subscribers.delete(visualElement); };\n },\n start: function (definition, transitionOverride) {\n /**\n * TODO: We only perform this hasMounted check because in Framer we used to\n * encourage the ability to start an animation within the render phase. This\n * isn't behaviour concurrent-safe so when we make Framer concurrent-safe\n * we can ditch this.\n */\n if (hasMounted) {\n var animations_1 = [];\n subscribers.forEach(function (visualElement) {\n animations_1.push(animateVisualElement(visualElement, definition, {\n transitionOverride: transitionOverride,\n }));\n });\n return Promise.all(animations_1);\n }\n else {\n return new Promise(function (resolve) {\n pendingAnimations.push({\n animation: [definition, transitionOverride],\n resolve: resolve,\n });\n });\n }\n },\n set: function (definition) {\n invariant(hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n return subscribers.forEach(function (visualElement) {\n setValues(visualElement, definition);\n });\n },\n stop: function () {\n subscribers.forEach(function (visualElement) {\n stopAnimation(visualElement);\n });\n },\n mount: function () {\n hasMounted = true;\n pendingAnimations.forEach(function (_a) {\n var animation = _a.animation, resolve = _a.resolve;\n controls.start.apply(controls, __spreadArray([], __read(animation))).then(resolve);\n });\n return function () {\n hasMounted = false;\n controls.stop();\n };\n },\n };\n return controls;\n}\n\nexport { animationControls };\n","import { animationControls } from './animation-controls.js';\nimport { useEffect } from 'react';\nimport { useConstant } from '../utils/use-constant.js';\n\n/**\n * Creates `AnimationControls`, which can be used to manually start, stop\n * and sequence animations on one or more components.\n *\n * The returned `AnimationControls` should be passed to the `animate` property\n * of the components you want to animate.\n *\n * These components can then be animated with the `start` method.\n *\n * @library\n *\n * ```jsx\n * import * as React from 'react'\n * import { Frame, useAnimation } from 'framer'\n *\n * export function MyComponent(props) {\n * const controls = useAnimation()\n *\n * controls.start({\n * x: 100,\n * transition: { duration: 0.5 },\n * })\n *\n * return \n * }\n * ```\n *\n * @motion\n *\n * ```jsx\n * import * as React from 'react'\n * import { motion, useAnimation } from 'framer-motion'\n *\n * export function MyComponent(props) {\n * const controls = useAnimation()\n *\n * controls.start({\n * x: 100,\n * transition: { duration: 0.5 },\n * })\n *\n * return \n * }\n * ```\n *\n * @returns Animation controller with `start` and `stop` methods\n *\n * @public\n */\nfunction useAnimation() {\n var controls = useConstant(animationControls);\n useEffect(controls.mount, []);\n return controls;\n}\n\nexport { useAnimation };\n"],"sourceRoot":""}