{"version":3,"file":"NumberFlow_Prod.Bs-sPorw.mjs","names":["useMemo","useMemo","useMemo","getProps","useRef","useCallback","useState","useMemo","Image1","React.useContext","React.useMemo","React.Fragment","React.forwardRef","useRef","React.useId","sharedStyle.className","sharedStyle1.className","className","RichText","sharedStyle.css","sharedStyle1.css","sharedStyle.fonts","sharedStyle1.fonts","styles","_define_property","styles","React.Component","React.useRef","React.useContext","React.useMemo","useId"],"sources":["https:/framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js","https:/framerusercontent.com/modules/D4TWeLfcxT6Tysr2BlYg/iZjmqdxVx1EOiM3k1FaW/useOnNavigationTargetChange.js","https:/framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js","https:/framerusercontent.com/modules/D2Lz5CmnNVPZFFiZXalt/QaCzPbriZBfXWZIIycFI/colorFromToken.js","https:/framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js","https:/framerusercontent.com/modules/xDiQsqBGXzmMsv7AlEVy/uhunpMiNsbXxzjlXsg1y/useUniqueClassName.js","https:/framerusercontent.com/modules/ETACN5BJyFTSo0VVDJfu/NHRqowOiXkF9UwOzczF7/variantUtils.js","https:/framerusercontent.com/modules/eMBrwoqQK7h6mEeGQUH8/GuplvPJVjmxpk9zqOTcb/isBrowser.js","https:/framerusercontent.com/modules/v9AWX2URmiYsHf7GbctE/XxKAZ9KlhWqf5x1JMyyF/useOnChange.js","https:/framerusercontent.com/modules/kNDwabfjDEb3vUxkQlZS/fSIr3AOAYbGlfSPgXpYu/useAutoMotionValue.js","https:/framerusercontent.com/modules/cuQH4dmpDnV8YK1mSgQX/KqRXqunFjE6ufhpc7ZRu/useFontControls.js","https:/framerusercontent.com/modules/afBE9Yx1W6bY5q32qPxe/m3q7puE2tbo1S2C0s0CT/useRenderTarget.js","https:/framerusercontent.com/modules/zGkoP8tPDCkoBzMdt5uq/0zFSjxIYliHxrQQnryFX/useControlledState.js","https:/framerusercontent.com/modules/5SM58HxZHxjjv7aLMOgQ/WXz9i6mVki0bBCrKdqB3/propUtils.js","https:/framerusercontent.com/modules/G4IfyjvwmaeSBpdb4TWu/OIjZRBmWDcIE2B6qgG1j/index.js","https:/framerusercontent.com/modules/lRDHiNWNVWmE0lqtoVHP/7qT0r3So12155VV5Jq5x/Video.js","https:/framerusercontent.com/modules/cwJLNL4imurgRX2Gl1hG/iagGWt4xG8yAqREpcsf4/bZsBmnmUg.js","https:/framerusercontent.com/modules/Gdw4PFaebBg7otYjbV0a/dcn7aXLoeairMqUE2xn1/util.js","https:/framerusercontent.com/modules/a9L165TciBHZyMGFIwtU/yEBIwtxcNyYOPf43vN85/styles.js","https:/framerusercontent.com/modules/OgWgndAFyvu2Uat4ngWh/46M5bSSTGskoeUN6XI4j/ssr.js","https:/framerusercontent.com/modules/nND5KreKFoT8ms7HKata/Vmif4IbMKvsbPZXwEHBz/formatter.js","https:/framerusercontent.com/modules/AG73ox21oKVyje0VXkyK/HNU4IYD8anfZXhjtw7bP/index.js","https:/framerusercontent.com/modules/4so9SG3ShMPwWmf9tj3x/HiwMktBrKVUSZLDVBeYE/NumberFlowReact.js","https:/framer.com/m/NumberFlowReact-yGat.js","https:/framerusercontent.com/modules/DPwgyTlYyPqF8EltT6Wk/7V1eDDmIfgMJSy3hQjXS/NumberFlow_Prod.js"],"sourcesContent":["import { ControlType } from \"framer\";\nexport const fontStack = `\"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"`;\nexport const containerStyles = {\n    position: \"relative\",\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n};\nexport const emptyStateStyle = {\n    ...containerStyles,\n    borderRadius: 6,\n    background: \"rgba(136, 85, 255, 0.3)\",\n    color: \"#85F\",\n    border: \"1px dashed #85F\",\n    flexDirection: \"column\"\n};\nexport const defaultEvents = {\n    onClick: {\n        type: ControlType.EventHandler\n    },\n    onMouseEnter: {\n        type: ControlType.EventHandler\n    },\n    onMouseLeave: {\n        type: ControlType.EventHandler\n    }\n};\nexport const fontSizeOptions = {\n    type: ControlType.Number,\n    title: \"Font Size\",\n    min: 2,\n    max: 200,\n    step: 1,\n    displayStepper: true\n};\nexport const fontControls = {\n    font: {\n        type: ControlType.Boolean,\n        title: \"Font\",\n        defaultValue: false,\n        disabledTitle: \"Default\",\n        enabledTitle: \"Custom\"\n    },\n    fontFamily: {\n        type: ControlType.String,\n        title: \"Family\",\n        placeholder: \"Inter\",\n        hidden: ({ font  })=>!font\n    },\n    fontWeight: {\n        type: ControlType.Enum,\n        title: \"Weight\",\n        options: [\n            100,\n            200,\n            300,\n            400,\n            500,\n            600,\n            700,\n            800,\n            900\n        ],\n        optionTitles: [\n            \"Thin\",\n            \"Extra-light\",\n            \"Light\",\n            \"Regular\",\n            \"Medium\",\n            \"Semi-bold\",\n            \"Bold\",\n            \"Extra-bold\",\n            \"Black\", \n        ],\n        hidden: ({ font  })=>!font\n    }\n};\n// @TODO check if we're missing anything here — there doesn't seem to be a reliable browser API for this\nexport const localeOptions = {\n    af: \"Afrikaans\",\n    sq: \"Albanian\",\n    an: \"Aragonese\",\n    ar: \"Arabic (Standard)\",\n    \"ar-dz\": \"Arabic (Algeria)\",\n    \"ar-bh\": \"Arabic (Bahrain)\",\n    \"ar-eg\": \"Arabic (Egypt)\",\n    \"ar-iq\": \"Arabic (Iraq)\",\n    \"ar-jo\": \"Arabic (Jordan)\",\n    \"ar-kw\": \"Arabic (Kuwait)\",\n    \"ar-lb\": \"Arabic (Lebanon)\",\n    \"ar-ly\": \"Arabic (Libya)\",\n    \"ar-ma\": \"Arabic (Morocco)\",\n    \"ar-om\": \"Arabic (Oman)\",\n    \"ar-qa\": \"Arabic (Qatar)\",\n    \"ar-sa\": \"Arabic (Saudi Arabia)\",\n    \"ar-sy\": \"Arabic (Syria)\",\n    \"ar-tn\": \"Arabic (Tunisia)\",\n    \"ar-ae\": \"Arabic (U.A.E.)\",\n    \"ar-ye\": \"Arabic (Yemen)\",\n    hy: \"Armenian\",\n    as: \"Assamese\",\n    ast: \"Asturian\",\n    az: \"Azerbaijani\",\n    eu: \"Basque\",\n    bg: \"Bulgarian\",\n    be: \"Belarusian\",\n    bn: \"Bengali\",\n    bs: \"Bosnian\",\n    br: \"Breton\",\n    my: \"Burmese\",\n    ca: \"Catalan\",\n    ch: \"Chamorro\",\n    ce: \"Chechen\",\n    zh: \"Chinese\",\n    \"zh-hk\": \"Chinese (Hong Kong)\",\n    \"zh-cn\": \"Chinese (PRC)\",\n    \"zh-sg\": \"Chinese (Singapore)\",\n    \"zh-tw\": \"Chinese (Taiwan)\",\n    cv: \"Chuvash\",\n    co: \"Corsican\",\n    cr: \"Cree\",\n    hr: \"Croatian\",\n    cs: \"Czech\",\n    da: \"Danish\",\n    nl: \"Dutch (Standard)\",\n    \"nl-be\": \"Dutch (Belgian)\",\n    en: \"English\",\n    \"en-au\": \"English (Australia)\",\n    \"en-bz\": \"English (Belize)\",\n    \"en-ca\": \"English (Canada)\",\n    \"en-ie\": \"English (Ireland)\",\n    \"en-jm\": \"English (Jamaica)\",\n    \"en-nz\": \"English (New Zealand)\",\n    \"en-ph\": \"English (Philippines)\",\n    \"en-za\": \"English (South Africa)\",\n    \"en-tt\": \"English (Trinidad & Tobago)\",\n    \"en-gb\": \"English (United Kingdom)\",\n    \"en-us\": \"English (United States)\",\n    \"en-zw\": \"English (Zimbabwe)\",\n    eo: \"Esperanto\",\n    et: \"Estonian\",\n    fo: \"Faeroese\",\n    fa: \"Farsi\",\n    fj: \"Fijian\",\n    fi: \"Finnish\",\n    fr: \"French (Standard)\",\n    \"fr-be\": \"French (Belgium)\",\n    \"fr-ca\": \"French (Canada)\",\n    \"fr-fr\": \"French (France)\",\n    \"fr-lu\": \"French (Luxembourg)\",\n    \"fr-mc\": \"French (Monaco)\",\n    \"fr-ch\": \"French (Switzerland)\",\n    fy: \"Frisian\",\n    fur: \"Friulian\",\n    gd: \"Gaelic (Scots)\",\n    \"gd-ie\": \"Gaelic (Irish)\",\n    gl: \"Galacian\",\n    ka: \"Georgian\",\n    de: \"German (Standard)\",\n    \"de-at\": \"German (Austria)\",\n    \"de-de\": \"German (Germany)\",\n    \"de-li\": \"German (Liechtenstein)\",\n    \"de-lu\": \"German (Luxembourg)\",\n    \"de-ch\": \"German (Switzerland)\",\n    el: \"Greek\",\n    gu: \"Gujurati\",\n    ht: \"Haitian\",\n    he: \"Hebrew\",\n    hi: \"Hindi\",\n    hu: \"Hungarian\",\n    is: \"Icelandic\",\n    id: \"Indonesian\",\n    iu: \"Inuktitut\",\n    ga: \"Irish\",\n    it: \"Italian (Standard)\",\n    \"it-ch\": \"Italian (Switzerland)\",\n    ja: \"Japanese\",\n    kn: \"Kannada\",\n    ks: \"Kashmiri\",\n    kk: \"Kazakh\",\n    km: \"Khmer\",\n    ky: \"Kirghiz\",\n    tlh: \"Klingon\",\n    ko: \"Korean\",\n    \"ko-kp\": \"Korean (North Korea)\",\n    \"ko-kr\": \"Korean (South Korea)\",\n    la: \"Latin\",\n    lv: \"Latvian\",\n    lt: \"Lithuanian\",\n    lb: \"Luxembourgish\",\n    mk: \"FYRO Macedonian\",\n    ms: \"Malay\",\n    ml: \"Malayalam\",\n    mt: \"Maltese\",\n    mi: \"Maori\",\n    mr: \"Marathi\",\n    mo: \"Moldavian\",\n    nv: \"Navajo\",\n    ng: \"Ndonga\",\n    ne: \"Nepali\",\n    no: \"Norwegian\",\n    nb: \"Norwegian (Bokmal)\",\n    nn: \"Norwegian (Nynorsk)\",\n    oc: \"Occitan\",\n    or: \"Oriya\",\n    om: \"Oromo\",\n    \"fa-ir\": \"Persian/Iran\",\n    pl: \"Polish\",\n    pt: \"Portuguese\",\n    \"pt-br\": \"Portuguese (Brazil)\",\n    pa: \"Punjabi\",\n    \"pa-in\": \"Punjabi (India)\",\n    \"pa-pk\": \"Punjabi (Pakistan)\",\n    qu: \"Quechua\",\n    rm: \"Rhaeto-Romanic\",\n    ro: \"Romanian\",\n    \"ro-mo\": \"Romanian (Moldavia)\",\n    ru: \"Russian\",\n    \"ru-mo\": \"Russian (Moldavia)\",\n    sz: \"Sami (Lappish)\",\n    sg: \"Sango\",\n    sa: \"Sanskrit\",\n    sc: \"Sardinian\",\n    sd: \"Sindhi\",\n    si: \"Singhalese\",\n    sr: \"Serbian\",\n    sk: \"Slovak\",\n    sl: \"Slovenian\",\n    so: \"Somani\",\n    sb: \"Sorbian\",\n    es: \"Spanish\",\n    \"es-ar\": \"Spanish (Argentina)\",\n    \"es-bo\": \"Spanish (Bolivia)\",\n    \"es-cl\": \"Spanish (Chile)\",\n    \"es-co\": \"Spanish (Colombia)\",\n    \"es-cr\": \"Spanish (Costa Rica)\",\n    \"es-do\": \"Spanish (Dominican Republic)\",\n    \"es-ec\": \"Spanish (Ecuador)\",\n    \"es-sv\": \"Spanish (El Salvador)\",\n    \"es-gt\": \"Spanish (Guatemala)\",\n    \"es-hn\": \"Spanish (Honduras)\",\n    \"es-mx\": \"Spanish (Mexico)\",\n    \"es-ni\": \"Spanish (Nicaragua)\",\n    \"es-pa\": \"Spanish (Panama)\",\n    \"es-py\": \"Spanish (Paraguay)\",\n    \"es-pe\": \"Spanish (Peru)\",\n    \"es-pr\": \"Spanish (Puerto Rico)\",\n    \"es-es\": \"Spanish (Spain)\",\n    \"es-uy\": \"Spanish (Uruguay)\",\n    \"es-ve\": \"Spanish (Venezuela)\",\n    sx: \"Sutu\",\n    sw: \"Swahili\",\n    sv: \"Swedish\",\n    \"sv-fi\": \"Swedish (Finland)\",\n    \"sv-sv\": \"Swedish (Sweden)\",\n    ta: \"Tamil\",\n    tt: \"Tatar\",\n    te: \"Teluga\",\n    th: \"Thai\",\n    tig: \"Tigre\",\n    ts: \"Tsonga\",\n    tn: \"Tswana\",\n    tr: \"Turkish\",\n    tk: \"Turkmen\",\n    uk: \"Ukrainian\",\n    hsb: \"Upper Sorbian\",\n    ur: \"Urdu\",\n    ve: \"Venda\",\n    vi: \"Vietnamese\",\n    vo: \"Volapuk\",\n    wa: \"Walloon\",\n    cy: \"Welsh\",\n    xh: \"Xhosa\",\n    ji: \"Yiddish\",\n    zu: \"Zulu\"\n};\n\nexport const __FramerMetadata__ = {\"exports\":{\"fontSizeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"localeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontStack\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"emptyStateStyle\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultEvents\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./constants.map","import { useIsInCurrentNavigationTarget } from \"framer\";\nimport { useEffect } from \"react\";\nexport function useOnEnter(onEnter, enabled) {\n    return useOnSpecificTargetChange(true, onEnter, enabled);\n}\nexport function useOnExit(onExit, enabled) {\n    return useOnSpecificTargetChange(false, onExit, enabled);\n}\nfunction useOnSpecificTargetChange(goal, callback, enabled = true) {\n    const isInTarget = useIsInCurrentNavigationTarget();\n    useEffect(()=>{\n        if (enabled && isInTarget === goal) callback();\n    }, [\n        isInTarget\n    ]);\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useOnEnter\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnExit\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useOnNavigationTargetChange.map","import { useRef } from \"react\";\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */ export function useConstant(init) {\n    const ref = useRef(null);\n    if (ref.current === null) {\n        ref.current = init();\n    }\n    return ref.current;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useConstant\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useConstant.map","import { Color } from \"framer\";\nexport function colorFromToken(color) {\n    if (color.startsWith(\"var(--token-\")) return \"rgb\" + color.split(\") /*\")[0].split(\", rgb\")[1];\n    return color;\n}\nexport function colorTokentoValue(color) {\n    return Color(colorFromToken(color)).toValue();\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"colorFromToken\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorTokentoValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./colorFromToken.map","import { MotionValue } from \"framer\";\nexport const isMotionValue = (v)=>v instanceof MotionValue\n;\n\nexport const __FramerMetadata__ = {\"exports\":{\"isMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./isMotionValue.map","import * as React from \"react\";\nconst letters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\nconst l = ()=>letters[Math.floor(Math.random() * letters.length)]\n;\nexport const randomID = ()=>l() + l() + l() + l() + l() + l() + l() + l() + l()\n;\nfunction createUniqueClass(suffix) {\n    return `framer-${suffix}-${randomID()}`;\n}\nexport function useUniqueClassName(suffix, deps) {\n    const [className, setClassName] = React.useState(createUniqueClass(suffix));\n    React.useEffect(()=>{\n        setClassName(createUniqueClass(suffix));\n    }, [\n        suffix,\n        ...deps\n    ]);\n    return className;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useUniqueClassName\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"randomID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useUniqueClassName.map","import { ControlType } from \"framer\";\n// I realize this only applies to select right now\n// but we can work on it in here\nexport function getVariantControls(Component, variant, additionalControls = {\n}) {\n    return {\n        [`${variant}TextColor`]: {\n            type: ControlType.Color,\n            title: \"Text Color\",\n            defaultValue: Component.defaultProps[`${variant}TextColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}IconColor`]: {\n            type: ControlType.Color,\n            title: \"Icon Color\",\n            defaultValue: Component.defaultProps[`${variant}IconColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BackgroundColor`]: {\n            type: ControlType.Color,\n            title: \"Bg Color\",\n            defaultValue: Component.defaultProps[`${variant}BackgroundColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BorderColor`]: {\n            type: ControlType.Color,\n            title: \"Border Color\",\n            defaultValue: Component.defaultProps[`${variant}BorderColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BorderWidth`]: {\n            type: ControlType.Number,\n            title: \" \",\n            min: 0,\n            max: 5,\n            displayStepper: true,\n            defaultValue: Component.defaultProps[`${variant}BorderWidth`],\n            hidden: (props)=>props.variant !== variant\n        },\n        ...additionalControls\n    };\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"getVariantControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./variantUtils.map","import { useMemo } from \"react\";\nexport const isBrowserSafari = ()=>{\n    if (typeof navigator !== `undefined`) {\n        const userAgent = navigator.userAgent.toLowerCase();\n        const isSafari = (userAgent.indexOf(\"safari\") > -1 || userAgent.indexOf(\"framermobile\") > -1 || userAgent.indexOf(\"framerx\") > -1) && userAgent.indexOf(\"chrome\") < 0;\n        return isSafari;\n    } else return false;\n};\nexport const useIsBrowserSafari = ()=>useMemo(()=>isBrowserSafari()\n    , [])\n;\n\nexport const __FramerMetadata__ = {\"exports\":{\"useIsBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./isBrowser.map","import { useEffect } from \"react\";\n//@ts-ignore\nimport { isMotionValue } from \"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";\nexport function useOnChange(value, callback) {\n    useEffect(()=>// @ts-ignore this should be detected as a MV :shrug:\n        isMotionValue(value) ? value.onChange(callback) : undefined\n    );\n}\nexport function useMultiOnChange(values, handler) {\n    useEffect(()=>{\n        const subscriptions = values.map((value)=>value.onChange(handler)\n        );\n        return ()=>subscriptions.forEach((unsubscribe)=>unsubscribe()\n            )\n        ;\n    });\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"Subscriber\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnChange\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMultiOnChange\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useOnChange.map","import { useCallback, useEffect, useRef } from \"react\";\nimport { motionValue, animate, RenderTarget } from \"framer\";\n// @ts-ignore\nimport { isMotionValue } from \"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";\n// @ts-ignore\nimport { useConstant } from \"https://framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js\";\nexport function useAutoMotionValue(inputValue, options) {\n    var ref;\n    // Put options on a local ref\n    // Might wanna just memo instead but it works for now\n    const optionsRef = useRef(options);\n    const animation = useRef();\n    const didInitialMount = useRef(false);\n    const isOnCanvas = RenderTarget.current() === RenderTarget.canvas;\n    // in-progress - trying to figure out effect hooks\n    const onChangeDeps = (options === null || options === void 0 ? void 0 : options.onChangeDeps) ? options.onChangeDeps : [];\n    // Memoize the onChange handler\n    const onChange = useCallback(options === null || options === void 0 ? void 0 : options.onChange, [\n        ...onChangeDeps, \n    ]);\n    // Optionally scale the value from props\n    const transformer = useCallback((value)=>((ref = optionsRef.current) === null || ref === void 0 ? void 0 : ref.transform) ? optionsRef.current.transform(value) : value\n    , []);\n    // Create new MotionValue from inputValue\n    const value = useConstant(()=>isMotionValue(inputValue) ? inputValue : motionValue(transformer(inputValue))\n    );\n    // Setting value from prop change\n    useEffect(()=>{\n        if (!isMotionValue(inputValue) && didInitialMount.current) {\n            var ref1, ref2;\n            const newValue = transformer(inputValue);\n            (ref1 = animation.current) === null || ref1 === void 0 ? void 0 : ref1.stop();\n            // Call change callback\n            if (onChange) onChange(newValue, value);\n            // Trigger animation to new value\n            if (((ref2 = optionsRef.current) === null || ref2 === void 0 ? void 0 : ref2.animate) && !isOnCanvas) {\n                var ref3;\n                // @ts-ignore\n                animation.current = animate(value, newValue, (ref3 = optionsRef.current) === null || ref3 === void 0 ? void 0 : ref3.transition);\n            } else {\n                value.set(newValue);\n            }\n        }\n        didInitialMount.current = true;\n    }, [\n        inputValue,\n        ...onChangeDeps\n    ]);\n    return value;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useAutoMotionValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}","// @ts-ignore\nimport{fontStore}from\"framer\";import{useEffect}from\"react\";import{fontStack}from\"https://framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js\";const fontWeights={100:\"Thin\",200:\"Extra-light\",300:\"Light\",400:\"Regular\",500:\"Medium\",600:\"Semi-bold\",700:\"Bold\",800:\"Extra-bold\",900:\"Black\"};export function useFontControls(props){const{fontFamily=\"Inter\",fontSize=16,fontWeight=400,font=false}=props;const fontWeightName=fontWeights[fontWeight];const customFontStack=`\"${fontFamily} ${fontWeightName}\", \"${fontFamily}\", ${fontStack}`;const fontFamilyStyle=fontFamily?{fontSize,fontWeight,fontFamily:customFontStack}:{fontSize,fontWeight};const fetchCustomFonts=async()=>{await fontStore.loadWebFontsFromSelectors([`CUSTOM;${fontFamily}`,`CUSTOM;${fontFamily} ${fontWeightName}`,`GF;${fontFamily}-${fontWeightName.toLowerCase()}`,]).catch(e=>console.error(e));};useEffect(()=>{if(font)fetchCustomFonts();},[font,fontFamily,fontWeight]);return fontFamilyStyle;}\nexport const __FramerMetadata__ = {\"exports\":{\"useFontControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useFontControls.map","import { useMemo } from \"react\";\nimport { RenderTarget } from \"framer\";\nexport function useRenderTarget() {\n    const currentRenderTarget = useMemo(()=>RenderTarget.current()\n    , []);\n    return currentRenderTarget;\n}\nexport function useIsInPreview() {\n    const inPreview = useMemo(()=>RenderTarget.current() === RenderTarget.preview\n    , []);\n    return inPreview;\n}\nexport function useIsOnCanvas() {\n    const onCanvas = useMemo(()=>RenderTarget.current() === RenderTarget.canvas\n    , []);\n    return onCanvas;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useIsInPreview\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRenderTarget\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsOnCanvas\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useRenderTarget.map","import * as React from \"react\";\nexport function useControlledState(value) {\n    const [controlledValue, setValue] = React.useState(value);\n    React.useEffect(()=>{\n        setValue(value);\n    }, [\n        value\n    ]);\n    return [\n        controlledValue,\n        setValue\n    ];\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useControlledState\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useControlledState.map","import { useMemo } from \"react\";\nimport { ControlType } from \"framer\";\nexport function useRadius(props) {\n    const { borderRadius , isMixedBorderRadius , topLeftRadius , topRightRadius , bottomRightRadius , bottomLeftRadius ,  } = props;\n    const radiusValue = useMemo(()=>isMixedBorderRadius ? `${topLeftRadius}px ${topRightRadius}px ${bottomRightRadius}px ${bottomLeftRadius}px` : `${borderRadius}px`\n    , [\n        borderRadius,\n        isMixedBorderRadius,\n        topLeftRadius,\n        topRightRadius,\n        bottomRightRadius,\n        bottomLeftRadius, \n    ]);\n    return radiusValue;\n}\nexport const borderRadiusControl = {\n    borderRadius: {\n        title: \"Radius\",\n        type: ControlType.FusedNumber,\n        toggleKey: \"isMixedBorderRadius\",\n        toggleTitles: [\n            \"Radius\",\n            \"Radius per corner\"\n        ],\n        valueKeys: [\n            \"topLeftRadius\",\n            \"topRightRadius\",\n            \"bottomRightRadius\",\n            \"bottomLeftRadius\", \n        ],\n        valueLabels: [\n            \"TL\",\n            \"TR\",\n            \"BR\",\n            \"BL\"\n        ],\n        min: 0\n    }\n};\nexport function usePadding(props) {\n    const { padding , paddingPerSide , paddingTop , paddingRight , paddingBottom , paddingLeft ,  } = props;\n    const paddingValue = useMemo(()=>paddingPerSide ? `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px` : padding\n    , [\n        padding,\n        paddingPerSide,\n        paddingTop,\n        paddingRight,\n        paddingBottom,\n        paddingLeft, \n    ]);\n    return paddingValue;\n}\nexport const paddingControl = {\n    padding: {\n        type: ControlType.FusedNumber,\n        toggleKey: \"paddingPerSide\",\n        toggleTitles: [\n            \"Padding\",\n            \"Padding per side\"\n        ],\n        valueKeys: [\n            \"paddingTop\",\n            \"paddingRight\",\n            \"paddingBottom\",\n            \"paddingLeft\", \n        ],\n        valueLabels: [\n            \"T\",\n            \"R\",\n            \"B\",\n            \"L\"\n        ],\n        min: 0,\n        title: \"Padding\"\n    }\n};\n\nexport const __FramerMetadata__ = {\"exports\":{\"borderRadiusControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRadius\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"RadiusProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PaddingProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePadding\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paddingControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./propUtils.map","import{defaultEvents,localeOptions,fontControls,fontSizeOptions,emptyStateStyle,containerStyles,fontStack}from\"https://framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js\";import{useOnEnter,useOnExit}from\"https://framerusercontent.com/modules/D4TWeLfcxT6Tysr2BlYg/iZjmqdxVx1EOiM3k1FaW/useOnNavigationTargetChange.js\";import{useConstant}from\"https://framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js\";import{colorTokentoValue,colorFromToken}from\"https://framerusercontent.com/modules/D2Lz5CmnNVPZFFiZXalt/QaCzPbriZBfXWZIIycFI/colorFromToken.js\";import{isMotionValue}from\"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";import{useUniqueClassName,randomID}from\"https://framerusercontent.com/modules/xDiQsqBGXzmMsv7AlEVy/uhunpMiNsbXxzjlXsg1y/useUniqueClassName.js\";import{getVariantControls}from\"https://framerusercontent.com/modules/ETACN5BJyFTSo0VVDJfu/NHRqowOiXkF9UwOzczF7/variantUtils.js\";import{useIsBrowserSafari}from\"https://framerusercontent.com/modules/eMBrwoqQK7h6mEeGQUH8/GuplvPJVjmxpk9zqOTcb/isBrowser.js\";import{useMultiOnChange,useOnChange}from\"https://framerusercontent.com/modules/v9AWX2URmiYsHf7GbctE/XxKAZ9KlhWqf5x1JMyyF/useOnChange.js\";import{mstoMinAndSec,secondsToMinutes}from\"https://framerusercontent.com/modules/4zHZnO5JojN1PrIbu2jm/revv9QCWpkh8lPzi2jje/time.js\";import{useAutoMotionValue}from\"https://framerusercontent.com/modules/kNDwabfjDEb3vUxkQlZS/fSIr3AOAYbGlfSPgXpYu/useAutoMotionValue.js\";import{useFontControls}from\"https://framerusercontent.com/modules/cuQH4dmpDnV8YK1mSgQX/KqRXqunFjE6ufhpc7ZRu/useFontControls.js\";import{useRenderTarget,useIsInPreview,useIsOnCanvas}from\"https://framerusercontent.com/modules/afBE9Yx1W6bY5q32qPxe/m3q7puE2tbo1S2C0s0CT/useRenderTarget.js\";import{useControlledState}from\"https://framerusercontent.com/modules/zGkoP8tPDCkoBzMdt5uq/0zFSjxIYliHxrQQnryFX/useControlledState.js\";import{usePadding,useRadius,paddingControl,borderRadiusControl}from\"https://framerusercontent.com/modules/5SM58HxZHxjjv7aLMOgQ/WXz9i6mVki0bBCrKdqB3/propUtils.js\";import{detectAutoSizingAxis}from\"https://framerusercontent.com/modules/8CkHAZatUz1UR8jNTcfD/HwbnIAZlUmQ2oTpcLkaH/detectAutoSizingAxis.js\";export{useOnEnter,useOnExit,defaultEvents,isMotionValue,colorFromToken,colorTokentoValue,localeOptions,fontControls,fontSizeOptions,emptyStateStyle,containerStyles,fontStack,useUniqueClassName,getVariantControls,useIsBrowserSafari,randomID,useConstant,useMultiOnChange,useOnChange,usePadding,useRadius,paddingControl,borderRadiusControl,mstoMinAndSec,useFontControls,secondsToMinutes,useAutoMotionValue,useRenderTarget,useIsInPreview,useControlledState,detectAutoSizingAxis,useIsOnCanvas,};\nexport const __FramerMetadata__ = {\"exports\":{\"useConstant\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultEvents\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useUniqueClassName\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMultiOnChange\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnChange\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsOnCanvas\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnExit\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontSizeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorTokentoValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRadius\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getVariantControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorFromToken\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePadding\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontStack\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useControlledState\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useFontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useAutoMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"emptyStateStyle\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsInPreview\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"detectAutoSizingAxis\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"borderRadiusControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mstoMinAndSec\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"randomID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"localeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnEnter\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"secondsToMinutes\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRenderTarget\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paddingControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsInCurrentNavigationTarget,RenderTarget}from\"framer\";import{isMotionValue,useInView}from\"framer-motion\";import{borderRadiusControl,defaultEvents,useIsBrowserSafari,useIsOnCanvas,useOnEnter,useOnExit,useRadius,useRenderTarget}from\"https://framerusercontent.com/modules/G4IfyjvwmaeSBpdb4TWu/OIjZRBmWDcIE2B6qgG1j/index.js\";// https://framer.com/m/framer/default-utils.js@^0.45.0\nimport{memo,useCallback,useEffect,useMemo,useRef,useState}from\"react\";var ObjectFitType;(function(ObjectFitType){ObjectFitType[\"Fill\"]=\"fill\";ObjectFitType[\"Contain\"]=\"contain\";ObjectFitType[\"Cover\"]=\"cover\";ObjectFitType[\"None\"]=\"none\";ObjectFitType[\"ScaleDown\"]=\"scale-down\";})(ObjectFitType||(ObjectFitType={}));var SrcType;(function(SrcType){SrcType[\"Video\"]=\"Upload\";SrcType[\"Url\"]=\"URL\";})(SrcType||(SrcType={}));const defaultVideo=\"https://framerusercontent.com/assets/MLWPbW1dUQawJLhhun3dBwpgJak.mp4\";// Reduce renders\nfunction getProps(props){const{width,height,topLeft,topRight,bottomRight,bottomLeft,id,children,...rest}=props;return rest;}/**\n * VIDEO\n *\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 112\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export function Video(props){const newProps=getProps(props);return /*#__PURE__*/_jsx(VideoMemo,{...newProps});}function usePlaybackControls(videoRef){const isInCurrentNavigationTarget=useIsInCurrentNavigationTarget();const requestingPlay=useRef(false);const isPlayingRef=useRef(false);const setProgress=useCallback(rawProgress=>{if(!videoRef.current)return;const newProgress=(rawProgress===1?.999:rawProgress)*videoRef.current.duration;const isAlreadySet=Math.abs(videoRef.current.currentTime-newProgress)<.1;if(videoRef.current.duration>0&&!isAlreadySet){videoRef.current.currentTime=newProgress;}},[]);const play=useCallback(()=>{const video=videoRef.current;if(!video)return;video.preload=\"auto\"// makes sure browsers don't throttle: https://html.spec.whatwg.org/multipage/media.html#:~:text=When%20the%20media%20resource%20is%20playing%2C%20hints%20to%20the%20user%20agent%20that%20bandwidth%20is%20to%20be%20considered%20scarce%2C%20e.g.%20suggesting%20throttling%20the%20download%20so%20that%20the%20media%20data%20is%20obtained%20at%20the%20slowest%20possible%20rate%20that%20still%20maintains%20consistent%20playback.\n;const isPlaying=video.currentTime>0&&video.onplaying&&!video.paused&&!video.ended&&video.readyState>=video.HAVE_CURRENT_DATA;if(!isPlaying&&video&&!requestingPlay.current&&isInCurrentNavigationTarget){requestingPlay.current=true;isPlayingRef.current=true;video.play().catch(e=>{})// It's likely fine, swallow error\n.finally(()=>requestingPlay.current=false);}},[]);const pause=useCallback(()=>{if(!videoRef.current||requestingPlay.current)return;videoRef.current.pause();isPlayingRef.current=false;},[]);return{play,pause,setProgress,isPlaying:isPlayingRef};}function useAutoplayBehavior({playingProp,muted,loop,playsinline,controls}){const[initialPlayingProp]=useState(()=>playingProp);const[hasPlayingPropChanged,setHasPlayingPropChanged]=useState(false);if(playingProp!==initialPlayingProp&&!hasPlayingPropChanged){setHasPlayingPropChanged(true);}const behavesAsGif=// passing `playing === true` on mount indicates that the video should\n// autoplay, like a GIF\ninitialPlayingProp&&muted&&loop&&playsinline&&!controls&&// Some users of the <Video> component use it by wrapping it with\n// another smart component and adding their own controls on top. (The\n// controls use transitions to control the video: e.g., when clicking\n// the play button, the smart component will transition to a state with\n// <Video playing={true} />.) In this case, we don't want the video to\n// behave as a gif, as it will be weird if the video suddenly started\n// acting as such (and auto-pausing when leaving the viewport) as soon\n// as the site visitor mutes it and clicks “Play”.\n!hasPlayingPropChanged;let autoplay;if(behavesAsGif)autoplay=\"on-viewport\";else if(initialPlayingProp)autoplay=\"on-mount\";else autoplay=\"no-autoplay\";return autoplay;}const VideoMemo=/*#__PURE__*/memo(function VideoInner(props){const{// default props\nsrcType=\"URL\",srcUrl,srcFile=\"\",posterEnabled=false,controls=false,playing=true,loop=true,muted=true,playsinline=true,restartOnEnter=false,objectFit=\"cover\",backgroundColor=\"rgba(0,0,0,0)\",radius=0,volume=25,startTime:startTimeProp=0,poster,playing:playingProp,progress,onSeeked,onPause,onPlay,onEnd,onClick,onMouseEnter,onMouseLeave,onMouseDown,onMouseUp}=props;const videoRef=useRef();const isSafari=useIsBrowserSafari();const wasPausedOnLeave=useRef(null);const wasEndedOnLeave=useRef(null);const isOnCanvas=useIsOnCanvas();const renderTarget=useRenderTarget();const isStaticRenderer=isOnCanvas||renderTarget===RenderTarget.export;const borderRadius=useRadius(props);// Hard-coding `autoplayBehavior` and `isInViewport` when on canvas as a\n// tiny perf optimization. isStaticRenderer won’t change through the lifecycle of\n// the component, so using these hooks conditionally should be safe\nconst autoplayBehavior=isStaticRenderer?\"no-autoplay\":useAutoplayBehavior({playingProp,muted,loop,playsinline,controls});const isInViewport=isStaticRenderer?true:useInView(videoRef);const isCloseToViewport=isStaticRenderer?false:useInView(videoRef,{margin:\"10%\",once:true});// Video elements behave oddly at 100% duration\nconst startTime=startTimeProp===100?99.9:startTimeProp;const{play,pause,setProgress,isPlaying}=usePlaybackControls(videoRef);// Pause/play via props\nuseEffect(()=>{if(isStaticRenderer)return;if(autoplayBehavior===\"on-viewport\")return;if(playingProp)play();else pause();},[autoplayBehavior,playingProp]);// Pause/play via viewport\nuseEffect(()=>{if(isStaticRenderer)return;// this also explicitly retries playing for videos that play on-mount, which could fail if they're not muted for example\nif(isInViewport&&playingProp&&autoplayBehavior!==\"no-autoplay\")play();if(autoplayBehavior!==\"on-viewport\")return;pause();},[autoplayBehavior,isInViewport,playingProp]);useEffect(()=>{if(!isOnCanvas||poster||posterEnabled||startTime||!videoRef.current)return;// forces a poster to show up when the video is in an iframe; this is needed when `poster` changes\nvideoRef.current.currentTime=.01;},[posterEnabled,poster,startTime]);/**\n     * The Video component has some effects that sync the video element with props\n     * like `startTime`, `progress`, etc. React calls these effects whenever these\n     * props change. However, it also calls them on the first mount, and this is\n     * troublesome – if we’re doing SSR, and the user changed the video state before\n     * the video was hydrated, the initial `useEffect` call will reset the video\n     * state. To avoid this, we use this flag.\n     */const isMountedAndReadyForProgressChanges=useRef(false);// Allow scrubbling via progress prop\n// 1) Handle cases when the progress prop itself changes\nuseEffect(()=>{if(!isMountedAndReadyForProgressChanges.current){isMountedAndReadyForProgressChanges.current=true;return;}const rawProgressValue=isMotionValue(progress)?progress.get():(progress??0)*.01;setProgress(// When the progress value exists (e.g. <Video startTime={10}\n// progress={50} />), we respect the `progress` value over\n// `startTime`, even if `startTime` changes. That’s because\n// `startTime` == start == changing it shouldn’t affect the current\n// progress\n(rawProgressValue??0)||// Then why fall back to `startTime` when `progress` doesn’t exist,\n// you might ask? Now, that’s for\n// - canvas UX: we want the video progress to change when the user\n//   is scrobbling the “Start Time” in component settings.\n// - backwards compatibility: maybe some users *are* scrobbling\n//   using `startTime` instead of `progress`? We don’t know, and it\n//   always supported it, so let’s not break it\n(startTime??0)/100);},[startTime,srcFile,srcUrl,progress]);// 2) Handle cases when the motion value inside the progress prop changes\nuseEffect(()=>{if(!isMotionValue(progress))return;return progress.on(\"change\",value=>setProgress(value));},[progress]);// (Prototyping) Checking if we need to play on navigation enter\nuseOnEnter(()=>{if(wasPausedOnLeave.current===null)return;if(videoRef.current){// if (restartOnEnter) setProgress(0)\nif(!wasEndedOnLeave&&loop||!wasPausedOnLeave.current)play();}});// (Prototyping) Pausing & saving playing state on navigation exit\nuseOnExit(()=>{if(videoRef.current){wasEndedOnLeave.current=videoRef.current.ended;wasPausedOnLeave.current=videoRef.current.paused;pause();}});const src=useMemo(()=>{let fragment=\"\";// if (\n//     startTime > 0 &&\n//     videoRef.current &&\n//     !isNaN(videoRef.current.duration) &&\n//     !isStaticRenderer\n// ) {\n//     console.log(startTime, videoRef.current.duration)\n//     fragment = `#t=${startTime * videoRef.current.duration}`\n// }\nif(srcType===\"URL\")return srcUrl+fragment;if(srcType===\"Upload\")return srcFile+fragment;},[srcType,srcFile,srcUrl,startTime]);// Autoplay via JS to work in Safari\nuseEffect(()=>{if(isSafari&&videoRef.current&&autoplayBehavior===\"on-mount\"){setTimeout(()=>play(),50);}},[]);// Volume Control\nuseEffect(()=>{if(videoRef.current&&!muted)videoRef.current.volume=(volume??0)/100;},[volume]);// When video is ready, set start-time, then autoplay if needed\nconst handleReady=()=>{const video=videoRef.current;if(!video)return;if(video.currentTime<.3&&startTime>0)setProgress((startTime??0)*.01);if(// when the component updates (e.g. only srcFile/url changes), and the video was already playing, keep playing\nisPlaying.current||autoplayBehavior===\"on-mount\"||playingProp&&autoplayBehavior===\"on-viewport\"&&isInViewport)play();};return /*#__PURE__*/_jsx(\"video\",{onClick,onMouseEnter,onMouseLeave,onMouseDown,onMouseUp,src:src,loop:loop,ref:videoRef,onSeeked:e=>onSeeked?.(e),onPause:e=>onPause?.(e),onPlay:e=>onPlay?.(e),onEnded:e=>onEnd?.(e),autoPlay:isPlaying.current||autoplayBehavior===\"on-mount\"||playingProp&&autoplayBehavior===\"on-viewport\"&&isInViewport,preload:isPlaying.current?\"auto\":isStaticRenderer&&!poster?\"metadata\":autoplayBehavior!==\"on-mount\"&&!isCloseToViewport?\"none\":// `autoplay` overrides this too\n\"metadata\",poster:posterEnabled&&!srcFile&&srcUrl===defaultVideo?\"https://framerusercontent.com/images/5ILRvlYXf72kHSVHqpa3snGzjU.jpg\":posterEnabled&&poster?poster:undefined,onLoadedData:handleReady,controls:controls,muted:isStaticRenderer?true:muted,playsInline:playsinline,style:{cursor:!!onClick?\"pointer\":\"auto\",width:\"100%\",height:\"100%\",borderRadius,display:\"block\",objectFit:objectFit,backgroundColor:backgroundColor,objectPosition:\"50% 50%\"}});});Video.displayName=\"Video\";function capitalizeFirstLetter(value){return value.charAt(0).toUpperCase()+value.slice(1);}export function titleCase(value){const groups=value.match(/[A-Z]{2,}|[A-Z][a-z]+|[a-z]+|[A-Z]|\\d+/gu)||[];return groups.map(capitalizeFirstLetter).join(\" \");}const objectFitOptions=[\"cover\",\"fill\",\"contain\",\"scale-down\",\"none\"];addPropertyControls(Video,{srcType:{type:ControlType.Enum,displaySegmentedControl:true,title:\"Source\",options:[\"URL\",\"Upload\"]},srcUrl:{type:ControlType.String,title:\"URL\",defaultValue:\"https://framerusercontent.com/assets/MLWPbW1dUQawJLhhun3dBwpgJak.mp4\",hidden(props){return props.srcType===\"Upload\";}},srcFile:{type:ControlType.File,title:\"File\",allowedFileTypes:[\"mp4\",\"webm\"],hidden(props){return props.srcType===\"URL\";}},playing:{type:ControlType.Boolean,title:\"Playing\",enabledTitle:\"Yes\",disabledTitle:\"No\"},...borderRadiusControl,posterEnabled:{type:ControlType.Boolean,title:\"Poster\",enabledTitle:\"Yes\",disabledTitle:\"No\"},poster:{type:ControlType.Image,title:\"Image\",hidden:({posterEnabled})=>!posterEnabled,description:\"We recommend adding a poster. [Learn more](https://www.framer.com/help/articles/how-are-videos-optimized-in-framer/).\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"rgba(0,0,0,0)\"},startTime:{title:\"Start Time\",type:ControlType.Number,min:0,max:100,step:.1,unit:\"%\"},loop:{type:ControlType.Boolean,title:\"Loop\",enabledTitle:\"Yes\",disabledTitle:\"No\"},objectFit:{type:ControlType.Enum,title:\"Fit\",options:objectFitOptions,optionTitles:objectFitOptions.map(titleCase)},// restartOnEnter: {\n//     type: ControlType.Boolean,\n//     title: \"On ReEnter\",\n//     enabledTitle: \"Restart\",\n//     disabledTitle: \"Resume\",\n// },\ncontrols:{type:ControlType.Boolean,title:\"Controls\",enabledTitle:\"Show\",disabledTitle:\"Hide\",defaultValue:false},muted:{type:ControlType.Boolean,title:\"Muted\",enabledTitle:\"Yes\",disabledTitle:\"No\"},volume:{type:ControlType.Number,max:100,min:0,unit:\"%\",hidden:({muted})=>muted,defaultValue:25},onEnd:{type:ControlType.EventHandler},onSeeked:{type:ControlType.EventHandler},onPause:{type:ControlType.EventHandler},onPlay:{type:ControlType.EventHandler},...defaultEvents});\nexport const __FramerMetadata__ = {\"exports\":{\"VideoProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"titleCase\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Video\":{\"type\":\"reactComponent\",\"name\":\"Video\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"112\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicWidth\":\"200\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Video.map","// Generated by Framer (27dd866)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getLoadingLazyAtYPosition,getPropertyControls,Image as Image1,RichText,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS,withFX}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{Video}from\"https://framerusercontent.com/modules/lRDHiNWNVWmE0lqtoVHP/7qT0r3So12155VV5Jq5x/Video.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/lyfIyZOSpLPhthjXvNGk/JFxfiSxzb8j0gfTBUaSz/NSeYnuIp_.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/fyGgEG7GtBJi4Wb2aWYt/GPBnDsPnDLBtIdN2EZDj/wpH_DEAc9.js\";const VideoFonts=getFonts(Video);const Image1WithFX=withFX(Image1);const VideoControls=getPropertyControls(Video);const cycleOrder=[\"ScV8sgrRQ\",\"PhJWVOjJ7\",\"DovADPCwt\"];const serializationHash=\"framer-NrgCF\";const variantClassNames={DovADPCwt:\"framer-v-1soti2p\",PhJWVOjJ7:\"framer-v-1o5sajm\",ScV8sgrRQ:\"framer-v-qulgiq\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const n4bIEgM0n=undefined;const jNtIdfv7_=undefined;const lBFuGrDSD=undefined;const cccnTUiqF=undefined;const AS32LSKSW=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const isSet=value=>{if(Array.isArray(value))return value.length>0;return value!==undefined&&value!==null&&value!==\"\";};const negate=value=>{return!value;};const toResponsiveImage=value=>{if(typeof value===\"object\"&&value!==null&&typeof value.src===\"string\"){return value;}return typeof value===\"string\"?{src:value}:undefined;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={Desktop:\"ScV8sgrRQ\",Phone:\"DovADPCwt\",Tablet:\"PhJWVOjJ7\"};const Variants=motion.create(React.Fragment);const getProps=({featured,height,id,image,terraSolStudioPartnersWithGlobalBrandsCafesAndDesignHousesToCreatePHABasedAlternativesToPlasticsOurProductsAreProudlyMadeInAustraliaCraftedWithWorldClassDesignAndScientificallyProvenMaterialsFromFashionHousesToHospitalityGroupsAndGlobalRetailWeHelpBrandsCreateBeautifullyDesignedHighPerformanceAlternativesThatKeepYourAestheticIntactWhileReducingEnvironmentalImpact,video,whatWeDo,width,...props})=>{return{...props,AS32LSKSW:video??props.AS32LSKSW,cccnTUiqF:image??props.cccnTUiqF,jNtIdfv7_:featured??props.jNtIdfv7_??\"Featured\",lBFuGrDSD:terraSolStudioPartnersWithGlobalBrandsCafesAndDesignHousesToCreatePHABasedAlternativesToPlasticsOurProductsAreProudlyMadeInAustraliaCraftedWithWorldClassDesignAndScientificallyProvenMaterialsFromFashionHousesToHospitalityGroupsAndGlobalRetailWeHelpBrandsCreateBeautifullyDesignedHighPerformanceAlternativesThatKeepYourAestheticIntactWhileReducingEnvironmentalImpact??props.lBFuGrDSD??\"Terra Sol Studio partners with global brands, cafes and design houses to create PHA-based alternatives to plastics. Our products are proudly made in Australia, crafted with world-class design and scientifically proven materials.  From fashion houses to hospitality groups and global retail, we help brands create beautifully designed, high-performance alternatives that keep your aesthetic intact while reducing environmental impact.\",n4bIEgM0n:whatWeDo??props.n4bIEgM0n??\"What We Do\",variant:humanReadableVariantMap[props.variant]??props.variant??\"ScV8sgrRQ\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,n4bIEgM0n,jNtIdfv7_,lBFuGrDSD,cccnTUiqF,AS32LSKSW,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"ScV8sgrRQ\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if(baseVariant===\"DovADPCwt\")return false;return true;};const visible=negate(isSet(cccnTUiqF));const visible1=isSet(cccnTUiqF);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-qulgiq\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"ScV8sgrRQ\",ref:refBinding,style:{...style},...addPropertyOverrides({DovADPCwt:{\"data-framer-name\":\"Phone\"},PhJWVOjJ7:{\"data-framer-name\":\"Tablet\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ci4gzg\",\"data-framer-name\":\"Top\",layoutDependency:layoutDependency,layoutId:\"BRywKUAyp\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ozuevd\",\"data-framer-name\":\"Info\",layoutDependency:layoutDependency,layoutId:\"ZspRfykGj\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h2,{className:\"framer-styles-preset-yjtkzw\",\"data-styles-preset\":\"wpH_DEAc9\",style:{\"--framer-text-color\":\"var(--extracted-1of0zx5, var(--token-3238911e-9cd4-40ad-8e5a-3b7215265583, rgb(255, 255, 255)))\"},children:\"Project Name\"})}),className:\"framer-pm7xxa\",\"data-framer-name\":\"Project\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"r5_dDmlkx\",style:{\"--extracted-1of0zx5\":\"var(--token-3238911e-9cd4-40ad-8e5a-3b7215265583, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:n4bIEgM0n,verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({DovADPCwt:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h2,{className:\"framer-styles-preset-yjtkzw\",\"data-styles-preset\":\"wpH_DEAc9\",dir:\"auto\",style:{\"--framer-text-color\":\"var(--extracted-1of0zx5, var(--token-3238911e-9cd4-40ad-8e5a-3b7215265583, rgb(255, 255, 255)))\"},children:\"What We Do\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1aailpq\",\"data-framer-name\":\"line\",layoutDependency:layoutDependency,layoutId:\"rXCW5wYnA\",style:{backgroundColor:\"var(--token-f2a325e4-7975-47c7-b249-f75b512aa063, rgb(246, 246, 246))\",opacity:0}}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h6,{className:\"framer-styles-preset-188e0sw\",\"data-styles-preset\":\"NSeYnuIp_\",dir:\"auto\",style:{\"--framer-text-color\":\"var(--extracted-1w1cjl5, var(--token-3238911e-9cd4-40ad-8e5a-3b7215265583, rgb(255, 255, 255)))\"},children:\"Featured\"})}),className:\"framer-7ypqd5\",\"data-framer-name\":\"Client\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"jBJZDYYQk\",style:{\"--extracted-1w1cjl5\":\"var(--token-3238911e-9cd4-40ad-8e5a-3b7215265583, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:jNtIdfv7_,verticalAlignment:\"top\",withExternalLayout:true})]}),isDisplayed()&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h6,{className:\"framer-styles-preset-188e0sw\",\"data-styles-preset\":\"NSeYnuIp_\",dir:\"auto\",style:{\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"var(--extracted-1w1cjl5, var(--token-3238911e-9cd4-40ad-8e5a-3b7215265583, rgb(255, 255, 255)))\"},children:\"Terra Sol Studio partners with global brands, cafes and design houses to create PHA-based alternatives to plastics. Our products are proudly made in Australia, crafted with world-class design and scientifically proven materials.  From fashion houses to hospitality groups and global retail, we help brands create beautifully designed, high-performance alternatives that keep your aesthetic intact while reducing environmental impact.\"})}),className:\"framer-dbuxe2\",\"data-framer-name\":\"Vogue\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"KLH6BINMW\",style:{\"--extracted-1w1cjl5\":\"var(--token-3238911e-9cd4-40ad-8e5a-3b7215265583, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:lBFuGrDSD,verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1wpjn86\",\"data-framer-name\":\"Image\",layoutDependency:layoutDependency,layoutId:\"iCK5Kviri\",style:{backgroundColor:\"rgb(255, 255, 255)\"},children:[visible!==false&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-5c5vgd-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"qabJY7WFN-container\",nodeId:\"qabJY7WFN\",rendersWithMotion:true,scopeId:\"bZsBmnmUg\",children:/*#__PURE__*/_jsx(Video,{backgroundColor:\"rgba(0, 0, 0, 0)\",borderRadius:0,bottomLeftRadius:0,bottomRightRadius:0,controls:false,height:\"100%\",id:\"qabJY7WFN\",isMixedBorderRadius:false,layoutId:\"qabJY7WFN\",loop:true,muted:true,objectFit:\"cover\",playing:true,posterEnabled:true,srcFile:AS32LSKSW,srcType:\"Upload\",srcUrl:\"https://framerusercontent.com/assets/MLWPbW1dUQawJLhhun3dBwpgJak.mp4\",startTime:0,style:{height:\"100%\",width:\"100%\"},topLeftRadius:0,topRightRadius:0,volume:25,width:\"100%\"})})}),visible1!==false&&/*#__PURE__*/_jsx(Image1WithFX,{__framer__styleTransformEffectEnabled:true,__framer__transformTargets:[{target:{opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1.4,skewX:0,skewY:0,x:0,y:0}},{target:{opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:0}}],__framer__transformTrigger:\"onInView\",__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,background:{alt:\"\",fit:\"fill\",loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+(((componentViewport?.height||800)*1-0-0)/2+0+0)),sizes:componentViewport?.width||\"100vw\",...toResponsiveImage(cccnTUiqF)},className:\"framer-s2n5bn\",\"data-framer-name\":\"Image\",layoutDependency:layoutDependency,layoutId:\"tpt01ZvFM\",style:{filter:\"brightness(0.9)\",WebkitFilter:\"brightness(0.9)\"},...addPropertyOverrides({DovADPCwt:{__framer__transformTargets:[{target:{opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1.3,skewX:0,skewY:0,x:0,y:0}},{target:{opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:0}}],background:{alt:\"\",fit:\"fill\",loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+(((componentViewport?.height||500)*1-0-0)/2+0+0)),sizes:componentViewport?.width||\"100vw\",...toResponsiveImage(cccnTUiqF)}}},baseVariant,gestureVariant)})]})]})})})});});const css=[\".framer-NrgCF.framer-t96mrw, .framer-NrgCF .framer-t96mrw { display: block; }\",\".framer-NrgCF.framer-qulgiq { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 800px; justify-content: flex-start; overflow: hidden; padding: 100px 24px 0px 24px; position: relative; width: 1200px; }\",\".framer-NrgCF .framer-1ci4gzg { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: 100%; justify-content: flex-start; overflow: hidden; padding: 0px; position: relative; width: 1px; }\",\".framer-NrgCF .framer-1ozuevd { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 24px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-NrgCF .framer-pm7xxa, .framer-NrgCF .framer-7ypqd5 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-NrgCF .framer-1aailpq { flex: 1 0 0px; height: 1px; overflow: hidden; position: relative; width: 1px; }\",\".framer-NrgCF .framer-dbuxe2 { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 441px; word-break: break-word; word-wrap: break-word; }\",\".framer-NrgCF .framer-1wpjn86 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 100%; justify-content: center; left: 0px; overflow: hidden; padding: 0px; position: absolute; top: 0px; width: 100%; z-index: -1; }\",\".framer-NrgCF .framer-5c5vgd-container { flex: none; height: calc(var(--framer-viewport-height, 100vh) * 1); left: 0px; position: absolute; top: 0px; width: 100%; z-index: 1; }\",\".framer-NrgCF .framer-s2n5bn { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: calc(var(--framer-viewport-height, 100vh) * 1); justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 100%; will-change: var(--framer-will-change-filter-override, filter); }\",\".framer-NrgCF.framer-v-1o5sajm.framer-qulgiq { width: 810px; }\",\".framer-NrgCF.framer-v-1o5sajm .framer-pm7xxa, .framer-NrgCF.framer-v-1soti2p .framer-7ypqd5 { order: 0; }\",\".framer-NrgCF.framer-v-1o5sajm .framer-1aailpq { order: 1; }\",\".framer-NrgCF.framer-v-1o5sajm .framer-7ypqd5 { order: 2; }\",\".framer-NrgCF.framer-v-1o5sajm .framer-dbuxe2 { width: 100%; }\",\".framer-NrgCF.framer-v-1soti2p.framer-qulgiq { align-content: center; align-items: center; flex-direction: column; height: 500px; padding: 60px 12px 0px 12px; width: 390px; }\",\".framer-NrgCF.framer-v-1soti2p .framer-1ci4gzg { height: 1px; width: 100%; }\",\".framer-NrgCF.framer-v-1soti2p .framer-1ozuevd { align-content: flex-start; align-items: flex-start; flex-direction: column; gap: 12px; order: 0; width: 366px; }\",\".framer-NrgCF.framer-v-1soti2p .framer-pm7xxa { order: 2; white-space: pre-wrap; width: 366px; word-break: break-word; word-wrap: break-word; }\",\".framer-NrgCF.framer-v-1soti2p .framer-1aailpq { flex: none; order: 1; width: 100%; }\",...sharedStyle.css,...sharedStyle1.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 800\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"PhJWVOjJ7\":{\"layout\":[\"fixed\",\"fixed\"]},\"DovADPCwt\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"n4bIEgM0n\":\"whatWeDo\",\"jNtIdfv7_\":\"featured\",\"lBFuGrDSD\":\"terraSolStudioPartnersWithGlobalBrandsCafesAndDesignHousesToCreatePHABasedAlternativesToPlasticsOurProductsAreProudlyMadeInAustraliaCraftedWithWorldClassDesignAndScientificallyProvenMaterialsFromFashionHousesToHospitalityGroupsAndGlobalRetailWeHelpBrandsCreateBeautifullyDesignedHighPerformanceAlternativesThatKeepYourAestheticIntactWhileReducingEnvironmentalImpact\",\"cccnTUiqF\":\"image\",\"AS32LSKSW\":\"video\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerbZsBmnmUg=withCSS(Component,css,\"framer-NrgCF\");export default FramerbZsBmnmUg;FramerbZsBmnmUg.displayName=\"Projects Promo\";FramerbZsBmnmUg.defaultProps={height:800,width:1200};addPropertyControls(FramerbZsBmnmUg,{variant:{options:[\"ScV8sgrRQ\",\"PhJWVOjJ7\",\"DovADPCwt\"],optionTitles:[\"Desktop\",\"Tablet\",\"Phone\"],title:\"Variant\",type:ControlType.Enum},n4bIEgM0n:{defaultValue:\"What We Do\",title:\"What We Do\",type:ControlType.String},onn4bIEgM0nChange:{changes:\"n4bIEgM0n\",type:ControlType.ChangeHandler},jNtIdfv7_:{defaultValue:\"Featured\",title:\"Featured\",type:ControlType.String},onjNtIdfv7_Change:{changes:\"jNtIdfv7_\",type:ControlType.ChangeHandler},lBFuGrDSD:{defaultValue:\"Terra Sol Studio partners with global brands, cafes and design houses to create PHA-based alternatives to plastics. Our products are proudly made in Australia, crafted with world-class design and scientifically proven materials.  From fashion houses to hospitality groups and global retail, we help brands create beautifully designed, high-performance alternatives that keep your aesthetic intact while reducing environmental impact.\",placeholder:\"\",title:\"Terra Sol Studio partners with global brands, cafes and design houses to create PHA-based alternatives to plastics. Our products are proudly made in Australia, crafted with world-class design and scientifically proven materials.  From fashion houses to hospitality groups and global retail, we help brands create beautifully designed, high-performance alternatives that keep your aesthetic intact while reducing environmental impact.\",type:ControlType.String},onlBFuGrDSDChange:{changes:\"lBFuGrDSD\",type:ControlType.ChangeHandler},cccnTUiqF:{description:\"\",title:\"Image\",type:ControlType.ResponsiveImage},AS32LSKSW:VideoControls?.[\"srcFile\"]&&{...VideoControls[\"srcFile\"],__defaultAssetReference:\"\",description:undefined,hidden:undefined,title:\"Video\"},onAS32LSKSWChange:{changes:\"AS32LSKSW\",type:ControlType.ChangeHandler}});addFonts(FramerbZsBmnmUg,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...VideoFonts,...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerbZsBmnmUg\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerColorSyntax\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerVariables\":\"{\\\"n4bIEgM0n\\\":\\\"whatWeDo\\\",\\\"jNtIdfv7_\\\":\\\"featured\\\",\\\"lBFuGrDSD\\\":\\\"terraSolStudioPartnersWithGlobalBrandsCafesAndDesignHousesToCreatePHABasedAlternativesToPlasticsOurProductsAreProudlyMadeInAustraliaCraftedWithWorldClassDesignAndScientificallyProvenMaterialsFromFashionHousesToHospitalityGroupsAndGlobalRetailWeHelpBrandsCreateBeautifullyDesignedHighPerformanceAlternativesThatKeepYourAestheticIntactWhileReducingEnvironmentalImpact\\\",\\\"cccnTUiqF\\\":\\\"image\\\",\\\"AS32LSKSW\\\":\\\"video\\\"}\",\"framerAutoSizeImages\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"1200\",\"framerIntrinsicHeight\":\"800\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"PhJWVOjJ7\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"DovADPCwt\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./bZsBmnmUg.map","export const BROWSER=typeof window!==\"undefined\";export const createElement=(tagName,optionsOrChildren,_children)=>{const element=document.createElement(tagName);const[options,children]=Array.isArray(optionsOrChildren)?[undefined,optionsOrChildren]:[optionsOrChildren,_children];if(options)Object.assign(element,options);children===null||children===void 0?void 0:children.forEach(child=>element.appendChild(child));return element;};// Makeshift .offsetRight\nexport const offset=(el,justify)=>{var _this;var _offsetWidth;return justify===\"left\"?el.offsetLeft:((_offsetWidth=(_this=el.offsetParent instanceof HTMLElement?el.offsetParent:null)===null||_this===void 0?void 0:_this.offsetWidth)!==null&&_offsetWidth!==void 0?_offsetWidth:0)-el.offsetWidth-el.offsetLeft;};export const visible=el=>el.offsetWidth>0&&el.offsetHeight>0;// HMR-safe customElements.define\nexport const define=(name,constructor)=>{if(BROWSER&&customElements.get(name)!==constructor)customElements.define(name,constructor);};export function forEach(arr,fn,{reverse=false}={}){const len=arr.length;for(let i=reverse?len-1:0;reverse?i>=0:i<len;reverse?i--:i++){fn(arr[i],i);}}// Math.max that handles nullish numbers\nexport const max=(n1,n2)=>{if(n1==null)return n2;if(n2==null)return n1;return Math.max(n1,n2);};export const html=String.raw;export const css=String.raw;\nexport const __FramerMetadata__ = {\"exports\":{\"Mutable\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Justify\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"define\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"visible\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"offset\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"html\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"createElement\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"forEach\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"max\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"BROWSER\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HTMLProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./util.map","import{css,BROWSER}from\"https://framerusercontent.com/modules/Gdw4PFaebBg7otYjbV0a/dcn7aXLoeairMqUE2xn1/util.js\";export const supportsLinear=BROWSER&&typeof CSS!==\"undefined\"&&CSS.supports&&CSS.supports(\"animation-timing-function\",\"linear(1,2)\");export const supportsMod=BROWSER&&typeof CSS!==\"undefined\"&&CSS.supports&&CSS.supports(\"line-height\",\"mod(1,1)\");export const prefersReducedMotion=BROWSER&&typeof matchMedia!==\"undefined\"?matchMedia(\"(prefers-reduced-motion: reduce)\"):null;// Register animated vars:\nexport const opacityDeltaVar=\"--_number-flow-d-opacity\";export const widthDeltaVar=\"--_number-flow-d-width\";export const dxVar=\"--_number-flow-dx\";export const deltaVar=\"--_number-flow-d\";export const supportsAtProperty=(()=>{try{CSS.registerProperty({name:opacityDeltaVar,syntax:\"<number>\",inherits:false,initialValue:\"0\"});CSS.registerProperty({name:dxVar,syntax:\"<length>\",inherits:true,initialValue:\"0px\"});CSS.registerProperty({name:widthDeltaVar,syntax:\"<number>\",inherits:false,initialValue:\"0\"});CSS.registerProperty({name:deltaVar,syntax:\"<number>\",inherits:true,initialValue:\"0\"});return true;}catch{return false;}})();// Don't use CSS.registerProperty for vars needed during SSR:\nexport const charHeight=\"var(--number-flow-char-height, 1em)\";// Mask technique taken from:\n// https://expensive.toys/blog/blur-vignette\nexport const maskHeight=\"var(--number-flow-mask-height, 0.25em)\";export const halfMaskHeight=`calc(${maskHeight} / 2)`;const maskWidth=\"var(--number-flow-mask-width, 0.5em)\";const scaledMaskWidth=`calc(${maskWidth} / var(--scale-x))`;const cornerGradient=`#000 0, transparent 71%`// or transparent ${maskWidth}\n;const styles=css`\n\t:host {\n\t\tdisplay: inline-block;\n\t\tdirection: ltr;\n\t\twhite-space: nowrap;\n\t\tisolation: isolate; /* for .number z-index */\n\t\t/* Technically this is only needed on the .number, but applying it here makes the ::selection the same height for the whole element: */\n\t\tline-height: ${charHeight} !important;\n\t}\n\n\t.number,\n\t.number__inner {\n\t\tdisplay: inline-block;\n\t\ttransform-origin: left top;\n\t}\n\n\t:host([data-will-change]) :is(.number, .number__inner, .section, .digit, .digit__num, .symbol) {\n\t\twill-change: transform;\n\t}\n\n\t.number {\n\t\t--scale-x: calc(1 + var(${widthDeltaVar}) / var(--width));\n\t\ttransform: translateX(var(${dxVar})) scaleX(var(--scale-x));\n\n\t\tmargin: 0 calc(-1 * ${maskWidth});\n\t\tposition: relative; /* for z-index */\n\n\t\t/* overflow: clip; /* helpful to not affect page layout, but breaks baseline alignment in Safari :/ */\n\t\t/* -webkit- prefixed properties have better support than unprefixed ones: */\n\t\t-webkit-mask-image:\n\t\t\t/* Horizontal: */\n\t\t\tlinear-gradient(\n\t\t\t\tto right,\n\t\t\t\ttransparent 0,\n\t\t\t\t#000 ${scaledMaskWidth},\n\t\t\t\t#000 calc(100% - ${scaledMaskWidth}),\n\t\t\t\ttransparent\n\t\t\t),\n\t\t\t/* Vertical: */\n\t\t\t\tlinear-gradient(\n\t\t\t\t\tto bottom,\n\t\t\t\t\ttransparent 0,\n\t\t\t\t\t#000 ${maskHeight},\n\t\t\t\t\t#000 calc(100% - ${maskHeight}),\n\t\t\t\t\ttransparent 100%\n\t\t\t\t),\n\t\t\t/* TL corner */ radial-gradient(at bottom right, ${cornerGradient}),\n\t\t\t/* TR corner */ radial-gradient(at bottom left, ${cornerGradient}),\n\t\t\t/* BR corner */ radial-gradient(at top left, ${cornerGradient}),\n\t\t\t/* BL corner */ radial-gradient(at top right, ${cornerGradient});\n\t\t-webkit-mask-size:\n\t\t\t100% calc(100% - ${maskHeight} * 2),\n\t\t\tcalc(100% - ${scaledMaskWidth} * 2) 100%,\n\t\t\t${scaledMaskWidth} ${maskHeight},\n\t\t\t${scaledMaskWidth} ${maskHeight},\n\t\t\t${scaledMaskWidth} ${maskHeight},\n\t\t\t${scaledMaskWidth} ${maskHeight};\n\t\t-webkit-mask-position:\n\t\t\tcenter,\n\t\t\tcenter,\n\t\t\ttop left,\n\t\t\ttop right,\n\t\t\tbottom right,\n\t\t\tbottom left;\n\t\t-webkit-mask-repeat: no-repeat;\n\t}\n\n\t.number__inner {\n\t\tpadding: ${halfMaskHeight} ${maskWidth};\n\t\t/* invert parent's: */\n\t\ttransform: scaleX(calc(1 / var(--scale-x))) translateX(calc(-1 * var(${dxVar})));\n\t}\n\n\t/* Put number underneath other sections. Negative z-index messed up text cursor and selection, weirdly: */\n\t:host > :not(.number) {\n\t\tz-index: 5;\n\t}\n\n\t.section,\n\t.symbol {\n\t\tdisplay: inline-block;\n\t\t/* for __exiting: */\n\t\tposition: relative;\n\t\tisolation: isolate; /* also helpful for mix-blend-mode in symbol__value */\n\t}\n\n\t.section::after {\n\t\t/*\n\t\t * We seem to need some type of character to ensure baseline alignment continues working\n\t\t * even when empty\n\t\t */\n\t\tcontent: '\\200b'; /* zero-width space */\n\t\tdisplay: inline-block;\n\t}\n\n\t.section--justify-left {\n\t\ttransform-origin: center left;\n\t}\n\n\t.section--justify-right {\n\t\ttransform-origin: center right;\n\t}\n\n\t.section__exiting,\n\t.symbol__exiting {\n\t\tmargin: 0 !important;\n\t\tposition: absolute !important;\n\t\tz-index: -1;\n\t}\n\n\t.digit {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t\t--c: var(--current) + var(${deltaVar});\n\t}\n\n\t.digit__num,\n\t.number .section::after {\n\t\tpadding: ${halfMaskHeight} 0;\n\t}\n\n\t.digit__num {\n\t\tdisplay: inline-block;\n\t\t/* Claude + https://buildui.com/recipes/animated-counter */\n\t\t--offset-raw: mod(var(--length) + var(--n) - mod(var(--c), var(--length)), var(--length));\n\t\t--offset: calc(\n\t\t\tvar(--offset-raw) - var(--length) * round(down, var(--offset-raw) / (var(--length) / 2), 1)\n\t\t);\n\t\t/* Technically we just need var(--offset)*100%, but clamping should reduce the layer size: */\n\t\t--y: clamp(-100%, var(--offset) * 100%, 100%);\n\t\ttransform: translateY(var(--y));\n\t}\n\n\t.digit__num:not(.is-current) {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%) translateY(var(--y));\n\t}\n\n\t.digit:not(.is-spinning) .digit__num:not(.is-current) {\n\t\tdisplay: none;\n\t}\n\n\t.symbol__value {\n\t\tdisplay: inline-block;\n\t\tmix-blend-mode: plus-lighter; /* better crossfades e.g. + <-> - */\n\t\twhite-space: pre; /* some symbols are spaces or thin spaces */\n\t}\n\n\t.section--justify-left .symbol__exiting {\n\t\tleft: 0;\n\t}\n\n\t.section--justify-right .symbol__exiting {\n\t\tright: 0;\n\t}\n\n\t.animate-presence {\n\t\topacity: calc(1 + var(${opacityDeltaVar}));\n\t}\n`;export default styles;\nexport const __FramerMetadata__ = {\"exports\":{\"supportsMod\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"prefersReducedMotion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"dxVar\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"deltaVar\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"halfMaskHeight\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"supportsLinear\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"maskHeight\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"opacityDeltaVar\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"charHeight\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"widthDeltaVar\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"supportsAtProperty\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./styles.map","import{css,html,BROWSER}from\"https://framerusercontent.com/modules/Gdw4PFaebBg7otYjbV0a/dcn7aXLoeairMqUE2xn1/util.js\";import{charHeight,halfMaskHeight,maskHeight}from\"https://framerusercontent.com/modules/a9L165TciBHZyMGFIwtU/yEBIwtxcNyYOPf43vN85/styles.js\";export const ServerSafeHTMLElement=BROWSER?HTMLElement:class{}// for types\n;const styles=css`\n\t:host {\n\t\tdisplay: inline-block;\n\t\tdirection: ltr;\n\t\twhite-space: nowrap;\n\t\tline-height: ${charHeight} !important;\n\t}\n\n\tspan {\n\t\tdisplay: inline-block;\n\t}\n\n\t:host([data-will-change]) span {\n\t\twill-change: transform;\n\t}\n\n\t.number,\n\t.digit {\n\t\tpadding: ${halfMaskHeight} 0;\n\t}\n\n\t.symbol {\n\t\twhite-space: pre; /* some symbols are spaces or thin spaces */\n\t}\n`;const renderPart=part=>`<span class=\"${part.type===\"integer\"||part.type===\"fraction\"?\"digit\":\"symbol\"}\" part=\"${part.type===\"integer\"||part.type===\"fraction\"?`digit ${part.type}-digit`:part.type}\">${part.value}</span>`;const renderSection=(section,part)=>`<span part=\"${part}\">${section.reduce((str,p)=>str+renderPart(p),\"\")}</span>`;export const renderInnerHTML=data=>// shadowroot=\"open\" non-standard attribute for old Chrome:\n    html`<template shadowroot=\"open\" shadowrootmode=\"open\"\n\t\t\t><style>\n\t\t\t\t${styles}</style\n\t\t\t>${renderSection(data.pre,\"left\")}<span part=\"number\" class=\"number\"\n\t\t\t\t>${renderSection(data.integer,\"integer\")}${renderSection(data.fraction,\"fraction\")}</span\n\t\t\t>${renderSection(data.post,\"right\")}</template\n\t\t><span\n\t\t\tstyle=\"font-kerning: none; display: inline-block; line-height: ${charHeight} !important; padding: ${maskHeight} 0;\"\n\t\t\t>${data.valueAsString}</span\n\t\t>`// ^ fallback for browsers that don't support DSD\n;\nexport const __FramerMetadata__ = {\"exports\":{\"ServerSafeHTMLElement\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"renderInnerHTML\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ssr.map","// Merge the plus and minus sign types\nexport function formatToData(value,formatter,prefix,suffix){const parts=formatter.formatToParts(value);if(prefix)parts.unshift({type:\"prefix\",value:prefix});if(suffix)parts.push({type:\"suffix\",value:suffix});console.log(prefix,suffix);const pre=[];const _integer=[]// we do a second pass to key these from RTL\n;const fraction=[];const post=[];const counts={};const generateKey=type=>{var _counts_type;return`${type}:${counts[type]=((_counts_type=counts[type])!==null&&_counts_type!==void 0?_counts_type:-1)+1}`;};let valueAsString=\"\";let seenInteger=false,seenDecimal=false;for(const part of parts){valueAsString+=part.value;// Merge plus and minus sign types (doing it this way appeases TypeScript)\nconst type=part.type===\"minusSign\"||part.type===\"plusSign\"?\"sign\":part.type;if(type===\"integer\"){seenInteger=true;_integer.push(...part.value.split(\"\").map(d=>({type,value:parseInt(d)})));}else if(type===\"group\"){_integer.push({type,value:part.value});}else if(type===\"decimal\"){seenDecimal=true;fraction.push({type,value:part.value,key:generateKey(type)});}else if(type===\"fraction\"){fraction.push(...part.value.split(\"\").map(d=>({type,value:parseInt(d),key:generateKey(type),pos:-1-counts[type]})));}else{(seenInteger||seenDecimal?post:pre).push({type,value:part.value,key:generateKey(type)});}}const integer=[];// Key the integer parts RTL, for better layout animations\nfor(let i=_integer.length-1;i>=0;i--){const p=_integer[i];integer.unshift(p.type===\"integer\"?{...p,key:generateKey(p.type),pos:counts[p.type]}:{...p,key:generateKey(p.type)});}return{pre,integer,fraction,post,valueAsString,value:typeof value==\"string\"?parseFloat(value):value};}\nexport const __FramerMetadata__ = {\"exports\":{\"KeyedSymbolPart\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"formatToData\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Value\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"KeyedDigitPart\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NumberPartKey\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Format\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NumberPartType\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Data\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"KeyedNumberPart\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./formatter.map","function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{createElement,offset,visible,max,forEach}from\"https://framerusercontent.com/modules/Gdw4PFaebBg7otYjbV0a/dcn7aXLoeairMqUE2xn1/util.js\";import{ServerSafeHTMLElement}from\"https://framerusercontent.com/modules/OgWgndAFyvu2Uat4ngWh/46M5bSSTGskoeUN6XI4j/ssr.js\";import styles,{supportsMod,supportsLinear,dxVar,opacityDeltaVar,prefersReducedMotion,supportsAtProperty,widthDeltaVar,deltaVar}from\"https://framerusercontent.com/modules/a9L165TciBHZyMGFIwtU/yEBIwtxcNyYOPf43vN85/styles.js\";export{prefersReducedMotion}from\"https://framerusercontent.com/modules/a9L165TciBHZyMGFIwtU/yEBIwtxcNyYOPf43vN85/styles.js\";export{renderInnerHTML}from\"https://framerusercontent.com/modules/OgWgndAFyvu2Uat4ngWh/46M5bSSTGskoeUN6XI4j/ssr.js\";export*from\"https://framerusercontent.com/modules/nND5KreKFoT8ms7HKata/Vmif4IbMKvsbPZXwEHBz/formatter.js\";export{BROWSER,define}from\"https://framerusercontent.com/modules/Gdw4PFaebBg7otYjbV0a/dcn7aXLoeairMqUE2xn1/util.js\";export const canAnimate=supportsMod&&supportsLinear&&supportsAtProperty;let styleSheet;// This one is used internally for framework wrappers, and\n// doesn't include things like attribute support:\nexport class NumberFlowLite extends ServerSafeHTMLElement{get animated(){return this._animated;}set animated(val){var // Finish any in-flight animations (instead of cancel, which won't trigger their finish events):\n_this_shadowRoot;if(this.animated===val)return;this._animated=val;(_this_shadowRoot=this.shadowRoot)===null||_this_shadowRoot===void 0?void 0:_this_shadowRoot.getAnimations().forEach(a=>a.finish());}set data(data){if(data==null){return;}const{pre,integer,fraction,post,value}=data;// Initialize if needed\nif(!this.created){this._data=data;// This will overwrite the DSD if any:\nthis.attachShadow({mode:\"open\"});// Add stylesheet\nif(typeof CSSStyleSheet!==\"undefined\"&&this.shadowRoot.adoptedStyleSheets){if(!styleSheet){styleSheet=new CSSStyleSheet;styleSheet.replaceSync(styles);}this.shadowRoot.adoptedStyleSheets=[styleSheet];}else{const style=document.createElement(\"style\");style.textContent=styles;this.shadowRoot.appendChild(style);}this._pre=new SymbolSection(this,pre,{justify:\"right\",part:\"left\"});this.shadowRoot.appendChild(this._pre.el);this._num=new Num(this,integer,fraction);this.shadowRoot.appendChild(this._num.el);this._post=new SymbolSection(this,post,{justify:\"left\",part:\"right\"});this.shadowRoot.appendChild(this._post.el);}else{const prev=this._data;this._data=data;this.computedTrend=typeof this.trend===\"function\"?this.trend(prev.value,value):this.trend;this.startingPos=undefined;if(this.computedTrend&&this.continuous){// Find the starting pos based on the parts, not the value,\n// to handle e.g. compact notation where value = 1000 and integer part = 1\nconst prevNumber=prev.integer.concat(prev.fraction).filter(p=>p.type===\"integer\"||p.type===\"fraction\");const number=data.integer.concat(data.fraction).filter(p=>p.type===\"integer\"||p.type===\"fraction\");const firstChangedPrev=prevNumber.find(pp=>!number.find(p=>p.pos===pp.pos&&p.value===pp.value));const firstChanged=number.find(p=>!prevNumber.find(pp=>p.pos===pp.pos&&p.value===pp.value));this.startingPos=max(firstChangedPrev===null||firstChangedPrev===void 0?void 0:firstChangedPrev.pos,firstChanged===null||firstChanged===void 0?void 0:firstChanged.pos);}this.computedAnimated=canAnimate&&this._animated&&(!this.respectMotionPreference||!(prefersReducedMotion===null||prefersReducedMotion===void 0?void 0:prefersReducedMotion.matches))&&// https://github.com/barvian/number-flow/issues/9\nvisible(this);if(!this.manual)this.willUpdate();this._pre.update(pre);this._num.update({integer,fraction});this._post.update(post);if(!this.manual)this.didUpdate();}this.created=true;}willUpdate(){// Not super safe to check animated here, b/c the prop may not have been updated yet:\nthis._pre.willUpdate();this._num.willUpdate();this._post.willUpdate();}didUpdate(){// Safe to call this here because we know the animated prop is up-to-date\nif(!this.computedAnimated)return;// If we're already animating, cancel the previous animationsfinish event:\nif(this._abortAnimationsFinish)this._abortAnimationsFinish.abort();else this.dispatchEvent(new Event(\"animationsstart\"));this._pre.didUpdate();this._num.didUpdate();this._post.didUpdate();const controller=new AbortController;Promise.all(this.shadowRoot.getAnimations().map(a=>a.finished)).then(()=>{if(!controller.signal.aborted){this.dispatchEvent(new Event(\"animationsfinish\"));this._abortAnimationsFinish=undefined;}});this._abortAnimationsFinish=controller;}constructor(){super();_define_property(this,\"_animated\",void 0);_define_property(this,\"created\",false);_define_property(this,\"_pre\",void 0);_define_property(this,\"_num\",void 0);_define_property(this,\"_post\",void 0);_define_property(this,\"computedTrend\",void 0);_define_property(this,\"startingPos\",void 0);_define_property(this,\"computedAnimated\",void 0);_define_property(this,\"_data\",void 0);_define_property(this,\"manual\",false);_define_property(this,\"_abortAnimationsFinish\",void 0);const{animated,...props}=this.constructor.defaultProps;this._animated=this.computedAnimated=animated;Object.assign(this,props);}}/**\n     * Use `private _private` properties instead of `#private` to avoid # polyfill and\n     * reduce bundle size. Also, use `readonly` properties instead of getters to save on bundle\n     * size, even though you have to do gross stuff like `(this as Mutable<...>)` until TS\n     * supports e.g. https://github.com/microsoft/TypeScript/issues/37487\n     */_define_property(NumberFlowLite,\"defaultProps\",{transformTiming:{duration:900,// Make sure to keep this minified:\neasing:`linear(0,.005,.019,.039,.066,.096,.129,.165,.202,.24,.278,.316,.354,.39,.426,.461,.494,.526,.557,.586,.614,.64,.665,.689,.711,.731,.751,.769,.786,.802,.817,.831,.844,.856,.867,.877,.887,.896,.904,.912,.919,.925,.931,.937,.942,.947,.951,.955,.959,.962,.965,.968,.971,.973,.976,.978,.98,.981,.983,.984,.986,.987,.988,.989,.99,.991,.992,.992,.993,.994,.994,.995,.995,.996,.996,.9963,.9967,.9969,.9972,.9975,.9977,.9979,.9981,.9982,.9984,.9985,.9987,.9988,.9989,1)`},spinTiming:undefined,opacityTiming:{duration:450,easing:\"ease-out\"},animated:true,trend:(oldValue,value)=>Math.sign(value-oldValue),continuous:false,respectMotionPreference:true,digits:undefined});class Num{willUpdate(){this._prevWidth=this.el.offsetWidth;this._prevLeft=this.el.getBoundingClientRect().left;this._integer.willUpdate();this._fraction.willUpdate();}update({integer,fraction}){this._integer.update(integer);this._fraction.update(fraction);}didUpdate(){const rect=this.el.getBoundingClientRect();// Do this before starting to animate:\nthis._integer.didUpdate();this._fraction.didUpdate();const dx=this._prevLeft-rect.left;const width=this.el.offsetWidth;// We convert scale to width delta in px to better handle interruptions and keep them in\n// sync with translations:\nconst dWidth=this._prevWidth-width;this.el.style.setProperty(\"--width\",String(width));this.el.animate({[dxVar]:[`${dx}px`,\"0px\"],[widthDeltaVar]:[dWidth,0]},{...this.flow.transformTiming,composite:\"accumulate\"});}constructor(flow,integer,fraction,{className,...props}={}){_define_property(this,\"flow\",void 0);_define_property(this,\"el\",void 0);_define_property(this,\"_inner\",void 0);_define_property(this,\"_integer\",void 0);_define_property(this,\"_fraction\",void 0);_define_property(this,\"_prevWidth\",void 0);_define_property(this,\"_prevLeft\",void 0);this.flow=flow;this._integer=new NumberSection(flow,integer,{justify:\"right\",part:\"integer\"});this._fraction=new NumberSection(flow,fraction,{justify:\"left\",part:\"fraction\"});this._inner=createElement(\"span\",{className:`number__inner`},[this._integer.el,this._fraction.el]);this.el=createElement(\"span\",{...props,part:\"number\",className:`number ${className!==null&&className!==void 0?className:\"\"}`},[this._inner]);}}class Section{addChar(part,{startDigitsAtZero=false,...props}={}){const comp=part.type===\"integer\"||part.type===\"fraction\"?new Digit(this,part.type,startDigitsAtZero?0:part.value,part.pos,{...props,onRemove:this.onCharRemove(part.key)}):new Sym(this,part.type,part.value,{...props,onRemove:this.onCharRemove(part.key)});this.children.set(part.key,comp);return comp;}unpop(char){char.el.classList.remove(\"section__exiting\");char.el.style.top=\"\";char.el.style[this.justify]=\"\";}pop(chars){// Calculate offsets for removed before popping, to avoid layout thrashing:\nchars.forEach(char=>{char.el.style.top=`${char.el.offsetTop}px`;char.el.style[this.justify]=`${offset(char.el,this.justify)}px`;});chars.forEach(char=>{char.el.classList.add(\"section__exiting\");char.present=false;});}addNewAndUpdateExisting(parts){const added=new Map;const updated=new Map;// Add new parts before any other updates, so we can save their position correctly:\nconst reverse=this.justify===\"left\";const op=reverse?\"prepend\":\"append\";forEach(parts,part=>{let comp;// Already exists/needs update, so set aside for now\nif(this.children.has(part.key)){comp=this.children.get(part.key);updated.set(part,comp);this.unpop(comp);comp.present=true;}else{// New part\ncomp=this.addChar(part,{startDigitsAtZero:true,animateIn:true});added.set(part,comp);}this.el[op](comp.el);},{reverse});if(this.flow.computedAnimated){const rect=this.el.getBoundingClientRect()// this should only cause a layout if there were added children\n;added.forEach(comp=>{comp.willUpdate(rect);});}// Update added children to their initial value (we start them at 0)\nadded.forEach((comp,part)=>{comp.update(part.value);});// Update any updated children\nupdated.forEach((comp,part)=>{comp.update(part.value);});}willUpdate(){const rect=this.el.getBoundingClientRect();this._prevOffset=rect[this.justify];this.children.forEach(comp=>comp.willUpdate(rect));}didUpdate(){const rect=this.el.getBoundingClientRect();// Make sure to pass this in before starting to animate:\nthis.children.forEach(comp=>comp.didUpdate(rect));const offset=rect[this.justify];const dx=this._prevOffset-offset;// Technically checking for children could get weird during multiple interruptions\n// but probably still worth it;\nif(dx&&this.children.size)this.el.animate({transform:[`translateX(${dx}px)`,\"none\"]},{...this.flow.transformTiming,composite:\"accumulate\"});}constructor(flow,parts,{justify,className,...props},children){_define_property(this,\"flow\",void 0);_define_property(this,\"el\",void 0);_define_property(this,\"justify\",void 0);// All children in the DOM:\n_define_property(this,\"children\",void 0);_define_property(this,\"onCharRemove\",void 0);_define_property(this,\"_prevOffset\",void 0);this.flow=flow;this.children=new Map;this.onCharRemove=key=>()=>{this.children.delete(key);};this.justify=justify;const chars=parts.map(p=>this.addChar(p).el);this.el=createElement(\"span\",{...props,className:`section section--justify-${justify} ${className!==null&&className!==void 0?className:\"\"}`},children?children(chars):chars);}}class NumberSection extends Section{update(parts){const removed=new Map;this.children.forEach((comp,key)=>{// Keep track of removed children:\nif(!parts.find(p=>p.key===key)){removed.set(key,comp);}// Put everything back into the flow briefly, to recompute offsets:\nthis.unpop(comp);});this.addNewAndUpdateExisting(parts);// Set all removed digits to 0, for mathematical correctness:\nremoved.forEach(comp=>{if(comp instanceof Digit)comp.update(0);});// Then end with them popped out again:\nthis.pop(removed);}}class SymbolSection extends Section{update(parts){const removed=new Map;this.children.forEach((comp,key)=>{// Keep track of removed children:\nif(!parts.find(p=>p.key===key)){removed.set(key,comp);}});// Pop them, before any additions\nthis.pop(removed);this.addNewAndUpdateExisting(parts);}}class AnimatePresence{get present(){return this._present;}set present(val){if(this._present===val)return;this._present=val;if(!this.flow.computedAnimated){if(!val)this._remove();return;}this.el.style.setProperty(\"--_number-flow-d-opacity\",val?\"0\":\"-.999\");this.el.animate({[opacityDeltaVar]:val?[-.9999,0]:[.999,0]},{...this.flow.opacityTiming,composite:\"accumulate\"});if(val)this.flow.removeEventListener(\"animationsfinish\",this._remove);else this.flow.addEventListener(\"animationsfinish\",this._remove,{once:true});}constructor(flow,el,{onRemove,animateIn=false}={}){_define_property(this,\"flow\",void 0);_define_property(this,\"el\",void 0);_define_property(this,\"_present\",void 0);_define_property(this,\"_onRemove\",void 0);_define_property(this,\"_remove\",void 0);this.flow=flow;this.el=el;this._present=true;this._remove=()=>{var _this__onRemove,_this;this.el.remove();(_this__onRemove=(_this=this)._onRemove)===null||_this__onRemove===void 0?void 0:_this__onRemove.call(_this);};this.el.classList.add(\"animate-presence\");// This craziness is the only way I could figure out how to get the opacity\n// accumulation to work in all browsers. Accumulating -1 onto opacity directly\n// failed in both FF and Safari, and setting a delta to -1 still failed in FF\nif(this.flow.computedAnimated&&animateIn){this.el.animate({[opacityDeltaVar]:[-.9999,0]},{...this.flow.opacityTiming,composite:\"accumulate\"});}this._onRemove=onRemove;}}class Char extends AnimatePresence{constructor(section,value,el,props){super(section.flow,el,props);_define_property(this,\"section\",void 0);_define_property(this,\"value\",void 0);_define_property(this,\"el\",void 0);this.section=section;this.value=value;this.el=el;}}class Digit extends Char{willUpdate(parentRect){const rect=this.el.getBoundingClientRect();this._prevValue=this.value;const prevOffset=rect[this.section.justify]-parentRect[this.section.justify];const halfWidth=rect.width/2;this._prevCenter=this.section.justify===\"left\"?prevOffset+halfWidth:prevOffset-halfWidth;}update(value){var _this__numbers_this_value,_this__numbers_value;(_this__numbers_this_value=this._numbers[this.value])===null||_this__numbers_this_value===void 0?void 0:_this__numbers_this_value.classList.remove(\"is-current\");this.el.style.setProperty(\"--current\",String(value));(_this__numbers_value=this._numbers[value])===null||_this__numbers_value===void 0?void 0:_this__numbers_value.classList.add(\"is-current\");this.value=value;}didUpdate(parentRect){const rect=this.el.getBoundingClientRect();const offset=rect[this.section.justify]-parentRect[this.section.justify];const halfWidth=rect.width/2;const center=this.section.justify===\"left\"?offset+halfWidth:offset-halfWidth;const dx=this._prevCenter-center;if(dx)this.el.animate({transform:[`translateX(${dx}px)`,\"none\"]},{...this.flow.transformTiming,composite:\"accumulate\"});const diff=this.diff;if(!diff)return;this.el.classList.add(\"is-spinning\");var _this_flow_spinTiming;this.el.animate({[deltaVar]:[-diff,0]},{...(_this_flow_spinTiming=this.flow.spinTiming)!==null&&_this_flow_spinTiming!==void 0?_this_flow_spinTiming:this.flow.transformTiming,composite:\"accumulate\"});// Hoisting the callback out prevents duplicates:\nthis.flow.addEventListener(\"animationsfinish\",this._onAnimationsFinish,{once:true});}get diff(){let trend=this.flow.computedTrend;const diff=this.value-this._prevValue;// Loop once if it's continuous:\nif(!diff&&this.flow.startingPos!=null&&this.flow.startingPos>=this.pos){return this._length*trend// trend must exist if there's a startingPos\n;}// Make it per-digit if no root trend:\ntrend||(trend=Math.sign(diff));// Loop around if need be:\nif(trend<0&&this.value>this._prevValue)return this.value-this._length-this._prevValue;else if(trend>0&&this.value<this._prevValue)return this._length-this._prevValue+this.value;return diff;}constructor(section,type,value,pos,props){var _section_flow_digits_pos,_section_flow_digits;var _section_flow_digits_pos_max;const length=((_section_flow_digits_pos_max=(_section_flow_digits=section.flow.digits)===null||_section_flow_digits===void 0?void 0:(_section_flow_digits_pos=_section_flow_digits[pos])===null||_section_flow_digits_pos===void 0?void 0:_section_flow_digits_pos.max)!==null&&_section_flow_digits_pos_max!==void 0?_section_flow_digits_pos_max:9)+1;const numbers=Array.from({length}).map((_,i)=>{const num=createElement(\"span\",{className:`digit__num${i===value?\" is-current\":\"\"}`},[document.createTextNode(String(i))]);num.style.setProperty(\"--n\",String(i));return num;});const el=createElement(\"span\",{part:`digit ${type}-digit`,className:`digit`},numbers);el.style.setProperty(\"--current\",String(value));el.style.setProperty(\"--length\",String(length));super(section,value,el,props);_define_property(this,\"pos\",void 0);_define_property(this,\"_numbers\",void 0);_define_property(this,\"_length\",void 0);_define_property(this,\"_prevValue\",void 0);// Relative to parent:\n_define_property(this,\"_prevCenter\",void 0);_define_property(this,\"_onAnimationsFinish\",void 0);this.pos=pos;this._onAnimationsFinish=()=>{this.el.classList.remove(\"is-spinning\");};this._numbers=numbers;this._length=length;}}class Sym extends Char{willUpdate(parentRect){if(this.type===\"decimal\")return;// decimal never needs animation b/c it's the first in a left aligned section and never moves\nconst rect=this.el.getBoundingClientRect();this._prevOffset=rect[this.section.justify]-parentRect[this.section.justify];}update(value){if(this.value!==value){// Pop the current value:\nconst current=this._children.get(this.value);current.present=false;current.el.classList.add(\"symbol__exiting\");// If we already have the new value and it hasn't finished removing, reclaim it:\nif(this._children.has(value)){const prev=this._children.get(value);prev.present=true;prev.el.classList.remove(\"symbol__exiting\");}else{// Otherwise, create a new one:\nconst newVal=createElement(\"span\",{className:\"symbol__value\",textContent:value});this.el.appendChild(newVal);this._children.set(value,new AnimatePresence(this.flow,newVal,{animateIn:true,onRemove:this._onChildRemove(value)}));}}this.value=value;}didUpdate(parentRect){if(this.type===\"decimal\")return;const rect=this.el.getBoundingClientRect();const offset=rect[this.section.justify]-parentRect[this.section.justify];const dx=this._prevOffset-offset;if(dx)this.el.animate({transform:[`translateX(${dx}px)`,\"none\"]},{...this.flow.transformTiming,composite:\"accumulate\"});}constructor(section,type,value,props){const val=createElement(\"span\",{className:\"symbol__value\",textContent:value});super(section,value,createElement(\"span\",{part:`symbol ${type}`,className:`symbol`},[val]),props);_define_property(this,\"type\",void 0);_define_property(this,\"_children\",void 0);_define_property(this,\"_prevOffset\",void 0);_define_property(this,\"_onChildRemove\",void 0);this.type=type;this._children=new Map;this._onChildRemove=key=>()=>{this._children.delete(key);};this._children.set(value,new AnimatePresence(this.flow,val,{onRemove:this._onChildRemove(value)}));}}\nexport const __FramerMetadata__ = {\"exports\":{\"Trend\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"prefersReducedMotion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NumberFlowLite\":{\"type\":\"class\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"BROWSER\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"define\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Digits\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DigitOptions\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"renderInnerHTML\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"canAnimate\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}var _React_version_match;import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{renderInnerHTML,formatToData,NumberFlowLite,prefersReducedMotion as _prefersReducedMotion,canAnimate as _canAnimate,define,BROWSER}from\"https://framerusercontent.com/modules/AG73ox21oKVyje0VXkyK/HNU4IYD8anfZXhjtw7bP/index.js\";const REACT_MAJOR=parseInt((_React_version_match=React.version.match(/^(\\d+)\\./))===null||_React_version_match===void 0?void 0:_React_version_match[1]);const isReact19=REACT_MAJOR>=19;// Can't wait to not have to do this in React 19:\nconst OBSERVED_ATTRIBUTES=[\"data\",\"digits\"];export class NumberFlowElement extends NumberFlowLite{attributeChangedCallback(attr,_oldValue,newValue){this[attr]=JSON.parse(newValue);}}_define_property(NumberFlowElement,\"observedAttributes\",isReact19?[]:OBSERVED_ATTRIBUTES);define(\"number-flow-react\",NumberFlowElement);// You're supposed to cache these between uses:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString\n// Serialize to strings b/c React:\nconst formatters={};// Tiny workaround to support React 19 until it's released:\nconst serialize=isReact19?p=>p:JSON.stringify;function splitProps(props){const{transformTiming,spinTiming,opacityTiming,animated,respectMotionPreference,trend,continuous,...rest}=props;return[{transformTiming,spinTiming,opacityTiming,animated,respectMotionPreference,trend,continuous},rest];}// We need a class component to use getSnapshotBeforeUpdate:\nclass NumberFlowImpl extends React.Component{// Update the non-`data` props to avoid JSON serialization\n// Data needs to be set in render still:\nupdateProperties(prevProps){if(!this.el)return;this.el.manual=!this.props.isolate;const[nonData]=splitProps(this.props);Object.entries(nonData).forEach(([k,v])=>{// @ts-ignore\nthis.el[k]=v!==null&&v!==void 0?v:NumberFlowElement.defaultProps[k];});if(prevProps===null||prevProps===void 0?void 0:prevProps.onAnimationsStart)this.el.removeEventListener(\"animationsstart\",prevProps.onAnimationsStart);if(this.props.onAnimationsStart)this.el.addEventListener(\"animationsstart\",this.props.onAnimationsStart);if(prevProps===null||prevProps===void 0?void 0:prevProps.onAnimationsFinish)this.el.removeEventListener(\"animationsfinish\",prevProps.onAnimationsFinish);if(this.props.onAnimationsFinish)this.el.addEventListener(\"animationsfinish\",this.props.onAnimationsFinish);}componentDidMount(){this.updateProperties();if(isReact19&&this.el){// React 19 needs this because the attributeChangedCallback isn't called:\nthis.el.digits=this.props.digits;this.el.data=this.props.data;}}getSnapshotBeforeUpdate(prevProps){this.updateProperties(prevProps);if(prevProps.data!==this.props.data){if(this.props.group){this.props.group.willUpdate();return()=>{var _this_props_group;return(_this_props_group=this.props.group)===null||_this_props_group===void 0?void 0:_this_props_group.didUpdate();};}if(!this.props.isolate){var _this_el_willUpdate,_this_el;(_this_el=this.el)===null||_this_el===void 0?void 0:(_this_el_willUpdate=_this_el.willUpdate)===null||_this_el_willUpdate===void 0?void 0:_this_el_willUpdate.call(_this_el);return()=>{var _this_el;return(_this_el=this.el)===null||_this_el===void 0?void 0:_this_el.didUpdate();};}}return null;}componentDidUpdate(_,__,didUpdate){didUpdate===null||didUpdate===void 0?void 0:didUpdate();}handleRef(el){if(this.props.innerRef)this.props.innerRef.current=el;this.el=el;}render(){const[_,{innerRef,className,data,willChange,isolate,group,digits,onAnimationsStart,onAnimationsFinish,...rest}]=splitProps(this.props);return(// @ts-expect-error missing types\n/*#__PURE__*/_jsx(\"number-flow-react\",{ref:this.handleRef,\"data-will-change\":willChange?\"\":undefined,// Have to rename this:\nclass:className,\"aria-label\":data.valueAsString,...rest,role:\"img\",dangerouslySetInnerHTML:{__html:BROWSER?\"\":renderInnerHTML(data)},suppressHydrationWarning:true,digits:serialize(digits),// Make sure data is set last, everything else is updated:\ndata:serialize(data)}));}constructor(props){super(props);_define_property(this,\"el\",void 0);this.handleRef=this.handleRef.bind(this);}}const NumberFlow=/*#__PURE__*/React.forwardRef(function NumberFlow({value,locales,format,prefix,suffix,...props},_ref){React.useImperativeHandle(_ref,()=>ref.current,[]);const ref=React.useRef();const group=React.useContext(NumberFlowGroupContext);group===null||group===void 0?void 0:group.useRegister(ref);const localesString=React.useMemo(()=>locales?JSON.stringify(locales):\"\",[locales]);const formatString=React.useMemo(()=>format?JSON.stringify(format):\"\",[format]);const data=React.useMemo(()=>{var _formatters,_ref;var _;const formatter=(_=(_formatters=formatters)[_ref=`${localesString}:${formatString}`])!==null&&_!==void 0?_:_formatters[_ref]=new Intl.NumberFormat(locales,format);return formatToData(value,formatter,prefix,suffix);},[value,localesString,formatString,prefix,suffix]);return /*#__PURE__*/_jsx(NumberFlowImpl,{...props,group:group,data:data,innerRef:ref});});export default NumberFlow;const NumberFlowGroupContext=/*#__PURE__*/React.createContext(undefined);export function NumberFlowGroup({children}){const flows=React.useRef(new Set);const updating=React.useRef(false);const pending=React.useRef(new WeakMap);const value=React.useMemo(()=>({useRegister(ref){React.useEffect(()=>{flows.current.add(ref);return()=>{flows.current.delete(ref);};},[]);},willUpdate(){if(updating.current)return;updating.current=true;flows.current.forEach(ref=>{const f=ref.current;if(!f||!f.created)return;f.willUpdate();pending.current.set(f,true);});},didUpdate(){flows.current.forEach(ref=>{const f=ref.current;if(!f||!pending.current.get(f))return;f.didUpdate();pending.current.delete(f);});updating.current=false;}}),[]);return /*#__PURE__*/_jsx(NumberFlowGroupContext.Provider,{value:value,children:children});}export const useIsSupported=()=>React.useSyncExternalStore(()=>()=>{},()=>_canAnimate,()=>false);export const usePrefersReducedMotion=()=>React.useSyncExternalStore(cb=>{_prefersReducedMotion===null||_prefersReducedMotion===void 0?void 0:_prefersReducedMotion.addEventListener(\"change\",cb);return()=>_prefersReducedMotion===null||_prefersReducedMotion===void 0?void 0:_prefersReducedMotion.removeEventListener(\"change\",cb);},()=>_prefersReducedMotion.matches,()=>false);export function useCanAnimate({respectMotionPreference=true}={}){const isSupported=useIsSupported();const reducedMotion=usePrefersReducedMotion();return isSupported&&(!respectMotionPreference||!reducedMotion);}\nexport const __FramerMetadata__ = {\"exports\":{\"Trend\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useCanAnimate\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NumberFlowElement\":{\"type\":\"class\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NumberFlowProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NumberPartType\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NumberFlowGroup\":{\"type\":\"reactComponent\",\"name\":\"NumberFlowGroup\",\"slots\":[\"children\"],\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePrefersReducedMotion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsSupported\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Format\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Value\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","/*\n * NumberFlowReact\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/4so9SG3ShMPwWmf9tj3x/HiwMktBrKVUSZLDVBeYE/NumberFlowReact.js\"\nexport { default } from \"https://framerusercontent.com/modules/4so9SG3ShMPwWmf9tj3x/HiwMktBrKVUSZLDVBeYE/NumberFlowReact.js\"\n","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useId}from\"react\";import NumberFlow from\"https://framer.com/m/NumberFlowReact-yGat.js\";const TREND_VALUES={nearest:(oldValue,value)=>Math.sign(value-oldValue),individual:0,up:1,down:-1};const EASING_VALUES={smooth:`linear(0,.005,.019,.039,.066,.096,.129,.165,.202,.24,.278,.316,.354,.39,.426,.461,.494,.526,.557,.586,.614,.64,.665,.689,.711,.731,.751,.769,.786,.802,.817,.831,.844,.856,.867,.877,.887,.896,.904,.912,.919,.925,.931,.937,.942,.947,.951,.955,.959,.962,.965,.968,.971,.973,.976,.978,.98,.981,.983,.984,.986,.987,.988,.989,.99,.991,.992,.992,.993,.994,.994,.995,.995,.996,.996,.9963,.9967,.9969,.9972,.9975,.9977,.9979,.9981,.9982,.9984,.9985,.9987,.9988,.9989,1)`,linear:\"linear\",ease:\"ease\",easeIn:\"ease-in\",easeOut:\"ease-out\",easeInOut:\"ease-in-out\"};/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n *\n * @framerDisableUnlink\n */export default function NumberFlowComponent(props){const{value,format,gradientHeight}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const id=useInstanceId();const style={userSelect:props.userSelect?\"auto\":\"none\",fontVariantNumeric:props.monospace?\"tabular-nums\":undefined,margin:0,color:props.color,...props.font,...props.style};const numberFormat={notation:format.style===\"compact\"?\"compact\":\"standard\",signDisplay:format.plusSign?\"exceptZero\":\"auto\",useGrouping:format.separators};return isCanvas?/*#__PURE__*/_jsxs(\"div\",{style:{...props.style,...style,whiteSpace:\"pre\"},children:[props.prefix,Intl.NumberFormat(format.locale||undefined,numberFormat).format(value),props.suffix]}):/*#__PURE__*/_jsxs(\"div\",{id:id,style:{...props.style,whiteSpace:\"pre\",marginTop:-gradientHeight,marginBottom:-gradientHeight},children:[/*#__PURE__*/_jsx(NumberFlow,{value:value,trend:TREND_VALUES[props.direction],continuous:props.continuous,format:numberFormat,locales:format.locale||undefined,prefix:props.prefix,suffix:props.suffix,transformTiming:{easing:EASING_VALUES[props.transition.easing],duration:props.transition.duration*1e3},opacityTiming:{easing:\"ease-out\",duration:props.transition.duration*1e3/2},isolate:true,willChange:true,style:style}),/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:`#${id} { --number-flow-mask-height: ${gradientHeight}px }`}})]});}NumberFlowComponent.displayName=\"NumberFlow\";addPropertyControls(NumberFlowComponent,{value:{type:ControlType.Number,defaultValue:0},format:{type:ControlType.Object,controls:{style:{type:ControlType.Enum,defaultValue:\"default\",options:[\"default\",\"compact\"],optionTitles:[\"Default (1,000)\",\"Compact (1K)\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},separators:{type:ControlType.Boolean,defaultValue:true},plusSign:{type:ControlType.Boolean,defaultValue:false},locale:{type:ControlType.String,placeholder:`Auto${typeof navigator!==\"undefined\"?` (${navigator.language})`:\"\"}`}}},direction:{type:ControlType.Enum,defaultValue:\"nearest\",options:[\"nearest\",\"individual\",\"up\",\"down\"],optionTitles:[\"Nearest (All)\",\"Nearest (Per-Character)\",\"Up ↑\",\"Down ↓\"]},continuous:{type:ControlType.Boolean,defaultValue:true,hidden:props=>props.direction===\"individual\"},gradientHeight:{type:ControlType.Number,defaultValue:10,min:0,step:1,title:\"Gradient\"},font:{type:\"font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:16,lineHeight:1}},color:{type:ControlType.Color,defaultValue:\"#000\"},prefix:{type:ControlType.String,placeholder:\"Prefix\"},suffix:{type:ControlType.String,placeholder:\"Suffix\"},userSelect:{type:ControlType.Boolean,defaultValue:false},transition:{type:ControlType.Object,controls:{easing:{type:ControlType.Enum,defaultValue:\"smooth\",options:[\"smooth\",\"linear\",\"ease\",\"easeIn\",\"easeOut\",\"easeInOut\"],optionTitles:[\"Smooth\",\"Linear\",\"Ease\",\"Ease In\",\"Ease Out\",\"Ease In Out\"]},duration:{type:ControlType.Number,defaultValue:.75,min:0,step:.01}},description:\"More components at [Framer University](https://frameruni.link/cc).\"}});const useInstanceId=()=>{const id=useId();const cleanId=id.replace(/:/g,\"\");const instanceId=`frameruni-${cleanId}`;return instanceId;};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NumberFlowComponent\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NumberFlow_Prod.map"],"mappings":"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"}