{"version":3,"file":"commons-d562a79bcc39ec69b522.js","mappings":"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CA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,QACA,KACA,QACA,IACA,KACA,MACA,QACA,MAEA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,SAUgC,CAChCvR,oBA5VF,SAA6BjU,EAAUrL,GACrC,IAAKqL,EAAS4W,WAAa5W,EAAShE,aAClC,OAAO,EAET,MAAMypB,EAAwC,WAAtBzlB,EAAS0lB,UAAyB1lB,EAASvC,YAA+C,WAAjCuC,EAASvC,WAAWioB,UAC/F,MAAEhmB,EAAK,SAAEyC,EAAQ,UAAEwjB,EAAS,WAAEC,EAAU,QAAEC,KAAYxqB,GAAe1G,EACrEwT,EAASlY,OAAOkY,OAAO9M,GACvByqB,EAAQ71B,OAAOmD,KAAKiI,GAAYvK,KACnCK,GAASs0B,GAAmBzlB,EAAS+lB,aAAa50B,GAAQA,EAAOsmB,GAAetmB,KAAUsmB,GAAetmB,GAAQA,EAAK8E,QACrH,YAEC+vB,GAAM,IAAMA,EAAEzuB,wBAGF,IAAb4K,IACFnC,EAASimB,YAAc9jB,GAEzB,IAAK,MAAMhR,KAAQuO,EACjB,GAAIA,EAAMjK,eAAetE,GAAO,CAC9B,MAAM+G,EAAQqf,GAAoBpmB,EAAMuO,EAAMvO,IAC1CmmB,GAAexO,KAAK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","sources":["webpack://gatsby-starter-glass/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://gatsby-starter-glass/./src/components/container.js","webpack://gatsby-starter-glass/./src/components/social-links.js","webpack://gatsby-starter-glass/./src/components/footer.js","webpack://gatsby-starter-glass/./src/components/global-styles.js","webpack://gatsby-starter-glass/./node_modules/react-helmet/es/Helmet.js","webpack://gatsby-starter-glass/./src/components/seo.js","webpack://gatsby-starter-glass/./node_modules/@react-spring/shared/dist/react-spring_shared.modern.mjs","webpack://gatsby-starter-glass/./node_modules/@react-spring/animated/dist/react-spring_animated.modern.mjs","webpack://gatsby-starter-glass/./node_modules/@react-spring/core/dist/react-spring_core.modern.mjs","webpack://gatsby-starter-glass/./node_modules/@react-spring/web/dist/react-spring_web.modern.mjs","webpack://gatsby-starter-glass/./src/components/theme-switch.js","webpack://gatsby-starter-glass/./node_modules/react-fast-compare/index.js","webpack://gatsby-starter-glass/./node_modules/react-side-effect/lib/index.js"],"sourcesContent":["\"use strict\";\n\nmodule.exports = Object.assign;\n//# sourceMappingURL=object-assign.js.map","import styled from 'styled-components';\r\n\r\nconst Container = styled.div`\r\n margin-left: auto;\r\n margin-right: auto;\r\n max-width: 1300px;\r\n padding-left: var(--size-700);\r\n padding-right: var(--size-700);\r\n height: 100%;\r\n\r\n @media screen and (max-width: 1000px) {\r\n & {\r\n padding-left: var(--size-400);\r\n padding-right: var(--size-400);\r\n }\r\n }\r\n`;\r\n\r\nexport default Container;\r\n","import React from 'react';\r\nimport { graphql, useStaticQuery } from 'gatsby';\r\nimport styled from 'styled-components';\r\n\r\nconst SocialLinks = () => {\r\n const data = useStaticQuery(graphql`\r\n {\r\n site {\r\n siteMetadata {\r\n socialLinks {\r\n name\r\n url\r\n }\r\n }\r\n }\r\n }\r\n `);\r\n\r\n const socialLinks = data.site.siteMetadata.socialLinks.map((link) => {\r\n return (\r\n \r\n {link.name}\r\n \r\n );\r\n });\r\n\r\n return {socialLinks};\r\n};\r\n\r\nexport default SocialLinks;\r\n\r\nconst SocialLinkList = styled.ul`\r\n padding: 0;\r\n list-style: none;\r\n display: flex;\r\n`;\r\n\r\nconst SocialLinkItem = styled.li`\r\n margin-right: var(--size-400);\r\n text-transform: uppercase;\r\n\r\n & a {\r\n color: inherit;\r\n font-size: var(--size-300);\r\n }\r\n`;\r\n","import React from 'react';\r\nimport Container from './container';\r\nimport styled from 'styled-components';\r\nimport SocialLinks from './social-links';\r\n\r\nconst Footer = () => {\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n Il Cucinologo\r\n {/*\r\n Hand-crafted with love by{' '}\r\n Yinka Adedire\r\n */}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Footer;\r\n\r\nconst StyledFooter = styled.footer`\r\n padding-top: var(--size-300);\r\n padding-bottom: var(--size-300);\r\n`;\r\n\r\nconst FooterAttribution = styled.p`\r\n font-size: var(--size-300);\r\n\r\n & a {\r\n color: inherit;\r\n }\r\n`;\r\n\r\nconst FooterWrapper = styled(Container)`\r\n display: flex;\r\n flex-wrap: wrap;\r\n justify-content: space-between;\r\n align-items: center;\r\n`;\r\n","import { createGlobalStyle } from \"styled-components\";\r\n\r\nconst GlobalStyle = createGlobalStyle`\r\n*,\r\n*::before,\r\n*::after {\r\n box-sizing: border-box;\r\n}\r\n\r\nbody,\r\nh1,\r\nh2,\r\nh3,\r\nh4,\r\np,\r\nfigure,\r\nblockquote,\r\ndl,\r\ndd {\r\n margin: 0;\r\n}\r\n\r\nul[role='list'],\r\nol[role='list'] {\r\n list-style: none;\r\n}\r\n\r\nhtml:focus-within {\r\n scroll-behavior: smooth;\r\n}\r\n\r\nhtml {\r\n height: -webkit-fill-available;\r\n}\r\n\r\nbody {\r\n min-height: 100vh;\r\n min-height: -webkit-fill-available;\r\n text-rendering: optimizeSpeed;\r\n line-height: 1.5;\r\n}\r\n\r\na:not([class]) {\r\n text-decoration-skip-ink: auto;\r\n}\r\n\r\nimg,\r\npicture {\r\n max-width: 100%;\r\n display: block;\r\n}\r\n\r\ninput,\r\nbutton,\r\ntextarea,\r\nselect {\r\n font: inherit;\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n html:focus-within {\r\n scroll-behavior: auto;\r\n }\r\n \r\n *,\r\n *::before,\r\n *::after {\r\n animation-duration: 0.01ms !important;\r\n animation-iteration-count: 1 !important;\r\n transition-duration: 0.01ms !important;\r\n scroll-behavior: auto !important;\r\n }\r\n}\r\n\r\nhtml {\r\n width:100vw;\r\n overflow-x:hidden;\r\n}\r\n\r\nbody::-webkit-scrollbar {\r\n width: 10px;\r\n}\r\n\r\nbody::-webkit-scrollbar-thumb {\r\n background-color: rgba(55, 41, 44, .4);\r\n}\r\n\r\nbody::-webkit-scrollbar-track {\r\n background: transparent;\r\n}\r\n\r\n:root {\r\n scroll-behavior: smooth;\r\n --size-300: 0.75rem;\r\n --size-400: 1rem;\r\n --size-500: 1.33rem;\r\n --size-600: 1.77rem;\r\n --size-700: 2.36rem;\r\n --size-800: 3.15rem;\r\n --size-900: 4.2rem;\r\n}\r\n\r\nbody {\r\n font-family: 'Poppins', -apple-system, BlinkMacSystemFont, avenir next, avenir, helvetica neue,\r\n helvetica, Ubuntu, roboto, noto, segoe ui, arial, sans-serif;\r\n transition-property: background-color, color, background;\r\n transition-duration: 0.3s;\r\n transition-timing-function: ease-out;\r\n background-attachment: fixed;\r\n font-smoothing: antialiased;\r\n}\r\n\r\nbody.light-mode {\r\n color: #37292C;\r\n background-color: white;\r\n background-image: linear-gradient(315deg, #ccfbf1 0%, #ffe4e6 50%);\r\n}\r\n\r\nbody.dark-mode {\r\n color: #e9e9e9;\r\n background-color: #252526;\r\n}\r\n\r\nbody.dark-mode ::selection{\r\n background: #e9e9e9;\r\n color: #252526;\r\n}\r\n\r\nbody.light-mode ::selection{\r\n background: #37292C;\r\n color: white;\r\n}\r\n\r\nh1,\r\nh2,\r\nh3,\r\nh4 {\r\n line-height: 1.125;\r\n}\r\n\r\nh1,\r\nh2,\r\nh3 {\r\n font-weight: 700;\r\n}\r\n\r\nh1 {\r\n font-size: var(--size-800);\r\n}\r\n\r\nh2 {\r\n font-size: var(--size-700);\r\n}\r\n\r\nh3 {\r\n font-size: var(--size-600);\r\n}\r\n\r\np {\r\n font-size: var(--size-400);\r\n}\r\n\r\np, li {\r\n max-width: none;\r\n}\r\n\r\n.gatsby-resp-image-wrapper {\r\n margin-left: 0 !important;\r\n}\r\n\r\n\r\n`;\r\n\r\nexport default GlobalStyle;\r\n","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\n\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\n\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" + type + \">\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" + type + \">\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\" + type + \">\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``}\" + child.type + \"> ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \"
console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexport default HelmetExport;\nexport { HelmetExport as Helmet };\n","import * as React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport { useStaticQuery, graphql } from \"gatsby\";\r\n\r\nconst Seo = ({ description, lang, meta, title, socialImage, url }) => {\r\n const { site } = useStaticQuery(\r\n graphql`\r\n query {\r\n site {\r\n siteMetadata {\r\n title\r\n openGraphImage\r\n siteUrl\r\n description\r\n social {\r\n twitter\r\n }\r\n }\r\n }\r\n }\r\n `\r\n );\r\n\r\n const metaDescription = description || site.siteMetadata.description;\r\n const defaultTitle = site.siteMetadata?.title;\r\n let ogImageUrl = site.siteMetadata.siteUrl;\r\n //console.log(\"socialImage:\", socialImage, \"Type:\", typeof socialImage);\r\n if (typeof socialImage === 'string') {\r\n ogImageUrl += socialImage.startsWith('/')\r\n ? socialImage\r\n : `/${socialImage}`;\r\n } else {\r\n ogImageUrl += '/media/profile-image.jpg'; // Percorso di fallback\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nSeo.defaultProps = {\r\n lang: `en`,\r\n meta: [],\r\n description: ``,\r\n};\r\n\r\nSeo.propTypes = {\r\n description: PropTypes.string,\r\n lang: PropTypes.string,\r\n meta: PropTypes.arrayOf(PropTypes.object),\r\n title: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default Seo;\r\n","var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\n\n// src/globals.ts\nvar globals_exports = {};\n__export(globals_exports, {\n assign: () => assign,\n colors: () => colors,\n createStringInterpolator: () => createStringInterpolator,\n skipAnimation: () => skipAnimation,\n to: () => to,\n willAdvance: () => willAdvance\n});\n\n// ../rafz/dist/react-spring_rafz.modern.mjs\nvar updateQueue = makeQueue();\nvar raf = (fn) => schedule(fn, updateQueue);\nvar writeQueue = makeQueue();\nraf.write = (fn) => schedule(fn, writeQueue);\nvar onStartQueue = makeQueue();\nraf.onStart = (fn) => schedule(fn, onStartQueue);\nvar onFrameQueue = makeQueue();\nraf.onFrame = (fn) => schedule(fn, onFrameQueue);\nvar onFinishQueue = makeQueue();\nraf.onFinish = (fn) => schedule(fn, onFinishQueue);\nvar timeouts = [];\nraf.setTimeout = (handler, ms) => {\n const time = raf.now() + ms;\n const cancel = () => {\n const i = timeouts.findIndex((t) => t.cancel == cancel);\n if (~i)\n timeouts.splice(i, 1);\n pendingCount -= ~i ? 1 : 0;\n };\n const timeout = { time, handler, cancel };\n timeouts.splice(findTimeout(time), 0, timeout);\n pendingCount += 1;\n start();\n return timeout;\n};\nvar findTimeout = (time) => ~(~timeouts.findIndex((t) => t.time > time) || ~timeouts.length);\nraf.cancel = (fn) => {\n onStartQueue.delete(fn);\n onFrameQueue.delete(fn);\n onFinishQueue.delete(fn);\n updateQueue.delete(fn);\n writeQueue.delete(fn);\n};\nraf.sync = (fn) => {\n sync = true;\n raf.batchedUpdates(fn);\n sync = false;\n};\nraf.throttle = (fn) => {\n let lastArgs;\n function queuedFn() {\n try {\n fn(...lastArgs);\n } finally {\n lastArgs = null;\n }\n }\n function throttled(...args) {\n lastArgs = args;\n raf.onStart(queuedFn);\n }\n throttled.handler = fn;\n throttled.cancel = () => {\n onStartQueue.delete(queuedFn);\n lastArgs = null;\n };\n return throttled;\n};\nvar nativeRaf = typeof window != \"undefined\" ? window.requestAnimationFrame : (\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {\n }\n);\nraf.use = (impl) => nativeRaf = impl;\nraf.now = typeof performance != \"undefined\" ? () => performance.now() : Date.now;\nraf.batchedUpdates = (fn) => fn();\nraf.catch = console.error;\nraf.frameLoop = \"always\";\nraf.advance = () => {\n if (raf.frameLoop !== \"demand\") {\n console.warn(\n \"Cannot call the manual advancement of rafz whilst frameLoop is not set as demand\"\n );\n } else {\n update();\n }\n};\nvar ts = -1;\nvar pendingCount = 0;\nvar sync = false;\nfunction schedule(fn, queue) {\n if (sync) {\n queue.delete(fn);\n fn(0);\n } else {\n queue.add(fn);\n start();\n }\n}\nfunction start() {\n if (ts < 0) {\n ts = 0;\n if (raf.frameLoop !== \"demand\") {\n nativeRaf(loop);\n }\n }\n}\nfunction stop() {\n ts = -1;\n}\nfunction loop() {\n if (~ts) {\n nativeRaf(loop);\n raf.batchedUpdates(update);\n }\n}\nfunction update() {\n const prevTs = ts;\n ts = raf.now();\n const count = findTimeout(ts);\n if (count) {\n eachSafely(timeouts.splice(0, count), (t) => t.handler());\n pendingCount -= count;\n }\n if (!pendingCount) {\n stop();\n return;\n }\n onStartQueue.flush();\n updateQueue.flush(prevTs ? Math.min(64, ts - prevTs) : 16.667);\n onFrameQueue.flush();\n writeQueue.flush();\n onFinishQueue.flush();\n}\nfunction makeQueue() {\n let next = /* @__PURE__ */ new Set();\n let current = next;\n return {\n add(fn) {\n pendingCount += current == next && !next.has(fn) ? 1 : 0;\n next.add(fn);\n },\n delete(fn) {\n pendingCount -= current == next && next.has(fn) ? 1 : 0;\n return next.delete(fn);\n },\n flush(arg) {\n if (current.size) {\n next = /* @__PURE__ */ new Set();\n pendingCount -= current.size;\n eachSafely(current, (fn) => fn(arg) && next.add(fn));\n pendingCount += next.size;\n current = next;\n }\n }\n };\n}\nfunction eachSafely(values, each2) {\n values.forEach((value) => {\n try {\n each2(value);\n } catch (e) {\n raf.catch(e);\n }\n });\n}\n\n// src/helpers.ts\nfunction noop() {\n}\nvar defineHidden = (obj, key, value) => Object.defineProperty(obj, key, { value, writable: true, configurable: true });\nvar is = {\n arr: Array.isArray,\n obj: (a) => !!a && a.constructor.name === \"Object\",\n fun: (a) => typeof a === \"function\",\n str: (a) => typeof a === \"string\",\n num: (a) => typeof a === \"number\",\n und: (a) => a === void 0\n};\nfunction isEqual(a, b) {\n if (is.arr(a)) {\n if (!is.arr(b) || a.length !== b.length)\n return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i])\n return false;\n }\n return true;\n }\n return a === b;\n}\nvar each = (obj, fn) => obj.forEach(fn);\nfunction eachProp(obj, fn, ctx) {\n if (is.arr(obj)) {\n for (let i = 0; i < obj.length; i++) {\n fn.call(ctx, obj[i], `${i}`);\n }\n return;\n }\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n fn.call(ctx, obj[key], key);\n }\n }\n}\nvar toArray = (a) => is.und(a) ? [] : is.arr(a) ? a : [a];\nfunction flush(queue, iterator) {\n if (queue.size) {\n const items = Array.from(queue);\n queue.clear();\n each(items, iterator);\n }\n}\nvar flushCalls = (queue, ...args) => flush(queue, (fn) => fn(...args));\nvar isSSR = () => typeof window === \"undefined\" || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\n\n// src/globals.ts\nvar createStringInterpolator;\nvar to;\nvar colors = null;\nvar skipAnimation = false;\nvar willAdvance = noop;\nvar assign = (globals) => {\n if (globals.to)\n to = globals.to;\n if (globals.now)\n raf.now = globals.now;\n if (globals.colors !== void 0)\n colors = globals.colors;\n if (globals.skipAnimation != null)\n skipAnimation = globals.skipAnimation;\n if (globals.createStringInterpolator)\n createStringInterpolator = globals.createStringInterpolator;\n if (globals.requestAnimationFrame)\n raf.use(globals.requestAnimationFrame);\n if (globals.batchedUpdates)\n raf.batchedUpdates = globals.batchedUpdates;\n if (globals.willAdvance)\n willAdvance = globals.willAdvance;\n if (globals.frameLoop)\n raf.frameLoop = globals.frameLoop;\n};\n\n// src/FrameLoop.ts\nvar startQueue = /* @__PURE__ */ new Set();\nvar currentFrame = [];\nvar prevFrame = [];\nvar priority = 0;\nvar frameLoop = {\n get idle() {\n return !startQueue.size && !currentFrame.length;\n },\n /** Advance the given animation on every frame until idle. */\n start(animation) {\n if (priority > animation.priority) {\n startQueue.add(animation);\n raf.onStart(flushStartQueue);\n } else {\n startSafely(animation);\n raf(advance);\n }\n },\n /** Advance all animations by the given time. */\n advance,\n /** Call this when an animation's priority changes. */\n sort(animation) {\n if (priority) {\n raf.onFrame(() => frameLoop.sort(animation));\n } else {\n const prevIndex = currentFrame.indexOf(animation);\n if (~prevIndex) {\n currentFrame.splice(prevIndex, 1);\n startUnsafely(animation);\n }\n }\n },\n /**\n * Clear all animations. For testing purposes.\n *\n * ☠️ Never call this from within the frameloop.\n */\n clear() {\n currentFrame = [];\n startQueue.clear();\n }\n};\nfunction flushStartQueue() {\n startQueue.forEach(startSafely);\n startQueue.clear();\n raf(advance);\n}\nfunction startSafely(animation) {\n if (!currentFrame.includes(animation))\n startUnsafely(animation);\n}\nfunction startUnsafely(animation) {\n currentFrame.splice(\n findIndex(currentFrame, (other) => other.priority > animation.priority),\n 0,\n animation\n );\n}\nfunction advance(dt) {\n const nextFrame = prevFrame;\n for (let i = 0; i < currentFrame.length; i++) {\n const animation = currentFrame[i];\n priority = animation.priority;\n if (!animation.idle) {\n willAdvance(animation);\n animation.advance(dt);\n if (!animation.idle) {\n nextFrame.push(animation);\n }\n }\n }\n priority = 0;\n prevFrame = currentFrame;\n prevFrame.length = 0;\n currentFrame = nextFrame;\n return currentFrame.length > 0;\n}\nfunction findIndex(arr, test) {\n const index = arr.findIndex(test);\n return index < 0 ? arr.length : index;\n}\n\n// src/clamp.ts\nvar clamp = (min, max, v) => Math.min(Math.max(v, min), max);\n\n// src/colors.ts\nvar colors2 = {\n transparent: 0,\n aliceblue: 4042850303,\n antiquewhite: 4209760255,\n aqua: 16777215,\n aquamarine: 2147472639,\n azure: 4043309055,\n beige: 4126530815,\n bisque: 4293182719,\n black: 255,\n blanchedalmond: 4293643775,\n blue: 65535,\n blueviolet: 2318131967,\n brown: 2771004159,\n burlywood: 3736635391,\n burntsienna: 3934150143,\n cadetblue: 1604231423,\n chartreuse: 2147418367,\n chocolate: 3530104575,\n coral: 4286533887,\n cornflowerblue: 1687547391,\n cornsilk: 4294499583,\n crimson: 3692313855,\n cyan: 16777215,\n darkblue: 35839,\n darkcyan: 9145343,\n darkgoldenrod: 3095792639,\n darkgray: 2846468607,\n darkgreen: 6553855,\n darkgrey: 2846468607,\n darkkhaki: 3182914559,\n darkmagenta: 2332068863,\n darkolivegreen: 1433087999,\n darkorange: 4287365375,\n darkorchid: 2570243327,\n darkred: 2332033279,\n darksalmon: 3918953215,\n darkseagreen: 2411499519,\n darkslateblue: 1211993087,\n darkslategray: 793726975,\n darkslategrey: 793726975,\n darkturquoise: 13554175,\n darkviolet: 2483082239,\n deeppink: 4279538687,\n deepskyblue: 12582911,\n dimgray: 1768516095,\n dimgrey: 1768516095,\n dodgerblue: 512819199,\n firebrick: 2988581631,\n floralwhite: 4294635775,\n forestgreen: 579543807,\n fuchsia: 4278255615,\n gainsboro: 3705462015,\n ghostwhite: 4177068031,\n gold: 4292280575,\n goldenrod: 3668254975,\n gray: 2155905279,\n green: 8388863,\n greenyellow: 2919182335,\n grey: 2155905279,\n honeydew: 4043305215,\n hotpink: 4285117695,\n indianred: 3445382399,\n indigo: 1258324735,\n ivory: 4294963455,\n khaki: 4041641215,\n lavender: 3873897215,\n lavenderblush: 4293981695,\n lawngreen: 2096890111,\n lemonchiffon: 4294626815,\n lightblue: 2916673279,\n lightcoral: 4034953471,\n lightcyan: 3774873599,\n lightgoldenrodyellow: 4210742015,\n lightgray: 3553874943,\n lightgreen: 2431553791,\n lightgrey: 3553874943,\n lightpink: 4290167295,\n lightsalmon: 4288707327,\n lightseagreen: 548580095,\n lightskyblue: 2278488831,\n lightslategray: 2005441023,\n lightslategrey: 2005441023,\n lightsteelblue: 2965692159,\n lightyellow: 4294959359,\n lime: 16711935,\n limegreen: 852308735,\n linen: 4210091775,\n magenta: 4278255615,\n maroon: 2147483903,\n mediumaquamarine: 1724754687,\n mediumblue: 52735,\n mediumorchid: 3126187007,\n mediumpurple: 2473647103,\n mediumseagreen: 1018393087,\n mediumslateblue: 2070474495,\n mediumspringgreen: 16423679,\n mediumturquoise: 1221709055,\n mediumvioletred: 3340076543,\n midnightblue: 421097727,\n mintcream: 4127193855,\n mistyrose: 4293190143,\n moccasin: 4293178879,\n navajowhite: 4292783615,\n navy: 33023,\n oldlace: 4260751103,\n olive: 2155872511,\n olivedrab: 1804477439,\n orange: 4289003775,\n orangered: 4282712319,\n orchid: 3664828159,\n palegoldenrod: 4008225535,\n palegreen: 2566625535,\n paleturquoise: 2951671551,\n palevioletred: 3681588223,\n papayawhip: 4293907967,\n peachpuff: 4292524543,\n peru: 3448061951,\n pink: 4290825215,\n plum: 3718307327,\n powderblue: 2967529215,\n purple: 2147516671,\n rebeccapurple: 1714657791,\n red: 4278190335,\n rosybrown: 3163525119,\n royalblue: 1097458175,\n saddlebrown: 2336560127,\n salmon: 4202722047,\n sandybrown: 4104413439,\n seagreen: 780883967,\n seashell: 4294307583,\n sienna: 2689740287,\n silver: 3233857791,\n skyblue: 2278484991,\n slateblue: 1784335871,\n slategray: 1887473919,\n slategrey: 1887473919,\n snow: 4294638335,\n springgreen: 16744447,\n steelblue: 1182971135,\n tan: 3535047935,\n teal: 8421631,\n thistle: 3636451583,\n tomato: 4284696575,\n turquoise: 1088475391,\n violet: 4001558271,\n wheat: 4125012991,\n white: 4294967295,\n whitesmoke: 4126537215,\n yellow: 4294902015,\n yellowgreen: 2597139199\n};\n\n// src/colorMatchers.ts\nvar NUMBER = \"[-+]?\\\\d*\\\\.?\\\\d+\";\nvar PERCENTAGE = NUMBER + \"%\";\nfunction call(...parts) {\n return \"\\\\(\\\\s*(\" + parts.join(\")\\\\s*,\\\\s*(\") + \")\\\\s*\\\\)\";\n}\nvar rgb = new RegExp(\"rgb\" + call(NUMBER, NUMBER, NUMBER));\nvar rgba = new RegExp(\"rgba\" + call(NUMBER, NUMBER, NUMBER, NUMBER));\nvar hsl = new RegExp(\"hsl\" + call(NUMBER, PERCENTAGE, PERCENTAGE));\nvar hsla = new RegExp(\n \"hsla\" + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER)\n);\nvar hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nvar hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nvar hex6 = /^#([0-9a-fA-F]{6})$/;\nvar hex8 = /^#([0-9a-fA-F]{8})$/;\n\n// src/normalizeColor.ts\nfunction normalizeColor(color) {\n let match;\n if (typeof color === \"number\") {\n return color >>> 0 === color && color >= 0 && color <= 4294967295 ? color : null;\n }\n if (match = hex6.exec(color))\n return parseInt(match[1] + \"ff\", 16) >>> 0;\n if (colors && colors[color] !== void 0) {\n return colors[color];\n }\n if (match = rgb.exec(color)) {\n return (parse255(match[1]) << 24 | // r\n parse255(match[2]) << 16 | // g\n parse255(match[3]) << 8 | // b\n 255) >>> // a\n 0;\n }\n if (match = rgba.exec(color)) {\n return (parse255(match[1]) << 24 | // r\n parse255(match[2]) << 16 | // g\n parse255(match[3]) << 8 | // b\n parse1(match[4])) >>> // a\n 0;\n }\n if (match = hex3.exec(color)) {\n return parseInt(\n match[1] + match[1] + // r\n match[2] + match[2] + // g\n match[3] + match[3] + // b\n \"ff\",\n // a\n 16\n ) >>> 0;\n }\n if (match = hex8.exec(color))\n return parseInt(match[1], 16) >>> 0;\n if (match = hex4.exec(color)) {\n return parseInt(\n match[1] + match[1] + // r\n match[2] + match[2] + // g\n match[3] + match[3] + // b\n match[4] + match[4],\n // a\n 16\n ) >>> 0;\n }\n if (match = hsl.exec(color)) {\n return (hslToRgb(\n parse360(match[1]),\n // h\n parsePercentage(match[2]),\n // s\n parsePercentage(match[3])\n // l\n ) | 255) >>> // a\n 0;\n }\n if (match = hsla.exec(color)) {\n return (hslToRgb(\n parse360(match[1]),\n // h\n parsePercentage(match[2]),\n // s\n parsePercentage(match[3])\n // l\n ) | parse1(match[4])) >>> // a\n 0;\n }\n return null;\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslToRgb(h, s, l) {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const b = hue2rgb(p, q, h - 1 / 3);\n return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\nfunction parse255(str) {\n const int = parseInt(str, 10);\n if (int < 0)\n return 0;\n if (int > 255)\n return 255;\n return int;\n}\nfunction parse360(str) {\n const int = parseFloat(str);\n return (int % 360 + 360) % 360 / 360;\n}\nfunction parse1(str) {\n const num = parseFloat(str);\n if (num < 0)\n return 0;\n if (num > 1)\n return 255;\n return Math.round(num * 255);\n}\nfunction parsePercentage(str) {\n const int = parseFloat(str);\n if (int < 0)\n return 0;\n if (int > 100)\n return 1;\n return int / 100;\n}\n\n// src/colorToRgba.ts\nfunction colorToRgba(input) {\n let int32Color = normalizeColor(input);\n if (int32Color === null)\n return input;\n int32Color = int32Color || 0;\n const r = (int32Color & 4278190080) >>> 24;\n const g = (int32Color & 16711680) >>> 16;\n const b = (int32Color & 65280) >>> 8;\n const a = (int32Color & 255) / 255;\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n}\n\n// src/createInterpolator.ts\nvar createInterpolator = (range, output, extrapolate) => {\n if (is.fun(range)) {\n return range;\n }\n if (is.arr(range)) {\n return createInterpolator({\n range,\n output,\n extrapolate\n });\n }\n if (is.str(range.output[0])) {\n return createStringInterpolator(range);\n }\n const config = range;\n const outputRange = config.output;\n const inputRange = config.range || [0, 1];\n const extrapolateLeft = config.extrapolateLeft || config.extrapolate || \"extend\";\n const extrapolateRight = config.extrapolateRight || config.extrapolate || \"extend\";\n const easing = config.easing || ((t) => t);\n return (input) => {\n const range2 = findRange(input, inputRange);\n return interpolate(\n input,\n inputRange[range2],\n inputRange[range2 + 1],\n outputRange[range2],\n outputRange[range2 + 1],\n easing,\n extrapolateLeft,\n extrapolateRight,\n config.map\n );\n };\n};\nfunction interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {\n let result = map ? map(input) : input;\n if (result < inputMin) {\n if (extrapolateLeft === \"identity\")\n return result;\n else if (extrapolateLeft === \"clamp\")\n result = inputMin;\n }\n if (result > inputMax) {\n if (extrapolateRight === \"identity\")\n return result;\n else if (extrapolateRight === \"clamp\")\n result = inputMax;\n }\n if (outputMin === outputMax)\n return outputMin;\n if (inputMin === inputMax)\n return input <= inputMin ? outputMin : outputMax;\n if (inputMin === -Infinity)\n result = -result;\n else if (inputMax === Infinity)\n result = result - inputMin;\n else\n result = (result - inputMin) / (inputMax - inputMin);\n result = easing(result);\n if (outputMin === -Infinity)\n result = -result;\n else if (outputMax === Infinity)\n result = result + outputMin;\n else\n result = result * (outputMax - outputMin) + outputMin;\n return result;\n}\nfunction findRange(input, inputRange) {\n for (var i = 1; i < inputRange.length - 1; ++i)\n if (inputRange[i] >= input)\n break;\n return i - 1;\n}\n\n// src/easings.ts\nvar steps = (steps2, direction = \"end\") => (progress2) => {\n progress2 = direction === \"end\" ? Math.min(progress2, 0.999) : Math.max(progress2, 1e-3);\n const expanded = progress2 * steps2;\n const rounded = direction === \"end\" ? Math.floor(expanded) : Math.ceil(expanded);\n return clamp(0, 1, rounded / steps2);\n};\nvar c1 = 1.70158;\nvar c2 = c1 * 1.525;\nvar c3 = c1 + 1;\nvar c4 = 2 * Math.PI / 3;\nvar c5 = 2 * Math.PI / 4.5;\nvar bounceOut = (x) => {\n const n1 = 7.5625;\n const d1 = 2.75;\n if (x < 1 / d1) {\n return n1 * x * x;\n } else if (x < 2 / d1) {\n return n1 * (x -= 1.5 / d1) * x + 0.75;\n } else if (x < 2.5 / d1) {\n return n1 * (x -= 2.25 / d1) * x + 0.9375;\n } else {\n return n1 * (x -= 2.625 / d1) * x + 0.984375;\n }\n};\nvar easings = {\n linear: (x) => x,\n easeInQuad: (x) => x * x,\n easeOutQuad: (x) => 1 - (1 - x) * (1 - x),\n easeInOutQuad: (x) => x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2,\n easeInCubic: (x) => x * x * x,\n easeOutCubic: (x) => 1 - Math.pow(1 - x, 3),\n easeInOutCubic: (x) => x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2,\n easeInQuart: (x) => x * x * x * x,\n easeOutQuart: (x) => 1 - Math.pow(1 - x, 4),\n easeInOutQuart: (x) => x < 0.5 ? 8 * x * x * x * x : 1 - Math.pow(-2 * x + 2, 4) / 2,\n easeInQuint: (x) => x * x * x * x * x,\n easeOutQuint: (x) => 1 - Math.pow(1 - x, 5),\n easeInOutQuint: (x) => x < 0.5 ? 16 * x * x * x * x * x : 1 - Math.pow(-2 * x + 2, 5) / 2,\n easeInSine: (x) => 1 - Math.cos(x * Math.PI / 2),\n easeOutSine: (x) => Math.sin(x * Math.PI / 2),\n easeInOutSine: (x) => -(Math.cos(Math.PI * x) - 1) / 2,\n easeInExpo: (x) => x === 0 ? 0 : Math.pow(2, 10 * x - 10),\n easeOutExpo: (x) => x === 1 ? 1 : 1 - Math.pow(2, -10 * x),\n easeInOutExpo: (x) => x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? Math.pow(2, 20 * x - 10) / 2 : (2 - Math.pow(2, -20 * x + 10)) / 2,\n easeInCirc: (x) => 1 - Math.sqrt(1 - Math.pow(x, 2)),\n easeOutCirc: (x) => Math.sqrt(1 - Math.pow(x - 1, 2)),\n easeInOutCirc: (x) => x < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2,\n easeInBack: (x) => c3 * x * x * x - c1 * x * x,\n easeOutBack: (x) => 1 + c3 * Math.pow(x - 1, 3) + c1 * Math.pow(x - 1, 2),\n easeInOutBack: (x) => x < 0.5 ? Math.pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2) / 2 : (Math.pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2,\n easeInElastic: (x) => x === 0 ? 0 : x === 1 ? 1 : -Math.pow(2, 10 * x - 10) * Math.sin((x * 10 - 10.75) * c4),\n easeOutElastic: (x) => x === 0 ? 0 : x === 1 ? 1 : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1,\n easeInOutElastic: (x) => x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2 : Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5) / 2 + 1,\n easeInBounce: (x) => 1 - bounceOut(1 - x),\n easeOutBounce: bounceOut,\n easeInOutBounce: (x) => x < 0.5 ? (1 - bounceOut(1 - 2 * x)) / 2 : (1 + bounceOut(2 * x - 1)) / 2,\n steps\n};\n\n// src/fluids.ts\nvar $get = Symbol.for(\"FluidValue.get\");\nvar $observers = Symbol.for(\"FluidValue.observers\");\nvar hasFluidValue = (arg) => Boolean(arg && arg[$get]);\nvar getFluidValue = (arg) => arg && arg[$get] ? arg[$get]() : arg;\nvar getFluidObservers = (target) => target[$observers] || null;\nfunction callFluidObserver(observer2, event) {\n if (observer2.eventObserved) {\n observer2.eventObserved(event);\n } else {\n observer2(event);\n }\n}\nfunction callFluidObservers(target, event) {\n const observers = target[$observers];\n if (observers) {\n observers.forEach((observer2) => {\n callFluidObserver(observer2, event);\n });\n }\n}\nvar FluidValue = class {\n constructor(get) {\n if (!get && !(get = this.get)) {\n throw Error(\"Unknown getter\");\n }\n setFluidGetter(this, get);\n }\n};\n$get, $observers;\nvar setFluidGetter = (target, get) => setHidden(target, $get, get);\nfunction addFluidObserver(target, observer2) {\n if (target[$get]) {\n let observers = target[$observers];\n if (!observers) {\n setHidden(target, $observers, observers = /* @__PURE__ */ new Set());\n }\n if (!observers.has(observer2)) {\n observers.add(observer2);\n if (target.observerAdded) {\n target.observerAdded(observers.size, observer2);\n }\n }\n }\n return observer2;\n}\nfunction removeFluidObserver(target, observer2) {\n const observers = target[$observers];\n if (observers && observers.has(observer2)) {\n const count = observers.size - 1;\n if (count) {\n observers.delete(observer2);\n } else {\n target[$observers] = null;\n }\n if (target.observerRemoved) {\n target.observerRemoved(count, observer2);\n }\n }\n}\nvar setHidden = (target, key, value) => Object.defineProperty(target, key, {\n value,\n writable: true,\n configurable: true\n});\n\n// src/regexs.ts\nvar numberRegex = /[+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g;\nvar colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d\\.]+%?\\))/gi;\nvar unitRegex = new RegExp(`(${numberRegex.source})(%|[a-z]+)`, \"i\");\nvar rgbaRegex = /rgba\\(([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+)\\)/gi;\nvar cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\n\n// src/variableToRgba.ts\nvar variableToRgba = (input) => {\n const [token, fallback] = parseCSSVariable(input);\n if (!token || isSSR()) {\n return input;\n }\n const value = window.getComputedStyle(document.documentElement).getPropertyValue(token);\n if (value) {\n return value.trim();\n } else if (fallback && fallback.startsWith(\"--\")) {\n const value2 = window.getComputedStyle(document.documentElement).getPropertyValue(fallback);\n if (value2) {\n return value2;\n } else {\n return input;\n }\n } else if (fallback && cssVariableRegex.test(fallback)) {\n return variableToRgba(fallback);\n } else if (fallback) {\n return fallback;\n }\n return input;\n};\nvar parseCSSVariable = (current) => {\n const match = cssVariableRegex.exec(current);\n if (!match)\n return [,];\n const [, token, fallback] = match;\n return [token, fallback];\n};\n\n// src/stringInterpolation.ts\nvar namedColorRegex;\nvar rgbaRound = (_, p1, p2, p3, p4) => `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})`;\nvar createStringInterpolator2 = (config) => {\n if (!namedColorRegex)\n namedColorRegex = colors ? (\n // match color names, ignore partial matches\n new RegExp(`(${Object.keys(colors).join(\"|\")})(?!\\\\w)`, \"g\")\n ) : (\n // never match\n /^\\b$/\n );\n const output = config.output.map((value) => {\n return getFluidValue(value).replace(cssVariableRegex, variableToRgba).replace(colorRegex, colorToRgba).replace(namedColorRegex, colorToRgba);\n });\n const keyframes = output.map((value) => value.match(numberRegex).map(Number));\n const outputRanges = keyframes[0].map(\n (_, i) => keyframes.map((values) => {\n if (!(i in values)) {\n throw Error('The arity of each \"output\" value must be equal');\n }\n return values[i];\n })\n );\n const interpolators = outputRanges.map(\n (output2) => createInterpolator({ ...config, output: output2 })\n );\n return (input) => {\n const missingUnit = !unitRegex.test(output[0]) && output.find((value) => unitRegex.test(value))?.replace(numberRegex, \"\");\n let i = 0;\n return output[0].replace(\n numberRegex,\n () => `${interpolators[i++](input)}${missingUnit || \"\"}`\n ).replace(rgbaRegex, rgbaRound);\n };\n};\n\n// src/deprecations.ts\nvar prefix = \"react-spring: \";\nvar once = (fn) => {\n const func = fn;\n let called = false;\n if (typeof func != \"function\") {\n throw new TypeError(`${prefix}once requires a function parameter`);\n }\n return (...args) => {\n if (!called) {\n func(...args);\n called = true;\n }\n };\n};\nvar warnInterpolate = once(console.warn);\nfunction deprecateInterpolate() {\n warnInterpolate(\n `${prefix}The \"interpolate\" function is deprecated in v9 (use \"to\" instead)`\n );\n}\nvar warnDirectCall = once(console.warn);\nfunction deprecateDirectCall() {\n warnDirectCall(\n `${prefix}Directly calling start instead of using the api object is deprecated in v9 (use \".start\" instead), this will be removed in later 0.X.0 versions`\n );\n}\n\n// src/isAnimatedString.ts\nfunction isAnimatedString(value) {\n return is.str(value) && (value[0] == \"#\" || /\\d/.test(value) || // Do not identify a CSS variable as an AnimatedString if its SSR\n !isSSR() && cssVariableRegex.test(value) || value in (colors || {}));\n}\n\n// src/dom-events/resize/resizeElement.ts\nvar observer;\nvar resizeHandlers = /* @__PURE__ */ new WeakMap();\nvar handleObservation = (entries) => entries.forEach(({ target, contentRect }) => {\n return resizeHandlers.get(target)?.forEach((handler) => handler(contentRect));\n});\nfunction resizeElement(handler, target) {\n if (!observer) {\n if (typeof ResizeObserver !== \"undefined\") {\n observer = new ResizeObserver(handleObservation);\n }\n }\n let elementHandlers = resizeHandlers.get(target);\n if (!elementHandlers) {\n elementHandlers = /* @__PURE__ */ new Set();\n resizeHandlers.set(target, elementHandlers);\n }\n elementHandlers.add(handler);\n if (observer) {\n observer.observe(target);\n }\n return () => {\n const elementHandlers2 = resizeHandlers.get(target);\n if (!elementHandlers2)\n return;\n elementHandlers2.delete(handler);\n if (!elementHandlers2.size && observer) {\n observer.unobserve(target);\n }\n };\n}\n\n// src/dom-events/resize/resizeWindow.ts\nvar listeners = /* @__PURE__ */ new Set();\nvar cleanupWindowResizeHandler;\nvar createResizeHandler = () => {\n const handleResize = () => {\n listeners.forEach(\n (callback) => callback({\n width: window.innerWidth,\n height: window.innerHeight\n })\n );\n };\n window.addEventListener(\"resize\", handleResize);\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n};\nvar resizeWindow = (callback) => {\n listeners.add(callback);\n if (!cleanupWindowResizeHandler) {\n cleanupWindowResizeHandler = createResizeHandler();\n }\n return () => {\n listeners.delete(callback);\n if (!listeners.size && cleanupWindowResizeHandler) {\n cleanupWindowResizeHandler();\n cleanupWindowResizeHandler = void 0;\n }\n };\n};\n\n// src/dom-events/resize/index.ts\nvar onResize = (callback, { container = document.documentElement } = {}) => {\n if (container === document.documentElement) {\n return resizeWindow(callback);\n } else {\n return resizeElement(callback, container);\n }\n};\n\n// src/progress.ts\nvar progress = (min, max, value) => max - min === 0 ? 1 : (value - min) / (max - min);\n\n// src/dom-events/scroll/ScrollHandler.ts\nvar SCROLL_KEYS = {\n x: {\n length: \"Width\",\n position: \"Left\"\n },\n y: {\n length: \"Height\",\n position: \"Top\"\n }\n};\nvar ScrollHandler = class {\n constructor(callback, container) {\n this.createAxis = () => ({\n current: 0,\n progress: 0,\n scrollLength: 0\n });\n this.updateAxis = (axisName) => {\n const axis = this.info[axisName];\n const { length, position } = SCROLL_KEYS[axisName];\n axis.current = this.container[`scroll${position}`];\n axis.scrollLength = this.container[\"scroll\" + length] - this.container[\"client\" + length];\n axis.progress = progress(0, axis.scrollLength, axis.current);\n };\n this.update = () => {\n this.updateAxis(\"x\");\n this.updateAxis(\"y\");\n };\n this.sendEvent = () => {\n this.callback(this.info);\n };\n this.advance = () => {\n this.update();\n this.sendEvent();\n };\n this.callback = callback;\n this.container = container;\n this.info = {\n time: 0,\n x: this.createAxis(),\n y: this.createAxis()\n };\n }\n};\n\n// src/dom-events/scroll/index.ts\nvar scrollListeners = /* @__PURE__ */ new WeakMap();\nvar resizeListeners = /* @__PURE__ */ new WeakMap();\nvar onScrollHandlers = /* @__PURE__ */ new WeakMap();\nvar getTarget = (container) => container === document.documentElement ? window : container;\nvar onScroll = (callback, { container = document.documentElement } = {}) => {\n let containerHandlers = onScrollHandlers.get(container);\n if (!containerHandlers) {\n containerHandlers = /* @__PURE__ */ new Set();\n onScrollHandlers.set(container, containerHandlers);\n }\n const containerHandler = new ScrollHandler(callback, container);\n containerHandlers.add(containerHandler);\n if (!scrollListeners.has(container)) {\n const listener = () => {\n containerHandlers?.forEach((handler) => handler.advance());\n return true;\n };\n scrollListeners.set(container, listener);\n const target = getTarget(container);\n window.addEventListener(\"resize\", listener, { passive: true });\n if (container !== document.documentElement) {\n resizeListeners.set(container, onResize(listener, { container }));\n }\n target.addEventListener(\"scroll\", listener, { passive: true });\n }\n const animateScroll = scrollListeners.get(container);\n raf(animateScroll);\n return () => {\n raf.cancel(animateScroll);\n const containerHandlers2 = onScrollHandlers.get(container);\n if (!containerHandlers2)\n return;\n containerHandlers2.delete(containerHandler);\n if (containerHandlers2.size)\n return;\n const listener = scrollListeners.get(container);\n scrollListeners.delete(container);\n if (listener) {\n getTarget(container).removeEventListener(\"scroll\", listener);\n window.removeEventListener(\"resize\", listener);\n resizeListeners.get(container)?.();\n }\n };\n};\n\n// src/hooks/useConstant.ts\nimport { useRef } from \"react\";\nfunction useConstant(init) {\n const ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\n// src/hooks/useForceUpdate.ts\nimport { useState } from \"react\";\n\n// src/hooks/useIsMounted.ts\nimport { useRef as useRef2 } from \"react\";\n\n// src/hooks/useIsomorphicLayoutEffect.ts\nimport { useEffect, useLayoutEffect } from \"react\";\nvar useIsomorphicLayoutEffect = isSSR() ? useEffect : useLayoutEffect;\n\n// src/hooks/useIsMounted.ts\nvar useIsMounted = () => {\n const isMounted = useRef2(false);\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n};\n\n// src/hooks/useForceUpdate.ts\nfunction useForceUpdate() {\n const update2 = useState()[1];\n const isMounted = useIsMounted();\n return () => {\n if (isMounted.current) {\n update2(Math.random());\n }\n };\n}\n\n// src/hooks/useMemoOne.ts\nimport { useEffect as useEffect2, useRef as useRef3, useState as useState2 } from \"react\";\nfunction useMemoOne(getResult, inputs) {\n const [initial] = useState2(\n () => ({\n inputs,\n result: getResult()\n })\n );\n const committed = useRef3();\n const prevCache = committed.current;\n let cache = prevCache;\n if (cache) {\n const useCache = Boolean(\n inputs && cache.inputs && areInputsEqual(inputs, cache.inputs)\n );\n if (!useCache) {\n cache = {\n inputs,\n result: getResult()\n };\n }\n } else {\n cache = initial;\n }\n useEffect2(() => {\n committed.current = cache;\n if (prevCache == initial) {\n initial.inputs = initial.result = void 0;\n }\n }, [cache]);\n return cache.result;\n}\nfunction areInputsEqual(next, prev) {\n if (next.length !== prev.length) {\n return false;\n }\n for (let i = 0; i < next.length; i++) {\n if (next[i] !== prev[i]) {\n return false;\n }\n }\n return true;\n}\n\n// src/hooks/useOnce.ts\nimport { useEffect as useEffect3 } from \"react\";\nvar useOnce = (effect) => useEffect3(effect, emptyDeps);\nvar emptyDeps = [];\n\n// src/hooks/usePrev.ts\nimport { useEffect as useEffect4, useRef as useRef4 } from \"react\";\nfunction usePrev(value) {\n const prevRef = useRef4();\n useEffect4(() => {\n prevRef.current = value;\n });\n return prevRef.current;\n}\n\n// src/hooks/useReducedMotion.ts\nimport { useState as useState3 } from \"react\";\nvar useReducedMotion = () => {\n const [reducedMotion, setReducedMotion] = useState3(null);\n useIsomorphicLayoutEffect(() => {\n const mql = window.matchMedia(\"(prefers-reduced-motion)\");\n const handleMediaChange = (e) => {\n setReducedMotion(e.matches);\n assign({\n skipAnimation: e.matches\n });\n };\n handleMediaChange(mql);\n mql.addEventListener(\"change\", handleMediaChange);\n return () => {\n mql.removeEventListener(\"change\", handleMediaChange);\n };\n }, []);\n return reducedMotion;\n};\nexport {\n FluidValue,\n globals_exports as Globals,\n addFluidObserver,\n callFluidObserver,\n callFluidObservers,\n clamp,\n colorToRgba,\n colors2 as colors,\n createInterpolator,\n createStringInterpolator2 as createStringInterpolator,\n defineHidden,\n deprecateDirectCall,\n deprecateInterpolate,\n each,\n eachProp,\n easings,\n flush,\n flushCalls,\n frameLoop,\n getFluidObservers,\n getFluidValue,\n hasFluidValue,\n hex3,\n hex4,\n hex6,\n hex8,\n hsl,\n hsla,\n is,\n isAnimatedString,\n isEqual,\n isSSR,\n noop,\n onResize,\n onScroll,\n once,\n prefix,\n raf,\n removeFluidObserver,\n rgb,\n rgba,\n setFluidGetter,\n toArray,\n useConstant,\n useForceUpdate,\n useIsomorphicLayoutEffect,\n useMemoOne,\n useOnce,\n usePrev,\n useReducedMotion\n};\n//# sourceMappingURL=react-spring_shared.modern.mjs.map","// src/Animated.ts\nimport { defineHidden } from \"@react-spring/shared\";\nvar $node = Symbol.for(\"Animated:node\");\nvar isAnimated = (value) => !!value && value[$node] === value;\nvar getAnimated = (owner) => owner && owner[$node];\nvar setAnimated = (owner, node) => defineHidden(owner, $node, node);\nvar getPayload = (owner) => owner && owner[$node] && owner[$node].getPayload();\nvar Animated = class {\n constructor() {\n setAnimated(this, this);\n }\n /** Get every `AnimatedValue` used by this node. */\n getPayload() {\n return this.payload || [];\n }\n};\n\n// src/AnimatedValue.ts\nimport { is } from \"@react-spring/shared\";\nvar AnimatedValue = class extends Animated {\n constructor(_value) {\n super();\n this._value = _value;\n this.done = true;\n this.durationProgress = 0;\n if (is.num(this._value)) {\n this.lastPosition = this._value;\n }\n }\n /** @internal */\n static create(value) {\n return new AnimatedValue(value);\n }\n getPayload() {\n return [this];\n }\n getValue() {\n return this._value;\n }\n setValue(value, step) {\n if (is.num(value)) {\n this.lastPosition = value;\n if (step) {\n value = Math.round(value / step) * step;\n if (this.done) {\n this.lastPosition = value;\n }\n }\n }\n if (this._value === value) {\n return false;\n }\n this._value = value;\n return true;\n }\n reset() {\n const { done } = this;\n this.done = false;\n if (is.num(this._value)) {\n this.elapsedTime = 0;\n this.durationProgress = 0;\n this.lastPosition = this._value;\n if (done)\n this.lastVelocity = null;\n this.v0 = null;\n }\n }\n};\n\n// src/AnimatedString.ts\nimport { is as is2, createInterpolator } from \"@react-spring/shared\";\nvar AnimatedString = class extends AnimatedValue {\n constructor(value) {\n super(0);\n this._string = null;\n this._toString = createInterpolator({\n output: [value, value]\n });\n }\n /** @internal */\n static create(value) {\n return new AnimatedString(value);\n }\n getValue() {\n const value = this._string;\n return value == null ? this._string = this._toString(this._value) : value;\n }\n setValue(value) {\n if (is2.str(value)) {\n if (value == this._string) {\n return false;\n }\n this._string = value;\n this._value = 1;\n } else if (super.setValue(value)) {\n this._string = null;\n } else {\n return false;\n }\n return true;\n }\n reset(goal) {\n if (goal) {\n this._toString = createInterpolator({\n output: [this.getValue(), goal]\n });\n }\n this._value = 0;\n super.reset();\n }\n};\n\n// src/AnimatedArray.ts\nimport { isAnimatedString } from \"@react-spring/shared\";\n\n// src/AnimatedObject.ts\nimport {\n each,\n eachProp,\n getFluidValue,\n hasFluidValue\n} from \"@react-spring/shared\";\n\n// src/context.ts\nvar TreeContext = { dependencies: null };\n\n// src/AnimatedObject.ts\nvar AnimatedObject = class extends Animated {\n constructor(source) {\n super();\n this.source = source;\n this.setValue(source);\n }\n getValue(animated) {\n const values = {};\n eachProp(this.source, (source, key) => {\n if (isAnimated(source)) {\n values[key] = source.getValue(animated);\n } else if (hasFluidValue(source)) {\n values[key] = getFluidValue(source);\n } else if (!animated) {\n values[key] = source;\n }\n });\n return values;\n }\n /** Replace the raw object data */\n setValue(source) {\n this.source = source;\n this.payload = this._makePayload(source);\n }\n reset() {\n if (this.payload) {\n each(this.payload, (node) => node.reset());\n }\n }\n /** Create a payload set. */\n _makePayload(source) {\n if (source) {\n const payload = /* @__PURE__ */ new Set();\n eachProp(source, this._addToPayload, payload);\n return Array.from(payload);\n }\n }\n /** Add to a payload set. */\n _addToPayload(source) {\n if (TreeContext.dependencies && hasFluidValue(source)) {\n TreeContext.dependencies.add(source);\n }\n const payload = getPayload(source);\n if (payload) {\n each(payload, (node) => this.add(node));\n }\n }\n};\n\n// src/AnimatedArray.ts\nvar AnimatedArray = class extends AnimatedObject {\n constructor(source) {\n super(source);\n }\n /** @internal */\n static create(source) {\n return new AnimatedArray(source);\n }\n getValue() {\n return this.source.map((node) => node.getValue());\n }\n setValue(source) {\n const payload = this.getPayload();\n if (source.length == payload.length) {\n return payload.map((node, i) => node.setValue(source[i])).some(Boolean);\n }\n super.setValue(source.map(makeAnimated));\n return true;\n }\n};\nfunction makeAnimated(value) {\n const nodeType = isAnimatedString(value) ? AnimatedString : AnimatedValue;\n return nodeType.create(value);\n}\n\n// src/getAnimatedType.ts\nimport { is as is3, isAnimatedString as isAnimatedString2 } from \"@react-spring/shared\";\nfunction getAnimatedType(value) {\n const parentNode = getAnimated(value);\n return parentNode ? parentNode.constructor : is3.arr(value) ? AnimatedArray : isAnimatedString2(value) ? AnimatedString : AnimatedValue;\n}\n\n// src/createHost.ts\nimport { is as is5, eachProp as eachProp2 } from \"@react-spring/shared\";\n\n// src/withAnimated.tsx\nimport * as React from \"react\";\nimport { forwardRef, useRef, useCallback, useEffect } from \"react\";\nimport {\n is as is4,\n each as each2,\n raf,\n useForceUpdate,\n useOnce,\n addFluidObserver,\n removeFluidObserver,\n useIsomorphicLayoutEffect\n} from \"@react-spring/shared\";\nvar withAnimated = (Component, host) => {\n const hasInstance = (\n // Function components must use \"forwardRef\" to avoid being\n // re-rendered on every animation frame.\n !is4.fun(Component) || Component.prototype && Component.prototype.isReactComponent\n );\n return forwardRef((givenProps, givenRef) => {\n const instanceRef = useRef(null);\n const ref = hasInstance && // eslint-disable-next-line react-hooks/rules-of-hooks\n useCallback(\n (value) => {\n instanceRef.current = updateRef(givenRef, value);\n },\n [givenRef]\n );\n const [props, deps] = getAnimatedState(givenProps, host);\n const forceUpdate = useForceUpdate();\n const callback = () => {\n const instance = instanceRef.current;\n if (hasInstance && !instance) {\n return;\n }\n const didUpdate = instance ? host.applyAnimatedValues(instance, props.getValue(true)) : false;\n if (didUpdate === false) {\n forceUpdate();\n }\n };\n const observer = new PropsObserver(callback, deps);\n const observerRef = useRef();\n useIsomorphicLayoutEffect(() => {\n observerRef.current = observer;\n each2(deps, (dep) => addFluidObserver(dep, observer));\n return () => {\n if (observerRef.current) {\n each2(\n observerRef.current.deps,\n (dep) => removeFluidObserver(dep, observerRef.current)\n );\n raf.cancel(observerRef.current.update);\n }\n };\n });\n useEffect(callback, []);\n useOnce(() => () => {\n const observer2 = observerRef.current;\n each2(observer2.deps, (dep) => removeFluidObserver(dep, observer2));\n });\n const usedProps = host.getComponentProps(props.getValue());\n return /* @__PURE__ */ React.createElement(Component, { ...usedProps, ref });\n });\n};\nvar PropsObserver = class {\n constructor(update, deps) {\n this.update = update;\n this.deps = deps;\n }\n eventObserved(event) {\n if (event.type == \"change\") {\n raf.write(this.update);\n }\n }\n};\nfunction getAnimatedState(props, host) {\n const dependencies = /* @__PURE__ */ new Set();\n TreeContext.dependencies = dependencies;\n if (props.style)\n props = {\n ...props,\n style: host.createAnimatedStyle(props.style)\n };\n props = new AnimatedObject(props);\n TreeContext.dependencies = null;\n return [props, dependencies];\n}\nfunction updateRef(ref, value) {\n if (ref) {\n if (is4.fun(ref))\n ref(value);\n else\n ref.current = value;\n }\n return value;\n}\n\n// src/createHost.ts\nvar cacheKey = Symbol.for(\"AnimatedComponent\");\nvar createHost = (components, {\n applyAnimatedValues = () => false,\n createAnimatedStyle = (style) => new AnimatedObject(style),\n getComponentProps = (props) => props\n} = {}) => {\n const hostConfig = {\n applyAnimatedValues,\n createAnimatedStyle,\n getComponentProps\n };\n const animated = (Component) => {\n const displayName = getDisplayName(Component) || \"Anonymous\";\n if (is5.str(Component)) {\n Component = animated[Component] || (animated[Component] = withAnimated(Component, hostConfig));\n } else {\n Component = Component[cacheKey] || (Component[cacheKey] = withAnimated(Component, hostConfig));\n }\n Component.displayName = `Animated(${displayName})`;\n return Component;\n };\n eachProp2(components, (Component, key) => {\n if (is5.arr(components)) {\n key = getDisplayName(Component);\n }\n animated[key] = animated(Component);\n });\n return {\n animated\n };\n};\nvar getDisplayName = (arg) => is5.str(arg) ? arg : arg && is5.str(arg.displayName) ? arg.displayName : is5.fun(arg) && arg.name || null;\nexport {\n Animated,\n AnimatedArray,\n AnimatedObject,\n AnimatedString,\n AnimatedValue,\n createHost,\n getAnimated,\n getAnimatedType,\n getPayload,\n isAnimated,\n setAnimated\n};\n//# sourceMappingURL=react-spring_animated.modern.mjs.map","// src/hooks/useChain.ts\nimport { each, useIsomorphicLayoutEffect } from \"@react-spring/shared\";\n\n// src/helpers.ts\nimport {\n is,\n toArray,\n eachProp,\n getFluidValue,\n isAnimatedString,\n Globals as G\n} from \"@react-spring/shared\";\nfunction callProp(value, ...args) {\n return is.fun(value) ? value(...args) : value;\n}\nvar matchProp = (value, key) => value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key)));\nvar resolveProp = (prop, key) => is.obj(prop) ? key && prop[key] : prop;\nvar getDefaultProp = (props, key) => props.default === true ? props[key] : props.default ? props.default[key] : void 0;\nvar noopTransform = (value) => value;\nvar getDefaultProps = (props, transform = noopTransform) => {\n let keys = DEFAULT_PROPS;\n if (props.default && props.default !== true) {\n props = props.default;\n keys = Object.keys(props);\n }\n const defaults2 = {};\n for (const key of keys) {\n const value = transform(props[key], key);\n if (!is.und(value)) {\n defaults2[key] = value;\n }\n }\n return defaults2;\n};\nvar DEFAULT_PROPS = [\n \"config\",\n \"onProps\",\n \"onStart\",\n \"onChange\",\n \"onPause\",\n \"onResume\",\n \"onRest\"\n];\nvar RESERVED_PROPS = {\n config: 1,\n from: 1,\n to: 1,\n ref: 1,\n loop: 1,\n reset: 1,\n pause: 1,\n cancel: 1,\n reverse: 1,\n immediate: 1,\n default: 1,\n delay: 1,\n onProps: 1,\n onStart: 1,\n onChange: 1,\n onPause: 1,\n onResume: 1,\n onRest: 1,\n onResolve: 1,\n // Transition props\n items: 1,\n trail: 1,\n sort: 1,\n expires: 1,\n initial: 1,\n enter: 1,\n update: 1,\n leave: 1,\n children: 1,\n onDestroyed: 1,\n // Internal props\n keys: 1,\n callId: 1,\n parentId: 1\n};\nfunction getForwardProps(props) {\n const forward = {};\n let count = 0;\n eachProp(props, (value, prop) => {\n if (!RESERVED_PROPS[prop]) {\n forward[prop] = value;\n count++;\n }\n });\n if (count) {\n return forward;\n }\n}\nfunction inferTo(props) {\n const to2 = getForwardProps(props);\n if (to2) {\n const out = { to: to2 };\n eachProp(props, (val, key) => key in to2 || (out[key] = val));\n return out;\n }\n return { ...props };\n}\nfunction computeGoal(value) {\n value = getFluidValue(value);\n return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? G.createStringInterpolator({\n range: [0, 1],\n output: [value, value]\n })(1) : value;\n}\nfunction hasProps(props) {\n for (const _ in props)\n return true;\n return false;\n}\nfunction isAsyncTo(to2) {\n return is.fun(to2) || is.arr(to2) && is.obj(to2[0]);\n}\nfunction detachRefs(ctrl, ref) {\n ctrl.ref?.delete(ctrl);\n ref?.delete(ctrl);\n}\nfunction replaceRef(ctrl, ref) {\n if (ref && ctrl.ref !== ref) {\n ctrl.ref?.delete(ctrl);\n ref.add(ctrl);\n ctrl.ref = ref;\n }\n}\n\n// src/hooks/useChain.ts\nfunction useChain(refs, timeSteps, timeFrame = 1e3) {\n useIsomorphicLayoutEffect(() => {\n if (timeSteps) {\n let prevDelay = 0;\n each(refs, (ref, i) => {\n const controllers = ref.current;\n if (controllers.length) {\n let delay = timeFrame * timeSteps[i];\n if (isNaN(delay))\n delay = prevDelay;\n else\n prevDelay = delay;\n each(controllers, (ctrl) => {\n each(ctrl.queue, (props) => {\n const memoizedDelayProp = props.delay;\n props.delay = (key) => delay + callProp(memoizedDelayProp || 0, key);\n });\n });\n ref.start();\n }\n });\n } else {\n let p = Promise.resolve();\n each(refs, (ref) => {\n const controllers = ref.current;\n if (controllers.length) {\n const queues = controllers.map((ctrl) => {\n const q = ctrl.queue;\n ctrl.queue = [];\n return q;\n });\n p = p.then(() => {\n each(\n controllers,\n (ctrl, i) => each(queues[i] || [], (update2) => ctrl.queue.push(update2))\n );\n return Promise.all(ref.start());\n });\n }\n });\n }\n });\n}\n\n// src/hooks/useSpring.ts\nimport { is as is9 } from \"@react-spring/shared\";\n\n// src/hooks/useSprings.ts\nimport { useContext as useContext2, useMemo, useRef } from \"react\";\nimport {\n is as is8,\n each as each5,\n usePrev,\n useOnce,\n useForceUpdate,\n useIsomorphicLayoutEffect as useIsomorphicLayoutEffect2\n} from \"@react-spring/shared\";\n\n// src/SpringValue.ts\nimport {\n is as is5,\n raf as raf3,\n each as each2,\n isEqual,\n toArray as toArray2,\n eachProp as eachProp3,\n frameLoop as frameLoop2,\n flushCalls,\n getFluidValue as getFluidValue2,\n isAnimatedString as isAnimatedString2,\n Globals as G5,\n callFluidObservers as callFluidObservers2,\n hasFluidValue,\n addFluidObserver,\n removeFluidObserver,\n getFluidObservers\n} from \"@react-spring/shared\";\nimport {\n AnimatedValue,\n AnimatedString,\n getPayload,\n getAnimated as getAnimated2,\n setAnimated,\n getAnimatedType\n} from \"@react-spring/animated\";\n\n// src/AnimationConfig.ts\nimport { is as is2, easings } from \"@react-spring/shared\";\n\n// src/constants.ts\nvar config = {\n default: { tension: 170, friction: 26 },\n gentle: { tension: 120, friction: 14 },\n wobbly: { tension: 180, friction: 12 },\n stiff: { tension: 210, friction: 20 },\n slow: { tension: 280, friction: 60 },\n molasses: { tension: 280, friction: 120 }\n};\n\n// src/AnimationConfig.ts\nvar defaults = {\n ...config.default,\n mass: 1,\n damping: 1,\n easing: easings.linear,\n clamp: false\n};\nvar AnimationConfig = class {\n constructor() {\n /**\n * The initial velocity of one or more values.\n *\n * @default 0\n */\n this.velocity = 0;\n Object.assign(this, defaults);\n }\n};\nfunction mergeConfig(config2, newConfig, defaultConfig) {\n if (defaultConfig) {\n defaultConfig = { ...defaultConfig };\n sanitizeConfig(defaultConfig, newConfig);\n newConfig = { ...defaultConfig, ...newConfig };\n }\n sanitizeConfig(config2, newConfig);\n Object.assign(config2, newConfig);\n for (const key in defaults) {\n if (config2[key] == null) {\n config2[key] = defaults[key];\n }\n }\n let { frequency, damping } = config2;\n const { mass } = config2;\n if (!is2.und(frequency)) {\n if (frequency < 0.01)\n frequency = 0.01;\n if (damping < 0)\n damping = 0;\n config2.tension = Math.pow(2 * Math.PI / frequency, 2) * mass;\n config2.friction = 4 * Math.PI * damping * mass / frequency;\n }\n return config2;\n}\nfunction sanitizeConfig(config2, props) {\n if (!is2.und(props.decay)) {\n config2.duration = void 0;\n } else {\n const isTensionConfig = !is2.und(props.tension) || !is2.und(props.friction);\n if (isTensionConfig || !is2.und(props.frequency) || !is2.und(props.damping) || !is2.und(props.mass)) {\n config2.duration = void 0;\n config2.decay = void 0;\n }\n if (isTensionConfig) {\n config2.frequency = void 0;\n }\n }\n}\n\n// src/Animation.ts\nvar emptyArray = [];\nvar Animation = class {\n constructor() {\n this.changed = false;\n this.values = emptyArray;\n this.toValues = null;\n this.fromValues = emptyArray;\n this.config = new AnimationConfig();\n this.immediate = false;\n }\n};\n\n// src/scheduleProps.ts\nimport { is as is3, raf, Globals as G2 } from \"@react-spring/shared\";\nfunction scheduleProps(callId, { key, props, defaultProps, state, actions }) {\n return new Promise((resolve, reject) => {\n let delay;\n let timeout;\n let cancel = matchProp(props.cancel ?? defaultProps?.cancel, key);\n if (cancel) {\n onStart();\n } else {\n if (!is3.und(props.pause)) {\n state.paused = matchProp(props.pause, key);\n }\n let pause = defaultProps?.pause;\n if (pause !== true) {\n pause = state.paused || matchProp(pause, key);\n }\n delay = callProp(props.delay || 0, key);\n if (pause) {\n state.resumeQueue.add(onResume);\n actions.pause();\n } else {\n actions.resume();\n onResume();\n }\n }\n function onPause() {\n state.resumeQueue.add(onResume);\n state.timeouts.delete(timeout);\n timeout.cancel();\n delay = timeout.time - raf.now();\n }\n function onResume() {\n if (delay > 0 && !G2.skipAnimation) {\n state.delayed = true;\n timeout = raf.setTimeout(onStart, delay);\n state.pauseQueue.add(onPause);\n state.timeouts.add(timeout);\n } else {\n onStart();\n }\n }\n function onStart() {\n if (state.delayed) {\n state.delayed = false;\n }\n state.pauseQueue.delete(onPause);\n state.timeouts.delete(timeout);\n if (callId <= (state.cancelId || 0)) {\n cancel = true;\n }\n try {\n actions.start({ ...props, callId, cancel }, resolve);\n } catch (err) {\n reject(err);\n }\n }\n });\n}\n\n// src/runAsync.ts\nimport {\n is as is4,\n raf as raf2,\n flush,\n eachProp as eachProp2,\n Globals as G3\n} from \"@react-spring/shared\";\n\n// src/AnimationResult.ts\nvar getCombinedResult = (target, results) => results.length == 1 ? results[0] : results.some((result) => result.cancelled) ? getCancelledResult(target.get()) : results.every((result) => result.noop) ? getNoopResult(target.get()) : getFinishedResult(\n target.get(),\n results.every((result) => result.finished)\n);\nvar getNoopResult = (value) => ({\n value,\n noop: true,\n finished: true,\n cancelled: false\n});\nvar getFinishedResult = (value, finished, cancelled = false) => ({\n value,\n finished,\n cancelled\n});\nvar getCancelledResult = (value) => ({\n value,\n cancelled: true,\n finished: false\n});\n\n// src/runAsync.ts\nfunction runAsync(to2, props, state, target) {\n const { callId, parentId, onRest } = props;\n const { asyncTo: prevTo, promise: prevPromise } = state;\n if (!parentId && to2 === prevTo && !props.reset) {\n return prevPromise;\n }\n return state.promise = (async () => {\n state.asyncId = callId;\n state.asyncTo = to2;\n const defaultProps = getDefaultProps(\n props,\n (value, key) => (\n // The `onRest` prop is only called when the `runAsync` promise is resolved.\n key === \"onRest\" ? void 0 : value\n )\n );\n let preventBail;\n let bail;\n const bailPromise = new Promise(\n (resolve, reject) => (preventBail = resolve, bail = reject)\n );\n const bailIfEnded = (bailSignal) => {\n const bailResult = (\n // The `cancel` prop or `stop` method was used.\n callId <= (state.cancelId || 0) && getCancelledResult(target) || // The async `to` prop was replaced.\n callId !== state.asyncId && getFinishedResult(target, false)\n );\n if (bailResult) {\n bailSignal.result = bailResult;\n bail(bailSignal);\n throw bailSignal;\n }\n };\n const animate = (arg1, arg2) => {\n const bailSignal = new BailSignal();\n const skipAnimationSignal = new SkipAnimationSignal();\n return (async () => {\n if (G3.skipAnimation) {\n stopAsync(state);\n skipAnimationSignal.result = getFinishedResult(target, false);\n bail(skipAnimationSignal);\n throw skipAnimationSignal;\n }\n bailIfEnded(bailSignal);\n const props2 = is4.obj(arg1) ? { ...arg1 } : { ...arg2, to: arg1 };\n props2.parentId = callId;\n eachProp2(defaultProps, (value, key) => {\n if (is4.und(props2[key])) {\n props2[key] = value;\n }\n });\n const result2 = await target.start(props2);\n bailIfEnded(bailSignal);\n if (state.paused) {\n await new Promise((resume) => {\n state.resumeQueue.add(resume);\n });\n }\n return result2;\n })();\n };\n let result;\n if (G3.skipAnimation) {\n stopAsync(state);\n return getFinishedResult(target, false);\n }\n try {\n let animating;\n if (is4.arr(to2)) {\n animating = (async (queue) => {\n for (const props2 of queue) {\n await animate(props2);\n }\n })(to2);\n } else {\n animating = Promise.resolve(to2(animate, target.stop.bind(target)));\n }\n await Promise.all([animating.then(preventBail), bailPromise]);\n result = getFinishedResult(target.get(), true, false);\n } catch (err) {\n if (err instanceof BailSignal) {\n result = err.result;\n } else if (err instanceof SkipAnimationSignal) {\n result = err.result;\n } else {\n throw err;\n }\n } finally {\n if (callId == state.asyncId) {\n state.asyncId = parentId;\n state.asyncTo = parentId ? prevTo : void 0;\n state.promise = parentId ? prevPromise : void 0;\n }\n }\n if (is4.fun(onRest)) {\n raf2.batchedUpdates(() => {\n onRest(result, target, target.item);\n });\n }\n return result;\n })();\n}\nfunction stopAsync(state, cancelId) {\n flush(state.timeouts, (t) => t.cancel());\n state.pauseQueue.clear();\n state.resumeQueue.clear();\n state.asyncId = state.asyncTo = state.promise = void 0;\n if (cancelId)\n state.cancelId = cancelId;\n}\nvar BailSignal = class extends Error {\n constructor() {\n super(\n \"An async animation has been interrupted. You see this error because you forgot to use `await` or `.catch(...)` on its returned promise.\"\n );\n }\n};\nvar SkipAnimationSignal = class extends Error {\n constructor() {\n super(\"SkipAnimationSignal\");\n }\n};\n\n// src/FrameValue.ts\nimport {\n deprecateInterpolate,\n frameLoop,\n FluidValue as FluidValue2,\n Globals as G4,\n callFluidObservers\n} from \"@react-spring/shared\";\nimport { getAnimated } from \"@react-spring/animated\";\nvar isFrameValue = (value) => value instanceof FrameValue;\nvar nextId = 1;\nvar FrameValue = class extends FluidValue2 {\n constructor() {\n super(...arguments);\n this.id = nextId++;\n this._priority = 0;\n }\n get priority() {\n return this._priority;\n }\n set priority(priority) {\n if (this._priority != priority) {\n this._priority = priority;\n this._onPriorityChange(priority);\n }\n }\n /** Get the current value */\n get() {\n const node = getAnimated(this);\n return node && node.getValue();\n }\n /** Create a spring that maps our value to another value */\n to(...args) {\n return G4.to(this, args);\n }\n /** @deprecated Use the `to` method instead. */\n interpolate(...args) {\n deprecateInterpolate();\n return G4.to(this, args);\n }\n toJSON() {\n return this.get();\n }\n observerAdded(count) {\n if (count == 1)\n this._attach();\n }\n observerRemoved(count) {\n if (count == 0)\n this._detach();\n }\n /** Called when the first child is added. */\n _attach() {\n }\n /** Called when the last child is removed. */\n _detach() {\n }\n /** Tell our children about our new value */\n _onChange(value, idle = false) {\n callFluidObservers(this, {\n type: \"change\",\n parent: this,\n value,\n idle\n });\n }\n /** Tell our children about our new priority */\n _onPriorityChange(priority) {\n if (!this.idle) {\n frameLoop.sort(this);\n }\n callFluidObservers(this, {\n type: \"priority\",\n parent: this,\n priority\n });\n }\n};\n\n// src/SpringPhase.ts\nvar $P = Symbol.for(\"SpringPhase\");\nvar HAS_ANIMATED = 1;\nvar IS_ANIMATING = 2;\nvar IS_PAUSED = 4;\nvar hasAnimated = (target) => (target[$P] & HAS_ANIMATED) > 0;\nvar isAnimating = (target) => (target[$P] & IS_ANIMATING) > 0;\nvar isPaused = (target) => (target[$P] & IS_PAUSED) > 0;\nvar setActiveBit = (target, active) => active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING;\nvar setPausedBit = (target, paused) => paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED;\n\n// src/SpringValue.ts\nvar SpringValue = class extends FrameValue {\n constructor(arg1, arg2) {\n super();\n /** The animation state */\n this.animation = new Animation();\n /** Some props have customizable default values */\n this.defaultProps = {};\n /** The state for `runAsync` calls */\n this._state = {\n paused: false,\n delayed: false,\n pauseQueue: /* @__PURE__ */ new Set(),\n resumeQueue: /* @__PURE__ */ new Set(),\n timeouts: /* @__PURE__ */ new Set()\n };\n /** The promise resolvers of pending `start` calls */\n this._pendingCalls = /* @__PURE__ */ new Set();\n /** The counter for tracking `scheduleProps` calls */\n this._lastCallId = 0;\n /** The last `scheduleProps` call that changed the `to` prop */\n this._lastToId = 0;\n this._memoizedDuration = 0;\n if (!is5.und(arg1) || !is5.und(arg2)) {\n const props = is5.obj(arg1) ? { ...arg1 } : { ...arg2, from: arg1 };\n if (is5.und(props.default)) {\n props.default = true;\n }\n this.start(props);\n }\n }\n /** Equals true when not advancing on each frame. */\n get idle() {\n return !(isAnimating(this) || this._state.asyncTo) || isPaused(this);\n }\n get goal() {\n return getFluidValue2(this.animation.to);\n }\n get velocity() {\n const node = getAnimated2(this);\n return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map((node2) => node2.lastVelocity || 0);\n }\n /**\n * When true, this value has been animated at least once.\n */\n get hasAnimated() {\n return hasAnimated(this);\n }\n /**\n * When true, this value has an unfinished animation,\n * which is either active or paused.\n */\n get isAnimating() {\n return isAnimating(this);\n }\n /**\n * When true, all current and future animations are paused.\n */\n get isPaused() {\n return isPaused(this);\n }\n /**\n *\n *\n */\n get isDelayed() {\n return this._state.delayed;\n }\n /** Advance the current animation by a number of milliseconds */\n advance(dt) {\n let idle = true;\n let changed = false;\n const anim = this.animation;\n let { toValues } = anim;\n const { config: config2 } = anim;\n const payload = getPayload(anim.to);\n if (!payload && hasFluidValue(anim.to)) {\n toValues = toArray2(getFluidValue2(anim.to));\n }\n anim.values.forEach((node2, i) => {\n if (node2.done)\n return;\n const to2 = (\n // Animated strings always go from 0 to 1.\n node2.constructor == AnimatedString ? 1 : payload ? payload[i].lastPosition : toValues[i]\n );\n let finished = anim.immediate;\n let position = to2;\n if (!finished) {\n position = node2.lastPosition;\n if (config2.tension <= 0) {\n node2.done = true;\n return;\n }\n let elapsed = node2.elapsedTime += dt;\n const from = anim.fromValues[i];\n const v0 = node2.v0 != null ? node2.v0 : node2.v0 = is5.arr(config2.velocity) ? config2.velocity[i] : config2.velocity;\n let velocity;\n const precision = config2.precision || (from == to2 ? 5e-3 : Math.min(1, Math.abs(to2 - from) * 1e-3));\n if (!is5.und(config2.duration)) {\n let p = 1;\n if (config2.duration > 0) {\n if (this._memoizedDuration !== config2.duration) {\n this._memoizedDuration = config2.duration;\n if (node2.durationProgress > 0) {\n node2.elapsedTime = config2.duration * node2.durationProgress;\n elapsed = node2.elapsedTime += dt;\n }\n }\n p = (config2.progress || 0) + elapsed / this._memoizedDuration;\n p = p > 1 ? 1 : p < 0 ? 0 : p;\n node2.durationProgress = p;\n }\n position = from + config2.easing(p) * (to2 - from);\n velocity = (position - node2.lastPosition) / dt;\n finished = p == 1;\n } else if (config2.decay) {\n const decay = config2.decay === true ? 0.998 : config2.decay;\n const e = Math.exp(-(1 - decay) * elapsed);\n position = from + v0 / (1 - decay) * (1 - e);\n finished = Math.abs(node2.lastPosition - position) <= precision;\n velocity = v0 * e;\n } else {\n velocity = node2.lastVelocity == null ? v0 : node2.lastVelocity;\n const restVelocity = config2.restVelocity || precision / 10;\n const bounceFactor = config2.clamp ? 0 : config2.bounce;\n const canBounce = !is5.und(bounceFactor);\n const isGrowing = from == to2 ? node2.v0 > 0 : from < to2;\n let isMoving;\n let isBouncing = false;\n const step = 1;\n const numSteps = Math.ceil(dt / step);\n for (let n = 0; n < numSteps; ++n) {\n isMoving = Math.abs(velocity) > restVelocity;\n if (!isMoving) {\n finished = Math.abs(to2 - position) <= precision;\n if (finished) {\n break;\n }\n }\n if (canBounce) {\n isBouncing = position == to2 || position > to2 == isGrowing;\n if (isBouncing) {\n velocity = -velocity * bounceFactor;\n position = to2;\n }\n }\n const springForce = -config2.tension * 1e-6 * (position - to2);\n const dampingForce = -config2.friction * 1e-3 * velocity;\n const acceleration = (springForce + dampingForce) / config2.mass;\n velocity = velocity + acceleration * step;\n position = position + velocity * step;\n }\n }\n node2.lastVelocity = velocity;\n if (Number.isNaN(position)) {\n console.warn(`Got NaN while animating:`, this);\n finished = true;\n }\n }\n if (payload && !payload[i].done) {\n finished = false;\n }\n if (finished) {\n node2.done = true;\n } else {\n idle = false;\n }\n if (node2.setValue(position, config2.round)) {\n changed = true;\n }\n });\n const node = getAnimated2(this);\n const currVal = node.getValue();\n if (idle) {\n const finalVal = getFluidValue2(anim.to);\n if ((currVal !== finalVal || changed) && !config2.decay) {\n node.setValue(finalVal);\n this._onChange(finalVal);\n } else if (changed && config2.decay) {\n this._onChange(currVal);\n }\n this._stop();\n } else if (changed) {\n this._onChange(currVal);\n }\n }\n /** Set the current value, while stopping the current animation */\n set(value) {\n raf3.batchedUpdates(() => {\n this._stop();\n this._focus(value);\n this._set(value);\n });\n return this;\n }\n /**\n * Freeze the active animation in time, as well as any updates merged\n * before `resume` is called.\n */\n pause() {\n this._update({ pause: true });\n }\n /** Resume the animation if paused. */\n resume() {\n this._update({ pause: false });\n }\n /** Skip to the end of the current animation. */\n finish() {\n if (isAnimating(this)) {\n const { to: to2, config: config2 } = this.animation;\n raf3.batchedUpdates(() => {\n this._onStart();\n if (!config2.decay) {\n this._set(to2, false);\n }\n this._stop();\n });\n }\n return this;\n }\n /** Push props into the pending queue. */\n update(props) {\n const queue = this.queue || (this.queue = []);\n queue.push(props);\n return this;\n }\n start(to2, arg2) {\n let queue;\n if (!is5.und(to2)) {\n queue = [is5.obj(to2) ? to2 : { ...arg2, to: to2 }];\n } else {\n queue = this.queue || [];\n this.queue = [];\n }\n return Promise.all(\n queue.map((props) => {\n const up = this._update(props);\n return up;\n })\n ).then((results) => getCombinedResult(this, results));\n }\n /**\n * Stop the current animation, and cancel any delayed updates.\n *\n * Pass `true` to call `onRest` with `cancelled: true`.\n */\n stop(cancel) {\n const { to: to2 } = this.animation;\n this._focus(this.get());\n stopAsync(this._state, cancel && this._lastCallId);\n raf3.batchedUpdates(() => this._stop(to2, cancel));\n return this;\n }\n /** Restart the animation. */\n reset() {\n this._update({ reset: true });\n }\n /** @internal */\n eventObserved(event) {\n if (event.type == \"change\") {\n this._start();\n } else if (event.type == \"priority\") {\n this.priority = event.priority + 1;\n }\n }\n /**\n * Parse the `to` and `from` range from the given `props` object.\n *\n * This also ensures the initial value is available to animated components\n * during the render phase.\n */\n _prepareNode(props) {\n const key = this.key || \"\";\n let { to: to2, from } = props;\n to2 = is5.obj(to2) ? to2[key] : to2;\n if (to2 == null || isAsyncTo(to2)) {\n to2 = void 0;\n }\n from = is5.obj(from) ? from[key] : from;\n if (from == null) {\n from = void 0;\n }\n const range = { to: to2, from };\n if (!hasAnimated(this)) {\n if (props.reverse)\n [to2, from] = [from, to2];\n from = getFluidValue2(from);\n if (!is5.und(from)) {\n this._set(from);\n } else if (!getAnimated2(this)) {\n this._set(to2);\n }\n }\n return range;\n }\n /** Every update is processed by this method before merging. */\n _update({ ...props }, isLoop) {\n const { key, defaultProps } = this;\n if (props.default)\n Object.assign(\n defaultProps,\n getDefaultProps(\n props,\n (value, prop) => /^on/.test(prop) ? resolveProp(value, key) : value\n )\n );\n mergeActiveFn(this, props, \"onProps\");\n sendEvent(this, \"onProps\", props, this);\n const range = this._prepareNode(props);\n if (Object.isFrozen(this)) {\n throw Error(\n \"Cannot animate a `SpringValue` object that is frozen. Did you forget to pass your component to `animated(...)` before animating its props?\"\n );\n }\n const state = this._state;\n return scheduleProps(++this._lastCallId, {\n key,\n props,\n defaultProps,\n state,\n actions: {\n pause: () => {\n if (!isPaused(this)) {\n setPausedBit(this, true);\n flushCalls(state.pauseQueue);\n sendEvent(\n this,\n \"onPause\",\n getFinishedResult(this, checkFinished(this, this.animation.to)),\n this\n );\n }\n },\n resume: () => {\n if (isPaused(this)) {\n setPausedBit(this, false);\n if (isAnimating(this)) {\n this._resume();\n }\n flushCalls(state.resumeQueue);\n sendEvent(\n this,\n \"onResume\",\n getFinishedResult(this, checkFinished(this, this.animation.to)),\n this\n );\n }\n },\n start: this._merge.bind(this, range)\n }\n }).then((result) => {\n if (props.loop && result.finished && !(isLoop && result.noop)) {\n const nextProps = createLoopUpdate(props);\n if (nextProps) {\n return this._update(nextProps, true);\n }\n }\n return result;\n });\n }\n /** Merge props into the current animation */\n _merge(range, props, resolve) {\n if (props.cancel) {\n this.stop(true);\n return resolve(getCancelledResult(this));\n }\n const hasToProp = !is5.und(range.to);\n const hasFromProp = !is5.und(range.from);\n if (hasToProp || hasFromProp) {\n if (props.callId > this._lastToId) {\n this._lastToId = props.callId;\n } else {\n return resolve(getCancelledResult(this));\n }\n }\n const { key, defaultProps, animation: anim } = this;\n const { to: prevTo, from: prevFrom } = anim;\n let { to: to2 = prevTo, from = prevFrom } = range;\n if (hasFromProp && !hasToProp && (!props.default || is5.und(to2))) {\n to2 = from;\n }\n if (props.reverse)\n [to2, from] = [from, to2];\n const hasFromChanged = !isEqual(from, prevFrom);\n if (hasFromChanged) {\n anim.from = from;\n }\n from = getFluidValue2(from);\n const hasToChanged = !isEqual(to2, prevTo);\n if (hasToChanged) {\n this._focus(to2);\n }\n const hasAsyncTo = isAsyncTo(props.to);\n const { config: config2 } = anim;\n const { decay, velocity } = config2;\n if (hasToProp || hasFromProp) {\n config2.velocity = 0;\n }\n if (props.config && !hasAsyncTo) {\n mergeConfig(\n config2,\n callProp(props.config, key),\n // Avoid calling the same \"config\" prop twice.\n props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0\n );\n }\n let node = getAnimated2(this);\n if (!node || is5.und(to2)) {\n return resolve(getFinishedResult(this, true));\n }\n const reset = (\n // When `reset` is undefined, the `from` prop implies `reset: true`,\n // except for declarative updates. When `reset` is defined, there\n // must exist a value to animate from.\n is5.und(props.reset) ? hasFromProp && !props.default : !is5.und(from) && matchProp(props.reset, key)\n );\n const value = reset ? from : this.get();\n const goal = computeGoal(to2);\n const isAnimatable = is5.num(goal) || is5.arr(goal) || isAnimatedString2(goal);\n const immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key));\n if (hasToChanged) {\n const nodeType = getAnimatedType(to2);\n if (nodeType !== node.constructor) {\n if (immediate) {\n node = this._set(goal);\n } else\n throw Error(\n `Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the \"to\" prop suggests`\n );\n }\n }\n const goalType = node.constructor;\n let started = hasFluidValue(to2);\n let finished = false;\n if (!started) {\n const hasValueChanged = reset || !hasAnimated(this) && hasFromChanged;\n if (hasToChanged || hasValueChanged) {\n finished = isEqual(computeGoal(value), goal);\n started = !finished;\n }\n if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config2.decay, decay) || !isEqual(config2.velocity, velocity)) {\n started = true;\n }\n }\n if (finished && isAnimating(this)) {\n if (anim.changed && !reset) {\n started = true;\n } else if (!started) {\n this._stop(prevTo);\n }\n }\n if (!hasAsyncTo) {\n if (started || hasFluidValue(prevTo)) {\n anim.values = node.getPayload();\n anim.toValues = hasFluidValue(to2) ? null : goalType == AnimatedString ? [1] : toArray2(goal);\n }\n if (anim.immediate != immediate) {\n anim.immediate = immediate;\n if (!immediate && !reset) {\n this._set(prevTo);\n }\n }\n if (started) {\n const { onRest } = anim;\n each2(ACTIVE_EVENTS, (type) => mergeActiveFn(this, props, type));\n const result = getFinishedResult(this, checkFinished(this, prevTo));\n flushCalls(this._pendingCalls, result);\n this._pendingCalls.add(resolve);\n if (anim.changed)\n raf3.batchedUpdates(() => {\n anim.changed = !reset;\n onRest?.(result, this);\n if (reset) {\n callProp(defaultProps.onRest, result);\n } else {\n anim.onStart?.(result, this);\n }\n });\n }\n }\n if (reset) {\n this._set(value);\n }\n if (hasAsyncTo) {\n resolve(runAsync(props.to, props, this._state, this));\n } else if (started) {\n this._start();\n } else if (isAnimating(this) && !hasToChanged) {\n this._pendingCalls.add(resolve);\n } else {\n resolve(getNoopResult(value));\n }\n }\n /** Update the `animation.to` value, which might be a `FluidValue` */\n _focus(value) {\n const anim = this.animation;\n if (value !== anim.to) {\n if (getFluidObservers(this)) {\n this._detach();\n }\n anim.to = value;\n if (getFluidObservers(this)) {\n this._attach();\n }\n }\n }\n _attach() {\n let priority = 0;\n const { to: to2 } = this.animation;\n if (hasFluidValue(to2)) {\n addFluidObserver(to2, this);\n if (isFrameValue(to2)) {\n priority = to2.priority + 1;\n }\n }\n this.priority = priority;\n }\n _detach() {\n const { to: to2 } = this.animation;\n if (hasFluidValue(to2)) {\n removeFluidObserver(to2, this);\n }\n }\n /**\n * Update the current value from outside the frameloop,\n * and return the `Animated` node.\n */\n _set(arg, idle = true) {\n const value = getFluidValue2(arg);\n if (!is5.und(value)) {\n const oldNode = getAnimated2(this);\n if (!oldNode || !isEqual(value, oldNode.getValue())) {\n const nodeType = getAnimatedType(value);\n if (!oldNode || oldNode.constructor != nodeType) {\n setAnimated(this, nodeType.create(value));\n } else {\n oldNode.setValue(value);\n }\n if (oldNode) {\n raf3.batchedUpdates(() => {\n this._onChange(value, idle);\n });\n }\n }\n }\n return getAnimated2(this);\n }\n _onStart() {\n const anim = this.animation;\n if (!anim.changed) {\n anim.changed = true;\n sendEvent(\n this,\n \"onStart\",\n getFinishedResult(this, checkFinished(this, anim.to)),\n this\n );\n }\n }\n _onChange(value, idle) {\n if (!idle) {\n this._onStart();\n callProp(this.animation.onChange, value, this);\n }\n callProp(this.defaultProps.onChange, value, this);\n super._onChange(value, idle);\n }\n // This method resets the animation state (even if already animating) to\n // ensure the latest from/to range is used, and it also ensures this spring\n // is added to the frameloop.\n _start() {\n const anim = this.animation;\n getAnimated2(this).reset(getFluidValue2(anim.to));\n if (!anim.immediate) {\n anim.fromValues = anim.values.map((node) => node.lastPosition);\n }\n if (!isAnimating(this)) {\n setActiveBit(this, true);\n if (!isPaused(this)) {\n this._resume();\n }\n }\n }\n _resume() {\n if (G5.skipAnimation) {\n this.finish();\n } else {\n frameLoop2.start(this);\n }\n }\n /**\n * Exit the frameloop and notify `onRest` listeners.\n *\n * Always wrap `_stop` calls with `batchedUpdates`.\n */\n _stop(goal, cancel) {\n if (isAnimating(this)) {\n setActiveBit(this, false);\n const anim = this.animation;\n each2(anim.values, (node) => {\n node.done = true;\n });\n if (anim.toValues) {\n anim.onChange = anim.onPause = anim.onResume = void 0;\n }\n callFluidObservers2(this, {\n type: \"idle\",\n parent: this\n });\n const result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal ?? anim.to));\n flushCalls(this._pendingCalls, result);\n if (anim.changed) {\n anim.changed = false;\n sendEvent(this, \"onRest\", result, this);\n }\n }\n }\n};\nfunction checkFinished(target, to2) {\n const goal = computeGoal(to2);\n const value = computeGoal(target.get());\n return isEqual(value, goal);\n}\nfunction createLoopUpdate(props, loop = props.loop, to2 = props.to) {\n const loopRet = callProp(loop);\n if (loopRet) {\n const overrides = loopRet !== true && inferTo(loopRet);\n const reverse = (overrides || props).reverse;\n const reset = !overrides || overrides.reset;\n return createUpdate({\n ...props,\n loop,\n // Avoid updating default props when looping.\n default: false,\n // Never loop the `pause` prop.\n pause: void 0,\n // For the \"reverse\" prop to loop as expected, the \"to\" prop\n // must be undefined. The \"reverse\" prop is ignored when the\n // \"to\" prop is an array or function.\n to: !reverse || isAsyncTo(to2) ? to2 : void 0,\n // Ignore the \"from\" prop except on reset.\n from: reset ? props.from : void 0,\n reset,\n // The \"loop\" prop can return a \"useSpring\" props object to\n // override any of the original props.\n ...overrides\n });\n }\n}\nfunction createUpdate(props) {\n const { to: to2, from } = props = inferTo(props);\n const keys = /* @__PURE__ */ new Set();\n if (is5.obj(to2))\n findDefined(to2, keys);\n if (is5.obj(from))\n findDefined(from, keys);\n props.keys = keys.size ? Array.from(keys) : null;\n return props;\n}\nfunction declareUpdate(props) {\n const update2 = createUpdate(props);\n if (is5.und(update2.default)) {\n update2.default = getDefaultProps(update2);\n }\n return update2;\n}\nfunction findDefined(values, keys) {\n eachProp3(values, (value, key) => value != null && keys.add(key));\n}\nvar ACTIVE_EVENTS = [\n \"onStart\",\n \"onRest\",\n \"onChange\",\n \"onPause\",\n \"onResume\"\n];\nfunction mergeActiveFn(target, props, type) {\n target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : void 0;\n}\nfunction sendEvent(target, type, ...args) {\n target.animation[type]?.(...args);\n target.defaultProps[type]?.(...args);\n}\n\n// src/Controller.ts\nimport {\n is as is6,\n raf as raf4,\n each as each3,\n noop,\n flush as flush2,\n toArray as toArray3,\n eachProp as eachProp4,\n flushCalls as flushCalls2,\n addFluidObserver as addFluidObserver2\n} from \"@react-spring/shared\";\nvar BATCHED_EVENTS = [\"onStart\", \"onChange\", \"onRest\"];\nvar nextId2 = 1;\nvar Controller = class {\n constructor(props, flush3) {\n this.id = nextId2++;\n /** The animated values */\n this.springs = {};\n /** The queue of props passed to the `update` method. */\n this.queue = [];\n /** The counter for tracking `scheduleProps` calls */\n this._lastAsyncId = 0;\n /** The values currently being animated */\n this._active = /* @__PURE__ */ new Set();\n /** The values that changed recently */\n this._changed = /* @__PURE__ */ new Set();\n /** Equals false when `onStart` listeners can be called */\n this._started = false;\n /** State used by the `runAsync` function */\n this._state = {\n paused: false,\n pauseQueue: /* @__PURE__ */ new Set(),\n resumeQueue: /* @__PURE__ */ new Set(),\n timeouts: /* @__PURE__ */ new Set()\n };\n /** The event queues that are flushed once per frame maximum */\n this._events = {\n onStart: /* @__PURE__ */ new Map(),\n onChange: /* @__PURE__ */ new Map(),\n onRest: /* @__PURE__ */ new Map()\n };\n this._onFrame = this._onFrame.bind(this);\n if (flush3) {\n this._flush = flush3;\n }\n if (props) {\n this.start({ default: true, ...props });\n }\n }\n /**\n * Equals `true` when no spring values are in the frameloop, and\n * no async animation is currently active.\n */\n get idle() {\n return !this._state.asyncTo && Object.values(this.springs).every((spring) => {\n return spring.idle && !spring.isDelayed && !spring.isPaused;\n });\n }\n get item() {\n return this._item;\n }\n set item(item) {\n this._item = item;\n }\n /** Get the current values of our springs */\n get() {\n const values = {};\n this.each((spring, key) => values[key] = spring.get());\n return values;\n }\n /** Set the current values without animating. */\n set(values) {\n for (const key in values) {\n const value = values[key];\n if (!is6.und(value)) {\n this.springs[key].set(value);\n }\n }\n }\n /** Push an update onto the queue of each value. */\n update(props) {\n if (props) {\n this.queue.push(createUpdate(props));\n }\n return this;\n }\n /**\n * Start the queued animations for every spring, and resolve the returned\n * promise once all queued animations have finished or been cancelled.\n *\n * When you pass a queue (instead of nothing), that queue is used instead of\n * the queued animations added with the `update` method, which are left alone.\n */\n start(props) {\n let { queue } = this;\n if (props) {\n queue = toArray3(props).map(createUpdate);\n } else {\n this.queue = [];\n }\n if (this._flush) {\n return this._flush(this, queue);\n }\n prepareKeys(this, queue);\n return flushUpdateQueue(this, queue);\n }\n /** @internal */\n stop(arg, keys) {\n if (arg !== !!arg) {\n keys = arg;\n }\n if (keys) {\n const springs = this.springs;\n each3(toArray3(keys), (key) => springs[key].stop(!!arg));\n } else {\n stopAsync(this._state, this._lastAsyncId);\n this.each((spring) => spring.stop(!!arg));\n }\n return this;\n }\n /** Freeze the active animation in time */\n pause(keys) {\n if (is6.und(keys)) {\n this.start({ pause: true });\n } else {\n const springs = this.springs;\n each3(toArray3(keys), (key) => springs[key].pause());\n }\n return this;\n }\n /** Resume the animation if paused. */\n resume(keys) {\n if (is6.und(keys)) {\n this.start({ pause: false });\n } else {\n const springs = this.springs;\n each3(toArray3(keys), (key) => springs[key].resume());\n }\n return this;\n }\n /** Call a function once per spring value */\n each(iterator) {\n eachProp4(this.springs, iterator);\n }\n /** @internal Called at the end of every animation frame */\n _onFrame() {\n const { onStart, onChange, onRest } = this._events;\n const active = this._active.size > 0;\n const changed = this._changed.size > 0;\n if (active && !this._started || changed && !this._started) {\n this._started = true;\n flush2(onStart, ([onStart2, result]) => {\n result.value = this.get();\n onStart2(result, this, this._item);\n });\n }\n const idle = !active && this._started;\n const values = changed || idle && onRest.size ? this.get() : null;\n if (changed && onChange.size) {\n flush2(onChange, ([onChange2, result]) => {\n result.value = values;\n onChange2(result, this, this._item);\n });\n }\n if (idle) {\n this._started = false;\n flush2(onRest, ([onRest2, result]) => {\n result.value = values;\n onRest2(result, this, this._item);\n });\n }\n }\n /** @internal */\n eventObserved(event) {\n if (event.type == \"change\") {\n this._changed.add(event.parent);\n if (!event.idle) {\n this._active.add(event.parent);\n }\n } else if (event.type == \"idle\") {\n this._active.delete(event.parent);\n } else\n return;\n raf4.onFrame(this._onFrame);\n }\n};\nfunction flushUpdateQueue(ctrl, queue) {\n return Promise.all(queue.map((props) => flushUpdate(ctrl, props))).then(\n (results) => getCombinedResult(ctrl, results)\n );\n}\nasync function flushUpdate(ctrl, props, isLoop) {\n const { keys, to: to2, from, loop, onRest, onResolve } = props;\n const defaults2 = is6.obj(props.default) && props.default;\n if (loop) {\n props.loop = false;\n }\n if (to2 === false)\n props.to = null;\n if (from === false)\n props.from = null;\n const asyncTo = is6.arr(to2) || is6.fun(to2) ? to2 : void 0;\n if (asyncTo) {\n props.to = void 0;\n props.onRest = void 0;\n if (defaults2) {\n defaults2.onRest = void 0;\n }\n } else {\n each3(BATCHED_EVENTS, (key) => {\n const handler = props[key];\n if (is6.fun(handler)) {\n const queue = ctrl[\"_events\"][key];\n props[key] = ({ finished, cancelled }) => {\n const result2 = queue.get(handler);\n if (result2) {\n if (!finished)\n result2.finished = false;\n if (cancelled)\n result2.cancelled = true;\n } else {\n queue.set(handler, {\n value: null,\n finished: finished || false,\n cancelled: cancelled || false\n });\n }\n };\n if (defaults2) {\n defaults2[key] = props[key];\n }\n }\n });\n }\n const state = ctrl[\"_state\"];\n if (props.pause === !state.paused) {\n state.paused = props.pause;\n flushCalls2(props.pause ? state.pauseQueue : state.resumeQueue);\n } else if (state.paused) {\n props.pause = true;\n }\n const promises = (keys || Object.keys(ctrl.springs)).map(\n (key) => ctrl.springs[key].start(props)\n );\n const cancel = props.cancel === true || getDefaultProp(props, \"cancel\") === true;\n if (asyncTo || cancel && state.asyncId) {\n promises.push(\n scheduleProps(++ctrl[\"_lastAsyncId\"], {\n props,\n state,\n actions: {\n pause: noop,\n resume: noop,\n start(props2, resolve) {\n if (cancel) {\n stopAsync(state, ctrl[\"_lastAsyncId\"]);\n resolve(getCancelledResult(ctrl));\n } else {\n props2.onRest = onRest;\n resolve(\n runAsync(\n asyncTo,\n props2,\n state,\n ctrl\n )\n );\n }\n }\n }\n })\n );\n }\n if (state.paused) {\n await new Promise((resume) => {\n state.resumeQueue.add(resume);\n });\n }\n const result = getCombinedResult(ctrl, await Promise.all(promises));\n if (loop && result.finished && !(isLoop && result.noop)) {\n const nextProps = createLoopUpdate(props, loop, to2);\n if (nextProps) {\n prepareKeys(ctrl, [nextProps]);\n return flushUpdate(ctrl, nextProps, true);\n }\n }\n if (onResolve) {\n raf4.batchedUpdates(() => onResolve(result, ctrl, ctrl.item));\n }\n return result;\n}\nfunction getSprings(ctrl, props) {\n const springs = { ...ctrl.springs };\n if (props) {\n each3(toArray3(props), (props2) => {\n if (is6.und(props2.keys)) {\n props2 = createUpdate(props2);\n }\n if (!is6.obj(props2.to)) {\n props2 = { ...props2, to: void 0 };\n }\n prepareSprings(springs, props2, (key) => {\n return createSpring(key);\n });\n });\n }\n setSprings(ctrl, springs);\n return springs;\n}\nfunction setSprings(ctrl, springs) {\n eachProp4(springs, (spring, key) => {\n if (!ctrl.springs[key]) {\n ctrl.springs[key] = spring;\n addFluidObserver2(spring, ctrl);\n }\n });\n}\nfunction createSpring(key, observer) {\n const spring = new SpringValue();\n spring.key = key;\n if (observer) {\n addFluidObserver2(spring, observer);\n }\n return spring;\n}\nfunction prepareSprings(springs, props, create) {\n if (props.keys) {\n each3(props.keys, (key) => {\n const spring = springs[key] || (springs[key] = create(key));\n spring[\"_prepareNode\"](props);\n });\n }\n}\nfunction prepareKeys(ctrl, queue) {\n each3(queue, (props) => {\n prepareSprings(ctrl.springs, props, (key) => {\n return createSpring(key, ctrl);\n });\n });\n}\n\n// src/SpringContext.tsx\nimport * as React from \"react\";\nimport { useContext } from \"react\";\nimport { useMemoOne } from \"@react-spring/shared\";\nvar SpringContext = ({\n children,\n ...props\n}) => {\n const inherited = useContext(ctx);\n const pause = props.pause || !!inherited.pause, immediate = props.immediate || !!inherited.immediate;\n props = useMemoOne(() => ({ pause, immediate }), [pause, immediate]);\n const { Provider } = ctx;\n return /* @__PURE__ */ React.createElement(Provider, { value: props }, children);\n};\nvar ctx = makeContext(SpringContext, {});\nSpringContext.Provider = ctx.Provider;\nSpringContext.Consumer = ctx.Consumer;\nfunction makeContext(target, init) {\n Object.assign(target, React.createContext(init));\n target.Provider._context = target;\n target.Consumer._context = target;\n return target;\n}\n\n// src/SpringRef.ts\nimport { each as each4, is as is7, deprecateDirectCall } from \"@react-spring/shared\";\nvar SpringRef = () => {\n const current = [];\n const SpringRef2 = function(props) {\n deprecateDirectCall();\n const results = [];\n each4(current, (ctrl, i) => {\n if (is7.und(props)) {\n results.push(ctrl.start());\n } else {\n const update2 = _getProps(props, ctrl, i);\n if (update2) {\n results.push(ctrl.start(update2));\n }\n }\n });\n return results;\n };\n SpringRef2.current = current;\n SpringRef2.add = function(ctrl) {\n if (!current.includes(ctrl)) {\n current.push(ctrl);\n }\n };\n SpringRef2.delete = function(ctrl) {\n const i = current.indexOf(ctrl);\n if (~i)\n current.splice(i, 1);\n };\n SpringRef2.pause = function() {\n each4(current, (ctrl) => ctrl.pause(...arguments));\n return this;\n };\n SpringRef2.resume = function() {\n each4(current, (ctrl) => ctrl.resume(...arguments));\n return this;\n };\n SpringRef2.set = function(values) {\n each4(current, (ctrl, i) => {\n const update2 = is7.fun(values) ? values(i, ctrl) : values;\n if (update2) {\n ctrl.set(update2);\n }\n });\n };\n SpringRef2.start = function(props) {\n const results = [];\n each4(current, (ctrl, i) => {\n if (is7.und(props)) {\n results.push(ctrl.start());\n } else {\n const update2 = this._getProps(props, ctrl, i);\n if (update2) {\n results.push(ctrl.start(update2));\n }\n }\n });\n return results;\n };\n SpringRef2.stop = function() {\n each4(current, (ctrl) => ctrl.stop(...arguments));\n return this;\n };\n SpringRef2.update = function(props) {\n each4(current, (ctrl, i) => ctrl.update(this._getProps(props, ctrl, i)));\n return this;\n };\n const _getProps = function(arg, ctrl, index) {\n return is7.fun(arg) ? arg(index, ctrl) : arg;\n };\n SpringRef2._getProps = _getProps;\n return SpringRef2;\n};\n\n// src/hooks/useSprings.ts\nfunction useSprings(length, props, deps) {\n const propsFn = is8.fun(props) && props;\n if (propsFn && !deps)\n deps = [];\n const ref = useMemo(\n () => propsFn || arguments.length == 3 ? SpringRef() : void 0,\n []\n );\n const layoutId = useRef(0);\n const forceUpdate = useForceUpdate();\n const state = useMemo(\n () => ({\n ctrls: [],\n queue: [],\n flush(ctrl, updates2) {\n const springs2 = getSprings(ctrl, updates2);\n const canFlushSync = layoutId.current > 0 && !state.queue.length && !Object.keys(springs2).some((key) => !ctrl.springs[key]);\n return canFlushSync ? flushUpdateQueue(ctrl, updates2) : new Promise((resolve) => {\n setSprings(ctrl, springs2);\n state.queue.push(() => {\n resolve(flushUpdateQueue(ctrl, updates2));\n });\n forceUpdate();\n });\n }\n }),\n []\n );\n const ctrls = useRef([...state.ctrls]);\n const updates = [];\n const prevLength = usePrev(length) || 0;\n useMemo(() => {\n each5(ctrls.current.slice(length, prevLength), (ctrl) => {\n detachRefs(ctrl, ref);\n ctrl.stop(true);\n });\n ctrls.current.length = length;\n declareUpdates(prevLength, length);\n }, [length]);\n useMemo(() => {\n declareUpdates(0, Math.min(prevLength, length));\n }, deps);\n function declareUpdates(startIndex, endIndex) {\n for (let i = startIndex; i < endIndex; i++) {\n const ctrl = ctrls.current[i] || (ctrls.current[i] = new Controller(null, state.flush));\n const update2 = propsFn ? propsFn(i, ctrl) : props[i];\n if (update2) {\n updates[i] = declareUpdate(update2);\n }\n }\n }\n const springs = ctrls.current.map((ctrl, i) => getSprings(ctrl, updates[i]));\n const context = useContext2(SpringContext);\n const prevContext = usePrev(context);\n const hasContext = context !== prevContext && hasProps(context);\n useIsomorphicLayoutEffect2(() => {\n layoutId.current++;\n state.ctrls = ctrls.current;\n const { queue } = state;\n if (queue.length) {\n state.queue = [];\n each5(queue, (cb) => cb());\n }\n each5(ctrls.current, (ctrl, i) => {\n ref?.add(ctrl);\n if (hasContext) {\n ctrl.start({ default: context });\n }\n const update2 = updates[i];\n if (update2) {\n replaceRef(ctrl, update2.ref);\n if (ctrl.ref) {\n ctrl.queue.push(update2);\n } else {\n ctrl.start(update2);\n }\n }\n });\n });\n useOnce(() => () => {\n each5(state.ctrls, (ctrl) => ctrl.stop(true));\n });\n const values = springs.map((x) => ({ ...x }));\n return ref ? [values, ref] : values;\n}\n\n// src/hooks/useSpring.ts\nfunction useSpring(props, deps) {\n const isFn = is9.fun(props);\n const [[values], ref] = useSprings(\n 1,\n isFn ? props : [props],\n isFn ? deps || [] : deps\n );\n return isFn || arguments.length == 2 ? [values, ref] : values;\n}\n\n// src/hooks/useSpringRef.ts\nimport { useState } from \"react\";\nvar initSpringRef = () => SpringRef();\nvar useSpringRef = () => useState(initSpringRef)[0];\n\n// src/hooks/useSpringValue.ts\nimport { useConstant, useOnce as useOnce2 } from \"@react-spring/shared\";\nvar useSpringValue = (initial, props) => {\n const springValue = useConstant(() => new SpringValue(initial, props));\n useOnce2(() => () => {\n springValue.stop();\n });\n return springValue;\n};\n\n// src/hooks/useTrail.ts\nimport { each as each6, is as is10, useIsomorphicLayoutEffect as useIsomorphicLayoutEffect3 } from \"@react-spring/shared\";\nfunction useTrail(length, propsArg, deps) {\n const propsFn = is10.fun(propsArg) && propsArg;\n if (propsFn && !deps)\n deps = [];\n let reverse = true;\n let passedRef = void 0;\n const result = useSprings(\n length,\n (i, ctrl) => {\n const props = propsFn ? propsFn(i, ctrl) : propsArg;\n passedRef = props.ref;\n reverse = reverse && props.reverse;\n return props;\n },\n // Ensure the props function is called when no deps exist.\n // This works around the 3 argument rule.\n deps || [{}]\n );\n useIsomorphicLayoutEffect3(() => {\n each6(result[1].current, (ctrl, i) => {\n const parent = result[1].current[i + (reverse ? 1 : -1)];\n replaceRef(ctrl, passedRef);\n if (ctrl.ref) {\n if (parent) {\n ctrl.update({ to: parent.springs });\n }\n return;\n }\n if (parent) {\n ctrl.start({ to: parent.springs });\n } else {\n ctrl.start();\n }\n });\n }, deps);\n if (propsFn || arguments.length == 3) {\n const ref = passedRef ?? result[1];\n ref[\"_getProps\"] = (propsArg2, ctrl, i) => {\n const props = is10.fun(propsArg2) ? propsArg2(i, ctrl) : propsArg2;\n if (props) {\n const parent = ref.current[i + (props.reverse ? 1 : -1)];\n if (parent)\n props.to = parent.springs;\n return props;\n }\n };\n return result;\n }\n return result[0];\n}\n\n// src/hooks/useTransition.tsx\nimport * as React2 from \"react\";\nimport { useContext as useContext3, useRef as useRef2, useMemo as useMemo2 } from \"react\";\nimport {\n is as is11,\n toArray as toArray4,\n useForceUpdate as useForceUpdate2,\n useOnce as useOnce3,\n usePrev as usePrev2,\n each as each7,\n useIsomorphicLayoutEffect as useIsomorphicLayoutEffect4\n} from \"@react-spring/shared\";\nfunction useTransition(data, props, deps) {\n const propsFn = is11.fun(props) && props;\n const {\n reset,\n sort,\n trail = 0,\n expires = true,\n exitBeforeEnter = false,\n onDestroyed,\n ref: propsRef,\n config: propsConfig\n } = propsFn ? propsFn() : props;\n const ref = useMemo2(\n () => propsFn || arguments.length == 3 ? SpringRef() : void 0,\n []\n );\n const items = toArray4(data);\n const transitions = [];\n const usedTransitions = useRef2(null);\n const prevTransitions = reset ? null : usedTransitions.current;\n useIsomorphicLayoutEffect4(() => {\n usedTransitions.current = transitions;\n });\n useOnce3(() => {\n each7(transitions, (t) => {\n ref?.add(t.ctrl);\n t.ctrl.ref = ref;\n });\n return () => {\n each7(usedTransitions.current, (t) => {\n if (t.expired) {\n clearTimeout(t.expirationId);\n }\n detachRefs(t.ctrl, ref);\n t.ctrl.stop(true);\n });\n };\n });\n const keys = getKeys(items, propsFn ? propsFn() : props, prevTransitions);\n const expired = reset && usedTransitions.current || [];\n useIsomorphicLayoutEffect4(\n () => each7(expired, ({ ctrl, item, key }) => {\n detachRefs(ctrl, ref);\n callProp(onDestroyed, item, key);\n })\n );\n const reused = [];\n if (prevTransitions)\n each7(prevTransitions, (t, i) => {\n if (t.expired) {\n clearTimeout(t.expirationId);\n expired.push(t);\n } else {\n i = reused[i] = keys.indexOf(t.key);\n if (~i)\n transitions[i] = t;\n }\n });\n each7(items, (item, i) => {\n if (!transitions[i]) {\n transitions[i] = {\n key: keys[i],\n item,\n phase: \"mount\" /* MOUNT */,\n ctrl: new Controller()\n };\n transitions[i].ctrl.item = item;\n }\n });\n if (reused.length) {\n let i = -1;\n const { leave } = propsFn ? propsFn() : props;\n each7(reused, (keyIndex, prevIndex) => {\n const t = prevTransitions[prevIndex];\n if (~keyIndex) {\n i = transitions.indexOf(t);\n transitions[i] = { ...t, item: items[keyIndex] };\n } else if (leave) {\n transitions.splice(++i, 0, t);\n }\n });\n }\n if (is11.fun(sort)) {\n transitions.sort((a, b) => sort(a.item, b.item));\n }\n let delay = -trail;\n const forceUpdate = useForceUpdate2();\n const defaultProps = getDefaultProps(props);\n const changes = /* @__PURE__ */ new Map();\n const exitingTransitions = useRef2(/* @__PURE__ */ new Map());\n const forceChange = useRef2(false);\n each7(transitions, (t, i) => {\n const key = t.key;\n const prevPhase = t.phase;\n const p = propsFn ? propsFn() : props;\n let to2;\n let phase;\n const propsDelay = callProp(p.delay || 0, key);\n if (prevPhase == \"mount\" /* MOUNT */) {\n to2 = p.enter;\n phase = \"enter\" /* ENTER */;\n } else {\n const isLeave = keys.indexOf(key) < 0;\n if (prevPhase != \"leave\" /* LEAVE */) {\n if (isLeave) {\n to2 = p.leave;\n phase = \"leave\" /* LEAVE */;\n } else if (to2 = p.update) {\n phase = \"update\" /* UPDATE */;\n } else\n return;\n } else if (!isLeave) {\n to2 = p.enter;\n phase = \"enter\" /* ENTER */;\n } else\n return;\n }\n to2 = callProp(to2, t.item, i);\n to2 = is11.obj(to2) ? inferTo(to2) : { to: to2 };\n if (!to2.config) {\n const config2 = propsConfig || defaultProps.config;\n to2.config = callProp(config2, t.item, i, phase);\n }\n delay += trail;\n const payload = {\n ...defaultProps,\n // we need to add our props.delay value you here.\n delay: propsDelay + delay,\n ref: propsRef,\n immediate: p.immediate,\n // This prevents implied resets.\n reset: false,\n // Merge any phase-specific props.\n ...to2\n };\n if (phase == \"enter\" /* ENTER */ && is11.und(payload.from)) {\n const p2 = propsFn ? propsFn() : props;\n const from = is11.und(p2.initial) || prevTransitions ? p2.from : p2.initial;\n payload.from = callProp(from, t.item, i);\n }\n const { onResolve } = payload;\n payload.onResolve = (result) => {\n callProp(onResolve, result);\n const transitions2 = usedTransitions.current;\n const t2 = transitions2.find((t3) => t3.key === key);\n if (!t2)\n return;\n if (result.cancelled && t2.phase != \"update\" /* UPDATE */) {\n return;\n }\n if (t2.ctrl.idle) {\n const idle = transitions2.every((t3) => t3.ctrl.idle);\n if (t2.phase == \"leave\" /* LEAVE */) {\n const expiry = callProp(expires, t2.item);\n if (expiry !== false) {\n const expiryMs = expiry === true ? 0 : expiry;\n t2.expired = true;\n if (!idle && expiryMs > 0) {\n if (expiryMs <= 2147483647)\n t2.expirationId = setTimeout(forceUpdate, expiryMs);\n return;\n }\n }\n }\n if (idle && transitions2.some((t3) => t3.expired)) {\n exitingTransitions.current.delete(t2);\n if (exitBeforeEnter) {\n forceChange.current = true;\n }\n forceUpdate();\n }\n }\n };\n const springs = getSprings(t.ctrl, payload);\n if (phase === \"leave\" /* LEAVE */ && exitBeforeEnter) {\n exitingTransitions.current.set(t, { phase, springs, payload });\n } else {\n changes.set(t, { phase, springs, payload });\n }\n });\n const context = useContext3(SpringContext);\n const prevContext = usePrev2(context);\n const hasContext = context !== prevContext && hasProps(context);\n useIsomorphicLayoutEffect4(() => {\n if (hasContext) {\n each7(transitions, (t) => {\n t.ctrl.start({ default: context });\n });\n }\n }, [context]);\n each7(changes, (_, t) => {\n if (exitingTransitions.current.size) {\n const ind = transitions.findIndex((state) => state.key === t.key);\n transitions.splice(ind, 1);\n }\n });\n useIsomorphicLayoutEffect4(\n () => {\n each7(\n exitingTransitions.current.size ? exitingTransitions.current : changes,\n ({ phase, payload }, t) => {\n const { ctrl } = t;\n t.phase = phase;\n ref?.add(ctrl);\n if (hasContext && phase == \"enter\" /* ENTER */) {\n ctrl.start({ default: context });\n }\n if (payload) {\n replaceRef(ctrl, payload.ref);\n if ((ctrl.ref || ref) && !forceChange.current) {\n ctrl.update(payload);\n } else {\n ctrl.start(payload);\n if (forceChange.current) {\n forceChange.current = false;\n }\n }\n }\n }\n );\n },\n reset ? void 0 : deps\n );\n const renderTransitions = (render) => /* @__PURE__ */ React2.createElement(React2.Fragment, null, transitions.map((t, i) => {\n const { springs } = changes.get(t) || t.ctrl;\n const elem = render({ ...springs }, t.item, t, i);\n return elem && elem.type ? /* @__PURE__ */ React2.createElement(\n elem.type,\n {\n ...elem.props,\n key: is11.str(t.key) || is11.num(t.key) ? t.key : t.ctrl.id,\n ref: elem.ref\n }\n ) : elem;\n }));\n return ref ? [renderTransitions, ref] : renderTransitions;\n}\nvar nextKey = 1;\nfunction getKeys(items, { key, keys = key }, prevTransitions) {\n if (keys === null) {\n const reused = /* @__PURE__ */ new Set();\n return items.map((item) => {\n const t = prevTransitions && prevTransitions.find(\n (t2) => t2.item === item && t2.phase !== \"leave\" /* LEAVE */ && !reused.has(t2)\n );\n if (t) {\n reused.add(t);\n return t.key;\n }\n return nextKey++;\n });\n }\n return is11.und(keys) ? items : is11.fun(keys) ? items.map(keys) : toArray4(keys);\n}\n\n// src/hooks/useScroll.ts\nimport { each as each8, onScroll, useIsomorphicLayoutEffect as useIsomorphicLayoutEffect5 } from \"@react-spring/shared\";\nvar useScroll = ({\n container,\n ...springOptions\n} = {}) => {\n const [scrollValues, api] = useSpring(\n () => ({\n scrollX: 0,\n scrollY: 0,\n scrollXProgress: 0,\n scrollYProgress: 0,\n ...springOptions\n }),\n []\n );\n useIsomorphicLayoutEffect5(() => {\n const cleanupScroll = onScroll(\n ({ x, y }) => {\n api.start({\n scrollX: x.current,\n scrollXProgress: x.progress,\n scrollY: y.current,\n scrollYProgress: y.progress\n });\n },\n { container: container?.current || void 0 }\n );\n return () => {\n each8(Object.values(scrollValues), (value) => value.stop());\n cleanupScroll();\n };\n }, []);\n return scrollValues;\n};\n\n// src/hooks/useResize.ts\nimport { onResize, each as each9, useIsomorphicLayoutEffect as useIsomorphicLayoutEffect6 } from \"@react-spring/shared\";\nvar useResize = ({\n container,\n ...springOptions\n}) => {\n const [sizeValues, api] = useSpring(\n () => ({\n width: 0,\n height: 0,\n ...springOptions\n }),\n []\n );\n useIsomorphicLayoutEffect6(() => {\n const cleanupScroll = onResize(\n ({ width, height }) => {\n api.start({\n width,\n height,\n immediate: sizeValues.width.get() === 0 || sizeValues.height.get() === 0\n });\n },\n { container: container?.current || void 0 }\n );\n return () => {\n each9(Object.values(sizeValues), (value) => value.stop());\n cleanupScroll();\n };\n }, []);\n return sizeValues;\n};\n\n// src/hooks/useInView.ts\nimport { useRef as useRef3, useState as useState2 } from \"react\";\nimport { is as is12, useIsomorphicLayoutEffect as useIsomorphicLayoutEffect7 } from \"@react-spring/shared\";\nvar defaultThresholdOptions = {\n any: 0,\n all: 1\n};\nfunction useInView(props, args) {\n const [isInView, setIsInView] = useState2(false);\n const ref = useRef3();\n const propsFn = is12.fun(props) && props;\n const springsProps = propsFn ? propsFn() : {};\n const { to: to2 = {}, from = {}, ...restSpringProps } = springsProps;\n const intersectionArguments = propsFn ? args : props;\n const [springs, api] = useSpring(() => ({ from, ...restSpringProps }), []);\n useIsomorphicLayoutEffect7(() => {\n const element = ref.current;\n const {\n root,\n once,\n amount = \"any\",\n ...restArgs\n } = intersectionArguments ?? {};\n if (!element || once && isInView || typeof IntersectionObserver === \"undefined\")\n return;\n const activeIntersections = /* @__PURE__ */ new WeakMap();\n const onEnter = () => {\n if (to2) {\n api.start(to2);\n }\n setIsInView(true);\n const cleanup = () => {\n if (from) {\n api.start(from);\n }\n setIsInView(false);\n };\n return once ? void 0 : cleanup;\n };\n const handleIntersection = (entries) => {\n entries.forEach((entry) => {\n const onLeave = activeIntersections.get(entry.target);\n if (entry.isIntersecting === Boolean(onLeave)) {\n return;\n }\n if (entry.isIntersecting) {\n const newOnLeave = onEnter();\n if (is12.fun(newOnLeave)) {\n activeIntersections.set(entry.target, newOnLeave);\n } else {\n observer.unobserve(entry.target);\n }\n } else if (onLeave) {\n onLeave();\n activeIntersections.delete(entry.target);\n }\n });\n };\n const observer = new IntersectionObserver(handleIntersection, {\n root: root && root.current || void 0,\n threshold: typeof amount === \"number\" || Array.isArray(amount) ? amount : defaultThresholdOptions[amount],\n ...restArgs\n });\n observer.observe(element);\n return () => observer.unobserve(element);\n }, [intersectionArguments]);\n if (propsFn) {\n return [ref, springs];\n }\n return [ref, isInView];\n}\n\n// src/components/Spring.tsx\nfunction Spring({ children, ...props }) {\n return children(useSpring(props));\n}\n\n// src/components/Trail.tsx\nimport { is as is13 } from \"@react-spring/shared\";\nfunction Trail({\n items,\n children,\n ...props\n}) {\n const trails = useTrail(items.length, props);\n return items.map((item, index) => {\n const result = children(item, index);\n return is13.fun(result) ? result(trails[index]) : result;\n });\n}\n\n// src/components/Transition.tsx\nfunction Transition({\n items,\n children,\n ...props\n}) {\n return useTransition(items, props)(children);\n}\n\n// src/interpolate.ts\nimport { deprecateInterpolate as deprecateInterpolate2 } from \"@react-spring/shared\";\n\n// src/Interpolation.ts\nimport {\n is as is14,\n raf as raf5,\n each as each10,\n isEqual as isEqual2,\n toArray as toArray5,\n frameLoop as frameLoop3,\n getFluidValue as getFluidValue3,\n createInterpolator,\n Globals as G6,\n callFluidObservers as callFluidObservers3,\n addFluidObserver as addFluidObserver3,\n removeFluidObserver as removeFluidObserver2,\n hasFluidValue as hasFluidValue2\n} from \"@react-spring/shared\";\nimport {\n getAnimated as getAnimated3,\n setAnimated as setAnimated2,\n getAnimatedType as getAnimatedType2,\n getPayload as getPayload2\n} from \"@react-spring/animated\";\nvar Interpolation = class extends FrameValue {\n constructor(source, args) {\n super();\n this.source = source;\n /** Equals false when in the frameloop */\n this.idle = true;\n /** The inputs which are currently animating */\n this._active = /* @__PURE__ */ new Set();\n this.calc = createInterpolator(...args);\n const value = this._get();\n const nodeType = getAnimatedType2(value);\n setAnimated2(this, nodeType.create(value));\n }\n advance(_dt) {\n const value = this._get();\n const oldValue = this.get();\n if (!isEqual2(value, oldValue)) {\n getAnimated3(this).setValue(value);\n this._onChange(value, this.idle);\n }\n if (!this.idle && checkIdle(this._active)) {\n becomeIdle(this);\n }\n }\n _get() {\n const inputs = is14.arr(this.source) ? this.source.map(getFluidValue3) : toArray5(getFluidValue3(this.source));\n return this.calc(...inputs);\n }\n _start() {\n if (this.idle && !checkIdle(this._active)) {\n this.idle = false;\n each10(getPayload2(this), (node) => {\n node.done = false;\n });\n if (G6.skipAnimation) {\n raf5.batchedUpdates(() => this.advance());\n becomeIdle(this);\n } else {\n frameLoop3.start(this);\n }\n }\n }\n // Observe our sources only when we're observed.\n _attach() {\n let priority = 1;\n each10(toArray5(this.source), (source) => {\n if (hasFluidValue2(source)) {\n addFluidObserver3(source, this);\n }\n if (isFrameValue(source)) {\n if (!source.idle) {\n this._active.add(source);\n }\n priority = Math.max(priority, source.priority + 1);\n }\n });\n this.priority = priority;\n this._start();\n }\n // Stop observing our sources once we have no observers.\n _detach() {\n each10(toArray5(this.source), (source) => {\n if (hasFluidValue2(source)) {\n removeFluidObserver2(source, this);\n }\n });\n this._active.clear();\n becomeIdle(this);\n }\n /** @internal */\n eventObserved(event) {\n if (event.type == \"change\") {\n if (event.idle) {\n this.advance();\n } else {\n this._active.add(event.parent);\n this._start();\n }\n } else if (event.type == \"idle\") {\n this._active.delete(event.parent);\n } else if (event.type == \"priority\") {\n this.priority = toArray5(this.source).reduce(\n (highest, parent) => Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1),\n 0\n );\n }\n }\n};\nfunction isIdle(source) {\n return source.idle !== false;\n}\nfunction checkIdle(active) {\n return !active.size || Array.from(active).every(isIdle);\n}\nfunction becomeIdle(self) {\n if (!self.idle) {\n self.idle = true;\n each10(getPayload2(self), (node) => {\n node.done = true;\n });\n callFluidObservers3(self, {\n type: \"idle\",\n parent: self\n });\n }\n}\n\n// src/interpolate.ts\nvar to = (source, ...args) => new Interpolation(source, args);\nvar interpolate = (source, ...args) => (deprecateInterpolate2(), new Interpolation(source, args));\n\n// src/globals.ts\nimport {\n Globals,\n frameLoop as frameLoop4,\n createStringInterpolator\n} from \"@react-spring/shared\";\nGlobals.assign({\n createStringInterpolator,\n to: (source, args) => new Interpolation(source, args)\n});\nvar update = frameLoop4.advance;\n\n// src/index.ts\nimport {\n createInterpolator as createInterpolator2,\n useIsomorphicLayoutEffect as useIsomorphicLayoutEffect8,\n useReducedMotion,\n easings as easings2\n} from \"@react-spring/shared\";\nexport * from \"@react-spring/types\";\nexport {\n BailSignal,\n Controller,\n FrameValue,\n Globals,\n Interpolation,\n Spring,\n SpringContext,\n SpringRef,\n SpringValue,\n Trail,\n Transition,\n config,\n createInterpolator2 as createInterpolator,\n easings2 as easings,\n inferTo,\n interpolate,\n to,\n update,\n useChain,\n useInView,\n useIsomorphicLayoutEffect8 as useIsomorphicLayoutEffect,\n useReducedMotion,\n useResize,\n useScroll,\n useSpring,\n useSpringRef,\n useSpringValue,\n useSprings,\n useTrail,\n useTransition\n};\n//# sourceMappingURL=react-spring_core.modern.mjs.map","// src/index.ts\nimport { Globals } from \"@react-spring/core\";\nimport { unstable_batchedUpdates } from \"react-dom\";\nimport { createStringInterpolator, colors } from \"@react-spring/shared\";\nimport { createHost } from \"@react-spring/animated\";\n\n// src/applyAnimatedValues.ts\nvar isCustomPropRE = /^--/;\nfunction dangerousStyleValue(name, value) {\n if (value == null || typeof value === \"boolean\" || value === \"\")\n return \"\";\n if (typeof value === \"number\" && value !== 0 && !isCustomPropRE.test(name) && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]))\n return value + \"px\";\n return (\"\" + value).trim();\n}\nvar attributeCache = {};\nfunction applyAnimatedValues(instance, props) {\n if (!instance.nodeType || !instance.setAttribute) {\n return false;\n }\n const isFilterElement = instance.nodeName === \"filter\" || instance.parentNode && instance.parentNode.nodeName === \"filter\";\n const { style, children, scrollTop, scrollLeft, viewBox, ...attributes } = props;\n const values = Object.values(attributes);\n const names = Object.keys(attributes).map(\n (name) => isFilterElement || instance.hasAttribute(name) ? name : attributeCache[name] || (attributeCache[name] = name.replace(\n /([A-Z])/g,\n // Attributes are written in dash case\n (n) => \"-\" + n.toLowerCase()\n ))\n );\n if (children !== void 0) {\n instance.textContent = children;\n }\n for (const name in style) {\n if (style.hasOwnProperty(name)) {\n const value = dangerousStyleValue(name, style[name]);\n if (isCustomPropRE.test(name)) {\n instance.style.setProperty(name, value);\n } else {\n instance.style[name] = value;\n }\n }\n }\n names.forEach((name, i) => {\n instance.setAttribute(name, values[i]);\n });\n if (scrollTop !== void 0) {\n instance.scrollTop = scrollTop;\n }\n if (scrollLeft !== void 0) {\n instance.scrollLeft = scrollLeft;\n }\n if (viewBox !== void 0) {\n instance.setAttribute(\"viewBox\", viewBox);\n }\n}\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\nvar prefixKey = (prefix, key) => prefix + key.charAt(0).toUpperCase() + key.substring(1);\nvar prefixes = [\"Webkit\", \"Ms\", \"Moz\", \"O\"];\nisUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => {\n prefixes.forEach((prefix) => acc[prefixKey(prefix, prop)] = acc[prop]);\n return acc;\n}, isUnitlessNumber);\n\n// src/AnimatedStyle.ts\nimport { AnimatedObject } from \"@react-spring/animated\";\nimport {\n is,\n each,\n toArray,\n eachProp,\n FluidValue,\n getFluidValue,\n callFluidObservers,\n hasFluidValue,\n addFluidObserver,\n removeFluidObserver\n} from \"@react-spring/shared\";\nvar domTransforms = /^(matrix|translate|scale|rotate|skew)/;\nvar pxTransforms = /^(translate)/;\nvar degTransforms = /^(rotate|skew)/;\nvar addUnit = (value, unit) => is.num(value) && value !== 0 ? value + unit : value;\nvar isValueIdentity = (value, id) => is.arr(value) ? value.every((v) => isValueIdentity(v, id)) : is.num(value) ? value === id : parseFloat(value) === id;\nvar AnimatedStyle = class extends AnimatedObject {\n constructor({ x, y, z, ...style }) {\n const inputs = [];\n const transforms = [];\n if (x || y || z) {\n inputs.push([x || 0, y || 0, z || 0]);\n transforms.push((xyz) => [\n `translate3d(${xyz.map((v) => addUnit(v, \"px\")).join(\",\")})`,\n // prettier-ignore\n isValueIdentity(xyz, 0)\n ]);\n }\n eachProp(style, (value, key) => {\n if (key === \"transform\") {\n inputs.push([value || \"\"]);\n transforms.push((transform) => [transform, transform === \"\"]);\n } else if (domTransforms.test(key)) {\n delete style[key];\n if (is.und(value))\n return;\n const unit = pxTransforms.test(key) ? \"px\" : degTransforms.test(key) ? \"deg\" : \"\";\n inputs.push(toArray(value));\n transforms.push(\n key === \"rotate3d\" ? ([x2, y2, z2, deg]) => [\n `rotate3d(${x2},${y2},${z2},${addUnit(deg, unit)})`,\n isValueIdentity(deg, 0)\n ] : (input) => [\n `${key}(${input.map((v) => addUnit(v, unit)).join(\",\")})`,\n isValueIdentity(input, key.startsWith(\"scale\") ? 1 : 0)\n ]\n );\n }\n });\n if (inputs.length) {\n style.transform = new FluidTransform(inputs, transforms);\n }\n super(style);\n }\n};\nvar FluidTransform = class extends FluidValue {\n constructor(inputs, transforms) {\n super();\n this.inputs = inputs;\n this.transforms = transforms;\n this._value = null;\n }\n get() {\n return this._value || (this._value = this._get());\n }\n _get() {\n let transform = \"\";\n let identity = true;\n each(this.inputs, (input, i) => {\n const arg1 = getFluidValue(input[0]);\n const [t, id] = this.transforms[i](\n is.arr(arg1) ? arg1 : input.map(getFluidValue)\n );\n transform += \" \" + t;\n identity = identity && id;\n });\n return identity ? \"none\" : transform;\n }\n // Start observing our inputs once we have an observer.\n observerAdded(count) {\n if (count == 1)\n each(\n this.inputs,\n (input) => each(\n input,\n (value) => hasFluidValue(value) && addFluidObserver(value, this)\n )\n );\n }\n // Stop observing our inputs once we have no observers.\n observerRemoved(count) {\n if (count == 0)\n each(\n this.inputs,\n (input) => each(\n input,\n (value) => hasFluidValue(value) && removeFluidObserver(value, this)\n )\n );\n }\n eventObserved(event) {\n if (event.type == \"change\") {\n this._value = null;\n }\n callFluidObservers(this, event);\n }\n};\n\n// src/primitives.ts\nvar primitives = [\n \"a\",\n \"abbr\",\n \"address\",\n \"area\",\n \"article\",\n \"aside\",\n \"audio\",\n \"b\",\n \"base\",\n \"bdi\",\n \"bdo\",\n \"big\",\n \"blockquote\",\n \"body\",\n \"br\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"cite\",\n \"code\",\n \"col\",\n \"colgroup\",\n \"data\",\n \"datalist\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"dialog\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"embed\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"head\",\n \"header\",\n \"hgroup\",\n \"hr\",\n \"html\",\n \"i\",\n \"iframe\",\n \"img\",\n \"input\",\n \"ins\",\n \"kbd\",\n \"keygen\",\n \"label\",\n \"legend\",\n \"li\",\n \"link\",\n \"main\",\n \"map\",\n \"mark\",\n \"menu\",\n \"menuitem\",\n \"meta\",\n \"meter\",\n \"nav\",\n \"noscript\",\n \"object\",\n \"ol\",\n \"optgroup\",\n \"option\",\n \"output\",\n \"p\",\n \"param\",\n \"picture\",\n \"pre\",\n \"progress\",\n \"q\",\n \"rp\",\n \"rt\",\n \"ruby\",\n \"s\",\n \"samp\",\n \"script\",\n \"section\",\n \"select\",\n \"small\",\n \"source\",\n \"span\",\n \"strong\",\n \"style\",\n \"sub\",\n \"summary\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"title\",\n \"tr\",\n \"track\",\n \"u\",\n \"ul\",\n \"var\",\n \"video\",\n \"wbr\",\n // SVG\n \"circle\",\n \"clipPath\",\n \"defs\",\n \"ellipse\",\n \"foreignObject\",\n \"g\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"mask\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n \"stop\",\n \"svg\",\n \"text\",\n \"tspan\"\n];\n\n// src/index.ts\nexport * from \"@react-spring/core\";\nGlobals.assign({\n batchedUpdates: unstable_batchedUpdates,\n createStringInterpolator,\n colors\n});\nvar host = createHost(primitives, {\n applyAnimatedValues,\n createAnimatedStyle: (style) => new AnimatedStyle(style),\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getComponentProps: ({ scrollTop, scrollLeft, ...props }) => props\n});\nvar animated = host.animated;\nexport {\n animated as a,\n animated\n};\n//# sourceMappingURL=react-spring_web.modern.mjs.map","import React from \"react\";\r\nimport { DarkModeSwitch } from \"react-toggle-dark-mode\";\r\nimport useDarkMode from \"use-dark-mode\";\r\nimport styled from \"styled-components\";\r\n\r\nconst ThemeSwitch = () => {\r\n const { toggle, value } = useDarkMode(false);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ThemeSwitch;\r\n\r\nconst StyledThemeSwitch = styled.div`\r\n display: flex;\r\n`;\r\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n"],"names":["module","exports","Object","assign","Container","styled","div","withConfig","displayName","componentId","SocialLinks","socialLinks","useStaticQuery","site","siteMetadata","map","link","React","SocialLinkItem","key","name","href","url","SocialLinkList","ul","li","Footer","StyledFooter","FooterWrapper","FooterAttribution","async","src","footer","p","GlobalStyle","createGlobalStyle","clock","Component","_class","_temp","ATTRIBUTE_NAMES","TAG_NAMES","BASE","BODY","HEAD","HTML","LINK","META","NOSCRIPT","SCRIPT","STYLE","TITLE","TAG_PROPERTIES","keys","REACT_TAG_MAP","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","HTML_TAG_MAP","reduce","obj","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","_typeof","Symbol","iterator","constructor","prototype","createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","defineProperty","Constructor","protoProps","staticProps","_extends","arguments","source","hasOwnProperty","call","objectWithoutProperties","indexOf","encodeSpecialCharacters","str","undefined","String","replace","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","Array","isArray","join","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","filter","tagAttrs","current","getBaseTagFromPropsList","primaryAttributes","reverse","innermostBaseTag","tag","lowerCaseAttributeKey","toLowerCase","concat","getTagsFromPropsList","tagName","approvedSeenTags","warn","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","value","forEach","push","tagUnion","property","rafPolyfill","Date","now","callback","currentTime","setTimeout","cafPolyfill","id","clearTimeout","requestAnimationFrame","window","bind","webkitRequestAnimationFrame","mozRequestAnimationFrame","g","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","msg","console","_helmetCallback","commitTagChanges","newState","cb","baseTag","bodyAttributes","htmlAttributes","linkTags","metaTags","noscriptTags","onChangeClientState","scriptTags","styleTags","title","titleAttributes","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","document","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","split","attributesToRemove","attributeKeys","attribute","setAttribute","indexToSave","splice","_i","removeAttribute","type","tags","headElement","head","querySelector","tagNodes","querySelectorAll","slice","indexToDelete","newElement","createElement","innerHTML","styleSheet","cssText","appendChild","createTextNode","some","existingTag","index","isEqualNode","parentNode","removeChild","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","encode","toComponent","_initProps","toString","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","content","dangerouslySetInnerHTML","__html","generateTagsAsReactComponent","attributeHtml","string","tagContent","isSelfClosing","generateTagsAsString","mapStateOnServer","_ref","_ref$title","base","meta","noscript","script","style","HelmetSideEffects","defer","HelmetExport","_React$Component","HelmetWrapper","instance","TypeError","classCallCheck","this","self","ReferenceError","possibleConstructorReturn","apply","subClass","superClass","create","setPrototypeOf","__proto__","inherits","shouldComponentUpdate","nextProps","mapNestedChildrenToProps","child","nestedChildren","Error","flattenArrayTypeChildren","_babelHelpers$extends","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_babelHelpers$extends2","_babelHelpers$extends3","newProps","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_babelHelpers$extends4","warnOnInvalidChildren","mapChildrenToProps","children","_this2","_child$props","initAttributes","convertReactPropstoHtmlAttributes","render","_props","set","canUseDOM","propTypes","defaultTitle","titleTemplate","defaultProps","peek","rewind","mappedState","renderStatic","Seo","_site$siteMetadata","_site$siteMetadata2","_site$siteMetadata2$s","description","lang","socialImage","metaDescription","ogImageUrl","siteUrl","startsWith","Helmet","social","twitter","__defProp","globals_exports","all","get","__export","colors","createStringInterpolator","skipAnimation","to","willAdvance","updateQueue","makeQueue","fn","schedule","writeQueue","write","onStartQueue","onStart","onFrameQueue","onFrame","onFinishQueue","onFinish","timeouts","handler","ms","time","cancel","findIndex","t","pendingCount","timeout","findTimeout","start","delete","sync","batchedUpdates","throttle","lastArgs","queuedFn","throttled","args","nativeRaf","use","impl","performance","catch","error","frameLoop","advance","update","ts","queue","add","loop","prevTs","count","eachSafely","flush","Math","min","next","Set","has","arg","size","values","each2","e","arr","a","fun","num","und","ctx","isSSR","navigator","test","userAgent","globals","startQueue","currentFrame","prevFrame","priority","idle","animation","flushStartQueue","startSafely","sort","prevIndex","startUnsafely","clear","includes","other","dt","nextFrame","NUMBER","PERCENTAGE","parts","rgb","RegExp","rgba","hsl","hsla","hex3","hex4","hex6","hex8","hue2rgb","q","hslToRgb","h","s","l","r","b","round","parse255","int","parseInt","parse360","parseFloat","parse1","parsePercentage","colorToRgba","input","int32Color","color","match","exec","normalizeColor","createInterpolator","range","output","extrapolate","config","outputRange","inputRange","extrapolateLeft","extrapolateRight","easing","range2","findRange","inputMin","inputMax","outputMin","outputMax","result","Infinity","interpolate","PI","$get","for","$observers","Boolean","callFluidObservers","event","observers","observer2","eventObserved","callFluidObserver","FluidValue","setFluidGetter","setHidden","observerAdded","observerRemoved","namedColorRegex","numberRegex","colorRegex","unitRegex","rgbaRegex","cssVariableRegex","variableToRgba","token","fallback","parseCSSVariable","getComputedStyle","documentElement","getPropertyValue","trim","value2","rgbaRound","_","p1","p2","p3","p4","createStringInterpolator2","keyframes","Number","outputRanges","interpolators","output2","missingUnit","find","prefix","once","func","called","warnInterpolate","useEffect","useLayoutEffect","update2","useState","isMounted","useRef","useIsMounted","random","emptyDeps","$node","getAnimated","owner","node","defineHidden","getPayload","Animated","payload","_value","super","done","durationProgress","lastPosition","getValue","setValue","step","reset","elapsedTime","lastVelocity","v0","_string","_toString","goal","TreeContext","dependencies","AnimatedObject","animated","_makePayload","_addToPayload","from","AnimatedArray","makeAnimated","withAnimated","host","hasInstance","isReactComponent","forwardRef","givenProps","givenRef","instanceRef","ref","useCallback","updateRef","deps","createAnimatedStyle","getAnimatedState","forceUpdate","applyAnimatedValues","observer","PropsObserver","observerRef","effect","dep","usedProps","getComponentProps","cacheKey","getDisplayName","isFrameValue","FrameValue","nextId","_priority","_onPriorityChange","toJSON","_attach","_detach","_onChange","parent","init","SpringContext","inherited","useContext","pause","immediate","getResult","inputs","initial","committed","prevCache","cache","useCache","prev","areInputsEqual","useMemoOne","Provider","_context","Consumer","Interpolation","_active","calc","_get","nodeType","_dt","checkIdle","becomeIdle","_start","max","highest","isIdle","active","every","isCustomPropRE","dangerousStyleValue","isUnitlessNumber","attributeCache","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","prefixes","acc","prop","charAt","toUpperCase","substring","prefixKey","domTransforms","pxTransforms","degTransforms","addUnit","unit","isValueIdentity","v","AnimatedStyle","x","y","z","transforms","xyz","transform","x2","y2","z2","deg","FluidTransform","identity","arg1","unstable_batchedUpdates","transparent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","components","hostConfig","createHost","isFilterElement","nodeName","scrollTop","scrollLeft","viewBox","names","hasAttribute","n","textContent","setProperty","hasElementType","Element","hasMap","Map","hasSet","hasArrayBuffer","ArrayBuffer","isView","equal","it","entries","flags","valueOf","$$typeof","message","ex","React__default","_defineProperty","reducePropsToState","handleStateChangeOnClient","WrappedComponent","state","mountedInstances","emitChange","SideEffect","_PureComponent","recordedState","_proto","UNSAFE_componentWillMount","componentDidUpdate","componentWillUnmount","PureComponent"],"sourceRoot":""}