astro-ghostcms/.pnpm-store/v3/files/f6/683199863b2367268b63a60be36...

1 line
784 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["../src/yoga/yoga-prebuilt.ts","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/negateValue.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/corePluginList.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/configurePlugins.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/stubs/defaultConfig.stub.js","../src/vendor/twrnc/log.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/public/colors.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/defaults.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/toPath.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/normalizeConfig.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/isPlainObject.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/cloneDeep.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/unesc.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/getProp.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/ensureObject.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/stripComments.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/index.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/node.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/types.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/container.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/root.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/selector.js","../node_modules/.pnpm/cssesc@3.0.0/node_modules/cssesc/cssesc.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/className.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/comment.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/id.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/namespace.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/tag.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/string.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/pseudo.js","../src/vendor/twrnc/deprecate.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/attribute.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/universal.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/combinator.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/nesting.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/sortAscending.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/tokenTypes.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/tokenize.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/parser.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/processor.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/constructors.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/guards.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/index.js","../node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/index.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/escapeCommas.js","../node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/color.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/withAlphaVariable.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/lib/regex.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/splitAtTopLevelOnly.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/parseBoxShadowValue.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/dataTypes.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/pluginUtils.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/toColorValue.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/resolveConfig.js","../src/vendor/twrnc/picocolors.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/featureFlags.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/getAllConfigs.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/public/resolve-config.js","../node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/resolveConfig.js","../src/index.ts","../src/yoga/index.ts","../src/vendor/parse-css-dimension/index.js","../src/utils.ts","../src/handler/image.ts","../src/handler/preprocess.ts","../src/handler/presets.ts","../src/handler/inheritable.ts","../src/handler/expand.ts","../src/transform-origin.ts","../src/parser/mask.ts","../src/handler/compute.ts","../src/builder/text.ts","../src/builder/transform.ts","../src/builder/shadow.ts","../src/builder/text-decoration.ts","../src/text/characters.ts","../src/text/measurer.ts","../src/text/processor.ts","../src/text/index.ts","../src/builder/background-image.ts","../src/vendor/gradient-parser/index.js","../src/builder/border-radius.ts","../src/builder/border.ts","../src/builder/content-mask.ts","../src/parser/shape.ts","../src/builder/clip-path.ts","../src/builder/overflow.ts","../src/builder/mask-image.ts","../src/builder/rect.ts","../node_modules/.pnpm/emoji-regex@10.2.1/node_modules/emoji-regex/index.mjs","../src/language.ts","../src/layout.ts","../src/font.ts","../src/builder/svg.ts","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/create.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/types.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/helpers.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/styles.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/cache.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/font-size.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/line-height.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/spacing.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/screens.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/font-family.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/color.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/borders.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/inset.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/flex.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/width-height.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/letter-spacing.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/opacity.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/shadow.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/ClassParser.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/parse-inputs.js","../node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/plugin.js","../src/handler/tailwind.ts","../src/satori.ts"],"sourcesContent":["export async function getYogaModule() {\n const { default: initYoga } = await import('yoga-wasm-web/asm')\n return initYoga()\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>_default\n});\nfunction _default(value) {\n value = `${value}`;\n if (value === \"0\") {\n return \"0\";\n }\n // Flip sign of numbers\n if (/^[+-]?(\\d+|\\d*\\.\\d+)(e[+-]?\\d+)?(%|\\w+)?$/.test(value)) {\n return value.replace(/^[+-]?/, (sign)=>sign === \"-\" ? \"\" : \"-\");\n }\n if (value.includes(\"var(\") || value.includes(\"calc(\")) {\n return `calc(${value} * -1)`;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>_default\n});\nconst _default = [\n \"preflight\",\n \"container\",\n \"accessibility\",\n \"pointerEvents\",\n \"visibility\",\n \"position\",\n \"inset\",\n \"isolation\",\n \"zIndex\",\n \"order\",\n \"gridColumn\",\n \"gridColumnStart\",\n \"gridColumnEnd\",\n \"gridRow\",\n \"gridRowStart\",\n \"gridRowEnd\",\n \"float\",\n \"clear\",\n \"margin\",\n \"boxSizing\",\n \"display\",\n \"aspectRatio\",\n \"height\",\n \"maxHeight\",\n \"minHeight\",\n \"width\",\n \"minWidth\",\n \"maxWidth\",\n \"flex\",\n \"flexShrink\",\n \"flexGrow\",\n \"flexBasis\",\n \"tableLayout\",\n \"borderCollapse\",\n \"borderSpacing\",\n \"transformOrigin\",\n \"translate\",\n \"rotate\",\n \"skew\",\n \"scale\",\n \"transform\",\n \"animation\",\n \"cursor\",\n \"touchAction\",\n \"userSelect\",\n \"resize\",\n \"scrollSnapType\",\n \"scrollSnapAlign\",\n \"scrollSnapStop\",\n \"scrollMargin\",\n \"scrollPadding\",\n \"listStylePosition\",\n \"listStyleType\",\n \"appearance\",\n \"columns\",\n \"breakBefore\",\n \"breakInside\",\n \"breakAfter\",\n \"gridAutoColumns\",\n \"gridAutoFlow\",\n \"gridAutoRows\",\n \"gridTemplateColumns\",\n \"gridTemplateRows\",\n \"flexDirection\",\n \"flexWrap\",\n \"placeContent\",\n \"placeItems\",\n \"alignContent\",\n \"alignItems\",\n \"justifyContent\",\n \"justifyItems\",\n \"gap\",\n \"space\",\n \"divideWidth\",\n \"divideStyle\",\n \"divideColor\",\n \"divideOpacity\",\n \"placeSelf\",\n \"alignSelf\",\n \"justifySelf\",\n \"overflow\",\n \"overscrollBehavior\",\n \"scrollBehavior\",\n \"textOverflow\",\n \"whitespace\",\n \"wordBreak\",\n \"borderRadius\",\n \"borderWidth\",\n \"borderStyle\",\n \"borderColor\",\n \"borderOpacity\",\n \"backgroundColor\",\n \"backgroundOpacity\",\n \"backgroundImage\",\n \"gradientColorStops\",\n \"boxDecorationBreak\",\n \"backgroundSize\",\n \"backgroundAttachment\",\n \"backgroundClip\",\n \"backgroundPosition\",\n \"backgroundRepeat\",\n \"backgroundOrigin\",\n \"fill\",\n \"stroke\",\n \"strokeWidth\",\n \"objectFit\",\n \"objectPosition\",\n \"padding\",\n \"textAlign\",\n \"textIndent\",\n \"verticalAlign\",\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"textTransform\",\n \"fontStyle\",\n \"fontVariantNumeric\",\n \"lineHeight\",\n \"letterSpacing\",\n \"textColor\",\n \"textOpacity\",\n \"textDecoration\",\n \"textDecorationColor\",\n \"textDecorationStyle\",\n \"textDecorationThickness\",\n \"textUnderlineOffset\",\n \"fontSmoothing\",\n \"placeholderColor\",\n \"placeholderOpacity\",\n \"caretColor\",\n \"accentColor\",\n \"opacity\",\n \"backgroundBlendMode\",\n \"mixBlendMode\",\n \"boxShadow\",\n \"boxShadowColor\",\n \"outlineStyle\",\n \"outlineWidth\",\n \"outlineOffset\",\n \"outlineColor\",\n \"ringWidth\",\n \"ringColor\",\n \"ringOpacity\",\n \"ringOffsetWidth\",\n \"ringOffsetColor\",\n \"blur\",\n \"brightness\",\n \"contrast\",\n \"dropShadow\",\n \"grayscale\",\n \"hueRotate\",\n \"invert\",\n \"saturate\",\n \"sepia\",\n \"filter\",\n \"backdropBlur\",\n \"backdropBrightness\",\n \"backdropContrast\",\n \"backdropGrayscale\",\n \"backdropHueRotate\",\n \"backdropInvert\",\n \"backdropOpacity\",\n \"backdropSaturate\",\n \"backdropSepia\",\n \"backdropFilter\",\n \"transitionProperty\",\n \"transitionDelay\",\n \"transitionDuration\",\n \"transitionTimingFunction\",\n \"willChange\",\n \"content\"\n];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>_default\n});\nfunction _default(pluginConfig, plugins) {\n if (pluginConfig === undefined) {\n return plugins;\n }\n const pluginNames = Array.isArray(pluginConfig) ? pluginConfig : [\n ...new Set(plugins.filter((pluginName)=>{\n return pluginConfig !== false && pluginConfig[pluginName] !== false;\n }).concat(Object.keys(pluginConfig).filter((pluginName)=>{\n return pluginConfig[pluginName] !== false;\n }))), \n ];\n return pluginNames;\n}\n","/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n content: [],\n presets: [],\n darkMode: 'media', // or 'class'\n theme: {\n screens: {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n },\n colors: ({ colors }) => ({\n inherit: colors.inherit,\n current: colors.current,\n transparent: colors.transparent,\n black: colors.black,\n white: colors.white,\n slate: colors.slate,\n gray: colors.gray,\n zinc: colors.zinc,\n neutral: colors.neutral,\n stone: colors.stone,\n red: colors.red,\n orange: colors.orange,\n amber: colors.amber,\n yellow: colors.yellow,\n lime: colors.lime,\n green: colors.green,\n emerald: colors.emerald,\n teal: colors.teal,\n cyan: colors.cyan,\n sky: colors.sky,\n blue: colors.blue,\n indigo: colors.indigo,\n violet: colors.violet,\n purple: colors.purple,\n fuchsia: colors.fuchsia,\n pink: colors.pink,\n rose: colors.rose,\n }),\n columns: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n '3xs': '16rem',\n '2xs': '18rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n },\n spacing: {\n px: '1px',\n 0: '0px',\n 0.5: '0.125rem',\n 1: '0.25rem',\n 1.5: '0.375rem',\n 2: '0.5rem',\n 2.5: '0.625rem',\n 3: '0.75rem',\n 3.5: '0.875rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n 11: '2.75rem',\n 12: '3rem',\n 14: '3.5rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n 28: '7rem',\n 32: '8rem',\n 36: '9rem',\n 40: '10rem',\n 44: '11rem',\n 48: '12rem',\n 52: '13rem',\n 56: '14rem',\n 60: '15rem',\n 64: '16rem',\n 72: '18rem',\n 80: '20rem',\n 96: '24rem',\n },\n animation: {\n none: 'none',\n spin: 'spin 1s linear infinite',\n ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',\n pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n bounce: 'bounce 1s infinite',\n },\n aspectRatio: {\n auto: 'auto',\n square: '1 / 1',\n video: '16 / 9',\n },\n backdropBlur: ({ theme }) => theme('blur'),\n backdropBrightness: ({ theme }) => theme('brightness'),\n backdropContrast: ({ theme }) => theme('contrast'),\n backdropGrayscale: ({ theme }) => theme('grayscale'),\n backdropHueRotate: ({ theme }) => theme('hueRotate'),\n backdropInvert: ({ theme }) => theme('invert'),\n backdropOpacity: ({ theme }) => theme('opacity'),\n backdropSaturate: ({ theme }) => theme('saturate'),\n backdropSepia: ({ theme }) => theme('sepia'),\n backgroundColor: ({ theme }) => theme('colors'),\n backgroundImage: {\n none: 'none',\n 'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',\n 'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',\n 'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',\n 'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',\n 'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',\n 'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',\n 'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',\n 'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',\n },\n backgroundOpacity: ({ theme }) => theme('opacity'),\n backgroundPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n backgroundSize: {\n auto: 'auto',\n cover: 'cover',\n contain: 'contain',\n },\n blur: {\n 0: '0',\n none: '0',\n sm: '4px',\n DEFAULT: '8px',\n md: '12px',\n lg: '16px',\n xl: '24px',\n '2xl': '40px',\n '3xl': '64px',\n },\n brightness: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n borderColor: ({ theme }) => ({\n ...theme('colors'),\n DEFAULT: theme('colors.gray.200', 'currentColor'),\n }),\n borderOpacity: ({ theme }) => theme('opacity'),\n borderRadius: {\n none: '0px',\n sm: '0.125rem',\n DEFAULT: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n },\n borderSpacing: ({ theme }) => ({\n ...theme('spacing'),\n }),\n borderWidth: {\n DEFAULT: '1px',\n 0: '0px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n boxShadow: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n DEFAULT: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n none: 'none',\n },\n boxShadowColor: ({ theme }) => theme('colors'),\n caretColor: ({ theme }) => theme('colors'),\n accentColor: ({ theme }) => ({\n ...theme('colors'),\n auto: 'auto',\n }),\n contrast: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 100: '1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n container: {},\n content: {\n none: 'none',\n },\n cursor: {\n auto: 'auto',\n default: 'default',\n pointer: 'pointer',\n wait: 'wait',\n text: 'text',\n move: 'move',\n help: 'help',\n 'not-allowed': 'not-allowed',\n none: 'none',\n 'context-menu': 'context-menu',\n progress: 'progress',\n cell: 'cell',\n crosshair: 'crosshair',\n 'vertical-text': 'vertical-text',\n alias: 'alias',\n copy: 'copy',\n 'no-drop': 'no-drop',\n grab: 'grab',\n grabbing: 'grabbing',\n 'all-scroll': 'all-scroll',\n 'col-resize': 'col-resize',\n 'row-resize': 'row-resize',\n 'n-resize': 'n-resize',\n 'e-resize': 'e-resize',\n 's-resize': 's-resize',\n 'w-resize': 'w-resize',\n 'ne-resize': 'ne-resize',\n 'nw-resize': 'nw-resize',\n 'se-resize': 'se-resize',\n 'sw-resize': 'sw-resize',\n 'ew-resize': 'ew-resize',\n 'ns-resize': 'ns-resize',\n 'nesw-resize': 'nesw-resize',\n 'nwse-resize': 'nwse-resize',\n 'zoom-in': 'zoom-in',\n 'zoom-out': 'zoom-out',\n },\n divideColor: ({ theme }) => theme('borderColor'),\n divideOpacity: ({ theme }) => theme('borderOpacity'),\n divideWidth: ({ theme }) => theme('borderWidth'),\n dropShadow: {\n sm: '0 1px 1px rgb(0 0 0 / 0.05)',\n DEFAULT: ['0 1px 2px rgb(0 0 0 / 0.1)', '0 1px 1px rgb(0 0 0 / 0.06)'],\n md: ['0 4px 3px rgb(0 0 0 / 0.07)', '0 2px 2px rgb(0 0 0 / 0.06)'],\n lg: ['0 10px 8px rgb(0 0 0 / 0.04)', '0 4px 3px rgb(0 0 0 / 0.1)'],\n xl: ['0 20px 13px rgb(0 0 0 / 0.03)', '0 8px 5px rgb(0 0 0 / 0.08)'],\n '2xl': '0 25px 25px rgb(0 0 0 / 0.15)',\n none: '0 0 #0000',\n },\n fill: ({ theme }) => theme('colors'),\n grayscale: {\n 0: '0',\n DEFAULT: '100%',\n },\n hueRotate: {\n 0: '0deg',\n 15: '15deg',\n 30: '30deg',\n 60: '60deg',\n 90: '90deg',\n 180: '180deg',\n },\n invert: {\n 0: '0',\n DEFAULT: '100%',\n },\n flex: {\n 1: '1 1 0%',\n auto: '1 1 auto',\n initial: '0 1 auto',\n none: 'none',\n },\n flexBasis: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n }),\n flexGrow: {\n 0: '0',\n DEFAULT: '1',\n },\n flexShrink: {\n 0: '0',\n DEFAULT: '1',\n },\n fontFamily: {\n sans: [\n 'ui-sans-serif',\n 'system-ui',\n '-apple-system',\n 'BlinkMacSystemFont',\n '\"Segoe UI\"',\n 'Roboto',\n '\"Helvetica Neue\"',\n 'Arial',\n '\"Noto Sans\"',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n '\"Noto Color Emoji\"',\n ],\n serif: ['ui-serif', 'Georgia', 'Cambria', '\"Times New Roman\"', 'Times', 'serif'],\n mono: [\n 'ui-monospace',\n 'SFMono-Regular',\n 'Menlo',\n 'Monaco',\n 'Consolas',\n '\"Liberation Mono\"',\n '\"Courier New\"',\n 'monospace',\n ],\n },\n fontSize: {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n '2xl': ['1.5rem', { lineHeight: '2rem' }],\n '3xl': ['1.875rem', { lineHeight: '2.25rem' }],\n '4xl': ['2.25rem', { lineHeight: '2.5rem' }],\n '5xl': ['3rem', { lineHeight: '1' }],\n '6xl': ['3.75rem', { lineHeight: '1' }],\n '7xl': ['4.5rem', { lineHeight: '1' }],\n '8xl': ['6rem', { lineHeight: '1' }],\n '9xl': ['8rem', { lineHeight: '1' }],\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n },\n gap: ({ theme }) => theme('spacing'),\n gradientColorStops: ({ theme }) => theme('colors'),\n gridAutoColumns: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridAutoRows: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridColumn: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-7': 'span 7 / span 7',\n 'span-8': 'span 8 / span 8',\n 'span-9': 'span 9 / span 9',\n 'span-10': 'span 10 / span 10',\n 'span-11': 'span 11 / span 11',\n 'span-12': 'span 12 / span 12',\n 'span-full': '1 / -1',\n },\n gridColumnEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridColumnStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridRow: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-full': '1 / -1',\n },\n gridRowStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n },\n gridRowEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n },\n gridTemplateColumns: {\n none: 'none',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n 7: 'repeat(7, minmax(0, 1fr))',\n 8: 'repeat(8, minmax(0, 1fr))',\n 9: 'repeat(9, minmax(0, 1fr))',\n 10: 'repeat(10, minmax(0, 1fr))',\n 11: 'repeat(11, minmax(0, 1fr))',\n 12: 'repeat(12, minmax(0, 1fr))',\n },\n gridTemplateRows: {\n none: 'none',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n },\n height: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n inset: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n keyframes: {\n spin: {\n to: {\n transform: 'rotate(360deg)',\n },\n },\n ping: {\n '75%, 100%': {\n transform: 'scale(2)',\n opacity: '0',\n },\n },\n pulse: {\n '50%': {\n opacity: '.5',\n },\n },\n bounce: {\n '0%, 100%': {\n transform: 'translateY(-25%)',\n animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n },\n '50%': {\n transform: 'none',\n animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n },\n },\n },\n letterSpacing: {\n tighter: '-0.05em',\n tight: '-0.025em',\n normal: '0em',\n wide: '0.025em',\n wider: '0.05em',\n widest: '0.1em',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n 3: '.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n },\n listStyleType: {\n none: 'none',\n disc: 'disc',\n decimal: 'decimal',\n },\n margin: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n }),\n maxHeight: ({ theme }) => ({\n ...theme('spacing'),\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n maxWidth: ({ theme, breakpoints }) => ({\n none: 'none',\n 0: '0rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n prose: '65ch',\n ...breakpoints(theme('screens')),\n }),\n minHeight: {\n 0: '0px',\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n },\n minWidth: {\n 0: '0px',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n },\n objectPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n opacity: {\n 0: '0',\n 5: '0.05',\n 10: '0.1',\n 20: '0.2',\n 25: '0.25',\n 30: '0.3',\n 40: '0.4',\n 50: '0.5',\n 60: '0.6',\n 70: '0.7',\n 75: '0.75',\n 80: '0.8',\n 90: '0.9',\n 95: '0.95',\n 100: '1',\n },\n order: {\n first: '-9999',\n last: '9999',\n none: '0',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n padding: ({ theme }) => theme('spacing'),\n placeholderColor: ({ theme }) => theme('colors'),\n placeholderOpacity: ({ theme }) => theme('opacity'),\n outlineColor: ({ theme }) => theme('colors'),\n outlineOffset: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n outlineWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n ringColor: ({ theme }) => ({\n DEFAULT: theme(`colors.blue.500`, '#3b82f6'),\n ...theme('colors'),\n }),\n ringOffsetColor: ({ theme }) => theme('colors'),\n ringOffsetWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n ringOpacity: ({ theme }) => ({\n DEFAULT: '0.5',\n ...theme('opacity'),\n }),\n ringWidth: {\n DEFAULT: '3px',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n rotate: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n 45: '45deg',\n 90: '90deg',\n 180: '180deg',\n },\n saturate: {\n 0: '0',\n 50: '.5',\n 100: '1',\n 150: '1.5',\n 200: '2',\n },\n scale: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n },\n scrollMargin: ({ theme }) => ({\n ...theme('spacing'),\n }),\n scrollPadding: ({ theme }) => theme('spacing'),\n sepia: {\n 0: '0',\n DEFAULT: '100%',\n },\n skew: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n },\n space: ({ theme }) => ({\n ...theme('spacing'),\n }),\n stroke: ({ theme }) => theme('colors'),\n strokeWidth: {\n 0: '0',\n 1: '1',\n 2: '2',\n },\n textColor: ({ theme }) => theme('colors'),\n textDecorationColor: ({ theme }) => theme('colors'),\n textDecorationThickness: {\n auto: 'auto',\n 'from-font': 'from-font',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n textUnderlineOffset: {\n auto: 'auto',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n textIndent: ({ theme }) => ({\n ...theme('spacing'),\n }),\n textOpacity: ({ theme }) => theme('opacity'),\n transformOrigin: {\n center: 'center',\n top: 'top',\n 'top-right': 'top right',\n right: 'right',\n 'bottom-right': 'bottom right',\n bottom: 'bottom',\n 'bottom-left': 'bottom left',\n left: 'left',\n 'top-left': 'top left',\n },\n transitionDelay: {\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionDuration: {\n DEFAULT: '150ms',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionProperty: {\n none: 'none',\n all: 'all',\n DEFAULT:\n 'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter',\n colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',\n opacity: 'opacity',\n shadow: 'box-shadow',\n transform: 'transform',\n },\n transitionTimingFunction: {\n DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',\n linear: 'linear',\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n 'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n },\n translate: ({ theme }) => ({\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n width: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n screen: '100vw',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n willChange: {\n auto: 'auto',\n scroll: 'scroll-position',\n contents: 'contents',\n transform: 'transform',\n },\n zIndex: {\n auto: 'auto',\n 0: '0',\n 10: '10',\n 20: '20',\n 30: '30',\n 40: '40',\n 50: '50',\n },\n },\n variantOrder: [\n 'first',\n 'last',\n 'odd',\n 'even',\n 'visited',\n 'checked',\n 'empty',\n 'read-only',\n 'group-hover',\n 'group-focus',\n 'focus-within',\n 'hover',\n 'focus',\n 'focus-visible',\n 'active',\n 'disabled',\n ],\n plugins: [],\n}\n","export default {\n info(key, messages) {\n console.info(...(Array.isArray(key) ? [key] : [messages, key]))\n },\n warn(key, messages) {\n console.warn(...(Array.isArray(key) ? [key] : [messages, key]))\n },\n risk(key, messages) {\n console.error(...(Array.isArray(key) ? [key] : [messages, key]))\n },\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>_default\n});\nconst _log = /*#__PURE__*/ _interopRequireDefault(require(\"../util/log\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction warn({ version , from , to }) {\n _log.default.warn(`${from}-color-renamed`, [\n `As of Tailwind CSS ${version}, \\`${from}\\` has been renamed to \\`${to}\\`.`,\n \"Update your configuration file to silence this warning.\", \n ]);\n}\nconst _default = {\n inherit: \"inherit\",\n current: \"currentColor\",\n transparent: \"transparent\",\n black: \"#000\",\n white: \"#fff\",\n slate: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\"\n },\n gray: {\n 50: \"#f9fafb\",\n 100: \"#f3f4f6\",\n 200: \"#e5e7eb\",\n 300: \"#d1d5db\",\n 400: \"#9ca3af\",\n 500: \"#6b7280\",\n 600: \"#4b5563\",\n 700: \"#374151\",\n 800: \"#1f2937\",\n 900: \"#111827\"\n },\n zinc: {\n 50: \"#fafafa\",\n 100: \"#f4f4f5\",\n 200: \"#e4e4e7\",\n 300: \"#d4d4d8\",\n 400: \"#a1a1aa\",\n 500: \"#71717a\",\n 600: \"#52525b\",\n 700: \"#3f3f46\",\n 800: \"#27272a\",\n 900: \"#18181b\"\n },\n neutral: {\n 50: \"#fafafa\",\n 100: \"#f5f5f5\",\n 200: \"#e5e5e5\",\n 300: \"#d4d4d4\",\n 400: \"#a3a3a3\",\n 500: \"#737373\",\n 600: \"#525252\",\n 700: \"#404040\",\n 800: \"#262626\",\n 900: \"#171717\"\n },\n stone: {\n 50: \"#fafaf9\",\n 100: \"#f5f5f4\",\n 200: \"#e7e5e4\",\n 300: \"#d6d3d1\",\n 400: \"#a8a29e\",\n 500: \"#78716c\",\n 600: \"#57534e\",\n 700: \"#44403c\",\n 800: \"#292524\",\n 900: \"#1c1917\"\n },\n red: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\"\n },\n orange: {\n 50: \"#fff7ed\",\n 100: \"#ffedd5\",\n 200: \"#fed7aa\",\n 300: \"#fdba74\",\n 400: \"#fb923c\",\n 500: \"#f97316\",\n 600: \"#ea580c\",\n 700: \"#c2410c\",\n 800: \"#9a3412\",\n 900: \"#7c2d12\"\n },\n amber: {\n 50: \"#fffbeb\",\n 100: \"#fef3c7\",\n 200: \"#fde68a\",\n 300: \"#fcd34d\",\n 400: \"#fbbf24\",\n 500: \"#f59e0b\",\n 600: \"#d97706\",\n 700: \"#b45309\",\n 800: \"#92400e\",\n 900: \"#78350f\"\n },\n yellow: {\n 50: \"#fefce8\",\n 100: \"#fef9c3\",\n 200: \"#fef08a\",\n 300: \"#fde047\",\n 400: \"#facc15\",\n 500: \"#eab308\",\n 600: \"#ca8a04\",\n 700: \"#a16207\",\n 800: \"#854d0e\",\n 900: \"#713f12\"\n },\n lime: {\n 50: \"#f7fee7\",\n 100: \"#ecfccb\",\n 200: \"#d9f99d\",\n 300: \"#bef264\",\n 400: \"#a3e635\",\n 500: \"#84cc16\",\n 600: \"#65a30d\",\n 700: \"#4d7c0f\",\n 800: \"#3f6212\",\n 900: \"#365314\"\n },\n green: {\n 50: \"#f0fdf4\",\n 100: \"#dcfce7\",\n 200: \"#bbf7d0\",\n 300: \"#86efac\",\n 400: \"#4ade80\",\n 500: \"#22c55e\",\n 600: \"#16a34a\",\n 700: \"#15803d\",\n 800: \"#166534\",\n 900: \"#14532d\"\n },\n emerald: {\n 50: \"#ecfdf5\",\n 100: \"#d1fae5\",\n 200: \"#a7f3d0\",\n 300: \"#6ee7b7\",\n 400: \"#34d399\",\n 500: \"#10b981\",\n 600: \"#059669\",\n 700: \"#047857\",\n 800: \"#065f46\",\n 900: \"#064e3b\"\n },\n teal: {\n 50: \"#f0fdfa\",\n 100: \"#ccfbf1\",\n 200: \"#99f6e4\",\n 300: \"#5eead4\",\n 400: \"#2dd4bf\",\n 500: \"#14b8a6\",\n 600: \"#0d9488\",\n 700: \"#0f766e\",\n 800: \"#115e59\",\n 900: \"#134e4a\"\n },\n cyan: {\n 50: \"#ecfeff\",\n 100: \"#cffafe\",\n 200: \"#a5f3fc\",\n 300: \"#67e8f9\",\n 400: \"#22d3ee\",\n 500: \"#06b6d4\",\n 600: \"#0891b2\",\n 700: \"#0e7490\",\n 800: \"#155e75\",\n 900: \"#164e63\"\n },\n sky: {\n 50: \"#f0f9ff\",\n 100: \"#e0f2fe\",\n 200: \"#bae6fd\",\n 300: \"#7dd3fc\",\n 400: \"#38bdf8\",\n 500: \"#0ea5e9\",\n 600: \"#0284c7\",\n 700: \"#0369a1\",\n 800: \"#075985\",\n 900: \"#0c4a6e\"\n },\n blue: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\"\n },\n indigo: {\n 50: \"#eef2ff\",\n 100: \"#e0e7ff\",\n 200: \"#c7d2fe\",\n 300: \"#a5b4fc\",\n 400: \"#818cf8\",\n 500: \"#6366f1\",\n 600: \"#4f46e5\",\n 700: \"#4338ca\",\n 800: \"#3730a3\",\n 900: \"#312e81\"\n },\n violet: {\n 50: \"#f5f3ff\",\n 100: \"#ede9fe\",\n 200: \"#ddd6fe\",\n 300: \"#c4b5fd\",\n 400: \"#a78bfa\",\n 500: \"#8b5cf6\",\n 600: \"#7c3aed\",\n 700: \"#6d28d9\",\n 800: \"#5b21b6\",\n 900: \"#4c1d95\"\n },\n purple: {\n 50: \"#faf5ff\",\n 100: \"#f3e8ff\",\n 200: \"#e9d5ff\",\n 300: \"#d8b4fe\",\n 400: \"#c084fc\",\n 500: \"#a855f7\",\n 600: \"#9333ea\",\n 700: \"#7e22ce\",\n 800: \"#6b21a8\",\n 900: \"#581c87\"\n },\n fuchsia: {\n 50: \"#fdf4ff\",\n 100: \"#fae8ff\",\n 200: \"#f5d0fe\",\n 300: \"#f0abfc\",\n 400: \"#e879f9\",\n 500: \"#d946ef\",\n 600: \"#c026d3\",\n 700: \"#a21caf\",\n 800: \"#86198f\",\n 900: \"#701a75\"\n },\n pink: {\n 50: \"#fdf2f8\",\n 100: \"#fce7f3\",\n 200: \"#fbcfe8\",\n 300: \"#f9a8d4\",\n 400: \"#f472b6\",\n 500: \"#ec4899\",\n 600: \"#db2777\",\n 700: \"#be185d\",\n 800: \"#9d174d\",\n 900: \"#831843\"\n },\n rose: {\n 50: \"#fff1f2\",\n 100: \"#ffe4e6\",\n 200: \"#fecdd3\",\n 300: \"#fda4af\",\n 400: \"#fb7185\",\n 500: \"#f43f5e\",\n 600: \"#e11d48\",\n 700: \"#be123c\",\n 800: \"#9f1239\",\n 900: \"#881337\"\n },\n get lightBlue () {\n warn({\n version: \"v2.2\",\n from: \"lightBlue\",\n to: \"sky\"\n });\n return this.sky;\n },\n get warmGray () {\n warn({\n version: \"v3.0\",\n from: \"warmGray\",\n to: \"stone\"\n });\n return this.stone;\n },\n get trueGray () {\n warn({\n version: \"v3.0\",\n from: \"trueGray\",\n to: \"neutral\"\n });\n return this.neutral;\n },\n get coolGray () {\n warn({\n version: \"v3.0\",\n from: \"coolGray\",\n to: \"gray\"\n });\n return this.gray;\n },\n get blueGray () {\n warn({\n version: \"v3.0\",\n from: \"blueGray\",\n to: \"slate\"\n });\n return this.slate;\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"defaults\", {\n enumerable: true,\n get: ()=>defaults\n});\nfunction defaults(target, ...sources) {\n for (let source of sources){\n for(let k in source){\n var ref;\n if (!(target === null || target === void 0 ? void 0 : (ref = target.hasOwnProperty) === null || ref === void 0 ? void 0 : ref.call(target, k))) {\n target[k] = source[k];\n }\n }\n for (let k1 of Object.getOwnPropertySymbols(source)){\n var ref1;\n if (!(target === null || target === void 0 ? void 0 : (ref1 = target.hasOwnProperty) === null || ref1 === void 0 ? void 0 : ref1.call(target, k1))) {\n target[k1] = source[k1];\n }\n }\n }\n return target;\n}\n","/**\n * Parse a path string into an array of path segments.\n *\n * Square bracket notation `a[b]` may be used to \"escape\" dots that would otherwise be interpreted as path separators.\n *\n * Example:\n * a -> ['a']\n * a.b.c -> ['a', 'b', 'c']\n * a[b].c -> ['a', 'b', 'c']\n * a[b.c].e.f -> ['a', 'b.c', 'e', 'f']\n * a[b][c][d] -> ['a', 'b', 'c', 'd']\n *\n * @param {string|string[]} path\n **/ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"toPath\", {\n enumerable: true,\n get: ()=>toPath\n});\nfunction toPath(path) {\n if (Array.isArray(path)) return path;\n let openBrackets = path.split(\"[\").length - 1;\n let closedBrackets = path.split(\"]\").length - 1;\n if (openBrackets !== closedBrackets) {\n throw new Error(`Path is invalid. Has unbalanced brackets: ${path}`);\n }\n return path.split(/\\.(?![^\\[]*\\])|[\\[\\]]/g).filter(Boolean);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"normalizeConfig\", {\n enumerable: true,\n get: ()=>normalizeConfig\n});\nconst _log = /*#__PURE__*/ _interopRequireWildcard(require(\"./log\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction normalizeConfig(config) {\n // Quick structure validation\n /**\n * type FilePath = string\n * type RawFile = { raw: string, extension?: string }\n * type ExtractorFn = (content: string) => Array<string>\n * type TransformerFn = (content: string) => string\n *\n * type Content =\n * | Array<FilePath | RawFile>\n * | {\n * files: Array<FilePath | RawFile>,\n * extract?: ExtractorFn | { [extension: string]: ExtractorFn }\n * transform?: TransformerFn | { [extension: string]: TransformerFn }\n * }\n */ let valid = (()=>{\n // `config.purge` should not exist anymore\n if (config.purge) {\n return false;\n }\n // `config.content` should exist\n if (!config.content) {\n return false;\n }\n // `config.content` should be an object or an array\n if (!Array.isArray(config.content) && !(typeof config.content === \"object\" && config.content !== null)) {\n return false;\n }\n // When `config.content` is an array, it should consist of FilePaths or RawFiles\n if (Array.isArray(config.content)) {\n return config.content.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n });\n }\n // When `config.content` is an object\n if (typeof config.content === \"object\" && config.content !== null) {\n // Only `files`, `extract` and `transform` can exist in `config.content`\n if (Object.keys(config.content).some((key)=>![\n \"files\",\n \"extract\",\n \"transform\"\n ].includes(key))) {\n return false;\n }\n // `config.content.files` should exist of FilePaths or RawFiles\n if (Array.isArray(config.content.files)) {\n if (!config.content.files.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n })) {\n return false;\n }\n // `config.content.extract` is optional, and can be a Function or a Record<String, Function>\n if (typeof config.content.extract === \"object\") {\n for (let value of Object.values(config.content.extract)){\n if (typeof value !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.extract === undefined || typeof config.content.extract === \"function\")) {\n return false;\n }\n // `config.content.transform` is optional, and can be a Function or a Record<String, Function>\n if (typeof config.content.transform === \"object\") {\n for (let value1 of Object.values(config.content.transform)){\n if (typeof value1 !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.transform === undefined || typeof config.content.transform === \"function\")) {\n return false;\n }\n }\n return true;\n }\n return false;\n })();\n if (!valid) {\n _log.default.warn(\"purge-deprecation\", [\n \"The `purge`/`content` options have changed in Tailwind CSS v3.0.\",\n \"Update your configuration file to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#configure-content-sources\", \n ]);\n }\n // Normalize the `safelist`\n config.safelist = (()=>{\n var ref;\n let { content , purge , safelist } = config;\n if (Array.isArray(safelist)) return safelist;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.safelist)) return content.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.safelist)) return purge.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : (ref = purge.options) === null || ref === void 0 ? void 0 : ref.safelist)) return purge.options.safelist;\n return [];\n })();\n // Normalize prefix option\n if (typeof config.prefix === \"function\") {\n _log.default.warn(\"prefix-function\", [\n \"As of Tailwind CSS v3.0, `prefix` cannot be a function.\",\n \"Update `prefix` in your configuration to be a string to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function\", \n ]);\n config.prefix = \"\";\n } else {\n var _prefix;\n config.prefix = (_prefix = config.prefix) !== null && _prefix !== void 0 ? _prefix : \"\";\n }\n // Normalize the `content`\n config.content = {\n files: (()=>{\n let { content , purge } = config;\n if (Array.isArray(purge)) return purge;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.content)) return purge.content;\n if (Array.isArray(content)) return content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.content)) return content.content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.files)) return content.files;\n return [];\n })(),\n extract: (()=>{\n let extract = (()=>{\n var ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9;\n if ((ref = config.purge) === null || ref === void 0 ? void 0 : ref.extract) return config.purge.extract;\n if ((ref1 = config.content) === null || ref1 === void 0 ? void 0 : ref1.extract) return config.content.extract;\n if ((ref2 = config.purge) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.extract) === null || ref3 === void 0 ? void 0 : ref3.DEFAULT) return config.purge.extract.DEFAULT;\n if ((ref4 = config.content) === null || ref4 === void 0 ? void 0 : (ref5 = ref4.extract) === null || ref5 === void 0 ? void 0 : ref5.DEFAULT) return config.content.extract.DEFAULT;\n if ((ref6 = config.purge) === null || ref6 === void 0 ? void 0 : (ref7 = ref6.options) === null || ref7 === void 0 ? void 0 : ref7.extractors) return config.purge.options.extractors;\n if ((ref8 = config.content) === null || ref8 === void 0 ? void 0 : (ref9 = ref8.options) === null || ref9 === void 0 ? void 0 : ref9.extractors) return config.content.options.extractors;\n return {};\n })();\n let extractors = {};\n let defaultExtractor = (()=>{\n var ref, ref1, ref2, ref3;\n if ((ref = config.purge) === null || ref === void 0 ? void 0 : (ref1 = ref.options) === null || ref1 === void 0 ? void 0 : ref1.defaultExtractor) {\n return config.purge.options.defaultExtractor;\n }\n if ((ref2 = config.content) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.options) === null || ref3 === void 0 ? void 0 : ref3.defaultExtractor) {\n return config.content.options.defaultExtractor;\n }\n return undefined;\n })();\n if (defaultExtractor !== undefined) {\n extractors.DEFAULT = defaultExtractor;\n }\n // Functions\n if (typeof extract === \"function\") {\n extractors.DEFAULT = extract;\n } else if (Array.isArray(extract)) {\n for (let { extensions , extractor } of extract !== null && extract !== void 0 ? extract : []){\n for (let extension of extensions){\n extractors[extension] = extractor;\n }\n }\n } else if (typeof extract === \"object\" && extract !== null) {\n Object.assign(extractors, extract);\n }\n return extractors;\n })(),\n transform: (()=>{\n let transform = (()=>{\n var ref, ref1, ref2, ref3, ref4, ref5;\n if ((ref = config.purge) === null || ref === void 0 ? void 0 : ref.transform) return config.purge.transform;\n if ((ref1 = config.content) === null || ref1 === void 0 ? void 0 : ref1.transform) return config.content.transform;\n if ((ref2 = config.purge) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.transform) === null || ref3 === void 0 ? void 0 : ref3.DEFAULT) return config.purge.transform.DEFAULT;\n if ((ref4 = config.content) === null || ref4 === void 0 ? void 0 : (ref5 = ref4.transform) === null || ref5 === void 0 ? void 0 : ref5.DEFAULT) return config.content.transform.DEFAULT;\n return {};\n })();\n let transformers = {};\n if (typeof transform === \"function\") {\n transformers.DEFAULT = transform;\n }\n if (typeof transform === \"object\" && transform !== null) {\n Object.assign(transformers, transform);\n }\n return transformers;\n })()\n };\n // Validate globs to prevent bogus globs.\n // E.g.: `./src/*.{html}` is invalid, the `{html}` should just be `html`\n for (let file of config.content.files){\n if (typeof file === \"string\" && /{([^,]*?)}/g.test(file)) {\n _log.default.warn(\"invalid-glob-braces\", [\n `The glob pattern ${(0, _log.dim)(file)} in your Tailwind CSS configuration is invalid.`,\n `Update it to ${(0, _log.dim)(file.replace(/{([^,]*?)}/g, \"$1\"))} to silence this warning.`\n ]);\n break;\n }\n }\n return config;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>isPlainObject\n});\nfunction isPlainObject(value) {\n if (Object.prototype.toString.call(value) !== \"[object Object]\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || prototype === Object.prototype;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"cloneDeep\", {\n enumerable: true,\n get: ()=>cloneDeep\n});\nfunction cloneDeep(value) {\n if (Array.isArray(value)) {\n return value.map((child)=>cloneDeep(child));\n }\n if (typeof value === \"object\" && value !== null) {\n return Object.fromEntries(Object.entries(value).map(([k, v])=>[\n k,\n cloneDeep(v)\n ]));\n }\n return value;\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = unesc;\n\n// Many thanks for this post which made this migration much easier.\n// https://mathiasbynens.be/notes/css-escapes\n\n/**\n * \n * @param {string} str \n * @returns {[string, number]|undefined}\n */\nfunction gobbleHex(str) {\n var lower = str.toLowerCase();\n var hex = '';\n var spaceTerminated = false;\n\n for (var i = 0; i < 6 && lower[i] !== undefined; i++) {\n var code = lower.charCodeAt(i); // check to see if we are dealing with a valid hex char [a-f|0-9]\n\n var valid = code >= 97 && code <= 102 || code >= 48 && code <= 57; // https://drafts.csswg.org/css-syntax/#consume-escaped-code-point\n\n spaceTerminated = code === 32;\n\n if (!valid) {\n break;\n }\n\n hex += lower[i];\n }\n\n if (hex.length === 0) {\n return undefined;\n }\n\n var codePoint = parseInt(hex, 16);\n var isSurrogate = codePoint >= 0xD800 && codePoint <= 0xDFFF; // Add special case for\n // \"If this number is zero, or is for a surrogate, or is greater than the maximum allowed code point\"\n // https://drafts.csswg.org/css-syntax/#maximum-allowed-code-point\n\n if (isSurrogate || codePoint === 0x0000 || codePoint > 0x10FFFF) {\n return [\"\\uFFFD\", hex.length + (spaceTerminated ? 1 : 0)];\n }\n\n return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)];\n}\n\nvar CONTAINS_ESCAPE = /\\\\/;\n\nfunction unesc(str) {\n var needToProcess = CONTAINS_ESCAPE.test(str);\n\n if (!needToProcess) {\n return str;\n }\n\n var ret = \"\";\n\n for (var i = 0; i < str.length; i++) {\n if (str[i] === \"\\\\\") {\n var gobbled = gobbleHex(str.slice(i + 1, i + 7));\n\n if (gobbled !== undefined) {\n ret += gobbled[0];\n i += gobbled[1];\n continue;\n } // Retain a pair of \\\\ if double escaped `\\\\\\\\`\n // https://github.com/postcss/postcss-selector-parser/commit/268c9a7656fb53f543dc620aa5b73a30ec3ff20e\n\n\n if (str[i + 1] === \"\\\\\") {\n ret += \"\\\\\";\n i++;\n continue;\n } // if \\\\ is at the end of the string retain it\n // https://github.com/postcss/postcss-selector-parser/commit/01a6b346e3612ce1ab20219acc26abdc259ccefb\n\n\n if (str.length === i + 1) {\n ret += str[i];\n }\n\n continue;\n }\n\n ret += str[i];\n }\n\n return ret;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = getProp;\n\nfunction getProp(obj) {\n for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n props[_key - 1] = arguments[_key];\n }\n\n while (props.length > 0) {\n var prop = props.shift();\n\n if (!obj[prop]) {\n return undefined;\n }\n\n obj = obj[prop];\n }\n\n return obj;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = ensureObject;\n\nfunction ensureObject(obj) {\n for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n props[_key - 1] = arguments[_key];\n }\n\n while (props.length > 0) {\n var prop = props.shift();\n\n if (!obj[prop]) {\n obj[prop] = {};\n }\n\n obj = obj[prop];\n }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = stripComments;\n\nfunction stripComments(str) {\n var s = \"\";\n var commentStart = str.indexOf(\"/*\");\n var lastEnd = 0;\n\n while (commentStart >= 0) {\n s = s + str.slice(lastEnd, commentStart);\n var commentEnd = str.indexOf(\"*/\", commentStart + 2);\n\n if (commentEnd < 0) {\n return s;\n }\n\n lastEnd = commentEnd + 2;\n commentStart = str.indexOf(\"/*\", lastEnd);\n }\n\n s = s + str.slice(lastEnd);\n return s;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.stripComments = exports.ensureObject = exports.getProp = exports.unesc = void 0;\n\nvar _unesc = _interopRequireDefault(require(\"./unesc\"));\n\nexports.unesc = _unesc[\"default\"];\n\nvar _getProp = _interopRequireDefault(require(\"./getProp\"));\n\nexports.getProp = _getProp[\"default\"];\n\nvar _ensureObject = _interopRequireDefault(require(\"./ensureObject\"));\n\nexports.ensureObject = _ensureObject[\"default\"];\n\nvar _stripComments = _interopRequireDefault(require(\"./stripComments\"));\n\nexports.stripComments = _stripComments[\"default\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _util = require(\"../util\");\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar cloneNode = function cloneNode(obj, parent) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n\n var cloned = new obj.constructor();\n\n for (var i in obj) {\n if (!obj.hasOwnProperty(i)) {\n continue;\n }\n\n var value = obj[i];\n var type = typeof value;\n\n if (i === 'parent' && type === 'object') {\n if (parent) {\n cloned[i] = parent;\n }\n } else if (value instanceof Array) {\n cloned[i] = value.map(function (j) {\n return cloneNode(j, cloned);\n });\n } else {\n cloned[i] = cloneNode(value, cloned);\n }\n }\n\n return cloned;\n};\n\nvar Node = /*#__PURE__*/function () {\n function Node(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n Object.assign(this, opts);\n this.spaces = this.spaces || {};\n this.spaces.before = this.spaces.before || '';\n this.spaces.after = this.spaces.after || '';\n }\n\n var _proto = Node.prototype;\n\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n\n this.parent = undefined;\n return this;\n };\n\n _proto.replaceWith = function replaceWith() {\n if (this.parent) {\n for (var index in arguments) {\n this.parent.insertBefore(this, arguments[index]);\n }\n\n this.remove();\n }\n\n return this;\n };\n\n _proto.next = function next() {\n return this.parent.at(this.parent.index(this) + 1);\n };\n\n _proto.prev = function prev() {\n return this.parent.at(this.parent.index(this) - 1);\n };\n\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n var cloned = cloneNode(this);\n\n for (var name in overrides) {\n cloned[name] = overrides[name];\n }\n\n return cloned;\n }\n /**\n * Some non-standard syntax doesn't follow normal escaping rules for css.\n * This allows non standard syntax to be appended to an existing property\n * by specifying the escaped value. By specifying the escaped value,\n * illegal characters are allowed to be directly inserted into css output.\n * @param {string} name the property to set\n * @param {any} value the unescaped value of the property\n * @param {string} valueEscaped optional. the escaped value of the property.\n */\n ;\n\n _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) {\n if (!this.raws) {\n this.raws = {};\n }\n\n var originalValue = this[name];\n var originalEscaped = this.raws[name];\n this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first.\n\n if (originalEscaped || valueEscaped !== value) {\n this.raws[name] = (originalEscaped || originalValue) + valueEscaped;\n } else {\n delete this.raws[name]; // delete any escaped value that was created by the setter.\n }\n }\n /**\n * Some non-standard syntax doesn't follow normal escaping rules for css.\n * This allows the escaped value to be specified directly, allowing illegal\n * characters to be directly inserted into css output.\n * @param {string} name the property to set\n * @param {any} value the unescaped value of the property\n * @param {string} valueEscaped the escaped value of the property.\n */\n ;\n\n _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) {\n if (!this.raws) {\n this.raws = {};\n }\n\n this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.\n\n this.raws[name] = valueEscaped;\n }\n /**\n * When you want a value to passed through to CSS directly. This method\n * deletes the corresponding raw value causing the stringifier to fallback\n * to the unescaped value.\n * @param {string} name the property to set.\n * @param {any} value The value that is both escaped and unescaped.\n */\n ;\n\n _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) {\n this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.\n\n if (this.raws) {\n delete this.raws[name];\n }\n }\n /**\n *\n * @param {number} line The number (starting with 1)\n * @param {number} column The column number (starting with 1)\n */\n ;\n\n _proto.isAtPosition = function isAtPosition(line, column) {\n if (this.source && this.source.start && this.source.end) {\n if (this.source.start.line > line) {\n return false;\n }\n\n if (this.source.end.line < line) {\n return false;\n }\n\n if (this.source.start.line === line && this.source.start.column > column) {\n return false;\n }\n\n if (this.source.end.line === line && this.source.end.column < column) {\n return false;\n }\n\n return true;\n }\n\n return undefined;\n };\n\n _proto.stringifyProperty = function stringifyProperty(name) {\n return this.raws && this.raws[name] || this[name];\n };\n\n _proto.valueToString = function valueToString() {\n return String(this.stringifyProperty(\"value\"));\n };\n\n _proto.toString = function toString() {\n return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join('');\n };\n\n _createClass(Node, [{\n key: \"rawSpaceBefore\",\n get: function get() {\n var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before;\n\n if (rawSpace === undefined) {\n rawSpace = this.spaces && this.spaces.before;\n }\n\n return rawSpace || \"\";\n },\n set: function set(raw) {\n (0, _util.ensureObject)(this, \"raws\", \"spaces\");\n this.raws.spaces.before = raw;\n }\n }, {\n key: \"rawSpaceAfter\",\n get: function get() {\n var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after;\n\n if (rawSpace === undefined) {\n rawSpace = this.spaces.after;\n }\n\n return rawSpace || \"\";\n },\n set: function set(raw) {\n (0, _util.ensureObject)(this, \"raws\", \"spaces\");\n this.raws.spaces.after = raw;\n }\n }]);\n\n return Node;\n}();\n\nexports[\"default\"] = Node;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.UNIVERSAL = exports.ATTRIBUTE = exports.CLASS = exports.COMBINATOR = exports.COMMENT = exports.ID = exports.NESTING = exports.PSEUDO = exports.ROOT = exports.SELECTOR = exports.STRING = exports.TAG = void 0;\nvar TAG = 'tag';\nexports.TAG = TAG;\nvar STRING = 'string';\nexports.STRING = STRING;\nvar SELECTOR = 'selector';\nexports.SELECTOR = SELECTOR;\nvar ROOT = 'root';\nexports.ROOT = ROOT;\nvar PSEUDO = 'pseudo';\nexports.PSEUDO = PSEUDO;\nvar NESTING = 'nesting';\nexports.NESTING = NESTING;\nvar ID = 'id';\nexports.ID = ID;\nvar COMMENT = 'comment';\nexports.COMMENT = COMMENT;\nvar COMBINATOR = 'combinator';\nexports.COMBINATOR = COMBINATOR;\nvar CLASS = 'class';\nexports.CLASS = CLASS;\nvar ATTRIBUTE = 'attribute';\nexports.ATTRIBUTE = ATTRIBUTE;\nvar UNIVERSAL = 'universal';\nexports.UNIVERSAL = UNIVERSAL;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar types = _interopRequireWildcard(require(\"./types\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Container = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Container, _Node);\n\n function Container(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n\n if (!_this.nodes) {\n _this.nodes = [];\n }\n\n return _this;\n }\n\n var _proto = Container.prototype;\n\n _proto.append = function append(selector) {\n selector.parent = this;\n this.nodes.push(selector);\n return this;\n };\n\n _proto.prepend = function prepend(selector) {\n selector.parent = this;\n this.nodes.unshift(selector);\n return this;\n };\n\n _proto.at = function at(index) {\n return this.nodes[index];\n };\n\n _proto.index = function index(child) {\n if (typeof child === 'number') {\n return child;\n }\n\n return this.nodes.indexOf(child);\n };\n\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.at(child).parent = undefined;\n this.nodes.splice(child, 1);\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (index >= child) {\n this.indexes[id] = index - 1;\n }\n }\n\n return this;\n };\n\n _proto.removeAll = function removeAll() {\n for (var _iterator = _createForOfIteratorHelperLoose(this.nodes), _step; !(_step = _iterator()).done;) {\n var node = _step.value;\n node.parent = undefined;\n }\n\n this.nodes = [];\n return this;\n };\n\n _proto.empty = function empty() {\n return this.removeAll();\n };\n\n _proto.insertAfter = function insertAfter(oldNode, newNode) {\n newNode.parent = this;\n var oldIndex = this.index(oldNode);\n this.nodes.splice(oldIndex + 1, 0, newNode);\n newNode.parent = this;\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (oldIndex <= index) {\n this.indexes[id] = index + 1;\n }\n }\n\n return this;\n };\n\n _proto.insertBefore = function insertBefore(oldNode, newNode) {\n newNode.parent = this;\n var oldIndex = this.index(oldNode);\n this.nodes.splice(oldIndex, 0, newNode);\n newNode.parent = this;\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (index <= oldIndex) {\n this.indexes[id] = index + 1;\n }\n }\n\n return this;\n };\n\n _proto._findChildAtPosition = function _findChildAtPosition(line, col) {\n var found = undefined;\n this.each(function (node) {\n if (node.atPosition) {\n var foundChild = node.atPosition(line, col);\n\n if (foundChild) {\n found = foundChild;\n return false;\n }\n } else if (node.isAtPosition(line, col)) {\n found = node;\n return false;\n }\n });\n return found;\n }\n /**\n * Return the most specific node at the line and column number given.\n * The source location is based on the original parsed location, locations aren't\n * updated as selector nodes are mutated.\n * \n * Note that this location is relative to the location of the first character\n * of the selector, and not the location of the selector in the overall document\n * when used in conjunction with postcss.\n *\n * If not found, returns undefined.\n * @param {number} line The line number of the node to find. (1-based index)\n * @param {number} col The column number of the node to find. (1-based index)\n */\n ;\n\n _proto.atPosition = function atPosition(line, col) {\n if (this.isAtPosition(line, col)) {\n return this._findChildAtPosition(line, col) || this;\n } else {\n return undefined;\n }\n };\n\n _proto._inferEndPosition = function _inferEndPosition() {\n if (this.last && this.last.source && this.last.source.end) {\n this.source = this.source || {};\n this.source.end = this.source.end || {};\n Object.assign(this.source.end, this.last.source.end);\n }\n };\n\n _proto.each = function each(callback) {\n if (!this.lastEach) {\n this.lastEach = 0;\n }\n\n if (!this.indexes) {\n this.indexes = {};\n }\n\n this.lastEach++;\n var id = this.lastEach;\n this.indexes[id] = 0;\n\n if (!this.length) {\n return undefined;\n }\n\n var index, result;\n\n while (this.indexes[id] < this.length) {\n index = this.indexes[id];\n result = callback(this.at(index), index);\n\n if (result === false) {\n break;\n }\n\n this.indexes[id] += 1;\n }\n\n delete this.indexes[id];\n\n if (result === false) {\n return false;\n }\n };\n\n _proto.walk = function walk(callback) {\n return this.each(function (node, i) {\n var result = callback(node, i);\n\n if (result !== false && node.length) {\n result = node.walk(callback);\n }\n\n if (result === false) {\n return false;\n }\n });\n };\n\n _proto.walkAttributes = function walkAttributes(callback) {\n var _this2 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.ATTRIBUTE) {\n return callback.call(_this2, selector);\n }\n });\n };\n\n _proto.walkClasses = function walkClasses(callback) {\n var _this3 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.CLASS) {\n return callback.call(_this3, selector);\n }\n });\n };\n\n _proto.walkCombinators = function walkCombinators(callback) {\n var _this4 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.COMBINATOR) {\n return callback.call(_this4, selector);\n }\n });\n };\n\n _proto.walkComments = function walkComments(callback) {\n var _this5 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.COMMENT) {\n return callback.call(_this5, selector);\n }\n });\n };\n\n _proto.walkIds = function walkIds(callback) {\n var _this6 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.ID) {\n return callback.call(_this6, selector);\n }\n });\n };\n\n _proto.walkNesting = function walkNesting(callback) {\n var _this7 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.NESTING) {\n return callback.call(_this7, selector);\n }\n });\n };\n\n _proto.walkPseudos = function walkPseudos(callback) {\n var _this8 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.PSEUDO) {\n return callback.call(_this8, selector);\n }\n });\n };\n\n _proto.walkTags = function walkTags(callback) {\n var _this9 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.TAG) {\n return callback.call(_this9, selector);\n }\n });\n };\n\n _proto.walkUniversals = function walkUniversals(callback) {\n var _this10 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.UNIVERSAL) {\n return callback.call(_this10, selector);\n }\n });\n };\n\n _proto.split = function split(callback) {\n var _this11 = this;\n\n var current = [];\n return this.reduce(function (memo, node, index) {\n var split = callback.call(_this11, node);\n current.push(node);\n\n if (split) {\n memo.push(current);\n current = [];\n } else if (index === _this11.length - 1) {\n memo.push(current);\n }\n\n return memo;\n }, []);\n };\n\n _proto.map = function map(callback) {\n return this.nodes.map(callback);\n };\n\n _proto.reduce = function reduce(callback, memo) {\n return this.nodes.reduce(callback, memo);\n };\n\n _proto.every = function every(callback) {\n return this.nodes.every(callback);\n };\n\n _proto.some = function some(callback) {\n return this.nodes.some(callback);\n };\n\n _proto.filter = function filter(callback) {\n return this.nodes.filter(callback);\n };\n\n _proto.sort = function sort(callback) {\n return this.nodes.sort(callback);\n };\n\n _proto.toString = function toString() {\n return this.map(String).join('');\n };\n\n _createClass(Container, [{\n key: \"first\",\n get: function get() {\n return this.at(0);\n }\n }, {\n key: \"last\",\n get: function get() {\n return this.at(this.length - 1);\n }\n }, {\n key: \"length\",\n get: function get() {\n return this.nodes.length;\n }\n }]);\n\n return Container;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Container;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Root = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Root, _Container);\n\n function Root(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.ROOT;\n return _this;\n }\n\n var _proto = Root.prototype;\n\n _proto.toString = function toString() {\n var str = this.reduce(function (memo, selector) {\n memo.push(String(selector));\n return memo;\n }, []).join(',');\n return this.trailingComma ? str + ',' : str;\n };\n\n _proto.error = function error(message, options) {\n if (this._error) {\n return this._error(message, options);\n } else {\n return new Error(message);\n }\n };\n\n _createClass(Root, [{\n key: \"errorGenerator\",\n set: function set(handler) {\n this._error = handler;\n }\n }]);\n\n return Root;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Root;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Selector = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Selector, _Container);\n\n function Selector(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.SELECTOR;\n return _this;\n }\n\n return Selector;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Selector;\nmodule.exports = exports.default;","/*! https://mths.be/cssesc v3.0.0 by @mathias */\n'use strict';\n\nvar object = {};\nvar hasOwnProperty = object.hasOwnProperty;\nvar merge = function merge(options, defaults) {\n\tif (!options) {\n\t\treturn defaults;\n\t}\n\tvar result = {};\n\tfor (var key in defaults) {\n\t\t// `if (defaults.hasOwnProperty(key) { … }` is not needed here, since\n\t\t// only recognized option names are used.\n\t\tresult[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key];\n\t}\n\treturn result;\n};\n\nvar regexAnySingleEscape = /[ -,\\.\\/:-@\\[-\\^`\\{-~]/;\nvar regexSingleEscape = /[ -,\\.\\/:-@\\[\\]\\^`\\{-~]/;\nvar regexAlwaysEscape = /['\"\\\\]/;\nvar regexExcessiveSpaces = /(^|\\\\+)?(\\\\[A-F0-9]{1,6})\\x20(?![a-fA-F0-9\\x20])/g;\n\n// https://mathiasbynens.be/notes/css-escapes#css\nvar cssesc = function cssesc(string, options) {\n\toptions = merge(options, cssesc.options);\n\tif (options.quotes != 'single' && options.quotes != 'double') {\n\t\toptions.quotes = 'single';\n\t}\n\tvar quote = options.quotes == 'double' ? '\"' : '\\'';\n\tvar isIdentifier = options.isIdentifier;\n\n\tvar firstChar = string.charAt(0);\n\tvar output = '';\n\tvar counter = 0;\n\tvar length = string.length;\n\twhile (counter < length) {\n\t\tvar character = string.charAt(counter++);\n\t\tvar codePoint = character.charCodeAt();\n\t\tvar value = void 0;\n\t\t// If its not a printable ASCII character…\n\t\tif (codePoint < 0x20 || codePoint > 0x7E) {\n\t\t\tif (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) {\n\t\t\t\t// Its a high surrogate, and there is a next character.\n\t\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t// next character is low surrogate\n\t\t\t\t\tcodePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000;\n\t\t\t\t} else {\n\t\t\t\t\t// Its an unmatched surrogate; only append this code unit, in case\n\t\t\t\t\t// the next code unit is the high surrogate of a surrogate pair.\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t} else {\n\t\t\tif (options.escapeEverything) {\n\t\t\t\tif (regexAnySingleEscape.test(character)) {\n\t\t\t\t\tvalue = '\\\\' + character;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t\t}\n\t\t\t} else if (/[\\t\\n\\f\\r\\x0B]/.test(character)) {\n\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t} else if (character == '\\\\' || !isIdentifier && (character == '\"' && quote == character || character == '\\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) {\n\t\t\t\tvalue = '\\\\' + character;\n\t\t\t} else {\n\t\t\t\tvalue = character;\n\t\t\t}\n\t\t}\n\t\toutput += value;\n\t}\n\n\tif (isIdentifier) {\n\t\tif (/^-[-\\d]/.test(output)) {\n\t\t\toutput = '\\\\-' + output.slice(1);\n\t\t} else if (/\\d/.test(firstChar)) {\n\t\t\toutput = '\\\\3' + firstChar + ' ' + output.slice(1);\n\t\t}\n\t}\n\n\t// Remove spaces after `\\HEX` escapes that are not followed by a hex digit,\n\t// since theyre redundant. Note that this is only possible if the escape\n\t// sequence isnt preceded by an odd number of backslashes.\n\toutput = output.replace(regexExcessiveSpaces, function ($0, $1, $2) {\n\t\tif ($1 && $1.length % 2) {\n\t\t\t// Its not safe to remove the space, so dont.\n\t\t\treturn $0;\n\t\t}\n\t\t// Strip the space.\n\t\treturn ($1 || '') + $2;\n\t});\n\n\tif (!isIdentifier && options.wrap) {\n\t\treturn quote + output + quote;\n\t}\n\treturn output;\n};\n\n// Expose default options (so they can be overridden globally).\ncssesc.options = {\n\t'escapeEverything': false,\n\t'isIdentifier': false,\n\t'quotes': 'single',\n\t'wrap': false\n};\n\ncssesc.version = '3.0.0';\n\nmodule.exports = cssesc;\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _util = require(\"../util\");\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ClassName = /*#__PURE__*/function (_Node) {\n _inheritsLoose(ClassName, _Node);\n\n function ClassName(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.CLASS;\n _this._constructed = true;\n return _this;\n }\n\n var _proto = ClassName.prototype;\n\n _proto.valueToString = function valueToString() {\n return '.' + _Node.prototype.valueToString.call(this);\n };\n\n _createClass(ClassName, [{\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(v) {\n if (this._constructed) {\n var escaped = (0, _cssesc[\"default\"])(v, {\n isIdentifier: true\n });\n\n if (escaped !== v) {\n (0, _util.ensureObject)(this, \"raws\");\n this.raws.value = escaped;\n } else if (this.raws) {\n delete this.raws.value;\n }\n }\n\n this._value = v;\n }\n }]);\n\n return ClassName;\n}(_node[\"default\"]);\n\nexports[\"default\"] = ClassName;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Comment = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Comment, _Node);\n\n function Comment(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.COMMENT;\n return _this;\n }\n\n return Comment;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Comment;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ID = /*#__PURE__*/function (_Node) {\n _inheritsLoose(ID, _Node);\n\n function ID(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.ID;\n return _this;\n }\n\n var _proto = ID.prototype;\n\n _proto.valueToString = function valueToString() {\n return '#' + _Node.prototype.valueToString.call(this);\n };\n\n return ID;\n}(_node[\"default\"]);\n\nexports[\"default\"] = ID;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _util = require(\"../util\");\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Namespace = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Namespace, _Node);\n\n function Namespace() {\n return _Node.apply(this, arguments) || this;\n }\n\n var _proto = Namespace.prototype;\n\n _proto.qualifiedName = function qualifiedName(value) {\n if (this.namespace) {\n return this.namespaceString + \"|\" + value;\n } else {\n return value;\n }\n };\n\n _proto.valueToString = function valueToString() {\n return this.qualifiedName(_Node.prototype.valueToString.call(this));\n };\n\n _createClass(Namespace, [{\n key: \"namespace\",\n get: function get() {\n return this._namespace;\n },\n set: function set(namespace) {\n if (namespace === true || namespace === \"*\" || namespace === \"&\") {\n this._namespace = namespace;\n\n if (this.raws) {\n delete this.raws.namespace;\n }\n\n return;\n }\n\n var escaped = (0, _cssesc[\"default\"])(namespace, {\n isIdentifier: true\n });\n this._namespace = namespace;\n\n if (escaped !== namespace) {\n (0, _util.ensureObject)(this, \"raws\");\n this.raws.namespace = escaped;\n } else if (this.raws) {\n delete this.raws.namespace;\n }\n }\n }, {\n key: \"ns\",\n get: function get() {\n return this._namespace;\n },\n set: function set(namespace) {\n this.namespace = namespace;\n }\n }, {\n key: \"namespaceString\",\n get: function get() {\n if (this.namespace) {\n var ns = this.stringifyProperty(\"namespace\");\n\n if (ns === true) {\n return '';\n } else {\n return ns;\n }\n } else {\n return '';\n }\n }\n }]);\n\n return Namespace;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Namespace;\n;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Tag = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Tag, _Namespace);\n\n function Tag(opts) {\n var _this;\n\n _this = _Namespace.call(this, opts) || this;\n _this.type = _types.TAG;\n return _this;\n }\n\n return Tag;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Tag;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar String = /*#__PURE__*/function (_Node) {\n _inheritsLoose(String, _Node);\n\n function String(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.STRING;\n return _this;\n }\n\n return String;\n}(_node[\"default\"]);\n\nexports[\"default\"] = String;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Pseudo = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Pseudo, _Container);\n\n function Pseudo(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.PSEUDO;\n return _this;\n }\n\n var _proto = Pseudo.prototype;\n\n _proto.toString = function toString() {\n var params = this.length ? '(' + this.map(String).join(',') + ')' : '';\n return [this.rawSpaceBefore, this.stringifyProperty(\"value\"), params, this.rawSpaceAfter].join('');\n };\n\n return Pseudo;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Pseudo;\nmodule.exports = exports.default;","module.exports = function deprecate(fn, message) {\n return function (...args) {\n console.warn(message)\n return fn(...args)\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.unescapeValue = unescapeValue;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _unesc = _interopRequireDefault(require(\"../util/unesc\"));\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nvar _CSSESC_QUOTE_OPTIONS;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar deprecate = require(\"util-deprecate\");\n\nvar WRAPPED_IN_QUOTES = /^('|\")([^]*)\\1$/;\nvar warnOfDeprecatedValueAssignment = deprecate(function () {}, \"Assigning an attribute a value containing characters that might need to be escaped is deprecated. \" + \"Call attribute.setValue() instead.\");\nvar warnOfDeprecatedQuotedAssignment = deprecate(function () {}, \"Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead.\");\nvar warnOfDeprecatedConstructor = deprecate(function () {}, \"Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now.\");\n\nfunction unescapeValue(value) {\n var deprecatedUsage = false;\n var quoteMark = null;\n var unescaped = value;\n var m = unescaped.match(WRAPPED_IN_QUOTES);\n\n if (m) {\n quoteMark = m[1];\n unescaped = m[2];\n }\n\n unescaped = (0, _unesc[\"default\"])(unescaped);\n\n if (unescaped !== value) {\n deprecatedUsage = true;\n }\n\n return {\n deprecatedUsage: deprecatedUsage,\n unescaped: unescaped,\n quoteMark: quoteMark\n };\n}\n\nfunction handleDeprecatedContructorOpts(opts) {\n if (opts.quoteMark !== undefined) {\n return opts;\n }\n\n if (opts.value === undefined) {\n return opts;\n }\n\n warnOfDeprecatedConstructor();\n\n var _unescapeValue = unescapeValue(opts.value),\n quoteMark = _unescapeValue.quoteMark,\n unescaped = _unescapeValue.unescaped;\n\n if (!opts.raws) {\n opts.raws = {};\n }\n\n if (opts.raws.value === undefined) {\n opts.raws.value = opts.value;\n }\n\n opts.value = unescaped;\n opts.quoteMark = quoteMark;\n return opts;\n}\n\nvar Attribute = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Attribute, _Namespace);\n\n function Attribute(opts) {\n var _this;\n\n if (opts === void 0) {\n opts = {};\n }\n\n _this = _Namespace.call(this, handleDeprecatedContructorOpts(opts)) || this;\n _this.type = _types.ATTRIBUTE;\n _this.raws = _this.raws || {};\n Object.defineProperty(_this.raws, 'unquoted', {\n get: deprecate(function () {\n return _this.value;\n }, \"attr.raws.unquoted is deprecated. Call attr.value instead.\"),\n set: deprecate(function () {\n return _this.value;\n }, \"Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.\")\n });\n _this._constructed = true;\n return _this;\n }\n /**\n * Returns the Attribute's value quoted such that it would be legal to use\n * in the value of a css file. The original value's quotation setting\n * used for stringification is left unchanged. See `setValue(value, options)`\n * if you want to control the quote settings of a new value for the attribute.\n *\n * You can also change the quotation used for the current value by setting quoteMark.\n *\n * Options:\n * * quoteMark {'\"' | \"'\" | null} - Use this value to quote the value. If this\n * option is not set, the original value for quoteMark will be used. If\n * indeterminate, a double quote is used. The legal values are:\n * * `null` - the value will be unquoted and characters will be escaped as necessary.\n * * `'` - the value will be quoted with a single quote and single quotes are escaped.\n * * `\"` - the value will be quoted with a double quote and double quotes are escaped.\n * * preferCurrentQuoteMark {boolean} - if true, prefer the source quote mark\n * over the quoteMark option value.\n * * smart {boolean} - if true, will select a quote mark based on the value\n * and the other options specified here. See the `smartQuoteMark()`\n * method.\n **/\n\n\n var _proto = Attribute.prototype;\n\n _proto.getQuotedValue = function getQuotedValue(options) {\n if (options === void 0) {\n options = {};\n }\n\n var quoteMark = this._determineQuoteMark(options);\n\n var cssescopts = CSSESC_QUOTE_OPTIONS[quoteMark];\n var escaped = (0, _cssesc[\"default\"])(this._value, cssescopts);\n return escaped;\n };\n\n _proto._determineQuoteMark = function _determineQuoteMark(options) {\n return options.smart ? this.smartQuoteMark(options) : this.preferredQuoteMark(options);\n }\n /**\n * Set the unescaped value with the specified quotation options. The value\n * provided must not include any wrapping quote marks -- those quotes will\n * be interpreted as part of the value and escaped accordingly.\n */\n ;\n\n _proto.setValue = function setValue(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n this._value = value;\n this._quoteMark = this._determineQuoteMark(options);\n\n this._syncRawValue();\n }\n /**\n * Intelligently select a quoteMark value based on the value's contents. If\n * the value is a legal CSS ident, it will not be quoted. Otherwise a quote\n * mark will be picked that minimizes the number of escapes.\n *\n * If there's no clear winner, the quote mark from these options is used,\n * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is\n * true). If the quoteMark is unspecified, a double quote is used.\n *\n * @param options This takes the quoteMark and preferCurrentQuoteMark options\n * from the quoteValue method.\n */\n ;\n\n _proto.smartQuoteMark = function smartQuoteMark(options) {\n var v = this.value;\n var numSingleQuotes = v.replace(/[^']/g, '').length;\n var numDoubleQuotes = v.replace(/[^\"]/g, '').length;\n\n if (numSingleQuotes + numDoubleQuotes === 0) {\n var escaped = (0, _cssesc[\"default\"])(v, {\n isIdentifier: true\n });\n\n if (escaped === v) {\n return Attribute.NO_QUOTE;\n } else {\n var pref = this.preferredQuoteMark(options);\n\n if (pref === Attribute.NO_QUOTE) {\n // pick a quote mark that isn't none and see if it's smaller\n var quote = this.quoteMark || options.quoteMark || Attribute.DOUBLE_QUOTE;\n var opts = CSSESC_QUOTE_OPTIONS[quote];\n var quoteValue = (0, _cssesc[\"default\"])(v, opts);\n\n if (quoteValue.length < escaped.length) {\n return quote;\n }\n }\n\n return pref;\n }\n } else if (numDoubleQuotes === numSingleQuotes) {\n return this.preferredQuoteMark(options);\n } else if (numDoubleQuotes < numSingleQuotes) {\n return Attribute.DOUBLE_QUOTE;\n } else {\n return Attribute.SINGLE_QUOTE;\n }\n }\n /**\n * Selects the preferred quote mark based on the options and the current quote mark value.\n * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)`\n * instead.\n */\n ;\n\n _proto.preferredQuoteMark = function preferredQuoteMark(options) {\n var quoteMark = options.preferCurrentQuoteMark ? this.quoteMark : options.quoteMark;\n\n if (quoteMark === undefined) {\n quoteMark = options.preferCurrentQuoteMark ? options.quoteMark : this.quoteMark;\n }\n\n if (quoteMark === undefined) {\n quoteMark = Attribute.DOUBLE_QUOTE;\n }\n\n return quoteMark;\n };\n\n _proto._syncRawValue = function _syncRawValue() {\n var rawValue = (0, _cssesc[\"default\"])(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]);\n\n if (rawValue === this._value) {\n if (this.raws) {\n delete this.raws.value;\n }\n } else {\n this.raws.value = rawValue;\n }\n };\n\n _proto._handleEscapes = function _handleEscapes(prop, value) {\n if (this._constructed) {\n var escaped = (0, _cssesc[\"default\"])(value, {\n isIdentifier: true\n });\n\n if (escaped !== value) {\n this.raws[prop] = escaped;\n } else {\n delete this.raws[prop];\n }\n }\n };\n\n _proto._spacesFor = function _spacesFor(name) {\n var attrSpaces = {\n before: '',\n after: ''\n };\n var spaces = this.spaces[name] || {};\n var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {};\n return Object.assign(attrSpaces, spaces, rawSpaces);\n };\n\n _proto._stringFor = function _stringFor(name, spaceName, concat) {\n if (spaceName === void 0) {\n spaceName = name;\n }\n\n if (concat === void 0) {\n concat = defaultAttrConcat;\n }\n\n var attrSpaces = this._spacesFor(spaceName);\n\n return concat(this.stringifyProperty(name), attrSpaces);\n }\n /**\n * returns the offset of the attribute part specified relative to the\n * start of the node of the output string.\n *\n * * \"ns\" - alias for \"namespace\"\n * * \"namespace\" - the namespace if it exists.\n * * \"attribute\" - the attribute name\n * * \"attributeNS\" - the start of the attribute or its namespace\n * * \"operator\" - the match operator of the attribute\n * * \"value\" - The value (string or identifier)\n * * \"insensitive\" - the case insensitivity flag;\n * @param part One of the possible values inside an attribute.\n * @returns -1 if the name is invalid or the value doesn't exist in this attribute.\n */\n ;\n\n _proto.offsetOf = function offsetOf(name) {\n var count = 1;\n\n var attributeSpaces = this._spacesFor(\"attribute\");\n\n count += attributeSpaces.before.length;\n\n if (name === \"namespace\" || name === \"ns\") {\n return this.namespace ? count : -1;\n }\n\n if (name === \"attributeNS\") {\n return count;\n }\n\n count += this.namespaceString.length;\n\n if (this.namespace) {\n count += 1;\n }\n\n if (name === \"attribute\") {\n return count;\n }\n\n count += this.stringifyProperty(\"attribute\").length;\n count += attributeSpaces.after.length;\n\n var operatorSpaces = this._spacesFor(\"operator\");\n\n count += operatorSpaces.before.length;\n var operator = this.stringifyProperty(\"operator\");\n\n if (name === \"operator\") {\n return operator ? count : -1;\n }\n\n count += operator.length;\n count += operatorSpaces.after.length;\n\n var valueSpaces = this._spacesFor(\"value\");\n\n count += valueSpaces.before.length;\n var value = this.stringifyProperty(\"value\");\n\n if (name === \"value\") {\n return value ? count : -1;\n }\n\n count += value.length;\n count += valueSpaces.after.length;\n\n var insensitiveSpaces = this._spacesFor(\"insensitive\");\n\n count += insensitiveSpaces.before.length;\n\n if (name === \"insensitive\") {\n return this.insensitive ? count : -1;\n }\n\n return -1;\n };\n\n _proto.toString = function toString() {\n var _this2 = this;\n\n var selector = [this.rawSpaceBefore, '['];\n selector.push(this._stringFor('qualifiedAttribute', 'attribute'));\n\n if (this.operator && (this.value || this.value === '')) {\n selector.push(this._stringFor('operator'));\n selector.push(this._stringFor('value'));\n selector.push(this._stringFor('insensitiveFlag', 'insensitive', function (attrValue, attrSpaces) {\n if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) {\n attrSpaces.before = \" \";\n }\n\n return defaultAttrConcat(attrValue, attrSpaces);\n }));\n }\n\n selector.push(']');\n selector.push(this.rawSpaceAfter);\n return selector.join('');\n };\n\n _createClass(Attribute, [{\n key: \"quoted\",\n get: function get() {\n var qm = this.quoteMark;\n return qm === \"'\" || qm === '\"';\n },\n set: function set(value) {\n warnOfDeprecatedQuotedAssignment();\n }\n /**\n * returns a single (`'`) or double (`\"`) quote character if the value is quoted.\n * returns `null` if the value is not quoted.\n * returns `undefined` if the quotation state is unknown (this can happen when\n * the attribute is constructed without specifying a quote mark.)\n */\n\n }, {\n key: \"quoteMark\",\n get: function get() {\n return this._quoteMark;\n }\n /**\n * Set the quote mark to be used by this attribute's value.\n * If the quote mark changes, the raw (escaped) value at `attr.raws.value` of the attribute\n * value is updated accordingly.\n *\n * @param {\"'\" | '\"' | null} quoteMark The quote mark or `null` if the value should be unquoted.\n */\n ,\n set: function set(quoteMark) {\n if (!this._constructed) {\n this._quoteMark = quoteMark;\n return;\n }\n\n if (this._quoteMark !== quoteMark) {\n this._quoteMark = quoteMark;\n\n this._syncRawValue();\n }\n }\n }, {\n key: \"qualifiedAttribute\",\n get: function get() {\n return this.qualifiedName(this.raws.attribute || this.attribute);\n }\n }, {\n key: \"insensitiveFlag\",\n get: function get() {\n return this.insensitive ? 'i' : '';\n }\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n }\n /**\n * Before 3.0, the value had to be set to an escaped value including any wrapped\n * quote marks. In 3.0, the semantics of `Attribute.value` changed so that the value\n * is unescaped during parsing and any quote marks are removed.\n *\n * Because the ambiguity of this semantic change, if you set `attr.value = newValue`,\n * a deprecation warning is raised when the new value contains any characters that would\n * require escaping (including if it contains wrapped quotes).\n *\n * Instead, you should call `attr.setValue(newValue, opts)` and pass options that describe\n * how the new value is quoted.\n */\n ,\n set: function set(v) {\n if (this._constructed) {\n var _unescapeValue2 = unescapeValue(v),\n deprecatedUsage = _unescapeValue2.deprecatedUsage,\n unescaped = _unescapeValue2.unescaped,\n quoteMark = _unescapeValue2.quoteMark;\n\n if (deprecatedUsage) {\n warnOfDeprecatedValueAssignment();\n }\n\n if (unescaped === this._value && quoteMark === this._quoteMark) {\n return;\n }\n\n this._value = unescaped;\n this._quoteMark = quoteMark;\n\n this._syncRawValue();\n } else {\n this._value = v;\n }\n }\n }, {\n key: \"attribute\",\n get: function get() {\n return this._attribute;\n },\n set: function set(name) {\n this._handleEscapes(\"attribute\", name);\n\n this._attribute = name;\n }\n }]);\n\n return Attribute;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Attribute;\nAttribute.NO_QUOTE = null;\nAttribute.SINGLE_QUOTE = \"'\";\nAttribute.DOUBLE_QUOTE = '\"';\nvar CSSESC_QUOTE_OPTIONS = (_CSSESC_QUOTE_OPTIONS = {\n \"'\": {\n quotes: 'single',\n wrap: true\n },\n '\"': {\n quotes: 'double',\n wrap: true\n }\n}, _CSSESC_QUOTE_OPTIONS[null] = {\n isIdentifier: true\n}, _CSSESC_QUOTE_OPTIONS);\n\nfunction defaultAttrConcat(attrValue, attrSpaces) {\n return \"\" + attrSpaces.before + attrValue + attrSpaces.after;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Universal = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Universal, _Namespace);\n\n function Universal(opts) {\n var _this;\n\n _this = _Namespace.call(this, opts) || this;\n _this.type = _types.UNIVERSAL;\n _this.value = '*';\n return _this;\n }\n\n return Universal;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Universal;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Combinator = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Combinator, _Node);\n\n function Combinator(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.COMBINATOR;\n return _this;\n }\n\n return Combinator;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Combinator;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Nesting = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Nesting, _Node);\n\n function Nesting(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.NESTING;\n _this.value = '&';\n return _this;\n }\n\n return Nesting;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Nesting;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = sortAscending;\n\nfunction sortAscending(list) {\n return list.sort(function (a, b) {\n return a - b;\n });\n}\n\n;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.combinator = exports.word = exports.comment = exports.str = exports.tab = exports.newline = exports.feed = exports.cr = exports.backslash = exports.bang = exports.slash = exports.doubleQuote = exports.singleQuote = exports.space = exports.greaterThan = exports.pipe = exports.equals = exports.plus = exports.caret = exports.tilde = exports.dollar = exports.closeSquare = exports.openSquare = exports.closeParenthesis = exports.openParenthesis = exports.semicolon = exports.colon = exports.comma = exports.at = exports.asterisk = exports.ampersand = void 0;\nvar ampersand = 38; // `&`.charCodeAt(0);\n\nexports.ampersand = ampersand;\nvar asterisk = 42; // `*`.charCodeAt(0);\n\nexports.asterisk = asterisk;\nvar at = 64; // `@`.charCodeAt(0);\n\nexports.at = at;\nvar comma = 44; // `,`.charCodeAt(0);\n\nexports.comma = comma;\nvar colon = 58; // `:`.charCodeAt(0);\n\nexports.colon = colon;\nvar semicolon = 59; // `;`.charCodeAt(0);\n\nexports.semicolon = semicolon;\nvar openParenthesis = 40; // `(`.charCodeAt(0);\n\nexports.openParenthesis = openParenthesis;\nvar closeParenthesis = 41; // `)`.charCodeAt(0);\n\nexports.closeParenthesis = closeParenthesis;\nvar openSquare = 91; // `[`.charCodeAt(0);\n\nexports.openSquare = openSquare;\nvar closeSquare = 93; // `]`.charCodeAt(0);\n\nexports.closeSquare = closeSquare;\nvar dollar = 36; // `$`.charCodeAt(0);\n\nexports.dollar = dollar;\nvar tilde = 126; // `~`.charCodeAt(0);\n\nexports.tilde = tilde;\nvar caret = 94; // `^`.charCodeAt(0);\n\nexports.caret = caret;\nvar plus = 43; // `+`.charCodeAt(0);\n\nexports.plus = plus;\nvar equals = 61; // `=`.charCodeAt(0);\n\nexports.equals = equals;\nvar pipe = 124; // `|`.charCodeAt(0);\n\nexports.pipe = pipe;\nvar greaterThan = 62; // `>`.charCodeAt(0);\n\nexports.greaterThan = greaterThan;\nvar space = 32; // ` `.charCodeAt(0);\n\nexports.space = space;\nvar singleQuote = 39; // `'`.charCodeAt(0);\n\nexports.singleQuote = singleQuote;\nvar doubleQuote = 34; // `\"`.charCodeAt(0);\n\nexports.doubleQuote = doubleQuote;\nvar slash = 47; // `/`.charCodeAt(0);\n\nexports.slash = slash;\nvar bang = 33; // `!`.charCodeAt(0);\n\nexports.bang = bang;\nvar backslash = 92; // '\\\\'.charCodeAt(0);\n\nexports.backslash = backslash;\nvar cr = 13; // '\\r'.charCodeAt(0);\n\nexports.cr = cr;\nvar feed = 12; // '\\f'.charCodeAt(0);\n\nexports.feed = feed;\nvar newline = 10; // '\\n'.charCodeAt(0);\n\nexports.newline = newline;\nvar tab = 9; // '\\t'.charCodeAt(0);\n// Expose aliases primarily for readability.\n\nexports.tab = tab;\nvar str = singleQuote; // No good single character representation!\n\nexports.str = str;\nvar comment = -1;\nexports.comment = comment;\nvar word = -2;\nexports.word = word;\nvar combinator = -3;\nexports.combinator = combinator;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = tokenize;\nexports.FIELDS = void 0;\n\nvar t = _interopRequireWildcard(require(\"./tokenTypes\"));\n\nvar _unescapable, _wordDelimiters;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable);\nvar wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters);\nvar hex = {};\nvar hexChars = \"0123456789abcdefABCDEF\";\n\nfor (var i = 0; i < hexChars.length; i++) {\n hex[hexChars.charCodeAt(i)] = true;\n}\n/**\n * Returns the last index of the bar css word\n * @param {string} css The string in which the word begins\n * @param {number} start The index into the string where word's first letter occurs\n */\n\n\nfunction consumeWord(css, start) {\n var next = start;\n var code;\n\n do {\n code = css.charCodeAt(next);\n\n if (wordDelimiters[code]) {\n return next - 1;\n } else if (code === t.backslash) {\n next = consumeEscape(css, next) + 1;\n } else {\n // All other characters are part of the word\n next++;\n }\n } while (next < css.length);\n\n return next - 1;\n}\n/**\n * Returns the last index of the escape sequence\n * @param {string} css The string in which the sequence begins\n * @param {number} start The index into the string where escape character (`\\`) occurs.\n */\n\n\nfunction consumeEscape(css, start) {\n var next = start;\n var code = css.charCodeAt(next + 1);\n\n if (unescapable[code]) {// just consume the escape char\n } else if (hex[code]) {\n var hexDigits = 0; // consume up to 6 hex chars\n\n do {\n next++;\n hexDigits++;\n code = css.charCodeAt(next + 1);\n } while (hex[code] && hexDigits < 6); // if fewer than 6 hex chars, a trailing space ends the escape\n\n\n if (hexDigits < 6 && code === t.space) {\n next++;\n }\n } else {\n // the next char is part of the current word\n next++;\n }\n\n return next;\n}\n\nvar FIELDS = {\n TYPE: 0,\n START_LINE: 1,\n START_COL: 2,\n END_LINE: 3,\n END_COL: 4,\n START_POS: 5,\n END_POS: 6\n};\nexports.FIELDS = FIELDS;\n\nfunction tokenize(input) {\n var tokens = [];\n var css = input.css.valueOf();\n var _css = css,\n length = _css.length;\n var offset = -1;\n var line = 1;\n var start = 0;\n var end = 0;\n var code, content, endColumn, endLine, escaped, escapePos, last, lines, next, nextLine, nextOffset, quote, tokenType;\n\n function unclosed(what, fix) {\n if (input.safe) {\n // fyi: this is never set to true.\n css += fix;\n next = css.length - 1;\n } else {\n throw input.error('Unclosed ' + what, line, start - offset, start);\n }\n }\n\n while (start < length) {\n code = css.charCodeAt(start);\n\n if (code === t.newline) {\n offset = start;\n line += 1;\n }\n\n switch (code) {\n case t.space:\n case t.tab:\n case t.newline:\n case t.cr:\n case t.feed:\n next = start;\n\n do {\n next += 1;\n code = css.charCodeAt(next);\n\n if (code === t.newline) {\n offset = next;\n line += 1;\n }\n } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed);\n\n tokenType = t.space;\n endLine = line;\n endColumn = next - offset - 1;\n end = next;\n break;\n\n case t.plus:\n case t.greaterThan:\n case t.tilde:\n case t.pipe:\n next = start;\n\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe);\n\n tokenType = t.combinator;\n endLine = line;\n endColumn = start - offset;\n end = next;\n break;\n // Consume these characters as single tokens.\n\n case t.asterisk:\n case t.ampersand:\n case t.bang:\n case t.comma:\n case t.equals:\n case t.dollar:\n case t.caret:\n case t.openSquare:\n case t.closeSquare:\n case t.colon:\n case t.semicolon:\n case t.openParenthesis:\n case t.closeParenthesis:\n next = start;\n tokenType = code;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n break;\n\n case t.singleQuote:\n case t.doubleQuote:\n quote = code === t.singleQuote ? \"'\" : '\"';\n next = start;\n\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n\n if (next === -1) {\n unclosed('quote', quote);\n }\n\n escapePos = next;\n\n while (css.charCodeAt(escapePos - 1) === t.backslash) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n tokenType = t.str;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n break;\n\n default:\n if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) {\n next = css.indexOf('*/', start + 2) + 1;\n\n if (next === 0) {\n unclosed('comment', '*/');\n }\n\n content = css.slice(start, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n tokenType = t.comment;\n line = nextLine;\n endLine = nextLine;\n endColumn = next - nextOffset;\n } else if (code === t.slash) {\n next = start;\n tokenType = code;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n } else {\n next = consumeWord(css, start);\n tokenType = t.word;\n endLine = line;\n endColumn = next - offset;\n }\n\n end = next + 1;\n break;\n } // Ensure that the token structure remains consistent\n\n\n tokens.push([tokenType, // [0] Token type\n line, // [1] Starting line\n start - offset, // [2] Starting column\n endLine, // [3] Ending line\n endColumn, // [4] Ending column\n start, // [5] Start position / Source index\n end // [6] End position\n ]); // Reset offset for the next token\n\n if (nextOffset) {\n offset = nextOffset;\n nextOffset = null;\n }\n\n start = end;\n }\n\n return tokens;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _root = _interopRequireDefault(require(\"./selectors/root\"));\n\nvar _selector = _interopRequireDefault(require(\"./selectors/selector\"));\n\nvar _className = _interopRequireDefault(require(\"./selectors/className\"));\n\nvar _comment = _interopRequireDefault(require(\"./selectors/comment\"));\n\nvar _id = _interopRequireDefault(require(\"./selectors/id\"));\n\nvar _tag = _interopRequireDefault(require(\"./selectors/tag\"));\n\nvar _string = _interopRequireDefault(require(\"./selectors/string\"));\n\nvar _pseudo = _interopRequireDefault(require(\"./selectors/pseudo\"));\n\nvar _attribute = _interopRequireWildcard(require(\"./selectors/attribute\"));\n\nvar _universal = _interopRequireDefault(require(\"./selectors/universal\"));\n\nvar _combinator = _interopRequireDefault(require(\"./selectors/combinator\"));\n\nvar _nesting = _interopRequireDefault(require(\"./selectors/nesting\"));\n\nvar _sortAscending = _interopRequireDefault(require(\"./sortAscending\"));\n\nvar _tokenize = _interopRequireWildcard(require(\"./tokenize\"));\n\nvar tokens = _interopRequireWildcard(require(\"./tokenTypes\"));\n\nvar types = _interopRequireWildcard(require(\"./selectors/types\"));\n\nvar _util = require(\"./util\");\n\nvar _WHITESPACE_TOKENS, _Object$assign;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar WHITESPACE_TOKENS = (_WHITESPACE_TOKENS = {}, _WHITESPACE_TOKENS[tokens.space] = true, _WHITESPACE_TOKENS[tokens.cr] = true, _WHITESPACE_TOKENS[tokens.feed] = true, _WHITESPACE_TOKENS[tokens.newline] = true, _WHITESPACE_TOKENS[tokens.tab] = true, _WHITESPACE_TOKENS);\nvar WHITESPACE_EQUIV_TOKENS = Object.assign({}, WHITESPACE_TOKENS, (_Object$assign = {}, _Object$assign[tokens.comment] = true, _Object$assign));\n\nfunction tokenStart(token) {\n return {\n line: token[_tokenize.FIELDS.START_LINE],\n column: token[_tokenize.FIELDS.START_COL]\n };\n}\n\nfunction tokenEnd(token) {\n return {\n line: token[_tokenize.FIELDS.END_LINE],\n column: token[_tokenize.FIELDS.END_COL]\n };\n}\n\nfunction getSource(startLine, startColumn, endLine, endColumn) {\n return {\n start: {\n line: startLine,\n column: startColumn\n },\n end: {\n line: endLine,\n column: endColumn\n }\n };\n}\n\nfunction getTokenSource(token) {\n return getSource(token[_tokenize.FIELDS.START_LINE], token[_tokenize.FIELDS.START_COL], token[_tokenize.FIELDS.END_LINE], token[_tokenize.FIELDS.END_COL]);\n}\n\nfunction getTokenSourceSpan(startToken, endToken) {\n if (!startToken) {\n return undefined;\n }\n\n return getSource(startToken[_tokenize.FIELDS.START_LINE], startToken[_tokenize.FIELDS.START_COL], endToken[_tokenize.FIELDS.END_LINE], endToken[_tokenize.FIELDS.END_COL]);\n}\n\nfunction unescapeProp(node, prop) {\n var value = node[prop];\n\n if (typeof value !== \"string\") {\n return;\n }\n\n if (value.indexOf(\"\\\\\") !== -1) {\n (0, _util.ensureObject)(node, 'raws');\n node[prop] = (0, _util.unesc)(value);\n\n if (node.raws[prop] === undefined) {\n node.raws[prop] = value;\n }\n }\n\n return node;\n}\n\nfunction indexesOf(array, item) {\n var i = -1;\n var indexes = [];\n\n while ((i = array.indexOf(item, i + 1)) !== -1) {\n indexes.push(i);\n }\n\n return indexes;\n}\n\nfunction uniqs() {\n var list = Array.prototype.concat.apply([], arguments);\n return list.filter(function (item, i) {\n return i === list.indexOf(item);\n });\n}\n\nvar Parser = /*#__PURE__*/function () {\n function Parser(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n this.rule = rule;\n this.options = Object.assign({\n lossy: false,\n safe: false\n }, options);\n this.position = 0;\n this.css = typeof this.rule === 'string' ? this.rule : this.rule.selector;\n this.tokens = (0, _tokenize[\"default\"])({\n css: this.css,\n error: this._errorGenerator(),\n safe: this.options.safe\n });\n var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]);\n this.root = new _root[\"default\"]({\n source: rootSource\n });\n this.root.errorGenerator = this._errorGenerator();\n var selector = new _selector[\"default\"]({\n source: {\n start: {\n line: 1,\n column: 1\n }\n }\n });\n this.root.append(selector);\n this.current = selector;\n this.loop();\n }\n\n var _proto = Parser.prototype;\n\n _proto._errorGenerator = function _errorGenerator() {\n var _this = this;\n\n return function (message, errorOptions) {\n if (typeof _this.rule === 'string') {\n return new Error(message);\n }\n\n return _this.rule.error(message, errorOptions);\n };\n };\n\n _proto.attribute = function attribute() {\n var attr = [];\n var startingToken = this.currToken;\n this.position++;\n\n while (this.position < this.tokens.length && this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {\n attr.push(this.currToken);\n this.position++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {\n return this.expected('closing square bracket', this.currToken[_tokenize.FIELDS.START_POS]);\n }\n\n var len = attr.length;\n var node = {\n source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]),\n sourceIndex: startingToken[_tokenize.FIELDS.START_POS]\n };\n\n if (len === 1 && !~[tokens.word].indexOf(attr[0][_tokenize.FIELDS.TYPE])) {\n return this.expected('attribute', attr[0][_tokenize.FIELDS.START_POS]);\n }\n\n var pos = 0;\n var spaceBefore = '';\n var commentBefore = '';\n var lastAdded = null;\n var spaceAfterMeaningfulToken = false;\n\n while (pos < len) {\n var token = attr[pos];\n var content = this.content(token);\n var next = attr[pos + 1];\n\n switch (token[_tokenize.FIELDS.TYPE]) {\n case tokens.space:\n // if (\n // len === 1 ||\n // pos === 0 && this.content(next) === '|'\n // ) {\n // return this.expected('attribute', token[TOKEN.START_POS], content);\n // }\n spaceAfterMeaningfulToken = true;\n\n if (this.options.lossy) {\n break;\n }\n\n if (lastAdded) {\n (0, _util.ensureObject)(node, 'spaces', lastAdded);\n var prevContent = node.spaces[lastAdded].after || '';\n node.spaces[lastAdded].after = prevContent + content;\n var existingComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || null;\n\n if (existingComment) {\n node.raws.spaces[lastAdded].after = existingComment + content;\n }\n } else {\n spaceBefore = spaceBefore + content;\n commentBefore = commentBefore + content;\n }\n\n break;\n\n case tokens.asterisk:\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n } else if ((!node.namespace || lastAdded === \"namespace\" && !spaceAfterMeaningfulToken) && next) {\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'attribute');\n node.spaces.attribute.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');\n node.raws.spaces.attribute.before = spaceBefore;\n commentBefore = '';\n }\n\n node.namespace = (node.namespace || \"\") + content;\n var rawValue = (0, _util.getProp)(node, 'raws', 'namespace') || null;\n\n if (rawValue) {\n node.raws.namespace += content;\n }\n\n lastAdded = 'namespace';\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.dollar:\n if (lastAdded === \"value\") {\n var oldRawValue = (0, _util.getProp)(node, 'raws', 'value');\n node.value += \"$\";\n\n if (oldRawValue) {\n node.raws.value = oldRawValue + \"$\";\n }\n\n break;\n }\n\n // Falls through\n\n case tokens.caret:\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.combinator:\n if (content === '~' && next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n }\n\n if (content !== '|') {\n spaceAfterMeaningfulToken = false;\n break;\n }\n\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n } else if (!node.namespace && !node.attribute) {\n node.namespace = true;\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.word:\n if (next && this.content(next) === '|' && attr[pos + 2] && attr[pos + 2][_tokenize.FIELDS.TYPE] !== tokens.equals && // this look-ahead probably fails with comment nodes involved.\n !node.operator && !node.namespace) {\n node.namespace = content;\n lastAdded = 'namespace';\n } else if (!node.attribute || lastAdded === \"attribute\" && !spaceAfterMeaningfulToken) {\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'attribute');\n node.spaces.attribute.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');\n node.raws.spaces.attribute.before = commentBefore;\n commentBefore = '';\n }\n\n node.attribute = (node.attribute || \"\") + content;\n\n var _rawValue = (0, _util.getProp)(node, 'raws', 'attribute') || null;\n\n if (_rawValue) {\n node.raws.attribute += content;\n }\n\n lastAdded = 'attribute';\n } else if (!node.value && node.value !== \"\" || lastAdded === \"value\" && !spaceAfterMeaningfulToken) {\n var _unescaped = (0, _util.unesc)(content);\n\n var _oldRawValue = (0, _util.getProp)(node, 'raws', 'value') || '';\n\n var oldValue = node.value || '';\n node.value = oldValue + _unescaped;\n node.quoteMark = null;\n\n if (_unescaped !== content || _oldRawValue) {\n (0, _util.ensureObject)(node, 'raws');\n node.raws.value = (_oldRawValue || oldValue) + content;\n }\n\n lastAdded = 'value';\n } else {\n var insensitive = content === 'i' || content === \"I\";\n\n if ((node.value || node.value === '') && (node.quoteMark || spaceAfterMeaningfulToken)) {\n node.insensitive = insensitive;\n\n if (!insensitive || content === \"I\") {\n (0, _util.ensureObject)(node, 'raws');\n node.raws.insensitiveFlag = content;\n }\n\n lastAdded = 'insensitive';\n\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'insensitive');\n node.spaces.insensitive.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'insensitive');\n node.raws.spaces.insensitive.before = commentBefore;\n commentBefore = '';\n }\n } else if (node.value || node.value === '') {\n lastAdded = 'value';\n node.value += content;\n\n if (node.raws.value) {\n node.raws.value += content;\n }\n }\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.str:\n if (!node.attribute || !node.operator) {\n return this.error(\"Expected an attribute followed by an operator preceding the string.\", {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n var _unescapeValue = (0, _attribute.unescapeValue)(content),\n unescaped = _unescapeValue.unescaped,\n quoteMark = _unescapeValue.quoteMark;\n\n node.value = unescaped;\n node.quoteMark = quoteMark;\n lastAdded = 'value';\n (0, _util.ensureObject)(node, 'raws');\n node.raws.value = content;\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.equals:\n if (!node.attribute) {\n return this.expected('attribute', token[_tokenize.FIELDS.START_POS], content);\n }\n\n if (node.value) {\n return this.error('Unexpected \"=\" found; an operator was already defined.', {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n node.operator = node.operator ? node.operator + content : content;\n lastAdded = 'operator';\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.comment:\n if (lastAdded) {\n if (spaceAfterMeaningfulToken || next && next[_tokenize.FIELDS.TYPE] === tokens.space || lastAdded === 'insensitive') {\n var lastComment = (0, _util.getProp)(node, 'spaces', lastAdded, 'after') || '';\n var rawLastComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || lastComment;\n (0, _util.ensureObject)(node, 'raws', 'spaces', lastAdded);\n node.raws.spaces[lastAdded].after = rawLastComment + content;\n } else {\n var lastValue = node[lastAdded] || '';\n var rawLastValue = (0, _util.getProp)(node, 'raws', lastAdded) || lastValue;\n (0, _util.ensureObject)(node, 'raws');\n node.raws[lastAdded] = rawLastValue + content;\n }\n } else {\n commentBefore = commentBefore + content;\n }\n\n break;\n\n default:\n return this.error(\"Unexpected \\\"\" + content + \"\\\" found.\", {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n pos++;\n }\n\n unescapeProp(node, \"attribute\");\n unescapeProp(node, \"namespace\");\n this.newNode(new _attribute[\"default\"](node));\n this.position++;\n }\n /**\n * return a node containing meaningless garbage up to (but not including) the specified token position.\n * if the token position is negative, all remaining tokens are consumed.\n *\n * This returns an array containing a single string node if all whitespace,\n * otherwise an array of comment nodes with space before and after.\n *\n * These tokens are not added to the current selector, the caller can add them or use them to amend\n * a previous node's space metadata.\n *\n * In lossy mode, this returns only comments.\n */\n ;\n\n _proto.parseWhitespaceEquivalentTokens = function parseWhitespaceEquivalentTokens(stopPosition) {\n if (stopPosition < 0) {\n stopPosition = this.tokens.length;\n }\n\n var startPosition = this.position;\n var nodes = [];\n var space = \"\";\n var lastComment = undefined;\n\n do {\n if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {\n if (!this.options.lossy) {\n space += this.content();\n }\n } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.comment) {\n var spaces = {};\n\n if (space) {\n spaces.before = space;\n space = \"\";\n }\n\n lastComment = new _comment[\"default\"]({\n value: this.content(),\n source: getTokenSource(this.currToken),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],\n spaces: spaces\n });\n nodes.push(lastComment);\n }\n } while (++this.position < stopPosition);\n\n if (space) {\n if (lastComment) {\n lastComment.spaces.after = space;\n } else if (!this.options.lossy) {\n var firstToken = this.tokens[startPosition];\n var lastToken = this.tokens[this.position - 1];\n nodes.push(new _string[\"default\"]({\n value: '',\n source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]),\n sourceIndex: firstToken[_tokenize.FIELDS.START_POS],\n spaces: {\n before: space,\n after: ''\n }\n }));\n }\n }\n\n return nodes;\n }\n /**\n * \n * @param {*} nodes \n */\n ;\n\n _proto.convertWhitespaceNodesToSpace = function convertWhitespaceNodesToSpace(nodes, requiredSpace) {\n var _this2 = this;\n\n if (requiredSpace === void 0) {\n requiredSpace = false;\n }\n\n var space = \"\";\n var rawSpace = \"\";\n nodes.forEach(function (n) {\n var spaceBefore = _this2.lossySpace(n.spaces.before, requiredSpace);\n\n var rawSpaceBefore = _this2.lossySpace(n.rawSpaceBefore, requiredSpace);\n\n space += spaceBefore + _this2.lossySpace(n.spaces.after, requiredSpace && spaceBefore.length === 0);\n rawSpace += spaceBefore + n.value + _this2.lossySpace(n.rawSpaceAfter, requiredSpace && rawSpaceBefore.length === 0);\n });\n\n if (rawSpace === space) {\n rawSpace = undefined;\n }\n\n var result = {\n space: space,\n rawSpace: rawSpace\n };\n return result;\n };\n\n _proto.isNamedCombinator = function isNamedCombinator(position) {\n if (position === void 0) {\n position = this.position;\n }\n\n return this.tokens[position + 0] && this.tokens[position + 0][_tokenize.FIELDS.TYPE] === tokens.slash && this.tokens[position + 1] && this.tokens[position + 1][_tokenize.FIELDS.TYPE] === tokens.word && this.tokens[position + 2] && this.tokens[position + 2][_tokenize.FIELDS.TYPE] === tokens.slash;\n };\n\n _proto.namedCombinator = function namedCombinator() {\n if (this.isNamedCombinator()) {\n var nameRaw = this.content(this.tokens[this.position + 1]);\n var name = (0, _util.unesc)(nameRaw).toLowerCase();\n var raws = {};\n\n if (name !== nameRaw) {\n raws.value = \"/\" + nameRaw + \"/\";\n }\n\n var node = new _combinator[\"default\"]({\n value: \"/\" + name + \"/\",\n source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],\n raws: raws\n });\n this.position = this.position + 3;\n return node;\n } else {\n this.unexpected();\n }\n };\n\n _proto.combinator = function combinator() {\n var _this3 = this;\n\n if (this.content() === '|') {\n return this.namespace();\n } // We need to decide between a space that's a descendant combinator and meaningless whitespace at the end of a selector.\n\n\n var nextSigTokenPos = this.locateNextMeaningfulToken(this.position);\n\n if (nextSigTokenPos < 0 || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.comma) {\n var nodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);\n\n if (nodes.length > 0) {\n var last = this.current.last;\n\n if (last) {\n var _this$convertWhitespa = this.convertWhitespaceNodesToSpace(nodes),\n space = _this$convertWhitespa.space,\n rawSpace = _this$convertWhitespa.rawSpace;\n\n if (rawSpace !== undefined) {\n last.rawSpaceAfter += rawSpace;\n }\n\n last.spaces.after += space;\n } else {\n nodes.forEach(function (n) {\n return _this3.newNode(n);\n });\n }\n }\n\n return;\n }\n\n var firstToken = this.currToken;\n var spaceOrDescendantSelectorNodes = undefined;\n\n if (nextSigTokenPos > this.position) {\n spaceOrDescendantSelectorNodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);\n }\n\n var node;\n\n if (this.isNamedCombinator()) {\n node = this.namedCombinator();\n } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) {\n node = new _combinator[\"default\"]({\n value: this.content(),\n source: getTokenSource(this.currToken),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS]\n });\n this.position++;\n } else if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {// pass\n } else if (!spaceOrDescendantSelectorNodes) {\n this.unexpected();\n }\n\n if (node) {\n if (spaceOrDescendantSelectorNodes) {\n var _this$convertWhitespa2 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes),\n _space = _this$convertWhitespa2.space,\n _rawSpace = _this$convertWhitespa2.rawSpace;\n\n node.spaces.before = _space;\n node.rawSpaceBefore = _rawSpace;\n }\n } else {\n // descendant combinator\n var _this$convertWhitespa3 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes, true),\n _space2 = _this$convertWhitespa3.space,\n _rawSpace2 = _this$convertWhitespa3.rawSpace;\n\n if (!_rawSpace2) {\n _rawSpace2 = _space2;\n }\n\n var spaces = {};\n var raws = {\n spaces: {}\n };\n\n if (_space2.endsWith(' ') && _rawSpace2.endsWith(' ')) {\n spaces.before = _space2.slice(0, _space2.length - 1);\n raws.spaces.before = _rawSpace2.slice(0, _rawSpace2.length - 1);\n } else if (_space2.startsWith(' ') && _rawSpace2.startsWith(' ')) {\n spaces.after = _space2.slice(1);\n raws.spaces.after = _rawSpace2.slice(1);\n } else {\n raws.value = _rawSpace2;\n }\n\n node = new _combinator[\"default\"]({\n value: ' ',\n source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]),\n sourceIndex: firstToken[_tokenize.FIELDS.START_POS],\n spaces: spaces,\n raws: raws\n });\n }\n\n if (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.space) {\n node.spaces.after = this.optionalSpace(this.content());\n this.position++;\n }\n\n return this.newNode(node);\n };\n\n _proto.comma = function comma() {\n if (this.position === this.tokens.length - 1) {\n this.root.trailingComma = true;\n this.position++;\n return;\n }\n\n this.current._inferEndPosition();\n\n var selector = new _selector[\"default\"]({\n source: {\n start: tokenStart(this.tokens[this.position + 1])\n }\n });\n this.current.parent.append(selector);\n this.current = selector;\n this.position++;\n };\n\n _proto.comment = function comment() {\n var current = this.currToken;\n this.newNode(new _comment[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.error = function error(message, opts) {\n throw this.root.error(message, opts);\n };\n\n _proto.missingBackslash = function missingBackslash() {\n return this.error('Expected a backslash preceding the semicolon.', {\n index: this.currToken[_tokenize.FIELDS.START_POS]\n });\n };\n\n _proto.missingParenthesis = function missingParenthesis() {\n return this.expected('opening parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.missingSquareBracket = function missingSquareBracket() {\n return this.expected('opening square bracket', this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.unexpected = function unexpected() {\n return this.error(\"Unexpected '\" + this.content() + \"'. Escaping special characters with \\\\ may help.\", this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.namespace = function namespace() {\n var before = this.prevToken && this.content(this.prevToken) || true;\n\n if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.word) {\n this.position++;\n return this.word(before);\n } else if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.asterisk) {\n this.position++;\n return this.universal(before);\n }\n };\n\n _proto.nesting = function nesting() {\n if (this.nextToken) {\n var nextContent = this.content(this.nextToken);\n\n if (nextContent === \"|\") {\n this.position++;\n return;\n }\n }\n\n var current = this.currToken;\n this.newNode(new _nesting[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.parentheses = function parentheses() {\n var last = this.current.last;\n var unbalanced = 1;\n this.position++;\n\n if (last && last.type === types.PSEUDO) {\n var selector = new _selector[\"default\"]({\n source: {\n start: tokenStart(this.tokens[this.position - 1])\n }\n });\n var cache = this.current;\n last.append(selector);\n this.current = selector;\n\n while (this.position < this.tokens.length && unbalanced) {\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n unbalanced++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n unbalanced--;\n }\n\n if (unbalanced) {\n this.parse();\n } else {\n this.current.source.end = tokenEnd(this.currToken);\n this.current.parent.source.end = tokenEnd(this.currToken);\n this.position++;\n }\n }\n\n this.current = cache;\n } else {\n // I think this case should be an error. It's used to implement a basic parse of media queries\n // but I don't think it's a good idea.\n var parenStart = this.currToken;\n var parenValue = \"(\";\n var parenEnd;\n\n while (this.position < this.tokens.length && unbalanced) {\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n unbalanced++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n unbalanced--;\n }\n\n parenEnd = this.currToken;\n parenValue += this.parseParenthesisToken(this.currToken);\n this.position++;\n }\n\n if (last) {\n last.appendToPropertyAndEscape(\"value\", parenValue, parenValue);\n } else {\n this.newNode(new _string[\"default\"]({\n value: parenValue,\n source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]),\n sourceIndex: parenStart[_tokenize.FIELDS.START_POS]\n }));\n }\n }\n\n if (unbalanced) {\n return this.expected('closing parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);\n }\n };\n\n _proto.pseudo = function pseudo() {\n var _this4 = this;\n\n var pseudoStr = '';\n var startingToken = this.currToken;\n\n while (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.colon) {\n pseudoStr += this.content();\n this.position++;\n }\n\n if (!this.currToken) {\n return this.expected(['pseudo-class', 'pseudo-element'], this.position - 1);\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.word) {\n this.splitWord(false, function (first, length) {\n pseudoStr += first;\n\n _this4.newNode(new _pseudo[\"default\"]({\n value: pseudoStr,\n source: getTokenSourceSpan(startingToken, _this4.currToken),\n sourceIndex: startingToken[_tokenize.FIELDS.START_POS]\n }));\n\n if (length > 1 && _this4.nextToken && _this4.nextToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n _this4.error('Misplaced parenthesis.', {\n index: _this4.nextToken[_tokenize.FIELDS.START_POS]\n });\n }\n });\n } else {\n return this.expected(['pseudo-class', 'pseudo-element'], this.currToken[_tokenize.FIELDS.START_POS]);\n }\n };\n\n _proto.space = function space() {\n var content = this.content(); // Handle space before and after the selector\n\n if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis || this.current.nodes.every(function (node) {\n return node.type === 'comment';\n })) {\n this.spaces = this.optionalSpace(content);\n this.position++;\n } else if (this.position === this.tokens.length - 1 || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n this.current.last.spaces.after = this.optionalSpace(content);\n this.position++;\n } else {\n this.combinator();\n }\n };\n\n _proto.string = function string() {\n var current = this.currToken;\n this.newNode(new _string[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.universal = function universal(namespace) {\n var nextToken = this.nextToken;\n\n if (nextToken && this.content(nextToken) === '|') {\n this.position++;\n return this.namespace();\n }\n\n var current = this.currToken;\n this.newNode(new _universal[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }), namespace);\n this.position++;\n };\n\n _proto.splitWord = function splitWord(namespace, firstCallback) {\n var _this5 = this;\n\n var nextToken = this.nextToken;\n var word = this.content();\n\n while (nextToken && ~[tokens.dollar, tokens.caret, tokens.equals, tokens.word].indexOf(nextToken[_tokenize.FIELDS.TYPE])) {\n this.position++;\n var current = this.content();\n word += current;\n\n if (current.lastIndexOf('\\\\') === current.length - 1) {\n var next = this.nextToken;\n\n if (next && next[_tokenize.FIELDS.TYPE] === tokens.space) {\n word += this.requiredSpace(this.content(next));\n this.position++;\n }\n }\n\n nextToken = this.nextToken;\n }\n\n var hasClass = indexesOf(word, '.').filter(function (i) {\n // Allow escaped dot within class name\n var escapedDot = word[i - 1] === '\\\\'; // Allow decimal numbers percent in @keyframes\n\n var isKeyframesPercent = /^\\d+\\.\\d+%$/.test(word);\n return !escapedDot && !isKeyframesPercent;\n });\n var hasId = indexesOf(word, '#').filter(function (i) {\n return word[i - 1] !== '\\\\';\n }); // Eliminate Sass interpolations from the list of id indexes\n\n var interpolations = indexesOf(word, '#{');\n\n if (interpolations.length) {\n hasId = hasId.filter(function (hashIndex) {\n return !~interpolations.indexOf(hashIndex);\n });\n }\n\n var indices = (0, _sortAscending[\"default\"])(uniqs([0].concat(hasClass, hasId)));\n indices.forEach(function (ind, i) {\n var index = indices[i + 1] || word.length;\n var value = word.slice(ind, index);\n\n if (i === 0 && firstCallback) {\n return firstCallback.call(_this5, value, indices.length);\n }\n\n var node;\n var current = _this5.currToken;\n var sourceIndex = current[_tokenize.FIELDS.START_POS] + indices[i];\n var source = getSource(current[1], current[2] + ind, current[3], current[2] + (index - 1));\n\n if (~hasClass.indexOf(ind)) {\n var classNameOpts = {\n value: value.slice(1),\n source: source,\n sourceIndex: sourceIndex\n };\n node = new _className[\"default\"](unescapeProp(classNameOpts, \"value\"));\n } else if (~hasId.indexOf(ind)) {\n var idOpts = {\n value: value.slice(1),\n source: source,\n sourceIndex: sourceIndex\n };\n node = new _id[\"default\"](unescapeProp(idOpts, \"value\"));\n } else {\n var tagOpts = {\n value: value,\n source: source,\n sourceIndex: sourceIndex\n };\n unescapeProp(tagOpts, \"value\");\n node = new _tag[\"default\"](tagOpts);\n }\n\n _this5.newNode(node, namespace); // Ensure that the namespace is used only once\n\n\n namespace = null;\n });\n this.position++;\n };\n\n _proto.word = function word(namespace) {\n var nextToken = this.nextToken;\n\n if (nextToken && this.content(nextToken) === '|') {\n this.position++;\n return this.namespace();\n }\n\n return this.splitWord(namespace);\n };\n\n _proto.loop = function loop() {\n while (this.position < this.tokens.length) {\n this.parse(true);\n }\n\n this.current._inferEndPosition();\n\n return this.root;\n };\n\n _proto.parse = function parse(throwOnParenthesis) {\n switch (this.currToken[_tokenize.FIELDS.TYPE]) {\n case tokens.space:\n this.space();\n break;\n\n case tokens.comment:\n this.comment();\n break;\n\n case tokens.openParenthesis:\n this.parentheses();\n break;\n\n case tokens.closeParenthesis:\n if (throwOnParenthesis) {\n this.missingParenthesis();\n }\n\n break;\n\n case tokens.openSquare:\n this.attribute();\n break;\n\n case tokens.dollar:\n case tokens.caret:\n case tokens.equals:\n case tokens.word:\n this.word();\n break;\n\n case tokens.colon:\n this.pseudo();\n break;\n\n case tokens.comma:\n this.comma();\n break;\n\n case tokens.asterisk:\n this.universal();\n break;\n\n case tokens.ampersand:\n this.nesting();\n break;\n\n case tokens.slash:\n case tokens.combinator:\n this.combinator();\n break;\n\n case tokens.str:\n this.string();\n break;\n // These cases throw; no break needed.\n\n case tokens.closeSquare:\n this.missingSquareBracket();\n\n case tokens.semicolon:\n this.missingBackslash();\n\n default:\n this.unexpected();\n }\n }\n /**\n * Helpers\n */\n ;\n\n _proto.expected = function expected(description, index, found) {\n if (Array.isArray(description)) {\n var last = description.pop();\n description = description.join(', ') + \" or \" + last;\n }\n\n var an = /^[aeiou]/.test(description[0]) ? 'an' : 'a';\n\n if (!found) {\n return this.error(\"Expected \" + an + \" \" + description + \".\", {\n index: index\n });\n }\n\n return this.error(\"Expected \" + an + \" \" + description + \", found \\\"\" + found + \"\\\" instead.\", {\n index: index\n });\n };\n\n _proto.requiredSpace = function requiredSpace(space) {\n return this.options.lossy ? ' ' : space;\n };\n\n _proto.optionalSpace = function optionalSpace(space) {\n return this.options.lossy ? '' : space;\n };\n\n _proto.lossySpace = function lossySpace(space, required) {\n if (this.options.lossy) {\n return required ? ' ' : '';\n } else {\n return space;\n }\n };\n\n _proto.parseParenthesisToken = function parseParenthesisToken(token) {\n var content = this.content(token);\n\n if (token[_tokenize.FIELDS.TYPE] === tokens.space) {\n return this.requiredSpace(content);\n } else {\n return content;\n }\n };\n\n _proto.newNode = function newNode(node, namespace) {\n if (namespace) {\n if (/^ +$/.test(namespace)) {\n if (!this.options.lossy) {\n this.spaces = (this.spaces || '') + namespace;\n }\n\n namespace = true;\n }\n\n node.namespace = namespace;\n unescapeProp(node, \"namespace\");\n }\n\n if (this.spaces) {\n node.spaces.before = this.spaces;\n this.spaces = '';\n }\n\n return this.current.append(node);\n };\n\n _proto.content = function content(token) {\n if (token === void 0) {\n token = this.currToken;\n }\n\n return this.css.slice(token[_tokenize.FIELDS.START_POS], token[_tokenize.FIELDS.END_POS]);\n };\n\n /**\n * returns the index of the next non-whitespace, non-comment token.\n * returns -1 if no meaningful token is found.\n */\n _proto.locateNextMeaningfulToken = function locateNextMeaningfulToken(startPosition) {\n if (startPosition === void 0) {\n startPosition = this.position + 1;\n }\n\n var searchPosition = startPosition;\n\n while (searchPosition < this.tokens.length) {\n if (WHITESPACE_EQUIV_TOKENS[this.tokens[searchPosition][_tokenize.FIELDS.TYPE]]) {\n searchPosition++;\n continue;\n } else {\n return searchPosition;\n }\n }\n\n return -1;\n };\n\n _createClass(Parser, [{\n key: \"currToken\",\n get: function get() {\n return this.tokens[this.position];\n }\n }, {\n key: \"nextToken\",\n get: function get() {\n return this.tokens[this.position + 1];\n }\n }, {\n key: \"prevToken\",\n get: function get() {\n return this.tokens[this.position - 1];\n }\n }]);\n\n return Parser;\n}();\n\nexports[\"default\"] = Parser;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _parser = _interopRequireDefault(require(\"./parser\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Processor = /*#__PURE__*/function () {\n function Processor(func, options) {\n this.func = func || function noop() {};\n\n this.funcRes = null;\n this.options = options;\n }\n\n var _proto = Processor.prototype;\n\n _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var merged = Object.assign({}, this.options, options);\n\n if (merged.updateSelector === false) {\n return false;\n } else {\n return typeof rule !== \"string\";\n }\n };\n\n _proto._isLossy = function _isLossy(options) {\n if (options === void 0) {\n options = {};\n }\n\n var merged = Object.assign({}, this.options, options);\n\n if (merged.lossless === false) {\n return true;\n } else {\n return false;\n }\n };\n\n _proto._root = function _root(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var parser = new _parser[\"default\"](rule, this._parseOptions(options));\n return parser.root;\n };\n\n _proto._parseOptions = function _parseOptions(options) {\n return {\n lossy: this._isLossy(options)\n };\n };\n\n _proto._run = function _run(rule, options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n return new Promise(function (resolve, reject) {\n try {\n var root = _this._root(rule, options);\n\n Promise.resolve(_this.func(root)).then(function (transform) {\n var string = undefined;\n\n if (_this._shouldUpdateSelector(rule, options)) {\n string = root.toString();\n rule.selector = string;\n }\n\n return {\n transform: transform,\n root: root,\n string: string\n };\n }).then(resolve, reject);\n } catch (e) {\n reject(e);\n return;\n }\n });\n };\n\n _proto._runSync = function _runSync(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var root = this._root(rule, options);\n\n var transform = this.func(root);\n\n if (transform && typeof transform.then === \"function\") {\n throw new Error(\"Selector processor returned a promise to a synchronous call.\");\n }\n\n var string = undefined;\n\n if (options.updateSelector && typeof rule !== \"string\") {\n string = root.toString();\n rule.selector = string;\n }\n\n return {\n transform: transform,\n root: root,\n string: string\n };\n }\n /**\n * Process rule into a selector AST.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {Promise<parser.Root>} The AST of the selector after processing it.\n */\n ;\n\n _proto.ast = function ast(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.root;\n });\n }\n /**\n * Process rule into a selector AST synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {parser.Root} The AST of the selector after processing it.\n */\n ;\n\n _proto.astSync = function astSync(rule, options) {\n return this._runSync(rule, options).root;\n }\n /**\n * Process a selector into a transformed value asynchronously\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {Promise<any>} The value returned by the processor.\n */\n ;\n\n _proto.transform = function transform(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.transform;\n });\n }\n /**\n * Process a selector into a transformed value synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {any} The value returned by the processor.\n */\n ;\n\n _proto.transformSync = function transformSync(rule, options) {\n return this._runSync(rule, options).transform;\n }\n /**\n * Process a selector into a new selector string asynchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {string} the selector after processing.\n */\n ;\n\n _proto.process = function process(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.string || result.root.toString();\n });\n }\n /**\n * Process a selector into a new selector string synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {string} the selector after processing.\n */\n ;\n\n _proto.processSync = function processSync(rule, options) {\n var result = this._runSync(rule, options);\n\n return result.string || result.root.toString();\n };\n\n return Processor;\n}();\n\nexports[\"default\"] = Processor;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.universal = exports.tag = exports.string = exports.selector = exports.root = exports.pseudo = exports.nesting = exports.id = exports.comment = exports.combinator = exports.className = exports.attribute = void 0;\n\nvar _attribute = _interopRequireDefault(require(\"./attribute\"));\n\nvar _className = _interopRequireDefault(require(\"./className\"));\n\nvar _combinator = _interopRequireDefault(require(\"./combinator\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _id = _interopRequireDefault(require(\"./id\"));\n\nvar _nesting = _interopRequireDefault(require(\"./nesting\"));\n\nvar _pseudo = _interopRequireDefault(require(\"./pseudo\"));\n\nvar _root = _interopRequireDefault(require(\"./root\"));\n\nvar _selector = _interopRequireDefault(require(\"./selector\"));\n\nvar _string = _interopRequireDefault(require(\"./string\"));\n\nvar _tag = _interopRequireDefault(require(\"./tag\"));\n\nvar _universal = _interopRequireDefault(require(\"./universal\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar attribute = function attribute(opts) {\n return new _attribute[\"default\"](opts);\n};\n\nexports.attribute = attribute;\n\nvar className = function className(opts) {\n return new _className[\"default\"](opts);\n};\n\nexports.className = className;\n\nvar combinator = function combinator(opts) {\n return new _combinator[\"default\"](opts);\n};\n\nexports.combinator = combinator;\n\nvar comment = function comment(opts) {\n return new _comment[\"default\"](opts);\n};\n\nexports.comment = comment;\n\nvar id = function id(opts) {\n return new _id[\"default\"](opts);\n};\n\nexports.id = id;\n\nvar nesting = function nesting(opts) {\n return new _nesting[\"default\"](opts);\n};\n\nexports.nesting = nesting;\n\nvar pseudo = function pseudo(opts) {\n return new _pseudo[\"default\"](opts);\n};\n\nexports.pseudo = pseudo;\n\nvar root = function root(opts) {\n return new _root[\"default\"](opts);\n};\n\nexports.root = root;\n\nvar selector = function selector(opts) {\n return new _selector[\"default\"](opts);\n};\n\nexports.selector = selector;\n\nvar string = function string(opts) {\n return new _string[\"default\"](opts);\n};\n\nexports.string = string;\n\nvar tag = function tag(opts) {\n return new _tag[\"default\"](opts);\n};\n\nexports.tag = tag;\n\nvar universal = function universal(opts) {\n return new _universal[\"default\"](opts);\n};\n\nexports.universal = universal;","\"use strict\";\n\nexports.__esModule = true;\nexports.isNode = isNode;\nexports.isPseudoElement = isPseudoElement;\nexports.isPseudoClass = isPseudoClass;\nexports.isContainer = isContainer;\nexports.isNamespace = isNamespace;\nexports.isUniversal = exports.isTag = exports.isString = exports.isSelector = exports.isRoot = exports.isPseudo = exports.isNesting = exports.isIdentifier = exports.isComment = exports.isCombinator = exports.isClassName = exports.isAttribute = void 0;\n\nvar _types = require(\"./types\");\n\nvar _IS_TYPE;\n\nvar IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types.ATTRIBUTE] = true, _IS_TYPE[_types.CLASS] = true, _IS_TYPE[_types.COMBINATOR] = true, _IS_TYPE[_types.COMMENT] = true, _IS_TYPE[_types.ID] = true, _IS_TYPE[_types.NESTING] = true, _IS_TYPE[_types.PSEUDO] = true, _IS_TYPE[_types.ROOT] = true, _IS_TYPE[_types.SELECTOR] = true, _IS_TYPE[_types.STRING] = true, _IS_TYPE[_types.TAG] = true, _IS_TYPE[_types.UNIVERSAL] = true, _IS_TYPE);\n\nfunction isNode(node) {\n return typeof node === \"object\" && IS_TYPE[node.type];\n}\n\nfunction isNodeType(type, node) {\n return isNode(node) && node.type === type;\n}\n\nvar isAttribute = isNodeType.bind(null, _types.ATTRIBUTE);\nexports.isAttribute = isAttribute;\nvar isClassName = isNodeType.bind(null, _types.CLASS);\nexports.isClassName = isClassName;\nvar isCombinator = isNodeType.bind(null, _types.COMBINATOR);\nexports.isCombinator = isCombinator;\nvar isComment = isNodeType.bind(null, _types.COMMENT);\nexports.isComment = isComment;\nvar isIdentifier = isNodeType.bind(null, _types.ID);\nexports.isIdentifier = isIdentifier;\nvar isNesting = isNodeType.bind(null, _types.NESTING);\nexports.isNesting = isNesting;\nvar isPseudo = isNodeType.bind(null, _types.PSEUDO);\nexports.isPseudo = isPseudo;\nvar isRoot = isNodeType.bind(null, _types.ROOT);\nexports.isRoot = isRoot;\nvar isSelector = isNodeType.bind(null, _types.SELECTOR);\nexports.isSelector = isSelector;\nvar isString = isNodeType.bind(null, _types.STRING);\nexports.isString = isString;\nvar isTag = isNodeType.bind(null, _types.TAG);\nexports.isTag = isTag;\nvar isUniversal = isNodeType.bind(null, _types.UNIVERSAL);\nexports.isUniversal = isUniversal;\n\nfunction isPseudoElement(node) {\n return isPseudo(node) && node.value && (node.value.startsWith(\"::\") || node.value.toLowerCase() === \":before\" || node.value.toLowerCase() === \":after\" || node.value.toLowerCase() === \":first-letter\" || node.value.toLowerCase() === \":first-line\");\n}\n\nfunction isPseudoClass(node) {\n return isPseudo(node) && !isPseudoElement(node);\n}\n\nfunction isContainer(node) {\n return !!(isNode(node) && node.walk);\n}\n\nfunction isNamespace(node) {\n return isAttribute(node) || isTag(node);\n}","\"use strict\";\n\nexports.__esModule = true;\n\nvar _types = require(\"./types\");\n\nObject.keys(_types).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _types[key]) return;\n exports[key] = _types[key];\n});\n\nvar _constructors = require(\"./constructors\");\n\nObject.keys(_constructors).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _constructors[key]) return;\n exports[key] = _constructors[key];\n});\n\nvar _guards = require(\"./guards\");\n\nObject.keys(_guards).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _guards[key]) return;\n exports[key] = _guards[key];\n});","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _processor = _interopRequireDefault(require(\"./processor\"));\n\nvar selectors = _interopRequireWildcard(require(\"./selectors\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar parser = function parser(processor) {\n return new _processor[\"default\"](processor);\n};\n\nObject.assign(parser, selectors);\ndelete parser.__esModule;\nvar _default = parser;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>escapeCommas\n});\nfunction escapeCommas(className) {\n return className.replace(/\\\\,/g, \"\\\\2c \");\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseColor: ()=>parseColor,\n formatColor: ()=>formatColor\n});\nconst _colorName = /*#__PURE__*/ _interopRequireDefault(require(\"color-name\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet HEX = /^#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i;\nlet SHORT_HEX = /^#([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i;\nlet VALUE = /(?:\\d+|\\d*\\.\\d+)%?/;\nlet SEP = /(?:\\s*,\\s*|\\s+)/;\nlet ALPHA_SEP = /\\s*[,/]\\s*/;\nlet CUSTOM_PROPERTY = /var\\(--(?:[^ )]*?)\\)/;\nlet RGB = new RegExp(`^(rgb)a?\\\\(\\\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nlet HSL = new RegExp(`^(hsl)a?\\\\(\\\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nfunction parseColor(value, { loose =false } = {}) {\n var ref, ref1;\n if (typeof value !== \"string\") {\n return null;\n }\n value = value.trim();\n if (value === \"transparent\") {\n return {\n mode: \"rgb\",\n color: [\n \"0\",\n \"0\",\n \"0\"\n ],\n alpha: \"0\"\n };\n }\n if (value in _colorName.default) {\n return {\n mode: \"rgb\",\n color: _colorName.default[value].map((v)=>v.toString())\n };\n }\n let hex = value.replace(SHORT_HEX, (_, r, g, b, a)=>[\n \"#\",\n r,\n r,\n g,\n g,\n b,\n b,\n a ? a + a : \"\"\n ].join(\"\")).match(HEX);\n if (hex !== null) {\n return {\n mode: \"rgb\",\n color: [\n parseInt(hex[1], 16),\n parseInt(hex[2], 16),\n parseInt(hex[3], 16)\n ].map((v)=>v.toString()),\n alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined\n };\n }\n var ref2;\n let match = (ref2 = value.match(RGB)) !== null && ref2 !== void 0 ? ref2 : value.match(HSL);\n if (match === null) {\n return null;\n }\n let color = [\n match[2],\n match[3],\n match[4]\n ].filter(Boolean).map((v)=>v.toString());\n if (!loose && color.length !== 3) {\n return null;\n }\n if (color.length < 3 && !color.some((part)=>/^var\\(.*?\\)$/.test(part))) {\n return null;\n }\n return {\n mode: match[1],\n color,\n alpha: (ref = match[5]) === null || ref === void 0 ? void 0 : (ref1 = ref.toString) === null || ref1 === void 0 ? void 0 : ref1.call(ref)\n };\n}\nfunction formatColor({ mode , color , alpha }) {\n let hasAlpha = alpha !== undefined;\n return `${mode}(${color.join(\" \")}${hasAlpha ? ` / ${alpha}` : \"\"})`;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n withAlphaValue: ()=>withAlphaValue,\n default: ()=>withAlphaVariable\n});\nconst _color = require(\"./color\");\nfunction withAlphaValue(color, alphaValue, defaultValue) {\n if (typeof color === \"function\") {\n return color({\n opacityValue: alphaValue\n });\n }\n let parsed = (0, _color.parseColor)(color, {\n loose: true\n });\n if (parsed === null) {\n return defaultValue;\n }\n return (0, _color.formatColor)({\n ...parsed,\n alpha: alphaValue\n });\n}\nfunction withAlphaVariable({ color , property , variable }) {\n let properties = [].concat(property);\n if (typeof color === \"function\") {\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n color({\n opacityVariable: variable,\n opacityValue: `var(${variable})`\n })\n ];\n }))\n };\n }\n const parsed = (0, _color.parseColor)(color);\n if (parsed === null) {\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n if (parsed.alpha !== undefined) {\n // Has an alpha value, return color as-is\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n (0, _color.formatColor)({\n ...parsed,\n alpha: `var(${variable})`\n })\n ];\n }))\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n pattern: ()=>pattern,\n withoutCapturing: ()=>withoutCapturing,\n any: ()=>any,\n optional: ()=>optional,\n zeroOrMore: ()=>zeroOrMore,\n nestedBrackets: ()=>nestedBrackets,\n escape: ()=>escape\n});\nconst REGEX_SPECIAL = /[\\\\^$.*+?()[\\]{}|]/g;\nconst REGEX_HAS_SPECIAL = RegExp(REGEX_SPECIAL.source);\n/**\n * @param {string|RegExp|Array<string|RegExp>} source\n */ function toSource(source) {\n source = Array.isArray(source) ? source : [\n source\n ];\n source = source.map((item)=>item instanceof RegExp ? item.source : item);\n return source.join(\"\");\n}\nfunction pattern(source) {\n return new RegExp(toSource(source), \"g\");\n}\nfunction withoutCapturing(source) {\n return new RegExp(`(?:${toSource(source)})`, \"g\");\n}\nfunction any(sources) {\n return `(?:${sources.map(toSource).join(\"|\")})`;\n}\nfunction optional(source) {\n return `(?:${toSource(source)})?`;\n}\nfunction zeroOrMore(source) {\n return `(?:${toSource(source)})*`;\n}\nfunction nestedBrackets(open, close, depth = 1) {\n return withoutCapturing([\n escape(open),\n /[^\\s]*/,\n depth === 1 ? `[^${escape(open)}${escape(close)}\\s]*` : any([\n `[^${escape(open)}${escape(close)}\\s]*`,\n nestedBrackets(open, close, depth - 1)\n ]),\n /[^\\s]*/,\n escape(close), \n ]);\n}\nfunction escape(string) {\n return string && REGEX_HAS_SPECIAL.test(string) ? string.replace(REGEX_SPECIAL, \"\\\\$&\") : string || \"\";\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"splitAtTopLevelOnly\", {\n enumerable: true,\n get: ()=>splitAtTopLevelOnly\n});\nconst _regex = /*#__PURE__*/ _interopRequireWildcard(require(\"../lib/regex\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction* splitAtTopLevelOnly(input, separator) {\n let SPECIALS = new RegExp(`[(){}\\\\[\\\\]${_regex.escape(separator)}]`, \"g\");\n let depth = 0;\n let lastIndex = 0;\n let found = false;\n let separatorIndex = 0;\n let separatorStart = 0;\n let separatorLength = separator.length;\n // Find all paren-like things & character\n // And only split on commas if they're top-level\n for (let match of input.matchAll(SPECIALS)){\n let matchesSeparator = match[0] === separator[separatorIndex];\n let atEndOfSeparator = separatorIndex === separatorLength - 1;\n let matchesFullSeparator = matchesSeparator && atEndOfSeparator;\n if (match[0] === \"(\") depth++;\n if (match[0] === \")\") depth--;\n if (match[0] === \"[\") depth++;\n if (match[0] === \"]\") depth--;\n if (match[0] === \"{\") depth++;\n if (match[0] === \"}\") depth--;\n if (matchesSeparator && depth === 0) {\n if (separatorStart === 0) {\n separatorStart = match.index;\n }\n separatorIndex++;\n }\n if (matchesFullSeparator && depth === 0) {\n found = true;\n yield input.substring(lastIndex, separatorStart);\n lastIndex = separatorStart + separatorLength;\n }\n if (separatorIndex === separatorLength) {\n separatorIndex = 0;\n separatorStart = 0;\n }\n }\n // Provide the last segment of the string if available\n // Otherwise the whole string since no `char`s were found\n // This mirrors the behavior of string.split()\n if (found) {\n yield input.substring(lastIndex);\n } else {\n yield input;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseBoxShadowValue: ()=>parseBoxShadowValue,\n formatBoxShadowValue: ()=>formatBoxShadowValue\n});\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet KEYWORDS = new Set([\n \"inset\",\n \"inherit\",\n \"initial\",\n \"revert\",\n \"unset\"\n]);\nlet SPACE = /\\ +(?![^(]*\\))/g // Similar to the one above, but with spaces instead.\n;\nlet LENGTH = /^-?(\\d+|\\.\\d+)(.*?)$/g;\nfunction parseBoxShadowValue(input) {\n let shadows = Array.from((0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, \",\"));\n return shadows.map((shadow)=>{\n let value = shadow.trim();\n let result = {\n raw: value\n };\n let parts = value.split(SPACE);\n let seen = new Set();\n for (let part of parts){\n // Reset index, since the regex is stateful.\n LENGTH.lastIndex = 0;\n // Keyword\n if (!seen.has(\"KEYWORD\") && KEYWORDS.has(part)) {\n result.keyword = part;\n seen.add(\"KEYWORD\");\n } else if (LENGTH.test(part)) {\n if (!seen.has(\"X\")) {\n result.x = part;\n seen.add(\"X\");\n } else if (!seen.has(\"Y\")) {\n result.y = part;\n seen.add(\"Y\");\n } else if (!seen.has(\"BLUR\")) {\n result.blur = part;\n seen.add(\"BLUR\");\n } else if (!seen.has(\"SPREAD\")) {\n result.spread = part;\n seen.add(\"SPREAD\");\n }\n } else {\n if (!result.color) {\n result.color = part;\n } else {\n if (!result.unknown) result.unknown = [];\n result.unknown.push(part);\n }\n }\n }\n // Check if valid\n result.valid = result.x !== undefined && result.y !== undefined;\n return result;\n });\n}\nfunction formatBoxShadowValue(shadows) {\n return shadows.map((shadow)=>{\n if (!shadow.valid) {\n return shadow.raw;\n }\n return [\n shadow.keyword,\n shadow.x,\n shadow.y,\n shadow.blur,\n shadow.spread,\n shadow.color\n ].filter(Boolean).join(\" \");\n }).join(\", \");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n normalize: ()=>normalize,\n url: ()=>url,\n number: ()=>number,\n percentage: ()=>percentage,\n length: ()=>length,\n lineWidth: ()=>lineWidth,\n shadow: ()=>shadow,\n color: ()=>color,\n image: ()=>image,\n gradient: ()=>gradient,\n position: ()=>position,\n familyName: ()=>familyName,\n genericName: ()=>genericName,\n absoluteSize: ()=>absoluteSize,\n relativeSize: ()=>relativeSize\n});\nconst _color = require(\"./color\");\nconst _parseBoxShadowValue = require(\"./parseBoxShadowValue\");\nlet cssFunctions = [\n \"min\",\n \"max\",\n \"clamp\",\n \"calc\"\n];\n// Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Types\nlet COMMA = /,(?![^(]*\\))/g // Comma separator that is not located between brackets. E.g.: `cubiz-bezier(a, b, c)` these don't count.\n;\nlet UNDERSCORE = /_(?![^(]*\\))/g // Underscore separator that is not located between brackets. E.g.: `rgba(255,_255,_255)_black` these don't count.\n;\nfunction normalize(value, isRoot = true) {\n // Keep raw strings if it starts with `url(`\n if (value.includes(\"url(\")) {\n return value.split(/(url\\(.*?\\))/g).filter(Boolean).map((part)=>{\n if (/^url\\(.*?\\)$/.test(part)) {\n return part;\n }\n return normalize(part, false);\n }).join(\"\");\n }\n // Convert `_` to ` `, except for escaped underscores `\\_`\n value = value.replace(/([^\\\\])_+/g, (fullMatch, characterBefore)=>characterBefore + \" \".repeat(fullMatch.length - 1)).replace(/^_/g, \" \").replace(/\\\\_/g, \"_\");\n // Remove leftover whitespace\n if (isRoot) {\n value = value.trim();\n }\n // Add spaces around operators inside math functions like calc() that do not follow an operator\n // or '('.\n value = value.replace(/(calc|min|max|clamp)\\(.+\\)/g, (match)=>{\n return match.replace(/(-?\\d*\\.?\\d(?!\\b-.+[,)](?![^+\\-/*])\\D)(?:%|[a-z]+)?|\\))([+\\-/*])/g, \"$1 $2 \");\n });\n return value;\n}\nfunction url(value) {\n return value.startsWith(\"url(\");\n}\nfunction number(value) {\n return !isNaN(Number(value)) || cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.+?`).test(value));\n}\nfunction percentage(value) {\n return value.split(UNDERSCORE).every((part)=>{\n return /%$/g.test(part) || cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.+?%`).test(part));\n });\n}\nlet lengthUnits = [\n \"cm\",\n \"mm\",\n \"Q\",\n \"in\",\n \"pc\",\n \"pt\",\n \"px\",\n \"em\",\n \"ex\",\n \"ch\",\n \"rem\",\n \"lh\",\n \"vw\",\n \"vh\",\n \"vmin\",\n \"vmax\", \n];\nlet lengthUnitsPattern = `(?:${lengthUnits.join(\"|\")})`;\nfunction length(value) {\n return value.split(UNDERSCORE).every((part)=>{\n return part === \"0\" || new RegExp(`${lengthUnitsPattern}$`).test(part) || cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.+?${lengthUnitsPattern}`).test(part));\n });\n}\nlet lineWidths = new Set([\n \"thin\",\n \"medium\",\n \"thick\"\n]);\nfunction lineWidth(value) {\n return lineWidths.has(value);\n}\nfunction shadow(value) {\n let parsedShadows = (0, _parseBoxShadowValue.parseBoxShadowValue)(normalize(value));\n for (let parsedShadow of parsedShadows){\n if (!parsedShadow.valid) {\n return false;\n }\n }\n return true;\n}\nfunction color(value) {\n let colors = 0;\n let result = value.split(UNDERSCORE).every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if ((0, _color.parseColor)(part, {\n loose: true\n }) !== null) return colors++, true;\n return false;\n });\n if (!result) return false;\n return colors > 0;\n}\nfunction image(value) {\n let images = 0;\n let result = value.split(COMMA).every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (url(part) || gradient(part) || [\n \"element(\",\n \"image(\",\n \"cross-fade(\",\n \"image-set(\"\n ].some((fn)=>part.startsWith(fn))) {\n images++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return images > 0;\n}\nlet gradientTypes = new Set([\n \"linear-gradient\",\n \"radial-gradient\",\n \"repeating-linear-gradient\",\n \"repeating-radial-gradient\",\n \"conic-gradient\", \n]);\nfunction gradient(value) {\n value = normalize(value);\n for (let type of gradientTypes){\n if (value.startsWith(`${type}(`)) {\n return true;\n }\n }\n return false;\n}\nlet validPositions = new Set([\n \"center\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n]);\nfunction position(value) {\n let positions = 0;\n let result = value.split(UNDERSCORE).every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (validPositions.has(part) || length(part) || percentage(part)) {\n positions++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return positions > 0;\n}\nfunction familyName(value) {\n let fonts = 0;\n let result = value.split(COMMA).every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n // If it contains spaces, then it should be quoted\n if (part.includes(\" \")) {\n if (!/(['\"])([^\"']+)\\1/g.test(part)) {\n return false;\n }\n }\n // If it starts with a number, it's invalid\n if (/^\\d/g.test(part)) {\n return false;\n }\n fonts++;\n return true;\n });\n if (!result) return false;\n return fonts > 0;\n}\nlet genericNames = new Set([\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\",\n \"ui-serif\",\n \"ui-sans-serif\",\n \"ui-monospace\",\n \"ui-rounded\",\n \"math\",\n \"emoji\",\n \"fangsong\", \n]);\nfunction genericName(value) {\n return genericNames.has(value);\n}\nlet absoluteSizes = new Set([\n \"xx-small\",\n \"x-small\",\n \"small\",\n \"medium\",\n \"large\",\n \"x-large\",\n \"x-large\",\n \"xxx-large\", \n]);\nfunction absoluteSize(value) {\n return absoluteSizes.has(value);\n}\nlet relativeSizes = new Set([\n \"larger\",\n \"smaller\"\n]);\nfunction relativeSize(value) {\n return relativeSizes.has(value);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n updateAllClasses: ()=>updateAllClasses,\n asValue: ()=>asValue,\n parseColorFormat: ()=>parseColorFormat,\n asColor: ()=>asColor,\n asLookupValue: ()=>asLookupValue,\n coerceValue: ()=>coerceValue\n});\nconst _postcssSelectorParser = /*#__PURE__*/ _interopRequireDefault(require(\"postcss-selector-parser\"));\nconst _escapeCommas = /*#__PURE__*/ _interopRequireDefault(require(\"./escapeCommas\"));\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _dataTypes = require(\"./dataTypes\");\nconst _negateValue = /*#__PURE__*/ _interopRequireDefault(require(\"./negateValue\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction updateAllClasses(selectors, updateClass) {\n let parser = (0, _postcssSelectorParser.default)((selectors)=>{\n selectors.walkClasses((sel)=>{\n let updatedClass = updateClass(sel.value);\n sel.value = updatedClass;\n if (sel.raws && sel.raws.value) {\n sel.raws.value = (0, _escapeCommas.default)(sel.raws.value);\n }\n });\n });\n let result = parser.processSync(selectors);\n return result;\n}\nfunction resolveArbitraryValue(modifier, validate) {\n if (!isArbitraryValue(modifier)) {\n return undefined;\n }\n let value = modifier.slice(1, -1);\n if (!validate(value)) {\n return undefined;\n }\n return (0, _dataTypes.normalize)(value);\n}\nfunction asNegativeValue(modifier, lookup = {}, validate) {\n let positiveValue = lookup[modifier];\n if (positiveValue !== undefined) {\n return (0, _negateValue.default)(positiveValue);\n }\n if (isArbitraryValue(modifier)) {\n let resolved = resolveArbitraryValue(modifier, validate);\n if (resolved === undefined) {\n return undefined;\n }\n return (0, _negateValue.default)(resolved);\n }\n}\nfunction asValue(modifier, options = {}, { validate =()=>true } = {}) {\n var ref;\n let value = (ref = options.values) === null || ref === void 0 ? void 0 : ref[modifier];\n if (value !== undefined) {\n return value;\n }\n if (options.supportsNegativeValues && modifier.startsWith(\"-\")) {\n return asNegativeValue(modifier.slice(1), options.values, validate);\n }\n return resolveArbitraryValue(modifier, validate);\n}\nfunction isArbitraryValue(input) {\n return input.startsWith(\"[\") && input.endsWith(\"]\");\n}\nfunction splitAlpha(modifier) {\n let slashIdx = modifier.lastIndexOf(\"/\");\n if (slashIdx === -1 || slashIdx === modifier.length - 1) {\n return [\n modifier\n ];\n }\n return [\n modifier.slice(0, slashIdx),\n modifier.slice(slashIdx + 1)\n ];\n}\nfunction parseColorFormat(value) {\n if (typeof value === \"string\" && value.includes(\"<alpha-value>\")) {\n let oldValue = value;\n return ({ opacityValue =1 })=>oldValue.replace(\"<alpha-value>\", opacityValue);\n }\n return value;\n}\nfunction asColor(modifier, options = {}, { tailwindConfig ={} } = {}) {\n var ref;\n if (((ref = options.values) === null || ref === void 0 ? void 0 : ref[modifier]) !== undefined) {\n var ref1;\n return parseColorFormat((ref1 = options.values) === null || ref1 === void 0 ? void 0 : ref1[modifier]);\n }\n let [color, alpha] = splitAlpha(modifier);\n if (alpha !== undefined) {\n var ref2, ref3, ref4;\n var ref5;\n let normalizedColor = (ref5 = (ref2 = options.values) === null || ref2 === void 0 ? void 0 : ref2[color]) !== null && ref5 !== void 0 ? ref5 : isArbitraryValue(color) ? color.slice(1, -1) : undefined;\n if (normalizedColor === undefined) {\n return undefined;\n }\n normalizedColor = parseColorFormat(normalizedColor);\n if (isArbitraryValue(alpha)) {\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, alpha.slice(1, -1));\n }\n if (((ref3 = tailwindConfig.theme) === null || ref3 === void 0 ? void 0 : (ref4 = ref3.opacity) === null || ref4 === void 0 ? void 0 : ref4[alpha]) === undefined) {\n return undefined;\n }\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, tailwindConfig.theme.opacity[alpha]);\n }\n return asValue(modifier, options, {\n validate: _dataTypes.color\n });\n}\nfunction asLookupValue(modifier, options = {}) {\n var ref;\n return (ref = options.values) === null || ref === void 0 ? void 0 : ref[modifier];\n}\nfunction guess(validate) {\n return (modifier, options)=>{\n return asValue(modifier, options, {\n validate\n });\n };\n}\nlet typeMap = {\n any: asValue,\n color: asColor,\n url: guess(_dataTypes.url),\n image: guess(_dataTypes.image),\n length: guess(_dataTypes.length),\n percentage: guess(_dataTypes.percentage),\n position: guess(_dataTypes.position),\n lookup: asLookupValue,\n \"generic-name\": guess(_dataTypes.genericName),\n \"family-name\": guess(_dataTypes.familyName),\n number: guess(_dataTypes.number),\n \"line-width\": guess(_dataTypes.lineWidth),\n \"absolute-size\": guess(_dataTypes.absoluteSize),\n \"relative-size\": guess(_dataTypes.relativeSize),\n shadow: guess(_dataTypes.shadow)\n};\nlet supportedTypes = Object.keys(typeMap);\nfunction splitAtFirst(input, delim) {\n let idx = input.indexOf(delim);\n if (idx === -1) return [\n undefined,\n input\n ];\n return [\n input.slice(0, idx),\n input.slice(idx + 1)\n ];\n}\nfunction coerceValue(types, modifier, options, tailwindConfig) {\n if (isArbitraryValue(modifier)) {\n let arbitraryValue = modifier.slice(1, -1);\n let [explicitType, value] = splitAtFirst(arbitraryValue, \":\");\n // It could be that this resolves to `url(https` which is not a valid\n // identifier. We currently only support \"simple\" words with dashes or\n // underscores. E.g.: family-name\n if (!/^[\\w-_]+$/g.test(explicitType)) {\n value = arbitraryValue;\n } else if (explicitType !== undefined && !supportedTypes.includes(explicitType)) {\n return [];\n }\n if (value.length > 0 && supportedTypes.includes(explicitType)) {\n return [\n asValue(`[${value}]`, options),\n explicitType\n ];\n }\n }\n // Find first matching type\n for (let type of [].concat(types)){\n let result = typeMap[type](modifier, options, {\n tailwindConfig\n });\n if (result !== undefined) return [\n result,\n type\n ];\n }\n return [];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>toColorValue\n});\nfunction toColorValue(maybeFunction) {\n return typeof maybeFunction === \"function\" ? maybeFunction({}) : maybeFunction;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>resolveConfig\n});\nconst _negateValue = /*#__PURE__*/ _interopRequireDefault(require(\"./negateValue\"));\nconst _corePluginList = /*#__PURE__*/ _interopRequireDefault(require(\"../corePluginList\"));\nconst _configurePlugins = /*#__PURE__*/ _interopRequireDefault(require(\"./configurePlugins\"));\nconst _defaultConfigStub = /*#__PURE__*/ _interopRequireDefault(require(\"../../stubs/defaultConfig.stub\"));\nconst _colors = /*#__PURE__*/ _interopRequireDefault(require(\"../public/colors\"));\nconst _defaults = require(\"./defaults\");\nconst _toPath = require(\"./toPath\");\nconst _normalizeConfig = require(\"./normalizeConfig\");\nconst _isPlainObject = /*#__PURE__*/ _interopRequireDefault(require(\"./isPlainObject\"));\nconst _cloneDeep = require(\"./cloneDeep\");\nconst _pluginUtils = require(\"./pluginUtils\");\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _toColorValue = /*#__PURE__*/ _interopRequireDefault(require(\"./toColorValue\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction isFunction(input) {\n return typeof input === \"function\";\n}\nfunction isObject(input) {\n return typeof input === \"object\" && input !== null;\n}\nfunction mergeWith(target, ...sources) {\n let customizer = sources.pop();\n for (let source of sources){\n for(let k in source){\n let merged = customizer(target[k], source[k]);\n if (merged === undefined) {\n if (isObject(target[k]) && isObject(source[k])) {\n target[k] = mergeWith(target[k], source[k], customizer);\n } else {\n target[k] = source[k];\n }\n } else {\n target[k] = merged;\n }\n }\n }\n return target;\n}\nconst configUtils = {\n colors: _colors.default,\n negative (scale) {\n // TODO: Log that this function isn't really needed anymore?\n return Object.keys(scale).filter((key)=>scale[key] !== \"0\").reduce((negativeScale, key)=>{\n let negativeValue = (0, _negateValue.default)(scale[key]);\n if (negativeValue !== undefined) {\n negativeScale[`-${key}`] = negativeValue;\n }\n return negativeScale;\n }, {});\n },\n breakpoints (screens) {\n return Object.keys(screens).filter((key)=>typeof screens[key] === \"string\").reduce((breakpoints, key)=>({\n ...breakpoints,\n [`screen-${key}`]: screens[key]\n }), {});\n }\n};\nfunction value(valueToResolve, ...args) {\n return isFunction(valueToResolve) ? valueToResolve(...args) : valueToResolve;\n}\nfunction collectExtends(items) {\n return items.reduce((merged, { extend })=>{\n return mergeWith(merged, extend, (mergedValue, extendValue)=>{\n if (mergedValue === undefined) {\n return [\n extendValue\n ];\n }\n if (Array.isArray(mergedValue)) {\n return [\n extendValue,\n ...mergedValue\n ];\n }\n return [\n extendValue,\n mergedValue\n ];\n });\n }, {});\n}\nfunction mergeThemes(themes) {\n return {\n ...themes.reduce((merged, theme)=>(0, _defaults.defaults)(merged, theme), {}),\n // In order to resolve n config objects, we combine all of their `extend` properties\n // into arrays instead of objects so they aren't overridden.\n extend: collectExtends(themes)\n };\n}\nfunction mergeExtensionCustomizer(merged, value) {\n // When we have an array of objects, we do want to merge it\n if (Array.isArray(merged) && isObject(merged[0])) {\n return merged.concat(value);\n }\n // When the incoming value is an array, and the existing config is an object, prepend the existing object\n if (Array.isArray(value) && isObject(value[0]) && isObject(merged)) {\n return [\n merged,\n ...value\n ];\n }\n // Override arrays (for example for font-families, box-shadows, ...)\n if (Array.isArray(value)) {\n return value;\n }\n // Execute default behaviour\n return undefined;\n}\nfunction mergeExtensions({ extend , ...theme }) {\n return mergeWith(theme, extend, (themeValue, extensions)=>{\n // The `extend` property is an array, so we need to check if it contains any functions\n if (!isFunction(themeValue) && !extensions.some(isFunction)) {\n return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer);\n }\n return (resolveThemePath, utils)=>mergeWith({}, ...[\n themeValue,\n ...extensions\n ].map((e)=>value(e, resolveThemePath, utils)), mergeExtensionCustomizer);\n });\n}\n/**\n *\n * @param {string} key\n * @return {Iterable<string[] & {alpha: string | undefined}>}\n */ function* toPaths(key) {\n let path = (0, _toPath.toPath)(key);\n if (path.length === 0) {\n return;\n }\n yield path;\n if (Array.isArray(key)) {\n return;\n }\n let pattern = /^(.*?)\\s*\\/\\s*([^/]+)$/;\n let matches = key.match(pattern);\n if (matches !== null) {\n let [, prefix, alpha] = matches;\n let newPath = (0, _toPath.toPath)(prefix);\n newPath.alpha = alpha;\n yield newPath;\n }\n}\nfunction resolveFunctionKeys(object) {\n // theme('colors.red.500 / 0.5') -> ['colors', 'red', '500 / 0', '5]\n const resolvePath = (key, defaultValue)=>{\n for (const path of toPaths(key)){\n let index = 0;\n let val = object;\n while(val !== undefined && val !== null && index < path.length){\n val = val[path[index++]];\n let shouldResolveAsFn = isFunction(val) && (path.alpha === undefined || index <= path.length - 1);\n val = shouldResolveAsFn ? val(resolvePath, configUtils) : val;\n }\n if (val !== undefined) {\n if (path.alpha !== undefined) {\n let normalized = (0, _pluginUtils.parseColorFormat)(val);\n return (0, _withAlphaVariable.withAlphaValue)(normalized, path.alpha, (0, _toColorValue.default)(normalized));\n }\n if ((0, _isPlainObject.default)(val)) {\n return (0, _cloneDeep.cloneDeep)(val);\n }\n return val;\n }\n }\n return defaultValue;\n };\n Object.assign(resolvePath, {\n theme: resolvePath,\n ...configUtils\n });\n return Object.keys(object).reduce((resolved, key)=>{\n resolved[key] = isFunction(object[key]) ? object[key](resolvePath, configUtils) : object[key];\n return resolved;\n }, {});\n}\nfunction extractPluginConfigs(configs) {\n let allConfigs = [];\n configs.forEach((config)=>{\n allConfigs = [\n ...allConfigs,\n config\n ];\n var ref;\n const plugins = (ref = config === null || config === void 0 ? void 0 : config.plugins) !== null && ref !== void 0 ? ref : [];\n if (plugins.length === 0) {\n return;\n }\n plugins.forEach((plugin)=>{\n if (plugin.__isOptionsFunction) {\n plugin = plugin();\n }\n var ref;\n allConfigs = [\n ...allConfigs,\n ...extractPluginConfigs([\n (ref = plugin === null || plugin === void 0 ? void 0 : plugin.config) !== null && ref !== void 0 ? ref : {}\n ])\n ];\n });\n });\n return allConfigs;\n}\nfunction resolveCorePlugins(corePluginConfigs) {\n const result = [\n ...corePluginConfigs\n ].reduceRight((resolved, corePluginConfig)=>{\n if (isFunction(corePluginConfig)) {\n return corePluginConfig({\n corePlugins: resolved\n });\n }\n return (0, _configurePlugins.default)(corePluginConfig, resolved);\n }, _corePluginList.default);\n return result;\n}\nfunction resolvePluginLists(pluginLists) {\n const result = [\n ...pluginLists\n ].reduceRight((resolved, pluginList)=>{\n return [\n ...resolved,\n ...pluginList\n ];\n }, []);\n return result;\n}\nfunction resolveConfig(configs) {\n let allConfigs = [\n ...extractPluginConfigs(configs),\n {\n prefix: \"\",\n important: false,\n separator: \":\",\n variantOrder: _defaultConfigStub.default.variantOrder\n }, \n ];\n var ref, ref1;\n return (0, _normalizeConfig.normalizeConfig)((0, _defaults.defaults)({\n theme: resolveFunctionKeys(mergeExtensions(mergeThemes(allConfigs.map((t)=>{\n return (ref = t === null || t === void 0 ? void 0 : t.theme) !== null && ref !== void 0 ? ref : {};\n })))),\n corePlugins: resolveCorePlugins(allConfigs.map((c)=>c.corePlugins)),\n plugins: resolvePluginLists(configs.map((c)=>{\n return (ref1 = c === null || c === void 0 ? void 0 : c.plugins) !== null && ref1 !== void 0 ? ref1 : [];\n }))\n }, ...allConfigs));\n}\n","export default {\n yellow: (s) => s,\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n flagEnabled: ()=>flagEnabled,\n issueFlagNotices: ()=>issueFlagNotices,\n default: ()=>_default\n});\nconst _picocolors = /*#__PURE__*/ _interopRequireDefault(require(\"picocolors\"));\nconst _log = /*#__PURE__*/ _interopRequireDefault(require(\"./util/log\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet defaults = {\n optimizeUniversalDefaults: false\n};\nlet featureFlags = {\n future: [\n \"hoverOnlyWhenSupported\",\n \"respectDefaultRingColorOpacity\"\n ],\n experimental: [\n \"optimizeUniversalDefaults\",\n \"matchVariant\" /* , 'variantGrouping' */ \n ]\n};\nfunction flagEnabled(config, flag) {\n if (featureFlags.future.includes(flag)) {\n var ref;\n var ref1, ref2;\n return config.future === \"all\" || ((ref2 = (ref1 = config === null || config === void 0 ? void 0 : (ref = config.future) === null || ref === void 0 ? void 0 : ref[flag]) !== null && ref1 !== void 0 ? ref1 : defaults[flag]) !== null && ref2 !== void 0 ? ref2 : false);\n }\n if (featureFlags.experimental.includes(flag)) {\n var ref3;\n var ref4, ref5;\n return config.experimental === \"all\" || ((ref5 = (ref4 = config === null || config === void 0 ? void 0 : (ref3 = config.experimental) === null || ref3 === void 0 ? void 0 : ref3[flag]) !== null && ref4 !== void 0 ? ref4 : defaults[flag]) !== null && ref5 !== void 0 ? ref5 : false);\n }\n return false;\n}\nfunction experimentalFlagsEnabled(config) {\n if (config.experimental === \"all\") {\n return featureFlags.experimental;\n }\n var ref;\n return Object.keys((ref = config === null || config === void 0 ? void 0 : config.experimental) !== null && ref !== void 0 ? ref : {}).filter((flag)=>featureFlags.experimental.includes(flag) && config.experimental[flag]);\n}\nfunction issueFlagNotices(config) {\n if (process.env.JEST_WORKER_ID !== undefined) {\n return;\n }\n if (experimentalFlagsEnabled(config).length > 0) {\n let changes = experimentalFlagsEnabled(config).map((s)=>_picocolors.default.yellow(s)).join(\", \");\n _log.default.warn(\"experimental-flags-enabled\", [\n `You have enabled experimental features: ${changes}`,\n \"Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time.\", \n ]);\n }\n}\nconst _default = featureFlags;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>getAllConfigs\n});\nconst _defaultConfigStubJs = /*#__PURE__*/ _interopRequireDefault(require(\"../../stubs/defaultConfig.stub.js\"));\nconst _featureFlags = require(\"../featureFlags\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction getAllConfigs(config) {\n var ref;\n const configs = ((ref = config === null || config === void 0 ? void 0 : config.presets) !== null && ref !== void 0 ? ref : [\n _defaultConfigStubJs.default\n ]).slice().reverse().flatMap((preset)=>getAllConfigs(typeof preset === \"function\" ? preset() : preset));\n const features = {\n // Add experimental configs here...\n respectDefaultRingColorOpacity: {\n theme: {\n ringColor: {\n DEFAULT: \"#3b82f67f\"\n }\n }\n }\n };\n const experimentals = Object.keys(features).filter((feature)=>(0, _featureFlags.flagEnabled)(config, feature)).map((feature)=>features[feature]);\n return [\n config,\n ...experimentals,\n ...configs\n ];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>resolveConfig\n});\nconst _resolveConfig = /*#__PURE__*/ _interopRequireDefault(require(\"../util/resolveConfig\"));\nconst _getAllConfigs = /*#__PURE__*/ _interopRequireDefault(require(\"../util/getAllConfigs\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction resolveConfig(...configs) {\n let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]);\n return (0, _resolveConfig.default)([\n ...configs,\n ...defaultConfigs\n ]);\n}\n","let resolveConfig = require('./lib/public/resolve-config')\nmodule.exports = (resolveConfig.__esModule ? resolveConfig : { default: resolveConfig }).default\n","export type {\n FontOptions as Font,\n Weight as FontWeight,\n FontStyle,\n} from './font.js'\nexport type { Locale } from './language.js'\n\nexport * from './satori.js'\nexport { default } from './satori.js'\n","import type { Yoga } from 'yoga-wasm-web'\n\nlet yogaInstance: Yoga\n\nexport function init(yoga: Yoga) {\n yogaInstance = yoga\n}\n\nlet initializationPromise = null\n\nexport default async function getYoga(): Promise<Yoga> {\n if (yogaInstance) return yogaInstance\n\n if (initializationPromise) {\n await initializationPromise\n return yogaInstance\n }\n\n initializationPromise = import('@yoga')\n .then((mod) => mod.getYogaModule())\n .then((yoga) => (yogaInstance = yoga))\n\n await initializationPromise\n initializationPromise = null\n\n return yogaInstance\n}\n","var e=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports);var u=e((k,g)=>{g.exports=[\"em\",\"ex\",\"ch\",\"rem\",\"vh\",\"vw\",\"vmin\",\"vmax\",\"px\",\"mm\",\"cm\",\"in\",\"pt\",\"pc\",\"mozmm\"]});var a=e((z,v)=>{v.exports=[\"deg\",\"grad\",\"rad\",\"turn\"]});var c=e((L,w)=>{w.exports=[\"dpi\",\"dpcm\",\"dppx\"]});var h=e(($,y)=>{y.exports=[\"Hz\",\"kHz\"]});var m=e((j,b)=>{b.exports=[\"s\",\"ms\"]});var q=u(),f=a(),p=c(),l=h(),d=m();function s(t){if(/\\.\\D?$/.test(t))throw new Error(\"The dot should be followed by a number\");if(/^[+-]{2}/.test(t))throw new Error(\"Only one leading +/- is allowed\");if(x(t)>1)throw new Error(\"Only one dot is allowed\");if(/%$/.test(t)){this.type=\"percentage\",this.value=o(t),this.unit=\"%\";return}var r=O(t);if(!r){this.type=\"number\",this.value=o(t);return}this.type=F(r),this.value=o(t.substr(0,t.length-r.length)),this.unit=r}s.prototype.valueOf=function(){return this.value};s.prototype.toString=function(){return this.value+(this.unit||\"\")};function U(t){return new s(t)}function x(t){var r=t.match(/\\./g);return r?r.length:0}function o(t){var r=parseFloat(t);if(isNaN(r))throw new Error(\"Invalid number: \"+t);return r}var E=[].concat(f,l,q,p,d);function O(t){var r=t.match(/\\D+$/),n=r&&r[0];if(n&&E.indexOf(n)===-1)throw new Error(\"Invalid unit: \"+n);return n}var D=Object.assign(i(f,\"angle\"),i(l,\"frequency\"),i(p,\"resolution\"),i(d,\"time\"));function i(t,r){return Object.fromEntries(t.map(n=>[n,r]))}function F(t){return D[t]||\"length\"}export{U as default};\n","import type { ReactNode, ReactElement } from 'react'\n\nimport CssDimension from './vendor/parse-css-dimension/index.js'\nimport LineBreaker from 'linebreak'\n\nexport function isReactElement(node: ReactNode): node is ReactElement {\n const type = typeof node\n if (\n type === 'number' ||\n type === 'bigint' ||\n type === 'string' ||\n type === 'boolean'\n ) {\n return false\n }\n return true\n}\n\nexport function isClass(f: Function) {\n return /^class\\s/.test(f.toString())\n}\n\nexport function hasDangerouslySetInnerHTMLProp(props: any) {\n return 'dangerouslySetInnerHTML' in props\n}\n\nexport function normalizeChildren(children: any) {\n const flattend =\n typeof children === 'undefined' ? [] : [].concat(children).flat(Infinity)\n\n const res = []\n for (let i = 0; i < flattend.length; i++) {\n let value = flattend[i]\n if (\n typeof value === 'undefined' ||\n typeof value === 'boolean' ||\n value === null\n ) {\n continue\n }\n if (typeof value === 'number') {\n value = String(value)\n }\n if (\n typeof value === 'string' &&\n res.length &&\n typeof res[res.length - 1] === 'string'\n ) {\n res[res.length - 1] += value\n } else {\n res.push(value)\n }\n }\n return res\n}\n\nexport function lengthToNumber(\n length: string | number,\n baseFontSize: number,\n baseLength: number,\n inheritedStyle: Record<string, string | number>,\n percentage = false\n): number | undefined {\n if (typeof length === 'number') return length\n\n // Convert em and rem values to number (px), convert rad to deg.\n try {\n length = length.trim()\n\n // Not length: `1px/2px`, `1px 2px`, `1px, 2px`, `calc(1px)`.\n if (/[ /\\(,]/.test(length)) return\n\n // Just a number as string: '100'\n if (length === String(+length)) return +length\n\n const parsed = new CssDimension(length)\n if (parsed.type === 'length') {\n switch (parsed.unit) {\n case 'em':\n return parsed.value * baseFontSize\n case 'rem':\n return parsed.value * 16\n case 'vw':\n return ~~(\n (parsed.value * (inheritedStyle._viewportWidth as number)) /\n 100\n )\n case 'vh':\n return ~~(\n (parsed.value * (inheritedStyle._viewportHeight as number)) /\n 100\n )\n default:\n return parsed.value\n }\n } else if (parsed.type === 'angle') {\n switch (parsed.unit) {\n case 'deg':\n return parsed.value\n case 'rad':\n return (parsed.value * 180) / Math.PI\n default:\n return parsed.value\n }\n } else if (parsed.type === 'percentage') {\n if (percentage) {\n return (parsed.value / 100) * baseLength\n }\n }\n } catch {\n // Not a length unit, silently ignore.\n }\n}\n\n// Multiplies two 2d transform matrices.\nexport function multiply(m1: number[], m2: number[]) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ]\n}\n\nexport function v(\n field: string | number | undefined,\n map: Record<string, any>,\n fallback: any,\n errorIfNotAllowedForProperty?: string\n) {\n let value = map[field]\n if (typeof value === 'undefined') {\n if (errorIfNotAllowedForProperty && typeof field !== 'undefined') {\n throw new Error(\n `Invalid value for CSS property \"${errorIfNotAllowedForProperty}\". Allowed values: ${Object.keys(\n map\n )\n .map((_v) => `\"${_v}\"`)\n .join(' | ')}. Received: \"${field}\".`\n )\n }\n value = fallback\n }\n return value\n}\n\nlet wordSegmenter\nlet graphemeSegmenter\n\n// Implementation modified from\n// https://github.com/niklasvh/html2canvas/blob/6521a487d78172f7179f7c973c1a3af40eb92009/src/css/layout/text.ts\n// https://drafts.csswg.org/css-text/#word-separator\nexport const wordSeparators = [\n 0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091, 0xa,\n].map((point) => String.fromCodePoint(point))\n\nexport function segment(\n content: string,\n granularity: 'word' | 'grapheme',\n locale?: string\n): string[] {\n if (!wordSegmenter || !graphemeSegmenter) {\n if (!(typeof Intl !== 'undefined' && 'Segmenter' in Intl)) {\n // https://caniuse.com/mdn-javascript_builtins_intl_segments\n throw new Error(\n 'Intl.Segmenter does not exist, please use import a polyfill.'\n )\n }\n\n wordSegmenter = new Intl.Segmenter(locale, { granularity: 'word' })\n graphemeSegmenter = new Intl.Segmenter(locale, {\n granularity: 'grapheme',\n })\n }\n\n if (granularity === 'grapheme') {\n return [...graphemeSegmenter.segment(content)].map((seg) => seg.segment)\n } else {\n const segmented = [...wordSegmenter.segment(content)].map(\n (seg) => seg.segment\n ) as string[]\n\n const output = []\n\n let i = 0\n // When there is a non-breaking space, join the previous and next words together.\n // This change causes them to be treated as a single segment.\n while (i < segmented.length) {\n const s = segmented[i]\n\n if (s == '\\u00a0') {\n const previousWord = i === 0 ? '' : output.pop()\n const nextWord = i === segmented.length - 1 ? '' : segmented[i + 1]\n\n output.push(previousWord + '\\u00a0' + nextWord)\n i += 2\n } else {\n output.push(s)\n i++\n }\n }\n\n return output\n }\n}\n\nexport function buildXMLString(\n type: string,\n attrs: Record<string, string | number>,\n children?: string\n) {\n let attrString = ''\n\n for (const [k, _v] of Object.entries(attrs)) {\n if (typeof _v !== 'undefined') {\n attrString += ` ${k}=\"${_v}\"`\n }\n }\n\n if (children) {\n return `<${type}${attrString}>${children}</${type}>`\n }\n return `<${type}${attrString}/>`\n}\n\nexport function createLRU<T>(max = 20) {\n const store: Map<string, T> = new Map()\n function set(key: string, value: T) {\n if (store.size >= max) {\n const keyToDelete = store.keys().next().value\n store.delete(keyToDelete)\n }\n store.set(key, value)\n }\n function get(key: string): T | undefined {\n const hasKey = store.has(key)\n if (!hasKey) return undefined\n\n const entry = store.get(key)!\n store.delete(key)\n store.set(key, entry)\n return entry\n }\n function clear() {\n store.clear()\n }\n\n return {\n set,\n get,\n clear,\n }\n}\n\nexport function parseViewBox(viewBox?: string | null | undefined) {\n return viewBox ? viewBox.split(/[, ]/).filter(Boolean).map(Number) : null\n}\n\nexport function toString(x: unknown): string {\n return Object.prototype.toString.call(x)\n}\n\nexport function isString(x: unknown): x is string {\n return typeof x === 'string'\n}\n\nexport function isNumber(x: unknown): x is number {\n return typeof x === 'number'\n}\n\nexport function isUndefined(x: unknown): x is undefined {\n return toString(x) === '[object Undefined]'\n}\n\nexport function splitByBreakOpportunities(\n content: string,\n wordBreak: string\n): {\n words: string[]\n requiredBreaks: boolean[]\n} {\n if (wordBreak === 'break-all') {\n return { words: segment(content, 'grapheme'), requiredBreaks: [] }\n }\n\n if (wordBreak === 'keep-all') {\n return { words: segment(content, 'word'), requiredBreaks: [] }\n }\n\n const breaker = new LineBreaker(content)\n let last = 0\n let bk = breaker.nextBreak()\n const words = []\n const requiredBreaks = [false]\n\n while (bk) {\n const word = content.slice(last, bk.position)\n words.push(word)\n\n if (bk.required) {\n requiredBreaks.push(true)\n } else {\n requiredBreaks.push(false)\n }\n\n last = bk.position\n bk = breaker.nextBreak()\n }\n\n return { words, requiredBreaks }\n}\n\nexport const midline = (s: string) => {\n return s.replaceAll(\n /([A-Z])/g,\n (_, letter: string) => `-${letter.toLowerCase()}`\n )\n}\n\nexport function splitEffects(\n input: string,\n separator: string | RegExp = ','\n): string[] {\n const result = []\n let l = 0\n let parenCount = 0\n separator = new RegExp(separator)\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '(') {\n parenCount++\n } else if (input[i] === ')') {\n parenCount--\n }\n\n if (parenCount === 0 && separator.test(input[i])) {\n result.push(input.slice(l, i).trim())\n l = i + 1\n }\n }\n\n result.push(input.slice(l).trim())\n\n return result\n}\n","/**\n * This module is used to fetch image from the given URL and resolve it as\n * base64 inlined data URI, so the toolchain can process it.\n * The image data will be cached in a LRU so we don't need to fetch it again\n * in new render processes. But to invalidate the cache the workaround is to\n * add a random query string to the URL.\n * TODO: We might want another option to disable image caching by default.\n */\n\nconst AVIF = 'image/avif'\nconst WEBP = 'image/webp'\nconst APNG = 'image/apng'\nconst PNG = 'image/png'\nconst JPEG = 'image/jpeg'\nconst GIF = 'image/gif'\nconst SVG = 'image/svg+xml'\n\nfunction parseJPEG(buf: ArrayBuffer) {\n const view = new DataView(buf)\n\n // Skip magic bytes\n let offset = 4\n\n const len = view.byteLength\n while (offset < len) {\n const i = view.getUint16(offset, false)\n\n if (i > len) {\n throw new TypeError('Invalid JPEG')\n }\n\n const next = view.getUint8(i + 1 + offset)\n if (next === 0xc0 || next === 0xc1 || next === 0xc2) {\n return [\n view.getUint16(i + 7 + offset, false),\n view.getUint16(i + 5 + offset, false),\n ] as [number, number]\n }\n\n // TODO: Support orientations from EXIF.\n\n offset += i + 2\n }\n\n throw new TypeError('Invalid JPEG')\n}\n\nfunction parseGIF(buf: ArrayBuffer) {\n const view = new Uint8Array(buf.slice(6, 10))\n return [view[0] | (view[1] << 8), view[2] | (view[3] << 8)] as [\n number,\n number\n ]\n}\n\nfunction parsePNG(buf: ArrayBuffer) {\n const v = new DataView(buf)\n return [v.getUint16(18, false), v.getUint16(22, false)] as [number, number]\n}\n\nimport { createLRU, parseViewBox } from '../utils.js'\n\ntype ResolvedImageData = [string, number?, number?] | readonly []\nexport const cache = createLRU<ResolvedImageData>(100)\nconst inflightRequests = new Map<string, Promise<ResolvedImageData>>()\n\nconst ALLOWED_IMAGE_TYPES = [PNG, APNG, JPEG, GIF, SVG]\n\nfunction arrayBufferToBase64(buffer) {\n let binary = ''\n const bytes = new Uint8Array(buffer)\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i])\n }\n return btoa(binary)\n}\n\nfunction base64ToArrayBuffer(base64: string): ArrayBuffer {\n let binaryString = atob(base64)\n let len = binaryString.length\n let bytes = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i)\n }\n return bytes.buffer\n}\n\nfunction parseSvgImageSize(src: string, data: string) {\n // Parse the SVG image size\n const svgTag = data.match(/<svg[^>]*>/)[0]\n\n const viewBoxStr = svgTag.match(/viewBox=['\"](.+)['\"]/)\n let viewBox = viewBoxStr ? parseViewBox(viewBoxStr[1]) : null\n\n const width = svgTag.match(/width=['\"](\\d*\\.\\d+|\\d+)['\"]/)\n const height = svgTag.match(/height=['\"](\\d*\\.\\d+|\\d+)['\"]/)\n\n if (!viewBox && (!width || !height)) {\n throw new Error(`Failed to parse SVG from ${src}: missing \"viewBox\"`)\n }\n\n const size = viewBox ? [viewBox[2], viewBox[3]] : [+width[1], +height[1]]\n\n const ratio = size[0] / size[1]\n const imageSize: [number, number] =\n width && height\n ? [+width[1], +height[1]]\n : width\n ? [+width[1], +width[1] / ratio]\n : height\n ? [+height[1] * ratio, +height[1]]\n : [size[0], size[1]]\n\n return imageSize\n}\n\nfunction arrayBufferToDataUri(data: ArrayBuffer) {\n let imageSize: [number, number]\n\n const imageType = detectContentType(new Uint8Array(data))\n\n switch (imageType) {\n case PNG:\n case APNG:\n imageSize = parsePNG(data)\n break\n case GIF:\n imageSize = parseGIF(data)\n break\n case JPEG:\n imageSize = parseJPEG(data)\n break\n }\n\n if (!ALLOWED_IMAGE_TYPES.includes(imageType)) {\n throw new Error(`Unsupported image type: ${imageType || 'unknown'}`)\n }\n return [\n `data:${imageType};base64,${arrayBufferToBase64(data)}`,\n imageSize,\n ] as const\n}\n\nexport async function resolveImageData(\n src: string | ArrayBuffer\n): Promise<ResolvedImageData> {\n if (!src) {\n throw new Error('Image source is not provided.')\n }\n\n // ArrayBuffer\n if (typeof src === 'object') {\n const [newSrc, imageSize] = arrayBufferToDataUri(src)\n return [newSrc, ...imageSize] as ResolvedImageData\n }\n\n if (\n (src.startsWith('\"') && src.endsWith('\"')) ||\n (src.startsWith(\"'\") && src.endsWith(\"'\"))\n ) {\n src = src.slice(1, -1)\n }\n\n // Throw error if the image source is not an absolute URL in server environment\n // Should be after slicing quotes to avoid throwing error too early\n if (typeof window === 'undefined') {\n if (!src.startsWith('http') && !src.startsWith('data:')) {\n throw new Error(`Image source must be an absolute URL: ${src}`)\n }\n }\n\n if (src.startsWith('data:')) {\n let decodedURI: { imageType; encodingType; dataString }\n\n try {\n decodedURI =\n /data:(?<imageType>[a-z/+]+)(;(charset=)?(?<encodingType>.*))?,(?<dataString>.*)/g.exec(\n src\n ).groups as typeof decodedURI\n } catch (err) {\n console.warn('Image data URI resolved without size:' + src)\n return [src]\n }\n\n const { imageType, encodingType, dataString } = decodedURI\n if (imageType === SVG) {\n const utf8Src =\n encodingType === 'base64'\n ? atob(dataString)\n : decodeURIComponent(dataString.replace(/ /g, '%20'))\n const base64Src =\n encodingType === 'base64'\n ? src\n : `data:image/svg+xml;base64,${btoa(utf8Src)}`\n let imageSize = parseSvgImageSize(src, utf8Src)\n cache.set(src, [base64Src, ...imageSize])\n return [base64Src, ...imageSize]\n } else if (encodingType === 'base64') {\n let imageSize: [number, number]\n const data = base64ToArrayBuffer(dataString)\n switch (imageType) {\n case PNG:\n case APNG:\n imageSize = parsePNG(data)\n break\n case GIF:\n imageSize = parseGIF(data)\n break\n case JPEG:\n imageSize = parseJPEG(data)\n break\n }\n cache.set(src, [src, ...imageSize])\n return [src, ...imageSize]\n } else {\n console.warn('Image data URI resolved without size:' + src)\n cache.set(src, [src])\n return [src]\n }\n }\n\n if (!globalThis.fetch) {\n throw new Error('`fetch` is required to be polyfilled to load images.')\n }\n\n if (inflightRequests.has(src)) {\n return inflightRequests.get(src)\n }\n const cached = cache.get(src)\n if (cached) {\n return cached\n }\n\n const url = src\n const promise = fetch(url)\n .then((res): Promise<string | ArrayBuffer> => {\n const type = res.headers.get('content-type')\n\n // Handle SVG specially\n if (type === 'image/svg+xml' || type === 'application/svg+xml') {\n return res.text()\n }\n\n return res.arrayBuffer()\n })\n .then((data) => {\n if (typeof data === 'string') {\n try {\n const newSrc = `data:image/svg+xml;base64,${btoa(data)}`\n // Parse the SVG image size\n const imageSize = parseSvgImageSize(url, data)\n return [newSrc, ...imageSize] as ResolvedImageData\n } catch (e) {\n throw new Error(`Failed to parse SVG image: ${e.message}`)\n }\n }\n\n const [newSrc, imageSize] = arrayBufferToDataUri(data)\n return [newSrc, ...imageSize] as ResolvedImageData\n })\n .then((result) => {\n cache.set(url, result)\n return result\n })\n .catch((err) => {\n console.error(`Can't load image ${url}: ` + err.message)\n cache.set(url, [])\n return [] as const\n })\n\n inflightRequests.set(url, promise)\n return promise\n}\n\n/**\n * Inspects the first few bytes of a buffer to determine if\n * it matches the \"magic number\" of known file signatures.\n * https://en.wikipedia.org/wiki/List_of_file_signatures\n */\nfunction detectContentType(buffer: Uint8Array) {\n if ([0xff, 0xd8, 0xff].every((b, i) => buffer[i] === b)) {\n return JPEG\n }\n if (\n [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].every(\n (b, i) => buffer[i] === b\n )\n ) {\n if (detectAPNG(buffer)) {\n return APNG\n }\n return PNG\n }\n if ([0x47, 0x49, 0x46, 0x38].every((b, i) => buffer[i] === b)) {\n return GIF\n }\n if (\n [0x52, 0x49, 0x46, 0x46, 0, 0, 0, 0, 0x57, 0x45, 0x42, 0x50].every(\n (b, i) => !b || buffer[i] === b\n )\n ) {\n return WEBP\n }\n if ([0x3c, 0x3f, 0x78, 0x6d, 0x6c].every((b, i) => buffer[i] === b)) {\n return SVG\n }\n if (\n [0, 0, 0, 0, 0x66, 0x74, 0x79, 0x70, 0x61, 0x76, 0x69, 0x66].every(\n (b, i) => !b || buffer[i] === b\n )\n ) {\n return AVIF\n }\n return null\n}\n\nfunction detectAPNG(bytes: Uint8Array) {\n const dv = new DataView(bytes.buffer)\n let type: string,\n length: number,\n off = 8,\n isAPNG = false\n while (!isAPNG && type !== 'IEND' && off < bytes.length) {\n length = dv.getUint32(off)\n const chars = bytes.subarray(off + 4, off + 8)\n type = String.fromCharCode(...chars)\n isAPNG = type === 'acTL'\n off += 12 + length\n }\n return isAPNG\n}\n","import type { ReactElement, ReactNode } from 'react'\nimport { resolveImageData, cache } from './image.js'\nimport { isReactElement, parseViewBox, midline } from '../utils.js'\n\n// Based on\n// https://raw.githubusercontent.com/facebook/react/master/packages/react-dom/src/shared/possibleStandardNames.js\nconst ATTRIBUTE_MAPPING = {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n href: 'href',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n xmlnsXlink: 'xmlns:xlink',\n} as const\n\n// From https://github.com/yoksel/url-encoder/blob/master/src/js/script.js\nconst SVGSymbols = /[\\r\\n%#()<>?[\\\\\\]^`{|}\"']/g\n\nfunction translateSVGNodeToSVGString(\n node: ReactElement | string | (ReactElement | string)[],\n inheritedColor: string\n): string {\n if (!node) return ''\n if (Array.isArray(node)) {\n return node\n .map((n) => translateSVGNodeToSVGString(n, inheritedColor))\n .join('')\n }\n if (typeof node !== 'object') return String(node)\n\n const type = node.type\n if (type === 'text') {\n throw new Error(\n '<text> nodes are not currently supported, please convert them to <path>'\n )\n }\n\n const { children, style, ...restProps } = node.props || {}\n const currentColor = style?.color || inheritedColor\n\n const attrs = `${Object.entries(restProps)\n .map(([k, _v]) => {\n if (typeof _v === 'string' && _v.toLowerCase() === 'currentcolor') {\n _v = currentColor\n }\n\n if (k === 'href' && type === 'image') {\n return ` ${ATTRIBUTE_MAPPING[k] || k}=\"${cache.get(_v as string)[0]}\"`\n }\n return ` ${ATTRIBUTE_MAPPING[k] || k}=\"${_v}\"`\n })\n .join('')}`\n\n const styles = style\n ? ` style=\"${Object.entries(style)\n .map(([k, _v]) => `${midline(k)}:${_v}`)\n .join(';')}\"`\n : ''\n\n return `<${type}${attrs}${styles}>${translateSVGNodeToSVGString(\n children,\n currentColor\n )}</${type}>`\n}\n/**\n * pre process node and resolve absolute link to img data for image element\n * @param node ReactNode\n * @returns\n */\nexport async function preProcessNode(node: ReactNode) {\n const set = new Set<string | Buffer | ArrayBuffer>()\n const walk = (_node: ReactNode) => {\n if (!_node) return\n if (!isReactElement(_node)) return\n\n if (Array.isArray(_node)) {\n _node.forEach((v) => walk(v))\n return\n } else if (typeof _node === 'object') {\n if (_node.type === 'image') {\n if (set.has(_node.props.href)) {\n // do nothing\n } else {\n set.add(_node.props.href)\n }\n } else if (_node.type === 'img') {\n if (set.has(_node.props.src)) {\n // do nothing\n } else {\n set.add(_node.props.src)\n }\n } else {\n // do nothing\n }\n }\n\n Array.isArray(_node.props.children)\n ? _node.props.children.map((c) => walk(c))\n : walk(_node.props.children)\n }\n\n walk(node)\n\n return Promise.all(Array.from(set).map((s) => resolveImageData(s)))\n}\n\nexport async function SVGNodeToImage(\n node: ReactElement,\n inheritedColor: string\n): Promise<string> {\n let {\n viewBox,\n viewbox,\n width,\n height,\n className,\n style,\n children,\n ...restProps\n } = node.props || {}\n\n viewBox ||= viewbox\n\n // We directly assign the xmlns attribute here to deduplicate.\n restProps.xmlns = 'http://www.w3.org/2000/svg'\n\n const currentColor = style?.color || inheritedColor\n const viewBoxSize = parseViewBox(viewBox)\n\n // ratio = height / width\n const ratio = viewBoxSize ? viewBoxSize[3] / viewBoxSize[2] : null\n width = width || (ratio && height) ? height / ratio : null\n height = height || (ratio && width) ? width * ratio : null\n\n restProps.width = width\n restProps.height = height\n if (viewBox) restProps.viewBox = viewBox\n\n return `data:image/svg+xml;utf8,${`<svg ${Object.entries(restProps)\n .map(([k, _v]) => {\n if (typeof _v === 'string' && _v.toLowerCase() === 'currentcolor') {\n _v = currentColor\n }\n return ` ${ATTRIBUTE_MAPPING[k] || k}=\"${_v}\"`\n })\n .join('')}>${translateSVGNodeToSVGString(\n children,\n currentColor\n )}</svg>`.replace(SVGSymbols, encodeURIComponent)}`\n}\n","/**\n * Pre-defined styles for elements. Here we hand pick some from Chromium's\n * default styles:\n * https://chromium.googlesource.com/chromium/blink/+/master/Source/core/css/html.css\n *\n * We try to only include commonly used, styling elements rather than semantic elements.\n */\n\nconst DEFAULT_DISPLAY = 'flex'\n\nexport default {\n // Generic block-level elements\n p: {\n display: DEFAULT_DISPLAY,\n marginTop: '1em',\n marginBottom: '1em',\n },\n div: {\n display: DEFAULT_DISPLAY,\n },\n blockquote: {\n display: DEFAULT_DISPLAY,\n marginTop: '1em',\n marginBottom: '1em',\n marginLeft: 40,\n marginRight: 40,\n },\n center: {\n display: DEFAULT_DISPLAY,\n textAlign: 'center',\n },\n hr: {\n display: DEFAULT_DISPLAY,\n marginTop: '0.5em',\n marginBottom: '0.5em',\n marginLeft: 'auto',\n marginRight: 'auto',\n borderWidth: 1,\n // We don't have `inset`\n borderStyle: 'solid',\n },\n // Heading elements\n h1: {\n display: DEFAULT_DISPLAY,\n fontSize: '2em',\n marginTop: '0.67em',\n marginBottom: '0.67em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h2: {\n display: DEFAULT_DISPLAY,\n fontSize: '1.5em',\n marginTop: '0.83em',\n marginBottom: '0.83em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h3: {\n display: DEFAULT_DISPLAY,\n fontSize: '1.17em',\n marginTop: '1em',\n marginBottom: '1em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h4: {\n display: DEFAULT_DISPLAY,\n marginTop: '1.33em',\n marginBottom: '1.33em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h5: {\n display: DEFAULT_DISPLAY,\n fontSize: '0.83em',\n marginTop: '1.67em',\n marginBottom: '1.67em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h6: {\n display: DEFAULT_DISPLAY,\n fontSize: '0.67em',\n marginTop: '2.33em',\n marginBottom: '2.33em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n // Tables\n // Lists\n // Form elements\n // Inline elements\n u: {\n textDecoration: 'underline',\n },\n strong: {\n fontWeight: 'bold',\n },\n b: {\n fontWeight: 'bold',\n },\n i: {\n fontStyle: 'italic',\n },\n em: {\n fontStyle: 'italic',\n },\n code: {\n fontFamily: 'monospace',\n },\n kbd: {\n fontFamily: 'monospace',\n },\n pre: {\n display: DEFAULT_DISPLAY,\n fontFamily: 'monospace',\n whiteSpace: 'pre',\n marginTop: '1em',\n marginBottom: '1em',\n },\n mark: {\n backgroundColor: 'yellow',\n color: 'black',\n },\n big: {\n fontSize: 'larger',\n },\n small: {\n fontSize: 'smaller',\n },\n s: {\n textDecoration: 'line-through',\n },\n}\n","import { SerializedStyle } from './expand.js'\n\nconst list = new Set([\n 'color',\n 'font',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontWeight',\n 'letterSpacing',\n 'lineHeight',\n 'textAlign',\n 'textTransform',\n 'textShadowOffset',\n 'textShadowColor',\n 'textShadowRadius',\n 'textDecorationLine',\n 'textDecorationStyle',\n 'textDecorationColor',\n 'whiteSpace',\n 'transform',\n 'wordBreak',\n 'tabSize',\n\n // Special case: SVG doesn't apply these to children elements so we need to\n // make it inheritable here.\n 'opacity',\n 'filter',\n\n // Special properties of Satori:\n '_viewportWidth',\n '_viewportHeight',\n '_inheritedClipPathId',\n '_inheritedMaskId',\n '_inheritedBackgroundClipTextPath',\n])\n\nexport default function inheritable(style: SerializedStyle): SerializedStyle {\n const inheritedStyle: SerializedStyle = {}\n for (const prop in style) {\n if (list.has(prop)) {\n inheritedStyle[prop] = style[prop]\n }\n }\n return inheritedStyle\n}\n","/**\n * This module expands the CSS properties to get rid of shorthands, as well as\n * cleaning up some properties.\n */\n\nimport { getPropertyName, getStylesForProperty } from 'css-to-react-native'\nimport { parseElementStyle } from 'css-background-parser'\nimport { parse as parseBoxShadow } from 'css-box-shadow'\nimport cssColorParse from 'parse-css-color'\n\nimport CssDimension from '../vendor/parse-css-dimension/index.js'\nimport parseTransformOrigin, {\n ParsedTransformOrigin,\n} from '../transform-origin.js'\nimport { isString, lengthToNumber, v, splitEffects } from '../utils.js'\nimport { MaskProperty, parseMask } from '../parser/mask.js'\nimport { FontWeight, FontStyle } from '../font.js'\n\n// https://react-cn.github.io/react/tips/style-props-value-px.html\nconst optOutPx = new Set([\n 'flex',\n 'flexGrow',\n 'flexShrink',\n 'flexBasis',\n 'fontWeight',\n 'lineHeight',\n 'opacity',\n 'scale',\n 'scaleX',\n 'scaleY',\n])\nconst keepNumber = new Set(['lineHeight'])\n\nfunction handleFallbackColor(\n prop: string,\n parsed: Record<string, string>,\n rawInput: string,\n currentColor: string\n) {\n if (\n prop === 'textDecoration' &&\n !rawInput.includes(parsed.textDecorationColor)\n ) {\n parsed.textDecorationColor = currentColor\n }\n return parsed\n}\n\nfunction purify(name: string, value?: string | number) {\n const num = Number(value)\n if (isNaN(num)) return value\n if (!optOutPx.has(name)) return num + 'px'\n if (keepNumber.has(name)) return num\n return String(value)\n}\n\nfunction handleSpecialCase(\n name: string,\n value: string | number,\n currentColor: string\n) {\n if (name === 'lineHeight') {\n return { lineHeight: purify(name, value) }\n }\n\n if (name === 'fontFamily') {\n return {\n fontFamily: (value as string).split(',').map((_v) => {\n return _v\n .trim()\n .replace(/(^['\"])|(['\"]$)/g, '')\n .toLocaleLowerCase()\n }),\n }\n }\n\n if (name === 'borderRadius') {\n if (typeof value !== 'string' || !value.includes('/')) {\n // Regular border radius\n return\n }\n // Support the `border-radius: 10px / 20px` syntax.\n const [horizontal, vertical] = value.split('/')\n const vh = getStylesForProperty(name, horizontal, true)\n const vv = getStylesForProperty(name, vertical, true)\n for (const k in vh) {\n vv[k] = purify(name, vh[k]) + ' ' + purify(name, vv[k])\n }\n return vv\n }\n\n if (/^border(Top|Right|Bottom|Left)?$/.test(name)) {\n const resolved = getStylesForProperty('border', value, true)\n\n // Border width should be default to 3px (medium) instead of 1px:\n // https://w3c.github.io/csswg-drafts/css-backgrounds-3/#border-width\n // Although on Chrome it will be displayed as 1.5px but let's stick to the\n // spec.\n if (resolved.borderWidth === 1 && !String(value).includes('1px')) {\n resolved.borderWidth = 3\n }\n\n // A trick to fix `border: 1px solid` to not use `black` but the inherited\n // `color` value. This is necessary because css-to-react-native automatically\n // fallbacks to default color values.\n if (resolved.borderColor === 'black' && !String(value).includes('black')) {\n resolved.borderColor = currentColor\n }\n\n const purified = {\n Width: purify(name + 'Width', resolved.borderWidth),\n Style: v(\n resolved.borderStyle,\n {\n solid: 'solid',\n dashed: 'dashed',\n },\n 'solid',\n name + 'Style'\n ),\n Color: resolved.borderColor,\n }\n\n const full = {}\n for (const k of name === 'border'\n ? ['Top', 'Right', 'Bottom', 'Left']\n : [name.slice(6)]) {\n for (const p in purified) {\n full['border' + k + p] = purified[p]\n }\n }\n return full\n }\n\n if (name === 'boxShadow') {\n if (!value) {\n throw new Error('Invalid `boxShadow` value: \"' + value + '\".')\n }\n return {\n [name]: typeof value === 'string' ? parseBoxShadow(value) : value,\n }\n }\n\n if (name === 'transform') {\n if (typeof value !== 'string') throw new Error('Invalid `transform` value.')\n // To support percentages in transform (which is not supported in RN), we\n // replace them with random symbols and then replace them back after parsing.\n const symbols = {}\n const replaced = value.replace(/(-?[\\d.]+%)/g, (_, _v) => {\n const symbol = ~~(Math.random() * 1e9)\n symbols[symbol] = _v\n return symbol + 'px'\n })\n const parsed = getStylesForProperty('transform', replaced, true)\n for (const t of parsed.transform) {\n for (const k in t) {\n if (symbols[t[k]]) {\n t[k] = symbols[t[k]]\n }\n }\n }\n return parsed\n }\n\n if (name === 'background') {\n value = value.toString().trim()\n if (/^(linear-gradient|radial-gradient|url)\\(/.test(value)) {\n return getStylesForProperty('backgroundImage', value, true)\n }\n return getStylesForProperty('background', value, true)\n }\n\n if (name === 'textShadow') {\n // Handle multiple text shadows if provided.\n value = value.toString().trim()\n const result = {}\n\n const shadows = splitEffects(value)\n\n for (const shadow of shadows) {\n const styles = getStylesForProperty('textShadow', shadow, true)\n for (const k in styles) {\n if (!result[k]) {\n result[k] = [styles[k]]\n } else {\n result[k].push(styles[k])\n }\n }\n }\n\n return result\n }\n\n return\n}\n\nfunction getErrorHint(name: string) {\n if (name === 'transform') {\n return ' Only absolute lengths such as `10px` are supported.'\n }\n return ''\n}\n\nconst RGB_SLASH = /rgb\\((\\d+)\\s+(\\d+)\\s+(\\d+)\\s*\\/\\s*([\\.\\d]+)\\)/\nfunction normalizeColor(value: string | object) {\n if (typeof value === 'string') {\n if (RGB_SLASH.test(value.trim())) {\n // rgb(255 122 127 / .2) -> rgba(255, 122, 127, .2)\n return value.trim().replace(RGB_SLASH, (_, r, g, b, a) => {\n return `rgba(${r}, ${g}, ${b}, ${a})`\n })\n }\n }\n\n // Recursively normalize colors in arrays and objects.\n if (typeof value === 'object' && value !== null) {\n for (const k in value) {\n value[k] = normalizeColor(value[k])\n }\n return value\n }\n\n return value\n}\n\ntype MainStyle = {\n color: string\n fontSize: number\n transformOrigin: ParsedTransformOrigin\n maskImage: MaskProperty[]\n opacity: number\n textTransform: string\n whiteSpace: string\n wordBreak: string\n textAlign: string\n lineHeight: number\n letterSpacing: number\n\n fontFamily: string | string[]\n fontWeight: FontWeight\n fontStyle: FontStyle\n\n borderTopWidth: number\n borderLeftWidth: number\n borderRightWidth: number\n borderBottomWidth: number\n\n paddingTop: number\n paddingLeft: number\n paddingRight: number\n paddingBottom: number\n\n flexGrow: number\n flexShrink: number\n\n gap: number\n rowGap: number\n columnGap: number\n\n textShadowOffset: {\n width: number\n height: number\n }[]\n textShadowColor: string[]\n textShadowRadius: number[]\n}\n\ntype OtherStyle = Exclude<Record<PropertyKey, string | number>, keyof MainStyle>\n\nexport type SerializedStyle = Partial<MainStyle & OtherStyle>\n\nexport default function expand(\n style: Record<string, string | number> | undefined,\n inheritedStyle: SerializedStyle\n): SerializedStyle {\n const serializedStyle: SerializedStyle = {}\n\n if (style) {\n const currentColor = getCurrentColor(\n style.color as string,\n inheritedStyle.color\n )\n\n serializedStyle.color = currentColor\n\n for (const prop in style) {\n // Internal properties.\n if (prop.startsWith('_')) {\n serializedStyle[prop] = style[prop]\n continue\n }\n\n if (prop === 'color') {\n continue\n }\n\n const name = getPropertyName(prop)\n const value = preprocess(style[prop], currentColor)\n\n try {\n const resolvedStyle =\n handleSpecialCase(name, value, currentColor) ||\n handleFallbackColor(\n name,\n getStylesForProperty(name, purify(name, value), true),\n value as string,\n currentColor\n )\n\n Object.assign(serializedStyle, resolvedStyle)\n } catch (err) {\n throw new Error(\n err.message +\n // Attach the extra information of the rule itself if it's not included in\n // the error message.\n (err.message.includes(value)\n ? '\\n ' + getErrorHint(name)\n : `\\n in CSS rule \\`${name}: ${value}\\`.${getErrorHint(name)}`)\n )\n }\n }\n }\n\n // Parse background images.\n if (serializedStyle.backgroundImage) {\n const { backgrounds } = parseElementStyle(serializedStyle)\n serializedStyle.backgroundImage = backgrounds\n }\n\n if (serializedStyle.maskImage || serializedStyle['WebkitMaskImage']) {\n serializedStyle.maskImage = parseMask(serializedStyle)\n }\n\n // Calculate the base font size.\n const baseFontSize = calcBaseFontSize(\n serializedStyle.fontSize,\n inheritedStyle.fontSize\n )\n if (typeof serializedStyle.fontSize !== 'undefined') {\n serializedStyle.fontSize = baseFontSize\n }\n\n if (serializedStyle.transformOrigin) {\n serializedStyle.transformOrigin = parseTransformOrigin(\n serializedStyle.transformOrigin as any,\n baseFontSize\n )\n }\n\n for (const prop in serializedStyle) {\n let value = serializedStyle[prop]\n\n // Line height needs to be relative.\n if (prop === 'lineHeight') {\n if (typeof value === 'string') {\n value = serializedStyle[prop] =\n lengthToNumber(\n value,\n baseFontSize,\n baseFontSize,\n inheritedStyle,\n true\n ) / baseFontSize\n }\n } else {\n // Convert em and rem values to px (number).\n if (typeof value === 'string') {\n const len = lengthToNumber(\n value,\n baseFontSize,\n baseFontSize,\n inheritedStyle\n )\n if (typeof len !== 'undefined') serializedStyle[prop] = len\n value = serializedStyle[prop]\n }\n\n if (typeof value === 'string' || typeof value === 'object') {\n const color = normalizeColor(value)\n if (color) {\n serializedStyle[prop] = color as any\n }\n value = serializedStyle[prop]\n }\n }\n\n // Inherit the opacity.\n if (prop === 'opacity' && typeof value === 'number') {\n serializedStyle.opacity = value * inheritedStyle.opacity\n }\n\n if (prop === 'transform') {\n const transforms = value as any as { [type: string]: number | string }[]\n\n for (const transform of transforms) {\n const type = Object.keys(transform)[0]\n const _v = transform[type]\n\n // Convert em, rem, vw, vh values to px (number), but keep % values.\n const len =\n typeof _v === 'string'\n ? lengthToNumber(_v, baseFontSize, baseFontSize, inheritedStyle) ??\n _v\n : _v\n transform[type] = len\n }\n }\n\n if (prop === 'textShadowRadius') {\n const textShadowRadius = value as unknown as Array<number | string>\n\n serializedStyle.textShadowRadius = textShadowRadius.map((_v) =>\n lengthToNumber(_v, baseFontSize, 0, inheritedStyle, false)\n )\n }\n\n if (prop === 'textShadowOffset') {\n const textShadowOffset = value as unknown as Array<{\n width: number | string\n height: number | string\n }>\n\n serializedStyle.textShadowOffset = textShadowOffset.map(\n ({ height, width }) => ({\n height: lengthToNumber(\n height,\n baseFontSize,\n 0,\n inheritedStyle,\n false\n ),\n width: lengthToNumber(width, baseFontSize, 0, inheritedStyle, false),\n })\n )\n }\n }\n\n return serializedStyle\n}\n\nfunction calcBaseFontSize(\n size: number | string,\n inheritedSize: number\n): number {\n if (typeof size === 'number') return size\n\n try {\n const parsed = new CssDimension(size)\n switch (parsed.unit) {\n case 'em':\n return parsed.value * inheritedSize\n case 'rem':\n return parsed.value * 16\n }\n } catch (err) {\n return inheritedSize\n }\n}\n\n/**\n * @see https://github.com/RazrFalcon/resvg/issues/579\n */\nfunction refineHSL(color: string) {\n if (color.startsWith('hsl')) {\n const t = cssColorParse(color)\n const [h, s, l] = t.values\n\n return `hsl(${[h, `${s}%`, `${l}%`]\n .concat(t.alpha === 1 ? [] : [t.alpha])\n .join(',')})`\n }\n\n return color\n}\n\nfunction getCurrentColor(\n color: string | undefined,\n inheritedColor: string\n): string {\n if (color && color.toLowerCase() !== 'currentcolor') {\n return refineHSL(color)\n }\n\n return refineHSL(inheritedColor)\n}\n\nfunction convertCurrentColorToActualValue(\n value: string,\n currentColor: string\n): string {\n return value.replace(/currentcolor/gi, currentColor)\n}\n\nfunction preprocess(\n value: string | number,\n currentColor: string\n): string | number {\n if (isString(value)) {\n value = convertCurrentColorToActualValue(value, currentColor)\n }\n\n return value\n}\n","import valueParser from 'postcss-value-parser'\n\nimport CssDimension from './vendor/parse-css-dimension/index.js'\n\n/**\n * If key for each direction is missing, assume default (50%)\n */\nexport interface ParsedTransformOrigin {\n /** Relative horizontal transform origin in % */\n xRelative?: number\n /** Relative vertical transform origin in % */\n yRelative?: number\n /** Absolute horizontal transform origin in pixels */\n xAbsolute?: number\n /** Absolute horizontal transform origin in pixels */\n yAbsolute?: number\n}\n\ninterface ParsedUnit {\n /** Relative unit in % */\n relative?: number\n /** Absolute unit in pixels */\n absolute?: number\n}\n\nfunction parseUnit(word: string, baseFontSize: number): ParsedUnit {\n try {\n const parsed = new CssDimension(word)\n switch (parsed.unit) {\n case 'px':\n return { absolute: parsed.value }\n case 'em':\n return { absolute: parsed.value * baseFontSize }\n case 'rem':\n return { absolute: parsed.value * 16 }\n case '%':\n return { relative: parsed.value }\n default:\n return {}\n }\n } catch (e) {\n return {}\n }\n}\n\nfunction handleWord(\n word: string,\n baseFontSize: number,\n unitIsHorizontal: boolean\n) {\n switch (word) {\n case 'top':\n return { yRelative: 0 }\n case 'left':\n return { xRelative: 0 }\n case 'right':\n return { xRelative: 100 }\n case 'bottom':\n return { yRelative: 100 }\n case 'center':\n return {}\n default: {\n const parsedUnit = parseUnit(word, baseFontSize)\n return parsedUnit.absolute\n ? {\n [unitIsHorizontal ? 'xAbsolute' : 'yAbsolute']: parsedUnit.absolute,\n }\n : parsedUnit.relative\n ? {\n [unitIsHorizontal ? 'xRelative' : 'yRelative']: parsedUnit.relative,\n }\n : {}\n }\n }\n}\n\nexport default function parseTransformOrigin(\n value: string | number,\n baseFontSize: number\n): ParsedTransformOrigin {\n // If it's a single value and a number, then it's horizontal\n if (typeof value === 'number') {\n return { xAbsolute: value }\n }\n let words: string[]\n try {\n words = valueParser(value)\n .nodes.filter((node) => node.type === 'word')\n .map((node) => node.value)\n } catch (e) {\n return {}\n }\n\n if (words.length === 1) {\n // If it's a single value and a number, then it's horizontal, so\n // pass `true` to `unitIsHorizontal`\n return handleWord(words[0], baseFontSize, true)\n } else if (words.length === 2) {\n // Make words to be [horizontal, vertical]\n if (\n words[0] === 'top' ||\n words[0] === 'bottom' ||\n words[1] === 'left' ||\n words[1] === 'right'\n ) {\n words.reverse()\n }\n\n return {\n ...handleWord(words[0], baseFontSize, true),\n ...handleWord(words[1], baseFontSize, false),\n }\n } else {\n return {}\n }\n}\n","import { getPropertyName } from 'css-to-react-native'\nimport { splitEffects } from '../utils.js'\n\nfunction getMaskProperty(style: Record<string, string | number>, name: string) {\n const key = getPropertyName(`mask-${name}`)\n return (style[key] || style[`WebkitM${key.substring(1)}`]) as string\n}\n\nexport interface MaskProperty {\n image: string\n position: string\n size: string\n repeat: string\n origin: string\n clip: string\n}\n\nexport function parseMask(\n style: Record<string, string | number>\n): MaskProperty[] {\n const maskImage = (style.maskImage || style.WebkitMaskImage) as string\n\n const common = {\n position: getMaskProperty(style, 'position') || '0% 0%',\n size: getMaskProperty(style, 'size') || '100% 100%',\n repeat: getMaskProperty(style, 'repeat') || 'repeat',\n origin: getMaskProperty(style, 'origin') || 'border-box',\n clip: getMaskProperty(style, 'origin') || 'border-box',\n }\n\n let maskImages = splitEffects(maskImage).filter((v) => v && v !== 'none')\n\n return maskImages.reverse().map((m) => ({\n image: m,\n ...common,\n }))\n}\n","/**\n * Handler to update the Yoga node properties with the given element type and\n * style. Each supported element has its own preset styles, so this function\n * also returns the inherited style for children of the element.\n */\n\nimport type { Node as YogaNode } from 'yoga-wasm-web'\n\nimport getYoga from '../yoga/index.js'\nimport presets from './presets.js'\nimport inheritable from './inheritable.js'\nimport expand, { SerializedStyle } from './expand.js'\nimport { lengthToNumber, parseViewBox, v } from '../utils.js'\nimport { resolveImageData } from './image.js'\n\ntype SatoriElement = keyof typeof presets\n\nexport default async function compute(\n node: YogaNode,\n type: SatoriElement | string,\n inheritedStyle: SerializedStyle,\n definedStyle: Record<string, string | number>,\n props: Record<string, any>\n): Promise<[SerializedStyle, SerializedStyle]> {\n const Yoga = await getYoga()\n\n // Extend the default style with defined and inherited styles.\n const style: SerializedStyle = {\n ...inheritedStyle,\n ...expand(presets[type], inheritedStyle),\n ...expand(definedStyle, inheritedStyle),\n }\n\n if (type === 'img') {\n let [resolvedSrc, imageWidth, imageHeight] = await resolveImageData(\n props.src\n )\n\n // Cannot parse the image size (e.g. base64 data URI).\n if (imageWidth === undefined && imageHeight === undefined) {\n if (props.width === undefined || props.height === undefined) {\n throw new Error(\n 'Image size cannot be determined. Please provide the width and height of the image.'\n )\n }\n imageWidth = parseInt(props.width)\n imageHeight = parseInt(props.height)\n }\n const r = imageHeight / imageWidth\n\n // Before calculating the missing width or height based on the image ratio,\n // we must subtract the padding and border due to how box model works.\n // TODO: Ensure these are absolute length values, not relative values.\n let extraHorizontal =\n (style.borderLeftWidth || 0) +\n (style.borderRightWidth || 0) +\n (style.paddingLeft || 0) +\n (style.paddingRight || 0)\n let extraVertical =\n (style.borderTopWidth || 0) +\n (style.borderBottomWidth || 0) +\n (style.paddingTop || 0) +\n (style.paddingBottom || 0)\n\n let contentBoxWidth = style.width || props.width\n let contentBoxHeight = style.height || props.height\n\n const isAbsoluteContentSize =\n typeof contentBoxWidth === 'number' &&\n typeof contentBoxHeight === 'number'\n\n if (isAbsoluteContentSize) {\n contentBoxWidth -= extraHorizontal\n contentBoxHeight -= extraVertical\n }\n\n // When no content size is defined, we use the image size as the content size.\n if (contentBoxWidth === undefined && contentBoxHeight === undefined) {\n contentBoxWidth = '100%'\n node.setAspectRatio(1 / r)\n } else {\n // If only one sisde is not defined, we can calculate the other one.\n if (contentBoxWidth === undefined) {\n if (typeof contentBoxHeight === 'number') {\n contentBoxWidth = contentBoxHeight / r\n } else {\n // If it uses a relative value (e.g. 50%), we can rely on aspect ratio.\n // Note: this doesn't work well if there are paddings or borders.\n node.setAspectRatio(1 / r)\n }\n } else if (contentBoxHeight === undefined) {\n if (typeof contentBoxWidth === 'number') {\n contentBoxHeight = contentBoxWidth * r\n } else {\n // If it uses a relative value (e.g. 50%), we can rely on aspect ratio.\n // Note: this doesn't work well if there are paddings or borders.\n node.setAspectRatio(1 / r)\n }\n }\n }\n\n style.width = isAbsoluteContentSize\n ? (contentBoxWidth as number) + extraHorizontal\n : contentBoxWidth\n style.height = isAbsoluteContentSize\n ? (contentBoxHeight as number) + extraVertical\n : contentBoxHeight\n style.__src = resolvedSrc\n }\n\n if (type === 'svg') {\n const viewBox = props.viewBox || props.viewbox\n const viewBoxSize = parseViewBox(viewBox)\n const ratio = viewBoxSize ? viewBoxSize[3] / viewBoxSize[2] : null\n\n let { width, height } = props\n if (typeof width === 'undefined' && height) {\n if (ratio == null) {\n width = 0\n } else if (typeof height === 'string' && height.endsWith('%')) {\n width = parseInt(height) / ratio + '%'\n } else {\n height = lengthToNumber(\n height,\n inheritedStyle.fontSize,\n 1,\n inheritedStyle\n )\n width = height / ratio\n }\n } else if (typeof height === 'undefined' && width) {\n if (ratio == null) {\n width = 0\n } else if (typeof width === 'string' && width.endsWith('%')) {\n height = parseInt(width) * ratio + '%'\n } else {\n width = lengthToNumber(\n width,\n inheritedStyle.fontSize,\n 1,\n inheritedStyle\n )\n height = width * ratio\n }\n } else {\n if (typeof width !== 'undefined') {\n width =\n lengthToNumber(width, inheritedStyle.fontSize, 1, inheritedStyle) ||\n width\n }\n if (typeof height !== 'undefined') {\n height =\n lengthToNumber(height, inheritedStyle.fontSize, 1, inheritedStyle) ||\n height\n }\n width ||= viewBoxSize?.[2]\n height ||= viewBoxSize?.[3]\n }\n\n if (!style.width && width) style.width = width\n if (!style.height && height) style.height = height\n }\n\n // Set properties for Yoga.\n node.setDisplay(\n v(\n style.display,\n {\n flex: Yoga.DISPLAY_FLEX,\n block: Yoga.DISPLAY_FLEX,\n none: Yoga.DISPLAY_NONE,\n '-webkit-box': Yoga.DISPLAY_FLEX,\n },\n Yoga.DISPLAY_FLEX,\n 'display'\n )\n )\n\n node.setAlignContent(\n v(\n style.alignContent,\n {\n stretch: Yoga.ALIGN_STRETCH,\n center: Yoga.ALIGN_CENTER,\n 'flex-start': Yoga.ALIGN_FLEX_START,\n 'flex-end': Yoga.ALIGN_FLEX_END,\n 'space-between': Yoga.ALIGN_SPACE_BETWEEN,\n 'space-around': Yoga.ALIGN_SPACE_AROUND,\n baseline: Yoga.ALIGN_BASELINE,\n normal: Yoga.ALIGN_AUTO,\n },\n Yoga.ALIGN_AUTO,\n 'alignContent'\n )\n )\n\n node.setAlignItems(\n v(\n style.alignItems,\n {\n stretch: Yoga.ALIGN_STRETCH,\n center: Yoga.ALIGN_CENTER,\n 'flex-start': Yoga.ALIGN_FLEX_START,\n 'flex-end': Yoga.ALIGN_FLEX_END,\n baseline: Yoga.ALIGN_BASELINE,\n normal: Yoga.ALIGN_AUTO,\n },\n Yoga.ALIGN_STRETCH,\n 'alignItems'\n )\n )\n node.setAlignSelf(\n v(\n style.alignSelf,\n {\n stretch: Yoga.ALIGN_STRETCH,\n center: Yoga.ALIGN_CENTER,\n 'flex-start': Yoga.ALIGN_FLEX_START,\n 'flex-end': Yoga.ALIGN_FLEX_END,\n baseline: Yoga.ALIGN_BASELINE,\n normal: Yoga.ALIGN_AUTO,\n },\n Yoga.ALIGN_AUTO,\n 'alignSelf'\n )\n )\n node.setJustifyContent(\n v(\n style.justifyContent,\n {\n center: Yoga.JUSTIFY_CENTER,\n 'flex-start': Yoga.JUSTIFY_FLEX_START,\n 'flex-end': Yoga.JUSTIFY_FLEX_END,\n 'space-between': Yoga.JUSTIFY_SPACE_BETWEEN,\n 'space-around': Yoga.JUSTIFY_SPACE_AROUND,\n },\n Yoga.JUSTIFY_FLEX_START,\n 'justifyContent'\n )\n )\n // @TODO: node.setAspectRatio\n\n node.setFlexDirection(\n v(\n style.flexDirection,\n {\n row: Yoga.FLEX_DIRECTION_ROW,\n column: Yoga.FLEX_DIRECTION_COLUMN,\n 'row-reverse': Yoga.FLEX_DIRECTION_ROW_REVERSE,\n 'column-reverse': Yoga.FLEX_DIRECTION_COLUMN_REVERSE,\n },\n Yoga.FLEX_DIRECTION_ROW,\n 'flexDirection'\n )\n )\n node.setFlexWrap(\n v(\n style.flexWrap,\n {\n wrap: Yoga.WRAP_WRAP,\n nowrap: Yoga.WRAP_NO_WRAP,\n 'wrap-reverse': Yoga.WRAP_WRAP_REVERSE,\n },\n Yoga.WRAP_NO_WRAP,\n 'flexWrap'\n )\n )\n\n if (typeof style.gap !== 'undefined') {\n node.setGap(Yoga.GUTTER_ALL, style.gap)\n }\n\n if (typeof style.rowGap !== 'undefined') {\n node.setGap(Yoga.GUTTER_ROW, style.rowGap)\n }\n\n if (typeof style.columnGap !== 'undefined') {\n node.setGap(Yoga.GUTTER_COLUMN, style.columnGap)\n }\n\n // @TODO: node.setFlex\n\n if (typeof style.flexBasis !== 'undefined') {\n node.setFlexBasis(style.flexBasis)\n }\n node.setFlexGrow(typeof style.flexGrow === 'undefined' ? 0 : style.flexGrow)\n node.setFlexShrink(\n typeof style.flexShrink === 'undefined' ? 0 : style.flexShrink\n )\n\n if (typeof style.maxHeight !== 'undefined') {\n node.setMaxHeight(style.maxHeight)\n }\n if (typeof style.maxWidth !== 'undefined') {\n node.setMaxWidth(style.maxWidth)\n }\n if (typeof style.minHeight !== 'undefined') {\n node.setMinHeight(style.minHeight)\n }\n if (typeof style.minWidth !== 'undefined') {\n node.setMinWidth(style.minWidth)\n }\n\n node.setOverflow(\n v(\n style.overflow,\n {\n visible: Yoga.OVERFLOW_VISIBLE,\n hidden: Yoga.OVERFLOW_HIDDEN,\n },\n Yoga.OVERFLOW_VISIBLE,\n 'overflow'\n )\n )\n\n node.setMargin(Yoga.EDGE_TOP, style.marginTop || 0)\n node.setMargin(Yoga.EDGE_BOTTOM, style.marginBottom || 0)\n node.setMargin(Yoga.EDGE_LEFT, style.marginLeft || 0)\n node.setMargin(Yoga.EDGE_RIGHT, style.marginRight || 0)\n\n node.setBorder(Yoga.EDGE_TOP, style.borderTopWidth || 0)\n node.setBorder(Yoga.EDGE_BOTTOM, style.borderBottomWidth || 0)\n node.setBorder(Yoga.EDGE_LEFT, style.borderLeftWidth || 0)\n node.setBorder(Yoga.EDGE_RIGHT, style.borderRightWidth || 0)\n\n node.setPadding(Yoga.EDGE_TOP, style.paddingTop || 0)\n node.setPadding(Yoga.EDGE_BOTTOM, style.paddingBottom || 0)\n node.setPadding(Yoga.EDGE_LEFT, style.paddingLeft || 0)\n node.setPadding(Yoga.EDGE_RIGHT, style.paddingRight || 0)\n\n node.setPositionType(\n v(\n style.position,\n {\n absolute: Yoga.POSITION_TYPE_ABSOLUTE,\n relative: Yoga.POSITION_TYPE_RELATIVE,\n },\n Yoga.POSITION_TYPE_RELATIVE,\n 'position'\n )\n )\n\n if (typeof style.top !== 'undefined') {\n node.setPosition(Yoga.EDGE_TOP, style.top)\n }\n if (typeof style.bottom !== 'undefined') {\n node.setPosition(Yoga.EDGE_BOTTOM, style.bottom)\n }\n if (typeof style.left !== 'undefined') {\n node.setPosition(Yoga.EDGE_LEFT, style.left)\n }\n if (typeof style.right !== 'undefined') {\n node.setPosition(Yoga.EDGE_RIGHT, style.right)\n }\n\n if (typeof style.height !== 'undefined') {\n node.setHeight(style.height)\n } else {\n node.setHeightAuto()\n }\n if (typeof style.width !== 'undefined') {\n node.setWidth(style.width)\n } else {\n node.setWidthAuto()\n }\n\n return [style, inheritable(style)]\n}\n","import escapeHTML from 'escape-html'\nimport type { ParsedTransformOrigin } from '../transform-origin.js'\nimport transform from './transform.js'\nimport { buildXMLString } from '../utils.js'\n\nexport function container(\n {\n left,\n top,\n width,\n height,\n isInheritingTransform,\n }: {\n left: number\n top: number\n width: number\n height: number\n isInheritingTransform: boolean\n },\n style: Record<string, number | string>\n) {\n let matrix = ''\n let opacity = 1\n\n if (style.transform) {\n matrix = transform(\n {\n left,\n top,\n width,\n height,\n },\n style.transform as unknown as number[],\n isInheritingTransform,\n style.transformOrigin as ParsedTransformOrigin | undefined\n )\n }\n\n if (style.opacity !== undefined) {\n opacity = +style.opacity\n }\n\n return { matrix, opacity }\n}\n\nexport default function buildText(\n {\n id,\n content,\n filter,\n left,\n top,\n width,\n height,\n matrix,\n opacity,\n image,\n clipPathId,\n debug,\n shape,\n decorationShape,\n }: {\n content: string\n filter: string\n id: string\n left: number\n top: number\n width: number\n height: number\n matrix: string\n opacity: number\n image: string | null\n clipPathId?: string\n debug?: boolean\n shape?: boolean\n decorationShape?: string\n },\n style: Record<string, number | string>\n) {\n let extra = ''\n if (debug) {\n extra = buildXMLString('rect', {\n x: left,\n y: top - height,\n width,\n height,\n fill: 'transparent',\n stroke: '#575eff',\n 'stroke-width': 1,\n transform: matrix || undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n })\n }\n\n // This grapheme should be rendered as an image.\n if (image) {\n const shapeProps = {\n href: image,\n x: left,\n y: top,\n width,\n height,\n transform: matrix || undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n style: style.filter ? `filter:${style.filter}` : undefined,\n }\n return [\n (filter ? `${filter}<g filter=\"url(#satori_s-${id})\">` : '') +\n buildXMLString('image', {\n ...shapeProps,\n opacity: opacity !== 1 ? opacity : undefined,\n }) +\n (decorationShape || '') +\n (filter ? '</g>' : '') +\n extra,\n // SVG doesn't support `<image>` as the shape.\n '',\n ]\n }\n\n // Do not embed the font, use <text> with the raw content instead.\n const shapeProps = {\n x: left,\n y: top,\n width,\n height,\n 'font-weight': style.fontWeight,\n 'font-style': style.fontStyle,\n 'font-size': style.fontSize,\n 'font-family': style.fontFamily,\n 'letter-spacing': style.letterSpacing || undefined,\n transform: matrix || undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n style: style.filter ? `filter:${style.filter}` : undefined,\n }\n return [\n (filter ? `${filter}<g filter=\"url(#satori_s-${id})\">` : '') +\n buildXMLString(\n 'text',\n {\n ...shapeProps,\n fill: style.color,\n opacity: opacity !== 1 ? opacity : undefined,\n },\n escapeHTML(content)\n ) +\n (decorationShape || '') +\n (filter ? '</g>' : '') +\n extra,\n shape ? buildXMLString('text', shapeProps, escapeHTML(content)) : '',\n ]\n}\n","import { multiply } from '../utils.js'\nimport type { ParsedTransformOrigin } from '../transform-origin.js'\n\nconst baseMatrix = [1, 0, 0, 1, 0, 0]\n\n// Mutate the array in place.\nfunction resolveTransforms(transforms: any[], width: number, height: number) {\n let matrix = [...baseMatrix]\n\n // Handle CSS transforms To make it easier, we convert different transform\n // types directly to a matrix and apply it recursively to all its children.\n // Transforms are applied from right to left.\n // eslint-disable-next-line @typescript-eslint/no-shadow\n for (const transform of transforms) {\n const type = Object.keys(transform)[0]\n let v = transform[type]\n\n // Resolve percentages based on the element's final size.\n if (typeof v === 'string') {\n if (type === 'translateX') {\n v = (parseFloat(v) / 100) * width\n // Override the original object.\n transform[type] = v\n } else if (type === 'translateY') {\n v = (parseFloat(v) / 100) * height\n transform[type] = v\n } else {\n throw new Error(`Invalid transform: \"${type}: ${v}\".`)\n }\n }\n\n let len = v as number\n\n const transformMatrix = [...baseMatrix]\n switch (type) {\n case 'translateX':\n transformMatrix[4] = len\n break\n case 'translateY':\n transformMatrix[5] = len\n break\n case 'scale':\n transformMatrix[0] = len\n transformMatrix[3] = len\n break\n case 'scaleX':\n transformMatrix[0] = len\n break\n case 'scaleY':\n transformMatrix[3] = len\n break\n case 'rotate': {\n const rad = (len * Math.PI) / 180\n const c = Math.cos(rad)\n const s = Math.sin(rad)\n transformMatrix[0] = c\n transformMatrix[1] = s\n transformMatrix[2] = -s\n transformMatrix[3] = c\n break\n }\n case 'skewX':\n transformMatrix[2] = Math.tan((len * Math.PI) / 180)\n break\n case 'skewY':\n transformMatrix[1] = Math.tan((len * Math.PI) / 180)\n break\n }\n matrix = multiply(transformMatrix, matrix)\n }\n\n transforms.splice(0, transforms.length)\n transforms.push(...matrix)\n ;(transforms as any).__resolved = true\n}\n\nexport default function transform(\n {\n left,\n top,\n width,\n height,\n }: {\n left: number\n top: number\n width: number\n height: number\n },\n transforms: number[],\n isInheritingTransform: boolean,\n transformOrigin?: ParsedTransformOrigin\n) {\n let result: number[]\n\n if (!(transforms as any).__resolved) {\n resolveTransforms(transforms, width, height)\n }\n\n let matrix = transforms\n\n // Calculate the transform origin.\n if (isInheritingTransform) {\n result = matrix\n } else {\n const xOrigin =\n transformOrigin?.xAbsolute ??\n ((transformOrigin?.xRelative ?? 50) * width) / 100\n const yOrigin =\n transformOrigin?.yAbsolute ??\n ((transformOrigin?.yRelative ?? 50) * height) / 100\n\n // If this element is the transform target, we attach the origin coordinates\n // to this matrix.\n const x = left + xOrigin\n const y = top + yOrigin\n\n // Due to the different coordinate systems, we need to move the shape to the\n // origin first, then apply the matrix, then move it back.\n result = multiply(\n [1, 0, 0, 1, x, y],\n multiply(matrix, [1, 0, 0, 1, -x, -y])\n )\n\n // And we need to apply its parent transform if it has one.\n if ((matrix as any).__parent) {\n result = multiply((matrix as any).__parent, result)\n }\n\n // Mutate self.\n matrix.splice(0, 6, ...result)\n }\n\n return `matrix(${result.map((v) => v.toFixed(2)).join(',')})`\n}\n","// @TODO: It seems that SVG filters are pretty expensive for resvg, PNG\n// generation time 10x'd when adding this filter (WASM in browser).\n// https://drafts.fxtf.org/filter-effects/#feGaussianBlurElement\n\nimport { buildXMLString } from '../utils.js'\n\nfunction shiftPath(path: string, dx: number, dy: number) {\n return path.replace(\n /([MA])([0-9.-]+),([0-9.-]+)/g,\n function (_, command, x, y) {\n return command + (parseFloat(x) + dx) + ',' + (parseFloat(y) + dy)\n }\n )\n}\n\n// The scale is used to make the filter area larger than the bounding box,\n// because usually the given measured text bounding is larger than the path\n// bounding.\n// The text bounding box is measured via the font metrics, which is not the same\n// as the actual content. For example, the text bounding box of \"A\" is larger\n// than the actual \"a\" path but they have the same font metrics.\n// This scale can be adjusted to prevent the filter from cutting off the text.\nconst SCALE = 1.1\n\nexport function buildDropShadow(\n { id, width, height }: { id: string; width: number; height: number },\n style: {\n shadowColor: string[]\n shadowOffset: {\n width: number\n height: number\n }[]\n shadowRadius: number[]\n }\n) {\n if (\n !style.shadowColor ||\n !style.shadowOffset ||\n typeof style.shadowRadius === 'undefined'\n ) {\n return ''\n }\n\n const shadowCount = style.shadowColor.length\n let effects = ''\n let merge = ''\n\n // There could be multiple shadows, we need to get the maximum bounding box\n // and use `feMerge` to merge them together.\n let left = 0\n let right = width\n let top = 0\n let bottom = height\n for (let i = 0; i < shadowCount; i++) {\n // Expand the area for the filter to prevent it from cutting off.\n const grow = (style.shadowRadius[i] * style.shadowRadius[i]) / 4\n left = Math.min(style.shadowOffset[i].width - grow, left)\n right = Math.max(style.shadowOffset[i].width + grow + width, right)\n top = Math.min(style.shadowOffset[i].height - grow, top)\n bottom = Math.max(style.shadowOffset[i].height + grow + height, bottom)\n\n effects += buildXMLString('feDropShadow', {\n dx: style.shadowOffset[i].width,\n dy: style.shadowOffset[i].height,\n stdDeviation:\n // According to the spec, we use the half of the blur radius as the standard\n // deviation for the filter.\n // > the image that would be generated by applying to the shadow a Gaussian\n // > blur with a standard deviation equal to half the blur radius\n // > https://www.w3.org/TR/css-backgrounds-3/#shadow-blur\n style.shadowRadius[i] / 2,\n 'flood-color': style.shadowColor[i],\n 'flood-opacity': 1,\n ...(shadowCount > 1\n ? {\n in: 'SourceGraphic',\n result: `satori_s-${id}-result-${i}`,\n }\n : {}),\n })\n\n if (shadowCount > 1) {\n // Merge needs to be in reverse order.\n merge =\n buildXMLString('feMergeNode', {\n in: `satori_s-${id}-result-${i}`,\n }) + merge\n }\n }\n\n return buildXMLString(\n 'filter',\n {\n id: `satori_s-${id}`,\n x: ((left / width) * 100 * SCALE).toFixed(2) + '%',\n y: ((top / height) * 100 * SCALE).toFixed(2) + '%',\n width: (((right - left) / width) * 100 * SCALE).toFixed(2) + '%',\n height: (((bottom - top) / height) * 100 * SCALE).toFixed(2) + '%',\n },\n effects + (merge ? buildXMLString('feMerge', {}, merge) : '')\n )\n}\n\nexport function boxShadow(\n {\n width,\n height,\n shape,\n opacity,\n id,\n }: {\n width: number\n height: number\n shape: string\n opacity: number\n id: string\n },\n style: Record<string, any>\n) {\n if (!style.boxShadow) return null\n\n let shadow = ''\n let innerShadow = ''\n\n for (let i = style.boxShadow.length - 1; i >= 0; i--) {\n let s = ''\n\n const shadowStyle = style.boxShadow[i]\n\n if (shadowStyle.spreadRadius && shadowStyle.inset) {\n shadowStyle.spreadRadius = -shadowStyle.spreadRadius\n }\n\n // Expand the area for the filter to prevent it from cutting off.\n const grow =\n (shadowStyle.blurRadius * shadowStyle.blurRadius) / 4 +\n (shadowStyle.spreadRadius || 0)\n\n const left = Math.min(\n -grow - (shadowStyle.inset ? shadowStyle.offsetX : 0),\n 0\n )\n const right = Math.max(\n grow + width - (shadowStyle.inset ? shadowStyle.offsetX : 0),\n width\n )\n const top = Math.min(\n -grow - (shadowStyle.inset ? shadowStyle.offsetY : 0),\n 0\n )\n const bottom = Math.max(\n grow + height - (shadowStyle.inset ? shadowStyle.offsetY : 0),\n height\n )\n\n const sid = `satori_s-${id}-${i}`\n const maskId = `satori_ms-${id}-${i}`\n const shapeWithSpread = shadowStyle.spreadRadius\n ? shape.replace(\n 'stroke-width=\"0\"',\n `stroke-width=\"${shadowStyle.spreadRadius * 2}\"`\n )\n : shape\n\n s += buildXMLString(\n 'mask',\n {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n },\n buildXMLString('rect', {\n x: 0,\n y: 0,\n width: style._viewportWidth || '100%',\n height: style._viewportHeight || '100%',\n fill: shadowStyle.inset ? '#000' : '#fff',\n }) +\n shapeWithSpread\n .replace(\n 'fill=\"#fff\"',\n shadowStyle.inset ? 'fill=\"#fff\"' : 'fill=\"#000\"'\n )\n .replace('stroke=\"#fff\"', '')\n )\n\n let finalShape = shapeWithSpread\n .replace(/d=\"([^\"]+)\"/, (_, path) => {\n return (\n 'd=\"' +\n shiftPath(path, shadowStyle.offsetX, shadowStyle.offsetY) +\n '\"'\n )\n })\n .replace(/x=\"([^\"]+)\"/, (_, x) => {\n return 'x=\"' + (parseFloat(x) + shadowStyle.offsetX) + '\"'\n })\n .replace(/y=\"([^\"]+)\"/, (_, y) => {\n return 'y=\"' + (parseFloat(y) + shadowStyle.offsetY) + '\"'\n })\n\n // Negative spread radius, we need another mask here.\n if (shadowStyle.spreadRadius && shadowStyle.spreadRadius < 0) {\n s += buildXMLString(\n 'mask',\n {\n id: maskId + '-neg',\n maskUnits: 'userSpaceOnUse',\n },\n finalShape\n .replace('stroke=\"#fff\"', 'stroke=\"#000\"')\n .replace(\n /stroke-width=\"[^\"]+\"/,\n `stroke-width=\"${-shadowStyle.spreadRadius * 2}\"`\n )\n )\n }\n\n if (shadowStyle.spreadRadius && shadowStyle.spreadRadius < 0) {\n finalShape = buildXMLString(\n 'g',\n {\n mask: `url(#${maskId}-neg)`,\n },\n finalShape\n )\n }\n\n s +=\n buildXMLString(\n 'defs',\n {},\n buildXMLString(\n 'filter',\n {\n id: sid,\n x: `${(left / width) * 100}%`,\n y: `${(top / height) * 100}%`,\n width: `${((right - left) / width) * 100}%`,\n height: `${((bottom - top) / height) * 100}%`,\n },\n buildXMLString('feGaussianBlur', {\n // According to the spec, we use the half of the blur radius as the standard\n // deviation for the filter.\n // > the image that would be generated by applying to the shadow a Gaussian\n // > blur with a standard deviation equal to half the blur radius\n // > https://www.w3.org/TR/css-backgrounds-3/#shadow-blur\n stdDeviation: shadowStyle.blurRadius / 2,\n result: 'b',\n }) +\n buildXMLString('feFlood', {\n 'flood-color': shadowStyle.color,\n in: 'SourceGraphic',\n result: 'f',\n }) +\n buildXMLString('feComposite', {\n in: 'f',\n in2: 'b',\n operator: shadowStyle.inset ? 'out' : 'in',\n })\n )\n ) +\n buildXMLString(\n 'g',\n {\n mask: `url(#${maskId})`,\n filter: `url(#${sid})`,\n opacity: opacity,\n },\n finalShape\n )\n\n if (shadowStyle.inset) {\n innerShadow += s\n } else {\n shadow += s\n }\n }\n\n return [shadow, innerShadow]\n}\n","import { buildXMLString } from '../utils.js'\n\nexport default function buildDecoration(\n {\n width,\n left,\n top,\n ascender,\n clipPathId,\n }: {\n width: number\n left: number\n top: number\n ascender: number\n clipPathId?: string\n },\n style: Record<string, any>\n) {\n const {\n textDecorationColor,\n textDecorationStyle,\n textDecorationLine,\n fontSize,\n color,\n } = style\n if (!textDecorationLine || textDecorationLine === 'none') return ''\n\n // The UA should use such font-based information when choosing auto line thicknesses wherever appropriate.\n // https://drafts.csswg.org/css-text-decor-4/#text-decoration-thickness\n const height = Math.max(1, fontSize * 0.1)\n\n const y =\n textDecorationLine === 'line-through'\n ? top + ascender * 0.7\n : textDecorationLine === 'underline'\n ? top + ascender * 1.1\n : top\n\n const dasharray =\n textDecorationStyle === 'dashed'\n ? `${height * 1.2} ${height * 2}`\n : textDecorationStyle === 'dotted'\n ? `0 ${height * 2}`\n : undefined\n\n return buildXMLString('line', {\n x1: left,\n y1: y,\n x2: left + width,\n y2: y,\n stroke: textDecorationColor || color,\n 'stroke-width': height,\n 'stroke-dasharray': dasharray,\n 'stroke-linecap': textDecorationStyle === 'dotted' ? 'round' : 'square',\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n })\n}\n","export function stringFromCode(code: string): string {\n code = code.replace('U+', '0x')\n\n return String.fromCodePoint(Number(code))\n}\n\nexport const Space = stringFromCode('U+0020')\nexport const Tab = stringFromCode('U+0009')\nexport const HorizontalEllipsis = stringFromCode('U+2026')\n","import { FontEngine } from '../font.js'\nimport { segment } from '../utils.js'\n\nexport function genMeasurer(\n engine: FontEngine,\n isImage: (grapheme: string) => boolean,\n style: {\n fontSize: number\n letterSpacing: number\n }\n): {\n measureGrapheme: (grapheme: string) => number\n measureGraphemeArray: (graphemes: string[]) => number\n measureText: (text: string) => number\n} {\n const { fontSize, letterSpacing } = style\n\n const cache = new Map<string, number>()\n\n function measureGrapheme(grapheme: string): number {\n if (cache.has(grapheme)) {\n return cache.get(grapheme)\n }\n\n const width = engine.measure(grapheme, { fontSize, letterSpacing })\n cache.set(grapheme, width)\n\n return width\n }\n\n function measureGraphemeArray(graphemes: string[]): number {\n let width = 0\n\n for (const grapheme of graphemes) {\n if (isImage(grapheme)) {\n width += fontSize\n } else {\n width += measureGrapheme(grapheme)\n }\n }\n\n return width\n }\n\n function measureText(text: string): number {\n return measureGraphemeArray(segment(text, 'grapheme'))\n }\n\n return {\n measureGrapheme,\n measureGraphemeArray,\n measureText,\n }\n}\n","import { Locale } from '../language.js'\nimport { isNumber, segment, splitByBreakOpportunities } from '../utils.js'\nimport { HorizontalEllipsis, Space } from './characters.js'\nimport { SerializedStyle } from '../handler/expand.js'\n\nexport function preprocess(\n content: string,\n style: SerializedStyle,\n locale?: Locale\n): {\n words: string[]\n requiredBreaks: boolean[]\n allowSoftWrap: boolean\n allowBreakWord: boolean\n processedContent: string\n shouldCollapseTabsAndSpaces: boolean\n lineLimit: number\n blockEllipsis: string\n} {\n const { textTransform, whiteSpace, wordBreak } = style\n\n content = processTextTransform(content, textTransform, locale)\n\n const {\n content: processedContent,\n shouldCollapseTabsAndSpaces,\n allowSoftWrap,\n } = processWhiteSpace(content, whiteSpace)\n\n const { words, requiredBreaks, allowBreakWord } = processWordBreak(\n processedContent,\n wordBreak\n )\n\n const [lineLimit, blockEllipsis] = processTextOverflow(style, allowSoftWrap)\n\n return {\n words,\n requiredBreaks,\n allowSoftWrap,\n allowBreakWord,\n processedContent,\n shouldCollapseTabsAndSpaces,\n lineLimit,\n blockEllipsis,\n }\n}\n\nfunction processTextTransform(\n content: string,\n textTransform: string,\n locale?: Locale\n): string {\n if (textTransform === 'uppercase') {\n content = content.toLocaleUpperCase(locale)\n } else if (textTransform === 'lowercase') {\n content = content.toLocaleLowerCase(locale)\n } else if (textTransform === 'capitalize') {\n content = segment(content, 'word', locale)\n // For each word...\n .map((word) => {\n // ...split into graphemes...\n return segment(word, 'grapheme', locale)\n .map((grapheme, index) => {\n // ...and make the first grapheme uppercase\n return index === 0 ? grapheme.toLocaleUpperCase(locale) : grapheme\n })\n .join('')\n })\n .join('')\n }\n\n return content\n}\n\nfunction processTextOverflow(\n style: SerializedStyle,\n allowSoftWrap: boolean\n): [number, string?] {\n const {\n textOverflow,\n lineClamp,\n WebkitLineClamp,\n WebkitBoxOrient,\n overflow,\n display,\n } = style\n\n if (display === 'block' && lineClamp) {\n const [lineLimit, blockEllipsis = HorizontalEllipsis] =\n parseLineClamp(lineClamp)\n if (lineLimit) {\n return [lineLimit, blockEllipsis]\n }\n }\n\n if (\n textOverflow === 'ellipsis' &&\n display === '-webkit-box' &&\n WebkitBoxOrient === 'vertical' &&\n isNumber(WebkitLineClamp) &&\n WebkitLineClamp > 0\n ) {\n return [WebkitLineClamp, HorizontalEllipsis]\n }\n\n if (textOverflow === 'ellipsis' && overflow === 'hidden' && !allowSoftWrap) {\n return [1, HorizontalEllipsis]\n }\n\n return [Infinity]\n}\n\nfunction processWordBreak(\n content,\n wordBreak: string\n): { words: string[]; requiredBreaks: boolean[]; allowBreakWord: boolean } {\n const allowBreakWord = ['break-all', 'break-word'].includes(wordBreak)\n\n const { words, requiredBreaks } = splitByBreakOpportunities(\n content,\n wordBreak\n )\n\n return { words, requiredBreaks, allowBreakWord }\n}\n\nfunction processWhiteSpace(\n content: string,\n whiteSpace: string\n): {\n content: string\n shouldCollapseTabsAndSpaces: boolean\n allowSoftWrap: boolean\n} {\n const shouldKeepLinebreak = ['pre', 'pre-wrap', 'pre-line'].includes(\n whiteSpace\n )\n\n const shouldCollapseTabsAndSpaces = ['normal', 'nowrap', 'pre-line'].includes(\n whiteSpace\n )\n\n const allowSoftWrap = !['pre', 'nowrap'].includes(whiteSpace)\n\n if (!shouldKeepLinebreak) {\n content = content.replace(/\\n/g, Space)\n }\n\n if (shouldCollapseTabsAndSpaces) {\n content = content.replace(/([ ]|\\t)+/g, Space).replace(/^[ ]|[ ]$/g, '')\n }\n\n return { content, shouldCollapseTabsAndSpaces, allowSoftWrap }\n}\n\nfunction parseLineClamp(input: number | string): [number?, string?] {\n if (typeof input === 'number') return [input]\n\n const regex1 = /^(\\d+)\\s*\"(.*)\"$/\n const regex2 = /^(\\d+)\\s*'(.*)'$/\n const match1 = regex1.exec(input)\n const match2 = regex2.exec(input)\n\n if (match1) {\n const number = +match1[1]\n const text = match1[2]\n\n return [number, text]\n } else if (match2) {\n const number = +match2[1]\n const text = match2[2]\n\n return [number, text]\n }\n\n return []\n}\n","/**\n * This module calculates the layout of a text string. Currently the only\n * supported inline node is text. All other nodes are using block layout.\n */\nimport type { LayoutContext } from '../layout.js'\nimport type { Yoga } from 'yoga-wasm-web'\nimport getYoga from '../yoga/index.js'\nimport {\n v,\n segment,\n wordSeparators,\n buildXMLString,\n isUndefined,\n isString,\n lengthToNumber,\n} from '../utils.js'\nimport buildText, { container } from '../builder/text.js'\nimport { buildDropShadow } from '../builder/shadow.js'\nimport buildDecoration from '../builder/text-decoration.js'\nimport { Locale } from '../language.js'\nimport { HorizontalEllipsis, Space, Tab } from './characters.js'\nimport { genMeasurer } from './measurer.js'\nimport { preprocess } from './processor.js'\n\nconst skippedWordWhenFindingMissingFont = new Set([Tab])\n\nfunction shouldSkipWhenFindingMissingFont(word: string): boolean {\n return skippedWordWhenFindingMissingFont.has(word)\n}\n\nexport default async function* buildTextNodes(\n content: string,\n context: LayoutContext\n): AsyncGenerator<{ word: string; locale?: Locale }[], string, [any, any]> {\n const Yoga = await getYoga()\n\n const {\n parentStyle,\n inheritedStyle,\n parent,\n font,\n id,\n isInheritingTransform,\n debug,\n embedFont,\n graphemeImages,\n locale,\n canLoadAdditionalAssets,\n } = context\n\n const {\n textAlign,\n lineHeight,\n textWrap,\n fontSize,\n filter: cssFilter,\n tabSize = 8,\n letterSpacing,\n _inheritedBackgroundClipTextPath,\n flexShrink,\n } = parentStyle\n\n const {\n words,\n requiredBreaks,\n allowSoftWrap,\n allowBreakWord,\n processedContent,\n shouldCollapseTabsAndSpaces,\n lineLimit,\n blockEllipsis,\n } = preprocess(content, parentStyle, locale)\n\n const textContainer = createTextContainerNode(Yoga, textAlign)\n parent.insertChild(textContainer, parent.getChildCount())\n\n if (isUndefined(flexShrink)) {\n parent.setFlexShrink(1)\n }\n\n // Get the correct font according to the container style.\n // https://www.w3.org/TR/CSS2/visudet.html\n let engine = font.getEngine(fontSize, lineHeight, parentStyle, locale)\n\n // Yield segments that are missing a font.\n const wordsMissingFont = canLoadAdditionalAssets\n ? segment(processedContent, 'grapheme').filter(\n (word) => !shouldSkipWhenFindingMissingFont(word) && !engine.has(word)\n )\n : []\n\n yield wordsMissingFont.map((word) => {\n return {\n word,\n locale,\n }\n })\n\n if (wordsMissingFont.length) {\n // Reload the engine with additional fonts.\n engine = font.getEngine(fontSize, lineHeight, parentStyle, locale)\n }\n\n function isImage(s: string): boolean {\n return !!(graphemeImages && graphemeImages[s])\n }\n\n const { measureGrapheme, measureGraphemeArray, measureText } = genMeasurer(\n engine,\n isImage,\n {\n fontSize,\n letterSpacing,\n }\n )\n\n const tabWidth = isString(tabSize)\n ? lengthToNumber(tabSize, fontSize, 1, parentStyle)\n : measureGrapheme(Space) * tabSize\n\n const calc = (\n text: string,\n currentWidth: number\n ): {\n originWidth: number\n endingSpacesWidth: number\n text: string\n } => {\n if (text.length === 0) {\n return {\n originWidth: 0,\n endingSpacesWidth: 0,\n text,\n }\n }\n\n const { index, tabCount } = detectTabs(text)\n\n let originWidth = 0\n\n if (tabCount > 0) {\n const textBeforeTab = text.slice(0, index)\n const textAfterTab = text.slice(index + tabCount)\n const textWidthBeforeTab = measureText(textBeforeTab)\n const offsetBeforeTab = textWidthBeforeTab + currentWidth\n const tabMoveDistance =\n tabWidth === 0\n ? textWidthBeforeTab\n : (Math.floor(offsetBeforeTab / tabWidth) + tabCount) * tabWidth\n originWidth = tabMoveDistance + measureText(textAfterTab)\n } else {\n originWidth = measureText(text)\n }\n\n const afterTrimEndWidth =\n text.trimEnd() === text ? originWidth : measureText(text.trimEnd())\n\n return {\n originWidth,\n endingSpacesWidth: originWidth - afterTrimEndWidth,\n text,\n }\n }\n\n // Global variables used to compute the text layout.\n // @TODO: Use segments instead of words to properly support kerning.\n let lineWidths = []\n let baselines = []\n let lineSegmentNumber = []\n let texts: string[] = []\n let wordPositionInLayout: (null | {\n x: number\n y: number\n width: number\n line: number\n lineIndex: number\n isImage: boolean\n })[] = []\n\n // With the given container width, compute the text layout.\n function flow(width: number) {\n let lines = 0\n let maxWidth = 0\n let lineIndex = -1\n let height = 0\n let currentWidth = 0\n let currentLineHeight = 0\n let currentBaselineOffset = 0\n\n lineWidths = []\n lineSegmentNumber = [0]\n texts = []\n wordPositionInLayout = []\n\n // We naively implement the width calculation without proper kerning.\n // @TODO: Support different writing modes.\n // @TODO: Support RTL languages.\n let i = 0\n let prevLineEndingSpacesWidth = 0\n while (i < words.length && lines < lineLimit) {\n let word = words[i]\n const forceBreak = requiredBreaks[i]\n\n let w = 0\n\n const {\n originWidth,\n endingSpacesWidth,\n text: _word,\n } = calc(word, currentWidth)\n word = _word\n\n w = originWidth\n const lineEndingSpacesWidth = endingSpacesWidth\n\n // When starting a new line from an empty line, we should push one extra\n // line height.\n if (forceBreak && currentLineHeight === 0) {\n currentLineHeight = engine.height(word)\n }\n\n const allowedToPutAtBeginning = ',.!?:-@)>]}%#'.indexOf(word[0]) < 0\n const allowedToJustify = !currentWidth\n\n const willWrap =\n i &&\n allowedToPutAtBeginning &&\n // When determining whether a line break is necessary, the width of the\n // trailing spaces is not included in the calculation, as the end boundary\n // can be closely adjacent to the last non-space character.\n // e.g.\n // 'aaa bbb ccc'\n // When the break line happens at the end of the `bbb`, what we see looks like this\n // |aaa bbb|\n // |ccc |\n currentWidth + w > width + lineEndingSpacesWidth &&\n allowSoftWrap\n\n // Need to break the word if:\n // - we have break-word\n // - the word is wider than the container width\n // - the word will be put at the beginning of the line\n const needToBreakWord =\n allowBreakWord && w > width && (!currentWidth || willWrap || forceBreak)\n\n if (needToBreakWord) {\n // Break the word into multiple segments and continue the loop.\n const chars = segment(word, 'grapheme')\n words.splice(i, 1, ...chars)\n if (currentWidth > 0) {\n // Start a new line, spaces can be ignored.\n lineWidths.push(currentWidth - prevLineEndingSpacesWidth)\n baselines.push(currentBaselineOffset)\n lines++\n height += currentLineHeight\n currentWidth = 0\n currentLineHeight = 0\n currentBaselineOffset = 0\n lineSegmentNumber.push(1)\n lineIndex = -1\n }\n prevLineEndingSpacesWidth = lineEndingSpacesWidth\n continue\n }\n if (forceBreak || willWrap) {\n // Start a new line, spaces can be ignored.\n if (shouldCollapseTabsAndSpaces && word === Space) {\n w = 0\n }\n\n lineWidths.push(currentWidth - prevLineEndingSpacesWidth)\n baselines.push(currentBaselineOffset)\n lines++\n height += currentLineHeight\n currentWidth = w\n currentLineHeight = w ? engine.height(word) : 0\n currentBaselineOffset = w ? engine.baseline(word) : 0\n lineSegmentNumber.push(1)\n lineIndex = -1\n\n // If it's naturally broken, we update the max width.\n // Since if there are multiple lines, the width should fit the\n // container.\n if (!forceBreak) {\n maxWidth = Math.max(maxWidth, width)\n }\n } else {\n // It fits into the current line.\n currentWidth += w\n const glyphHeight = engine.height(word)\n if (glyphHeight > currentLineHeight) {\n // Use the baseline of the highest segment as the baseline of the line.\n currentLineHeight = glyphHeight\n currentBaselineOffset = engine.baseline(word)\n }\n if (allowedToJustify) {\n lineSegmentNumber[lineSegmentNumber.length - 1]++\n }\n }\n\n if (allowedToJustify) {\n lineIndex++\n }\n\n maxWidth = Math.max(maxWidth, currentWidth)\n\n let x = currentWidth - w\n\n if (w === 0) {\n wordPositionInLayout.push({\n y: height,\n x,\n width: 0,\n line: lines,\n lineIndex,\n isImage: false,\n })\n } else {\n const _texts = segment(word, 'word')\n\n for (let j = 0; j < _texts.length; j++) {\n const _text = _texts[j]\n let _width = 0\n let _isImage = false\n\n if (isImage(_text)) {\n _width = fontSize\n _isImage = true\n } else {\n _width = measureGrapheme(_text)\n }\n\n texts.push(_text)\n wordPositionInLayout.push({\n y: height,\n x,\n width: _width,\n line: lines,\n lineIndex,\n isImage: _isImage,\n })\n\n x += _width\n }\n }\n\n i++\n prevLineEndingSpacesWidth = lineEndingSpacesWidth\n }\n\n if (currentWidth) {\n if (lines < lineLimit) {\n height += currentLineHeight\n }\n lines++\n lineWidths.push(currentWidth)\n baselines.push(currentBaselineOffset)\n }\n\n // @TODO: Support `line-height`.\n return { width: maxWidth, height }\n }\n\n // It's possible that the text's measured size is different from the container's\n // size, because the container might have a fixed width or height or being\n // expanded by its parent.\n let measuredTextSize = { width: 0, height: 0 }\n textContainer.setMeasureFunc((containerWidth) => {\n const { width, height } = flow(containerWidth)\n\n // When doing `text-wrap: balance`, we reflow the text multiple times\n // using binary search to find the best width.\n // https://www.w3.org/TR/css-text-4/#valdef-text-wrap-balance\n if (textWrap === 'balance') {\n let l = width / 2\n let r = width\n let m: number = width\n while (l + 1 < r) {\n m = (l + r) / 2\n const { height: mHeight } = flow(m)\n if (mHeight > height) {\n l = m\n } else {\n r = m\n }\n }\n flow(r)\n const _width = Math.ceil(r)\n measuredTextSize = { width: _width, height }\n return { width: _width, height }\n }\n const _width = Math.ceil(width)\n measuredTextSize = { width: _width, height }\n // This may be a temporary fix, I didn't dig deep into yoga.\n // But when the return value of width here doesn't change (assuming the value of width is 216.9),\n // when we later get the width through `parent.getComputedWidth()`, sometimes it returns 216 and sometimes 217.\n // I'm not sure if this is a yoga bug, but it seems related to the entire page width.\n // So I use Math.ceil.\n return { width: _width, height }\n })\n\n const [x, y] = yield\n\n let result = ''\n let backgroundClipDef = ''\n\n const clipPathId = inheritedStyle._inheritedClipPathId as string | undefined\n const overflowMaskId = inheritedStyle._inheritedMaskId as number | undefined\n\n const {\n left: containerLeft,\n top: containerTop,\n width: containerWidth,\n height: containerHeight,\n } = textContainer.getComputedLayout()\n\n const parentContainerInnerWidth =\n parent.getComputedWidth() -\n parent.getComputedPadding(Yoga.EDGE_LEFT) -\n parent.getComputedPadding(Yoga.EDGE_RIGHT) -\n parent.getComputedBorder(Yoga.EDGE_LEFT) -\n parent.getComputedBorder(Yoga.EDGE_RIGHT)\n\n // Attach offset to the current node.\n const left = x + containerLeft\n const top = y + containerTop\n\n const { matrix, opacity } = container(\n {\n left: containerLeft,\n top: containerTop,\n width: containerWidth,\n height: containerHeight,\n isInheritingTransform,\n },\n parentStyle\n )\n\n let filter = ''\n if (parentStyle.textShadowOffset) {\n const { textShadowColor, textShadowOffset, textShadowRadius } = parentStyle\n\n filter = buildDropShadow(\n {\n width: measuredTextSize.width,\n height: measuredTextSize.height,\n id,\n },\n {\n shadowColor: textShadowColor,\n shadowOffset: textShadowOffset,\n shadowRadius: textShadowRadius,\n }\n )\n\n filter = buildXMLString('defs', {}, filter)\n }\n\n let decorationShape = ''\n let mergedPath = ''\n let extra = ''\n let skippedLine = -1\n let decorationLines: Record<number, null | number[]> = {}\n let wordBuffer: string | null = null\n let bufferedOffset = 0\n\n for (let i = 0; i < texts.length; i++) {\n // Skip whitespace and empty characters.\n const layout = wordPositionInLayout[i]\n const nextLayout = wordPositionInLayout[i + 1]\n\n if (!layout) continue\n\n let text = texts[i]\n let path: string | null = null\n let isLastDisplayedBeforeEllipsis = false\n\n const image = graphemeImages ? graphemeImages[text] : null\n\n let topOffset = layout.y\n let leftOffset = layout.x\n const width = layout.width\n const line = layout.line\n\n if (line === skippedLine) {\n continue\n }\n\n // When `text-align` is `justify`, the width of the line will be adjusted.\n let extendedWidth = false\n\n if (lineWidths.length > 1) {\n // Calculate alignment. Note that for Flexbox, there is only text\n // alignment when the container is multi-line.\n const remainingWidth = containerWidth - lineWidths[line]\n if (textAlign === 'right' || textAlign === 'end') {\n leftOffset += remainingWidth\n } else if (textAlign === 'center') {\n leftOffset += remainingWidth / 2\n } else if (textAlign === 'justify') {\n // Don't justify the last line.\n if (line < lineWidths.length - 1) {\n const segments = lineSegmentNumber[line]\n const gutter = segments > 1 ? remainingWidth / (segments - 1) : 0\n leftOffset += gutter * layout.lineIndex\n extendedWidth = true\n }\n }\n }\n\n const baselineOfLine = baselines[line]\n const baselineOfWord = engine.baseline(text)\n const heightOfWord = engine.height(text)\n const baselineDelta = baselineOfLine - baselineOfWord\n\n if (!decorationLines[line]) {\n decorationLines[line] = [\n leftOffset,\n top + topOffset + baselineDelta,\n baselineOfWord,\n extendedWidth ? containerWidth : lineWidths[line],\n ]\n }\n\n if (lineLimit !== Infinity) {\n let _blockEllipsis = blockEllipsis\n let ellipsisWidth = measureGrapheme(blockEllipsis)\n if (ellipsisWidth > parentContainerInnerWidth) {\n _blockEllipsis = HorizontalEllipsis\n ellipsisWidth = measureGrapheme(_blockEllipsis)\n }\n const spaceWidth = measureGrapheme(Space)\n const isNotLastLine = line < lineWidths.length - 1\n const isLastAllowedLine = line + 1 === lineLimit\n\n function calcEllipsis(baseWidth: number, _text: string) {\n const chars = segment(_text, 'grapheme', locale)\n\n let subset = ''\n let resolvedWidth = 0\n\n for (const char of chars) {\n const w = baseWidth + measureGraphemeArray([subset + char])\n if (\n // Keep at least one character:\n // > The first character or atomic inline-level element on a line\n // must be clipped rather than ellipsed.\n // https://drafts.csswg.org/css-overflow/#text-overflow\n subset &&\n w + ellipsisWidth > parentContainerInnerWidth\n ) {\n break\n }\n subset += char\n resolvedWidth = w\n }\n\n return {\n subset,\n resolvedWidth,\n }\n }\n\n if (\n isLastAllowedLine &&\n (isNotLastLine || lineWidths[line] > parentContainerInnerWidth)\n ) {\n if (\n leftOffset + width + ellipsisWidth + spaceWidth >\n parentContainerInnerWidth\n ) {\n const { subset, resolvedWidth } = calcEllipsis(leftOffset, text)\n\n text = subset + _blockEllipsis\n skippedLine = line\n decorationLines[line][2] = resolvedWidth\n isLastDisplayedBeforeEllipsis = true\n } else if (nextLayout && nextLayout.line !== line) {\n if (textAlign === 'center') {\n const { subset, resolvedWidth } = calcEllipsis(leftOffset, text)\n\n text = subset + _blockEllipsis\n skippedLine = line\n decorationLines[line][2] = resolvedWidth\n isLastDisplayedBeforeEllipsis = true\n } else {\n const nextLineText = texts[i + 1]\n\n const { subset, resolvedWidth } = calcEllipsis(\n width + leftOffset,\n nextLineText\n )\n\n text = text + subset + _blockEllipsis\n skippedLine = line\n decorationLines[line][2] = resolvedWidth\n isLastDisplayedBeforeEllipsis = true\n }\n }\n }\n }\n\n if (image) {\n // For images, we remove the baseline offset.\n topOffset += 0\n } else if (embedFont) {\n // If the current word and the next word are on the same line, we try to\n // merge them together to better handle the kerning.\n if (\n !text.includes(Tab) &&\n !wordSeparators.includes(text) &&\n texts[i + 1] &&\n nextLayout &&\n !nextLayout.isImage &&\n topOffset === nextLayout.y &&\n !isLastDisplayedBeforeEllipsis\n ) {\n if (wordBuffer === null) {\n bufferedOffset = leftOffset\n }\n wordBuffer = wordBuffer === null ? text : wordBuffer + text\n continue\n }\n\n const finalizedSegment = wordBuffer === null ? text : wordBuffer + text\n const finalizedLeftOffset =\n wordBuffer === null ? leftOffset : bufferedOffset\n const finalizedWidth = layout.width + leftOffset - finalizedLeftOffset\n\n path = engine.getSVG(finalizedSegment.replace(/(\\t)+/g, ''), {\n fontSize,\n left: left + finalizedLeftOffset,\n // Since we need to pass the baseline position, add the ascender to the top.\n top: top + topOffset + baselineOfWord + baselineDelta,\n letterSpacing,\n })\n\n wordBuffer = null\n\n if (debug) {\n extra +=\n // Glyph\n buildXMLString('rect', {\n x: left + finalizedLeftOffset,\n y: top + topOffset + baselineDelta,\n width: finalizedWidth,\n height: heightOfWord,\n fill: 'transparent',\n stroke: '#575eff',\n 'stroke-width': 1,\n transform: matrix ? matrix : undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n }) +\n // Baseline\n buildXMLString('line', {\n x1: left + leftOffset,\n x2: left + leftOffset + layout.width,\n y1: top + topOffset + baselineDelta + baselineOfWord,\n y2: top + topOffset + baselineDelta + baselineOfWord,\n stroke: '#14c000',\n 'stroke-width': 1,\n transform: matrix ? matrix : undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n })\n }\n } else {\n // We need manually add the font ascender height to ensure it starts\n // at the baseline because <text>'s alignment baseline is set to `hanging`\n // by default and supported to change in SVG 1.1.\n topOffset += baselineOfWord + baselineDelta\n }\n\n // Get the decoration shape.\n if (parentStyle.textDecorationLine) {\n const deco = decorationLines[line]\n if (deco && !deco[4]) {\n decorationShape += buildDecoration(\n {\n left: left + deco[0],\n top: deco[1],\n width: deco[3],\n ascender: deco[2],\n clipPathId,\n },\n parentStyle\n )\n deco[4] = 1\n }\n }\n\n if (path !== null) {\n mergedPath += path + ' '\n } else {\n const [t, shape] = buildText(\n {\n content: text,\n filter,\n id,\n left: left + leftOffset,\n top: top + topOffset,\n width,\n height: heightOfWord,\n matrix,\n opacity,\n image,\n clipPathId,\n debug,\n shape: !!_inheritedBackgroundClipTextPath,\n decorationShape,\n },\n parentStyle\n )\n result += t\n backgroundClipDef += shape\n decorationShape = ''\n }\n\n if (isLastDisplayedBeforeEllipsis) {\n break\n }\n }\n\n // Embed the font as path.\n if (mergedPath) {\n const p =\n parentStyle.color !== 'transparent' && opacity !== 0\n ? buildXMLString('path', {\n fill: parentStyle.color,\n d: mergedPath,\n transform: matrix ? matrix : undefined,\n opacity: opacity !== 1 ? opacity : undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n mask: overflowMaskId ? `url(#${overflowMaskId})` : undefined,\n\n style: cssFilter ? `filter:${cssFilter}` : undefined,\n })\n : ''\n\n if (_inheritedBackgroundClipTextPath) {\n backgroundClipDef = buildXMLString('path', {\n d: mergedPath,\n transform: matrix ? matrix : undefined,\n })\n }\n\n result +=\n (filter\n ? filter +\n buildXMLString(\n 'g',\n { filter: `url(#satori_s-${id})` },\n p + decorationShape\n )\n : p + decorationShape) + extra\n }\n\n // Attach information to the parent node.\n if (backgroundClipDef) {\n ;(parentStyle._inheritedBackgroundClipTextPath as any).value +=\n backgroundClipDef\n }\n\n return result\n}\n\nfunction createTextContainerNode(\n Yoga: Yoga,\n textAlign: string\n): ReturnType<Yoga['Node']['create']> {\n // Create a container node for this text fragment.\n const textContainer = Yoga.Node.create()\n textContainer.setAlignItems(Yoga.ALIGN_BASELINE)\n textContainer.setJustifyContent(\n v(\n textAlign,\n {\n left: Yoga.JUSTIFY_FLEX_START,\n right: Yoga.JUSTIFY_FLEX_END,\n center: Yoga.JUSTIFY_CENTER,\n justify: Yoga.JUSTIFY_SPACE_BETWEEN,\n // We don't have other writing modes yet.\n start: Yoga.JUSTIFY_FLEX_START,\n end: Yoga.JUSTIFY_FLEX_END,\n },\n Yoga.JUSTIFY_FLEX_START,\n 'textAlign'\n )\n )\n\n return textContainer\n}\n\nfunction detectTabs(text: string):\n | {\n index: null\n tabCount: 0\n }\n | {\n index: number\n tabCount: number\n } {\n const result = /(\\t)+/.exec(text)\n return result\n ? {\n index: result.index,\n tabCount: result[0].length,\n }\n : {\n index: null,\n tabCount: 0,\n }\n}\n","import CssDimension from '../vendor/parse-css-dimension/index.js'\nimport { buildXMLString, lengthToNumber } from '../utils.js'\nimport cssColorParse from 'parse-css-color'\n\nimport gradient from '../vendor/gradient-parser/index.js'\nimport { resolveImageData } from '../handler/image.js'\n\ninterface Background {\n attachment?: string\n color?: string\n clip: string\n image: string\n origin?: string\n position: string\n size: string\n repeat: string\n}\n\nfunction resolveColorFromStop(stop) {\n if (stop.type === 'literal') return stop.value\n if (stop.type === 'hex') return `#${stop.value}`\n if (stop.type === 'rgb') return `rgb(${stop.value.join(',')})`\n if (stop.type === 'rgba') return `rgba(${stop.value.join(',')})`\n return 'transparent'\n}\n\nfunction resolveXYFromDirection(dir: string) {\n let x1 = 0,\n y1 = 0,\n x2 = 0,\n y2 = 0\n\n if (dir.includes('top')) {\n y1 = 1\n } else if (dir.includes('bottom')) {\n y2 = 1\n }\n\n if (dir.includes('left')) {\n x1 = 1\n } else if (dir.includes('right')) {\n x2 = 1\n }\n\n if (!x1 && !x2 && !y1 && !y2) {\n y1 = 1\n }\n\n return [x1, y1, x2, y2]\n}\n\nfunction toAbsoluteValue(v: string | number, base: number) {\n if (typeof v === 'string' && v.endsWith('%')) {\n return (base * parseFloat(v)) / 100\n }\n return +v\n}\n\nfunction parseLengthPairs(\n str: string,\n {\n x,\n y,\n defaultX,\n defaultY,\n }: {\n x: number\n y: number\n defaultX: number | string\n defaultY: number | string\n }\n) {\n return (\n str\n ? str\n .split(' ')\n .map((value) => {\n try {\n const parsed = new CssDimension(value)\n return parsed.type === 'length' || parsed.type === 'number'\n ? parsed.value\n : parsed.value + parsed.unit\n } catch (e) {\n return null\n }\n })\n .filter((v) => v !== null)\n : [defaultX, defaultY]\n ).map((v, index) => toAbsoluteValue(v, [x, y][index]))\n}\n\nfunction normalizeStops(\n totalLength: number,\n colorStops: any[],\n from?: 'background' | 'mask'\n) {\n // Resolve the color stops based on the spec:\n // https://drafts.csswg.org/css-images/#color-stop-syntax\n const stops = []\n for (const stop of colorStops) {\n const color = resolveColorFromStop(stop)\n if (!stops.length) {\n // First stop, ensure it's at the start.\n stops.push({\n offset: 0,\n color,\n })\n\n if (typeof stop.length === 'undefined') continue\n if (stop.length.value === '0') continue\n }\n\n // All offsets are relative values (0-1) in SVG.\n const offset =\n typeof stop.length === 'undefined'\n ? undefined\n : stop.length.type === '%'\n ? stop.length.value / 100\n : stop.length.value / totalLength\n\n stops.push({\n offset,\n color,\n })\n }\n if (!stops.length) {\n stops.push({\n offset: 0,\n color: 'transparent',\n })\n }\n // Last stop, ensure it's at the end.\n const lastStop = stops[stops.length - 1]\n if (lastStop.offset !== 1) {\n if (typeof lastStop.offset === 'undefined') {\n lastStop.offset = 1\n } else {\n stops.push({\n offset: 1,\n color: lastStop.color,\n })\n }\n }\n\n let previousStop = 0\n let nextStop = 1\n // Evenly distribute the missing stop offsets.\n for (let i = 0; i < stops.length; i++) {\n if (typeof stops[i].offset === 'undefined') {\n // Find the next stop that has an offset.\n if (nextStop < i) nextStop = i\n while (typeof stops[nextStop].offset === 'undefined') nextStop++\n\n stops[i].offset =\n ((stops[nextStop].offset - stops[previousStop].offset) /\n (nextStop - previousStop)) *\n (i - previousStop) +\n stops[previousStop].offset\n } else {\n previousStop = i\n }\n }\n\n if (from === 'mask') {\n return stops.map((stop) => {\n const color = cssColorParse(stop.color)\n if (color.alpha === 0) {\n return { ...stop, color: `rgba(0, 0, 0, 1)` }\n } else {\n return { ...stop, color: `rgba(255, 255, 255, ${color.alpha})` }\n }\n })\n }\n\n return stops\n}\n\nexport default async function backgroundImage(\n {\n id,\n width,\n height,\n left,\n top,\n }: { id: string; width: number; height: number; left: number; top: number },\n { image, size, position, repeat }: Background,\n inheritableStyle: Record<string, number | string>,\n from?: 'background' | 'mask'\n): Promise<string[]> {\n // Default to `repeat`.\n repeat = repeat || 'repeat'\n from = from || 'background'\n\n const repeatX = repeat === 'repeat-x' || repeat === 'repeat'\n const repeatY = repeat === 'repeat-y' || repeat === 'repeat'\n\n const dimensions = parseLengthPairs(size, {\n x: width,\n y: height,\n defaultX: width,\n defaultY: height,\n })\n const offsets = parseLengthPairs(position, {\n x: width,\n y: height,\n defaultX: 0,\n defaultY: 0,\n })\n\n if (image.startsWith('linear-gradient(')) {\n const parsed = gradient.parse(image)[0]\n const [imageWidth, imageHeight] = dimensions\n\n // Calculate the direction.\n let x1, y1, x2, y2, length\n\n if (parsed.orientation.type === 'directional') {\n ;[x1, y1, x2, y2] = resolveXYFromDirection(parsed.orientation.value)\n\n length = Math.sqrt(\n Math.pow((x2 - x1) * imageWidth, 2) +\n Math.pow((y2 - y1) * imageHeight, 2)\n )\n } else if (parsed.orientation.type === 'angular') {\n const EPS = 0.000001\n const r = imageWidth / imageHeight\n\n function calc(angle) {\n angle = ((angle % (Math.PI * 2)) + Math.PI * 2) % (Math.PI * 2)\n\n if (Math.abs(angle - Math.PI / 2) < EPS) {\n x1 = 0\n y1 = 0\n x2 = 1\n y2 = 0\n length = imageWidth\n return\n } else if (Math.abs(angle) < EPS) {\n x1 = 0\n y1 = 1\n x2 = 0\n y2 = 0\n length = imageHeight\n return\n }\n\n // Assuming 0 <= angle < PI / 2.\n if (angle >= Math.PI / 2 && angle < Math.PI) {\n calc(Math.PI - angle)\n y1 = 1 - y1\n y2 = 1 - y2\n return\n } else if (angle >= Math.PI) {\n calc(angle - Math.PI)\n let tmp = x1\n x1 = x2\n x2 = tmp\n tmp = y1\n y1 = y2\n y2 = tmp\n return\n }\n\n // Remap SVG distortion\n const tan = Math.tan(angle)\n const tanTexture = tan * r\n const angleTexture = Math.atan(tanTexture)\n const l = Math.sqrt(2) * Math.cos(Math.PI / 4 - angleTexture)\n x1 = 0\n y1 = 1\n x2 = Math.sin(angleTexture) * l\n y2 = 1 - Math.cos(angleTexture) * l\n\n // Get the angle between the distored gradient direction and diagonal.\n const x = 1\n const y = 1 / tan\n const cosA = Math.abs(\n (x * r + y) / Math.sqrt(x * x + y * y) / Math.sqrt(r * r + 1)\n )\n\n // Get the distored gradient length.\n const diagonal = Math.sqrt(\n imageWidth * imageWidth + imageHeight * imageHeight\n )\n length = diagonal * cosA\n }\n\n calc((+parsed.orientation.value / 180) * Math.PI)\n }\n\n const stops = normalizeStops(length, parsed.colorStops, from)\n\n const gradientId = `satori_bi${id}`\n const patternId = `satori_pattern_${id}`\n\n const defs = buildXMLString(\n 'pattern',\n {\n id: patternId,\n x: offsets[0] / width,\n y: offsets[1] / height,\n width: repeatX ? imageWidth / width : '1',\n height: repeatY ? imageHeight / height : '1',\n patternUnits: 'objectBoundingBox',\n },\n buildXMLString(\n 'linearGradient',\n {\n id: gradientId,\n x1,\n y1,\n x2,\n y2,\n },\n stops\n .map((stop) =>\n buildXMLString('stop', {\n offset: stop.offset * 100 + '%',\n 'stop-color': stop.color,\n })\n )\n .join('')\n ) +\n buildXMLString('rect', {\n x: 0,\n y: 0,\n width: imageWidth,\n height: imageHeight,\n fill: `url(#${gradientId})`,\n })\n )\n return [patternId, defs]\n }\n\n if (image.startsWith('radial-gradient(')) {\n const parsed = gradient.parse(image)[0]\n const orientation = parsed.orientation[0]\n const [xDelta, yDelta] = dimensions\n\n let shape = 'circle'\n let cx: number = xDelta / 2\n let cy: number = yDelta / 2\n\n if (orientation.type === 'shape') {\n shape = orientation.value\n if (!orientation.at) {\n // Defaults to center.\n } else if (orientation.at.type === 'position') {\n const pos = calcRadialGradient(\n orientation.at.value.x,\n orientation.at.value.y,\n xDelta,\n yDelta,\n inheritableStyle.fontSize as number,\n inheritableStyle\n )\n cx = pos.x\n cy = pos.y\n } else {\n throw new Error(\n 'orientation.at.type not implemented: ' + orientation.at.type\n )\n }\n } else {\n throw new Error('orientation.type not implemented: ' + orientation.type)\n }\n\n const stops = normalizeStops(width, parsed.colorStops, from)\n\n const gradientId = `satori_radial_${id}`\n const patternId = `satori_pattern_${id}`\n const maskId = `satori_mask_${id}`\n\n // We currently only support `farthest-corner`:\n // https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/radial-gradient()#values\n const spread = calcRadius(\n shape as Shape,\n orientation.style,\n inheritableStyle.fontSize as number,\n { x: cx, y: cy },\n [xDelta, yDelta],\n inheritableStyle\n )\n\n // TODO: check for repeat-x/repeat-y\n const defs = buildXMLString(\n 'pattern',\n {\n id: patternId,\n x: offsets[0] / width,\n y: offsets[1] / height,\n width: repeatX ? xDelta / width : '1',\n height: repeatY ? yDelta / height : '1',\n patternUnits: 'objectBoundingBox',\n },\n buildXMLString(\n 'radialGradient',\n {\n id: gradientId,\n },\n stops\n .map((stop) =>\n buildXMLString('stop', {\n offset: stop.offset,\n 'stop-color': stop.color,\n })\n )\n .join('')\n ) +\n buildXMLString(\n 'mask',\n {\n id: maskId,\n },\n buildXMLString('rect', {\n x: 0,\n y: 0,\n width: xDelta,\n height: yDelta,\n fill: '#fff',\n })\n ) +\n buildXMLString('rect', {\n x: 0,\n y: 0,\n width: xDelta,\n height: yDelta,\n fill: stops.at(-1).color,\n }) +\n buildXMLString(shape, {\n cx: cx,\n cy: cy,\n width: xDelta,\n height: yDelta,\n ...spread,\n fill: `url(#${gradientId})`,\n mask: `url(#${maskId})`,\n })\n )\n\n const result = [patternId, defs]\n return result\n }\n\n if (image.startsWith('url(')) {\n const dimensionsWithoutFallback = parseLengthPairs(size, {\n x: width,\n y: height,\n defaultX: 0,\n defaultY: 0,\n })\n const [src, imageWidth, imageHeight] = await resolveImageData(\n image.slice(4, -1)\n )\n const resolvedWidth =\n from === 'mask'\n ? imageWidth || dimensionsWithoutFallback[0]\n : dimensionsWithoutFallback[0] || imageWidth\n const resolvedHeight =\n from === 'mask'\n ? imageHeight || dimensionsWithoutFallback[1]\n : dimensionsWithoutFallback[1] || imageHeight\n\n return [\n `satori_bi${id}`,\n buildXMLString(\n 'pattern',\n {\n id: `satori_bi${id}`,\n patternContentUnits: 'userSpaceOnUse',\n patternUnits: 'userSpaceOnUse',\n x: offsets[0] + left,\n y: offsets[1] + top,\n width: repeatX ? resolvedWidth : '100%',\n height: repeatY ? resolvedHeight : '100%',\n },\n buildXMLString('image', {\n x: 0,\n y: 0,\n width: resolvedWidth,\n height: resolvedHeight,\n preserveAspectRatio: 'none',\n href: src,\n })\n ),\n ]\n }\n\n throw new Error(`Invalid background image: \"${image}\"`)\n}\n\ntype PositionKeyWord = 'center' | 'left' | 'right' | 'top' | 'bottom'\ninterface Position {\n type: string\n value: PositionKeyWord\n}\n\nfunction calcRadialGradient(\n cx: Position,\n cy: Position,\n xDelta: number,\n yDelta: number,\n baseFontSize: number,\n style: Record<string, string | number>\n) {\n const pos: { x: number; y: number } = { x: xDelta / 2, y: yDelta / 2 }\n if (cx.type === 'position-keyword') {\n Object.assign(pos, calcPos(cx.value, xDelta, yDelta, 'x'))\n } else {\n pos.x = lengthToNumber(\n `${cx.value}${cx.type}`,\n baseFontSize,\n xDelta,\n style,\n true\n )\n }\n\n if (cy.type === 'position-keyword') {\n Object.assign(pos, calcPos(cy.value, xDelta, yDelta, 'y'))\n } else {\n pos.y = lengthToNumber(\n `${cy.value}${cy.type}`,\n baseFontSize,\n yDelta,\n style,\n true\n )\n }\n\n return pos\n}\n\nfunction calcPos(\n key: PositionKeyWord,\n xDelta: number,\n yDelta: number,\n dir: 'x' | 'y'\n) {\n switch (key) {\n case 'center':\n return { [dir]: dir === 'x' ? xDelta / 2 : yDelta / 2 }\n case 'left':\n return { x: 0 }\n case 'top':\n return { y: 0 }\n case 'right':\n return { x: xDelta }\n case 'bottom':\n return { y: yDelta }\n }\n}\n\ntype Shape = 'circle' | 'ellipse'\nfunction calcRadius(\n shape: Shape,\n endingShape: Array<{ type: string; value: string }>,\n baseFontSize: number,\n centerAxis: { x: number; y: number },\n length: [number, number],\n inheritableStyle: Record<string, string | number>\n) {\n const [xDelta, yDelta] = length\n const { x: cx, y: cy } = centerAxis\n const spread: Record<string, number> = {}\n let fx = 0\n let fy = 0\n const isExtentKeyWord = endingShape.some((v) => v.type === 'extent-keyword')\n\n if (!isExtentKeyWord) {\n if (endingShape.some((v) => v.value.startsWith('-'))) {\n throw new Error(\n 'disallow setting negative values to the size of the shape. Check https://w3c.github.io/csswg-drafts/css-images/#valdef-rg-size-length-0'\n )\n }\n if (shape === 'circle') {\n return {\n r: lengthToNumber(\n `${endingShape[0].value}${endingShape[0].type}`,\n baseFontSize,\n xDelta,\n inheritableStyle,\n true\n ),\n }\n } else {\n return {\n rx: lengthToNumber(\n `${endingShape[0].value}${endingShape[0].type}`,\n baseFontSize,\n xDelta,\n inheritableStyle,\n true\n ),\n ry: lengthToNumber(\n `${endingShape[1].value}${endingShape[1].type}`,\n baseFontSize,\n yDelta,\n inheritableStyle,\n true\n ),\n }\n }\n }\n\n switch (endingShape[0].value) {\n case 'farthest-corner':\n fx = Math.max(Math.abs(xDelta - cx), Math.abs(cx))\n fy = Math.max(Math.abs(yDelta - cy), Math.abs(cy))\n break\n case 'closest-corner':\n fx = Math.min(Math.abs(xDelta - cx), Math.abs(cx))\n fy = Math.min(Math.abs(yDelta - cy), Math.abs(cy))\n break\n case 'farthest-side':\n if (shape === 'circle') {\n spread.r = Math.max(\n Math.abs(xDelta - cx),\n Math.abs(cx),\n Math.abs(yDelta - cy),\n Math.abs(cy)\n )\n } else {\n spread.rx = Math.max(Math.abs(xDelta - cx), Math.abs(cx))\n spread.ry = Math.max(Math.abs(yDelta - cy), Math.abs(cy))\n }\n return spread\n case 'closest-side':\n if (shape === 'circle') {\n spread.r = Math.min(\n Math.abs(xDelta - cx),\n Math.abs(cx),\n Math.abs(yDelta - cy),\n Math.abs(cy)\n )\n } else {\n spread.rx = Math.min(Math.abs(xDelta - cx), Math.abs(cx))\n spread.ry = Math.min(Math.abs(yDelta - cy), Math.abs(cy))\n }\n\n return spread\n }\n if (shape === 'circle') {\n spread.r = Math.sqrt(fx * fx + fy * fy)\n } else {\n // Spec: https://drafts.csswg.org/css-images/#typedef-size\n // Get the aspect ratio of the closest-side size.\n const ratio = fy !== 0 ? fx / fy : 1\n\n if (fx === 0) {\n spread.rx = 0\n spread.ry = 0\n } else {\n // fx^2/a^2 + fy^2/b^2 = 1\n // fx^2/(b*ratio)^2 + fy^2/b^2 = 1\n // (fx^2+fy^2*ratio^2) = (b*ratio)^2\n // b = sqrt(fx^2+fy^2*ratio^2)/ratio\n\n spread.ry = Math.sqrt(fx * fx + fy * fy * ratio * ratio) / ratio\n spread.rx = spread.ry * ratio\n }\n }\n\n return spread\n}\n","// Copyright (c) 2014 Rafael Caricio. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nvar GradientParser = GradientParser || {}\n\n// https://w3c.github.io/csswg-drafts/css-images-3/#linear-gradients\n// It may be omitted; if so, it defaults to to bottom.\nconst FALLBACK_LINEAR_ORIENTATION = { type: 'directional', value: 'bottom' }\n\nGradientParser.parse = (function () {\n var tokens = {\n linearGradient: /^(\\-(webkit|o|ms|moz)\\-)?(linear\\-gradient)/i,\n repeatingLinearGradient:\n /^(\\-(webkit|o|ms|moz)\\-)?(repeating\\-linear\\-gradient)/i,\n radialGradient: /^(\\-(webkit|o|ms|moz)\\-)?(radial\\-gradient)/i,\n repeatingRadialGradient:\n /^(\\-(webkit|o|ms|moz)\\-)?(repeating\\-radial\\-gradient)/i,\n sideOrCorner:\n /^to (left (top|bottom)|right (top|bottom)|top (left|right)|bottom (left|right)|left|right|top|bottom)/i,\n extentKeywords:\n /^(closest\\-side|closest\\-corner|farthest\\-side|farthest\\-corner|contain|cover)/,\n positionKeywords: /^(left|center|right|top|bottom)/i,\n pixelValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))px/,\n percentageValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))\\%/,\n emLikeValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))(r?em|vw|vh)/,\n angleValue: /^(-?(([0-9]*\\.[0-9]+)|([0-9]+\\.?)))deg/,\n zeroValue: /[0]/,\n startCall: /^\\(/,\n endCall: /^\\)/,\n comma: /^,/,\n hexColor: /^\\#([0-9a-fA-F]+)/,\n literalColor: /^([a-zA-Z]+)/,\n rgbColor: /^rgb/i,\n rgbaColor: /^rgba/i,\n number: /^(([0-9]*\\.[0-9]+)|([0-9]+\\.?))/,\n }\n\n var input = ''\n\n function error(msg) {\n var err = new Error(input + ': ' + msg)\n err.source = input\n throw err\n }\n\n function getAST() {\n var ast = matchListDefinitions()\n\n if (input.length > 0) {\n error('Invalid input not EOF')\n }\n return ast\n }\n\n function matchListDefinitions() {\n return matchListing(matchDefinition)\n }\n\n function matchDefinition() {\n return (\n matchGradient(\n 'linear-gradient',\n tokens.linearGradient,\n matchLinearOrientation,\n FALLBACK_LINEAR_ORIENTATION\n ) ||\n matchGradient(\n 'repeating-linear-gradient',\n tokens.repeatingLinearGradient,\n matchLinearOrientation,\n FALLBACK_LINEAR_ORIENTATION\n ) ||\n matchGradient(\n 'radial-gradient',\n tokens.radialGradient,\n matchListRadialOrientations\n ) ||\n matchGradient(\n 'repeating-radial-gradient',\n tokens.repeatingRadialGradient,\n matchListRadialOrientations\n )\n )\n }\n\n function getDefaultRadialGradient(orientation = {}) {\n const res = { ...orientation }\n\n Object.assign(res, {\n style: (res.style || []).length > 0\n ? res.style\n : [{ type: 'extent-keyword', value: 'farthest-corner' }],\n at: {\n type: 'position',\n value: {\n x: {\n type: 'position-keyword',\n value: 'center',\n ...(res.at?.value?.x || {})\n },\n y: {\n type: 'position-keyword',\n value: 'center',\n ...(res.at?.value?.y || {})\n }\n }\n }}\n )\n\n if (!orientation.value) {\n Object.assign(res, {\n type: 'shape',\n value: res.style.some(v => ['%', 'extent-keyword'].includes(v.type))\n ? 'ellipse'\n : 'circle'\n })\n }\n\n return res\n }\n\n function matchGradient(\n gradientType,\n pattern,\n orientationMatcher,\n fallbackOrientation\n ) {\n return matchCall(pattern, function (captures) {\n var orientation = orientationMatcher()\n if (orientation) {\n if (!scan(tokens.comma)) {\n error('Missing comma before color stops')\n }\n } else {\n orientation = fallbackOrientation\n }\n\n return {\n type: gradientType,\n orientation: gradientType.endsWith('radial-gradient')\n ? orientation?.map(v => getDefaultRadialGradient(v)) ?? [getDefaultRadialGradient()]\n : orientation,\n colorStops: matchListing(matchColorStop),\n }\n })\n }\n\n function matchCall(pattern, callback) {\n var captures = scan(pattern)\n if (captures) {\n if (!scan(tokens.startCall)) {\n error('Missing (')\n }\n\n var result = callback(captures)\n\n if (!scan(tokens.endCall)) {\n error('Missing )')\n }\n\n return result\n }\n }\n\n function matchLinearOrientation() {\n return matchSideOrCorner() || matchAngle() || matchZero();\n }\n\n function matchSideOrCorner() {\n return match('directional', tokens.sideOrCorner, 1)\n }\n\n function matchAngle() {\n return match('angular', tokens.angleValue, 1)\n }\n\n // For zero value passed into linear-gradient first arg:\n function matchZero() {\n return match('directional', tokens.zeroValue, 0)\n }\n\n function matchListRadialOrientations() {\n var radialOrientations,\n radialOrientation = matchRadialOrientation(),\n lookaheadCache\n\n if (radialOrientation) {\n radialOrientations = []\n radialOrientations.push(radialOrientation)\n\n lookaheadCache = input\n if (scan(tokens.comma)) {\n radialOrientation = matchRadialOrientation()\n if (radialOrientation) {\n radialOrientations.push(radialOrientation)\n } else {\n input = lookaheadCache\n }\n }\n }\n\n return radialOrientations\n }\n\n function matchRadialOrientation() {\n const pre = preMatchRadialOrientation()\n const at = matchAtPosition()\n\n if (!pre && !at) return\n\n return { ...pre, at }\n }\n\n function preMatchRadialOrientation() {\n let rgEndingShape = matchCircle() || matchEllipse()\n let rgSize = matchExtentKeyword() || matchLength() || matchDistance()\n const extra = match('%', tokens.percentageValue, 1)\n\n if (rgEndingShape) {\n return {\n ...rgEndingShape,\n style: [rgSize, extra].filter(v => v)\n }\n } else if (rgSize){\n return {\n style: [rgSize, extra].filter(v => v),\n ...(matchCircle() || matchEllipse())\n }\n } else {\n //\n }\n }\n\n function matchCircle() {\n return match('shape', /^(circle)/i, 0)\n }\n\n function matchEllipse() {\n return match('shape', /^(ellipse)/i, 0)\n }\n\n function matchExtentKeyword() {\n return match('extent-keyword', tokens.extentKeywords, 1)\n }\n\n function matchAtPosition() {\n if (match('position', /^at/, 0)) {\n var positioning = matchPositioning()\n\n if (!positioning) {\n error('Missing positioning value')\n }\n\n return positioning\n }\n }\n\n function matchPositioning() {\n var location = matchCoordinates()\n\n if (location.x || location.y) {\n return {\n type: 'position',\n value: location,\n }\n }\n }\n\n function matchCoordinates() {\n return {\n x: matchDistance(),\n y: matchDistance(),\n }\n }\n\n function matchListing(matcher) {\n var captures = matcher(),\n result = []\n\n if (captures) {\n result.push(captures)\n while (scan(tokens.comma)) {\n captures = matcher()\n if (captures) {\n result.push(captures)\n } else {\n error('One extra comma')\n }\n }\n }\n\n return result\n }\n\n function matchColorStop() {\n var color = matchColor()\n\n if (!color) {\n error('Expected color definition')\n }\n\n color.length = matchDistance()\n return color\n }\n\n function matchColor() {\n return (\n matchHexColor() ||\n matchRGBAColor() ||\n matchRGBColor() ||\n matchLiteralColor()\n )\n }\n\n function matchLiteralColor() {\n return match('literal', tokens.literalColor, 0)\n }\n\n function matchHexColor() {\n return match('hex', tokens.hexColor, 1)\n }\n\n function matchRGBColor() {\n return matchCall(tokens.rgbColor, function () {\n return {\n type: 'rgb',\n value: matchListing(matchNumber),\n }\n })\n }\n\n function matchRGBAColor() {\n return matchCall(tokens.rgbaColor, function () {\n return {\n type: 'rgba',\n value: matchListing(matchNumber),\n }\n })\n }\n\n function matchNumber() {\n return scan(tokens.number)[1]\n }\n\n function matchDistance() {\n return (\n match('%', tokens.percentageValue, 1) ||\n matchPositionKeyword() ||\n matchLength()\n )\n }\n\n function matchPositionKeyword() {\n return match('position-keyword', tokens.positionKeywords, 1)\n }\n\n function matchLength() {\n return match('px', tokens.pixelValue, 1) || matchRelativeLength(tokens.emLikeValue, 1)\n }\n\n function matchRelativeLength(pattern, captureIndex) {\n var captures = scan(pattern)\n if (captures) {\n return {\n type: captures[5],\n value: captures[captureIndex],\n }\n }\n }\n\n function match(type, pattern, captureIndex) {\n var captures = scan(pattern)\n if (captures) {\n return {\n type: type,\n value: captures[captureIndex],\n }\n }\n }\n\n function scan(regexp) {\n var captures, blankCaptures\n\n blankCaptures = /^[\\n\\r\\t\\s]+/.exec(input)\n if (blankCaptures) {\n consume(blankCaptures[0].length)\n }\n\n captures = regexp.exec(input)\n if (captures) {\n consume(captures[0].length)\n }\n\n return captures\n }\n\n function consume(size) {\n input = input.substr(size)\n }\n\n return function (code) {\n input = code.toString()\n return getAST()\n }\n})()\n\nexport default GradientParser\n","/**\n * CSS border radius to SVG path.\n */\n\n// TODO: Support the `border-radius: 10px / 20px` syntax.\n// https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius\n\nimport { lengthToNumber } from '../utils.js'\n\n// Getting the intersection of a 45deg ray with the elliptical arc x^2/rx^2 + y^2/ry^2 = 1.\n// Reference:\n// https://www.w3.org/TR/SVG/implnote.html#ArcConversionEndpointToCenter\nfunction svgArcCenterOffset([rx, ry]: number[]) {\n if (Math.round(rx * 1000) === 0 && Math.round(ry * 1000) === 0) {\n return 0\n }\n return Math.round(((rx * ry) / Math.sqrt(rx * rx + ry * ry)) * 1000) / 1000\n}\n\nfunction resolveSize(a: number, b: number, limit: number) {\n if (limit < a + b) {\n if (limit / 2 < a && limit / 2 < b) {\n a = b = limit / 2\n } else if (limit / 2 < a) {\n a = limit - b\n } else if (limit / 2 < b) {\n b = limit - a\n }\n }\n return [a, b]\n}\n\nfunction makeSmaller(arr: [number, number]) {\n arr[0] = arr[1] = Math.min(arr[0], arr[1])\n}\n\n// Each corner can have 2 values, the first is the horizontal radius, the second is the vertical radius.\nfunction resolveRadius(\n v: number | string | undefined,\n width: number,\n height: number,\n fontSize: number,\n style: any\n): [boolean, undefined | [number, number]] {\n if (typeof v === 'string') {\n const sides = v.split(' ').map((s) => s.trim())\n const singleValue = !sides[1] && !sides[0].endsWith('%')\n sides[1] = sides[1] || sides[0]\n return [\n singleValue,\n [\n Math.min(lengthToNumber(sides[0], fontSize, width, style, true), width),\n Math.min(\n lengthToNumber(sides[1], fontSize, height, style, true),\n height\n ),\n ],\n ]\n }\n if (typeof v === 'number') {\n return [true, [Math.min(v, width), Math.min(v, height)]]\n }\n return [true, undefined]\n}\n\nconst radiusZeroOrNull = (_radius?: [number, number]) =>\n _radius && _radius[0] !== 0 && _radius[1] !== 0\n\nexport default function radius(\n {\n left,\n top,\n width,\n height,\n }: {\n left: number\n top: number\n width: number\n height: number\n },\n style: Record<string, any>,\n partialSides?: boolean[]\n) {\n let {\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomLeftRadius,\n borderBottomRightRadius,\n fontSize,\n } = style\n\n let singleAbsValueTopLeftCorner\n let singleAbsValueTopRightCorner\n let singleAbsValueBottomLeftCorner\n let singleAbsValueBottomRightCorner\n ;[singleAbsValueTopLeftCorner, borderTopLeftRadius] = resolveRadius(\n borderTopLeftRadius,\n width,\n height,\n fontSize,\n style\n )\n ;[singleAbsValueTopRightCorner, borderTopRightRadius] = resolveRadius(\n borderTopRightRadius,\n width,\n height,\n fontSize,\n style\n )\n ;[singleAbsValueBottomLeftCorner, borderBottomLeftRadius] = resolveRadius(\n borderBottomLeftRadius,\n width,\n height,\n fontSize,\n style\n )\n ;[singleAbsValueBottomRightCorner, borderBottomRightRadius] = resolveRadius(\n borderBottomRightRadius,\n width,\n height,\n fontSize,\n style\n )\n\n if (\n !partialSides &&\n !radiusZeroOrNull(borderTopLeftRadius) &&\n !radiusZeroOrNull(borderTopRightRadius) &&\n !radiusZeroOrNull(borderBottomLeftRadius) &&\n !radiusZeroOrNull(borderBottomRightRadius)\n ) {\n return ''\n }\n borderTopLeftRadius ||= [0, 0]\n borderTopRightRadius ||= [0, 0]\n borderBottomLeftRadius ||= [0, 0]\n borderBottomRightRadius ||= [0, 0]\n\n // Limit the radius sizes of each edge to make sure they will never overlap.\n\n // Top\n ;[borderTopLeftRadius[0], borderTopRightRadius[0]] = resolveSize(\n borderTopLeftRadius[0],\n borderTopRightRadius[0],\n width\n )\n // Bottom\n ;[borderBottomLeftRadius[0], borderBottomRightRadius[0]] = resolveSize(\n borderBottomLeftRadius[0],\n borderBottomRightRadius[0],\n width\n )\n // Left\n ;[borderTopLeftRadius[1], borderBottomLeftRadius[1]] = resolveSize(\n borderTopLeftRadius[1],\n borderBottomLeftRadius[1],\n height\n )\n // Right\n ;[borderTopRightRadius[1], borderBottomRightRadius[1]] = resolveSize(\n borderTopRightRadius[1],\n borderBottomRightRadius[1],\n height\n )\n\n // If the specified border radius is a single value (e.g. 10px or 10em), we take\n // the minimum of the resolved horizontal and vertical radius and apply to both.\n if (singleAbsValueTopLeftCorner) {\n makeSmaller(borderTopLeftRadius)\n }\n if (singleAbsValueTopRightCorner) {\n makeSmaller(borderTopRightRadius)\n }\n if (singleAbsValueBottomLeftCorner) {\n makeSmaller(borderBottomLeftRadius)\n }\n if (singleAbsValueBottomRightCorner) {\n makeSmaller(borderBottomRightRadius)\n }\n\n type Arc = [[number, number], [number, number]]\n const p: Arc[] = []\n p[0] = [borderTopRightRadius, borderTopRightRadius]\n p[1] = [\n borderBottomRightRadius,\n [-borderBottomRightRadius[0], borderBottomRightRadius[1]],\n ]\n p[2] = [\n borderBottomLeftRadius,\n [-borderBottomLeftRadius[0], -borderBottomLeftRadius[1]],\n ]\n p[3] = [\n borderTopLeftRadius,\n [borderTopLeftRadius[0], -borderTopLeftRadius[1]],\n ]\n\n const T = `h${width - borderTopLeftRadius[0] - borderTopRightRadius[0]} a${\n p[0][0]\n } 0 0 1 ${p[0][1]}`\n const R = `v${\n height - borderTopRightRadius[1] - borderBottomRightRadius[1]\n } a${p[1][0]} 0 0 1 ${p[1][1]}`\n const B = `h${\n borderBottomRightRadius[0] + borderBottomLeftRadius[0] - width\n } a${p[2][0]} 0 0 1 ${p[2][1]}`\n const L = `v${borderBottomLeftRadius[1] + borderTopLeftRadius[1] - height} a${\n p[3][0]\n } 0 0 1 ${p[3][1]}`\n\n if (partialSides) {\n // \"However it is not defined what these transitions look like or what function maps from this ratio to a point on the curve.\"\n // https://w3c.github.io/csswg-drafts/css-backgrounds-3/#corner-transitions\n let start = partialSides.indexOf(false)\n\n if (!partialSides.includes(true)) throw new Error('Invalid `partialSides`.')\n\n if (start === -1) {\n start = 0\n } else {\n while (!partialSides[start]) {\n start = (start + 1) % 4\n }\n }\n\n function getArc(i: number) {\n const c0 = svgArcCenterOffset(\n [\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomRightRadius,\n borderBottomLeftRadius,\n ][i]\n )\n return i === 0\n ? [\n [\n left + borderTopLeftRadius[0] - c0,\n top + borderTopLeftRadius[1] - c0,\n ],\n [left + borderTopLeftRadius[0], top],\n ]\n : i === 1\n ? [\n [\n left + width - borderTopRightRadius[0] + c0,\n top + borderTopRightRadius[1] - c0,\n ],\n [left + width, top + borderTopRightRadius[1]],\n ]\n : i === 2\n ? [\n [\n left + width - borderBottomRightRadius[0] + c0,\n top + height - borderBottomRightRadius[1] + c0,\n ],\n [left + width - borderBottomRightRadius[0], top + height],\n ]\n : [\n [\n left + borderBottomLeftRadius[0] - c0,\n top + height - borderBottomLeftRadius[1] + c0,\n ],\n [left, top + height - borderBottomLeftRadius[1]],\n ]\n }\n\n let result = ''\n\n const arc0 = getArc(start)\n\n let l = `M${arc0[0]} A${p[(start + 3) % 4][0]} 0 0 1 ${arc0[1]}`\n\n let len = 0\n for (; len < 4 && partialSides[(start + len) % 4]; len++) {\n result += l + ' '\n l = [T, R, B, L][(start + len) % 4]\n }\n const end = (start + len) % 4\n\n // For the last segment, we skip the full arc and add the half arc.\n result += l.split(' ')[0]\n\n const arc1 = getArc(end)\n result += ` A${p[(end + 3) % 4][0]} 0 0 1 ${arc1[0]}`\n\n return result\n }\n\n // Generate the path\n return `M${left + borderTopLeftRadius[0]},${top} ${T} ${R} ${B} ${L}`\n}\n","import { buildXMLString } from '../utils.js'\nimport radius from './border-radius.js'\n\nfunction compareBorderDirections(a: string, b: string, style: any) {\n return (\n style[a + 'Width'] === style[b + 'Width'] &&\n style[a + 'Style'] === style[b + 'Style'] &&\n style[a + 'Color'] === style[b + 'Color']\n )\n}\n\nexport function getBorderClipPath(\n {\n id,\n // Can be `overflow: hidden` from parent containers.\n currentClipPathId,\n borderPath,\n borderType,\n left,\n top,\n width,\n height,\n }: {\n id: string\n currentClipPathId?: string | number\n borderPath?: string\n borderType?: 'rect' | 'path'\n left: number\n top: number\n width: number\n height: number\n },\n style: Record<string, number | string>\n) {\n const hasBorder =\n style.borderTopWidth ||\n style.borderRightWidth ||\n style.borderBottomWidth ||\n style.borderLeftWidth\n\n if (!hasBorder) return null\n\n // In SVG, stroke is always centered on the path and there is no\n // existing property to make it behave like CSS border. So here we\n // 2x the border width and introduce another clip path to clip the\n // overflowed part.\n const rectClipId = `satori_bc-${id}`\n const defs = buildXMLString(\n 'clipPath',\n {\n id: rectClipId,\n 'clip-path': currentClipPathId ? `url(#${currentClipPathId})` : undefined,\n },\n buildXMLString(borderType, {\n x: left,\n y: top,\n width,\n height,\n d: borderPath ? borderPath : undefined,\n })\n )\n\n return [defs, rectClipId]\n}\n\nexport default function border(\n {\n left,\n top,\n width,\n height,\n props,\n asContentMask,\n maskBorderOnly,\n }: {\n left: number\n top: number\n width: number\n height: number\n props: any\n asContentMask?: boolean\n maskBorderOnly?: boolean\n },\n style: Record<string, number | string>\n) {\n const directions = ['borderTop', 'borderRight', 'borderBottom', 'borderLeft']\n\n // No border\n if (\n !asContentMask &&\n !directions.some((direction) => style[direction + 'Width'])\n )\n return ''\n\n let fullBorder = ''\n\n let start = 0\n while (\n start > 0 &&\n compareBorderDirections(\n directions[start],\n directions[(start + 3) % 4],\n style\n )\n ) {\n start = (start + 3) % 4\n }\n\n let partialSides = [false, false, false, false]\n let currentStyle = []\n for (let _i = 0; _i < 4; _i++) {\n const i = (start + _i) % 4\n const ni = (start + _i + 1) % 4\n\n const d = directions[i]\n const nd = directions[ni]\n\n partialSides[i] = true\n currentStyle = [\n style[d + 'Width'],\n style[d + 'Style'],\n style[d + 'Color'],\n d,\n ]\n\n if (!compareBorderDirections(d, nd, style)) {\n const w =\n (currentStyle[0] || 0) +\n (asContentMask && !maskBorderOnly\n ? style[d.replace('border', 'padding')] || 0\n : 0)\n if (w) {\n fullBorder += buildXMLString('path', {\n width,\n height,\n ...props,\n fill: 'none',\n stroke: asContentMask ? '#000' : currentStyle[2],\n 'stroke-width': w * 2,\n 'stroke-dasharray':\n !asContentMask && currentStyle[1] === 'dashed'\n ? w * 2 + ' ' + w\n : undefined,\n d: radius(\n { left, top, width, height },\n style as Record<string, number>,\n partialSides\n ),\n })\n }\n partialSides = [false, false, false, false]\n }\n }\n\n if (partialSides.some(Boolean)) {\n const w =\n (currentStyle[0] || 0) +\n (asContentMask && !maskBorderOnly\n ? style[currentStyle[3].replace('border', 'padding')] || 0\n : 0)\n if (w) {\n fullBorder += buildXMLString('path', {\n width,\n height,\n ...props,\n fill: 'none',\n stroke: asContentMask ? '#000' : currentStyle[2],\n 'stroke-width': w * 2,\n 'stroke-dasharray':\n !asContentMask && currentStyle[1] === 'dashed'\n ? w * 2 + ' ' + w\n : undefined,\n d: radius(\n { left, top, width, height },\n style as Record<string, number>,\n partialSides\n ),\n })\n }\n }\n\n return fullBorder\n}\n","/**\n * When there is border radius, the content area should be clipped by the\n * inner path of border + padding. This applies to <img> element as well as any\n * child element inside a `overflow: hidden` container.\n */\n\nimport { buildXMLString } from '../utils.js'\nimport border from './border.js'\n\nexport default function contentMask(\n {\n id,\n left,\n top,\n width,\n height,\n matrix,\n borderOnly,\n }: {\n id: string\n left: number\n top: number\n width: number\n height: number\n matrix: string | undefined\n borderOnly?: boolean\n },\n style: Record<string, number | string>\n) {\n const offsetLeft =\n ((style.borderLeftWidth as number) || 0) +\n (borderOnly ? 0 : (style.paddingLeft as number) || 0)\n const offsetTop =\n ((style.borderTopWidth as number) || 0) +\n (borderOnly ? 0 : (style.paddingTop as number) || 0)\n const offsetRight =\n ((style.borderRightWidth as number) || 0) +\n (borderOnly ? 0 : (style.paddingRight as number) || 0)\n const offsetBottom =\n ((style.borderBottomWidth as number) || 0) +\n (borderOnly ? 0 : (style.paddingBottom as number) || 0)\n\n const contentArea = {\n x: left + offsetLeft,\n y: top + offsetTop,\n width: width - offsetLeft - offsetRight,\n height: height - offsetTop - offsetBottom,\n }\n\n const _contentMask = buildXMLString(\n 'mask',\n { id },\n buildXMLString('rect', {\n ...contentArea,\n fill: '#fff',\n mask: style._inheritedMaskId\n ? `url(#${style._inheritedMaskId})`\n : undefined,\n }) +\n border(\n {\n left,\n top,\n width,\n height,\n props: {\n transform: matrix ? matrix : undefined,\n },\n asContentMask: true,\n maskBorderOnly: borderOnly,\n },\n style\n )\n )\n\n return _contentMask\n}\n","import { lengthToNumber } from '../utils.js'\nimport { default as buildBorderRadius } from '../builder/border-radius.js'\nimport { getStylesForProperty } from 'css-to-react-native'\n\nconst regexMap = {\n circle: /circle\\((.+)\\)/,\n ellipse: /ellipse\\((.+)\\)/,\n path: /path\\((.+)\\)/,\n polygon: /polygon\\((.+)\\)/,\n inset: /inset\\((.+)\\)/,\n}\n\nexport function createShapeParser(\n {\n width,\n height,\n }: {\n width: number\n height: number\n },\n style: Record<string, string | number>,\n inheritedStyle: Record<string, string | number>\n) {\n function parseCircle(str: string) {\n const res = str.match(regexMap['circle'])\n\n if (!res) return null\n\n const [, value] = res\n const [radius, pos = ''] = value.split('at').map((v) => v.trim())\n const { x, y } = resolvePosition(pos, width, height)\n\n return {\n type: 'circle',\n r: lengthToNumber(\n radius,\n inheritedStyle.fontSize as number,\n Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2)) / Math.sqrt(2),\n inheritedStyle,\n true\n ),\n cx: lengthToNumber(\n x,\n inheritedStyle.fontSize as number,\n width,\n inheritedStyle,\n true\n ),\n cy: lengthToNumber(\n y,\n inheritedStyle.fontSize as number,\n height,\n inheritedStyle,\n true\n ),\n }\n }\n function parseEllipse(str: string) {\n const res = str.match(regexMap['ellipse'])\n\n if (!res) return null\n\n const [, value] = res\n const [radius, pos = ''] = value.split('at').map((v) => v.trim())\n const [rx, ry] = radius.split(' ')\n const { x, y } = resolvePosition(pos, width, height)\n\n return {\n type: 'ellipse',\n rx: lengthToNumber(\n rx || '50%',\n inheritedStyle.fontSize as number,\n width,\n inheritedStyle,\n true\n ),\n ry: lengthToNumber(\n ry || '50%',\n inheritedStyle.fontSize as number,\n height,\n inheritedStyle,\n true\n ),\n cx: lengthToNumber(\n x,\n inheritedStyle.fontSize as number,\n width,\n inheritedStyle,\n true\n ),\n cy: lengthToNumber(\n y,\n inheritedStyle.fontSize as number,\n height,\n inheritedStyle,\n true\n ),\n }\n }\n function parsePath(str: string) {\n const res = str.match(regexMap['path'])\n\n if (!res) return null\n\n const [fillRule, d] = resolveFillRule(res[1])\n\n return {\n type: 'path',\n d,\n 'fill-rule': fillRule,\n }\n }\n function parsePolygon(str: string) {\n const res = str.match(regexMap['polygon'])\n\n if (!res) return null\n\n const [fillRule, points] = resolveFillRule(res[1])\n\n return {\n type: 'polygon',\n 'fill-rule': fillRule,\n points: points\n .split(',')\n .map((v) =>\n v\n .split(' ')\n .map((k, i) =>\n lengthToNumber(\n k,\n inheritedStyle.fontSize as number,\n i === 0 ? width : height,\n inheritedStyle,\n true\n )\n )\n .join(' ')\n )\n .join(','),\n }\n }\n function parseInset(str: string) {\n const res = str.match(regexMap['inset'])\n\n if (!res) return null\n\n const [inset, radius] = (\n res[1].includes('round') ? res[1] : `${res[1].trim()} round 0`\n ).split('round')\n const radiusMap = getStylesForProperty('borderRadius', radius, true)\n const r = Object.values(radiusMap)\n .map((s) => String(s))\n .map(\n (s, i) =>\n lengthToNumber(\n s,\n inheritedStyle.fontSize as number,\n i === 0 || i === 2 ? height : width,\n inheritedStyle,\n true\n ) || 0\n )\n const offsets = Object.values(getStylesForProperty('margin', inset, true))\n .map((s) => String(s))\n .map(\n (s, i) =>\n lengthToNumber(\n s,\n inheritedStyle.fontSize as number,\n i === 0 || i === 2 ? height : width,\n inheritedStyle,\n true\n ) || 0\n )\n const x = offsets[3]\n const y = offsets[0]\n const w = width - (offsets[1] + offsets[3])\n const h = height - (offsets[0] + offsets[2])\n\n if (r.some((v) => v > 0)) {\n const d = buildBorderRadius(\n { left: x, top: y, width: w, height: h },\n { ...style, ...radiusMap }\n )\n\n return { type: 'path', d }\n }\n\n return {\n type: 'rect',\n x,\n y,\n width: w,\n height: h,\n }\n }\n\n return {\n parseCircle,\n parseEllipse,\n parsePath,\n parsePolygon,\n parseInset,\n }\n}\n\nfunction resolveFillRule(str: string) {\n const [, fillRule = 'nonzero', d] =\n str.replace(/('|\")/g, '').match(/^(nonzero|evenodd)?,?(.+)/) || []\n\n return [fillRule, d]\n}\n\nfunction resolvePosition(position: string, xDelta: number, yDelta: number) {\n const pos = position.split(' ')\n const res: { x: number | string; y: number | string } = {\n x: pos[0] || '50%',\n y: pos[1] || '50%',\n }\n\n pos.forEach((v) => {\n if (v === 'top') {\n res.y = 0\n } else if (v === 'bottom') {\n res.y = yDelta\n } else if (v === 'left') {\n res.x = 0\n } else if (v === 'right') {\n res.x = xDelta\n } else if (v === 'center') {\n res.x = xDelta / 2\n res.y = yDelta / 2\n } else {\n // do nothing\n }\n })\n\n return res\n}\n","import { buildXMLString } from '../utils.js'\nimport { createShapeParser } from '../parser/shape.js'\n\nexport function genClipPathId(id: string) {\n return `satori_cp-${id}`\n}\nexport function genClipPath(id: string) {\n return `url(#${genClipPathId(id)})`\n}\n\nexport function buildClipPath(\n v: {\n left: number\n top: number\n width: number\n height: number\n path: string\n matrix: string | undefined\n id: string\n currentClipPath: string | string\n src?: string\n },\n style: Record<string, string | number>,\n inheritedStyle: Record<string, string | number>\n) {\n if (style.clipPath === 'none') return ''\n\n const parser = createShapeParser(v, style, inheritedStyle)\n const clipPath = style.clipPath as string\n\n let tmp: { type: string; [p: string]: string | number } = { type: '' }\n\n for (const k of Object.keys(parser)) {\n tmp = parser[k](clipPath)\n if (tmp) break\n }\n\n if (tmp) {\n const { type, ...rest } = tmp\n return buildXMLString(\n 'clipPath',\n {\n id: genClipPathId(v.id),\n 'clip-path': v.currentClipPath,\n transform: `translate(${v.left}, ${v.top})`,\n },\n buildXMLString(type, rest)\n )\n }\n return ''\n}\n","/**\n * Generate clip path for the given element.\n */\n\nimport { buildXMLString } from '../utils.js'\nimport mask from './content-mask.js'\nimport { buildClipPath, genClipPathId } from './clip-path.js'\n\nexport default function overflow(\n {\n left,\n top,\n width,\n height,\n path,\n matrix,\n id,\n currentClipPath,\n src,\n }: {\n left: number\n top: number\n width: number\n height: number\n path: string\n matrix: string | undefined\n id: string\n currentClipPath: string | string\n src?: string\n },\n style: Record<string, string | number>,\n inheritableStyle: Record<string, string | number>\n) {\n let overflowClipPath = ''\n const clipPath =\n style.clipPath && style.clipPath !== 'none'\n ? buildClipPath(\n { left, top, width, height, path, id, matrix, currentClipPath, src },\n style as Record<string, number>,\n inheritableStyle\n )\n : ''\n\n if (style.overflow !== 'hidden' && !src) {\n overflowClipPath = ''\n } else {\n const _id = clipPath ? `satori_ocp-${id}` : genClipPathId(id)\n\n overflowClipPath = buildXMLString(\n 'clipPath',\n {\n id: _id,\n 'clip-path': currentClipPath,\n },\n buildXMLString(path ? 'path' : 'rect', {\n x: left,\n y: top,\n width,\n height,\n d: path ? path : undefined,\n })\n )\n }\n\n const contentMask = mask(\n {\n id: `satori_om-${id}`,\n left,\n top,\n width,\n height,\n matrix,\n borderOnly: src ? false : true,\n },\n style\n )\n\n return clipPath + overflowClipPath + contentMask\n}\n","import { buildXMLString } from '../utils.js'\nimport buildBackgroundImage from './background-image.js'\nimport type { MaskProperty } from '../parser/mask.js'\n\nconst genMaskImageId = (id: string) => `satori_mi-${id}`\n\nexport default async function buildMaskImage(\n v: {\n id: string\n left: number\n top: number\n width: number\n height: number\n },\n style: Record<string, string | number>,\n inheritedStyle: Record<string, string | number>\n): Promise<[string, string]> {\n if (!style.maskImage) return ['', '']\n const { left, top, width, height, id } = v\n const maskImage = style.maskImage as unknown as MaskProperty[]\n const length = maskImage.length\n if (!length) return ['', '']\n const miId = genMaskImageId(id)\n\n let mask = ''\n\n for (let i = 0; i < length; i++) {\n const m = maskImage[i]\n\n const [_id, def] = await buildBackgroundImage(\n { id: `${miId}-${i}`, left, top, width, height },\n m,\n inheritedStyle,\n 'mask'\n )\n\n mask +=\n def +\n buildXMLString('rect', {\n x: left,\n y: top,\n width,\n height,\n fill: `url(#${_id})`,\n })\n }\n\n mask = buildXMLString('mask', { id: miId }, mask)\n\n return [miId, mask]\n}\n","import type { ParsedTransformOrigin } from '../transform-origin.js'\n\nimport backgroundImage from './background-image.js'\nimport radius from './border-radius.js'\nimport { boxShadow } from './shadow.js'\nimport transform from './transform.js'\nimport overflow from './overflow.js'\nimport { buildXMLString } from '../utils.js'\nimport border, { getBorderClipPath } from './border.js'\nimport { genClipPath } from './clip-path.js'\nimport buildMaskImage from './mask-image.js'\n\nexport default async function rect(\n {\n id,\n left,\n top,\n width,\n height,\n isInheritingTransform,\n src,\n debug,\n }: {\n id: string\n left: number\n top: number\n width: number\n height: number\n isInheritingTransform: boolean\n src?: string\n debug?: boolean\n },\n style: Record<string, number | string>,\n inheritableStyle: Record<string, number | string>\n) {\n if (style.display === 'none') return ''\n\n const isImage = !!src\n\n let type: 'rect' | 'path' = 'rect'\n let matrix = ''\n let defs = ''\n let fills: string[] = []\n let opacity = 1\n let extra = ''\n\n if (style.backgroundColor) {\n fills.push(style.backgroundColor as string)\n }\n\n if (style.opacity !== undefined) {\n opacity = +style.opacity\n }\n\n if (style.transform) {\n matrix = transform(\n {\n left,\n top,\n width,\n height,\n },\n style.transform as unknown as number[],\n isInheritingTransform,\n style.transformOrigin as ParsedTransformOrigin | undefined\n )\n }\n\n let backgroundShapes = ''\n if (style.backgroundImage) {\n const backgrounds: string[][] = []\n\n for (\n let index = 0;\n index < (style.backgroundImage as any).length;\n index++\n ) {\n const background = (style.backgroundImage as any)[index]\n const image = await backgroundImage(\n { id: id + '_' + index, width, height, left, top },\n background,\n inheritableStyle\n )\n if (image) {\n // Background images that come first in the array are rendered last.\n backgrounds.unshift(image)\n }\n }\n\n for (const background of backgrounds) {\n fills.push(`url(#${background[0]})`)\n defs += background[1]\n if (background[2]) {\n backgroundShapes += background[2]\n }\n }\n }\n\n const [miId, mi] = await buildMaskImage(\n { id, left, top, width, height },\n style,\n inheritableStyle\n )\n\n defs += mi\n const maskId = miId\n ? `url(#${miId})`\n : style._inheritedMaskId\n ? `url(#${style._inheritedMaskId})`\n : undefined\n\n const path = radius(\n { left, top, width, height },\n style as Record<string, number>\n )\n if (path) {\n type = 'path'\n }\n\n const clipPathId = style._inheritedClipPathId as number | undefined\n\n if (debug) {\n extra = buildXMLString('rect', {\n x: left,\n y: top,\n width,\n height,\n fill: 'transparent',\n stroke: '#ff5757',\n 'stroke-width': 1,\n transform: matrix || undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n })\n }\n\n const { backgroundClip, filter: cssFilter } = style\n\n const currentClipPath =\n backgroundClip === 'text'\n ? `url(#satori_bct-${id})`\n : clipPathId\n ? `url(#${clipPathId})`\n : style.clipPath\n ? genClipPath(id)\n : undefined\n\n const clip = overflow(\n { left, top, width, height, path, id, matrix, currentClipPath, src },\n style as Record<string, number>,\n inheritableStyle\n )\n\n // Each background generates a new rectangle.\n // @TODO: Not sure if this is the best way to do it, maybe <pattern> with\n // multiple <image>s is better.\n let shape = fills\n .map((fill) =>\n buildXMLString(type, {\n x: left,\n y: top,\n width,\n height,\n fill,\n d: path ? path : undefined,\n transform: matrix ? matrix : undefined,\n 'clip-path': currentClipPath,\n style: cssFilter ? `filter:${cssFilter}` : undefined,\n mask: maskId,\n })\n )\n .join('')\n\n const borderClip = getBorderClipPath(\n {\n id,\n left,\n top,\n width,\n height,\n currentClipPathId: clipPathId,\n borderPath: path,\n borderType: type,\n },\n style\n )\n\n // If it's an image (<img>) tag, we add an extra layer of the image itself.\n if (isImage) {\n // We need to subtract the border and padding sizes from the image size.\n const offsetLeft =\n ((style.borderLeftWidth as number) || 0) +\n ((style.paddingLeft as number) || 0)\n const offsetTop =\n ((style.borderTopWidth as number) || 0) +\n ((style.paddingTop as number) || 0)\n const offsetRight =\n ((style.borderRightWidth as number) || 0) +\n ((style.paddingRight as number) || 0)\n const offsetBottom =\n ((style.borderBottomWidth as number) || 0) +\n ((style.paddingBottom as number) || 0)\n\n const preserveAspectRatio =\n style.objectFit === 'contain'\n ? 'xMidYMid'\n : style.objectFit === 'cover'\n ? 'xMidYMid slice'\n : 'none'\n\n shape += buildXMLString('image', {\n x: left + offsetLeft,\n y: top + offsetTop,\n width: width - offsetLeft - offsetRight,\n height: height - offsetTop - offsetBottom,\n href: src,\n preserveAspectRatio,\n transform: matrix ? matrix : undefined,\n style: cssFilter ? `filter:${cssFilter}` : undefined,\n 'clip-path': `url(#satori_cp-${id})`,\n mask: miId ? `url(#${miId})` : `url(#satori_om-${id})`,\n })\n }\n\n if (borderClip) {\n defs += borderClip[0]\n const rectClipId = borderClip[1]\n\n shape += border(\n {\n left,\n top,\n width,\n height,\n props: {\n transform: matrix ? matrix : undefined,\n // When using `background-clip: text`, we need to draw the extra border because\n // it shouldn't be clipped by the clip path, so we are not using currentClipPath here.\n 'clip-path': `url(#${rectClipId})`,\n },\n },\n style\n )\n }\n\n // box-shadow.\n const shadow = boxShadow(\n {\n width,\n height,\n id,\n opacity,\n shape: buildXMLString(type, {\n x: left,\n y: top,\n width,\n height,\n fill: '#fff',\n stroke: '#fff',\n 'stroke-width': 0,\n d: path ? path : undefined,\n transform: matrix ? matrix : undefined,\n 'clip-path': currentClipPath,\n mask: maskId,\n }),\n },\n style\n )\n\n return (\n (defs ? buildXMLString('defs', {}, defs) : '') +\n (shadow ? shadow[0] : '') +\n clip +\n (opacity !== 1 ? `<g opacity=\"${opacity}\">` : '') +\n (backgroundShapes || shape) +\n (opacity !== 1 ? `</g>` : '') +\n (shadow ? shadow[1] : '') +\n extra\n )\n}\n","export default () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26F9(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC3\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC08\\uDC26](?:\\u200D\\u2B1B)?|[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC2\\uDECE-\\uDEDB\\uDEE0-\\uDEE8]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","// This function guesses the human language (writing system) of the given\n// JavaScript string, using the Unicode Alias in extended RegExp.\n//\n// You can learn more about this in:\n// - https://en.wikipedia.org/wiki/Script_(Unicode)\n// - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes\n// - https://unicode.org/reports/tr18/#General_Category_Property\n// - https://tc39.es/ecma262/multipage/text-processing.html#table-unicode-script-values\n\nimport createEmojiRegex from 'emoji-regex'\n\n// Remove the \"g\" flag\nconst emojiRegex = new RegExp(createEmojiRegex(), '')\n\n// Supported languages. The order matters.\n// Usually, this is only for \"special cases\" like CJKV languages as latin\n// characters are usually included in the base font, and can be safely fallback\n// to the Noto Sans font. A list of special cases we want to support can be\n// found here (sort by popularity):\n// - https://fonts.google.com/noto/fonts?sort=popularity&noto.query=sans\n//\n// We can't tell if a hanzi(kanji) is Chinese or Japanese by regular expressions.\n// - https://unicode.org/faq/han_cjk.html\n\nconst specialCode = {\n emoji: emojiRegex,\n symbol: /\\p{Symbol}/u,\n math: /\\p{Math}/u,\n} as const\n\nconst code = {\n 'ja-JP': /\\p{scx=Hira}|\\p{scx=Kana}|\\p{scx=Han}|[\\u3000]|[\\uFF00-\\uFFEF]/u,\n 'ko-KR': /\\p{scx=Hangul}/u,\n 'zh-CN': /\\p{scx=Han}/u,\n 'zh-TW': /\\p{scx=Han}/u,\n 'zh-HK': /\\p{scx=Han}/u,\n 'th-TH': /\\p{scx=Thai}/u,\n 'bn-IN': /\\p{scx=Bengali}/u,\n 'ar-AR': /\\p{scx=Arabic}/u,\n 'ta-IN': /\\p{scx=Tamil}/u,\n 'ml-IN': /\\p{scx=Malayalam}/u,\n 'he-IL': /\\p{scx=Hebrew}/u,\n 'te-IN': /\\p{scx=Telugu}/u,\n devanagari: /\\p{scx=Devanagari}/u,\n kannada: /\\p{scx=Kannada}/u,\n} as const\n\ntype SpecialCodeKey = keyof typeof specialCode\ntype CodeKey = keyof typeof specialCode | keyof typeof code\nexport type Locale = keyof typeof code\nexport type LangCode = CodeKey | 'unknown'\n\nexport const locales = Object.keys({ ...code, ...specialCode }) as Locale[]\nexport function isValidLocale(x: any): x is Locale {\n return locales.includes(x)\n}\n\nexport function detectLanguageCode(\n segment: string,\n locale?: Locale\n): Array<Locale> | ['unknown'] | [SpecialCodeKey] {\n for (const c of Object.keys(specialCode) as SpecialCodeKey[]) {\n if (specialCode[c].test(segment)) {\n return [c]\n }\n }\n\n const languages = Object.keys(code).filter((lang) =>\n code[lang].test(segment)\n ) as Locale[]\n\n if (languages.length === 0) {\n return ['unknown']\n }\n\n if (locale) {\n const index = languages.findIndex((lang) => lang === locale)\n if (index !== -1) {\n languages.splice(index, 1)\n languages.unshift(locale)\n }\n }\n\n return languages\n}\n\nexport function normalizeLocale(locale?: string): Locale | undefined {\n if (locale) {\n return locales.find((l) => l.toLowerCase().startsWith(locale.toLowerCase()))\n }\n}\n","/**\n * This module is used to calculate the layout of the current sub-tree.\n */\n\nimport type { ReactNode } from 'react'\nimport type { Node as YogaNode } from 'yoga-wasm-web'\n\nimport getYoga from './yoga/index.js'\nimport {\n isReactElement,\n isClass,\n buildXMLString,\n normalizeChildren,\n hasDangerouslySetInnerHTMLProp,\n} from './utils.js'\nimport { SVGNodeToImage } from './handler/preprocess.js'\nimport computeStyle from './handler/compute.js'\nimport FontLoader from './font.js'\nimport buildTextNodes from './text/index.js'\nimport rect from './builder/rect.js'\nimport { Locale, normalizeLocale } from './language.js'\nimport { SerializedStyle } from './handler/expand.js'\n\nexport interface LayoutContext {\n id: string\n parentStyle: SerializedStyle\n inheritedStyle: SerializedStyle\n isInheritingTransform?: boolean\n parent: YogaNode\n font: FontLoader\n embedFont: boolean\n debug?: boolean\n graphemeImages?: Record<string, string>\n canLoadAdditionalAssets: boolean\n locale?: Locale\n getTwStyles: (tw: string, style: any) => any\n onNodeDetected?: (node: SatoriNode) => void\n}\n\nexport interface SatoriNode {\n // Layout information.\n left: number\n top: number\n width: number\n height: number\n type: string\n key?: string | number\n props: Record<string, any>\n textContent?: string\n}\n\nexport default async function* layout(\n element: ReactNode,\n context: LayoutContext\n): AsyncGenerator<\n { word: string; locale?: string }[],\n string,\n [number, number]\n> {\n const Yoga = await getYoga()\n const {\n id,\n inheritedStyle,\n parent,\n font,\n debug,\n locale,\n embedFont = true,\n graphemeImages,\n canLoadAdditionalAssets,\n getTwStyles,\n } = context\n\n // 1. Pre-process the node.\n if (element === null || typeof element === 'undefined') {\n yield\n yield\n return ''\n }\n\n // Not a regular element.\n if (!isReactElement(element) || typeof element.type === 'function') {\n let iter: ReturnType<typeof layout>\n\n if (!isReactElement(element)) {\n // Process as text node.\n iter = buildTextNodes(String(element), context)\n yield (await iter.next()).value as { word: string; locale?: Locale }[]\n } else {\n if (isClass(element.type as Function)) {\n throw new Error('Class component is not supported.')\n }\n // If it's a custom component, Satori strictly requires it to be pure,\n // stateless, and not relying on any React APIs such as hooks or suspense.\n // So we can safely evaluate it to render. Otherwise, an error will be\n // thrown by React.\n iter = layout((element.type as Function)(element.props), context)\n yield (await iter.next()).value as { word: string; locale?: string }[]\n }\n\n await iter.next()\n const offset = yield\n return (await iter.next(offset)).value as string\n }\n\n // Process as element.\n const { type, props } = element\n if (props && hasDangerouslySetInnerHTMLProp(props)) {\n throw new Error(\n 'dangerouslySetInnerHTML property is not supported. See documentation for more information https://github.com/vercel/satori#jsx.'\n )\n }\n let { style, children, tw, lang: _newLocale = locale } = props || {}\n const newLocale = normalizeLocale(_newLocale)\n\n // Extend Tailwind styles.\n if (tw) {\n const twStyles = getTwStyles(tw, style)\n style = Object.assign(twStyles, style)\n }\n\n const node = Yoga.Node.create()\n parent.insertChild(node, parent.getChildCount())\n\n const [computedStyle, newInheritableStyle] = await computeStyle(\n node,\n type,\n inheritedStyle,\n style,\n props\n )\n // Post-process styles to attach inheritable properties for Satori.\n\n // If the element is inheriting the parent `transform`, or applying its own.\n // This affects the coordinate system.\n const isInheritingTransform =\n computedStyle.transform === inheritedStyle.transform\n if (!isInheritingTransform) {\n ;(computedStyle.transform as any).__parent = inheritedStyle.transform\n }\n\n // If the element has `overflow` set to `hidden` or clip-path is set, we need to create a clip\n // path and use it in all its children.\n if (\n computedStyle.overflow === 'hidden' ||\n (computedStyle.clipPath && computedStyle.clipPath !== 'none')\n ) {\n newInheritableStyle._inheritedClipPathId = `satori_cp-${id}`\n newInheritableStyle._inheritedMaskId = `satori_om-${id}`\n }\n\n if (computedStyle.maskImage) {\n newInheritableStyle._inheritedMaskId = `satori_mi-${id}`\n }\n\n // If the element has `background-clip: text` set, we need to create a clip\n // path and use it in all its children.\n if (computedStyle.backgroundClip === 'text') {\n const mutateRefValue = { value: '' } as any\n newInheritableStyle._inheritedBackgroundClipTextPath = mutateRefValue\n computedStyle._inheritedBackgroundClipTextPath = mutateRefValue\n }\n\n // 2. Do layout recursively for its children.\n const normalizedChildren = normalizeChildren(children)\n const iterators: ReturnType<typeof layout>[] = []\n\n let i = 0\n const segmentsMissingFont: { word: string; locale?: string }[] = []\n for (const child of normalizedChildren) {\n const iter = layout(child, {\n id: id + '-' + i++,\n parentStyle: computedStyle,\n inheritedStyle: newInheritableStyle,\n isInheritingTransform: true,\n parent: node,\n font,\n embedFont,\n debug,\n graphemeImages,\n canLoadAdditionalAssets,\n locale: newLocale,\n getTwStyles,\n onNodeDetected: context.onNodeDetected,\n })\n if (canLoadAdditionalAssets) {\n segmentsMissingFont.push(...(((await iter.next()).value as any) || []))\n } else {\n await iter.next()\n }\n iterators.push(iter)\n }\n yield segmentsMissingFont\n for (const iter of iterators) await iter.next()\n\n // 3. Post-process the node.\n const [x, y] = yield\n let { left, top, width, height } = node.getComputedLayout()\n // Attach offset to the current node.\n left += x\n top += y\n\n let childrenRenderResult = ''\n let baseRenderResult = ''\n let depsRenderResult = ''\n\n // Emit event for the current node. We don't pass the children prop to the\n // event handler because everything is already flattened, unless it's a text\n // node.\n const { children: childrenNode, ...restProps } = props\n context.onNodeDetected?.({\n left,\n top,\n width,\n height,\n type,\n props: restProps,\n key: element.key,\n textContent: isReactElement(childrenNode) ? undefined : childrenNode,\n })\n\n // Generate the rendered markup for the current node.\n if (type === 'img') {\n const src = computedStyle.__src as string\n baseRenderResult = await rect(\n {\n id,\n left,\n top,\n width,\n height,\n src,\n isInheritingTransform,\n debug,\n },\n computedStyle,\n newInheritableStyle\n )\n } else if (type === 'svg') {\n // When entering a <svg> node, we need to convert it to a <img> with the\n // SVG data URL embedded.\n const currentColor = computedStyle.color\n const src = await SVGNodeToImage(element, currentColor)\n baseRenderResult = await rect(\n {\n id,\n left,\n top,\n width,\n height,\n src,\n isInheritingTransform,\n debug,\n },\n computedStyle,\n newInheritableStyle\n )\n } else {\n const display = style?.display\n if (\n type === 'div' &&\n children &&\n typeof children !== 'string' &&\n display !== 'flex' &&\n display !== 'none'\n ) {\n throw new Error(\n `Expected <div> to have explicit \"display: flex\" or \"display: none\" if it has more than one child node.`\n )\n }\n baseRenderResult = await rect(\n { id, left, top, width, height, isInheritingTransform, debug },\n computedStyle,\n newInheritableStyle\n )\n }\n\n // Generate the rendered markup for the children.\n for (const iter of iterators) {\n childrenRenderResult += (await iter.next([left, top])).value\n }\n\n // An extra pass to generate the special background-clip shape collected from\n // children.\n if (computedStyle._inheritedBackgroundClipTextPath) {\n depsRenderResult += buildXMLString(\n 'clipPath',\n {\n id: `satori_bct-${id}`,\n 'clip-path': computedStyle._inheritedClipPathId\n ? `url(#${computedStyle._inheritedClipPathId})`\n : undefined,\n },\n (computedStyle._inheritedBackgroundClipTextPath as any).value\n )\n }\n\n return depsRenderResult + baseRenderResult + childrenRenderResult\n}\n","/**\n * This class handles everything related to fonts.\n */\nimport opentype from '@shuding/opentype.js'\nimport { Locale, locales, isValidLocale } from './language.js'\n\nexport type Weight = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900\nexport type WeightName = 'normal' | 'bold'\nexport type FontWeight = Weight | WeightName\nexport type FontStyle = 'normal' | 'italic'\nconst SUFFIX_WHEN_LANG_NOT_SET = 'unknown'\n\nexport interface FontOptions {\n data: Buffer | ArrayBuffer\n name: string\n weight?: Weight\n style?: FontStyle\n lang?: string\n}\n\nexport type FontEngine = {\n has: (s: string) => boolean\n baseline: (s?: string, resolvedFont?: any) => number\n height: (s?: string, resolvedFont?: any) => number\n measure: (\n s: string,\n style: {\n fontSize: number\n letterSpacing: number\n }\n ) => number\n getSVG: (\n s: string,\n style: {\n fontSize: number\n top: number\n left: number\n letterSpacing: number\n }\n ) => string\n}\n\nfunction compareFont(\n weight,\n style,\n [matchedWeight, matchedStyle],\n [nextWeight, nextStyle]\n) {\n if (matchedWeight !== nextWeight) {\n // Put the defined weight first.\n if (!matchedWeight) return 1\n if (!nextWeight) return -1\n\n // Exact match.\n if (matchedWeight === weight) return -1\n if (nextWeight === weight) return 1\n\n // 400 and 500.\n if (weight === 400 && matchedWeight === 500) return -1\n if (weight === 500 && matchedWeight === 400) return -1\n if (weight === 400 && nextWeight === 500) return 1\n if (weight === 500 && nextWeight === 400) return 1\n\n // Less than 400.\n if (weight < 400) {\n if (matchedWeight < weight && nextWeight < weight)\n return nextWeight - matchedWeight\n if (matchedWeight < weight) return -1\n if (nextWeight < weight) return 1\n return matchedWeight - nextWeight\n }\n\n // Greater than 500.\n if (weight < matchedWeight && weight < nextWeight)\n return matchedWeight - nextWeight\n if (weight < matchedWeight) return -1\n if (weight < nextWeight) return 1\n return nextWeight - matchedWeight\n }\n\n if (matchedStyle !== nextStyle) {\n // Exact match.\n if (matchedStyle === style) return -1\n if (nextStyle === style) return 1\n }\n\n return -1\n}\n\nexport default class FontLoader {\n defaultFont: opentype.Font\n fonts = new Map<string, [opentype.Font, Weight?, FontStyle?][]>()\n constructor(fontOptions: FontOptions[]) {\n this.addFonts(fontOptions)\n }\n\n // Get font by name and weight.\n private get({\n name,\n weight,\n style,\n }: {\n name: string\n weight: Weight | WeightName\n style: FontStyle\n }) {\n if (!this.fonts.has(name)) {\n return null\n }\n\n if (weight === 'normal') weight = 400\n if (weight === 'bold') weight = 700\n if (typeof weight === 'string')\n weight = Number.parseInt(weight, 10) as Weight\n\n const fonts = [...this.fonts.get(name)]\n\n let matchedFont = fonts[0]\n\n // Fallback to the closest weight and style according to the strategy here:\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight#fallback_weights\n for (let i = 1; i < fonts.length; i++) {\n const [, weight1, style1] = matchedFont\n const [, weight2, style2] = fonts[i]\n if (\n compareFont(weight, style, [weight1, style1], [weight2, style2]) > 0\n ) {\n matchedFont = fonts[i]\n }\n }\n\n return matchedFont[0]\n }\n\n public addFonts(fontOptions: FontOptions[]) {\n for (const fontOption of fontOptions) {\n const { name, data, lang } = fontOption\n if (lang && !isValidLocale(lang)) {\n throw new Error(\n `Invalid value for props \\`lang\\`: \"${lang}\". The value must be one of the following: ${locales.join(\n ', '\n )}.`\n )\n }\n const _lang = lang ?? SUFFIX_WHEN_LANG_NOT_SET\n const font = opentype.parse(\n // Buffer to ArrayBuffer.\n 'buffer' in data\n ? data.buffer.slice(\n data.byteOffset,\n data.byteOffset + data.byteLength\n )\n : data,\n // @ts-ignore\n { lowMemory: true }\n )\n\n // Modify the `charToGlyphIndex` method, so we can know which char is\n // being mapped to which glyph.\n const originalCharToGlyphIndex = font.charToGlyphIndex\n font.charToGlyphIndex = (char) => {\n const index = originalCharToGlyphIndex.call(font, char)\n if (index === 0) {\n // The current requested char is missing a glyph.\n if ((font as any)._trackBrokenChars) {\n ;(font as any)._trackBrokenChars.push(char)\n }\n }\n return index\n }\n\n // We use the first font as the default font fallback.\n if (!this.defaultFont) this.defaultFont = font\n\n const _name = `${name.toLowerCase()}_${_lang}`\n\n if (!this.fonts.has(_name)) {\n this.fonts.set(_name, [])\n }\n this.fonts.get(_name).push([font, fontOption.weight, fontOption.style])\n }\n }\n\n public getEngine(\n fontSize = 16,\n lineHeight = 1.2,\n {\n fontFamily = 'sans-serif',\n fontWeight = 400,\n fontStyle = 'normal',\n }: {\n fontFamily?: string | string[]\n fontWeight?: FontWeight\n fontStyle?: FontStyle\n },\n locale: Locale | undefined\n ): FontEngine {\n if (!this.fonts.size) {\n throw new Error(\n 'No fonts are loaded. At least one font is required to calculate the layout.'\n )\n }\n\n fontFamily = (Array.isArray(fontFamily) ? fontFamily : [fontFamily]).map(\n (name) => name.toLowerCase()\n )\n const fonts = []\n fontFamily.forEach((face) => {\n const getNormal = this.get({\n name: face,\n weight: fontWeight,\n style: fontStyle,\n })\n if (getNormal) {\n fonts.push(getNormal)\n return\n }\n\n const getUnknown = this.get({\n name: face + '_unknown',\n weight: fontWeight,\n style: fontStyle,\n })\n\n if (getUnknown) {\n fonts.push(getUnknown)\n return\n }\n })\n\n // Add additional fonts as the fallback.\n const keys = Array.from(this.fonts.keys())\n const specifiedLangFonts = []\n const nonSpecifiedLangFonts = []\n const additionalFonts = []\n for (const name of keys) {\n if (fontFamily.includes(name)) continue\n if (locale) {\n const lang = getLangFromFontName(name)\n if (lang) {\n if (lang === locale) {\n specifiedLangFonts.push(\n this.get({\n name,\n weight: fontWeight,\n style: fontStyle,\n })\n )\n } else {\n nonSpecifiedLangFonts.push(\n this.get({\n name,\n weight: fontWeight,\n style: fontStyle,\n })\n )\n }\n } else {\n additionalFonts.push(\n this.get({\n name,\n weight: fontWeight,\n style: fontStyle,\n })\n )\n }\n } else {\n additionalFonts.push(\n this.get({\n name,\n weight: fontWeight,\n style: fontStyle,\n })\n )\n }\n }\n\n const cachedFontResolver = new Map<number, opentype.Font | undefined>()\n const resolveFont = (word: string, fallback = true) => {\n const _fonts = [\n ...fonts,\n ...additionalFonts,\n ...specifiedLangFonts,\n ...(fallback ? nonSpecifiedLangFonts : []),\n ]\n\n if (typeof word === 'undefined') {\n if (fallback) {\n return _fonts[_fonts.length - 1]\n }\n return undefined\n }\n\n const code = word.charCodeAt(0)\n if (cachedFontResolver.has(code)) return cachedFontResolver.get(code)\n\n const font = _fonts.find((_font, index) => {\n return (\n !!_font.charToGlyphIndex(word) ||\n (fallback && index === _fonts.length - 1)\n )\n })\n\n if (font) {\n cachedFontResolver.set(code, font)\n }\n\n return font\n }\n\n const ascender = (resolvedFont: opentype.Font, useOS2Table = false) => {\n const _ascender =\n (useOS2Table ? resolvedFont.tables?.os2?.sTypoAscender : 0) ||\n resolvedFont.ascender\n return (_ascender / resolvedFont.unitsPerEm) * fontSize\n }\n const descender = (resolvedFont: opentype.Font, useOS2Table = false) => {\n const _descender =\n (useOS2Table ? resolvedFont.tables?.os2?.sTypoDescender : 0) ||\n resolvedFont.descender\n return (_descender / resolvedFont.unitsPerEm) * fontSize\n }\n\n const resolve = (s: string) => {\n return resolveFont(s, false)\n }\n\n const engine = {\n has: (s: string) => {\n if (s === '\\n') return true\n const font = resolve(s)\n if (!font) return false\n ;(font as any)._trackBrokenChars = []\n font.stringToGlyphs(s)\n if (!(font as any)._trackBrokenChars.length) return true\n ;(font as any)._trackBrokenChars = undefined\n return false\n },\n baseline: (\n s?: string,\n resolvedFont = typeof s === 'undefined' ? fonts[0] : resolveFont(s)\n ) => {\n // https://www.w3.org/TR/css-inline-3/#css-metrics\n // https://www.w3.org/TR/CSS2/visudet.html#leading\n // Note. It is recommended that implementations that use OpenType or\n // TrueType fonts use the metrics \"sTypoAscender\" and \"sTypoDescender\"\n // from the font's OS/2 table for A and D (after scaling to the current\n // element's font size). In the absence of these metrics, the \"Ascent\"\n // and \"Descent\" metrics from the HHEA table should be used.\n const A = ascender(resolvedFont, true)\n const D = descender(resolvedFont, true)\n const glyphHeight = engine.height(s, resolvedFont)\n const { yMax, yMin } = resolvedFont.tables.head\n\n const sGlyphHeight = A - D\n const baselineOffset = (yMax / (yMax - yMin) - 1) * sGlyphHeight\n\n return glyphHeight * ((1.2 / lineHeight + 1) / 2) + baselineOffset\n },\n height: (\n s?: string,\n resolvedFont = typeof s === 'undefined' ? fonts[0] : resolveFont(s)\n ) => {\n return (\n (ascender(resolvedFont) - descender(resolvedFont)) *\n (lineHeight / 1.2)\n )\n },\n measure: (\n s: string,\n style: {\n fontSize: number\n letterSpacing: number\n }\n ) => {\n return this.measure(resolveFont, s, style)\n },\n getSVG: (\n s: string,\n style: {\n fontSize: number\n top: number\n left: number\n letterSpacing: number\n }\n ) => {\n return this.getSVG(resolveFont, s, style)\n },\n }\n\n return engine\n }\n\n private patchFontFallbackResolver(\n font: opentype.Font,\n resolveFont: (word: string, fallback?: boolean) => opentype.Font\n ) {\n const brokenChars = []\n ;(font as any)._trackBrokenChars = brokenChars\n\n const originalStringToGlyphs = font.stringToGlyphs\n font.stringToGlyphs = (s: string, ...args: any) => {\n const glyphs = originalStringToGlyphs.call(font, s, ...args)\n\n for (let i = 0; i < glyphs.length; i++) {\n // Hitting an undefined glyph. We have to try to resolve it from other\n // fonts.\n // @TODO: This affects the kerning resolution but should be fine for now.\n if (glyphs[i].unicode === undefined) {\n const char = brokenChars.shift()\n const anotherFont = resolveFont(char)\n if (anotherFont !== font) {\n const glyph = anotherFont.charToGlyph(char)\n // Scale the glyph to match the current units per em.\n const scale = font.unitsPerEm / anotherFont.unitsPerEm\n const p = new opentype.Path()\n p.unitsPerEm = font.unitsPerEm\n p.commands = glyph.path.commands.map((command) => {\n const scaledCommand = { ...command }\n for (let k in scaledCommand) {\n if (typeof scaledCommand[k] === 'number') {\n scaledCommand[k] *= scale\n }\n }\n return scaledCommand\n })\n const g = new opentype.Glyph({\n ...glyph,\n advanceWidth: glyph.advanceWidth * scale,\n xMin: glyph.xMin * scale,\n xMax: glyph.xMax * scale,\n yMin: glyph.yMin * scale,\n yMax: glyph.yMax * scale,\n path: p,\n })\n\n glyphs[i] = g\n }\n }\n }\n\n return glyphs\n }\n\n return () => {\n font.stringToGlyphs = originalStringToGlyphs\n ;(font as any)._trackBrokenChars = undefined\n }\n }\n\n private measure(\n resolveFont: (word: string, fallback?: boolean) => opentype.Font,\n content: string,\n {\n fontSize,\n letterSpacing = 0,\n }: {\n fontSize: number\n letterSpacing: number\n }\n ) {\n const font = resolveFont(content)\n const unpatch = this.patchFontFallbackResolver(font, resolveFont)\n\n try {\n return font.getAdvanceWidth(content, fontSize, {\n letterSpacing: letterSpacing / fontSize,\n })\n } finally {\n unpatch()\n }\n }\n\n private getSVG(\n resolveFont: (word: string, fallback?: boolean) => opentype.Font,\n content: string,\n {\n fontSize,\n top,\n left,\n letterSpacing = 0,\n }: {\n fontSize: number\n top: number\n left: number\n letterSpacing: number\n }\n ) {\n const font = resolveFont(content)\n const unpatch = this.patchFontFallbackResolver(font, resolveFont)\n\n try {\n if (fontSize === 0) {\n return ''\n }\n return font\n .getPath(content.replace(/\\n/g, ''), left, top, fontSize, {\n letterSpacing: letterSpacing / fontSize,\n })\n .toPathData(1)\n } finally {\n unpatch()\n }\n }\n}\n\nfunction getLangFromFontName(name: string): Locale | undefined {\n const arr = name.split('_')\n const lang = arr[arr.length - 1]\n\n return lang === SUFFIX_WHEN_LANG_NOT_SET ? undefined : (lang as Locale)\n}\n","import { buildXMLString } from '../utils.js'\n\nexport default function svg({\n width,\n height,\n content,\n}: {\n width: number\n height: number\n content: string\n}) {\n return buildXMLString(\n 'svg',\n {\n width,\n height,\n viewBox: `0 0 ${width} ${height}`,\n xmlns: 'http://www.w3.org/2000/svg',\n },\n content\n )\n}\n","import resolveConfig from 'tailwindcss/resolveConfig';\nimport Cache from './cache';\nimport ClassParser from './ClassParser';\nimport { parseInputs } from './parse-inputs';\nimport { complete, warn } from './helpers';\nimport { getAddedUtilities } from './plugin';\nimport { removeOpacityHelpers } from './resolve/color';\nexport function create(customConfig, platform) {\n const config = resolveConfig(withContent(customConfig));\n const device = {};\n const pluginUtils = getAddedUtilities(config.plugins);\n const customStringUtils = {};\n const customStyleUtils = Object.entries(pluginUtils)\n .map(([util, style]) => {\n if (typeof style === `string`) {\n // mutating while mapping, i know - bad form, but for performance sake... ¯\\_(ツ)_/¯\n customStringUtils[util] = style;\n return [util, { kind: `null` }];\n }\n return [util, complete(style)];\n })\n .filter(([, ir]) => ir.kind !== `null`);\n function deriveCacheGroup() {\n return ([\n device.windowDimensions ? `w${device.windowDimensions.width}` : false,\n device.windowDimensions ? `h${device.windowDimensions.height}` : false,\n device.fontScale ? `fs${device.fontScale}` : false,\n device.colorScheme === `dark` ? `dark` : false,\n device.pixelDensity === 2 ? `retina` : false,\n ]\n .filter(Boolean)\n .join(`--`) || `default`);\n }\n let cacheGroup = deriveCacheGroup();\n const contextCaches = {};\n function getCache() {\n const existing = contextCaches[cacheGroup];\n if (existing) {\n return existing;\n }\n const cache = new Cache(customStyleUtils);\n contextCaches[cacheGroup] = cache;\n return cache;\n }\n function style(...inputs) {\n const cache = getCache();\n let resolved = {};\n const dependents = [];\n const ordered = [];\n const [utilities, userStyle] = parseInputs(inputs);\n // check if we've seen this full set of classes before\n // if we have a cached copy, we can skip examining each utility\n const joined = utilities.join(` `);\n const cached = cache.getStyle(joined);\n if (cached) {\n return { ...cached, ...(userStyle ? userStyle : {}) };\n }\n for (const utility of utilities) {\n let styleIr = cache.getIr(utility);\n if (!styleIr && utility in customStringUtils) {\n const customStyle = style(customStringUtils[utility]);\n cache.setIr(utility, complete(customStyle));\n resolved = { ...resolved, ...customStyle };\n continue;\n }\n const parser = new ClassParser(utility, config, cache, device, platform);\n styleIr = parser.parse();\n switch (styleIr.kind) {\n case `complete`:\n resolved = { ...resolved, ...styleIr.style };\n cache.setIr(utility, styleIr);\n break;\n case `dependent`:\n dependents.push(styleIr);\n break;\n case `ordered`:\n ordered.push(styleIr);\n break;\n case `null`:\n cache.setIr(utility, styleIr);\n break;\n }\n }\n if (ordered.length > 0) {\n ordered.sort((a, b) => a.order - b.order);\n for (const orderedStyle of ordered) {\n switch (orderedStyle.styleIr.kind) {\n case `complete`:\n resolved = { ...resolved, ...orderedStyle.styleIr.style };\n break;\n case `dependent`:\n dependents.push(orderedStyle.styleIr);\n break;\n }\n }\n }\n if (dependents.length > 0) {\n for (const dependent of dependents) {\n const error = dependent.complete(resolved);\n if (error) {\n warn(error);\n }\n }\n removeOpacityHelpers(resolved);\n }\n // cache the full set of classes for future re-renders\n // it's important we cache BEFORE merging in userStyle below\n if (joined !== ``) {\n cache.setStyle(joined, resolved);\n }\n if (userStyle) {\n resolved = { ...resolved, ...userStyle };\n }\n return resolved;\n }\n function color(utils) {\n const styleObj = style(utils\n .split(/\\s+/g)\n .map((util) => util.replace(/^(bg|text|border)-/, ``))\n .map((util) => `bg-${util}`)\n .join(` `));\n return typeof styleObj.backgroundColor === `string`\n ? styleObj.backgroundColor\n : undefined;\n }\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n const tailwindFn = (strings, ...values) => {\n let str = ``;\n strings.forEach((string, i) => {\n var _a;\n str += string + ((_a = values[i]) !== null && _a !== void 0 ? _a : ``);\n });\n return style(str);\n };\n tailwindFn.style = style;\n tailwindFn.color = color;\n tailwindFn.prefixMatch = (...prefixes) => {\n const joined = prefixes.sort().join(`:`);\n const cache = getCache();\n const cached = cache.getPrefixMatch(joined);\n if (cached !== undefined) {\n return cached;\n }\n const parser = new ClassParser(`${joined}:flex`, config, cache, device, platform);\n const ir = parser.parse();\n const prefixMatches = ir.kind !== `null`;\n cache.setPrefixMatch(joined, prefixMatches);\n return prefixMatches;\n };\n tailwindFn.setWindowDimensions = (newDimensions) => {\n device.windowDimensions = newDimensions;\n cacheGroup = deriveCacheGroup();\n };\n tailwindFn.setFontScale = (newFontScale) => {\n device.fontScale = newFontScale;\n cacheGroup = deriveCacheGroup();\n };\n tailwindFn.setPixelDensity = (newPixelDensity) => {\n device.pixelDensity = newPixelDensity;\n cacheGroup = deriveCacheGroup();\n };\n tailwindFn.setColorScheme = (newColorScheme) => {\n device.colorScheme = newColorScheme;\n cacheGroup = deriveCacheGroup();\n };\n return tailwindFn;\n}\nexport default create;\nfunction withContent(config) {\n return {\n ...config,\n // prevent warnings from tailwind about not having a `content` prop\n // we don't need one because we have our own jit parser which\n // does not rely on knowing content paths to search\n content: [`_no_warnings_please`],\n };\n}\n","export const PLATFORMS = [`ios`, `android`, `windows`, `macos`, `web`];\nexport function isPlatform(x) {\n return PLATFORMS.includes(x);\n}\nexport const ORIENTATIONS = [`portrait`, `landscape`];\nexport function isOrientation(x) {\n return ORIENTATIONS.includes(x);\n}\nexport var ConfigType;\n(function (ConfigType) {\n ConfigType[\"fontSize\"] = \"fontSize\";\n ConfigType[\"lineHeight\"] = \"lineHeight\";\n})(ConfigType || (ConfigType = {}));\nexport var Unit;\n(function (Unit) {\n Unit[\"rem\"] = \"rem\";\n Unit[\"em\"] = \"em\";\n Unit[\"px\"] = \"px\";\n Unit[\"percent\"] = \"%\";\n Unit[\"vw\"] = \"vw\";\n Unit[\"vh\"] = \"vh\";\n Unit[\"none\"] = \"<no-css-unit>\";\n})(Unit || (Unit = {}));\nexport function isString(value) {\n return typeof value === `string`;\n}\nexport function isObject(value) {\n return typeof value === `object`;\n}\n","var _a;\nimport { Unit } from './types';\nexport function complete(style) {\n return { kind: `complete`, style };\n}\nexport function parseNumericValue(value, context = {}) {\n const { fractions } = context;\n if (fractions && value.includes(`/`)) {\n const [numerator = ``, denominator = ``] = value.split(`/`, 2);\n const parsedNumerator = parseNumericValue(numerator);\n const parsedDenominator = parseNumericValue(denominator);\n if (!parsedNumerator || !parsedDenominator) {\n return null;\n }\n return [parsedNumerator[0] / parsedDenominator[0], parsedDenominator[1]];\n }\n const number = parseFloat(value);\n if (Number.isNaN(number)) {\n return null;\n }\n const match = value.match(/(([a-z]{2,}|%))$/);\n if (!match) {\n return [number, Unit.none];\n }\n switch (match === null || match === void 0 ? void 0 : match[1]) {\n case `rem`:\n return [number, Unit.rem];\n case `px`:\n return [number, Unit.px];\n case `em`:\n return [number, Unit.em];\n case `%`:\n return [number, Unit.percent];\n case `vw`:\n return [number, Unit.vw];\n case `vh`:\n return [number, Unit.vh];\n default:\n return null;\n }\n}\nexport function getCompleteStyle(prop, value, context = {}) {\n const styleVal = parseStyleVal(value, context);\n return styleVal === null ? null : complete({ [prop]: styleVal });\n}\nexport function mergeStyle(prop, value, style) {\n const styleVal = parseStyleVal(value);\n if (styleVal !== null) {\n style[prop] = styleVal;\n }\n return style;\n}\nexport function getStyle(prop, value) {\n const styleVal = parseStyleVal(value);\n return styleVal === null ? null : { [prop]: styleVal };\n}\nexport function parseStyleVal(value, context = {}) {\n if (value === undefined) {\n return null;\n }\n const parsed = parseNumericValue(String(value), context);\n if (parsed) {\n return toStyleVal(...parsed, context);\n }\n else {\n return null;\n }\n}\nexport function toStyleVal(number, unit, context = {}) {\n const { isNegative, device } = context;\n switch (unit) {\n case Unit.rem:\n return number * 16 * (isNegative ? -1 : 1);\n case Unit.px:\n return number * (isNegative ? -1 : 1);\n case Unit.percent:\n return `${isNegative ? `-` : ``}${number}%`;\n case Unit.none:\n return number * (isNegative ? -1 : 1);\n case Unit.vw:\n if (!(device === null || device === void 0 ? void 0 : device.windowDimensions)) {\n warn(`\\`vw\\` CSS unit requires configuration with \\`useDeviceContext()\\``);\n return null;\n }\n return device.windowDimensions.width * (number / 100);\n case Unit.vh:\n if (!(device === null || device === void 0 ? void 0 : device.windowDimensions)) {\n warn(`\\`vh\\` CSS unit requires configuration with \\`useDeviceContext()\\``);\n return null;\n }\n return device.windowDimensions.height * (number / 100);\n default:\n return null;\n }\n}\nexport function toPx(value) {\n const parsed = parseNumericValue(value);\n if (!parsed) {\n return null;\n }\n const [number, unit] = parsed;\n switch (unit) {\n case Unit.rem:\n return number * 16;\n case Unit.px:\n return number;\n default:\n return null;\n }\n}\nconst DIR_MAP = {\n t: `Top`,\n tr: `TopRight`,\n tl: `TopLeft`,\n b: `Bottom`,\n br: `BottomRight`,\n bl: `BottomLeft`,\n l: `Left`,\n r: `Right`,\n x: `Horizontal`,\n y: `Vertical`,\n};\nexport function getDirection(string) {\n return DIR_MAP[string !== null && string !== void 0 ? string : ``] || `All`;\n}\nexport function parseAndConsumeDirection(utilityFragment) {\n let direction = `All`;\n const consumed = utilityFragment.replace(/^-(t|b|r|l|tr|tl|br|bl)(-|$)/, (_, dir) => {\n direction = getDirection(dir);\n return ``;\n });\n return [consumed, direction];\n}\nexport function parseUnconfigged(value, context = {}) {\n if (value.includes(`/`)) {\n const style = unconfiggedStyleVal(value, { ...context, fractions: true });\n if (style)\n return style;\n }\n if (value[0] === `[`) {\n value = value.slice(1, -1);\n }\n return unconfiggedStyleVal(value, context);\n}\nexport function unconfiggedStyle(prop, value, context = {}) {\n const styleVal = parseUnconfigged(value, context);\n if (styleVal === null) {\n return null;\n }\n return complete({ [prop]: styleVal });\n}\nfunction unconfiggedStyleVal(value, context = {}) {\n if (value === `px`) {\n return 1;\n }\n const parsed = parseNumericValue(value, context);\n if (!parsed) {\n return null;\n }\n let [number, unit] = parsed;\n if (context.fractions) {\n unit = Unit.percent;\n number *= 100;\n }\n // not sure if this is the right approach, but this allows arbitrary\n // non-bracket numbers, like top-73 and it INFERS the meaning to be\n // tailwind's default scale for spacing, which is 1 = 0.25rem\n if (unit === Unit.none) {\n number = number / 4;\n unit = Unit.rem;\n }\n return toStyleVal(number, unit, context);\n}\nfunction consoleWarn(...args) {\n console.warn(...args);\n}\nfunction noopWarn(..._) {\n // ¯\\_(ツ)_/¯\n}\nexport const warn = typeof process === `undefined` || ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.JEST_WORKER_ID) === undefined\n ? consoleWarn\n : noopWarn;\n","import { complete } from './helpers';\nconst defaultStyles = [\n [`aspect-square`, complete({ aspectRatio: 1 })],\n [`aspect-video`, complete({ aspectRatio: 16 / 9 })],\n [`items-center`, complete({ alignItems: `center` })],\n [`items-start`, complete({ alignItems: `flex-start` })],\n [`items-end`, complete({ alignItems: `flex-end` })],\n [`items-baseline`, complete({ alignItems: `baseline` })],\n [`items-stretch`, complete({ alignItems: `stretch` })],\n [`justify-start`, complete({ justifyContent: `flex-start` })],\n [`justify-end`, complete({ justifyContent: `flex-end` })],\n [`justify-center`, complete({ justifyContent: `center` })],\n [`justify-between`, complete({ justifyContent: `space-between` })],\n [`justify-around`, complete({ justifyContent: `space-around` })],\n [`justify-evenly`, complete({ justifyContent: `space-evenly` })],\n [`content-start`, complete({ alignContent: `flex-start` })],\n [`content-end`, complete({ alignContent: `flex-end` })],\n [`content-between`, complete({ alignContent: `space-between` })],\n [`content-around`, complete({ alignContent: `space-around` })],\n [`content-stretch`, complete({ alignContent: `stretch` })],\n [`content-center`, complete({ alignContent: `center` })],\n [`self-auto`, complete({ alignSelf: `auto` })],\n [`self-start`, complete({ alignSelf: `flex-start` })],\n [`self-end`, complete({ alignSelf: `flex-end` })],\n [`self-center`, complete({ alignSelf: `center` })],\n [`self-stretch`, complete({ alignSelf: `stretch` })],\n [`self-baseline`, complete({ alignSelf: `baseline` })],\n [`direction-inherit`, complete({ direction: `inherit` })],\n [`direction-ltr`, complete({ direction: `ltr` })],\n [`direction-rtl`, complete({ direction: `rtl` })],\n [`hidden`, complete({ display: `none` })],\n [`flex`, complete({ display: `flex` })],\n [`flex-row`, complete({ flexDirection: `row` })],\n [`flex-row-reverse`, complete({ flexDirection: `row-reverse` })],\n [`flex-col`, complete({ flexDirection: `column` })],\n [`flex-col-reverse`, complete({ flexDirection: `column-reverse` })],\n [`flex-wrap`, complete({ flexWrap: `wrap` })],\n [`flex-wrap-reverse`, complete({ flexWrap: `wrap-reverse` })],\n [`flex-nowrap`, complete({ flexWrap: `nowrap` })],\n [`flex-auto`, complete({ flexGrow: 1, flexShrink: 1, flexBasis: `auto` })],\n [`flex-initial`, complete({ flexGrow: 0, flexShrink: 1, flexBasis: `auto` })],\n [`flex-none`, complete({ flexGrow: 0, flexShrink: 0, flexBasis: `auto` })],\n [`overflow-hidden`, complete({ overflow: `hidden` })],\n [`overflow-visible`, complete({ overflow: `visible` })],\n [`overflow-scroll`, complete({ overflow: `scroll` })],\n [`absolute`, complete({ position: `absolute` })],\n [`relative`, complete({ position: `relative` })],\n [`italic`, complete({ fontStyle: `italic` })],\n [`not-italic`, complete({ fontStyle: `normal` })],\n [`oldstyle-nums`, fontVariant(`oldstyle-nums`)],\n [`small-caps`, fontVariant(`small-caps`)],\n [`lining-nums`, fontVariant(`lining-nums`)],\n [`tabular-nums`, fontVariant(`tabular-nums`)],\n [`proportional-nums`, fontVariant(`proportional-nums`)],\n [`font-thin`, complete({ fontWeight: `100` })],\n [`font-100`, complete({ fontWeight: `100` })],\n [`font-extralight`, complete({ fontWeight: `200` })],\n [`font-200`, complete({ fontWeight: `200` })],\n [`font-light`, complete({ fontWeight: `300` })],\n [`font-300`, complete({ fontWeight: `300` })],\n [`font-normal`, complete({ fontWeight: `normal` })],\n [`font-400`, complete({ fontWeight: `400` })],\n [`font-medium`, complete({ fontWeight: `500` })],\n [`font-500`, complete({ fontWeight: `500` })],\n [`font-semibold`, complete({ fontWeight: `600` })],\n [`font-600`, complete({ fontWeight: `600` })],\n [`font-bold`, complete({ fontWeight: `bold` })],\n [`font-700`, complete({ fontWeight: `700` })],\n [`font-extrabold`, complete({ fontWeight: `800` })],\n [`font-800`, complete({ fontWeight: `800` })],\n [`font-black`, complete({ fontWeight: `900` })],\n [`font-900`, complete({ fontWeight: `900` })],\n [`include-font-padding`, complete({ includeFontPadding: true })],\n [`remove-font-padding`, complete({ includeFontPadding: false })],\n // not sure if RN supports `max-width: none;`, but this should be equivalent\n [`max-w-none`, complete({ maxWidth: `99999%` })],\n [`text-left`, complete({ textAlign: `left` })],\n [`text-center`, complete({ textAlign: `center` })],\n [`text-right`, complete({ textAlign: `right` })],\n [`text-justify`, complete({ textAlign: `justify` })],\n [`text-auto`, complete({ textAlign: `auto` })],\n [`underline`, complete({ textDecorationLine: `underline` })],\n [`line-through`, complete({ textDecorationLine: `line-through` })],\n [`no-underline`, complete({ textDecorationLine: `none` })],\n [`uppercase`, complete({ textTransform: `uppercase` })],\n [`lowercase`, complete({ textTransform: `lowercase` })],\n [`capitalize`, complete({ textTransform: `capitalize` })],\n [`normal-case`, complete({ textTransform: `none` })],\n [`w-auto`, complete({ width: `auto` })],\n [`h-auto`, complete({ height: `auto` })],\n // default box-shadow implementations\n [\n `shadow-sm`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowRadius: 1,\n shadowOpacity: 0.025,\n elevation: 1,\n }),\n ],\n [\n `shadow`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowRadius: 1,\n shadowOpacity: 0.075,\n elevation: 2,\n }),\n ],\n [\n `shadow-md`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowRadius: 3,\n shadowOpacity: 0.125,\n elevation: 3,\n }),\n ],\n [\n `shadow-lg`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowOpacity: 0.15,\n shadowRadius: 8,\n elevation: 8,\n }),\n ],\n [\n `shadow-xl`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowOpacity: 0.19,\n shadowRadius: 20,\n elevation: 12,\n }),\n ],\n [\n `shadow-2xl`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowOpacity: 0.25,\n shadowRadius: 30,\n elevation: 16,\n }),\n ],\n [\n `shadow-none`,\n complete({\n shadowOffset: { width: 0, height: 0 },\n shadowColor: `#000`,\n shadowRadius: 0,\n shadowOpacity: 0,\n elevation: 0,\n }),\n ],\n];\nexport default defaultStyles;\nfunction fontVariant(type) {\n return {\n kind: `dependent`,\n complete(style) {\n if (!style.fontVariant || !Array.isArray(style.fontVariant)) {\n style.fontVariant = [];\n }\n style.fontVariant.push(type);\n },\n };\n}\n","import defaultStyles from './styles';\nexport default class Cache {\n constructor(customStyles) {\n this.ir = new Map(defaultStyles);\n this.styles = new Map();\n this.prefixes = new Map();\n this.ir = new Map([...defaultStyles, ...(customStyles !== null && customStyles !== void 0 ? customStyles : [])]);\n }\n getStyle(key) {\n return this.styles.get(key);\n }\n setStyle(key, style) {\n this.styles.set(key, style);\n }\n getIr(key) {\n return this.ir.get(key);\n }\n setIr(key, ir) {\n this.ir.set(key, ir);\n }\n getPrefixMatch(key) {\n return this.prefixes.get(key);\n }\n setPrefixMatch(key, value) {\n this.prefixes.set(key, value);\n }\n}\n","import { Unit } from '../types';\nimport { getCompleteStyle, complete, getStyle, mergeStyle, parseNumericValue, unconfiggedStyle, } from '../helpers';\nexport default function fontSize(value, config, context = {}) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (!configValue) {\n return unconfiggedStyle(`fontSize`, value, context);\n }\n if (typeof configValue === `string`) {\n return getCompleteStyle(`fontSize`, configValue);\n }\n let style = {};\n const [fontSize, rest] = configValue;\n const fontSizeStyle = getStyle(`fontSize`, fontSize);\n if (fontSizeStyle) {\n style = fontSizeStyle;\n }\n if (typeof rest === `string`) {\n return complete(mergeStyle(`lineHeight`, calculateLineHeight(rest, style), style));\n }\n const { lineHeight, letterSpacing } = rest;\n if (lineHeight) {\n mergeStyle(`lineHeight`, calculateLineHeight(lineHeight, style), style);\n }\n if (letterSpacing) {\n mergeStyle(`letterSpacing`, letterSpacing, style);\n }\n return complete(style);\n}\n// calculates line-height for relative units\nfunction calculateLineHeight(lineHeight, style) {\n const parsed = parseNumericValue(lineHeight);\n if (parsed) {\n const [number, unit] = parsed;\n if ((unit === Unit.none || unit === Unit.em) && typeof style.fontSize === `number`) {\n return style.fontSize * number;\n }\n }\n return lineHeight;\n}\n","import { Unit } from '../types';\nimport { parseNumericValue, complete, toStyleVal } from '../helpers';\nexport default function lineHeight(value, config) {\n var _a;\n const parseValue = (_a = config === null || config === void 0 ? void 0 : config[value]) !== null && _a !== void 0 ? _a : (value.startsWith(`[`) ? value.slice(1, -1) : value);\n const parsed = parseNumericValue(parseValue);\n if (!parsed) {\n return null;\n }\n const [number, unit] = parsed;\n if (unit === Unit.none) {\n // we have a relative line-height like `2` for `leading-loose`\n return {\n kind: `dependent`,\n complete(style) {\n if (typeof style.fontSize !== `number`) {\n return `relative line-height utilities require that font-size be set`;\n }\n style.lineHeight = style.fontSize * number;\n },\n };\n }\n const styleVal = toStyleVal(number, unit);\n return styleVal !== null ? complete({ lineHeight: styleVal }) : null;\n}\n","import { Unit } from '../types';\nimport { parseNumericValue, parseUnconfigged, toStyleVal } from '../helpers';\nexport default function spacing(type, direction, isNegative, value, config) {\n let numericValue = ``;\n if (value[0] === `[`) {\n numericValue = value.slice(1, -1);\n }\n else {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (!configValue) {\n const unconfigged = parseUnconfigged(value);\n if (unconfigged && typeof unconfigged === `number`) {\n return spacingStyle(unconfigged, Unit.px, direction, type);\n }\n return null;\n }\n else {\n numericValue = configValue;\n }\n }\n if (numericValue === `auto`) {\n return expand(direction, type, `auto`);\n }\n const parsed = parseNumericValue(numericValue);\n if (!parsed) {\n return null;\n }\n let [number, unit] = parsed;\n if (isNegative) {\n number = -number;\n }\n return spacingStyle(number, unit, direction, type);\n}\nfunction spacingStyle(number, unit, direction, type) {\n const pixels = toStyleVal(number, unit);\n if (pixels === null) {\n return null;\n }\n return expand(direction, type, pixels);\n}\nfunction expand(direction, type, value) {\n switch (direction) {\n case `All`:\n return {\n kind: `complete`,\n style: {\n [`${type}Top`]: value,\n [`${type}Right`]: value,\n [`${type}Bottom`]: value,\n [`${type}Left`]: value,\n },\n };\n case `Bottom`:\n case `Top`:\n case `Left`:\n case `Right`:\n return {\n kind: `complete`,\n style: {\n [`${type}${direction}`]: value,\n },\n };\n case `Vertical`:\n return {\n kind: `complete`,\n style: {\n [`${type}Top`]: value,\n [`${type}Bottom`]: value,\n },\n };\n case `Horizontal`:\n return {\n kind: `complete`,\n style: {\n [`${type}Left`]: value,\n [`${type}Right`]: value,\n },\n };\n default:\n return null;\n }\n}\n","import { toPx, warn } from './helpers';\nexport default function screens(input) {\n if (!input) {\n return {};\n }\n const screenData = Object.entries(input).reduce((acc, [screen, value]) => {\n const data = [0, Infinity, 0];\n const values = typeof value === `string` ? { min: value } : value;\n const minPx = values.min ? toPx(values.min) : 0;\n if (minPx === null) {\n warn(`invalid screen config value: ${screen}->min: ${values.min}`);\n }\n else {\n data[0] = minPx;\n }\n const maxPx = values.max ? toPx(values.max) : Infinity;\n if (maxPx === null) {\n warn(`invalid screen config value: ${screen}->max: ${values.max}`);\n }\n else {\n data[1] = maxPx;\n }\n acc[screen] = data;\n return acc;\n }, {});\n const values = Object.values(screenData);\n values.sort((a, b) => {\n const [minA, maxA] = a;\n const [minB, maxB] = b;\n if (maxA === Infinity || maxB === Infinity) {\n return minA - minB;\n }\n return maxA - maxB;\n });\n let order = 0;\n values.forEach((value) => (value[2] = order++));\n return screenData;\n}\n","import { complete } from '../helpers';\nexport default function fontFamily(value, config) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (!configValue) {\n return null;\n }\n if (typeof configValue === `string`) {\n return complete({ fontFamily: configValue });\n }\n const firstFamily = configValue[0];\n if (!firstFamily) {\n return null;\n }\n return complete({ fontFamily: firstFamily });\n}\n","import { isObject, isString } from '../types';\nimport { warn, complete } from '../helpers';\nexport function color(type, value, config) {\n if (!config) {\n return null;\n }\n // support opacity shorthand: `bg-red-200/50`\n let shorthandOpacity = undefined;\n if (value.includes(`/`)) {\n [value = ``, shorthandOpacity] = value.split(`/`, 2);\n }\n let color = ``;\n // for arbitrary support: `bg-[#eaeaea]`, `text-[rgba(1, 1, 1, 0.5)]`\n if (value.startsWith(`[#`) || value.startsWith(`[rgb`)) {\n color = value.slice(1, -1);\n // search for color in config\n }\n else {\n color = findColorInConfigRecursive(value, config);\n }\n if (!color) {\n return null;\n }\n if (shorthandOpacity) {\n const opacity = Number(shorthandOpacity);\n if (!Number.isNaN(opacity)) {\n color = addOpacity(color, opacity / 100);\n return complete({ [STYLE_PROPS[type].color]: color });\n }\n }\n // return a dependent style to support merging of classes\n // like `bg-red-800 bg-opacity-75`\n return {\n kind: `dependent`,\n complete(style) {\n const opacityProp = STYLE_PROPS[type].opacity;\n const opacity = style[opacityProp];\n if (typeof opacity === `number`) {\n color = addOpacity(color, opacity);\n }\n style[STYLE_PROPS[type].color] = color;\n },\n };\n}\nexport function colorOpacity(type, value) {\n const percentage = parseInt(value, 10);\n if (Number.isNaN(percentage)) {\n return null;\n }\n const opacity = percentage / 100;\n const style = { [STYLE_PROPS[type].opacity]: opacity };\n return { kind: `complete`, style };\n}\nfunction addOpacity(color, opacity) {\n if (color.startsWith(`#`)) {\n color = hexToRgba(color);\n }\n else if (color.startsWith(`rgb(`)) {\n color = color.replace(/^rgb\\(/, `rgba(`).replace(/\\)$/, `, 1)`);\n }\n // @TODO: support hls/hlsa if anyone opens an issue...\n return color.replace(/, ?\\d*\\.?(\\d+)\\)$/, `, ${opacity})`);\n}\nexport function removeOpacityHelpers(style) {\n for (const key in style) {\n if (key.startsWith(`__opacity_`)) {\n delete style[key];\n }\n }\n}\nconst STYLE_PROPS = {\n bg: { opacity: `__opacity_bg`, color: `backgroundColor` },\n text: { opacity: `__opacity_text`, color: `color` },\n border: { opacity: `__opacity_border`, color: `borderColor` },\n borderTop: { opacity: `__opacity_border`, color: `borderTopColor` },\n borderBottom: { opacity: `__opacity_border`, color: `borderBottomColor` },\n borderLeft: { opacity: `__opacity_border`, color: `borderLeftColor` },\n borderRight: { opacity: `__opacity_border`, color: `borderRightColor` },\n shadow: { opacity: `__opacity_shadow`, color: `shadowColor` },\n tint: { opacity: `__opacity_tint`, color: `tintColor` },\n};\nfunction hexToRgba(hex) {\n const orig = hex;\n hex = hex.replace(MATCH_SHORT_HEX, (_, r, g, b) => r + r + g + g + b + b);\n const result = MATCH_FULL_HEX.exec(hex);\n if (!result) {\n warn(`invalid config hex color value: ${orig}`);\n return `rgba(0, 0, 0, 1)`;\n }\n const r = parseInt(result[1], 16);\n const g = parseInt(result[2], 16);\n const b = parseInt(result[3], 16);\n return `rgba(${r}, ${g}, ${b}, 1)`;\n}\nfunction findColorInConfigRecursive(colorName, config) {\n const configColor = config[colorName];\n // the color is found at the current config level\n if (isString(configColor)) {\n return configColor;\n }\n else if (isObject(configColor) && isString(configColor.DEFAULT)) {\n return configColor.DEFAULT;\n }\n // search for a matching sub-string at the current config level\n let [colorNameStart = ``, ...colorNameRest] = colorName.split(`-`);\n while (colorNameStart !== colorName) {\n const subConfig = config[colorNameStart];\n if (isObject(subConfig)) {\n return findColorInConfigRecursive(colorNameRest.join(`-`), subConfig);\n }\n else if (colorNameRest.length === 0) {\n return ``;\n }\n colorNameStart = `${colorNameStart}-${colorNameRest.shift()}`;\n }\n return ``;\n}\nconst MATCH_SHORT_HEX = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\nconst MATCH_FULL_HEX = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;\n","import { parseAndConsumeDirection, complete, getCompleteStyle, unconfiggedStyle, } from '../helpers';\nimport { color } from './color';\nexport function border(value, theme) {\n let [rest, direction] = parseAndConsumeDirection(value);\n const widthUtilityMatch = rest.match(/^(-?(\\d)+)?$/);\n if (widthUtilityMatch) {\n return borderWidth(rest, direction, theme === null || theme === void 0 ? void 0 : theme.borderWidth);\n }\n rest = rest.replace(/^-/, ``);\n if ([`dashed`, `solid`, `dotted`].includes(rest)) {\n return complete({ borderStyle: rest });\n }\n let colorType = `border`;\n switch (direction) {\n case `Bottom`:\n colorType = `borderBottom`;\n break;\n case `Top`:\n colorType = `borderTop`;\n break;\n case `Left`:\n colorType = `borderLeft`;\n break;\n case `Right`:\n colorType = `borderRight`;\n break;\n }\n const colorStyle = color(colorType, rest, theme === null || theme === void 0 ? void 0 : theme.borderColor);\n if (colorStyle) {\n return colorStyle;\n }\n // Finally Handling Arbitrary Width Case\n // border-[20px] or border-[2.5rem]\n const prop = `border${direction === `All` ? `` : direction}Width`;\n rest = rest.replace(/^-/, ``);\n const numericValue = rest.slice(1, -1);\n const arbitraryWidth = unconfiggedStyle(prop, numericValue);\n // can't use % for border-radius in RN\n if (typeof (arbitraryWidth === null || arbitraryWidth === void 0 ? void 0 : arbitraryWidth.style[prop]) !== `number`) {\n return null;\n }\n return arbitraryWidth;\n}\nfunction borderWidth(value, direction, config) {\n if (!config) {\n return null;\n }\n value = value.replace(/^-/, ``);\n const key = value === `` ? `DEFAULT` : value;\n const configValue = config[key];\n if (configValue === undefined) {\n return null;\n }\n const prop = `border${direction === `All` ? `` : direction}Width`;\n return getCompleteStyle(prop, configValue);\n}\nexport function borderRadius(value, config) {\n if (!config) {\n return null;\n }\n let [rest, direction] = parseAndConsumeDirection(value);\n rest = rest.replace(/^-/, ``);\n if (rest === ``) {\n rest = `DEFAULT`;\n }\n const prop = `border${direction === `All` ? `` : direction}Radius`;\n const configValue = config[rest];\n if (configValue) {\n return expand(getCompleteStyle(prop, configValue));\n }\n const arbitrary = unconfiggedStyle(prop, rest);\n // can't use % for border-radius in RN\n if (typeof (arbitrary === null || arbitrary === void 0 ? void 0 : arbitrary.style[prop]) !== `number`) {\n return null;\n }\n return expand(arbitrary);\n}\n// RN only supports `borderRadius` + `border(top|bottom)(left|right)Radius`\nfunction expand(ir) {\n if ((ir === null || ir === void 0 ? void 0 : ir.kind) !== `complete`)\n return ir;\n const top = ir.style.borderTopRadius;\n if (top !== undefined) {\n ir.style.borderTopLeftRadius = top;\n ir.style.borderTopRightRadius = top;\n delete ir.style.borderTopRadius;\n }\n const bottom = ir.style.borderBottomRadius;\n if (bottom !== undefined) {\n ir.style.borderBottomLeftRadius = bottom;\n ir.style.borderBottomRightRadius = bottom;\n delete ir.style.borderBottomRadius;\n }\n const left = ir.style.borderLeftRadius;\n if (left !== undefined) {\n ir.style.borderBottomLeftRadius = left;\n ir.style.borderTopLeftRadius = left;\n delete ir.style.borderLeftRadius;\n }\n const right = ir.style.borderRightRadius;\n if (right !== undefined) {\n ir.style.borderBottomRightRadius = right;\n ir.style.borderTopRightRadius = right;\n delete ir.style.borderRightRadius;\n }\n return ir;\n}\n","import { complete, parseStyleVal, parseUnconfigged } from '../helpers';\nexport function inset(type, value, isNegative, config) {\n let insetDir = null;\n if (type === `inset`) {\n value = value.replace(/^(x|y)-/, (_, dir) => {\n insetDir = dir === `x` ? `x` : `y`;\n return ``;\n });\n }\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (configValue) {\n const styleVal = parseStyleVal(configValue, { isNegative });\n if (styleVal !== null) {\n return insetStyle(type, insetDir, styleVal);\n }\n }\n const unconfigged = parseUnconfigged(value, { isNegative });\n if (unconfigged !== null) {\n return insetStyle(type, insetDir, unconfigged);\n }\n return null;\n}\nfunction insetStyle(type, dir, styleVal) {\n if (type !== `inset`) {\n return complete({ [type]: styleVal });\n }\n switch (dir) {\n case null:\n return complete({\n top: styleVal,\n left: styleVal,\n right: styleVal,\n bottom: styleVal,\n });\n case `y`:\n return complete({\n top: styleVal,\n bottom: styleVal,\n });\n case `x`:\n return complete({\n left: styleVal,\n right: styleVal,\n });\n }\n}\n","import { complete, parseStyleVal } from '../helpers';\nexport function flexGrowShrink(type, value, config) {\n var _a;\n value = value.replace(/^-/, ``);\n const configKey = value === `` ? `DEFAULT` : value;\n const numericValue = Number((_a = config === null || config === void 0 ? void 0 : config[configKey]) !== null && _a !== void 0 ? _a : value);\n if (!Number.isNaN(numericValue)) {\n return complete({ [`flex${type}`]: numericValue });\n }\n return null;\n}\nexport function flex(value, config) {\n var _a, _b;\n value = (config === null || config === void 0 ? void 0 : config[value]) || value;\n if ([`min-content`, `revert`, `unset`].includes(value)) {\n // unsupported\n return null;\n }\n // @see https://developer.mozilla.org/en-US/docs/Web/CSS/flex\n // MDN: One value, unitless number: flex-grow flex-basis is then equal to 0.\n if (value.match(/^\\d+(\\.\\d+)?$/)) {\n return complete({\n flexGrow: Number(value),\n flexBasis: `0%`,\n });\n }\n // MDN: Two values (both integers): flex-grow | flex-basis\n let match = value.match(/^(\\d+)\\s+(\\d+)$/);\n if (match) {\n return complete({\n flexGrow: Number(match[1]),\n flexShrink: Number(match[2]),\n });\n }\n // MDN: Two values: flex-grow | flex-basis\n match = value.match(/^(\\d+)\\s+([^ ]+)$/);\n if (match) {\n const flexBasis = parseStyleVal((_a = match[2]) !== null && _a !== void 0 ? _a : ``);\n if (!flexBasis) {\n return null;\n }\n return complete({\n flexGrow: Number(match[1]),\n flexBasis,\n });\n }\n // MDN: Three values: flex-grow | flex-shrink | flex-basis\n match = value.match(/^(\\d+)\\s+(\\d+)\\s+(.+)$/);\n if (match) {\n const flexBasis = parseStyleVal((_b = match[3]) !== null && _b !== void 0 ? _b : ``);\n if (!flexBasis) {\n return null;\n }\n return complete({\n flexGrow: Number(match[1]),\n flexShrink: Number(match[2]),\n flexBasis,\n });\n }\n return null;\n}\n","import { getCompleteStyle, complete, parseStyleVal, unconfiggedStyle } from '../helpers';\nexport function widthHeight(type, value, context = {}, config) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (configValue !== undefined) {\n return getCompleteStyle(type, configValue, context);\n }\n return unconfiggedStyle(type, value, context);\n}\nexport function minMaxWidthHeight(type, value, context = {}, config) {\n const styleVal = parseStyleVal(config === null || config === void 0 ? void 0 : config[value], context);\n if (styleVal) {\n return complete({ [type]: styleVal });\n }\n if (value === `screen`) {\n value = type.includes(`Width`) ? `100vw` : `100vh`;\n }\n return unconfiggedStyle(type, value, context);\n}\n","import { Unit } from '../types';\nimport { parseNumericValue, complete, toStyleVal, unconfiggedStyle, warn, } from '../helpers';\nexport function letterSpacing(value, isNegative, config) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (configValue) {\n const parsed = parseNumericValue(configValue, { isNegative });\n if (!parsed) {\n return null;\n }\n const [number, unit] = parsed;\n if (unit === Unit.em) {\n return relativeLetterSpacing(number);\n }\n // @TODO, if we get a percentage based config value, theoretically we could\n // make a font-size dependent style as well, wait for someone to raise an issue\n if (unit === Unit.percent) {\n warn(`percentage-based letter-spacing configuration currently unsupported, switch to \\`em\\`s, or open an issue if you'd like to see support added.`);\n return null;\n }\n const styleVal = toStyleVal(number, unit, { isNegative });\n if (styleVal !== null) {\n return complete({ letterSpacing: styleVal });\n }\n return null;\n }\n return unconfiggedStyle(`letterSpacing`, value, { isNegative });\n}\nfunction relativeLetterSpacing(ems) {\n return {\n kind: `dependent`,\n complete(style) {\n const fontSize = style.fontSize;\n if (typeof fontSize !== `number` || Number.isNaN(fontSize)) {\n return `tracking-X relative letter spacing classes require font-size to be set`;\n }\n style.letterSpacing = Math.round((ems * fontSize + Number.EPSILON) * 100) / 100;\n },\n };\n}\n","import { parseNumericValue, complete } from '../helpers';\nexport function opacity(value, config) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (configValue) {\n const parsedConfig = parseNumericValue(String(configValue));\n if (parsedConfig) {\n return complete({ opacity: parsedConfig[0] });\n }\n }\n const parsedArbitrary = parseNumericValue(value);\n if (parsedArbitrary) {\n return complete({ opacity: parsedArbitrary[0] / 100 });\n }\n return null;\n}\n","import { parseUnconfigged } from '../helpers';\nexport function shadowOpacity(value) {\n const percentage = parseInt(value, 10);\n if (Number.isNaN(percentage)) {\n return null;\n }\n return {\n kind: `complete`,\n style: { shadowOpacity: percentage / 100 },\n };\n}\nexport function shadowOffset(value) {\n if (value.includes(`/`)) {\n const [widthStr = ``, heightStr = ``] = value.split(`/`, 2);\n const width = offsetValue(widthStr);\n const height = offsetValue(heightStr);\n if (width === null || height === null) {\n return null;\n }\n return {\n kind: `complete`,\n style: {\n shadowOffset: {\n width,\n height,\n },\n },\n };\n }\n const number = offsetValue(value);\n if (number === null) {\n return null;\n }\n return {\n kind: `complete`,\n style: {\n shadowOffset: {\n width: number,\n height: number,\n },\n },\n };\n}\nfunction offsetValue(value) {\n const parsed = parseUnconfigged(value);\n return typeof parsed === `number` ? parsed : null;\n}\n","import fontSize from './resolve/font-size';\nimport lineHeight from './resolve/line-height';\nimport spacing from './resolve/spacing';\nimport screens from './screens';\nimport { isOrientation, isPlatform, } from './types';\nimport fontFamily from './resolve/font-family';\nimport { color, colorOpacity } from './resolve/color';\nimport { border, borderRadius } from './resolve/borders';\nimport { getCompleteStyle, getDirection, unconfiggedStyle, warn, complete, parseNumericValue, } from './helpers';\nimport { inset } from './resolve/inset';\nimport { flexGrowShrink, flex } from './resolve/flex';\nimport { widthHeight, minMaxWidthHeight } from './resolve/width-height';\nimport { letterSpacing } from './resolve/letter-spacing';\nimport { opacity } from './resolve/opacity';\nimport { shadowOpacity, shadowOffset } from './resolve/shadow';\nexport default class ClassParser {\n constructor(input, config = {}, cache, device, platform) {\n var _a, _b, _c, _d, _e, _f;\n this.config = config;\n this.cache = cache;\n this.position = 0;\n this.isNull = false;\n this.isNegative = false;\n this.context = {};\n this.context.device = device;\n const parts = input.trim().split(`:`);\n let prefixes = [];\n if (parts.length === 1) {\n this.string = input;\n }\n else {\n this.string = (_a = parts.pop()) !== null && _a !== void 0 ? _a : ``;\n prefixes = parts;\n }\n this.char = this.string[0];\n const widthBreakpoints = screens((_b = this.config.theme) === null || _b === void 0 ? void 0 : _b.screens);\n // loop through the prefixes ONE time, extracting useful info\n for (const prefix of prefixes) {\n if (widthBreakpoints[prefix]) {\n const breakpointOrder = (_c = widthBreakpoints[prefix]) === null || _c === void 0 ? void 0 : _c[2];\n if (breakpointOrder !== undefined) {\n this.order = ((_d = this.order) !== null && _d !== void 0 ? _d : 0) + breakpointOrder;\n }\n const windowWidth = (_e = device.windowDimensions) === null || _e === void 0 ? void 0 : _e.width;\n if (windowWidth) {\n const [min, max] = (_f = widthBreakpoints[prefix]) !== null && _f !== void 0 ? _f : [0, 0];\n if (windowWidth <= min || windowWidth > max) {\n // breakpoint does not match\n this.isNull = true;\n }\n }\n else {\n this.isNull = true;\n }\n }\n else if (isPlatform(prefix)) {\n this.isNull = prefix !== platform;\n }\n else if (isOrientation(prefix)) {\n if (!device.windowDimensions) {\n this.isNull = true;\n }\n else {\n const deviceOrientation = device.windowDimensions.width > device.windowDimensions.height\n ? `landscape`\n : `portrait`;\n if (deviceOrientation !== prefix) {\n this.isNull = true;\n }\n else {\n this.incrementOrder();\n }\n }\n }\n else if (prefix === `retina`) {\n if (device.pixelDensity === 2) {\n this.incrementOrder();\n }\n else {\n this.isNull = true;\n }\n }\n else if (prefix === `dark`) {\n if (device.colorScheme !== `dark`) {\n this.isNull = true;\n }\n else {\n this.incrementOrder();\n }\n }\n else if (!this.handlePossibleArbitraryBreakpointPrefix(prefix)) {\n this.isNull = true;\n }\n }\n }\n parse() {\n if (this.isNull) {\n return { kind: `null` };\n }\n // resolve things like ios:hidden, after prefix removed\n const cached = this.cache.getIr(this.rest);\n if (cached) {\n return cached;\n }\n this.parseIsNegative();\n const ir = this.parseUtility();\n if (!ir) {\n return { kind: `null` };\n }\n if (this.order !== undefined) {\n return { kind: `ordered`, order: this.order, styleIr: ir };\n }\n return ir;\n }\n parseUtility() {\n var _a, _b, _c, _d, _e;\n const theme = this.config.theme;\n let style = null;\n switch (this.char) {\n case `m`:\n case `p`: {\n const match = this.peekSlice(1, 3).match(/^(t|b|r|l|x|y)?-/);\n if (match) {\n const prop = this.char === `m` ? `margin` : `padding`;\n this.advance(((_b = (_a = match[0]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) + 1);\n const spacingDirection = getDirection(match[1]);\n const style = spacing(prop, spacingDirection, this.isNegative, this.rest, (_c = this.config.theme) === null || _c === void 0 ? void 0 : _c[prop]);\n if (style)\n return style;\n }\n }\n }\n if (this.consumePeeked(`h-`)) {\n style = widthHeight(`height`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.height);\n if (style)\n return style;\n }\n if (this.consumePeeked(`w-`)) {\n style = widthHeight(`width`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.width);\n if (style)\n return style;\n }\n if (this.consumePeeked(`min-w-`)) {\n style = minMaxWidthHeight(`minWidth`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.minWidth);\n if (style)\n return style;\n }\n if (this.consumePeeked(`min-h-`)) {\n style = minMaxWidthHeight(`minHeight`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.minHeight);\n if (style)\n return style;\n }\n if (this.consumePeeked(`max-w-`)) {\n style = minMaxWidthHeight(`maxWidth`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.maxWidth);\n if (style)\n return style;\n }\n if (this.consumePeeked(`max-h-`)) {\n style = minMaxWidthHeight(`maxHeight`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.maxHeight);\n if (style)\n return style;\n }\n if (this.consumePeeked(`leading-`)) {\n style = lineHeight(this.rest, theme === null || theme === void 0 ? void 0 : theme.lineHeight);\n if (style)\n return style;\n }\n if (this.consumePeeked(`text-`)) {\n style = fontSize(this.rest, theme === null || theme === void 0 ? void 0 : theme.fontSize, this.context);\n if (style)\n return style;\n style = color(`text`, this.rest, theme === null || theme === void 0 ? void 0 : theme.textColor);\n if (style)\n return style;\n if (this.consumePeeked(`opacity-`)) {\n style = colorOpacity(`text`, this.rest);\n if (style)\n return style;\n }\n }\n if (this.consumePeeked(`font-`)) {\n style = fontFamily(this.rest, theme === null || theme === void 0 ? void 0 : theme.fontFamily);\n if (style)\n return style;\n }\n if (this.consumePeeked(`aspect-`)) {\n if (this.consumePeeked(`ratio-`)) {\n warn(`\\`aspect-ratio-{ratio}\\` is deprecated, use \\`aspect-{ratio}\\` instead`);\n }\n style = getCompleteStyle(`aspectRatio`, this.rest, { fractions: true });\n if (style)\n return style;\n }\n if (this.consumePeeked(`tint-`)) {\n style = color(`tint`, this.rest, theme === null || theme === void 0 ? void 0 : theme.colors);\n if (style)\n return style;\n }\n if (this.consumePeeked(`bg-`)) {\n style = color(`bg`, this.rest, theme === null || theme === void 0 ? void 0 : theme.backgroundColor);\n if (style)\n return style;\n if (this.consumePeeked(`opacity-`)) {\n style = colorOpacity(`bg`, this.rest);\n if (style)\n return style;\n }\n }\n if (this.consumePeeked(`border`)) {\n style = border(this.rest, theme);\n if (style)\n return style;\n if (this.consumePeeked(`-opacity-`)) {\n style = colorOpacity(`border`, this.rest);\n if (style)\n return style;\n }\n }\n if (this.consumePeeked(`rounded`)) {\n style = borderRadius(this.rest, theme === null || theme === void 0 ? void 0 : theme.borderRadius);\n if (style)\n return style;\n }\n if (this.consumePeeked(`bottom-`)) {\n style = inset(`bottom`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`top-`)) {\n style = inset(`top`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`left-`)) {\n style = inset(`left`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`right-`)) {\n style = inset(`right`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`inset-`)) {\n style = inset(`inset`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`flex-`)) {\n if (this.consumePeeked(`grow`)) {\n style = flexGrowShrink(`Grow`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexGrow);\n }\n else if (this.consumePeeked(`shrink`)) {\n style = flexGrowShrink(`Shrink`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexShrink);\n }\n else {\n style = flex(this.rest, theme === null || theme === void 0 ? void 0 : theme.flex);\n }\n if (style)\n return style;\n }\n if (this.consumePeeked(`grow`)) {\n style = flexGrowShrink(`Grow`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexGrow);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shrink`)) {\n style = flexGrowShrink(`Shrink`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexShrink);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-color-opacity-`)) {\n style = colorOpacity(`shadow`, this.rest);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-opacity-`)) {\n style = shadowOpacity(this.rest);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-offset-`)) {\n style = shadowOffset(this.rest);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-radius-`)) {\n style = unconfiggedStyle(`shadowRadius`, this.rest);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-`)) {\n style = color(`shadow`, this.rest, theme === null || theme === void 0 ? void 0 : theme.colors);\n if (style)\n return style;\n }\n if (this.consumePeeked(`elevation-`)) {\n const elevation = parseInt(this.rest, 10);\n if (!Number.isNaN(elevation)) {\n return complete({ elevation });\n }\n }\n if (this.consumePeeked(`opacity-`)) {\n style = opacity(this.rest, theme === null || theme === void 0 ? void 0 : theme.opacity);\n if (style)\n return style;\n }\n if (this.consumePeeked(`tracking-`)) {\n style = letterSpacing(this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.letterSpacing);\n if (style)\n return style;\n }\n if (this.consumePeeked(`z-`)) {\n const zIndex = Number((_e = (_d = theme === null || theme === void 0 ? void 0 : theme.zIndex) === null || _d === void 0 ? void 0 : _d[this.rest]) !== null && _e !== void 0 ? _e : this.rest);\n if (!Number.isNaN(zIndex)) {\n return complete({ zIndex });\n }\n }\n warn(`\\`${this.rest}\\` unknown or invalid utility`);\n return null;\n }\n handlePossibleArbitraryBreakpointPrefix(prefix) {\n var _a;\n // save the expense of running the regex with a quick sniff test\n if (prefix[0] !== `m`)\n return false;\n const match = prefix.match(/^(min|max)-(w|h)-\\[([^\\]]+)\\]$/);\n if (!match)\n return false;\n if (!((_a = this.context.device) === null || _a === void 0 ? void 0 : _a.windowDimensions)) {\n this.isNull = true;\n return true;\n }\n const windowDims = this.context.device.windowDimensions;\n const [, type = ``, dir = ``, amount = ``] = match;\n const checkDimension = dir === `w` ? windowDims.width : windowDims.height;\n const parsedAmount = parseNumericValue(amount, this.context);\n if (parsedAmount === null) {\n this.isNull = true;\n return true;\n }\n const [bound, unit] = parsedAmount;\n if (unit !== `px`) {\n this.isNull = true;\n }\n if (type === `min` ? checkDimension >= bound : checkDimension <= bound) {\n this.incrementOrder();\n }\n else {\n this.isNull = true;\n }\n return true;\n }\n advance(amount = 1) {\n this.position += amount;\n this.char = this.string[this.position];\n }\n get rest() {\n return this.peekSlice(0, this.string.length);\n }\n peekSlice(begin, end) {\n return this.string.slice(this.position + begin, this.position + end);\n }\n consumePeeked(string) {\n if (this.peekSlice(0, string.length) === string) {\n this.advance(string.length);\n return true;\n }\n return false;\n }\n parseIsNegative() {\n if (this.char === `-`) {\n this.advance();\n this.isNegative = true;\n this.context.isNegative = true;\n }\n }\n incrementOrder() {\n var _a;\n this.order = ((_a = this.order) !== null && _a !== void 0 ? _a : 0) + 1;\n }\n}\n","export function parseInputs(inputs) {\n let classNames = [];\n let styles = null;\n inputs.forEach((input) => {\n if (typeof input === `string`) {\n classNames = [...classNames, ...split(input)];\n }\n else if (Array.isArray(input)) {\n classNames = [...classNames, ...input.flatMap(split)];\n }\n else if (typeof input === `object` && input !== null) {\n for (const [key, value] of Object.entries(input)) {\n if (typeof value === `boolean`) {\n classNames = [...classNames, ...(value ? split(key) : [])];\n }\n else if (styles) {\n styles[key] = value;\n }\n else {\n styles = { [key]: value };\n }\n }\n }\n });\n return [classNames.filter(Boolean).filter(unique), styles];\n}\nfunction split(str) {\n return str.trim().split(/\\s+/);\n}\nfunction unique(className, index, classes) {\n return classes.indexOf(className) === index;\n}\n","const plugin = (handler) => {\n return { handler, config: undefined };\n};\nexport default plugin;\nexport function getAddedUtilities(plugins) {\n var _a;\n return ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.reduce((utils, plugin) => ({ ...utils, ...callPluginFunction(plugin.handler) }), {})) !== null && _a !== void 0 ? _a : {});\n}\nfunction callPluginFunction(pluginFn) {\n let added = {};\n pluginFn({\n addUtilities: (utilities) => {\n added = utilities;\n },\n ...core,\n });\n return added;\n}\nfunction notImplemented(fn) {\n throw new Error(`tailwindcss plugin function argument object prop \"${fn}\" not implemented`);\n}\nconst core = {\n addComponents: notImplemented,\n addBase: notImplemented,\n addVariant: notImplemented,\n e: notImplemented,\n prefix: notImplemented,\n theme: notImplemented,\n variants: notImplemented,\n config: notImplemented,\n corePlugins: notImplemented,\n matchUtilities: notImplemented,\n postcss: null,\n};\n","import type { TwConfig } from 'twrnc'\n\nimport * as twrnc from 'twrnc/create'\n\ntype TwPlugin = TwConfig['plugins'][number]\n\nconst defaultShadows: TwPlugin = {\n handler: ({ addUtilities }) => {\n const presets = {\n 'shadow-sm': { boxShadow: '0 1px 2px 0 rgb(0 0 0 / 0.05)' },\n shadow: {\n boxShadow:\n '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n },\n 'shadow-md': {\n boxShadow:\n '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n },\n 'shadow-lg': {\n boxShadow:\n '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n },\n 'shadow-xl': {\n boxShadow:\n '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n },\n 'shadow-2xl': {\n boxShadow: '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n },\n 'shadow-inner': {\n boxShadow: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n },\n 'shadow-none': { boxShadow: '0 0 #0000' },\n }\n\n addUtilities(presets)\n },\n}\n\nfunction createTw(config?: TwConfig) {\n return twrnc.create(\n {\n ...config,\n plugins: [...(config?.plugins ?? []), defaultShadows],\n },\n 'web'\n )\n}\n\nlet tw\nexport default function getTw({\n width,\n height,\n config,\n}: {\n width: number\n height: number\n config?: TwConfig\n}) {\n if (!tw) {\n tw = createTw(config)\n }\n tw.setWindowDimensions({ width: +width, height: +height })\n return tw\n}\n","import type { ReactNode } from 'react'\nimport type { TwConfig } from 'twrnc'\nimport type { SatoriNode } from './layout.js'\n\nimport getYoga, { init } from './yoga/index.js'\nimport layout from './layout.js'\nimport FontLoader, { FontOptions } from './font.js'\nimport svg from './builder/svg.js'\nimport { segment } from './utils.js'\nimport { detectLanguageCode, LangCode, Locale } from './language.js'\nimport getTw from './handler/tailwind.js'\nimport { preProcessNode } from './handler/preprocess.js'\nimport { cache } from './handler/image.js'\n\n// We don't need to initialize the opentype instances every time.\nconst fontCache = new WeakMap()\n\nexport type SatoriOptions = (\n | {\n width: number\n height: number\n }\n | {\n width: number\n }\n | {\n height: number\n }\n) & {\n fonts: FontOptions[]\n embedFont?: boolean\n debug?: boolean\n graphemeImages?: Record<string, string>\n loadAdditionalAsset?: (\n languageCode: string,\n segment: string\n ) => Promise<string | Array<FontOptions>>\n tailwindConfig?: TwConfig\n onNodeDetected?: (node: SatoriNode) => void\n}\nexport type { SatoriNode }\n\nexport { init }\n\nexport default async function satori(\n element: ReactNode,\n options: SatoriOptions\n): Promise<string> {\n const Yoga = await getYoga()\n if (!Yoga || !Yoga.Node) {\n throw new Error(\n 'Satori is not initialized: expect `yoga` to be loaded, got ' + Yoga\n )\n }\n options.fonts = options.fonts || []\n\n let font: FontLoader\n if (fontCache.has(options.fonts)) {\n font = fontCache.get(options.fonts)\n } else {\n fontCache.set(options.fonts, (font = new FontLoader(options.fonts)))\n }\n\n const definedWidth = 'width' in options ? options.width : undefined\n const definedHeight = 'height' in options ? options.height : undefined\n\n const root = Yoga.Node.create()\n if (definedWidth) root.setWidth(definedWidth)\n if (definedHeight) root.setHeight(definedHeight)\n root.setFlexDirection(Yoga.FLEX_DIRECTION_ROW)\n root.setFlexWrap(Yoga.WRAP_WRAP)\n root.setAlignContent(Yoga.ALIGN_AUTO)\n root.setAlignItems(Yoga.ALIGN_FLEX_START)\n root.setJustifyContent(Yoga.JUSTIFY_FLEX_START)\n root.setOverflow(Yoga.OVERFLOW_HIDDEN)\n\n const graphemeImages = { ...options.graphemeImages }\n // Some Chinese characters have different glyphs in Chinese and\n // Japanese, but their Unicode is the same. If the user needs to display\n // the Chinese and Japanese characters simultaneously correctly, the user\n // needs to download the Chinese and Japanese fonts, respectively.\n // Assuming that the user has downloaded the corresponding Japanese font,\n // to let the program realize that the font has not been downloaded in Chinese,\n // we need to prohibit Japanese as the fallback when executing `engine.has`.\n //\n // This causes a problem. Consider a scenario where we need to display Chinese\n // correctly under tags with `lang=\"ja\"` set. `engine.has` will repeatedly treat\n // the Chinese as missing font because we have removed the Chinese as a fallback.\n // To address this situation, we may need to add `processedWordsMissingFont`\n const processedWordsMissingFonts = new Set()\n\n cache.clear()\n await preProcessNode(element)\n\n const handler = layout(element, {\n id: 'id',\n parentStyle: {},\n inheritedStyle: {\n fontSize: 16,\n fontWeight: 'normal',\n fontFamily: 'serif',\n fontStyle: 'normal',\n lineHeight: 1.2,\n color: 'black',\n opacity: 1,\n whiteSpace: 'normal',\n\n // Special style properties:\n _viewportWidth: definedWidth,\n _viewportHeight: definedHeight,\n },\n parent: root,\n font,\n embedFont: options.embedFont,\n debug: options.debug,\n graphemeImages,\n canLoadAdditionalAssets: !!options.loadAdditionalAsset,\n onNodeDetected: options.onNodeDetected,\n getTwStyles: (tw, style) => {\n const twToStyles = getTw({\n width: definedWidth,\n height: definedHeight,\n config: options.tailwindConfig,\n })\n const twStyles = { ...twToStyles([tw] as any) }\n if (typeof twStyles.lineHeight === 'number') {\n twStyles.lineHeight =\n twStyles.lineHeight / (+twStyles.fontSize || style.fontSize || 16)\n }\n if (twStyles.shadowColor && twStyles.boxShadow) {\n twStyles.boxShadow = (twStyles.boxShadow as string).replace(\n /rgba?\\([^)]+\\)/,\n twStyles.shadowColor as string\n )\n }\n return twStyles\n },\n })\n\n const segmentsMissingFont = (await handler.next()).value as {\n word: string\n locale?: Locale\n }[]\n\n if (options.loadAdditionalAsset) {\n if (segmentsMissingFont.length) {\n const languageCodes = convertToLanguageCodes(segmentsMissingFont)\n const fonts: FontOptions[] = []\n const images: Record<string, string> = {}\n\n await Promise.all(\n Object.entries(languageCodes).flatMap(([code, segments]) =>\n segments.map((_segment) => {\n const key = `${code}_${_segment}`\n if (processedWordsMissingFonts.has(key)) {\n return null\n }\n processedWordsMissingFonts.add(key)\n\n return options\n .loadAdditionalAsset(code, _segment)\n .then((asset: any) => {\n if (typeof asset === 'string') {\n images[_segment] = asset\n } else if (asset) {\n if (Array.isArray(asset)) {\n fonts.push(...asset)\n } else {\n fonts.push(asset)\n }\n }\n })\n })\n )\n )\n\n // Directly mutate the font provider and the grapheme map.\n font.addFonts(fonts)\n Object.assign(graphemeImages, images)\n }\n }\n\n await handler.next()\n root.calculateLayout(definedWidth, definedHeight, Yoga.DIRECTION_LTR)\n\n const content = (await handler.next([0, 0])).value as string\n\n const computedWidth = root.getComputedWidth()\n const computedHeight = root.getComputedHeight()\n\n root.freeRecursive()\n\n return svg({ width: computedWidth, height: computedHeight, content })\n}\n\nfunction convertToLanguageCodes(\n segmentsMissingFont: { word: string; locale?: Locale }[]\n): Partial<Record<LangCode, string[]>> {\n const languageCodes = {}\n let wordsByCode = {}\n\n for (const { word, locale } of segmentsMissingFont) {\n const code = detectLanguageCode(word, locale).join('|')\n wordsByCode[code] = wordsByCode[code] || ''\n wordsByCode[code] += word\n }\n\n Object.keys(wordsByCode).forEach((code: LangCode) => {\n languageCodes[code] = languageCodes[code] || []\n if (code === 'emoji') {\n languageCodes[code].push(\n ...unique(segment(wordsByCode[code], 'grapheme'))\n )\n } else {\n languageCodes[code][0] = languageCodes[code][0] || ''\n languageCodes[code][0] += unique(\n segment(\n wordsByCode[code],\n 'grapheme',\n code === 'unknown' ? undefined : code\n )\n ).join('')\n }\n })\n\n return languageCodes\n}\n\nfunction unique<T>(arr: T[]): T[] {\n return Array.from(new Set(arr))\n}\n"],"mappings":"gqBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,mBAAAE,KAAA,eAAsBA,IAAgB,CACpC,GAAM,CAAE,QAASC,CAAS,EAAI,KAAM,QAAO,mBAAmB,EAC9D,OAAOA,EAAS,CAClB,CAHA,IAAAC,GAAAC,GAAA,QCAA,IAAAC,GAAAC,EAAAC,IAAA,cACA,OAAO,eAAeA,GAAS,aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,GAAS,UAAW,CACtC,WAAY,GACZ,IAAK,IAAIC,EACb,CAAC,EACD,SAASA,GAASC,EAAO,CAErB,GADAA,EAAQ,GAAGA,CAAK,GACZA,IAAU,IACV,MAAO,IAGX,GAAI,4CAA4C,KAAKA,CAAK,EACtD,OAAOA,EAAM,QAAQ,SAAWC,GAAOA,IAAS,IAAM,GAAK,GAAG,EAElE,GAAID,EAAM,SAAS,MAAM,GAAKA,EAAM,SAAS,OAAO,EAChD,MAAO,QAAQA,CAAK,QAE5B,ICpBA,IAAAE,GAAAC,EAAAC,IAAA,cACA,OAAO,eAAeA,GAAS,aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,GAAS,UAAW,CACtC,WAAY,GACZ,IAAK,IAAIC,EACb,CAAC,EACD,IAAMA,GAAW,CACb,YACA,YACA,gBACA,gBACA,aACA,WACA,QACA,YACA,SACA,QACA,aACA,kBACA,gBACA,UACA,eACA,aACA,QACA,QACA,SACA,YACA,UACA,cACA,SACA,YACA,YACA,QACA,WACA,WACA,OACA,aACA,WACA,YACA,cACA,iBACA,gBACA,kBACA,YACA,SACA,OACA,QACA,YACA,YACA,SACA,cACA,aACA,SACA,iBACA,kBACA,iBACA,eACA,gBACA,oBACA,gBACA,aACA,UACA,cACA,cACA,aACA,kBACA,eACA,eACA,sBACA,mBACA,gBACA,WACA,eACA,aACA,eACA,aACA,iBACA,eACA,MACA,QACA,cACA,cACA,cACA,gBACA,YACA,YACA,cACA,WACA,qBACA,iBACA,eACA,aACA,YACA,eACA,cACA,cACA,cACA,gBACA,kBACA,oBACA,kBACA,qBACA,qBACA,iBACA,uBACA,iBACA,qBACA,mBACA,mBACA,OACA,SACA,cACA,YACA,iBACA,UACA,YACA,aACA,gBACA,aACA,WACA,aACA,gBACA,YACA,qBACA,aACA,gBACA,YACA,cACA,iBACA,sBACA,sBACA,0BACA,sBACA,gBACA,mBACA,qBACA,aACA,cACA,UACA,sBACA,eACA,YACA,iBACA,eACA,eACA,gBACA,eACA,YACA,YACA,cACA,kBACA,kBACA,OACA,aACA,WACA,aACA,YACA,YACA,SACA,WACA,QACA,SACA,eACA,qBACA,mBACA,oBACA,oBACA,iBACA,kBACA,mBACA,gBACA,iBACA,qBACA,kBACA,qBACA,2BACA,aACA,SACJ,ICpLA,IAAAC,GAAAC,EAAAC,IAAA,cACA,OAAO,eAAeA,GAAS,aAAc,CACzC,MAAO,EACX,CAAC,EACD,OAAO,eAAeA,GAAS,UAAW,CACtC,WAAY,GACZ,IAAK,IAAIC,EACb,CAAC,EACD,SAASA,GAASC,EAAcC,EAAS,CACrC,OAAID,IAAiB,OACVC,EAES,MAAM,QAAQD,CAAY,EAAIA,EAAe,CAC7D,GAAG,IAAI,IAAIC,EAAQ,OAAQC,GAChBF,IAAiB,IAASA,EAAaE,CAAU,IAAM,EACjE,EAAE,OAAO,OAAO,KAAKF,CAAY,EAAE,OAAQE,GACjCF,EAAaE,CAAU,IAAM,EACvC,CAAC,CAAC,CACP,CAEJ,ICpBA,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CACAA,GAAO,QAAU,CACf,QAAS,CAAC,EACV,QAAS,CAAC,EACV,SAAU,QACV,MAAO,CACL,QAAS,CACP,GAAI,QACJ,GAAI,QACJ,GAAI,SACJ,GAAI,SACJ,MAAO,QACT,EACA,OAAQ,CAAC,CAAE,OAAAC,CAAO,KAAO,CACvB,QAASA,EAAO,QAChB,QAASA,EAAO,QAChB,YAAaA,EAAO,YACpB,MAAOA,EAAO,MACd,MAAOA,EAAO,MACd,MAAOA,EAAO,MACd,KAAMA,EAAO,KACb,KAAMA,EAAO,KACb,QAASA,EAAO,QAChB,MAAOA,EAAO,MACd,IAAKA,EAAO,IACZ,OAAQA,EAAO,OACf,MAAOA,EA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CZ,YAAa,EACb,WAAY,MACd,EACA,GAAI,CACF,QAASA,GACT,SAAU,QACV,UAAW,SACX,aAAc,SACd,WAAY,EACZ,YAAa,EACb,WAAY,MACd,EACA,GAAI,CACF,QAASA,GACT,SAAU,SACV,UAAW,MACX,aAAc,MACd,WAAY,EACZ,YAAa,EACb,WAAY,MACd,EACA,GAAI,CACF,QAASA,GACT,UAAW,SACX,aAAc,SACd,WAAY,EACZ,YAAa,EACb,WAAY,MACd,EACA,GAAI,CACF,QAASA,GACT,SAAU,SACV,UAAW,SACX,aAAc,SACd,WAAY,EACZ,YAAa,EACb,WAAY,MACd,EACA,GAAI,CACF,QAASA,GACT,SAAU,SACV,UAAW,SACX,aAAc,SACd,WAAY,EACZ,YAAa,EACb,WAAY,MACd,EAKA,EAAG,CACD,eAAgB,WAClB,EACA,OAAQ,CACN,WAAY,MACd,EACA,EAAG,CACD,WAAY,MACd,EACA,EAAG,CACD,UAAW,QACb,EACA,GAAI,CACF,UAAW,QACb,EACA,KAAM,CACJ,WAAY,WACd,EACA,IAAK,CACH,WAAY,WACd,EACA,IAAK,CACH,QAASA,GACT,WAAY,YACZ,WAAY,MACZ,UAAW,MACX,aAAc,KAChB,EACA,KAAM,CACJ,gBAAiB,SACjB,MAAO,OACT,EACA,IAAK,CACH,SAAU,QACZ,EACA,MAAO,CACL,SAAU,SACZ,EACA,EAAG,CACD,eAAgB,cAClB,CACF,EC1IA,IAAME,GAAO,IAAI,IAAI,CACnB,QACA,OACA,aACA,WACA,YACA,aACA,gBACA,aACA,YACA,gBACA,mBACA,kBACA,mBACA,qBACA,sBACA,sBACA,aACA,YACA,YACA,UAIA,UACA,SAGA,iBACA,kBACA,uBACA,mBACA,kCACF,CAAC,EAEc,SAARC,GAA6BC,EAAyC,CAC3E,IAAMC,EAAkC,CAAC,EACzC,QAAWC,KAAQF,EACbF,GAAK,IAAII,CAAI,IACfD,EAAeC,CAAI,EAAIF,EAAME,CAAI,GAGrC,OAAOD,CACT,CCxCA,IAAAE,GAAsD,+BACtDC,GAAkC,iCAClCC,GAAwC,0BACxCC,GAA0B,iCCR1B,IA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","names":["yoga_prebuilt_exports","__export","getYogaModule","initYoga","init_yoga_prebuilt","__esmMin","require_negateValue","__commonJSMin","exports","_default","value","sign","require_corePluginList","__commonJSMin","exports","_default","require_configurePlugins","__commonJSMin","exports","_default","pluginConfig","plugins","pluginName","require_defaultConfig_stub","__commonJSMin","exports","module","colors","theme","breakpoints","log_exports","__export","log_default","init_log","__esmMin","key","messages","require_colors","__commonJSMin","exports","_default","_log","_interopRequireDefault","obj","warn","version","from","to","require_defaults","__commonJSMin","exports","defaults","target","sources","source","k","ref","k1","ref1","require_toPath","__commonJSMin","exports","toPath","path","openBrackets","closedBrackets","require_normalizeConfig","__commonJSMin","exports","normalizeConfig","_log","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","obj","cache","newObj","hasPropertyDescriptor","key","desc","config","path","value","value1","ref","content","purge","safelist","_prefix","extract","ref1","ref2","ref3","ref4","ref5","ref6","ref7","ref8","ref9","extractors","defaultExtractor","extensions","extractor","extension","transform","transformers","file","require_isPlainObject","__commonJSMin","exports","isPlainObject","value","prototype","require_cloneDeep","__commonJSMin","exports","cloneDeep","value","child","k","v","require_unesc","__commonJSMin","exports","module","unesc","gobbleHex","str","lower","hex","spaceTerminated","code","valid","codePoint","isSurrogate","CONTAINS_ESCAPE","needToProcess","ret","i","gobbled","require_getProp","__commonJSMin","exports","module","getProp","obj","_len","props","_key","prop","require_ensureObject","__commonJSMin","exports","module","ensureObject","obj","_len","props","_key","prop","require_stripComments","__commonJSMin","exports","module","stripComments","str","s","commentStart","lastEnd","commentEnd","require_util","__commonJSMin","exports","_unesc","_interopRequireDefault","_getProp","_ensureObject","_stripComments","obj","require_node","__commonJSMin","exports","module","_util","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","cloneNode","obj","parent","cloned","value","type","j","Node","opts","_proto","index","overrides","name","valueEscaped","originalValue","originalEscaped","line","column","rawSpace","raw","require_types","__commonJSMin","exports","TAG","STRING","SELECTOR","ROOT","PSEUDO","NESTING","ID","COMMENT","COMBINATOR","CLASS","ATTRIBUTE","UNIVERSAL","require_container","__commonJSMin","exports","module","_node","_interopRequireDefault","types","_interopRequireWildcard","_getRequireWildcardCache","cache","obj","newObj","hasPropertyDescriptor","key","desc","_createForOfIteratorHelperLoose","o","allowArrayLike","it","_unsupportedIterableToArray","i","minLen","_arrayLikeToArray","arr","len","arr2","_defineProperties","target","props","descriptor","_createClass","Constructor","protoProps","staticProps","_inheritsLoose","subClass","superClass","_setPrototypeOf","p","Container","_Node","opts","_this","_proto","selector","index","child","id","_iterator","_step","node","oldNode","newNode","oldIndex","line","col","found","foundChild","callback","result","_this2","_this3","_this4","_this5","_this6","_this7","_this8","_this9","_this10","_this11","current","memo","split","require_root","__commonJSMin","exports","module","_container","_interopRequireDefault","_types","obj","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Root","_Container","opts","_this","_proto","str","memo","selector","message","options","handler","require_selector","__commonJSMin","exports","module","_container","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Selector","_Container","opts","_this","require_cssesc","__commonJSMin","exports","module","object","hasOwnProperty","merge","options","defaults","result","key","regexAnySingleEscape","regexSingleEscape","regexExcessiveSpaces","cssesc","string","quote","isIdentifier","firstChar","output","counter","length","character","codePoint","value","extra","$0","$1","$2","require_className","__commonJSMin","exports","module","_cssesc","_interopRequireDefault","_util","_node","_types","obj","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","ClassName","_Node","opts","_this","_proto","v","escaped","require_comment","__commonJSMin","exports","module","_node","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Comment","_Node","opts","_this","require_id","__commonJSMin","exports","module","_node","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","ID","_Node","opts","_this","_proto","require_namespace","__commonJSMin","exports","module","_cssesc","_interopRequireDefault","_util","_node","obj","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Namespace","_Node","_proto","value","namespace","escaped","ns","require_tag","__commonJSMin","exports","module","_namespace","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Tag","_Namespace","opts","_this","require_string","__commonJSMin","exports","module","_node","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","String","_Node","opts","_this","require_pseudo","__commonJSMin","exports","module","_container","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Pseudo","_Container","opts","_this","_proto","params","require_deprecate","__commonJSMin","exports","module","fn","message","args","require_attribute","__commonJSMin","exports","unescapeValue","_cssesc","_interopRequireDefault","_unesc","_namespace","_types","_CSSESC_QUOTE_OPTIONS","obj","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","deprecate","WRAPPED_IN_QUOTES","warnOfDeprecatedValueAssignment","warnOfDeprecatedQuotedAssignment","warnOfDeprecatedConstructor","value","deprecatedUsage","quoteMark","unescaped","m","handleDeprecatedContructorOpts","opts","_unescapeValue","Attribute","_Namespace","_this","_proto","options","cssescopts","CSSESC_QUOTE_OPTIONS","escaped","v","numSingleQuotes","numDoubleQuotes","pref","quote","quoteValue","rawValue","prop","name","attrSpaces","spaces","rawSpaces","spaceName","concat","defaultAttrConcat","count","attributeSpaces","operatorSpaces","operator","valueSpaces","insensitiveSpaces","_this2","selector","attrValue","qm","_unescapeValue2","require_universal","__commonJSMin","exports","module","_namespace","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Universal","_Namespace","opts","_this","require_combinator","__commonJSMin","exports","module","_node","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Combinator","_Node","opts","_this","require_nesting","__commonJSMin","exports","module","_node","_interopRequireDefault","_types","obj","_inheritsLoose","subClass","superClass","_setPrototypeOf","o","p","Nesting","_Node","opts","_this","require_sortAscending","__commonJSMin","exports","module","sortAscending","list","a","b","require_tokenTypes","__commonJSMin","exports","ampersand","asterisk","at","comma","colon","semicolon","openParenthesis","closeParenthesis","openSquare","closeSquare","dollar","tilde","caret","plus","equals","pipe","greaterThan","space","singleQuote","doubleQuote","slash","bang","backslash","cr","feed","newline","tab","str","comment","word","combinator","require_tokenize","__commonJSMin","exports","tokenize","t","_interopRequireWildcard","_unescapable","_wordDelimiters","_getRequireWildcardCache","cache","obj","newObj","hasPropertyDescriptor","key","desc","unescapable","wordDelimiters","hex","hexChars","i","consumeWord","css","start","next","code","consumeEscape","hexDigits","FIELDS","input","tokens","_css","length","offset","line","end","content","endColumn","endLine","escaped","escapePos","last","lines","nextLine","nextOffset","quote","tokenType","unclosed","what","fix","require_parser","__commonJSMin","exports","module","_root","_interopRequireDefault","_selector","_className","_comment","_id","_tag","_string","_pseudo","_attribute","_interopRequireWildcard","_universal","_combinator","_nesting","_sortAscending","_tokenize","tokens","types","_util","_WHITESPACE_TOKENS","_Object$assign","_getRequireWildcardCache","cache","obj","newObj","hasPropertyDescriptor","key","desc","_defineProperties","target","props","i","descriptor","_createClass","Constructor","protoProps","staticProps","WHITESPACE_TOKENS","WHITESPACE_EQUIV_TOKENS","tokenStart","token","tokenEnd","getSource","startLine","startColumn","endLine","endColumn","getTokenSource","getTokenSourceSpan","startToken","endToken","unescapeProp","node","prop","value","indexesOf","array","item","indexes","uniqs","list","Parser","rule","options","rootSource","selector","_proto","_this","message","errorOptions","attr","startingToken","len","pos","spaceBefore","commentBefore","lastAdded","spaceAfterMeaningfulToken","content","next","prevContent","existingComment","rawValue","oldRawValue","_rawValue","_unescaped","_oldRawValue","oldValue","insensitive","_unescapeValue","unescaped","quoteMark","lastComment","rawLastComment","lastValue","rawLastValue","stopPosition","startPosition","nodes","space","spaces","firstToken","lastToken","requiredSpace","_this2","rawSpace","n","rawSpaceBefore","result","position","nameRaw","name","raws","_this3","nextSigTokenPos","last","_this$convertWhitespa","spaceOrDescendantSelectorNodes","_this$convertWhitespa2","_space","_rawSpace","_this$convertWhitespa3","_space2","_rawSpace2","current","opts","before","nextContent","unbalanced","parenStart","parenValue","parenEnd","_this4","pseudoStr","first","length","namespace","nextToken","firstCallback","_this5","word","hasClass","escapedDot","isKeyframesPercent","hasId","interpolations","hashIndex","indices","ind","index","sourceIndex","source","classNameOpts","idOpts","tagOpts","throwOnParenthesis","description","found","an","required","searchPosition","require_processor","__commonJSMin","exports","module","_parser","_interopRequireDefault","obj","Processor","func","options","_proto","rule","merged","parser","_this","resolve","reject","root","transform","string","e","result","require_constructors","__commonJSMin","exports","_attribute","_interopRequireDefault","_className","_combinator","_comment","_id","_nesting","_pseudo","_root","_selector","_string","_tag","_universal","obj","attribute","opts","className","combinator","comment","id","nesting","pseudo","root","selector","string","tag","universal","require_guards","__commonJSMin","exports","isNode","isPseudoElement","isPseudoClass","isContainer","isNamespace","_types","_IS_TYPE","IS_TYPE","node","isNodeType","type","isAttribute","isClassName","isCombinator","isComment","isIdentifier","isNesting","isPseudo","isRoot","isSelector","isString","isTag","isUniversal","require_selectors","__commonJSMin","exports","_types","key","_constructors","_guards","require_dist","__commonJSMin","exports","module","_processor","_interopRequireDefault","selectors","_interopRequireWildcard","_getRequireWildcardCache","cache","obj","newObj","hasPropertyDescriptor","key","desc","parser","processor","_default","require_escapeCommas","__commonJSMin","exports","escapeCommas","className","require_color_name","__commonJSMin","exports","module","require_color","__commonJSMin","exports","_export","target","all","name","parseColor","formatColor","_colorName","_interopRequireDefault","obj","HEX","SHORT_HEX","VALUE","SEP","ALPHA_SEP","CUSTOM_PROPERTY","RGB","HSL","value","loose","ref","ref1","v","hex","_","r","g","b","a","ref2","match","color","part","mode","alpha","hasAlpha","require_withAlphaVariable","__commonJSMin","exports","_export","target","all","name","withAlphaValue","withAlphaVariable","_color","color","alphaValue","defaultValue","parsed","property","variable","properties","p","require_regex","__commonJSMin","exports","_export","target","all","name","pattern","withoutCapturing","any","optional","zeroOrMore","nestedBrackets","escape","REGEX_SPECIAL","REGEX_HAS_SPECIAL","toSource","source","item","sources","open","close","depth","string","require_splitAtTopLevelOnly","__commonJSMin","exports","splitAtTopLevelOnly","_regex","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","obj","cache","newObj","hasPropertyDescriptor","key","desc","input","separator","SPECIALS","depth","lastIndex","found","separatorIndex","separatorStart","separatorLength","match","matchesSeparator","atEndOfSeparator","matchesFullSeparator","require_parseBoxShadowValue","__commonJSMin","exports","_export","target","all","name","parseBoxShadowValue","formatBoxShadowValue","_splitAtTopLevelOnly","KEYWORDS","SPACE","LENGTH","input","shadow","value","result","parts","seen","part","shadows","require_dataTypes","__commonJSMin","exports","_export","target","all","name","normalize","url","number","percentage","length","lineWidth","shadow","color","image","gradient","position","familyName","genericName","absoluteSize","relativeSize","_color","_parseBoxShadowValue","cssFunctions","COMMA","UNDERSCORE","value","isRoot","part","fullMatch","characterBefore","match","fn","lengthUnits","lengthUnitsPattern","lineWidths","parsedShadows","parsedShadow","colors","images","gradientTypes","type","validPositions","positions","fonts","genericNames","absoluteSizes","relativeSizes","require_pluginUtils","__commonJSMin","exports","_export","target","all","name","updateAllClasses","asValue","parseColorFormat","asColor","asLookupValue","coerceValue","_postcssSelectorParser","_interopRequireDefault","_escapeCommas","_withAlphaVariable","_dataTypes","_negateValue","obj","selectors","updateClass","sel","updatedClass","resolveArbitraryValue","modifier","validate","isArbitraryValue","value","asNegativeValue","lookup","positiveValue","resolved","options","ref","input","splitAlpha","slashIdx","oldValue","opacityValue","tailwindConfig","ref1","color","alpha","ref2","ref3","ref4","ref5","normalizedColor","guess","typeMap","supportedTypes","splitAtFirst","delim","idx","types","arbitraryValue","explicitType","type","result","require_toColorValue","__commonJSMin","exports","toColorValue","maybeFunction","require_resolveConfig","__commonJSMin","exports","resolveConfig","_negateValue","_interopRequireDefault","_corePluginList","_configurePlugins","_defaultConfigStub","_colors","_defaults","_toPath","_normalizeConfig","_isPlainObject","_cloneDeep","_pluginUtils","_withAlphaVariable","_toColorValue","obj","isFunction","input","isObject","mergeWith","target","sources","customizer","source","k","merged","configUtils","scale","key","negativeScale","negativeValue","screens","breakpoints","value","valueToResolve","args","collectExtends","items","extend","mergedValue","extendValue","mergeThemes","themes","theme","mergeExtensionCustomizer","mergeExtensions","themeValue","extensions","resolveThemePath","utils","e","toPaths","path","pattern","matches","prefix","alpha","newPath","resolveFunctionKeys","object","resolvePath","defaultValue","index","val","normalized","resolved","extractPluginConfigs","configs","allConfigs","config","ref","plugins","plugin","resolveCorePlugins","corePluginConfigs","corePluginConfig","resolvePluginLists","pluginLists","pluginList","ref1","t","c","picocolors_exports","__export","picocolors_default","init_picocolors","__esmMin","s","require_featureFlags","__commonJSMin","exports","_export","target","all","name","flagEnabled","issueFlagNotices","_default","_picocolors","_interopRequireDefault","_log","obj","defaults","featureFlags","config","flag","ref","ref1","ref2","ref3","ref4","ref5","experimentalFlagsEnabled","changes","s","require_getAllConfigs","__commonJSMin","exports","getAllConfigs","_defaultConfigStubJs","_interopRequireDefault","_featureFlags","obj","config","ref","configs","preset","features","experimentals","feature","require_resolve_config","__commonJSMin","exports","resolveConfig","_resolveConfig","_interopRequireDefault","_getAllConfigs","obj","configs","defaultConfigs","require_resolveConfig","__commonJSMin","exports","module","resolveConfig","src_exports","__export","satori","init","__toCommonJS","yogaInstance","init","yoga","initializationPromise","getYoga","mod","e","t","r","u","k","g","a","z","v","c","L","w","h","$","y","m","j","b","q","f","p","l","d","s","x","o","O","F","U","E","D","i","import_linebreak","isReactElement","node","type","isClass","f","hasDangerouslySetInnerHTMLProp","props","normalizeChildren","children","flattend","res","i","value","lengthToNumber","length","baseFontSize","baseLength","inheritedStyle","percentage","parsed","U","multiply","m1","m2","v","field","map","fallback","errorIfNotAllowedForProperty","_v","wordSegmenter","graphemeSegmenter","wordSeparators","point","segment","content","granularity","locale","seg","segmented","output","s","previousWord","nextWord","buildXMLString","attrs","attrString","k","createLRU","max","store","set","key","keyToDelete","get","entry","clear","parseViewBox","viewBox","toString","x","isString","isNumber","isUndefined","splitByBreakOpportunities","wordBreak","breaker","LineBreaker","last","bk","words","requiredBreaks","word","midline","_","letter","splitEffects","input","separator","result","l","parenCount","AVIF","WEBP","APNG","PNG","JPEG","GIF","SVG","parseJPEG","buf","view","offset","len","next","parseGIF","parsePNG","v","cache","createLRU","inflightRequests","ALLOWED_IMAGE_TYPES","arrayBufferToBase64","buffer","binary","bytes","i","base64ToArrayBuffer","base64","binaryString","parseSvgImageSize","src","data","svgTag","viewBoxStr","viewBox","parseViewBox","width","height","size","ratio","arrayBufferToDataUri","imageSize","imageType","detectContentType","resolveImageData","newSrc","decodedURI","encodingType","dataString","utf8Src","base64Src","cached","url","promise","res","type","e","result","err","b","detectAPNG","dv","length","off","isAPNG","chars","ATTRIBUTE_MAPPING","SVGSymbols","translateSVGNodeToSVGString","node","inheritedColor","n","type","children","style","restProps","currentColor","attrs","k","_v","cache","styles","midline","preProcessNode","set","walk","_node","isReactElement","v","c","s","resolveImageData","SVGNodeToImage","viewBox","viewbox","width","height","className","viewBoxSize","parseViewBox","ratio","DEFAULT_DISPLAY","presets_default","list","inheritable","style","inheritedStyle","prop","import_css_to_react_native","import_css_background_parser","import_css_box_shadow","import_parse_css_color","import_postcss_value_parser","parseUnit","word","baseFontSize","parsed","U","handleWord","unitIsHorizontal","parsedUnit","parseTransformOrigin","value","words","valueParser","node","import_css_to_react_native","getMaskProperty","style","name","key","parseMask","maskImage","common","splitEffects","v","m","optOutPx","keepNumber","handleFallbackColor","prop","parsed","rawInput","currentColor","purify","name","value","num","handleSpecialCase","_v","horizontal","vertical","vh","vv","k","resolved","purified","v","full","p","parseBoxShadow","symbols","replaced","_","symbol","t","result","shadows","splitEffects","shadow","styles","getErrorHint","RGB_SLASH","normalizeColor","r","g","b","a","expand","style","inheritedStyle","serializedStyle","getCurrentColor","preprocess","resolvedStyle","err","backgrounds","parseMask","baseFontSize","calcBaseFontSize","parseTransformOrigin","lengthToNumber","len","color","transforms","transform","type","textShadowRadius","textShadowOffset","height","width","size","inheritedSize","U","refineHSL","cssColorParse","h","s","l","inheritedColor","convertCurrentColorToActualValue","isString","compute","node","type","inheritedStyle","definedStyle","props","Yoga","getYoga","style","expand","presets_default","resolvedSrc","imageWidth","imageHeight","resolveImageData","r","extraHorizontal","extraVertical","contentBoxWidth","contentBoxHeight","isAbsoluteContentSize","viewBox","viewBoxSize","parseViewBox","ratio","width","height","lengthToNumber","v","inheritable","import_escape_html","baseMatrix","resolveTransforms","transforms","width","height","matrix","transform","type","v","len","transformMatrix","rad","c","s","multiply","left","top","isInheritingTransform","transformOrigin","result","xOrigin","yOrigin","x","y","container","left","top","width","height","isInheritingTransform","style","matrix","opacity","transform","buildText","id","content","filter","image","clipPathId","debug","shape","decorationShape","extra","buildXMLString","shapeProps","escapeHTML","shiftPath","path","dx","dy","_","command","x","y","SCALE","buildDropShadow","id","width","height","style","shadowCount","effects","merge","left","right","top","bottom","i","grow","buildXMLString","boxShadow","shape","opacity","shadow","innerShadow","s","shadowStyle","sid","maskId","shapeWithSpread","finalShape","buildDecoration","width","left","top","ascender","clipPathId","style","textDecorationColor","textDecorationStyle","textDecorationLine","fontSize","color","height","y","dasharray","buildXMLString","stringFromCode","code","Space","Tab","HorizontalEllipsis","genMeasurer","engine","isImage","style","fontSize","letterSpacing","cache","measureGrapheme","grapheme","width","measureGraphemeArray","graphemes","measureText","text","segment","preprocess","content","style","locale","textTransform","whiteSpace","wordBreak","processTextTransform","processedContent","shouldCollapseTabsAndSpaces","allowSoftWrap","processWhiteSpace","words","requiredBreaks","allowBreakWord","processWordBreak","lineLimit","blockEllipsis","processTextOverflow","segment","word","grapheme","index","textOverflow","lineClamp","WebkitLineClamp","WebkitBoxOrient","overflow","display","HorizontalEllipsis","parseLineClamp","isNumber","splitByBreakOpportunities","shouldKeepLinebreak","Space","input","regex1","regex2","match1","match2","number","text","skippedWordWhenFindingMissingFont","Tab","shouldSkipWhenFindingMissingFont","word","buildTextNodes","content","context","Yoga","getYoga","parentStyle","inheritedStyle","parent","font","id","isInheritingTransform","debug","embedFont","graphemeImages","locale","canLoadAdditionalAssets","textAlign","lineHeight","textWrap","fontSize","cssFilter","tabSize","letterSpacing","_inheritedBackgroundClipTextPath","flexShrink","words","requiredBreaks","allowSoftWrap","allowBreakWord","processedContent","shouldCollapseTabsAndSpaces","lineLimit","blockEllipsis","preprocess","textContainer","createTextContainerNode","isUndefined","engine","wordsMissingFont","segment","isImage","s","measureGrapheme","measureGraphemeArray","measureText","genMeasurer","tabWidth","isString","lengthToNumber","Space","calc","text","currentWidth","index","tabCount","detectTabs","originWidth","textBeforeTab","textAfterTab","textWidthBeforeTab","offsetBeforeTab","afterTrimEndWidth","lineWidths","baselines","lineSegmentNumber","texts","wordPositionInLayout","flow","width","lines","maxWidth","lineIndex","height","currentLineHeight","currentBaselineOffset","i","prevLineEndingSpacesWidth","forceBreak","w","endingSpacesWidth","_word","lineEndingSpacesWidth","allowedToPutAtBeginning","allowedToJustify","willWrap","chars","glyphHeight","x","_texts","j","_text","_width","_isImage","measuredTextSize","containerWidth","l","r","m","mHeight","y","result","backgroundClipDef","clipPathId","overflowMaskId","containerLeft","containerTop","containerHeight","parentContainerInnerWidth","left","top","matrix","opacity","container","filter","textShadowColor","textShadowOffset","textShadowRadius","buildDropShadow","buildXMLString","decorationShape","mergedPath","extra","skippedLine","decorationLines","wordBuffer","bufferedOffset","layout","nextLayout","path","isLastDisplayedBeforeEllipsis","image","topOffset","leftOffset","line","extendedWidth","remainingWidth","segments","gutter","baselineOfLine","baselineOfWord","heightOfWord","baselineDelta","calcEllipsis","baseWidth","subset","resolvedWidth","char","ellipsisWidth","_blockEllipsis","HorizontalEllipsis","spaceWidth","isNotLastLine","nextLineText","wordSeparators","finalizedSegment","finalizedLeftOffset","finalizedWidth","deco","buildDecoration","t","shape","buildText","p","v","import_parse_css_color","GradientParser","FALLBACK_LINEAR_ORIENTATION","tokens","input","error","msg","err","getAST","ast","matchListDefinitions","matchListing","matchDefinition","matchGradient","matchLinearOrientation","matchListRadialOrientations","getDefaultRadialGradient","orientation","_a","_b","_c","_d","res","v","gradientType","pattern","orientationMatcher","fallbackOrientation","matchCall","captures","scan","matchColorStop","callback","result","matchSideOrCorner","matchAngle","matchZero","match","radialOrientations","radialOrientation","matchRadialOrientation","lookaheadCache","pre","preMatchRadialOrientation","at","matchAtPosition","rgEndingShape","matchCircle","matchEllipse","rgSize","matchExtentKeyword","matchLength","matchDistance","extra","positioning","matchPositioning","location","matchCoordinates","matcher","color","matchColor","matchHexColor","matchRGBAColor","matchRGBColor","matchLiteralColor","matchNumber","matchPositionKeyword","matchRelativeLength","captureIndex","type","regexp","blankCaptures","consume","size","code","gradient_parser_default","resolveColorFromStop","stop","resolveXYFromDirection","dir","x1","y1","x2","y2","toAbsoluteValue","v","base","parseLengthPairs","str","x","y","defaultX","defaultY","value","parsed","U","index","normalizeStops","totalLength","colorStops","from","stops","color","offset","lastStop","previousStop","nextStop","i","cssColorParse","backgroundImage","id","width","height","left","top","image","size","position","repeat","inheritableStyle","repeatX","repeatY","dimensions","offsets","gradient_parser_default","imageWidth","imageHeight","length","calc","angle","tmp","tan","tanTexture","r","angleTexture","l","cosA","gradientId","patternId","defs","buildXMLString","orientation","xDelta","yDelta","shape","cx","cy","pos","calcRadialGradient","maskId","spread","calcRadius","dimensionsWithoutFallback","src","resolveImageData","resolvedWidth","resolvedHeight","baseFontSize","style","calcPos","lengthToNumber","key","endingShape","centerAxis","fx","fy","ratio","svgArcCenterOffset","rx","ry","resolveSize","a","b","limit","makeSmaller","arr","resolveRadius","v","width","height","fontSize","style","sides","singleValue","lengthToNumber","radiusZeroOrNull","_radius","radius","left","top","partialSides","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","singleAbsValueTopLeftCorner","singleAbsValueTopRightCorner","singleAbsValueBottomLeftCorner","singleAbsValueBottomRightCorner","p","T","R","B","L","getArc","i","c0","start","result","arc0","l","len","end","arc1","compareBorderDirections","a","b","style","getBorderClipPath","id","currentClipPathId","borderPath","borderType","left","top","width","height","rectClipId","buildXMLString","border","props","asContentMask","maskBorderOnly","directions","direction","fullBorder","start","partialSides","currentStyle","_i","i","ni","d","nd","w","radius","contentMask","id","left","top","width","height","matrix","borderOnly","style","offsetLeft","offsetTop","offsetRight","offsetBottom","contentArea","buildXMLString","border","import_css_to_react_native","regexMap","createShapeParser","width","height","style","inheritedStyle","parseCircle","str","res","value","radius","pos","x","y","resolvePosition","lengthToNumber","parseEllipse","v","rx","ry","parsePath","fillRule","resolveFillRule","parsePolygon","points","k","i","parseInset","inset","radiusMap","r","s","offsets","w","h","d","position","xDelta","yDelta","genClipPathId","id","genClipPath","buildClipPath","v","style","inheritedStyle","parser","createShapeParser","clipPath","tmp","k","type","rest","buildXMLString","overflow","left","top","width","height","path","matrix","id","currentClipPath","src","style","inheritableStyle","overflowClipPath","clipPath","buildClipPath","_id","genClipPathId","buildXMLString","contentMask","genMaskImageId","id","buildMaskImage","v","style","inheritedStyle","left","top","width","height","maskImage","length","miId","mask","i","m","_id","def","backgroundImage","buildXMLString","rect","id","left","top","width","height","isInheritingTransform","src","debug","style","inheritableStyle","isImage","type","matrix","defs","fills","opacity","extra","transform","backgroundShapes","backgrounds","index","background","image","backgroundImage","miId","mi","buildMaskImage","maskId","path","radius","clipPathId","buildXMLString","backgroundClip","cssFilter","currentClipPath","genClipPath","clip","overflow","shape","fill","borderClip","getBorderClipPath","offsetLeft","offsetTop","offsetRight","offsetBottom","preserveAspectRatio","rectClipId","border","shadow","boxShadow","emoji_regex_default","emojiRegex","emoji_regex_default","specialCode","code","locales","isValidLocale","x","detectLanguageCode","segment","locale","c","languages","lang","index","normalizeLocale","l","layout","element","context","_a","Yoga","getYoga","id","inheritedStyle","parent","font","debug","locale","embedFont","graphemeImages","canLoadAdditionalAssets","getTwStyles","isReactElement","iter","buildTextNodes","isClass","offset","type","props","hasDangerouslySetInnerHTMLProp","style","children","tw","_newLocale","newLocale","normalizeLocale","twStyles","node","computedStyle","newInheritableStyle","compute","isInheritingTransform","mutateRefValue","normalizedChildren","normalizeChildren","iterators","i","segmentsMissingFont","child","x","y","left","top","width","height","childrenRenderResult","baseRenderResult","depsRenderResult","childrenNode","restProps","src","rect","currentColor","SVGNodeToImage","display","buildXMLString","import_opentype","SUFFIX_WHEN_LANG_NOT_SET","compareFont","weight","style","matchedWeight","matchedStyle","nextWeight","nextStyle","FontLoader","fontOptions","name","fonts","matchedFont","i","weight1","style1","weight2","style2","fontOption","data","lang","isValidLocale","locales","_lang","font","opentype","originalCharToGlyphIndex","char","index","_name","fontSize","lineHeight","fontFamily","fontWeight","fontStyle","locale","face","getNormal","getUnknown","keys","specifiedLangFonts","nonSpecifiedLangFonts","additionalFonts","getLangFromFontName","cachedFontResolver","resolveFont","word","fallback","_fonts","code","_font","ascender","resolvedFont","useOS2Table","_a","_b","descender","resolve","s","engine","A","D","glyphHeight","yMax","yMin","sGlyphHeight","baselineOffset","brokenChars","originalStringToGlyphs","args","glyphs","anotherFont","glyph","scale","p","command","scaledCommand","k","g","content","letterSpacing","unpatch","top","left","arr","svg","width","height","content","buildXMLString","import_resolveConfig","PLATFORMS","isPlatform","x","ORIENTATIONS","isOrientation","ConfigType","Unit","isString","value","isObject","_a","complete","style","parseNumericValue","value","context","fractions","numerator","denominator","parsedNumerator","parsedDenominator","number","match","Unit","getCompleteStyle","prop","styleVal","parseStyleVal","mergeStyle","getStyle","parsed","toStyleVal","unit","isNegative","device","warn","toPx","DIR_MAP","getDirection","string","parseAndConsumeDirection","utilityFragment","direction","_","dir","parseUnconfigged","unconfiggedStyleVal","unconfiggedStyle","consoleWarn","args","noopWarn","defaultStyles","complete","fontVariant","styles_default","type","style","Cache","customStyles","styles_default","key","style","ir","value","fontSize","value","config","context","configValue","unconfiggedStyle","getCompleteStyle","style","rest","fontSizeStyle","getStyle","complete","mergeStyle","calculateLineHeight","lineHeight","letterSpacing","parsed","parseNumericValue","number","unit","Unit","lineHeight","value","config","_a","parseValue","parsed","parseNumericValue","number","unit","Unit","style","styleVal","toStyleVal","complete","spacing","type","direction","isNegative","value","config","numericValue","configValue","unconfigged","parseUnconfigged","spacingStyle","Unit","expand","parsed","parseNumericValue","number","unit","pixels","toStyleVal","screens","input","screenData","acc","screen","value","data","values","minPx","toPx","warn","maxPx","a","b","minA","maxA","minB","maxB","order","fontFamily","value","config","configValue","complete","firstFamily","color","type","value","config","shorthandOpacity","findColorInConfigRecursive","opacity","addOpacity","complete","STYLE_PROPS","style","opacityProp","colorOpacity","percentage","hexToRgba","removeOpacityHelpers","key","hex","orig","MATCH_SHORT_HEX","_","r","g","b","result","MATCH_FULL_HEX","warn","colorName","configColor","isString","isObject","colorNameStart","colorNameRest","subConfig","border","value","theme","rest","direction","parseAndConsumeDirection","borderWidth","complete","colorType","colorStyle","color","prop","numericValue","arbitraryWidth","unconfiggedStyle","config","configValue","getCompleteStyle","borderRadius","expand","arbitrary","ir","top","bottom","left","right","inset","type","value","isNegative","config","insetDir","_","dir","configValue","styleVal","parseStyleVal","insetStyle","unconfigged","parseUnconfigged","complete","flexGrowShrink","type","value","config","_a","configKey","numericValue","complete","flex","_b","match","flexBasis","parseStyleVal","widthHeight","type","value","context","config","configValue","getCompleteStyle","unconfiggedStyle","minMaxWidthHeight","styleVal","parseStyleVal","complete","letterSpacing","value","isNegative","config","configValue","parsed","parseNumericValue","number","unit","Unit","relativeLetterSpacing","warn","styleVal","toStyleVal","complete","unconfiggedStyle","ems","style","fontSize","opacity","value","config","configValue","parsedConfig","parseNumericValue","complete","parsedArbitrary","shadowOpacity","value","percentage","shadowOffset","widthStr","heightStr","width","offsetValue","height","number","parsed","parseUnconfigged","ClassParser","input","config","cache","device","platform","_a","_b","_c","_d","_e","_f","parts","prefixes","widthBreakpoints","screens","prefix","breakpointOrder","windowWidth","min","max","isPlatform","isOrientation","cached","ir","theme","style","match","prop","spacingDirection","getDirection","spacing","widthHeight","minMaxWidthHeight","lineHeight","fontSize","color","colorOpacity","fontFamily","warn","getCompleteStyle","border","borderRadius","inset","flexGrowShrink","flex","shadowOpacity","shadowOffset","unconfiggedStyle","elevation","complete","opacity","letterSpacing","zIndex","windowDims","type","dir","amount","checkDimension","parsedAmount","parseNumericValue","bound","unit","begin","end","string","parseInputs","inputs","classNames","styles","input","split","key","value","unique","str","className","index","classes","getAddedUtilities","plugins","_a","utils","plugin","callPluginFunction","pluginFn","added","utilities","core","notImplemented","fn","create","customConfig","platform","config","resolveConfig","withContent","device","pluginUtils","getAddedUtilities","customStringUtils","customStyleUtils","util","style","complete","ir","deriveCacheGroup","cacheGroup","contextCaches","getCache","existing","cache","Cache","inputs","resolved","dependents","ordered","utilities","userStyle","parseInputs","joined","cached","utility","styleIr","customStyle","ClassParser","a","b","orderedStyle","dependent","error","warn","removeOpacityHelpers","color","utils","styleObj","tailwindFn","strings","values","str","string","i","_a","prefixes","prefixMatches","newDimensions","newFontScale","newPixelDensity","newColorScheme","withContent","config","defaultShadows","addUtilities","createTw","config","create","tw","getTw","width","height","fontCache","satori","element","options","Yoga","getYoga","font","fontCache","FontLoader","definedWidth","definedHeight","root","graphemeImages","processedWordsMissingFonts","cache","preProcessNode","handler","layout","tw","style","twStyles","getTw","segmentsMissingFont","languageCodes","convertToLanguageCodes","fonts","images","code","segments","_segment","key","asset","content","computedWidth","computedHeight","svg","wordsByCode","word","locale","detectLanguageCode","unique","segment","arr"]}