{"version":3,"file":"index.modern.mjs","sources":["../src/index.jsx"],"sourcesContent":["import React, {useEffect} from \"react\";\r\n\r\nconst fontUrl = \"https://country-flag.proca.app/font/TwemojiCountryFlags.woff2\";\r\nconst fontName = \"countryFlags\";\r\nconst className = \"country-flag\";\r\n\r\nconst nativeFlag = () => {\r\n    const userAgent = window.navigator.userAgent;\r\n    return userAgent.indexOf(\"Win\") === -1;\r\n};\r\n\r\nexport function useCountryFlag(options) {\r\n    const cn = options?.className || className;\r\n    const forceLoad = options?.forceLoadFont || false;\r\n\r\n    useEffect(() => {\r\n        const styleId = \"react-emoji-flag-style\";\r\n        if (document.getElementById(styleId)) {\r\n            return;\r\n        }\r\n        const css = `.${cn} {font-family: \"${fontName}\", system-emoji, sans-serif}`;\r\n\r\n\r\n        const loadFont = async () => {\r\n            console.log(\"Loading country flag font...\");\r\n            const customFont = new FontFace(fontName, \"url(\" + fontUrl + \")\", {\r\n                unicodeRange:\r\n                    \"U+1F1E6-1F1FF, U+1F3F4, U+E0062-E0063, U+E0065, U+E0067, U+E006C, U+E006E, U+E0073-E0074, U+E0077, U+E007F\",\r\n            });\r\n\r\n            try {\r\n                await customFont.load();\r\n                document.fonts.add(customFont);\r\n                console.log(\"Country flag font loaded successfully\");\r\n            } catch (error) {\r\n                console.error(\"Failed to load country flag font:\", error);\r\n            }\r\n        };\r\n\r\n        // Load font if we're on Windows or if forceLoad is enabled\r\n        if (nativeFlag() && !forceLoad) {\r\n            console.log(\"Using native emoji flags\");\r\n        } else {\r\n            loadFont();\r\n        }\r\n\r\n        const style = document.createElement(\"style\");\r\n        style.textContent = css;\r\n        style.id = styleId;\r\n        document.head.appendChild(style);\r\n    }, [cn, forceLoad]);\r\n}\r\n\r\nexport const flag = (isoCode) => {\r\n    if (!isoCode) return <span className={className}></span>;\r\n    const code = isoCode.toUpperCase();\r\n    if (code === \"ZZ\") return <span className={className}></span>;\r\n\r\n    if (!/^[A-Z]{2}$/.test(code)) {\r\n        console.warn(`Invalid country code: ${code}`);\r\n        return <span className={className}></span>;\r\n    }\r\n\r\n    const offset = 127397;\r\n    const flagEmoji = code.replace(/./g, (char) =>\r\n        String.fromCodePoint(char.charCodeAt(0) + offset)\r\n    );\r\n\r\n    return <span className={className}>{flagEmoji}</span>;\r\n};\r\n\r\nexport const CountryFlag = (props) => {\r\n    const cn = !props.className ? className : `${props.className} ${className}`;\r\n    useCountryFlag({\r\n        className: cn,\r\n        forceLoadFont: props.forceLoadFont\r\n    });\r\n\r\n    return (\r\n        <span className={cn} title={props.title || props.countryCode}>\r\n      {flag(props.countryCode)}\r\n    </span>\r\n    );\r\n};\r\n\r\nexport default CountryFlag;"],"names":["fontUrl","fontName","className","nativeFlag","userAgent","window","navigator","indexOf","useCountryFlag","options","cn","forceLoad","forceLoadFont","useEffect","styleId","document","getElementById","css","loadFont","console","log","customFont","FontFace","unicodeRange","load","fonts","add","error","style","createElement","textContent","id","head","appendChild","flag","isoCode","React","code","toUpperCase","test","warn","offset","flagEmoji","replace","char","String","fromCodePoint","charCodeAt","CountryFlag","props","title","countryCode"],"mappings":"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"}