{"version":3,"sources":["jsdelivr-header.js","/npm/@stitches/css@9.0.0-alpha.8/src/index.ts"],"names":[],"mappings":"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","file":"/npm/@stitches/css@9.0.0-alpha.8/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/@stitches/css@9.0.0-alpha.8/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { tokenTypes } from \"./constants\";\nimport {\n  ATOM,\n  IAtom,\n  IBreakpoints,\n  IComposedAtom,\n  ICssPropToToken,\n  IKeyframesAtom,\n  ISheet,\n  IThemeAtom,\n  ITokensDefinition,\n  TConfig,\n  TCss,\n} from \"./types\";\nimport { unitlessKeys } from \"./unitless\";\nimport {\n  MAIN_BREAKPOINT_ID,\n  createSheets,\n  cssPropToToken,\n  getVendorPrefixAndProps,\n  hashString,\n  specificityProps,\n} from \"./utils\";\n\nexport * from \"./types\";\nexport * from \"./css-types\";\nexport * from \"./utils\";\n\nexport const hotReloadingCache = new Map<string, any>();\n\nconst createSelector = (className: string, selector: string) => {\n  const cssRuleClassName = className ? `.${className}` : \"\";\n  if (selector && selector.includes(\"&\"))\n    return selector.replace(/&/gi, cssRuleClassName);\n  if (selector) {\n    return `${cssRuleClassName}${selector}`;\n  }\n  return cssRuleClassName;\n};\n\n/**\n * Resolves a token to its css value in the context of the passed css prop:\n */\nconst resolveTokens = (cssProp: string, value: any, tokens: any) => {\n  const token: any = cssPropToToken[cssProp as keyof ICssPropToToken<any>];\n  let tokenValue: any;\n  if (token) {\n    if (Array.isArray(token) && Array.isArray(value)) {\n      tokenValue = token.map((tokenName, index) =>\n        token &&\n        (tokens as any)[tokenName] &&\n        (tokens as any)[tokenName][value[index]]\n          ? (tokens as any)[tokenName][value[index]]\n          : value[index]\n      );\n    } else {\n      tokenValue =\n        token && (tokens as any)[token] && (tokens as any)[token][value]\n          ? (tokens as any)[token][value]\n          : value;\n    }\n  } else {\n    tokenValue = value;\n  }\n  return tokenValue;\n};\n\n/**\n * iterates over a style object keys and values,\n * resolving them to their final form then calls the value callback with the prop, value\n * and the current value nesting path in the style object:\n * - handles utilities\n * - handles specificity props\n * - handles nesting\n * - TODO: also handle the things below once we handle envs differently (to avoid passing a lot of props around):\n * - handles tokens\n * - handles vendor prefixing\n */\nconst processStyleObject = (\n  obj: any,\n  config: TConfig<true>,\n  valueMiddleware: (\n    prop: string,\n    value: string,\n    currentNestingPath: string[]\n  ) => void,\n  currentNestingPath: string[] = [],\n  shouldHandleUtils = true,\n  shouldHandleSpecificityProps = true\n) => {\n  // key: css prop or override or a selector\n  // value is: cssValue, a util, specificity prop, or\n  for (const key of Object.keys(obj)) {\n    const val = obj[key];\n    const isUtilProp = shouldHandleUtils && key in config.utils;\n    const isSpecificityProp =\n      shouldHandleSpecificityProps && !isUtilProp && key in specificityProps;\n    /** Nested styles: */\n    if (typeof val === \"object\" && !isSpecificityProp && !isUtilProp) {\n      // Atom value:\n      if (val[ATOM]) {\n        valueMiddleware(key, val, currentNestingPath);\n        continue;\n      }\n      // handle the value object\n      processStyleObject(val, config, valueMiddleware, [\n        ...currentNestingPath,\n        key,\n      ]);\n      continue;\n    }\n\n    /** Utils: */\n    if (isUtilProp) {\n      // Resolve the util from the util function:\n      const resolvedUtils = config.utils[key](config)(val);\n      processStyleObject(\n        resolvedUtils,\n        config,\n        valueMiddleware,\n        [...currentNestingPath],\n        false\n      );\n      continue;\n    }\n\n    /** Specificity Props: */\n    // shorthand css props or css props that has baked in handling:\n    // see specificityProps in ./utils\n    if (isSpecificityProp) {\n      const resolvedSpecificityProps = specificityProps[key](\n        config.tokens,\n        val\n      );\n      processStyleObject(\n        resolvedSpecificityProps,\n        config,\n        valueMiddleware,\n        [...currentNestingPath],\n        false,\n        false\n      );\n      continue;\n    }\n    if (typeof val === \"number\") {\n      // handle unitless numbers:\n      valueMiddleware(\n        key,\n        // tslint:disable-next-line: prefer-template\n        `${unitlessKeys[key] ? val : val + \"px\"}`,\n        currentNestingPath\n      );\n    } else if (val !== undefined) {\n      valueMiddleware(\n        key,\n        resolveTokens(key, val, config.tokens),\n        currentNestingPath\n      );\n    }\n  }\n};\n\n/**\n * Resolves a css prop nesting path to a css selector and the breakpoint the css prop is meant to be injected to\n */\nconst resolveBreakpointAndSelectorAndInlineMedia = (\n  nestingPath: string[],\n  config: TConfig<true>\n) =>\n  nestingPath.reduce(\n    (acc, breakpointOrSelector, i) => {\n      // utilityFirst selector specific resolution:\n      const isOverride =\n        config.utilityFirst && breakpointOrSelector === \"override\";\n      if (isOverride) {\n        // any level above 0\n        if (i) {\n          throw new Error(\n            `@stitches/css - You can not override at this level [${nestingPath\n              .slice(0, i - 1)\n              .join(\n                \", \"\n              )}, -> ${breakpointOrSelector}], only at the top level definition`\n          );\n        }\n        return acc;\n      }\n      // breakpoints handling:\n      if (\n        breakpointOrSelector in config.breakpoints ||\n        breakpointOrSelector === MAIN_BREAKPOINT_ID\n      ) {\n        if (acc.breakpoint !== MAIN_BREAKPOINT_ID) {\n          throw new Error(\n            `@stitches/css - You are nesting the breakpoint \"${breakpointOrSelector}\" into \"${acc.breakpoint}\", that makes no sense? :-)`\n          );\n        }\n        acc.breakpoint = breakpointOrSelector;\n        return acc;\n      }\n\n      if (breakpointOrSelector[0] === \"@\") {\n        acc.inlineMediaQueries.push(breakpointOrSelector);\n        return acc;\n      }\n      // Normal css nesting selector:\n      acc.nestingPath =\n        acc.nestingPath +\n        // If you manually prefix with '&' we remove it for identity consistency\n        // only for pseudo selectors and nothing else\n        (breakpointOrSelector[0] === \"&\" && breakpointOrSelector[1] === \":\"\n          ? breakpointOrSelector.substr(1)\n          : // pseudo elements/class\n          // don't prepend with a whitespace\n          breakpointOrSelector[0] === \":\"\n          ? breakpointOrSelector\n          : // else just nest with a space\n            // tslint:disable-next-line: prefer-template\n            \" \" + breakpointOrSelector);\n      return acc;\n    },\n    {\n      breakpoint: MAIN_BREAKPOINT_ID,\n      nestingPath: \"\",\n      inlineMediaQueries: [] as string[],\n    }\n  );\n\n/**\n * converts an object style css prop to its normal css style object prop and handles prefixing:\n * borderColor => border-color\n */\nconst hyphenAndVendorPrefixCssProp = (\n  cssProp: string,\n  vendorProps: any[],\n  vendorPrefix: string\n) => {\n  const isVendorPrefixed = cssProp[0] === cssProp[0].toUpperCase();\n  let cssHyphenProp = cssProp\n    .split(/(?=[A-Z])/)\n    .map((g) => g.toLowerCase())\n    .join(\"-\");\n\n  if (isVendorPrefixed) {\n    cssHyphenProp = `-${cssHyphenProp}`;\n  } else if (vendorProps.includes(`${vendorPrefix}${cssHyphenProp}`)) {\n    cssHyphenProp = `${vendorPrefix}${cssHyphenProp}`;\n  }\n  return cssHyphenProp;\n};\n\nconst toStringCachedAtom = function (this: IAtom) {\n  return this._className!;\n};\n\nconst toStringCompose = function (this: IComposedAtom) {\n  const className = this.atoms.map((atom) => atom.toString()).join(\" \");\n  // cache the className on this instance\n  // @ts-ignore\n  this._className = className;\n  // @ts-ignore\n  this.toString = toStringCachedAtom;\n  return className;\n};\n\nconst createCssRule = (\n  breakpoints: IBreakpoints,\n  atom: IAtom,\n  className: string\n) => {\n  let cssRule = \"\";\n  if (atom.inlineMediaQueries && atom.inlineMediaQueries.length) {\n    let allMediaQueries = \"\";\n    let endBrackets = \"\";\n    atom.inlineMediaQueries.forEach((breakpoint) => {\n      allMediaQueries += `${breakpoint}{`;\n      endBrackets += \"}\";\n    });\n\n    cssRule = `${allMediaQueries}${createSelector(className, atom.selector)}{${\n      atom.cssHyphenProp\n    }:${atom.value};}${endBrackets}`;\n  } else {\n    cssRule = `${createSelector(className, atom.selector)}{${\n      atom.cssHyphenProp\n    }:${atom.value};}`;\n  }\n\n  return atom.breakpoint !== MAIN_BREAKPOINT_ID\n    ? breakpoints[atom.breakpoint](cssRule)\n    : cssRule;\n};\n\nconst createToString = (\n  sheets: { [breakpoint: string]: ISheet },\n  breakpoints: IBreakpoints = {},\n  cssClassnameProvider: (atom: IAtom) => string, // [className, pseudo]\n  preInjectedRules: Set<string>\n) => {\n  return function toString(this: IAtom) {\n    const className = cssClassnameProvider(this);\n    const shouldInject =\n      !preInjectedRules.size || !preInjectedRules.has(`.${className}`);\n\n    if (shouldInject) {\n      sheets[this.breakpoint].insertRule(\n        createCssRule(breakpoints, this, className)\n      );\n    }\n\n    // We are switching this atom from IAtom simpler representation\n    // 1. delete everything but `id` for specificity check\n\n    // @ts-ignore\n    this.cssHyphenProp = this.value = this.pseudo = this.breakpoint = this.inlineMediaQueries = undefined;\n\n    // 2. put on a _className\n    this._className = className;\n\n    // 3. switch from this `toString` to a much simpler one\n    this.toString = toStringCachedAtom;\n\n    return className;\n  };\n};\n\nconst createServerToString = (\n  sheets: { [mediaQuery: string]: ISheet },\n  breakpoints: IBreakpoints = {},\n  cssClassnameProvider: (atom: IAtom) => string\n) => {\n  return function toString(this: IAtom) {\n    const className = cssClassnameProvider(this);\n\n    sheets[this.breakpoint].insertRule(\n      createCssRule(\n        breakpoints,\n        this,\n        className ? `/*X*/${className}/*X*/` : \"\"\n      )\n    );\n\n    // We do not clean out the atom here, cause it will be reused\n    // to inject multiple times for each request\n\n    // 1. put on a _className\n    this._className = className;\n\n    // 2. switch from this `toString` to a much simpler one\n    this.toString = toStringCachedAtom;\n\n    return className;\n  };\n};\n\nconst createThemeToString = (classPrefix: string, variablesSheet: ISheet) =>\n  function toString(this: IThemeAtom) {\n    const themeClassName = `${classPrefix ? `${classPrefix}-` : \"\"}theme-${\n      this.name\n    }`;\n\n    // @ts-ignore\n    variablesSheet.insertRule(\n      `.${themeClassName}{${Object.keys(this.definition).reduce(\n        (subAggr, tokenKey) => {\n          // format token to remove special characters\n          // https://stackoverflow.com/a/4374890\n          const formattedTokenKey = tokenKey.replace(/[^\\w\\s-]/gi, \"\");\n          // @ts-ignore\n          return `${subAggr}--colors-${formattedTokenKey}:${this.definition[tokenKey]};`;\n        },\n        \"\"\n      )}`\n    );\n\n    this.toString = () => themeClassName;\n\n    return themeClassName;\n  };\n\nconst createKeyframesToString = (sheet: ISheet) =>\n  function toString(this: IKeyframesAtom) {\n    if (this._cssRuleString) {\n      sheet.insertRule(this._cssRuleString);\n    }\n\n    this.toString = () => this.id;\n\n    return this.id;\n  };\n\nconst composeIntoMap = (\n  map: Map<string, IAtom>,\n  atoms: (IAtom | IComposedAtom)[]\n) => {\n  let i = atoms.length - 1;\n  for (; i >= 0; i--) {\n    const item = atoms[i];\n    // atoms can be undefined, null, false or '' using ternary like\n    // expressions with the properties\n    if (item && item[ATOM] && \"atoms\" in item) {\n      composeIntoMap(map, item.atoms);\n    } else if (item && item[ATOM]) {\n      if (!map.has((item as IAtom).id)) {\n        map.set((item as IAtom).id, item as IAtom);\n      }\n    } else if (item) {\n      map.set((item as unknown) as string, item as IAtom);\n    }\n  }\n};\n\nexport const createTokens = <T extends ITokensDefinition>(tokens: T) => {\n  return tokens;\n};\nexport const createCss = <T extends TConfig>(\n  _config: T,\n  env: Window | null = typeof window === \"undefined\" ? null : window\n): TCss<T> => {\n  // pre-checked config to avoid checking these all the time\n  // tslint:disable-next-line\n  const config: TConfig<true> = Object.assign(\n    { tokens: {}, utils: {}, breakpoints: {} },\n    _config\n  );\n  // prefill with empty token groups\n  tokenTypes.forEach(\n    (tokenType) => (config.tokens[tokenType] = config.tokens[tokenType] || {})\n  );\n  const { tokens, breakpoints } = config;\n\n  const showFriendlyClassnames =\n    typeof config.showFriendlyClassnames === \"boolean\"\n      ? config.showFriendlyClassnames\n      : process.env.NODE_ENV === \"development\";\n  const prefix = config.prefix || \"\";\n  const { vendorPrefix, vendorProps } = env\n    ? getVendorPrefixAndProps(env)\n    : { vendorPrefix: \"-node-\", vendorProps: [] };\n\n  if (env && hotReloadingCache.has(prefix)) {\n    const instance = hotReloadingCache.get(prefix);\n    instance.dispose();\n  }\n\n  // pre-compute class prefix\n  const classPrefix = prefix\n    ? showFriendlyClassnames\n      ? `${prefix}_`\n      : prefix\n    : \"\";\n  const cssClassnameProvider = (atom: IAtom): string => {\n    if (atom._isGlobal) {\n      return \"\";\n    }\n    const hash = hashString(\n      `${atom.breakpoint || \"\"}${atom.cssHyphenProp.replace(\n        /-(moz|webkit|ms)-/,\n        \"\"\n      )}${atom.selector || \"\"}${atom.inlineMediaQueries?.join(\"\") || \"\"}${\n        atom.value\n      }`\n    );\n    const name = showFriendlyClassnames\n      ? `${atom.breakpoint ? `${atom.breakpoint}_` : \"\"}${atom.cssHyphenProp\n          .replace(/-(moz|webkit|ms)-/, \"\")\n          .split(\"-\")\n          .map((part) => part[0])\n          .join(\"\")}_${hash}`\n      : `_${hash}`;\n\n    return `${classPrefix}${name}`;\n  };\n\n  const { tags, sheets } = createSheets(env, config.breakpoints);\n  const preInjectedRules = new Set<string>();\n  // tslint:disable-next-line\n  for (const tag of tags) {\n    ((tag.textContent || \"\").match(/\\/\\*\\X\\*\\/.*?\\/\\*\\X\\*\\//g) || []).forEach(\n      (rule) => {\n        // tslint:disable-next-line\n        preInjectedRules.add(\".\" + rule.replace(/\\/\\*X\\*\\//g, \"\"));\n      }\n    );\n  }\n\n  let toString = env\n    ? createToString(\n        sheets,\n        config.breakpoints,\n        cssClassnameProvider,\n        preInjectedRules\n      )\n    : createServerToString(sheets, config.breakpoints, cssClassnameProvider);\n\n  let themeToString = createThemeToString(classPrefix, sheets.__variables__);\n  let keyframesToString = createKeyframesToString(sheets[MAIN_BREAKPOINT_ID]);\n  const compose = (...atoms: IAtom[]): IComposedAtom => {\n    const map = new Map<string, IAtom>();\n    composeIntoMap(map, atoms);\n    return {\n      atoms: Array.from(map.values()),\n      toString: toStringCompose,\n      [ATOM]: true,\n    };\n  };\n  const createAtom = (\n    cssProp: string,\n    value: any,\n    breakpoint = MAIN_BREAKPOINT_ID,\n    selectorString: string,\n    inlineMediaQueries: string[],\n    isGlobal?: boolean\n  ) => {\n    // generate id used for specificity check\n    // two atoms are considered equal in regard to there specificity if the id is equal\n    const inlineMediasAsString = inlineMediaQueries\n      ? inlineMediaQueries.join(\"\")\n      : \"\";\n    const id =\n      cssProp.toLowerCase() +\n      selectorString +\n      (inlineMediaQueries ? inlineMediaQueries.join(\"\") : \"\") +\n      breakpoint;\n\n    // make a uid accouting for different values\n    const uid = id + value;\n\n    // If this was created before return the cached atom\n    if (atomCache.has(uid)) {\n      // check if this has a breakpoint based media query\n      if (\n        inlineMediasAsString.match(/@media.*\\((min|max)?.*(width|height).*\\)/)\n      ) {\n        // tslint:disable-next-line\n        console.warn(\n          `The property \"${cssProp}\" with media query ${inlineMediasAsString} can cause a specificity issue. You should create a breakpoint`\n        );\n      }\n      return atomCache.get(uid)!;\n    }\n\n    // prepare the cssProp\n    const cssHyphenProp = hyphenAndVendorPrefixCssProp(\n      cssProp,\n      vendorProps,\n      vendorPrefix\n    );\n\n    // We want certain pseudo selectors to take presedence over other pseudo\n    // selectors, so we increase specificity\n    if (!selectorString?.match(\"&\")) {\n      if (selectorString?.match(/\\:hover/)) {\n        selectorString = `&&${selectorString}`;\n      } else if (selectorString?.match(/\\:active/)) {\n        selectorString = `&&&${selectorString}`;\n      } else if (selectorString?.match(/\\:focus|\\:focus-visible/)) {\n        selectorString = `&&&&${selectorString}`;\n      } else if (selectorString?.match(/\\:read-only/)) {\n        selectorString = `&&&&&${selectorString}`;\n      } else if (selectorString?.match(/\\:disabled/)) {\n        selectorString = `&&&&&&${selectorString}`;\n      }\n    }\n\n    // Create a new atom\n    const atom: IAtom = {\n      id,\n      cssHyphenProp,\n      value,\n      selector: selectorString,\n      inlineMediaQueries,\n      breakpoint,\n      toString,\n      [ATOM]: true,\n      _isGlobal: isGlobal,\n    };\n\n    // Cache it\n    atomCache.set(uid, atom);\n\n    return atom;\n  };\n\n  let baseTokens = \":root{\";\n  // tslint:disable-next-line\n  for (const tokenType in tokens) {\n    const isNumericScale = tokenType.match(\n      /^(sizes|space|letterSpacings|zIndices)$/\n    );\n    // @ts-ignore\n    // tslint:disable-next-line\n    const scaleTokenKeys = Object.keys(tokens[tokenType]);\n    for (let index = 0; index < scaleTokenKeys.length; index++) {\n      const token = scaleTokenKeys[index];\n      // format token to remove special characters\n      // https://stackoverflow.com/a/4374890\n      const formattedToken = token.replace(/[^\\w\\s-]/gi, \"\");\n      const cssVar = `--${tokenType}-${formattedToken}`;\n\n      // @ts-ignore\n      baseTokens += `${cssVar}:${tokens[tokenType][token]};`;\n\n      // @ts-ignore\n      tokens[tokenType][token] = `var(${cssVar})`;\n\n      // Add negative tokens\n      // tslint:disable-next-line: prefer-template\n      const negativeTokenKey = \"-\" + token;\n      // check that it's a numericScale and that the user didn't already set a negative token witht this name\n      const isAlreadyANegativeToken =\n        // @ts-ignore\n        token[0] === \"-\" ? !!tokens[tokenType][token.substring(1)] : false;\n      if (\n        isNumericScale &&\n        // @ts-ignore\n        !tokens[tokenType][negativeTokenKey] &&\n        !isAlreadyANegativeToken\n      ) {\n        // @ts-ignore\n        tokens[tokenType][negativeTokenKey] = `calc(var(${cssVar}) * -1)`;\n      }\n    }\n  }\n  baseTokens += \"}\";\n\n  if (!preInjectedRules.has(\":root\")) {\n    sheets.__variables__.insertRule(baseTokens);\n  }\n  // Keeping track of all atoms for SSR\n  const compositionsCache = new Set<IComposedAtom>();\n  const atomCache = new Map<string, IAtom>();\n  const keyFramesCache = new Map<string, IKeyframesAtom>();\n  const themeCache = new Map<ITokensDefinition, IThemeAtom>();\n  const cssInstance = ((...definitions: any[]) => {\n    const args: any[] = [];\n    let index = 0;\n\n    for (let x = 0; x < definitions.length; x++) {\n      if (!definitions[x]) {\n        continue;\n      }\n      if (typeof definitions[x] === \"string\" || definitions[x][ATOM]) {\n        args[index++] = definitions[x];\n      } else {\n        processStyleObject(definitions[x], config, (prop, value, path) => {\n          const {\n            nestingPath,\n            breakpoint,\n            inlineMediaQueries,\n          } = resolveBreakpointAndSelectorAndInlineMedia(path, config);\n          args[index++] = createAtom(\n            prop,\n            value,\n            breakpoint,\n            nestingPath,\n            inlineMediaQueries\n          );\n        });\n      }\n    }\n    // might cause memory leaks when doing css() inside a component\n    // but we need this for now to fix SSR\n    const composition = compose(...args);\n    compositionsCache.add(composition);\n\n    return composition;\n  }) as any;\n\n  cssInstance.dispose = () => {\n    atomCache.clear();\n    tags.forEach((tag) => {\n      tag.parentNode?.removeChild(tag);\n    });\n  };\n  cssInstance._config = () => config;\n  cssInstance.theme = (definition: any): IThemeAtom => {\n    if (themeCache.has(definition)) {\n      return themeCache.get(definition)!;\n    }\n    const themeAtom = {\n      // We could here also check if theme has been added from server,\n      // though thinking it does not matter... just a simple rule\n      name: String(themeCache.size),\n      // wrapping the colors in an object so that the structure matches\n      // the tokens property in the config\n      definition,\n      toString: themeToString,\n      [ATOM]: true as true,\n    };\n\n    themeCache.set(definition, themeAtom);\n\n    return themeAtom;\n  };\n\n  cssInstance.global = (definitions: any) => {\n    processStyleObject(definitions, config, (prop, value, path) => {\n      const {\n        nestingPath,\n        breakpoint,\n        inlineMediaQueries,\n      } = resolveBreakpointAndSelectorAndInlineMedia(path, config);\n      if (!nestingPath.length) {\n        throw new Error(\"Global styles need to be nested\");\n      }\n      // Create a global atom and call toString() on it directly to inject it\n      // as global atoms don't generate class names of their own\n      createAtom(\n        prop,\n        value,\n        breakpoint,\n        nestingPath,\n        inlineMediaQueries,\n        true\n      ).toString();\n    });\n  };\n  cssInstance.keyframes = (definition: any): IKeyframesAtom => {\n    let cssRule = \"\";\n    let currentTimeProp = \"\";\n    processStyleObject(definition, config, (key, value, [timeProp]) => {\n      if (timeProp !== currentTimeProp) {\n        if (cssRule) {\n          cssRule += `}`;\n        }\n        currentTimeProp = timeProp;\n        cssRule += `${timeProp} {`;\n      }\n      cssRule += `${hyphenAndVendorPrefixCssProp(\n        key,\n        vendorProps,\n        vendorPrefix\n      )}: ${resolveTokens(key, value, tokens)};`;\n    });\n\n    const hash = hashString(cssRule);\n    // Check if an atom exist with the same hash and return it if so\n    const cachedAtom = keyFramesCache.get(hash);\n    if (cachedAtom) {\n      return cachedAtom;\n    }\n    // wrap it with the generated keyframes name\n    cssRule = `@keyframes ${hash} {${cssRule}}`;\n    const keyframesAtom = {\n      id: String(hash),\n      _cssRuleString: cssRule,\n      toString: keyframesToString,\n      [ATOM]: true as true,\n    };\n    keyFramesCache.set(hash, keyframesAtom);\n    return keyframesAtom;\n  };\n\n  cssInstance.getStyles = (cb: any) => {\n    // Reset the composition to avoid ssr issues\n    compositionsCache.forEach((composition) => {\n      composition.toString = toStringCompose;\n    });\n    // tslint:disable-next-line\n    for (let sheet in sheets) {\n      sheets[sheet].cssRules.length = 0;\n    }\n    if (baseTokens) {\n      sheets.__variables__.insertRule(baseTokens);\n    }\n\n    // We have to reset our toStrings so that they will now inject again,\n    // and still cache is it is being reused\n    toString = createServerToString(\n      sheets,\n      config.breakpoints,\n      cssClassnameProvider\n    );\n    keyframesToString = createKeyframesToString(sheets[MAIN_BREAKPOINT_ID]);\n    themeToString = createThemeToString(classPrefix, sheets.__variables__);\n\n    atomCache.forEach((atom) => {\n      atom.toString = toString;\n    });\n\n    keyFramesCache.forEach((atom) => {\n      atom.toString = keyframesToString;\n    });\n\n    themeCache.forEach((atom) => {\n      atom.toString = themeToString;\n    });\n\n    const result = cb();\n\n    return {\n      result,\n      styles: Object.keys(breakpoints).reduce(\n        (aggr, key) => {\n          return aggr.concat(\n            `/* STITCHES:${key} */\\n${sheets[key].cssRules.join(\"\\n\")}`\n          );\n        },\n        [\n          `/* STITCHES:__variables__ */\\n${sheets.__variables__.cssRules.join(\n            \"\\n\"\n          )}`,\n          `/* STITCHES */\\n${sheets[MAIN_BREAKPOINT_ID].cssRules.join(\"\\n\")}`,\n        ]\n      ),\n    };\n  };\n\n  if (env) {\n    hotReloadingCache.set(prefix, cssInstance);\n  }\n\n  return cssInstance;\n};\n"]}