{"version":3,"file":"4296-1f695f402aad492e707d.js","mappings":"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","sources":["webpack://adler-and-allan/./node_modules/decode-uri-component/index.js","webpack://adler-and-allan/./node_modules/filter-obj/index.js","webpack://adler-and-allan/./node_modules/query-string/index.js","webpack://adler-and-allan/./node_modules/split-on-first/index.js","webpack://adler-and-allan/./node_modules/strict-uri-encode/index.js","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/animation/animate.mjs","webpack://adler-and-allan/./node_modules/popmotion/dist/es/utils/is-point.mjs","webpack://adler-and-allan/./node_modules/popmotion/dist/es/utils/is-point-3d.mjs","webpack://adler-and-allan/./node_modules/popmotion/dist/es/utils/distance.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/gestures/PanSession.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/projection/geometry/models.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/motion/features/drag.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/gestures/use-pan-gesture.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/gestures/drag/use-drag.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/motion/features/layout/index.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/projection/shared/stack.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/projection/styles/transform.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","webpack://adler-and-allan/./node_modules/framer-motion/dist/es/render/dom/features-max.mjs"],"sourcesContent":["'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';\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","'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 'colon-list-separator':\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), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', 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 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\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","'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 = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","import { motionValue } from '../value/index.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { startAnimation } from './utils/transitions.mjs';\n\n/**\n * Animate a single value or a `MotionValue`.\n *\n * The first argument is either a `MotionValue` to animate, or an initial animation value.\n *\n * The second is either a value to animate to, or an array of keyframes to animate through.\n *\n * The third argument can be either tween or spring options, and optional lifecycle methods: `onUpdate`, `onPlay`, `onComplete`, `onRepeat` and `onStop`.\n *\n * Returns `AnimationPlaybackControls`, currently just a `stop` method.\n *\n * ```javascript\n * const x = useMotionValue(0)\n *\n * useEffect(() => {\n * const controls = animate(x, 100, {\n * type: \"spring\",\n * stiffness: 2000,\n * onComplete: v => {}\n * })\n *\n * return controls.stop\n * })\n * ```\n *\n * @public\n */\nfunction animate(from, to, transition) {\n if (transition === void 0) { transition = {}; }\n var value = isMotionValue(from) ? from : motionValue(from);\n startAnimation(\"\", value, to, transition);\n return {\n stop: function () { return value.stop(); },\n isAnimating: function () { return value.isAnimating(); },\n };\n}\n\nexport { animate };\n","const isPoint = (point) => point.hasOwnProperty('x') && point.hasOwnProperty('y');\n\nexport { isPoint };\n","import { isPoint } from './is-point.mjs';\n\nconst isPoint3D = (point) => isPoint(point) && point.hasOwnProperty('z');\n\nexport { isPoint3D };\n","import { isPoint } from './is-point.mjs';\nimport { isPoint3D } from './is-point-3d.mjs';\nimport { isNum } from './inc.mjs';\n\nconst distance1D = (a, b) => Math.abs(a - b);\nfunction distance(a, b) {\n if (isNum(a) && isNum(b)) {\n return distance1D(a, b);\n }\n else if (isPoint(a) && isPoint(b)) {\n const xDelta = distance1D(a.x, b.x);\n const yDelta = distance1D(a.y, b.y);\n const zDelta = isPoint3D(a) && isPoint3D(b) ? distance1D(a.z, b.z) : 0;\n return Math.sqrt(Math.pow(xDelta, 2) + Math.pow(yDelta, 2) + Math.pow(zDelta, 2));\n }\n}\n\nexport { distance };\n","import { __assign } from 'tslib';\nimport { isMouseEvent, isTouchEvent } from './utils/event-type.mjs';\nimport { extractEventInfo } from '../events/event-info.mjs';\nimport sync, { getFrameData, cancelSync } from 'framesync';\nimport { secondsToMilliseconds } from '../utils/time-conversion.mjs';\nimport { addPointerEvent } from '../events/use-pointer-event.mjs';\nimport { distance, pipe } from 'popmotion';\n\n/**\n * @internal\n */\nvar PanSession = /** @class */ (function () {\n function PanSession(event, handlers, _a) {\n var _this = this;\n var _b = _a === void 0 ? {} : _a, transformPagePoint = _b.transformPagePoint;\n /**\n * @internal\n */\n this.startEvent = null;\n /**\n * @internal\n */\n this.lastMoveEvent = null;\n /**\n * @internal\n */\n this.lastMoveEventInfo = null;\n /**\n * @internal\n */\n this.handlers = {};\n this.updatePoint = function () {\n if (!(_this.lastMoveEvent && _this.lastMoveEventInfo))\n return;\n var info = getPanInfo(_this.lastMoveEventInfo, _this.history);\n var isPanStarted = _this.startEvent !== null;\n // Only start panning if the offset is larger than 3 pixels. If we make it\n // any larger than this we'll want to reset the pointer history\n // on the first update to avoid visual snapping to the cursoe.\n var isDistancePastThreshold = distance(info.offset, { x: 0, y: 0 }) >= 3;\n if (!isPanStarted && !isDistancePastThreshold)\n return;\n var point = info.point;\n var timestamp = getFrameData().timestamp;\n _this.history.push(__assign(__assign({}, point), { timestamp: timestamp }));\n var _a = _this.handlers, onStart = _a.onStart, onMove = _a.onMove;\n if (!isPanStarted) {\n onStart && onStart(_this.lastMoveEvent, info);\n _this.startEvent = _this.lastMoveEvent;\n }\n onMove && onMove(_this.lastMoveEvent, info);\n };\n this.handlePointerMove = function (event, info) {\n _this.lastMoveEvent = event;\n _this.lastMoveEventInfo = transformPoint(info, _this.transformPagePoint);\n // Because Safari doesn't trigger mouseup events when it's above a `<select>`\n if (isMouseEvent(event) && event.buttons === 0) {\n _this.handlePointerUp(event, info);\n return;\n }\n // Throttle mouse move event to once per frame\n sync.update(_this.updatePoint, true);\n };\n this.handlePointerUp = function (event, info) {\n _this.end();\n var _a = _this.handlers, onEnd = _a.onEnd, onSessionEnd = _a.onSessionEnd;\n var panInfo = getPanInfo(transformPoint(info, _this.transformPagePoint), _this.history);\n if (_this.startEvent && onEnd) {\n onEnd(event, panInfo);\n }\n onSessionEnd && onSessionEnd(event, panInfo);\n };\n // If we have more than one touch, don't start detecting this gesture\n if (isTouchEvent(event) && event.touches.length > 1)\n return;\n this.handlers = handlers;\n this.transformPagePoint = transformPagePoint;\n var info = extractEventInfo(event);\n var initialInfo = transformPoint(info, this.transformPagePoint);\n var point = initialInfo.point;\n var timestamp = getFrameData().timestamp;\n this.history = [__assign(__assign({}, point), { timestamp: timestamp })];\n var onSessionStart = handlers.onSessionStart;\n onSessionStart &&\n onSessionStart(event, getPanInfo(initialInfo, this.history));\n this.removeListeners = pipe(addPointerEvent(window, \"pointermove\", this.handlePointerMove), addPointerEvent(window, \"pointerup\", this.handlePointerUp), addPointerEvent(window, \"pointercancel\", this.handlePointerUp));\n }\n PanSession.prototype.updateHandlers = function (handlers) {\n this.handlers = handlers;\n };\n PanSession.prototype.end = function () {\n this.removeListeners && this.removeListeners();\n cancelSync.update(this.updatePoint);\n };\n return PanSession;\n}());\nfunction transformPoint(info, transformPagePoint) {\n return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo(_a, history) {\n var point = _a.point;\n return {\n point: point,\n delta: subtractPoint(point, lastDevicePoint(history)),\n offset: subtractPoint(point, startDevicePoint(history)),\n velocity: getVelocity(history, 0.1),\n };\n}\nfunction startDevicePoint(history) {\n return history[0];\n}\nfunction lastDevicePoint(history) {\n return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n if (history.length < 2) {\n return { x: 0, y: 0 };\n }\n var i = history.length - 1;\n var timestampedPoint = null;\n var lastPoint = lastDevicePoint(history);\n while (i >= 0) {\n timestampedPoint = history[i];\n if (lastPoint.timestamp - timestampedPoint.timestamp >\n secondsToMilliseconds(timeDelta)) {\n break;\n }\n i--;\n }\n if (!timestampedPoint) {\n return { x: 0, y: 0 };\n }\n var time = (lastPoint.timestamp - timestampedPoint.timestamp) / 1000;\n if (time === 0) {\n return { x: 0, y: 0 };\n }\n var currentVelocity = {\n x: (lastPoint.x - timestampedPoint.x) / time,\n y: (lastPoint.y - timestampedPoint.y) / time,\n };\n if (currentVelocity.x === Infinity) {\n currentVelocity.x = 0;\n }\n if (currentVelocity.y === Infinity) {\n currentVelocity.y = 0;\n }\n return currentVelocity;\n}\n\nexport { PanSession };\n","import { mix, distance } from 'popmotion';\n\nfunction calcLength(axis) {\n return axis.max - axis.min;\n}\nfunction isNear(value, target, maxDistance) {\n if (target === void 0) { target = 0; }\n if (maxDistance === void 0) { maxDistance = 0.01; }\n return distance(value, target) < maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin) {\n if (origin === void 0) { origin = 0.5; }\n delta.origin = origin;\n delta.originPoint = mix(source.min, source.max, delta.origin);\n delta.scale = calcLength(target) / calcLength(source);\n if (isNear(delta.scale, 1, 0.0001) || isNaN(delta.scale))\n delta.scale = 1;\n delta.translate =\n mix(target.min, target.max, delta.origin) - delta.originPoint;\n if (isNear(delta.translate) || isNaN(delta.translate))\n delta.translate = 0;\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n calcAxisDelta(delta.x, source.x, target.x, origin === null || origin === void 0 ? void 0 : origin.originX);\n calcAxisDelta(delta.y, source.y, target.y, origin === null || origin === void 0 ? void 0 : origin.originY);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n target.min = parent.min + relative.min;\n target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n calcRelativeAxis(target.x, relative.x, parent.x);\n calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent) {\n target.min = layout.min - parent.min;\n target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent) {\n calcRelativeAxisPosition(target.x, layout.x, parent.x);\n calcRelativeAxisPosition(target.y, layout.y, parent.y);\n}\n\nexport { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear };\n","import { __read } from 'tslib';\nimport { clamp, mix, progress } from 'popmotion';\nimport { calcLength } from '../../../projection/geometry/delta-calc.mjs';\n\n/**\n * Apply constraints to a point. These constraints are both physical along an\n * axis, and an elastic factor that determines how much to constrain the point\n * by if it does lie outside the defined parameters.\n */\nfunction applyConstraints(point, _a, elastic) {\n var min = _a.min, max = _a.max;\n if (min !== undefined && point < min) {\n // If we have a min point defined, and this is outside of that, constrain\n point = elastic ? mix(min, point, elastic.min) : Math.max(point, min);\n }\n else if (max !== undefined && point > max) {\n // If we have a max point defined, and this is outside of that, constrain\n point = elastic ? mix(max, point, elastic.max) : Math.min(point, max);\n }\n return point;\n}\n/**\n * Calculate constraints in terms of the viewport when defined relatively to the\n * measured axis. This is measured from the nearest edge, so a max constraint of 200\n * on an axis with a max value of 300 would return a constraint of 500 - axis length\n */\nfunction calcRelativeAxisConstraints(axis, min, max) {\n return {\n min: min !== undefined ? axis.min + min : undefined,\n max: max !== undefined\n ? axis.max + max - (axis.max - axis.min)\n : undefined,\n };\n}\n/**\n * Calculate constraints in terms of the viewport when\n * defined relatively to the measured bounding box.\n */\nfunction calcRelativeConstraints(layoutBox, _a) {\n var top = _a.top, left = _a.left, bottom = _a.bottom, right = _a.right;\n return {\n x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n y: calcRelativeAxisConstraints(layoutBox.y, top, bottom),\n };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative axis\n */\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n var _a;\n var min = constraintsAxis.min - layoutAxis.min;\n var max = constraintsAxis.max - layoutAxis.max;\n // If the constraints axis is actually smaller than the layout axis then we can\n // flip the constraints\n if (constraintsAxis.max - constraintsAxis.min <\n layoutAxis.max - layoutAxis.min) {\n _a = __read([max, min], 2), min = _a[0], max = _a[1];\n }\n return { min: min, max: max };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative box\n */\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n return {\n x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y),\n };\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n var origin = 0.5;\n var sourceLength = calcLength(source);\n var targetLength = calcLength(target);\n if (targetLength > sourceLength) {\n origin = progress(target.min, target.max - sourceLength, source.min);\n }\n else if (sourceLength > targetLength) {\n origin = progress(source.min, source.max - targetLength, target.min);\n }\n return clamp(0, 1, origin);\n}\n/**\n * Rebase the calculated viewport constraints relative to the layout.min point.\n */\nfunction rebaseAxisConstraints(layout, constraints) {\n var relativeConstraints = {};\n if (constraints.min !== undefined) {\n relativeConstraints.min = constraints.min - layout.min;\n }\n if (constraints.max !== undefined) {\n relativeConstraints.max = constraints.max - layout.min;\n }\n return relativeConstraints;\n}\nvar defaultElastic = 0.35;\n/**\n * Accepts a dragElastic prop and returns resolved elastic values for each axis.\n */\nfunction resolveDragElastic(dragElastic) {\n if (dragElastic === void 0) { dragElastic = defaultElastic; }\n if (dragElastic === false) {\n dragElastic = 0;\n }\n else if (dragElastic === true) {\n dragElastic = defaultElastic;\n }\n return {\n x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n y: resolveAxisElastic(dragElastic, \"top\", \"bottom\"),\n };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n return {\n min: resolvePointElastic(dragElastic, minLabel),\n max: resolvePointElastic(dragElastic, maxLabel),\n };\n}\nfunction resolvePointElastic(dragElastic, label) {\n var _a;\n return typeof dragElastic === \"number\"\n ? dragElastic\n : (_a = dragElastic[label]) !== null && _a !== void 0 ? _a : 0;\n}\n\nexport { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic };\n","function eachAxis(callback) {\n return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\n","import { __assign } from 'tslib';\nimport { invariant } from 'hey-listen';\nimport { PanSession } from '../PanSession.mjs';\nimport { getGlobalLock } from './utils/lock.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/use-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, rebaseAxisConstraints, calcViewportConstraints, calcOrigin, defaultElastic } from './utils/constraints.mjs';\nimport { AnimationType } from '../../render/utils/types.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { eachAxis } from '../../projection/utils/each-axis.mjs';\nimport { measurePageBox } from '../../projection/utils/measure.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { startAnimation } from '../../animation/utils/transitions.mjs';\nimport { convertBoxToBoundingBox, convertBoundingBoxToBox } from '../../projection/geometry/conversion.mjs';\nimport { addDomEvent } from '../../events/use-dom-event.mjs';\nimport { mix } from 'popmotion';\nimport { percent } from 'style-value-types';\nimport { calcLength } from '../../projection/geometry/delta-calc.mjs';\n\nvar elementDragControls = new WeakMap();\n/**\n *\n */\n// let latestPointerEvent: AnyPointerEvent\nvar VisualElementDragControls = /** @class */ (function () {\n function VisualElementDragControls(visualElement) {\n // This is a reference to the global drag gesture lock, ensuring only one component\n // can \"capture\" the drag of one or both axes.\n // TODO: Look into moving this into pansession?\n this.openGlobalLock = null;\n this.isDragging = false;\n this.currentDirection = null;\n this.originPoint = { x: 0, y: 0 };\n /**\n * The permitted boundaries of travel, in pixels.\n */\n this.constraints = false;\n this.hasMutatedConstraints = false;\n /**\n * The per-axis resolved elastic values.\n */\n this.elastic = createBox();\n this.visualElement = visualElement;\n }\n VisualElementDragControls.prototype.start = function (originEvent, _a) {\n var _this = this;\n var _b = _a === void 0 ? {} : _a, _c = _b.snapToCursor, snapToCursor = _c === void 0 ? false : _c;\n /**\n * Don't start dragging if this component is exiting\n */\n if (this.visualElement.isPresent === false)\n return;\n var onSessionStart = function (event) {\n // Stop any animations on both axis values immediately. This allows the user to throw and catch\n // the component.\n _this.stopAnimation();\n if (snapToCursor) {\n _this.snapToCursor(extractEventInfo(event, \"page\").point);\n }\n };\n var onStart = function (event, info) {\n var _a;\n // Attempt to grab the global drag gesture lock - maybe make this part of PanSession\n var _b = _this.getProps(), drag = _b.drag, dragPropagation = _b.dragPropagation, onDragStart = _b.onDragStart;\n if (drag && !dragPropagation) {\n if (_this.openGlobalLock)\n _this.openGlobalLock();\n _this.openGlobalLock = getGlobalLock(drag);\n // If we don 't have the lock, don't start dragging\n if (!_this.openGlobalLock)\n return;\n }\n _this.isDragging = true;\n _this.currentDirection = null;\n _this.resolveConstraints();\n if (_this.visualElement.projection) {\n _this.visualElement.projection.isAnimationBlocked = true;\n _this.visualElement.projection.target = undefined;\n }\n /**\n * Record gesture origin\n */\n eachAxis(function (axis) {\n var _a, _b;\n var current = _this.getAxisMotionValue(axis).get() || 0;\n /**\n * If the MotionValue is a percentage value convert to px\n */\n if (percent.test(current)) {\n var measuredAxis = (_b = (_a = _this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.actual[axis];\n if (measuredAxis) {\n var length_1 = calcLength(measuredAxis);\n current = length_1 * (parseFloat(current) / 100);\n }\n }\n _this.originPoint[axis] = current;\n });\n // Fire onDragStart event\n onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(event, info);\n (_a = _this.visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Drag, true);\n };\n var onMove = function (event, info) {\n // latestPointerEvent = event\n var _a = _this.getProps(), dragPropagation = _a.dragPropagation, dragDirectionLock = _a.dragDirectionLock, onDirectionLock = _a.onDirectionLock, onDrag = _a.onDrag;\n // If we didn't successfully receive the gesture lock, early return.\n if (!dragPropagation && !_this.openGlobalLock)\n return;\n var offset = info.offset;\n // Attempt to detect drag direction if directionLock is true\n if (dragDirectionLock && _this.currentDirection === null) {\n _this.currentDirection = getCurrentDirection(offset);\n // If we've successfully set a direction, notify listener\n if (_this.currentDirection !== null) {\n onDirectionLock === null || onDirectionLock === void 0 ? void 0 : onDirectionLock(_this.currentDirection);\n }\n return;\n }\n // Update each point with the latest position\n _this.updateAxis(\"x\", info.point, offset);\n _this.updateAxis(\"y\", info.point, offset);\n /**\n * Ideally we would leave the renderer to fire naturally at the end of\n * this frame but if the element is about to change layout as the result\n * of a re-render we want to ensure the browser can read the latest\n * bounding box to ensure the pointer and element don't fall out of sync.\n */\n _this.visualElement.syncRender();\n /**\n * This must fire after the syncRender call as it might trigger a state\n * change which itself might trigger a layout update.\n */\n onDrag === null || onDrag === void 0 ? void 0 : onDrag(event, info);\n };\n var onSessionEnd = function (event, info) {\n return _this.stop(event, info);\n };\n this.panSession = new PanSession(originEvent, {\n onSessionStart: onSessionStart,\n onStart: onStart,\n onMove: onMove,\n onSessionEnd: onSessionEnd,\n }, { transformPagePoint: this.visualElement.getTransformPagePoint() });\n };\n VisualElementDragControls.prototype.stop = function (event, info) {\n var isDragging = this.isDragging;\n this.cancel();\n if (!isDragging)\n return;\n var velocity = info.velocity;\n this.startAnimation(velocity);\n var onDragEnd = this.getProps().onDragEnd;\n onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(event, info);\n };\n VisualElementDragControls.prototype.cancel = function () {\n var _a, _b;\n this.isDragging = false;\n if (this.visualElement.projection) {\n this.visualElement.projection.isAnimationBlocked = false;\n }\n (_a = this.panSession) === null || _a === void 0 ? void 0 : _a.end();\n this.panSession = undefined;\n var dragPropagation = this.getProps().dragPropagation;\n if (!dragPropagation && this.openGlobalLock) {\n this.openGlobalLock();\n this.openGlobalLock = null;\n }\n (_b = this.visualElement.animationState) === null || _b === void 0 ? void 0 : _b.setActive(AnimationType.Drag, false);\n };\n VisualElementDragControls.prototype.updateAxis = function (axis, _point, offset) {\n var drag = this.getProps().drag;\n // If we're not dragging this axis, do an early return.\n if (!offset || !shouldDrag(axis, drag, this.currentDirection))\n return;\n var axisValue = this.getAxisMotionValue(axis);\n var next = this.originPoint[axis] + offset[axis];\n // Apply constraints\n if (this.constraints && this.constraints[axis]) {\n next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n }\n axisValue.set(next);\n };\n VisualElementDragControls.prototype.resolveConstraints = function () {\n var _this = this;\n var _a = this.getProps(), dragConstraints = _a.dragConstraints, dragElastic = _a.dragElastic;\n var layout = (this.visualElement.projection || {}).layout;\n var prevConstraints = this.constraints;\n if (dragConstraints && isRefObject(dragConstraints)) {\n if (!this.constraints) {\n this.constraints = this.resolveRefConstraints();\n }\n }\n else {\n if (dragConstraints && layout) {\n this.constraints = calcRelativeConstraints(layout.actual, dragConstraints);\n }\n else {\n this.constraints = false;\n }\n }\n this.elastic = resolveDragElastic(dragElastic);\n /**\n * If we're outputting to external MotionValues, we want to rebase the measured constraints\n * from viewport-relative to component-relative.\n */\n if (prevConstraints !== this.constraints &&\n layout &&\n this.constraints &&\n !this.hasMutatedConstraints) {\n eachAxis(function (axis) {\n if (_this.getAxisMotionValue(axis)) {\n _this.constraints[axis] = rebaseAxisConstraints(layout.actual[axis], _this.constraints[axis]);\n }\n });\n }\n };\n VisualElementDragControls.prototype.resolveRefConstraints = function () {\n var _a = this.getProps(), constraints = _a.dragConstraints, onMeasureDragConstraints = _a.onMeasureDragConstraints;\n if (!constraints || !isRefObject(constraints))\n return false;\n var constraintsElement = constraints.current;\n invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n var projection = this.visualElement.projection;\n // TODO\n if (!projection || !projection.layout)\n return false;\n var constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n var measuredConstraints = calcViewportConstraints(projection.layout.actual, constraintsBox);\n /**\n * If there's an onMeasureDragConstraints listener we call it and\n * if different constraints are returned, set constraints to that\n */\n if (onMeasureDragConstraints) {\n var userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n this.hasMutatedConstraints = !!userConstraints;\n if (userConstraints) {\n measuredConstraints = convertBoundingBoxToBox(userConstraints);\n }\n }\n return measuredConstraints;\n };\n VisualElementDragControls.prototype.startAnimation = function (velocity) {\n var _this = this;\n var _a = this.getProps(), drag = _a.drag, dragMomentum = _a.dragMomentum, dragElastic = _a.dragElastic, dragTransition = _a.dragTransition, dragSnapToOrigin = _a.dragSnapToOrigin, onDragTransitionEnd = _a.onDragTransitionEnd;\n var constraints = this.constraints || {};\n var momentumAnimations = eachAxis(function (axis) {\n var _a;\n if (!shouldDrag(axis, drag, _this.currentDirection)) {\n return;\n }\n var transition = (_a = constraints === null || constraints === void 0 ? void 0 : constraints[axis]) !== null && _a !== void 0 ? _a : {};\n if (dragSnapToOrigin)\n transition = { min: 0, max: 0 };\n /**\n * Overdamp the boundary spring if `dragElastic` is disabled. There's still a frame\n * of spring animations so we should look into adding a disable spring option to `inertia`.\n * We could do something here where we affect the `bounceStiffness` and `bounceDamping`\n * using the value of `dragElastic`.\n */\n var bounceStiffness = dragElastic ? 200 : 1000000;\n var bounceDamping = dragElastic ? 40 : 10000000;\n var inertia = __assign(__assign({ type: \"inertia\", velocity: dragMomentum ? velocity[axis] : 0, bounceStiffness: bounceStiffness, bounceDamping: bounceDamping, timeConstant: 750, restDelta: 1, restSpeed: 10 }, dragTransition), transition);\n // If we're not animating on an externally-provided `MotionValue` we can use the\n // component's animation controls which will handle interactions with whileHover (etc),\n // otherwise we just have to animate the `MotionValue` itself.\n return _this.startAxisValueAnimation(axis, inertia);\n });\n // Run all animations and then resolve the new drag constraints.\n return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n };\n VisualElementDragControls.prototype.startAxisValueAnimation = function (axis, transition) {\n var axisValue = this.getAxisMotionValue(axis);\n return startAnimation(axis, axisValue, 0, transition);\n };\n VisualElementDragControls.prototype.stopAnimation = function () {\n var _this = this;\n eachAxis(function (axis) { return _this.getAxisMotionValue(axis).stop(); });\n };\n /**\n * Drag works differently depending on which props are provided.\n *\n * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n * - Otherwise, we apply the delta to the x/y motion values.\n */\n VisualElementDragControls.prototype.getAxisMotionValue = function (axis) {\n var _a, _b;\n var dragKey = \"_drag\" + axis.toUpperCase();\n var externalMotionValue = this.visualElement.getProps()[dragKey];\n return externalMotionValue\n ? externalMotionValue\n : this.visualElement.getValue(axis, (_b = (_a = this.visualElement.getProps().initial) === null || _a === void 0 ? void 0 : _a[axis]) !== null && _b !== void 0 ? _b : 0);\n };\n VisualElementDragControls.prototype.snapToCursor = function (point) {\n var _this = this;\n eachAxis(function (axis) {\n var drag = _this.getProps().drag;\n // If we're not dragging this axis, do an early return.\n if (!shouldDrag(axis, drag, _this.currentDirection))\n return;\n var projection = _this.visualElement.projection;\n var axisValue = _this.getAxisMotionValue(axis);\n if (projection && projection.layout) {\n var _a = projection.layout.actual[axis], min = _a.min, max = _a.max;\n axisValue.set(point[axis] - mix(min, max, 0.5));\n }\n });\n };\n /**\n * When the viewport resizes we want to check if the measured constraints\n * have changed and, if so, reposition the element within those new constraints\n * relative to where it was before the resize.\n */\n VisualElementDragControls.prototype.scalePositionWithinConstraints = function () {\n var _this = this;\n var _a;\n var _b = this.getProps(), drag = _b.drag, dragConstraints = _b.dragConstraints;\n var projection = this.visualElement.projection;\n if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n return;\n /**\n * Stop current animations as there can be visual glitching if we try to do\n * this mid-animation\n */\n this.stopAnimation();\n /**\n * Record the relative position of the dragged element relative to the\n * constraints box and save as a progress value.\n */\n var boxProgress = { x: 0, y: 0 };\n eachAxis(function (axis) {\n var axisValue = _this.getAxisMotionValue(axis);\n if (axisValue) {\n var latest = axisValue.get();\n boxProgress[axis] = calcOrigin({ min: latest, max: latest }, _this.constraints[axis]);\n }\n });\n /**\n * Update the layout of this element and resolve the latest drag constraints\n */\n var transformTemplate = this.visualElement.getProps().transformTemplate;\n this.visualElement.getInstance().style.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n (_a = projection.root) === null || _a === void 0 ? void 0 : _a.updateScroll();\n projection.updateLayout();\n this.resolveConstraints();\n /**\n * For each axis, calculate the current progress of the layout axis\n * within the new constraints.\n */\n eachAxis(function (axis) {\n if (!shouldDrag(axis, drag, null))\n return;\n /**\n * Calculate a new transform based on the previous box progress\n */\n var axisValue = _this.getAxisMotionValue(axis);\n var _a = _this.constraints[axis], min = _a.min, max = _a.max;\n axisValue.set(mix(min, max, boxProgress[axis]));\n });\n };\n VisualElementDragControls.prototype.addListeners = function () {\n var _this = this;\n var _a;\n elementDragControls.set(this.visualElement, this);\n var element = this.visualElement.getInstance();\n /**\n * Attach a pointerdown event listener on this DOM element to initiate drag tracking.\n */\n var stopPointerListener = addPointerEvent(element, \"pointerdown\", function (event) {\n var _a = _this.getProps(), drag = _a.drag, _b = _a.dragListener, dragListener = _b === void 0 ? true : _b;\n drag && dragListener && _this.start(event);\n });\n var measureDragConstraints = function () {\n var dragConstraints = _this.getProps().dragConstraints;\n if (isRefObject(dragConstraints)) {\n _this.constraints = _this.resolveRefConstraints();\n }\n };\n var projection = this.visualElement.projection;\n var stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n if (projection && !projection.layout) {\n (_a = projection.root) === null || _a === void 0 ? void 0 : _a.updateScroll();\n projection.updateLayout();\n }\n measureDragConstraints();\n /**\n * Attach a window resize listener to scale the draggable target within its defined\n * constraints as the window resizes.\n */\n var stopResizeListener = addDomEvent(window, \"resize\", function () {\n return _this.scalePositionWithinConstraints();\n });\n /**\n * If the element's layout changes, calculate the delta and apply that to\n * the drag gesture's origin point.\n */\n projection.addEventListener(\"didUpdate\", (function (_a) {\n var delta = _a.delta, hasLayoutChanged = _a.hasLayoutChanged;\n if (_this.isDragging && hasLayoutChanged) {\n eachAxis(function (axis) {\n var motionValue = _this.getAxisMotionValue(axis);\n if (!motionValue)\n return;\n _this.originPoint[axis] += delta[axis].translate;\n motionValue.set(motionValue.get() + delta[axis].translate);\n });\n _this.visualElement.syncRender();\n }\n }));\n return function () {\n stopResizeListener();\n stopPointerListener();\n stopMeasureLayoutListener();\n };\n };\n VisualElementDragControls.prototype.getProps = function () {\n var props = this.visualElement.getProps();\n var _a = props.drag, drag = _a === void 0 ? false : _a, _b = props.dragDirectionLock, dragDirectionLock = _b === void 0 ? false : _b, _c = props.dragPropagation, dragPropagation = _c === void 0 ? false : _c, _d = props.dragConstraints, dragConstraints = _d === void 0 ? false : _d, _e = props.dragElastic, dragElastic = _e === void 0 ? defaultElastic : _e, _f = props.dragMomentum, dragMomentum = _f === void 0 ? true : _f;\n return __assign(__assign({}, props), { drag: drag, dragDirectionLock: dragDirectionLock, dragPropagation: dragPropagation, dragConstraints: dragConstraints, dragElastic: dragElastic, dragMomentum: dragMomentum });\n };\n return VisualElementDragControls;\n}());\nfunction shouldDrag(direction, drag, currentDirection) {\n return ((drag === true || drag === direction) &&\n (currentDirection === null || currentDirection === direction));\n}\n/**\n * Based on an x/y offset determine the current drag direction. If both axis' offsets are lower\n * than the provided threshold, return `null`.\n *\n * @param offset - The x/y offset from origin.\n * @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction.\n */\nfunction getCurrentDirection(offset, lockThreshold) {\n if (lockThreshold === void 0) { lockThreshold = 10; }\n var direction = null;\n if (Math.abs(offset.y) > lockThreshold) {\n direction = \"y\";\n }\n else if (Math.abs(offset.x) > lockThreshold) {\n direction = \"x\";\n }\n return direction;\n}\n\nexport { VisualElementDragControls, elementDragControls };\n","var createAxisDelta = function () { return ({\n translate: 0,\n scale: 1,\n origin: 0,\n originPoint: 0,\n}); };\nvar createDelta = function () { return ({\n x: createAxisDelta(),\n y: createAxisDelta(),\n}); };\nvar createAxis = function () { return ({ min: 0, max: 0 }); };\nvar createBox = function () { return ({\n x: createAxis(),\n y: createAxis(),\n}); };\n\nexport { createAxis, createAxisDelta, createBox, createDelta };\n","import { useDrag } from '../../gestures/drag/use-drag.mjs';\nimport { usePanGesture } from '../../gestures/use-pan-gesture.mjs';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.mjs';\n\nvar drag = {\n pan: makeRenderlessComponent(usePanGesture),\n drag: makeRenderlessComponent(useDrag),\n};\n\nexport { drag };\n","import { useRef, useContext, useEffect } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { useUnmountEffect } from '../utils/use-unmount-effect.mjs';\nimport { usePointerEvent } from '../events/use-pointer-event.mjs';\nimport { PanSession } from './PanSession.mjs';\n\n/**\n *\n * @param handlers -\n * @param ref -\n *\n * @privateRemarks\n * Currently this sets new pan gesture functions every render. The memo route has been explored\n * in the past but ultimately we're still creating new functions every render. An optimisation\n * to explore is creating the pan gestures and loading them into a `ref`.\n *\n * @internal\n */\nfunction usePanGesture(_a) {\n var onPan = _a.onPan, onPanStart = _a.onPanStart, onPanEnd = _a.onPanEnd, onPanSessionStart = _a.onPanSessionStart, visualElement = _a.visualElement;\n var hasPanEvents = onPan || onPanStart || onPanEnd || onPanSessionStart;\n var panSession = useRef(null);\n var transformPagePoint = useContext(MotionConfigContext).transformPagePoint;\n var handlers = {\n onSessionStart: onPanSessionStart,\n onStart: onPanStart,\n onMove: onPan,\n onEnd: function (event, info) {\n panSession.current = null;\n onPanEnd && onPanEnd(event, info);\n },\n };\n useEffect(function () {\n if (panSession.current !== null) {\n panSession.current.updateHandlers(handlers);\n }\n });\n function onPointerDown(event) {\n panSession.current = new PanSession(event, handlers, {\n transformPagePoint: transformPagePoint,\n });\n }\n usePointerEvent(visualElement, \"pointerdown\", hasPanEvents && onPointerDown);\n useUnmountEffect(function () { return panSession.current && panSession.current.end(); });\n}\n\nexport { usePanGesture };\n","import { useEffect } from 'react';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\n\n/**\n * A hook that allows an element to be dragged.\n *\n * @internal\n */\nfunction useDrag(props) {\n var groupDragControls = props.dragControls, visualElement = props.visualElement;\n var dragControls = useConstant(function () { return new VisualElementDragControls(visualElement); });\n // If we've been provided a DragControls for manual control over the drag gesture,\n // subscribe this component to it on mount.\n useEffect(function () { return groupDragControls && groupDragControls.subscribe(dragControls); }, [dragControls, groupDragControls]);\n // Apply the event listeners to the element\n useEffect(function () { return dragControls.addListeners(); }, [dragControls]);\n}\n\nexport { useDrag };\n","import { px } from 'style-value-types';\n\nfunction pixelsToPercent(pixels, axis) {\n if (axis.max === axis.min)\n return 0;\n return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nvar correctBorderRadius = {\n correct: function (latest, node) {\n if (!node.target)\n return latest;\n /**\n * If latest is a string, if it's a percentage we can return immediately as it's\n * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n */\n if (typeof latest === \"string\") {\n if (px.test(latest)) {\n latest = parseFloat(latest);\n }\n else {\n return latest;\n }\n }\n /**\n * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n * pixel value as a percentage of each axis\n */\n var x = pixelsToPercent(latest, node.target.x);\n var y = pixelsToPercent(latest, node.target.y);\n return \"\".concat(x, \"% \").concat(y, \"%\");\n },\n};\n\nexport { correctBorderRadius, pixelsToPercent };\n","import { mix } from 'popmotion';\nimport { complex } from 'style-value-types';\nimport { cssVariableRegex } from '../../render/dom/utils/css-variables-conversion.mjs';\n\nvar varToken = \"_$css\";\nvar correctBoxShadow = {\n correct: function (latest, _a) {\n var treeScale = _a.treeScale, projectionDelta = _a.projectionDelta;\n var original = latest;\n /**\n * We need to first strip and store CSS variables from the string.\n */\n var containsCSSVariables = latest.includes(\"var(\");\n var cssVariables = [];\n if (containsCSSVariables) {\n latest = latest.replace(cssVariableRegex, function (match) {\n cssVariables.push(match);\n return varToken;\n });\n }\n var shadow = complex.parse(latest);\n // TODO: Doesn't support multiple shadows\n if (shadow.length > 5)\n return original;\n var template = complex.createTransformer(latest);\n var offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n // Calculate the overall context scale\n var xScale = projectionDelta.x.scale * treeScale.x;\n var yScale = projectionDelta.y.scale * treeScale.y;\n shadow[0 + offset] /= xScale;\n shadow[1 + offset] /= yScale;\n /**\n * Ideally we'd correct x and y scales individually, but because blur and\n * spread apply to both we have to take a scale average and apply that instead.\n * We could potentially improve the outcome of this by incorporating the ratio between\n * the two scales.\n */\n var averageScale = mix(xScale, yScale, 0.5);\n // Blur\n if (typeof shadow[2 + offset] === \"number\")\n shadow[2 + offset] /= averageScale;\n // Spread\n if (typeof shadow[3 + offset] === \"number\")\n shadow[3 + offset] /= averageScale;\n var output = template(shadow);\n if (containsCSSVariables) {\n var i_1 = 0;\n output = output.replace(varToken, function () {\n var cssVariable = cssVariables[i_1];\n i_1++;\n return cssVariable;\n });\n }\n return output;\n },\n};\n\nexport { correctBoxShadow };\n","import { __extends, __assign, __read } from 'tslib';\nimport sync from 'framesync';\nimport React__default, { useContext } from 'react';\nimport { usePresence } from '../../../components/AnimatePresence/use-presence.mjs';\nimport { LayoutGroupContext } from '../../../context/LayoutGroupContext.mjs';\nimport { SwitchLayoutGroupContext } from '../../../context/SwitchLayoutGroupContext.mjs';\nimport { globalProjectionState } from '../../../projection/node/state.mjs';\nimport { correctBorderRadius } from '../../../projection/styles/scale-border-radius.mjs';\nimport { correctBoxShadow } from '../../../projection/styles/scale-box-shadow.mjs';\nimport { addScaleCorrector } from '../../../projection/styles/scale-correction.mjs';\n\nvar MeasureLayoutWithContext = /** @class */ (function (_super) {\n __extends(MeasureLayoutWithContext, _super);\n function MeasureLayoutWithContext() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * This only mounts projection nodes for components that\n * need measuring, we might want to do it for all components\n * in order to incorporate transforms\n */\n MeasureLayoutWithContext.prototype.componentDidMount = function () {\n var _this = this;\n var _a = this.props, visualElement = _a.visualElement, layoutGroup = _a.layoutGroup, switchLayoutGroup = _a.switchLayoutGroup, layoutId = _a.layoutId;\n var projection = visualElement.projection;\n addScaleCorrector(defaultScaleCorrectors);\n if (projection) {\n if (layoutGroup === null || layoutGroup === void 0 ? void 0 : layoutGroup.group)\n layoutGroup.group.add(projection);\n if ((switchLayoutGroup === null || switchLayoutGroup === void 0 ? void 0 : switchLayoutGroup.register) && layoutId) {\n switchLayoutGroup.register(projection);\n }\n projection.root.didUpdate();\n projection.addEventListener(\"animationComplete\", function () {\n _this.safeToRemove();\n });\n projection.setOptions(__assign(__assign({}, projection.options), { onExitComplete: function () { return _this.safeToRemove(); } }));\n }\n globalProjectionState.hasEverUpdated = true;\n };\n MeasureLayoutWithContext.prototype.getSnapshotBeforeUpdate = function (prevProps) {\n var _this = this;\n var _a = this.props, layoutDependency = _a.layoutDependency, visualElement = _a.visualElement, drag = _a.drag, isPresent = _a.isPresent;\n var projection = visualElement.projection;\n if (!projection)\n return null;\n /**\n * TODO: We use this data in relegate to determine whether to\n * promote a previous element. There's no guarantee its presence data\n * will have updated by this point - if a bug like this arises it will\n * have to be that we markForRelegation and then find a new lead some other way,\n * perhaps in didUpdate\n */\n projection.isPresent = isPresent;\n if (drag ||\n prevProps.layoutDependency !== layoutDependency ||\n layoutDependency === undefined) {\n projection.willUpdate();\n }\n else {\n this.safeToRemove();\n }\n if (prevProps.isPresent !== isPresent) {\n if (isPresent) {\n projection.promote();\n }\n else if (!projection.relegate()) {\n /**\n * If there's another stack member taking over from this one,\n * it's in charge of the exit animation and therefore should\n * be in charge of the safe to remove. Otherwise we call it here.\n */\n sync.postRender(function () {\n var _a;\n if (!((_a = projection.getStack()) === null || _a === void 0 ? void 0 : _a.members.length)) {\n _this.safeToRemove();\n }\n });\n }\n }\n return null;\n };\n MeasureLayoutWithContext.prototype.componentDidUpdate = function () {\n var projection = this.props.visualElement.projection;\n if (projection) {\n projection.root.didUpdate();\n if (!projection.currentAnimation && projection.isLead()) {\n this.safeToRemove();\n }\n }\n };\n MeasureLayoutWithContext.prototype.componentWillUnmount = function () {\n var _a = this.props, visualElement = _a.visualElement, layoutGroup = _a.layoutGroup, promoteContext = _a.switchLayoutGroup;\n var projection = visualElement.projection;\n if (projection) {\n projection.scheduleCheckAfterUnmount();\n if (layoutGroup === null || layoutGroup === void 0 ? void 0 : layoutGroup.group)\n layoutGroup.group.remove(projection);\n if (promoteContext === null || promoteContext === void 0 ? void 0 : promoteContext.deregister)\n promoteContext.deregister(projection);\n }\n };\n MeasureLayoutWithContext.prototype.safeToRemove = function () {\n var safeToRemove = this.props.safeToRemove;\n safeToRemove === null || safeToRemove === void 0 ? void 0 : safeToRemove();\n };\n MeasureLayoutWithContext.prototype.render = function () {\n return null;\n };\n return MeasureLayoutWithContext;\n}(React__default.Component));\nfunction MeasureLayout(props) {\n var _a = __read(usePresence(), 2), isPresent = _a[0], safeToRemove = _a[1];\n var layoutGroup = useContext(LayoutGroupContext);\n return (React__default.createElement(MeasureLayoutWithContext, __assign({}, props, { layoutGroup: layoutGroup, switchLayoutGroup: useContext(SwitchLayoutGroupContext), isPresent: isPresent, safeToRemove: safeToRemove })));\n}\nvar defaultScaleCorrectors = {\n borderRadius: __assign(__assign({}, correctBorderRadius), { applyTo: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n ] }),\n borderTopLeftRadius: correctBorderRadius,\n borderTopRightRadius: correctBorderRadius,\n borderBottomLeftRadius: correctBorderRadius,\n borderBottomRightRadius: correctBorderRadius,\n boxShadow: correctBoxShadow,\n};\n\nexport { MeasureLayout };\n","import { MeasureLayout } from './MeasureLayout.mjs';\n\nvar layoutFeatures = {\n measureLayout: MeasureLayout,\n};\n\nexport { layoutFeatures };\n","import { mix, progress, linear, circOut } from 'popmotion';\nimport { px, percent } from 'style-value-types';\n\nvar borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nvar numBorders = borders.length;\nvar asNumber = function (value) {\n return typeof value === \"string\" ? parseFloat(value) : value;\n};\nvar isPx = function (value) {\n return typeof value === \"number\" || px.test(value);\n};\nfunction mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) {\n var _a, _b, _c, _d;\n if (shouldCrossfadeOpacity) {\n target.opacity = mix(0, \n // (follow?.opacity as number) ?? 0,\n // TODO Reinstate this if only child\n (_a = lead.opacity) !== null && _a !== void 0 ? _a : 1, easeCrossfadeIn(progress));\n target.opacityExit = mix((_b = follow.opacity) !== null && _b !== void 0 ? _b : 1, 0, easeCrossfadeOut(progress));\n }\n else if (isOnlyMember) {\n target.opacity = mix((_c = follow.opacity) !== null && _c !== void 0 ? _c : 1, (_d = lead.opacity) !== null && _d !== void 0 ? _d : 1, progress);\n }\n /**\n * Mix border radius\n */\n for (var i = 0; i < numBorders; i++) {\n var borderLabel = \"border\".concat(borders[i], \"Radius\");\n var followRadius = getRadius(follow, borderLabel);\n var leadRadius = getRadius(lead, borderLabel);\n if (followRadius === undefined && leadRadius === undefined)\n continue;\n followRadius || (followRadius = 0);\n leadRadius || (leadRadius = 0);\n var canMix = followRadius === 0 ||\n leadRadius === 0 ||\n isPx(followRadius) === isPx(leadRadius);\n if (canMix) {\n target[borderLabel] = Math.max(mix(asNumber(followRadius), asNumber(leadRadius), progress), 0);\n if (percent.test(leadRadius) || percent.test(followRadius)) {\n target[borderLabel] += \"%\";\n }\n }\n else {\n target[borderLabel] = leadRadius;\n }\n }\n /**\n * Mix rotation\n */\n if (follow.rotate || lead.rotate) {\n target.rotate = mix(follow.rotate || 0, lead.rotate || 0, progress);\n }\n}\nfunction getRadius(values, radiusName) {\n var _a;\n return (_a = values[radiusName]) !== null && _a !== void 0 ? _a : values.borderRadius;\n}\n// /**\n// * We only want to mix the background color if there's a follow element\n// * that we're not crossfading opacity between. For instance with switch\n// * AnimateSharedLayout animations, this helps the illusion of a continuous\n// * element being animated but also cuts down on the number of paints triggered\n// * for elements where opacity is doing that work for us.\n// */\n// if (\n// !hasFollowElement &&\n// latestLeadValues.backgroundColor &&\n// latestFollowValues.backgroundColor\n// ) {\n// /**\n// * This isn't ideal performance-wise as mixColor is creating a new function every frame.\n// * We could probably create a mixer that runs at the start of the animation but\n// * the idea behind the crossfader is that it runs dynamically between two potentially\n// * changing targets (ie opacity or borderRadius may be animating independently via variants)\n// */\n// leadState.backgroundColor = followState.backgroundColor = mixColor(\n// latestFollowValues.backgroundColor as string,\n// latestLeadValues.backgroundColor as string\n// )(p)\n// }\nvar easeCrossfadeIn = compress(0, 0.5, circOut);\nvar easeCrossfadeOut = compress(0.5, 0.95, linear);\nfunction compress(min, max, easing) {\n return function (p) {\n // Could replace ifs with clamp\n if (p < min)\n return 0;\n if (p > max)\n return 1;\n return easing(progress(min, max, p));\n };\n}\n\nexport { mixValues };\n","/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisInto(axis, originAxis) {\n axis.min = originAxis.min;\n axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyBoxInto(box, originBox) {\n copyAxisInto(box.x, originBox.x);\n copyAxisInto(box.y, originBox.y);\n}\n\nexport { copyAxisInto, copyBoxInto };\n","import { __read } from 'tslib';\nimport { mix } from 'popmotion';\nimport { percent } from 'style-value-types';\nimport { scalePoint } from './delta-apply.mjs';\n\n/**\n * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse\n */\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n point -= translate;\n point = scalePoint(point, 1 / scale, originPoint);\n if (boxScale !== undefined) {\n point = scalePoint(point, 1 / boxScale, originPoint);\n }\n return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\nfunction removeAxisDelta(axis, translate, scale, origin, boxScale, originAxis, sourceAxis) {\n if (translate === void 0) { translate = 0; }\n if (scale === void 0) { scale = 1; }\n if (origin === void 0) { origin = 0.5; }\n if (originAxis === void 0) { originAxis = axis; }\n if (sourceAxis === void 0) { sourceAxis = axis; }\n if (percent.test(translate)) {\n translate = parseFloat(translate);\n var relativeProgress = mix(sourceAxis.min, sourceAxis.max, translate / 100);\n translate = relativeProgress - sourceAxis.min;\n }\n if (typeof translate !== \"number\")\n return;\n var originPoint = mix(originAxis.min, originAxis.max, origin);\n if (axis === originAxis)\n originPoint -= translate;\n axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeAxisTransforms(axis, transforms, _a, origin, sourceAxis) {\n var _b = __read(_a, 3), key = _b[0], scaleKey = _b[1], originKey = _b[2];\n removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nvar xKeys = [\"x\", \"scaleX\", \"originX\"];\nvar yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n removeAxisTransforms(box.x, transforms, xKeys, originBox === null || originBox === void 0 ? void 0 : originBox.x, sourceBox === null || sourceBox === void 0 ? void 0 : sourceBox.x);\n removeAxisTransforms(box.y, transforms, yKeys, originBox === null || originBox === void 0 ? void 0 : originBox.y, sourceBox === null || sourceBox === void 0 ? void 0 : sourceBox.y);\n}\n\nexport { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta };\n","function isAxisDeltaZero(delta) {\n return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction boxEquals(a, b) {\n return (a.x.min === b.x.min &&\n a.x.max === b.x.max &&\n a.y.min === b.y.min &&\n a.y.max === b.y.max);\n}\n\nexport { boxEquals, isDeltaZero };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\n\nvar NodeStack = /** @class */ (function () {\n function NodeStack() {\n this.members = [];\n }\n NodeStack.prototype.add = function (node) {\n addUniqueItem(this.members, node);\n node.scheduleRender();\n };\n NodeStack.prototype.remove = function (node) {\n removeItem(this.members, node);\n if (node === this.prevLead) {\n this.prevLead = undefined;\n }\n if (node === this.lead) {\n var prevLead = this.members[this.members.length - 1];\n if (prevLead) {\n this.promote(prevLead);\n }\n }\n };\n NodeStack.prototype.relegate = function (node) {\n var indexOfNode = this.members.findIndex(function (member) { return node === member; });\n if (indexOfNode === 0)\n return false;\n /**\n * Find the next projection node that is present\n */\n var prevLead;\n for (var i = indexOfNode; i >= 0; i--) {\n var member = this.members[i];\n if (member.isPresent !== false) {\n prevLead = member;\n break;\n }\n }\n if (prevLead) {\n this.promote(prevLead);\n return true;\n }\n else {\n return false;\n }\n };\n NodeStack.prototype.promote = function (node, preserveFollowOpacity) {\n var _a;\n var prevLead = this.lead;\n if (node === prevLead)\n return;\n this.prevLead = prevLead;\n this.lead = node;\n node.show();\n if (prevLead) {\n prevLead.instance && prevLead.scheduleRender();\n node.scheduleRender();\n node.resumeFrom = prevLead;\n if (preserveFollowOpacity) {\n node.resumeFrom.preserveOpacity = true;\n }\n if (prevLead.snapshot) {\n node.snapshot = prevLead.snapshot;\n node.snapshot.latestValues =\n prevLead.animationValues || prevLead.latestValues;\n node.snapshot.isShared = true;\n }\n if ((_a = node.root) === null || _a === void 0 ? void 0 : _a.isUpdating) {\n node.isLayoutDirty = true;\n }\n var crossfade = node.options.crossfade;\n if (crossfade === false) {\n prevLead.hide();\n }\n /**\n * TODO:\n * - Test border radius when previous node was deleted\n * - boxShadow mixing\n * - Shared between element A in scrolled container and element B (scroll stays the same or changes)\n * - Shared between element A in transformed container and element B (transform stays the same or changes)\n * - Shared between element A in scrolled page and element B (scroll stays the same or changes)\n * ---\n * - Crossfade opacity of root nodes\n * - layoutId changes after animation\n * - layoutId changes mid animation\n */\n }\n };\n NodeStack.prototype.exitAnimationComplete = function () {\n this.members.forEach(function (node) {\n var _a, _b, _c, _d, _e;\n (_b = (_a = node.options).onExitComplete) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_e = (_c = node.resumingFrom) === null || _c === void 0 ? void 0 : (_d = _c.options).onExitComplete) === null || _e === void 0 ? void 0 : _e.call(_d);\n });\n };\n NodeStack.prototype.scheduleRender = function () {\n this.members.forEach(function (node) {\n node.instance && node.scheduleRender(false);\n });\n };\n /**\n * Clear any leads that have been removed this render to prevent them from being\n * used in future animations and to prevent memory leaks\n */\n NodeStack.prototype.removeLeadSnapshot = function () {\n if (this.lead && this.lead.snapshot) {\n this.lead.snapshot = undefined;\n }\n };\n return NodeStack;\n}());\n\nexport { NodeStack };\n","var identityProjection = \"translate3d(0px, 0px, 0) scale(1, 1) scale(1, 1)\";\nfunction buildProjectionTransform(delta, treeScale, latestTransform) {\n /**\n * The translations we use to calculate are always relative to the viewport coordinate space.\n * But when we apply scales, we also scale the coordinate space of an element and its children.\n * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n */\n var xTranslate = delta.x.translate / treeScale.x;\n var yTranslate = delta.y.translate / treeScale.y;\n var transform = \"translate3d(\".concat(xTranslate, \"px, \").concat(yTranslate, \"px, 0) \");\n /**\n * Apply scale correction for the tree transform.\n * This will apply scale to the screen-orientated axes.\n */\n transform += \"scale(\".concat(1 / treeScale.x, \", \").concat(1 / treeScale.y, \") \");\n if (latestTransform) {\n var rotate = latestTransform.rotate, rotateX = latestTransform.rotateX, rotateY = latestTransform.rotateY;\n if (rotate)\n transform += \"rotate(\".concat(rotate, \"deg) \");\n if (rotateX)\n transform += \"rotateX(\".concat(rotateX, \"deg) \");\n if (rotateY)\n transform += \"rotateY(\".concat(rotateY, \"deg) \");\n }\n /**\n * Apply scale to match the size of the element to the size we want it.\n * This will apply scale to the element-orientated axes.\n */\n var elementScaleX = delta.x.scale * treeScale.x;\n var elementScaleY = delta.y.scale * treeScale.y;\n transform += \"scale(\".concat(elementScaleX, \", \").concat(elementScaleY, \")\");\n return transform === identityProjection ? \"none\" : transform;\n}\n\nexport { buildProjectionTransform, identityProjection };\n","var compareByDepth = function (a, b) {\n return a.depth - b.depth;\n};\n\nexport { compareByDepth };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\nimport { compareByDepth } from './compare-by-depth.mjs';\n\nvar FlatTree = /** @class */ (function () {\n function FlatTree() {\n this.children = [];\n this.isDirty = false;\n }\n FlatTree.prototype.add = function (child) {\n addUniqueItem(this.children, child);\n this.isDirty = true;\n };\n FlatTree.prototype.remove = function (child) {\n removeItem(this.children, child);\n this.isDirty = true;\n };\n FlatTree.prototype.forEach = function (callback) {\n this.isDirty && this.children.sort(compareByDepth);\n this.isDirty = false;\n this.children.forEach(callback);\n };\n return FlatTree;\n}());\n\nexport { FlatTree };\n","import { __spreadArray, __read, __assign } from 'tslib';\nimport sync, { cancelSync, flushSync } from 'framesync';\nimport { mix } from 'popmotion';\nimport { animate } from '../../animation/animate.mjs';\nimport { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcRelativePosition, calcRelativeBox, calcBoxDelta, calcLength } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { createBox, createDelta } from '../geometry/models.mjs';\nimport { getValueTransition } from '../../animation/utils/transitions.mjs';\nimport { boxEquals, isDeltaZero } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { hasTransform, hasScale } from '../utils/has-transform.mjs';\nimport { transformAxes } from '../../render/html/utils/transform.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { globalProjectionState } from './state.mjs';\n\n/**\n * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1\n * which has a noticeable difference in spring animations\n */\nvar animationTarget = 1000;\nfunction createProjectionNode(_a) {\n var attachResizeListener = _a.attachResizeListener, defaultParent = _a.defaultParent, measureScroll = _a.measureScroll, checkIsScrollRoot = _a.checkIsScrollRoot, resetTransform = _a.resetTransform;\n return /** @class */ (function () {\n function ProjectionNode(id, latestValues, parent) {\n var _this = this;\n if (latestValues === void 0) { latestValues = {}; }\n if (parent === void 0) { parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent(); }\n /**\n * A Set containing all this component's children. This is used to iterate\n * through the children.\n *\n * TODO: This could be faster to iterate as a flat array stored on the root node.\n */\n this.children = new Set();\n /**\n * Options for the node. We use this to configure what kind of layout animations\n * we should perform (if any).\n */\n this.options = {};\n /**\n * We use this to detect when its safe to shut down part of a projection tree.\n * We have to keep projecting children for scale correction and relative projection\n * until all their parents stop performing layout animations.\n */\n this.isTreeAnimating = false;\n this.isAnimationBlocked = false;\n /**\n * Flag to true if we think this layout has been changed. We can't always know this,\n * currently we set it to true every time a component renders, or if it has a layoutDependency\n * if that has changed between renders. Additionally, components can be grouped by LayoutGroup\n * and if one node is dirtied, they all are.\n */\n this.isLayoutDirty = false;\n /**\n * Block layout updates for instant layout transitions throughout the tree.\n */\n this.updateManuallyBlocked = false;\n this.updateBlockedByResize = false;\n /**\n * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate`\n * call.\n */\n this.isUpdating = false;\n /**\n * If this is an SVG element we currently disable projection transforms\n */\n this.isSVG = false;\n /**\n * Flag to true (during promotion) if a node doing an instant layout transition needs to reset\n * its projection styles.\n */\n this.needsReset = false;\n /**\n * Flags whether this node should have its transform reset prior to measuring.\n */\n this.shouldResetTransform = false;\n /**\n * An object representing the calculated contextual/accumulated/tree scale.\n * This will be used to scale calculcated projection transforms, as these are\n * calculated in screen-space but need to be scaled for elements to actually\n * make it to their calculated destinations.\n *\n * TODO: Lazy-init\n */\n this.treeScale = { x: 1, y: 1 };\n /**\n *\n */\n this.eventHandlers = new Map();\n // Note: Currently only running on root node\n this.potentialNodes = new Map();\n this.checkUpdateFailed = function () {\n if (_this.isUpdating) {\n _this.isUpdating = false;\n _this.clearAllSnapshots();\n }\n };\n this.updateProjection = function () {\n _this.nodes.forEach(resolveTargetDelta);\n _this.nodes.forEach(calcProjection);\n };\n this.hasProjected = false;\n this.isVisible = true;\n this.animationProgress = 0;\n /**\n * Shared layout\n */\n // TODO Only running on root node\n this.sharedNodes = new Map();\n this.id = id;\n this.latestValues = latestValues;\n this.root = parent ? parent.root || parent : this;\n this.path = parent ? __spreadArray(__spreadArray([], __read(parent.path), false), [parent], false) : [];\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n id && this.root.registerPotentialNode(id, this);\n for (var i = 0; i < this.path.length; i++) {\n this.path[i].shouldResetTransform = true;\n }\n if (this.root === this)\n this.nodes = new FlatTree();\n }\n ProjectionNode.prototype.addEventListener = function (name, handler) {\n if (!this.eventHandlers.has(name)) {\n this.eventHandlers.set(name, new SubscriptionManager());\n }\n return this.eventHandlers.get(name).add(handler);\n };\n ProjectionNode.prototype.notifyListeners = function (name) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var subscriptionManager = this.eventHandlers.get(name);\n subscriptionManager === null || subscriptionManager === void 0 ? void 0 : subscriptionManager.notify.apply(subscriptionManager, __spreadArray([], __read(args), false));\n };\n ProjectionNode.prototype.hasListeners = function (name) {\n return this.eventHandlers.has(name);\n };\n ProjectionNode.prototype.registerPotentialNode = function (id, node) {\n this.potentialNodes.set(id, node);\n };\n /**\n * Lifecycles\n */\n ProjectionNode.prototype.mount = function (instance, isLayoutDirty) {\n var _this = this;\n var _a;\n if (isLayoutDirty === void 0) { isLayoutDirty = false; }\n if (this.instance)\n return;\n this.isSVG =\n instance instanceof SVGElement && instance.tagName !== \"svg\";\n this.instance = instance;\n var _b = this.options, layoutId = _b.layoutId, layout = _b.layout, visualElement = _b.visualElement;\n if (visualElement && !visualElement.getInstance()) {\n visualElement.mount(instance);\n }\n this.root.nodes.add(this);\n (_a = this.parent) === null || _a === void 0 ? void 0 : _a.children.add(this);\n this.id && this.root.potentialNodes.delete(this.id);\n if (isLayoutDirty && (layout || layoutId)) {\n this.isLayoutDirty = true;\n }\n if (attachResizeListener) {\n var unblockTimeout_1;\n var resizeUnblockUpdate_1 = function () {\n return (_this.root.updateBlockedByResize = false);\n };\n attachResizeListener(instance, function () {\n _this.root.updateBlockedByResize = true;\n clearTimeout(unblockTimeout_1);\n unblockTimeout_1 = window.setTimeout(resizeUnblockUpdate_1, 250);\n if (globalProjectionState.hasAnimatedSinceResize) {\n globalProjectionState.hasAnimatedSinceResize = false;\n _this.nodes.forEach(finishAnimation);\n }\n });\n }\n if (layoutId) {\n this.root.registerSharedNode(layoutId, this);\n }\n // Only register the handler if it requires layout animation\n if (this.options.animate !== false &&\n visualElement &&\n (layoutId || layout)) {\n this.addEventListener(\"didUpdate\", function (_a) {\n var _b, _c, _d, _e, _f;\n var delta = _a.delta, hasLayoutChanged = _a.hasLayoutChanged, hasRelativeTargetChanged = _a.hasRelativeTargetChanged, newLayout = _a.layout;\n if (_this.isTreeAnimationBlocked()) {\n _this.target = undefined;\n _this.relativeTarget = undefined;\n return;\n }\n // TODO: Check here if an animation exists\n var layoutTransition = (_c = (_b = _this.options.transition) !== null && _b !== void 0 ? _b : visualElement.getDefaultTransition()) !== null && _c !== void 0 ? _c : defaultLayoutTransition;\n var _g = visualElement.getProps(), onLayoutAnimationStart = _g.onLayoutAnimationStart, onLayoutAnimationComplete = _g.onLayoutAnimationComplete;\n /**\n * The target layout of the element might stay the same,\n * but its position relative to its parent has changed.\n */\n var targetChanged = !_this.targetLayout ||\n !boxEquals(_this.targetLayout, newLayout) ||\n hasRelativeTargetChanged;\n /**\n * If the layout hasn't seemed to have changed, it might be that the\n * element is visually in the same place in the document but its position\n * relative to its parent has indeed changed. So here we check for that.\n */\n var hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n if (((_d = _this.resumeFrom) === null || _d === void 0 ? void 0 : _d.instance) ||\n hasOnlyRelativeTargetChanged ||\n (hasLayoutChanged &&\n (targetChanged || !_this.currentAnimation))) {\n if (_this.resumeFrom) {\n _this.resumingFrom = _this.resumeFrom;\n _this.resumingFrom.resumingFrom = undefined;\n }\n _this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n var animationOptions = __assign(__assign({}, getValueTransition(layoutTransition, \"layout\")), { onPlay: onLayoutAnimationStart, onComplete: onLayoutAnimationComplete });\n if (visualElement.shouldReduceMotion) {\n animationOptions.delay = 0;\n animationOptions.type = false;\n }\n _this.startAnimation(animationOptions);\n }\n else {\n /**\n * If the layout hasn't changed and we have an animation that hasn't started yet,\n * finish it immediately. Otherwise it will be animating from a location\n * that was probably never commited to screen and look like a jumpy box.\n */\n if (!hasLayoutChanged &&\n _this.animationProgress === 0) {\n _this.finishAnimation();\n }\n _this.isLead() && ((_f = (_e = _this.options).onExitComplete) === null || _f === void 0 ? void 0 : _f.call(_e));\n }\n _this.targetLayout = newLayout;\n });\n }\n };\n ProjectionNode.prototype.unmount = function () {\n var _a, _b;\n this.options.layoutId && this.willUpdate();\n this.root.nodes.remove(this);\n (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.remove(this);\n (_b = this.parent) === null || _b === void 0 ? void 0 : _b.children.delete(this);\n this.instance = undefined;\n cancelSync.preRender(this.updateProjection);\n };\n // only on the root\n ProjectionNode.prototype.blockUpdate = function () {\n this.updateManuallyBlocked = true;\n };\n ProjectionNode.prototype.unblockUpdate = function () {\n this.updateManuallyBlocked = false;\n };\n ProjectionNode.prototype.isUpdateBlocked = function () {\n return this.updateManuallyBlocked || this.updateBlockedByResize;\n };\n ProjectionNode.prototype.isTreeAnimationBlocked = function () {\n var _a;\n return (this.isAnimationBlocked ||\n ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isTreeAnimationBlocked()) ||\n false);\n };\n // Note: currently only running on root node\n ProjectionNode.prototype.startUpdate = function () {\n var _a;\n if (this.isUpdateBlocked())\n return;\n this.isUpdating = true;\n (_a = this.nodes) === null || _a === void 0 ? void 0 : _a.forEach(resetRotation);\n };\n ProjectionNode.prototype.willUpdate = function (shouldNotifyListeners) {\n var _a, _b, _c;\n if (shouldNotifyListeners === void 0) { shouldNotifyListeners = true; }\n if (this.root.isUpdateBlocked()) {\n (_b = (_a = this.options).onExitComplete) === null || _b === void 0 ? void 0 : _b.call(_a);\n return;\n }\n !this.root.isUpdating && this.root.startUpdate();\n if (this.isLayoutDirty)\n return;\n this.isLayoutDirty = true;\n for (var i = 0; i < this.path.length; i++) {\n var node = this.path[i];\n node.shouldResetTransform = true;\n /**\n * TODO: Check we haven't updated the scroll\n * since the last didUpdate\n */\n node.updateScroll();\n }\n var _d = this.options, layoutId = _d.layoutId, layout = _d.layout;\n if (layoutId === undefined && !layout)\n return;\n var transformTemplate = (_c = this.options.visualElement) === null || _c === void 0 ? void 0 : _c.getProps().transformTemplate;\n this.prevTransformTemplateValue = transformTemplate === null || transformTemplate === void 0 ? void 0 : transformTemplate(this.latestValues, \"\");\n this.updateSnapshot();\n shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n };\n // Note: Currently only running on root node\n ProjectionNode.prototype.didUpdate = function () {\n var updateWasBlocked = this.isUpdateBlocked();\n // When doing an instant transition, we skip the layout update,\n // but should still clean up the measurements so that the next\n // snapshot could be taken correctly.\n if (updateWasBlocked) {\n this.unblockUpdate();\n this.clearAllSnapshots();\n this.nodes.forEach(clearMeasurements);\n return;\n }\n if (!this.isUpdating)\n return;\n this.isUpdating = false;\n /**\n * Search for and mount newly-added projection elements.\n *\n * TODO: Every time a new component is rendered we could search up the tree for\n * the closest mounted node and query from there rather than document.\n */\n if (this.potentialNodes.size) {\n this.potentialNodes.forEach(mountNodeEarly);\n this.potentialNodes.clear();\n }\n /**\n * Write\n */\n this.nodes.forEach(resetTransformStyle);\n /**\n * Read ==================\n */\n // Update layout measurements of updated children\n this.nodes.forEach(updateLayout);\n /**\n * Write\n */\n // Notify listeners that the layout is updated\n this.nodes.forEach(notifyLayoutUpdate);\n this.clearAllSnapshots();\n // Flush any scheduled updates\n flushSync.update();\n flushSync.preRender();\n flushSync.render();\n };\n ProjectionNode.prototype.clearAllSnapshots = function () {\n this.nodes.forEach(clearSnapshot);\n this.sharedNodes.forEach(removeLeadSnapshots);\n };\n ProjectionNode.prototype.scheduleUpdateProjection = function () {\n sync.preRender(this.updateProjection, false, true);\n };\n ProjectionNode.prototype.scheduleCheckAfterUnmount = function () {\n var _this = this;\n /**\n * If the unmounting node is in a layoutGroup and did trigger a willUpdate,\n * we manually call didUpdate to give a chance to the siblings to animate.\n * Otherwise, cleanup all snapshots to prevents future nodes from reusing them.\n */\n sync.postRender(function () {\n if (_this.isLayoutDirty) {\n _this.root.didUpdate();\n }\n else {\n _this.root.checkUpdateFailed();\n }\n });\n };\n /**\n * Update measurements\n */\n ProjectionNode.prototype.updateSnapshot = function () {\n if (this.snapshot || !this.instance)\n return;\n var measured = this.measure();\n var layout = this.removeTransform(this.removeElementScroll(measured));\n roundBox(layout);\n this.snapshot = {\n measured: measured,\n layout: layout,\n latestValues: {},\n };\n };\n ProjectionNode.prototype.updateLayout = function () {\n var _a;\n if (!this.instance)\n return;\n // TODO: Incorporate into a forwarded scroll offset\n this.updateScroll();\n if (!(this.options.alwaysMeasureLayout && this.isLead()) &&\n !this.isLayoutDirty) {\n return;\n }\n /**\n * When a node is mounted, it simply resumes from the prevLead's\n * snapshot instead of taking a new one, but the ancestors scroll\n * might have updated while the prevLead is unmounted. We need to\n * update the scroll again to make sure the layout we measure is\n * up to date.\n */\n if (this.resumeFrom && !this.resumeFrom.instance) {\n for (var i = 0; i < this.path.length; i++) {\n var node = this.path[i];\n node.updateScroll();\n }\n }\n var measured = this.measure();\n roundBox(measured);\n var prevLayout = this.layout;\n this.layout = {\n measured: measured,\n actual: this.removeElementScroll(measured),\n };\n this.layoutCorrected = createBox();\n this.isLayoutDirty = false;\n this.projectionDelta = undefined;\n this.notifyListeners(\"measure\", this.layout.actual);\n (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.notifyLayoutMeasure(this.layout.actual, prevLayout === null || prevLayout === void 0 ? void 0 : prevLayout.actual);\n };\n ProjectionNode.prototype.updateScroll = function () {\n if (this.options.layoutScroll && this.instance) {\n this.isScrollRoot = checkIsScrollRoot(this.instance);\n this.scroll = measureScroll(this.instance);\n }\n };\n ProjectionNode.prototype.resetTransform = function () {\n var _a;\n if (!resetTransform)\n return;\n var isResetRequested = this.isLayoutDirty || this.shouldResetTransform;\n var hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n var transformTemplate = (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.getProps().transformTemplate;\n var transformTemplateValue = transformTemplate === null || transformTemplate === void 0 ? void 0 : transformTemplate(this.latestValues, \"\");\n var transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n if (isResetRequested &&\n (hasProjection ||\n hasTransform(this.latestValues) ||\n transformTemplateHasChanged)) {\n resetTransform(this.instance, transformTemplateValue);\n this.shouldResetTransform = false;\n this.scheduleRender();\n }\n };\n ProjectionNode.prototype.measure = function () {\n var visualElement = this.options.visualElement;\n if (!visualElement)\n return createBox();\n var box = visualElement.measureViewportBox();\n // Remove viewport scroll to give page-relative coordinates\n var scroll = this.root.scroll;\n if (scroll) {\n translateAxis(box.x, scroll.x);\n translateAxis(box.y, scroll.y);\n }\n return box;\n };\n ProjectionNode.prototype.removeElementScroll = function (box) {\n var boxWithoutScroll = createBox();\n copyBoxInto(boxWithoutScroll, box);\n /**\n * Performance TODO: Keep a cumulative scroll offset down the tree\n * rather than loop back up the path.\n */\n for (var i = 0; i < this.path.length; i++) {\n var node = this.path[i];\n var scroll_1 = node.scroll, options = node.options, isScrollRoot = node.isScrollRoot;\n if (node !== this.root && scroll_1 && options.layoutScroll) {\n /**\n * If this is a new scroll root, we want to remove all previous scrolls\n * from the viewport box.\n */\n if (isScrollRoot) {\n copyBoxInto(boxWithoutScroll, box);\n var rootScroll = this.root.scroll;\n /**\n * Undo the application of page scroll that was originally added\n * to the measured bounding box.\n */\n if (rootScroll) {\n translateAxis(boxWithoutScroll.x, -rootScroll.x);\n translateAxis(boxWithoutScroll.y, -rootScroll.y);\n }\n }\n translateAxis(boxWithoutScroll.x, scroll_1.x);\n translateAxis(boxWithoutScroll.y, scroll_1.y);\n }\n }\n return boxWithoutScroll;\n };\n ProjectionNode.prototype.applyTransform = function (box, transformOnly) {\n if (transformOnly === void 0) { transformOnly = false; }\n var withTransforms = createBox();\n copyBoxInto(withTransforms, box);\n for (var i = 0; i < this.path.length; i++) {\n var node = this.path[i];\n if (!transformOnly &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(withTransforms, {\n x: -node.scroll.x,\n y: -node.scroll.y,\n });\n }\n if (!hasTransform(node.latestValues))\n continue;\n transformBox(withTransforms, node.latestValues);\n }\n if (hasTransform(this.latestValues)) {\n transformBox(withTransforms, this.latestValues);\n }\n return withTransforms;\n };\n ProjectionNode.prototype.removeTransform = function (box) {\n var _a;\n var boxWithoutTransform = createBox();\n copyBoxInto(boxWithoutTransform, box);\n for (var i = 0; i < this.path.length; i++) {\n var node = this.path[i];\n if (!node.instance)\n continue;\n if (!hasTransform(node.latestValues))\n continue;\n hasScale(node.latestValues) && node.updateSnapshot();\n var sourceBox = createBox();\n var nodeBox = node.measure();\n copyBoxInto(sourceBox, nodeBox);\n removeBoxTransforms(boxWithoutTransform, node.latestValues, (_a = node.snapshot) === null || _a === void 0 ? void 0 : _a.layout, sourceBox);\n }\n if (hasTransform(this.latestValues)) {\n removeBoxTransforms(boxWithoutTransform, this.latestValues);\n }\n return boxWithoutTransform;\n };\n /**\n *\n */\n ProjectionNode.prototype.setTargetDelta = function (delta) {\n this.targetDelta = delta;\n this.root.scheduleUpdateProjection();\n };\n ProjectionNode.prototype.setOptions = function (options) {\n var _a;\n this.options = __assign(__assign(__assign({}, this.options), options), { crossfade: (_a = options.crossfade) !== null && _a !== void 0 ? _a : true });\n };\n ProjectionNode.prototype.clearMeasurements = function () {\n this.scroll = undefined;\n this.layout = undefined;\n this.snapshot = undefined;\n this.prevTransformTemplateValue = undefined;\n this.targetDelta = undefined;\n this.target = undefined;\n this.isLayoutDirty = false;\n };\n /**\n * Frame calculations\n */\n ProjectionNode.prototype.resolveTargetDelta = function () {\n var _a;\n var _b = this.options, layout = _b.layout, layoutId = _b.layoutId;\n /**\n * If we have no layout, we can't perform projection, so early return\n */\n if (!this.layout || !(layout || layoutId))\n return;\n /**\n * If we don't have a targetDelta but do have a layout, we can attempt to resolve\n * a relativeParent. This will allow a component to perform scale correction\n * even if no animation has started.\n */\n // TODO If this is unsuccessful this currently happens every frame\n if (!this.targetDelta && !this.relativeTarget) {\n // TODO: This is a semi-repetition of further down this function, make DRY\n this.relativeParent = this.getClosestProjectingParent();\n if (this.relativeParent && this.relativeParent.layout) {\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.layout.actual, this.relativeParent.layout.actual);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n }\n /**\n * If we have no relative target or no target delta our target isn't valid\n * for this frame.\n */\n if (!this.relativeTarget && !this.targetDelta)\n return;\n /**\n * Lazy-init target data structure\n */\n if (!this.target) {\n this.target = createBox();\n this.targetWithTransforms = createBox();\n }\n /**\n * If we've got a relative box for this component, resolve it into a target relative to the parent.\n */\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n ((_a = this.relativeParent) === null || _a === void 0 ? void 0 : _a.target)) {\n calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n /**\n * If we've only got a targetDelta, resolve it into a target\n */\n }\n else if (this.targetDelta) {\n if (Boolean(this.resumingFrom)) {\n // TODO: This is creating a new object every frame\n this.target = this.applyTransform(this.layout.actual);\n }\n else {\n copyBoxInto(this.target, this.layout.actual);\n }\n applyBoxDelta(this.target, this.targetDelta);\n }\n else {\n /**\n * If no target, use own layout as target\n */\n copyBoxInto(this.target, this.layout.actual);\n }\n /**\n * If we've been told to attempt to resolve a relative target, do so.\n */\n if (this.attemptToResolveRelativeTarget) {\n this.attemptToResolveRelativeTarget = false;\n this.relativeParent = this.getClosestProjectingParent();\n if (this.relativeParent &&\n Boolean(this.relativeParent.resumingFrom) ===\n Boolean(this.resumingFrom) &&\n !this.relativeParent.options.layoutScroll &&\n this.relativeParent.target) {\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.target, this.relativeParent.target);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n }\n };\n ProjectionNode.prototype.getClosestProjectingParent = function () {\n if (!this.parent || hasTransform(this.parent.latestValues))\n return undefined;\n if ((this.parent.relativeTarget || this.parent.targetDelta) &&\n this.parent.layout) {\n return this.parent;\n }\n else {\n return this.parent.getClosestProjectingParent();\n }\n };\n ProjectionNode.prototype.calcProjection = function () {\n var _a;\n var _b = this.options, layout = _b.layout, layoutId = _b.layoutId;\n /**\n * If this section of the tree isn't animating we can\n * delete our target sources for the following frame.\n */\n this.isTreeAnimating = Boolean(((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isTreeAnimating) ||\n this.currentAnimation ||\n this.pendingAnimation);\n if (!this.isTreeAnimating) {\n this.targetDelta = this.relativeTarget = undefined;\n }\n if (!this.layout || !(layout || layoutId))\n return;\n var lead = this.getLead();\n /**\n * Reset the corrected box with the latest values from box, as we're then going\n * to perform mutative operations on it.\n */\n copyBoxInto(this.layoutCorrected, this.layout.actual);\n /**\n * Apply all the parent deltas to this box to produce the corrected box. This\n * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n */\n applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, Boolean(this.resumingFrom) || this !== lead);\n var target = lead.target;\n if (!target)\n return;\n if (!this.projectionDelta) {\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n var prevTreeScaleX = this.treeScale.x;\n var prevTreeScaleY = this.treeScale.y;\n var prevProjectionTransform = this.projectionTransform;\n /**\n * Update the delta between the corrected box and the target box before user-set transforms were applied.\n * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n * for our layout reprojection, but still allow them to be scaled correctly by the user.\n * It might be that to simplify this we may want to accept that user-set scale is also corrected\n * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n * to allow people to choose whether these styles are corrected based on just the\n * layout reprojection or the final bounding box.\n */\n calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n this.projectionTransform = buildProjectionTransform(this.projectionDelta, this.treeScale);\n if (this.projectionTransform !== prevProjectionTransform ||\n this.treeScale.x !== prevTreeScaleX ||\n this.treeScale.y !== prevTreeScaleY) {\n this.hasProjected = true;\n this.scheduleRender();\n this.notifyListeners(\"projectionUpdate\", target);\n }\n };\n ProjectionNode.prototype.hide = function () {\n this.isVisible = false;\n // TODO: Schedule render\n };\n ProjectionNode.prototype.show = function () {\n this.isVisible = true;\n // TODO: Schedule render\n };\n ProjectionNode.prototype.scheduleRender = function (notifyAll) {\n var _a, _b, _c;\n if (notifyAll === void 0) { notifyAll = true; }\n (_b = (_a = this.options).scheduleRender) === null || _b === void 0 ? void 0 : _b.call(_a);\n notifyAll && ((_c = this.getStack()) === null || _c === void 0 ? void 0 : _c.scheduleRender());\n if (this.resumingFrom && !this.resumingFrom.instance) {\n this.resumingFrom = undefined;\n }\n };\n ProjectionNode.prototype.setAnimationOrigin = function (delta, hasOnlyRelativeTargetChanged) {\n var _this = this;\n var _a;\n if (hasOnlyRelativeTargetChanged === void 0) { hasOnlyRelativeTargetChanged = false; }\n var snapshot = this.snapshot;\n var snapshotLatestValues = (snapshot === null || snapshot === void 0 ? void 0 : snapshot.latestValues) || {};\n var mixedValues = __assign({}, this.latestValues);\n var targetDelta = createDelta();\n this.relativeTarget = this.relativeTargetOrigin = undefined;\n this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n var relativeLayout = createBox();\n var isSharedLayoutAnimation = snapshot === null || snapshot === void 0 ? void 0 : snapshot.isShared;\n var isOnlyMember = (((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.members.length) || 0) <= 1;\n var shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n !isOnlyMember &&\n this.options.crossfade === true &&\n !this.path.some(hasOpacityCrossfade));\n this.animationProgress = 0;\n this.mixTargetDelta = function (latest) {\n var _a;\n var progress = latest / 1000;\n mixAxisDelta(targetDelta.x, delta.x, progress);\n mixAxisDelta(targetDelta.y, delta.y, progress);\n _this.setTargetDelta(targetDelta);\n if (_this.relativeTarget &&\n _this.relativeTargetOrigin &&\n _this.layout &&\n ((_a = _this.relativeParent) === null || _a === void 0 ? void 0 : _a.layout)) {\n calcRelativePosition(relativeLayout, _this.layout.actual, _this.relativeParent.layout.actual);\n mixBox(_this.relativeTarget, _this.relativeTargetOrigin, relativeLayout, progress);\n }\n if (isSharedLayoutAnimation) {\n _this.animationValues = mixedValues;\n mixValues(mixedValues, snapshotLatestValues, _this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember);\n }\n _this.root.scheduleUpdateProjection();\n _this.scheduleRender();\n _this.animationProgress = progress;\n };\n this.mixTargetDelta(0);\n };\n ProjectionNode.prototype.startAnimation = function (options) {\n var _this = this;\n var _a, _b;\n this.notifyListeners(\"animationStart\");\n (_a = this.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop();\n if (this.resumingFrom) {\n (_b = this.resumingFrom.currentAnimation) === null || _b === void 0 ? void 0 : _b.stop();\n }\n if (this.pendingAnimation) {\n cancelSync.update(this.pendingAnimation);\n this.pendingAnimation = undefined;\n }\n /**\n * Start the animation in the next frame to have a frame with progress 0,\n * where the target is the same as when the animation started, so we can\n * calculate the relative positions correctly for instant transitions.\n */\n this.pendingAnimation = sync.update(function () {\n globalProjectionState.hasAnimatedSinceResize = true;\n _this.currentAnimation = animate(0, animationTarget, __assign(__assign({}, options), { onUpdate: function (latest) {\n var _a;\n _this.mixTargetDelta(latest);\n (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, latest);\n }, onComplete: function () {\n var _a;\n (_a = options.onComplete) === null || _a === void 0 ? void 0 : _a.call(options);\n _this.completeAnimation();\n } }));\n if (_this.resumingFrom) {\n _this.resumingFrom.currentAnimation = _this.currentAnimation;\n }\n _this.pendingAnimation = undefined;\n });\n };\n ProjectionNode.prototype.completeAnimation = function () {\n var _a;\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = undefined;\n this.resumingFrom.preserveOpacity = undefined;\n }\n (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.exitAnimationComplete();\n this.resumingFrom =\n this.currentAnimation =\n this.animationValues =\n undefined;\n this.notifyListeners(\"animationComplete\");\n };\n ProjectionNode.prototype.finishAnimation = function () {\n var _a;\n if (this.currentAnimation) {\n (_a = this.mixTargetDelta) === null || _a === void 0 ? void 0 : _a.call(this, animationTarget);\n this.currentAnimation.stop();\n }\n this.completeAnimation();\n };\n ProjectionNode.prototype.applyTransformsToTarget = function () {\n var _a = this.getLead(), targetWithTransforms = _a.targetWithTransforms, target = _a.target, layout = _a.layout, latestValues = _a.latestValues;\n if (!targetWithTransforms || !target || !layout)\n return;\n copyBoxInto(targetWithTransforms, target);\n /**\n * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n * This is the final box that we will then project into by calculating a transform delta and\n * applying it to the corrected box.\n */\n transformBox(targetWithTransforms, latestValues);\n /**\n * Update the delta between the corrected box and the final target box, after\n * user-set transforms are applied to it. This will be used by the renderer to\n * create a transform style that will reproject the element from its actual layout\n * into the desired bounding box.\n */\n calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n };\n ProjectionNode.prototype.registerSharedNode = function (layoutId, node) {\n var _a, _b, _c;\n if (!this.sharedNodes.has(layoutId)) {\n this.sharedNodes.set(layoutId, new NodeStack());\n }\n var stack = this.sharedNodes.get(layoutId);\n stack.add(node);\n node.promote({\n transition: (_a = node.options.initialPromotionConfig) === null || _a === void 0 ? void 0 : _a.transition,\n preserveFollowOpacity: (_c = (_b = node.options.initialPromotionConfig) === null || _b === void 0 ? void 0 : _b.shouldPreserveFollowOpacity) === null || _c === void 0 ? void 0 : _c.call(_b, node),\n });\n };\n ProjectionNode.prototype.isLead = function () {\n var stack = this.getStack();\n return stack ? stack.lead === this : true;\n };\n ProjectionNode.prototype.getLead = function () {\n var _a;\n var layoutId = this.options.layoutId;\n return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n };\n ProjectionNode.prototype.getPrevLead = function () {\n var _a;\n var layoutId = this.options.layoutId;\n return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : undefined;\n };\n ProjectionNode.prototype.getStack = function () {\n var layoutId = this.options.layoutId;\n if (layoutId)\n return this.root.sharedNodes.get(layoutId);\n };\n ProjectionNode.prototype.promote = function (_a) {\n var _b = _a === void 0 ? {} : _a, needsReset = _b.needsReset, transition = _b.transition, preserveFollowOpacity = _b.preserveFollowOpacity;\n var stack = this.getStack();\n if (stack)\n stack.promote(this, preserveFollowOpacity);\n if (needsReset) {\n this.projectionDelta = undefined;\n this.needsReset = true;\n }\n if (transition)\n this.setOptions({ transition: transition });\n };\n ProjectionNode.prototype.relegate = function () {\n var stack = this.getStack();\n if (stack) {\n return stack.relegate(this);\n }\n else {\n return false;\n }\n };\n ProjectionNode.prototype.resetRotation = function () {\n var visualElement = this.options.visualElement;\n if (!visualElement)\n return;\n // If there's no detected rotation values, we can early return without a forced render.\n var hasRotate = false;\n // Keep a record of all the values we've reset\n var resetValues = {};\n // Check the rotate value of all axes and reset to 0\n for (var i = 0; i < transformAxes.length; i++) {\n var axis = transformAxes[i];\n var key = \"rotate\" + axis;\n // If this rotation doesn't exist as a motion value, then we don't\n // need to reset it\n if (!visualElement.getStaticValue(key)) {\n continue;\n }\n hasRotate = true;\n // Record the rotation and then temporarily set it to 0\n resetValues[key] = visualElement.getStaticValue(key);\n visualElement.setStaticValue(key, 0);\n }\n // If there's no rotation values, we don't need to do any more.\n if (!hasRotate)\n return;\n // Force a render of this element to apply the transform with all rotations\n // set to 0.\n visualElement === null || visualElement === void 0 ? void 0 : visualElement.syncRender();\n // Put back all the values we reset\n for (var key in resetValues) {\n visualElement.setStaticValue(key, resetValues[key]);\n }\n // Schedule a render for the next frame. This ensures we won't visually\n // see the element with the reset rotate value applied.\n visualElement.scheduleRender();\n };\n ProjectionNode.prototype.getProjectionStyles = function (styleProp) {\n var _a, _b, _c, _d, _e, _f;\n if (styleProp === void 0) { styleProp = {}; }\n // TODO: Return lifecycle-persistent object\n var styles = {};\n if (!this.instance || this.isSVG)\n return styles;\n if (!this.isVisible) {\n return { visibility: \"hidden\" };\n }\n else {\n styles.visibility = \"\";\n }\n var transformTemplate = (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.getProps().transformTemplate;\n if (this.needsReset) {\n this.needsReset = false;\n styles.opacity = \"\";\n styles.pointerEvents =\n resolveMotionValue(styleProp.pointerEvents) || \"\";\n styles.transform = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : \"none\";\n return styles;\n }\n var lead = this.getLead();\n if (!this.projectionDelta || !this.layout || !lead.target) {\n var emptyStyles = {};\n if (this.options.layoutId) {\n emptyStyles.opacity = (_b = this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1;\n emptyStyles.pointerEvents =\n resolveMotionValue(styleProp.pointerEvents) || \"\";\n }\n if (this.hasProjected && !hasTransform(this.latestValues)) {\n emptyStyles.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n this.hasProjected = false;\n }\n return emptyStyles;\n }\n var valuesToRender = lead.animationValues || lead.latestValues;\n this.applyTransformsToTarget();\n styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n if (transformTemplate) {\n styles.transform = transformTemplate(valuesToRender, styles.transform);\n }\n var _g = this.projectionDelta, x = _g.x, y = _g.y;\n styles.transformOrigin = \"\".concat(x.origin * 100, \"% \").concat(y.origin * 100, \"% 0\");\n if (lead.animationValues) {\n /**\n * If the lead component is animating, assign this either the entering/leaving\n * opacity\n */\n styles.opacity =\n lead === this\n ? (_d = (_c = valuesToRender.opacity) !== null && _c !== void 0 ? _c : this.latestValues.opacity) !== null && _d !== void 0 ? _d : 1\n : this.preserveOpacity\n ? this.latestValues.opacity\n : valuesToRender.opacityExit;\n }\n else {\n /**\n * Or we're not animating at all, set the lead component to its actual\n * opacity and other components to hidden.\n */\n styles.opacity =\n lead === this\n ? (_e = valuesToRender.opacity) !== null && _e !== void 0 ? _e : \"\"\n : (_f = valuesToRender.opacityExit) !== null && _f !== void 0 ? _f : 0;\n }\n /**\n * Apply scale correction\n */\n for (var key in scaleCorrectors) {\n if (valuesToRender[key] === undefined)\n continue;\n var _h = scaleCorrectors[key], correct = _h.correct, applyTo = _h.applyTo;\n var corrected = correct(valuesToRender[key], lead);\n if (applyTo) {\n var num = applyTo.length;\n for (var i = 0; i < num; i++) {\n styles[applyTo[i]] = corrected;\n }\n }\n else {\n styles[key] = corrected;\n }\n }\n /**\n * Disable pointer events on follow components. This is to ensure\n * that if a follow component covers a lead component it doesn't block\n * pointer events on the lead.\n */\n if (this.options.layoutId) {\n styles.pointerEvents =\n lead === this\n ? resolveMotionValue(styleProp.pointerEvents) || \"\"\n : \"none\";\n }\n return styles;\n };\n ProjectionNode.prototype.clearSnapshot = function () {\n this.resumeFrom = this.snapshot = undefined;\n };\n // Only run on root\n ProjectionNode.prototype.resetTree = function () {\n this.root.nodes.forEach(function (node) { var _a; return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop(); });\n this.root.nodes.forEach(clearMeasurements);\n this.root.sharedNodes.clear();\n };\n return ProjectionNode;\n }());\n}\nfunction updateLayout(node) {\n node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n var _a, _b, _c, _d;\n var snapshot = (_b = (_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) !== null && _b !== void 0 ? _b : node.snapshot;\n if (node.isLead() &&\n node.layout &&\n snapshot &&\n node.hasListeners(\"didUpdate\")) {\n var _e = node.layout, layout_1 = _e.actual, measuredLayout = _e.measured;\n // TODO Maybe we want to also resize the layout snapshot so we don't trigger\n // animations for instance if layout=\"size\" and an element has only changed position\n if (node.options.animationType === \"size\") {\n eachAxis(function (axis) {\n var axisSnapshot = snapshot.isShared\n ? snapshot.measured[axis]\n : snapshot.layout[axis];\n var length = calcLength(axisSnapshot);\n axisSnapshot.min = layout_1[axis].min;\n axisSnapshot.max = axisSnapshot.min + length;\n });\n }\n else if (node.options.animationType === \"position\") {\n eachAxis(function (axis) {\n var axisSnapshot = snapshot.isShared\n ? snapshot.measured[axis]\n : snapshot.layout[axis];\n var length = calcLength(layout_1[axis]);\n axisSnapshot.max = axisSnapshot.min + length;\n });\n }\n var layoutDelta = createDelta();\n calcBoxDelta(layoutDelta, layout_1, snapshot.layout);\n var visualDelta = createDelta();\n if (snapshot.isShared) {\n calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measured);\n }\n else {\n calcBoxDelta(visualDelta, layout_1, snapshot.layout);\n }\n var hasLayoutChanged = !isDeltaZero(layoutDelta);\n var hasRelativeTargetChanged = false;\n if (!node.resumeFrom) {\n node.relativeParent = node.getClosestProjectingParent();\n /**\n * If the relativeParent is itself resuming from a different element then\n * the relative snapshot is not relavent\n */\n if (node.relativeParent && !node.relativeParent.resumeFrom) {\n var _f = node.relativeParent, parentSnapshot = _f.snapshot, parentLayout = _f.layout;\n if (parentSnapshot && parentLayout) {\n var relativeSnapshot = createBox();\n calcRelativePosition(relativeSnapshot, snapshot.layout, parentSnapshot.layout);\n var relativeLayout = createBox();\n calcRelativePosition(relativeLayout, layout_1, parentLayout.actual);\n if (!boxEquals(relativeSnapshot, relativeLayout)) {\n hasRelativeTargetChanged = true;\n }\n }\n }\n }\n node.notifyListeners(\"didUpdate\", {\n layout: layout_1,\n snapshot: snapshot,\n delta: visualDelta,\n layoutDelta: layoutDelta,\n hasLayoutChanged: hasLayoutChanged,\n hasRelativeTargetChanged: hasRelativeTargetChanged,\n });\n }\n else if (node.isLead()) {\n (_d = (_c = node.options).onExitComplete) === null || _d === void 0 ? void 0 : _d.call(_c);\n }\n /**\n * Clearing transition\n * TODO: Investigate why this transition is being passed in as {type: false } from Framer\n * and why we need it at all\n */\n node.options.transition = undefined;\n}\nfunction clearSnapshot(node) {\n node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n node.clearMeasurements();\n}\nfunction resetTransformStyle(node) {\n var visualElement = node.options.visualElement;\n if (visualElement === null || visualElement === void 0 ? void 0 : visualElement.getProps().onBeforeLayoutMeasure) {\n visualElement.notifyBeforeLayoutMeasure();\n }\n node.resetTransform();\n}\nfunction finishAnimation(node) {\n node.finishAnimation();\n node.targetDelta = node.relativeTarget = node.target = undefined;\n}\nfunction resolveTargetDelta(node) {\n node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n node.calcProjection();\n}\nfunction resetRotation(node) {\n node.resetRotation();\n}\nfunction removeLeadSnapshots(stack) {\n stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n output.translate = mix(delta.translate, 0, p);\n output.scale = mix(delta.scale, 1, p);\n output.origin = delta.origin;\n output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n output.min = mix(from.min, to.min, p);\n output.max = mix(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n mixAxis(output.x, from.x, to.x, p);\n mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n return (node.animationValues && node.animationValues.opacityExit !== undefined);\n}\nvar defaultLayoutTransition = {\n duration: 0.45,\n ease: [0.4, 0, 0.1, 1],\n};\nfunction mountNodeEarly(node, id) {\n /**\n * Rather than searching the DOM from document we can search the\n * path for the deepest mounted ancestor and search from there\n */\n var searchNode = node.root;\n for (var i = node.path.length - 1; i >= 0; i--) {\n if (Boolean(node.path[i].instance)) {\n searchNode = node.path[i];\n break;\n }\n }\n var searchElement = searchNode && searchNode !== node.root ? searchNode.instance : document;\n var element = searchElement.querySelector(\"[data-projection-id=\\\"\".concat(id, \"\\\"]\"));\n if (element)\n node.mount(element, true);\n}\nfunction roundAxis(axis) {\n axis.min = Math.round(axis.min);\n axis.max = Math.round(axis.max);\n}\nfunction roundBox(box) {\n roundAxis(box.x);\n roundAxis(box.y);\n}\n\nexport { createProjectionNode, mixAxis, mixAxisDelta, mixBox };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { addDomEvent } from '../../events/use-dom-event.mjs';\n\nvar DocumentProjectionNode = createProjectionNode({\n attachResizeListener: function (ref, notify) { return addDomEvent(ref, \"resize\", notify); },\n measureScroll: function () { return ({\n x: document.documentElement.scrollLeft || document.body.scrollLeft,\n y: document.documentElement.scrollTop || document.body.scrollTop,\n }); },\n checkIsScrollRoot: function () { return true; },\n});\n\nexport { DocumentProjectionNode };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { DocumentProjectionNode } from './DocumentProjectionNode.mjs';\n\nvar rootProjectionNode = {\n current: undefined,\n};\nvar HTMLProjectionNode = createProjectionNode({\n measureScroll: function (instance) { return ({\n x: instance.scrollLeft,\n y: instance.scrollTop,\n }); },\n defaultParent: function () {\n if (!rootProjectionNode.current) {\n var documentNode = new DocumentProjectionNode(0, {});\n documentNode.mount(window);\n documentNode.setOptions({ layoutScroll: true });\n rootProjectionNode.current = documentNode;\n }\n return rootProjectionNode.current;\n },\n resetTransform: function (instance, value) {\n instance.style.transform = value !== null && value !== void 0 ? value : \"none\";\n },\n checkIsScrollRoot: function (instance) {\n return Boolean(window.getComputedStyle(instance).position === \"fixed\");\n },\n});\n\nexport { HTMLProjectionNode, rootProjectionNode };\n","import { __assign } from 'tslib';\nimport { drag } from '../../motion/features/drag.mjs';\nimport { layoutFeatures } from '../../motion/features/layout/index.mjs';\nimport { domAnimation } from './features-animation.mjs';\nimport { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\n\n/**\n * @public\n */\nvar domMax = __assign(__assign(__assign(__assign({}, domAnimation), drag), layoutFeatures), { projectionNodeConstructor: HTMLProjectionNode });\n\nexport { domMax };\n"],"names":["token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","err","length","left","slice","right","Array","prototype","concat","call","decode","input","tokens","match","i","module","exports","encodedURI","TypeError","replace","replaceMap","exec","result","entries","Object","keys","key","customDecodeURIComponent","obj","predicate","ret","isArr","isArray","val","indexOf","strictUriEncode","decodeComponent","splitOnFirst","filterObject","encodeFragmentIdentifier","Symbol","validateArrayFormatSeparator","value","encode","options","strict","encodeURIComponent","keysSorter","sort","a","b","Number","map","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","isNaN","trim","parseBooleans","toLowerCase","parse","query","assign","arrayFormat","arrayFormatSeparator","formatter","accumulator","undefined","includes","isEncodedArray","newValue","item","test","arrayValue","parserForArrayFormat","create","param","k","reduce","Boolean","stringify","object","shouldFilter","skipNull","skipEmptyString","index","keyValueSep","encoderForArrayFormat","objectCopy","filter","x","parseUrl","url","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","pick","exclude","exclusionFilter","string","separator","separatorIndex","str","charCodeAt","toString","toUpperCase","animate","from","to","transition","stop","isAnimating","isPoint","point","hasOwnProperty","isPoint3D","distance1D","Math","abs","distance","xDelta","yDelta","y","zDelta","z","sqrt","pow","PanSession","event","handlers","_a","_this","this","transformPagePoint","startEvent","lastMoveEvent","lastMoveEventInfo","updatePoint","info","getPanInfo","history","isPanStarted","isDistancePastThreshold","offset","timestamp","push","onStart","onMove","handlePointerMove","transformPoint","buttons","handlePointerUp","end","onEnd","onSessionEnd","panInfo","touches","initialInfo","onSessionStart","removeListeners","pipe","window","updateHandlers","subtractPoint","delta","lastDevicePoint","startDevicePoint","velocity","getVelocity","timeDelta","timestampedPoint","lastPoint","time","currentVelocity","Infinity","calcLength","axis","max","min","isNear","target","maxDistance","calcAxisDelta","source","origin","originPoint","mix","scale","translate","calcBoxDelta","originX","originY","calcRelativeAxis","relative","parent","calcRelativeAxisPosition","layout","calcRelativePosition","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","defaultElastic","resolveAxisElastic","dragElastic","minLabel","maxLabel","resolvePointElastic","label","eachAxis","callback","elementDragControls","WeakMap","VisualElementDragControls","visualElement","openGlobalLock","isDragging","currentDirection","constraints","hasMutatedConstraints","elastic","start","originEvent","_c","snapToCursor","isPresent","panSession","stopAnimation","_b","getProps","drag","dragPropagation","onDragStart","resolveConstraints","projection","isAnimationBlocked","current","getAxisMotionValue","get","measuredAxis","actual","parseFloat","animationState","setActive","dragDirectionLock","onDirectionLock","onDrag","lockThreshold","direction","getCurrentDirection","updateAxis","syncRender","getTransformPagePoint","cancel","startAnimation","onDragEnd","_point","shouldDrag","axisValue","next","set","dragConstraints","prevConstraints","resolveRefConstraints","layoutBox","top","bottom","calcRelativeConstraints","resolveDragElastic","relativeConstraints","rebaseAxisConstraints","onMeasureDragConstraints","constraintsElement","constraintsBox","measure","root","measuredConstraints","calcViewportConstraints","userConstraints","dragMomentum","dragTransition","dragSnapToOrigin","onDragTransitionEnd","momentumAnimations","bounceStiffness","bounceDamping","inertia","type","timeConstant","restDelta","restSpeed","startAxisValueAnimation","Promise","all","then","dragKey","getValue","initial","scalePositionWithinConstraints","boxProgress","sourceLength","targetLength","latest","progress","clamp","transformTemplate","getInstance","style","transform","updateScroll","updateLayout","addListeners","element","stopPointerListener","dragListener","measureDragConstraints","stopMeasureLayoutListener","addEventListener","stopResizeListener","hasLayoutChanged","motionValue","props","_d","_e","_f","pan","onPan","onPanStart","onPanEnd","onPanSessionStart","hasPanEvents","useRef","useContext","MotionConfigContext","useEffect","groupDragControls","dragControls","subscribe","pixelsToPercent","pixels","correctBorderRadius","correct","node","px","varToken","correctBoxShadow","treeScale","projectionDelta","original","containsCSSVariables","cssVariables","shadow","complex","template","xScale","yScale","averageScale","output","i_1","cssVariable","MeasureLayoutWithContext","_super","apply","arguments","componentDidMount","layoutGroup","switchLayoutGroup","layoutId","defaultScaleCorrectors","group","add","register","didUpdate","safeToRemove","setOptions","onExitComplete","getSnapshotBeforeUpdate","prevProps","layoutDependency","willUpdate","promote","relegate","getStack","members","componentDidUpdate","currentAnimation","isLead","componentWillUnmount","promoteContext","scheduleCheckAfterUnmount","remove","deregister","render","borderRadius","applyTo","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","boxShadow","layoutFeatures","measureLayout","LayoutGroupContext","SwitchLayoutGroupContext","borders","numBorders","asNumber","isPx","getRadius","values","radiusName","easeCrossfadeIn","compress","easeCrossfadeOut","easing","p","copyAxisInto","originAxis","copyBoxInto","box","originBox","removePointDelta","boxScale","removeAxisTransforms","transforms","sourceAxis","scaleKey","originKey","removeAxisDelta","xKeys","yKeys","removeBoxTransforms","sourceBox","isAxisDeltaZero","isDeltaZero","boxEquals","NodeStack","scheduleRender","prevLead","lead","indexOfNode","findIndex","member","preserveFollowOpacity","show","instance","resumeFrom","preserveOpacity","snapshot","latestValues","animationValues","isShared","isUpdating","isLayoutDirty","crossfade","hide","exitAnimationComplete","forEach","resumingFrom","removeLeadSnapshot","buildProjectionTransform","latestTransform","xTranslate","yTranslate","rotate","rotateX","rotateY","elementScaleX","elementScaleY","compareByDepth","depth","FlatTree","children","isDirty","child","createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","ProjectionNode","id","Set","isTreeAnimating","updateManuallyBlocked","updateBlockedByResize","isSVG","needsReset","shouldResetTransform","eventHandlers","Map","potentialNodes","checkUpdateFailed","clearAllSnapshots","updateProjection","nodes","resolveTargetDelta","calcProjection","hasProjected","isVisible","animationProgress","sharedNodes","path","registerPotentialNode","name","handler","has","notifyListeners","args","_i","subscriptionManager","notify","hasListeners","mount","SVGElement","tagName","delete","unblockTimeout_1","resizeUnblockUpdate_1","clearTimeout","setTimeout","finishAnimation","registerSharedNode","hasRelativeTargetChanged","newLayout","isTreeAnimationBlocked","relativeTarget","layoutTransition","getDefaultTransition","defaultLayoutTransition","_g","onLayoutAnimationStart","onLayoutAnimationComplete","targetChanged","targetLayout","hasOnlyRelativeTargetChanged","setAnimationOrigin","animationOptions","onPlay","onComplete","shouldReduceMotion","delay","unmount","blockUpdate","unblockUpdate","isUpdateBlocked","startUpdate","resetRotation","shouldNotifyListeners","prevTransformTemplateValue","updateSnapshot","clearMeasurements","size","mountNodeEarly","clear","resetTransformStyle","notifyLayoutUpdate","clearSnapshot","removeLeadSnapshots","scheduleUpdateProjection","measured","removeTransform","removeElementScroll","roundBox","alwaysMeasureLayout","prevLayout","layoutCorrected","notifyLayoutMeasure","layoutScroll","isScrollRoot","scroll","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","measureViewportBox","boxWithoutScroll","scroll_1","rootScroll","applyTransform","transformOnly","withTransforms","boxWithoutTransform","setTargetDelta","targetDelta","relativeParent","getClosestProjectingParent","relativeTargetOrigin","targetWithTransforms","attemptToResolveRelativeTarget","pendingAnimation","getLead","projectionDeltaWithTransform","prevTreeScaleX","prevTreeScaleY","prevProjectionTransform","projectionTransform","notifyAll","snapshotLatestValues","mixedValues","relativeLayout","isSharedLayoutAnimation","isOnlyMember","shouldCrossfadeOpacity","some","hasOpacityCrossfade","mixTargetDelta","mixAxisDelta","mixAxis","follow","opacity","opacityExit","borderLabel","followRadius","leadRadius","mixValues","onUpdate","completeAnimation","applyTransformsToTarget","initialPromotionConfig","shouldPreserveFollowOpacity","stack","getPrevLead","hasRotate","resetValues","getStaticValue","setStaticValue","getProjectionStyles","styleProp","styles","visibility","pointerEvents","emptyStyles","valuesToRender","transformOrigin","_h","corrected","num","resetTree","layout_1","measuredLayout","animationType","axisSnapshot","layoutDelta","visualDelta","parentSnapshot","parentLayout","relativeSnapshot","onBeforeLayoutMeasure","notifyBeforeLayoutMeasure","duration","ease","searchNode","document","querySelector","roundAxis","round","DocumentProjectionNode","ref","documentElement","scrollLeft","body","scrollTop","rootProjectionNode","HTMLProjectionNode","documentNode","getComputedStyle","position","domMax","projectionNodeConstructor"],"sourceRoot":""}