{"version":3,"sources":["../src/yoga/yoga-prebuilt.wasm.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/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":["// For WASM build, we don't include the prebuilt version of Yoga but let the\n// user specify the module manually with e.g.:\n// https://github.com/shuding/yoga-wasm-web.\nexport async function getYogaModule() {\n return {}\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\n * type TransformerFn = (content: string) => string\n *\n * type Content =\n * | Array\n * | {\n * files: Array,\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\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\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 it’s 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// It’s 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// It’s 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 they’re redundant. Note that this is only possible if the escape\n\t// sequence isn’t 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// It’s not safe to remove the space, so don’t.\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} 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} 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} 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(\"\")) {\n let oldValue = value;\n return ({ opacityValue =1 })=>oldValue.replace(\"\", 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}\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","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 {\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,\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,\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,\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}`\n }\n return `<${type}${attrString}/>`\n}\n\nexport function createLRU(max = 20) {\n const store: Map = 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(100)\nconst inflightRequests = new Map>()\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(/]*>/)[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 {\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:(?[a-z/+]+)(;(charset=)?(?.*))?,(?.*)/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 => {\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 ' nodes are not currently supported, please convert them to '\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 )}`\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()\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 {\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,${` {\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 )}`.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,\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, keyof MainStyle>\n\nexport type SerializedStyle = Partial\n\nexport default function expand(\n style: Record | 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\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, 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\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,\n props: Record\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\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\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}` : '') +\n buildXMLString('image', {\n ...shapeProps,\n opacity: opacity !== 1 ? opacity : undefined,\n }) +\n (decorationShape || '') +\n (filter ? '' : '') +\n extra,\n // SVG doesn't support `` as the shape.\n '',\n ]\n }\n\n // Do not embed the font, use 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}` : '') +\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 ? '' : '') +\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\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\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()\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 = {}\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 '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 {\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,\n from?: 'background' | 'mask'\n): Promise {\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\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\n) {\n const [xDelta, yDelta] = length\n const { x: cx, y: cy } = centerAxis\n const spread: Record = {}\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,\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\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\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,\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,\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 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\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,\n inheritedStyle: Record\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,\n inheritedStyle: Record\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,\n inheritableStyle: Record\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,\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,\n inheritedStyle: Record\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,\n inheritableStyle: Record\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\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,\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 with\n // multiple 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 () 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 ? `` : '') +\n (backgroundShapes || shape) +\n (opacity !== 1 ? `` : '') +\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¬o.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 | ['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\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\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\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[] = []\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 node, we need to convert it to a 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
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()\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()\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\"] = \"\";\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\n loadAdditionalAsset?: (\n languageCode: string,\n segment: string\n ) => Promise>\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 {\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 = {}\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> {\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(arr: T[]): T[] {\n return Array.from(new Set(arr))\n}\n"],"mappings":"gqBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,mBAAAE,KAGA,eAAsBA,IAAgB,CACpC,MAAO,CAAC,CACV,CALA,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,U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ACL,CACA,IAAMP,GAAW,CACb,QAAS,UACT,QAAS,eACT,YAAa,cACb,MAAO,OACP,MAAO,OACP,MAAO,CACH,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACT,EACA,KAAM,CACF,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACT,EACA,KAAM,CACF,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACT,EACA,QAAS,CACL,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACT,EACA,MAAO,CACH,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACT,EACA,IAAK,CACD,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACT,EACA,OAAQ,CACJ,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACT,EACA,MAAO,CACH,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACT,EACA,OAAQ,CACJ,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SACT,EACA,KAAM,CACF,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,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","names":["yoga_prebuilt_wasm_exports","__export","getYogaModule","init_yoga_prebuilt_wasm","__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","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","LineBreaker","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","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","getPropertyName","getStylesForProperty","parseElementStyle","parseBoxShadow","cssColorParse","valueParser","parseUnit","word","baseFontSize","parsed","U","handleWord","unitIsHorizontal","parsedUnit","parseTransformOrigin","value","words","valueParser","node","getPropertyName","getMaskProperty","style","name","key","getPropertyName","parseMask","maskImage","common","splitEffects","v","m","optOutPx","keepNumber","handleFallbackColor","prop","parsed","rawInput","currentColor","purify","name","value","num","handleSpecialCase","_v","horizontal","vertical","vh","getStylesForProperty","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","getPropertyName","preprocess","resolvedStyle","err","backgrounds","parseElementStyle","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","escapeHTML","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","cssColorParse","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","getStylesForProperty","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","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"]}