{"version":3,"file":"index.cjs","sources":["../../../../../../../../.yarn/berry/cache/react-base16-styling-npm-0.10.0-d76072ecbc-10c0.zip/node_modules/react-base16-styling/lib/index.js"],"sourcesContent":["import Color from 'color';\nimport { curry } from 'lodash-es';\nimport { yuv2rgb, rgb2yuv } from './colorConverters.js';\nimport { base16Themes as base16 } from './themes/index.js';\nconst DEFAULT_BASE16 = base16.default;\nconst BASE16_KEYS = Object.keys(DEFAULT_BASE16);\n// we need a correcting factor, so that a dark, but not black background color\n// converts to bright enough inversed color\nconst flip = (x) => (x < 0.25 ? 1 : x < 0.5 ? 0.9 - x : 1.1 - x);\nconst invertColor = (hexString) => {\n    const color = Color(hexString);\n    const [y, u, v] = rgb2yuv(color.array());\n    const flippedYuv = [flip(y), u, v];\n    const rgb = yuv2rgb(flippedYuv);\n    return Color.rgb(rgb).hex();\n};\nconst merger = (styling) => {\n    return (prevStyling) => ({\n        className: [prevStyling.className, styling.className]\n            .filter(Boolean)\n            .join(' '),\n        style: { ...(prevStyling.style || {}), ...(styling.style || {}) },\n    });\n};\nconst mergeStyling = (customStyling, defaultStyling) => {\n    if (customStyling === undefined) {\n        return defaultStyling;\n    }\n    if (defaultStyling === undefined) {\n        return customStyling;\n    }\n    const customType = typeof customStyling;\n    const defaultType = typeof defaultStyling;\n    switch (customType) {\n        case 'string':\n            switch (defaultType) {\n                case 'string':\n                    return [defaultStyling, customStyling].filter(Boolean).join(' ');\n                case 'object':\n                    return merger({\n                        className: customStyling,\n                        style: defaultStyling,\n                    });\n                case 'function':\n                    return (styling, ...args) => merger({\n                        className: customStyling,\n                    })(defaultStyling(styling, ...args));\n            }\n            break;\n        case 'object':\n            switch (defaultType) {\n                case 'string':\n                    return merger({\n                        className: defaultStyling,\n                        style: customStyling,\n                    });\n                case 'object':\n                    return {\n                        ...defaultStyling,\n                        ...customStyling,\n                    };\n                case 'function':\n                    return (styling, ...args) => merger({\n                        style: customStyling,\n                    })(defaultStyling(styling, ...args));\n            }\n            break;\n        case 'function':\n            switch (defaultType) {\n                case 'string':\n                    return (styling, ...args) => customStyling(merger(styling)({\n                        className: defaultStyling,\n                    }), ...args);\n                case 'object':\n                    return (styling, ...args) => customStyling(merger(styling)({\n                        style: defaultStyling,\n                    }), ...args);\n                case 'function':\n                    return (styling, ...args) => customStyling(defaultStyling(styling, ...args), ...args);\n            }\n    }\n};\nconst mergeStylings = (customStylings, defaultStylings) => {\n    const keys = Object.keys(defaultStylings);\n    for (const key in customStylings) {\n        if (keys.indexOf(key) === -1)\n            keys.push(key);\n    }\n    return keys.reduce((mergedStyling, key) => ((mergedStyling[key] = mergeStyling(customStylings[key], defaultStylings[key])),\n        mergedStyling), {});\n};\nconst getStylingByKeys = (mergedStyling, keys, ...args) => {\n    if (keys === null) {\n        return mergedStyling;\n    }\n    if (!Array.isArray(keys)) {\n        keys = [keys];\n    }\n    const styles = keys\n        .map((key) => mergedStyling[key])\n        .filter(Boolean);\n    const props = styles.reduce((obj, s) => {\n        if (typeof s === 'string') {\n            obj.className = [obj.className, s].filter(Boolean).join(' ');\n        }\n        else if (typeof s === 'object') {\n            obj.style = { ...obj.style, ...s };\n        }\n        else if (typeof s === 'function') {\n            obj = { ...obj, ...s(obj, ...args) };\n        }\n        return obj;\n    }, { className: '', style: {} });\n    if (!props.className) {\n        delete props.className;\n    }\n    if (Object.keys(props.style).length === 0) {\n        delete props.style;\n    }\n    return props;\n};\nexport const invertBase16Theme = (base16Theme) => Object.keys(base16Theme).reduce((t, key) => ((t[key] = /^base/.test(key)\n    ? invertColor(base16Theme[key])\n    : key === 'scheme'\n        ? base16Theme[key] + ':inverted'\n        : base16Theme[key]),\n    t), {});\nexport const createStyling = curry((getStylingFromBase16, options = {}, themeOrStyling = {}, ...args) => {\n    const { defaultBase16 = DEFAULT_BASE16, base16Themes = null } = options;\n    const base16Theme = getBase16Theme(themeOrStyling, base16Themes);\n    if (base16Theme) {\n        themeOrStyling = {\n            ...base16Theme,\n            ...themeOrStyling,\n        };\n    }\n    const theme = BASE16_KEYS.reduce((t, key) => ((t[key] =\n        themeOrStyling[key] ||\n            defaultBase16[key]),\n        t), {});\n    const customStyling = Object.keys(themeOrStyling).reduce((s, key) => BASE16_KEYS.indexOf(key) === -1\n        ? ((s[key] = themeOrStyling[key]), s)\n        : s, {});\n    const defaultStyling = getStylingFromBase16(theme);\n    const mergedStyling = mergeStylings(customStyling, defaultStyling);\n    return curry(getStylingByKeys, 2)(mergedStyling, ...args);\n}, 3);\nconst isStylingConfig = (theme) => !!theme.extend;\nexport const getBase16Theme = (theme, base16Themes) => {\n    if (theme && isStylingConfig(theme) && theme.extend) {\n        theme = theme.extend;\n    }\n    if (typeof theme === 'string') {\n        const [themeName, modifier] = theme.split(':');\n        if (base16Themes) {\n            theme = base16Themes[themeName];\n        }\n        else {\n            theme = base16[themeName];\n        }\n        if (modifier === 'inverted') {\n            theme = invertBase16Theme(theme);\n        }\n    }\n    return theme && Object.prototype.hasOwnProperty.call(theme, 'base00')\n        ? theme\n        : undefined;\n};\nexport const invertTheme = (theme) => {\n    if (typeof theme === 'string') {\n        return `${theme}:inverted`;\n    }\n    if (theme && isStylingConfig(theme) && theme.extend) {\n        if (typeof theme.extend === 'string') {\n            return { ...theme, extend: `${theme.extend}:inverted` };\n        }\n        return {\n            ...theme,\n            extend: invertBase16Theme(theme.extend),\n        };\n    }\n    if (theme) {\n        return invertBase16Theme(theme);\n    }\n    return theme;\n};\nexport { base16 as base16Themes };\nexport * from './types.js';\n"],"names":["base16","Color","rgb2yuv","yuv2rgb"],"mappings":"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","x_google_ignoreList":[0]}