{"version":3,"sources":["webpack:///./node_modules/query-string/index.js","webpack:///./node_modules/framer-motion/dist/es/render/dom/projection/utils.js","webpack:///./node_modules/framer-motion/dist/es/components/AnimateSharedLayout/utils/batcher.js","webpack:///./node_modules/framer-motion/dist/es/context/SharedLayoutContext.js","webpack:///./node_modules/framer-motion/dist/es/render/dom/utils/batch-layout.js","webpack:///./node_modules/react-use/esm/useEffectOnce.js","webpack:///./node_modules/react-use/esm/useUnmount.js","webpack:///./node_modules/react-use/esm/useRafState.js","webpack:///./node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.js","webpack:///./node_modules/framer-motion/dist/es/components/AnimatePresence/index.js","webpack:///./node_modules/framer-motion/dist/es/utils/use-force-update.js","webpack:///./node_modules/react-use/esm/useIsomorphicLayoutEffect.js","webpack:///./node_modules/react-use/esm/misc/util.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/react-use/esm/useWindowScroll.js","webpack:///./node_modules/react-use/esm/usePrevious.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","isProjecting","visualElement","projection","isEnabled","shouldResetTransform","collectProjectingAncestors","ancestors","parent","push","collectProjectingChildren","children","addChild","child","forEach","updateLayoutMeasurement","layoutState","getLayoutState","notifyBeforeLayoutMeasure","layout","isHydrated","measureViewportBox","layoutCorrected","notifyLayoutMeasure","prevViewportBox","update","rebaseProjectionTarget","snapshotViewportBox","defaultHandler","layoutReady","notifyLayoutReady","createBatcher","queue","Set","add","flush","_a","_b","read","write","order","from","element","resetTransform","restoreTransform","isPresent","presence","Present","preRender","render","postRender","assignProjectionToSnapshot","clear","target","SharedLayoutContext","FramerTreeLayoutContext","isSharedLayout","context","forceUpdate","unresolvedJobs","pushJob","stack","job","pointer","batchLayout","callback","delete","flushLayout","size","reads","writes","setRead","setWrite","numStacks","i","executeJob","effect","fn","fnRef","current","initialState","frame","state","setState","setRafState","cancelAnimationFrame","requestAnimationFrame","presenceId","getPresenceId","id","PresenceChild","initial","onExitComplete","custom","presenceAffectsLayout","presenceChildren","newChildrenMap","childId","set","allComplete","isComplete","register","_","PresenceContext","Provider","Map","getChildKey","AnimatePresence","exitBeforeEnter","_c","forceRender","unloadingRef","forcedRenderCount","setForcedRenderCount","useForceUpdate","layoutContext","isInitialRender","filteredChildren","filtered","onlyElements","presentChildren","allChildren","exiting","updateChildLookup","childrenToRender","presentKeys","targetKeys","numPresent","get","insertionIndex","splice","removeIndex","findIndex","presentChild","has","useIsomorphicLayoutEffect","noop","on","obj","args","_i","arguments","addEventListener","apply","off","removeEventListener","isBrowser","window","module","str","charCodeAt","toString","toUpperCase","singleMatcher","RegExp","multiMatcher","decodeComponents","components","decodeURIComponent","err","left","right","prototype","call","tokens","match","encodedURI","replaceMap","entries","customDecodeURIComponent","string","separator","separatorIndex","predicate","isArr","val","pageXOffset","y","pageYOffset","handler","capture","passive","usePrevious","ref"],"mappings":"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","file":"90-c5c17eac2dbd04bb586a.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","import sync from 'framesync';\nimport { copyAxisBox } from '../../../utils/geometry/index.js';\nimport { compareByDepth } from '../../utils/compare-by-depth.js';\n\nfunction isProjecting(visualElement) {\n var isEnabled = visualElement.projection.isEnabled;\n return isEnabled || visualElement.shouldResetTransform();\n}\nfunction collectProjectingAncestors(visualElement, ancestors) {\n if (ancestors === void 0) { ancestors = []; }\n var parent = visualElement.parent;\n if (parent)\n collectProjectingAncestors(parent, ancestors);\n if (isProjecting(visualElement))\n ancestors.push(visualElement);\n return ancestors;\n}\nfunction collectProjectingChildren(visualElement) {\n var children = [];\n var addChild = function (child) {\n if (isProjecting(child))\n children.push(child);\n child.children.forEach(addChild);\n };\n visualElement.children.forEach(addChild);\n return children.sort(compareByDepth);\n}\n/**\n * Update the layoutState by measuring the DOM layout. This\n * should be called after resetting any layout-affecting transforms.\n */\nfunction updateLayoutMeasurement(visualElement) {\n if (visualElement.shouldResetTransform())\n return;\n var layoutState = visualElement.getLayoutState();\n visualElement.notifyBeforeLayoutMeasure(layoutState.layout);\n layoutState.isHydrated = true;\n layoutState.layout = visualElement.measureViewportBox();\n layoutState.layoutCorrected = copyAxisBox(layoutState.layout);\n visualElement.notifyLayoutMeasure(layoutState.layout, visualElement.prevViewportBox || layoutState.layout);\n sync.update(function () { return visualElement.rebaseProjectionTarget(); });\n}\n/**\n * Record the viewport box as it was before an expected mutation/re-render\n */\nfunction snapshotViewportBox(visualElement) {\n if (visualElement.shouldResetTransform())\n return;\n visualElement.prevViewportBox = visualElement.measureViewportBox(false);\n /**\n * Update targetBox to match the prevViewportBox. This is just to ensure\n * that targetBox is affected by scroll in the same way as the measured box\n */\n visualElement.rebaseProjectionTarget(false, visualElement.prevViewportBox);\n}\n\nexport { collectProjectingAncestors, collectProjectingChildren, snapshotViewportBox, updateLayoutMeasurement };\n","import { __spreadArray, __read } from 'tslib';\nimport sync, { flushSync } from 'framesync';\nimport { collectProjectingAncestors, updateLayoutMeasurement } from '../../../render/dom/projection/utils.js';\nimport { batchLayout, flushLayout } from '../../../render/dom/utils/batch-layout.js';\nimport { compareByDepth } from '../../../render/utils/compare-by-depth.js';\nimport { Presence } from '../types.js';\n\n/**\n * Default handlers for batching VisualElements\n */\nvar defaultHandler = {\n layoutReady: function (child) { return child.notifyLayoutReady(); },\n};\n/**\n * Create a batcher to process VisualElements\n */\nfunction createBatcher() {\n var queue = new Set();\n return {\n add: function (child) { return queue.add(child); },\n flush: function (_a) {\n var _b = _a === void 0 ? defaultHandler : _a, layoutReady = _b.layoutReady, parent = _b.parent;\n batchLayout(function (read, write) {\n var order = Array.from(queue).sort(compareByDepth);\n var ancestors = parent\n ? collectProjectingAncestors(parent)\n : [];\n write(function () {\n var allElements = __spreadArray(__spreadArray([], __read(ancestors)), __read(order));\n allElements.forEach(function (element) { return element.resetTransform(); });\n });\n read(function () {\n order.forEach(updateLayoutMeasurement);\n });\n write(function () {\n ancestors.forEach(function (element) { return element.restoreTransform(); });\n order.forEach(layoutReady);\n });\n read(function () {\n /**\n * After all children have started animating, ensure any Entering components are set to Present.\n * If we add deferred animations (set up all animations and then start them in two loops) this\n * could be moved to the start loop. But it needs to happen after all the animations configs\n * are generated in AnimateSharedLayout as this relies on presence data\n */\n order.forEach(function (child) {\n if (child.isPresent)\n child.presence = Presence.Present;\n });\n });\n write(function () {\n /**\n * Starting these animations will have queued jobs on the frame loop. In some situations,\n * like when removing an element, these will be processed too late after the DOM is manipulated,\n * leaving a flash of incorrectly-projected content. By manually flushing these jobs\n * we ensure there's no flash.\n */\n flushSync.preRender();\n flushSync.render();\n });\n read(function () {\n /**\n * Schedule a callback at the end of the following frame to assign the latest projection\n * box to the prevViewportBox snapshot. Once global batching is in place this could be run\n * synchronously. But for now it ensures that if any nested `AnimateSharedLayout` top-level\n * child attempts to calculate its previous relative position against a prevViewportBox\n * it will be against its latest projection box instead, as the snapshot is useless beyond this\n * render.\n */\n sync.postRender(function () {\n return order.forEach(assignProjectionToSnapshot);\n });\n queue.clear();\n });\n });\n // TODO: Need to find a layout-synchronous way of flushing this\n flushLayout();\n },\n };\n}\nfunction assignProjectionToSnapshot(child) {\n child.prevViewportBox = child.projection.target;\n}\n\nexport { createBatcher };\n","import { createContext } from 'react';\nimport { createBatcher } from '../components/AnimateSharedLayout/utils/batcher.js';\n\nvar SharedLayoutContext = createContext(createBatcher());\n/**\n * @internal\n */\nvar FramerTreeLayoutContext = createContext(createBatcher());\nfunction isSharedLayout(context) {\n return !!context.forceUpdate;\n}\n\nexport { FramerTreeLayoutContext, SharedLayoutContext, isSharedLayout };\n","var unresolvedJobs = new Set();\nfunction pushJob(stack, job, pointer) {\n if (!stack[pointer])\n stack[pointer] = [];\n stack[pointer].push(job);\n}\nfunction batchLayout(callback) {\n unresolvedJobs.add(callback);\n return function () { return unresolvedJobs.delete(callback); };\n}\nfunction flushLayout() {\n if (!unresolvedJobs.size)\n return;\n var pointer = 0;\n var reads = [[]];\n var writes = [];\n var setRead = function (job) { return pushJob(reads, job, pointer); };\n var setWrite = function (job) {\n pushJob(writes, job, pointer);\n pointer++;\n };\n /**\n * Resolve jobs into their array stacks\n */\n unresolvedJobs.forEach(function (callback) {\n callback(setRead, setWrite);\n pointer = 0;\n });\n unresolvedJobs.clear();\n /**\n * Execute jobs\n */\n var numStacks = writes.length;\n for (var i = 0; i <= numStacks; i++) {\n reads[i] && reads[i].forEach(executeJob);\n writes[i] && writes[i].forEach(executeJob);\n }\n}\nvar executeJob = function (job) { return job(); };\n\nexport { batchLayout, flushLayout };\n","import { useEffect } from 'react';\nvar useEffectOnce = function (effect) {\n useEffect(effect, []);\n};\nexport default useEffectOnce;\n","import { useRef } from 'react';\nimport useEffectOnce from './useEffectOnce';\nvar useUnmount = function (fn) {\n var fnRef = useRef(fn);\n // update the ref each render so if it change the newest callback will be invoked\n fnRef.current = fn;\n useEffectOnce(function () { return function () { return fnRef.current(); }; });\n};\nexport default useUnmount;\n","import { useCallback, useRef, useState } from 'react';\nimport useUnmount from './useUnmount';\nvar useRafState = function (initialState) {\n var frame = useRef(0);\n var _a = useState(initialState), state = _a[0], setState = _a[1];\n var setRafState = useCallback(function (value) {\n cancelAnimationFrame(frame.current);\n frame.current = requestAnimationFrame(function () {\n setState(value);\n });\n }, []);\n useUnmount(function () {\n cancelAnimationFrame(frame.current);\n });\n return [state, setRafState];\n};\nexport default useRafState;\n","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.js';\nimport { useConstant } from '../../utils/use-constant.js';\n\nvar presenceId = 0;\nfunction getPresenceId() {\n var id = presenceId;\n presenceId++;\n return id;\n}\nvar PresenceChild = function (_a) {\n var children = _a.children, initial = _a.initial, isPresent = _a.isPresent, onExitComplete = _a.onExitComplete, custom = _a.custom, presenceAffectsLayout = _a.presenceAffectsLayout;\n var presenceChildren = useConstant(newChildrenMap);\n var id = useConstant(getPresenceId);\n var context = useMemo(function () { return ({\n id: id,\n initial: initial,\n isPresent: isPresent,\n custom: custom,\n onExitComplete: function (childId) {\n presenceChildren.set(childId, true);\n var allComplete = true;\n presenceChildren.forEach(function (isComplete) {\n if (!isComplete)\n allComplete = false;\n });\n allComplete && (onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete());\n },\n register: function (childId) {\n presenceChildren.set(childId, false);\n return function () { return presenceChildren.delete(childId); };\n },\n }); }, \n /**\n * If the presence of a child affects the layout of the components around it,\n * we want to make a new context value to ensure they get re-rendered\n * so they can detect that layout change.\n */\n presenceAffectsLayout ? undefined : [isPresent]);\n useMemo(function () {\n presenceChildren.forEach(function (_, key) { return presenceChildren.set(key, false); });\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n React.useEffect(function () {\n !isPresent && !presenceChildren.size && (onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete());\n }, [isPresent]);\n return (React.createElement(PresenceContext.Provider, { value: context }, children));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import { __spreadArray, __read } from 'tslib';\nimport * as React from 'react';\nimport { useContext, useRef, cloneElement, Children, isValidElement } from 'react';\nimport { useForceUpdate } from '../../utils/use-force-update.js';\nimport { PresenceChild } from './PresenceChild.js';\nimport { SharedLayoutContext, isSharedLayout } from '../../context/SharedLayoutContext.js';\n\nfunction getChildKey(child) {\n return child.key || \"\";\n}\nfunction updateChildLookup(children, allChildren) {\n var seenChildren = process.env.NODE_ENV !== \"production\" ? new Set() : null;\n children.forEach(function (child) {\n var key = getChildKey(child);\n if (process.env.NODE_ENV !== \"production\" && seenChildren) {\n if (seenChildren.has(key)) {\n console.warn(\"Children of AnimatePresence require unique keys. \\\"\" + key + \"\\\" is a duplicate.\");\n }\n seenChildren.add(key);\n }\n allChildren.set(key, child);\n });\n}\nfunction onlyElements(children) {\n var filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, function (child) {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * @library\n *\n * Any `Frame` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { Frame, AnimatePresence } from 'framer'\n *\n * // As items are added and removed from `items`\n * export function Items({ items }) {\n * return (\n * \n * {items.map(item => (\n * \n * ))}\n * \n * )\n * }\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * @motion\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * \n * {items.map(item => (\n * \n * ))}\n * \n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nvar AnimatePresence = function (_a) {\n var children = _a.children, custom = _a.custom, _b = _a.initial, initial = _b === void 0 ? true : _b, onExitComplete = _a.onExitComplete, exitBeforeEnter = _a.exitBeforeEnter, _c = _a.presenceAffectsLayout, presenceAffectsLayout = _c === void 0 ? true : _c;\n // We want to force a re-render once all exiting animations have finished. We\n // either use a local forceRender function, or one from a parent context if it exists.\n var forceRender = useForceUpdate();\n var layoutContext = useContext(SharedLayoutContext);\n if (isSharedLayout(layoutContext)) {\n forceRender = layoutContext.forceUpdate;\n }\n var isInitialRender = useRef(true);\n // Filter out any children that aren't ReactElements. We can only track ReactElements with a props.key\n var filteredChildren = onlyElements(children);\n // Keep a living record of the children we're actually rendering so we\n // can diff to figure out which are entering and exiting\n var presentChildren = useRef(filteredChildren);\n // A lookup table to quickly reference components by key\n var allChildren = useRef(new Map())\n .current;\n // A living record of all currently exiting components.\n var exiting = useRef(new Set()).current;\n updateChildLookup(filteredChildren, allChildren);\n // If this is the initial component render, just deal with logic surrounding whether\n // we play onMount animations or not.\n if (isInitialRender.current) {\n isInitialRender.current = false;\n return (React.createElement(React.Fragment, null, filteredChildren.map(function (child) { return (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, initial: initial ? undefined : false, presenceAffectsLayout: presenceAffectsLayout }, child)); })));\n }\n // If this is a subsequent render, deal with entering and exiting children\n var childrenToRender = __spreadArray([], __read(filteredChildren));\n // Diff the keys of the currently-present and target children to update our\n // exiting list.\n var presentKeys = presentChildren.current.map(getChildKey);\n var targetKeys = filteredChildren.map(getChildKey);\n // Diff the present children with our target children and mark those that are exiting\n var numPresent = presentKeys.length;\n for (var i = 0; i < numPresent; i++) {\n var key = presentKeys[i];\n if (targetKeys.indexOf(key) === -1) {\n exiting.add(key);\n }\n else {\n // In case this key has re-entered, remove from the exiting list\n exiting.delete(key);\n }\n }\n // If we currently have exiting children, and we're deferring rendering incoming children\n // until after all current children have exiting, empty the childrenToRender array\n if (exitBeforeEnter && exiting.size) {\n childrenToRender = [];\n }\n // Loop through all currently exiting components and clone them to overwrite `animate`\n // with any `exit` prop they might have defined.\n exiting.forEach(function (key) {\n // If this component is actually entering again, early return\n if (targetKeys.indexOf(key) !== -1)\n return;\n var child = allChildren.get(key);\n if (!child)\n return;\n var insertionIndex = presentKeys.indexOf(key);\n var onExit = function () {\n allChildren.delete(key);\n exiting.delete(key);\n // Remove this child from the present children\n var removeIndex = presentChildren.current.findIndex(function (presentChild) { return presentChild.key === key; });\n presentChildren.current.splice(removeIndex, 1);\n // Defer re-rendering until all exiting children have indeed left\n if (!exiting.size) {\n presentChildren.current = filteredChildren;\n forceRender();\n onExitComplete && onExitComplete();\n }\n };\n childrenToRender.splice(insertionIndex, 0, React.createElement(PresenceChild, { key: getChildKey(child), isPresent: false, onExitComplete: onExit, custom: custom, presenceAffectsLayout: presenceAffectsLayout }, child));\n });\n // Add `MotionContext` even to children that don't need it to ensure we're rendering\n // the same tree between renders\n childrenToRender = childrenToRender.map(function (child) {\n var key = child.key;\n return exiting.has(key) ? (child) : (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, presenceAffectsLayout: presenceAffectsLayout }, child));\n });\n presentChildren.current = childrenToRender;\n if (process.env.NODE_ENV !== \"production\" &&\n exitBeforeEnter &&\n childrenToRender.length > 1) {\n console.warn(\"You're attempting to animate multiple children within AnimatePresence, but its exitBeforeEnter prop is set to true. This will lead to odd visual behaviour.\");\n }\n return (React.createElement(React.Fragment, null, exiting.size\n ? childrenToRender\n : childrenToRender.map(function (child) { return cloneElement(child); })));\n};\n\nexport { AnimatePresence };\n","import { __read } from 'tslib';\nimport { useCallback, useRef, useState } from 'react';\nimport { useUnmountEffect } from './use-unmount-effect.js';\n\nfunction useForceUpdate() {\n var unloadingRef = useRef(false);\n var _a = __read(useState(0), 2), forcedRenderCount = _a[0], setForcedRenderCount = _a[1];\n useUnmountEffect(function () { return (unloadingRef.current = true); });\n return useCallback(function () {\n !unloadingRef.current && setForcedRenderCount(forcedRenderCount + 1);\n }, [forcedRenderCount]);\n}\n\nexport { useForceUpdate };\n","import { useEffect, useLayoutEffect } from 'react';\nimport { isBrowser } from './misc/util';\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\nexport default useIsomorphicLayoutEffect;\n","export var noop = function () { };\nexport function on(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.addEventListener) {\n obj.addEventListener.apply(obj, args);\n }\n}\nexport function off(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.removeEventListener) {\n obj.removeEventListener.apply(obj, args);\n }\n}\nexport var isBrowser = typeof window !== 'undefined';\nexport var isNavigator = typeof navigator !== 'undefined';\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 { useEffect } from 'react';\nimport { isBrowser, off, on } from './misc/util';\nimport useRafState from './useRafState';\nvar useWindowScroll = function () {\n var _a = useRafState(function () { return ({\n x: isBrowser ? window.pageXOffset : 0,\n y: isBrowser ? window.pageYOffset : 0,\n }); }), state = _a[0], setState = _a[1];\n useEffect(function () {\n var handler = function () {\n setState(function (state) {\n var pageXOffset = window.pageXOffset, pageYOffset = window.pageYOffset;\n //Check state for change, return same state if no change happened to prevent rerender\n //(see useState/setState documentation). useState/setState is used internally in useRafState/setState.\n return state.x !== pageXOffset || state.y !== pageYOffset\n ? {\n x: pageXOffset,\n y: pageYOffset,\n }\n : state;\n });\n };\n //We have to update window scroll at mount, before subscription.\n //Window scroll may be changed between render and effect handler.\n handler();\n on(window, 'scroll', handler, {\n capture: false,\n passive: true,\n });\n return function () {\n off(window, 'scroll', handler);\n };\n }, []);\n return state;\n};\nexport default useWindowScroll;\n","import { useEffect, useRef } from 'react';\nexport default function usePrevious(state) {\n var ref = useRef();\n useEffect(function () {\n ref.current = state;\n });\n return ref.current;\n}\n"],"sourceRoot":""}