{"version":3,"file":"getHighlighterThemeStyles.js","names":[],"sources":["../../src/utils/getHighlighterThemeStyles.ts"],"sourcesContent":["import { DEFAULT_THEMES } from '../constants';\nimport type {\n  DiffsHighlighter,\n  DiffsThemeNames,\n  ThemeRegistrationResolved,\n  ThemesType,\n} from '../types';\nimport { formatCSSVariablePrefix } from './formatCSSVariablePrefix';\n\ninterface GetHighlighterThemeStylesProps {\n  theme?: DiffsThemeNames | ThemesType;\n  highlighter: DiffsHighlighter;\n  prefix?: string;\n}\n\n// FIXME(amadeus): We'll probably need to\n// re-think this when it comes to removing inline\n// styles\nexport function getHighlighterThemeStyles({\n  theme = DEFAULT_THEMES,\n  highlighter,\n  prefix,\n}: GetHighlighterThemeStylesProps): string {\n  let styles = '';\n  if (typeof theme === 'string') {\n    const themeData = highlighter.getTheme(theme);\n    styles += `color:${themeData.fg};`;\n    styles += `background-color:${themeData.bg};`;\n    styles += `${formatCSSVariablePrefix('global')}fg:${themeData.fg};`;\n    styles += `${formatCSSVariablePrefix('global')}bg:${themeData.bg};`;\n    styles += getThemeVariables(themeData, prefix);\n  } else {\n    let themeData = highlighter.getTheme(theme.dark);\n    styles += `${formatCSSVariablePrefix('global')}dark:${themeData.fg};`;\n    styles += `${formatCSSVariablePrefix('global')}dark-bg:${themeData.bg};`;\n    styles += getThemeVariables(themeData, 'dark');\n\n    themeData = highlighter.getTheme(theme.light);\n    styles += `${formatCSSVariablePrefix('global')}light:${themeData.fg};`;\n    styles += `${formatCSSVariablePrefix('global')}light-bg:${themeData.bg};`;\n    styles += getThemeVariables(themeData, 'light');\n  }\n  return styles;\n}\n\nfunction getThemeVariables(\n  themeData: ThemeRegistrationResolved,\n  modePrefix?: string\n) {\n  modePrefix = modePrefix != null ? `${modePrefix}-` : '';\n  let styles = '';\n  const additionGreen =\n    themeData.colors?.['gitDecoration.addedResourceForeground'] ??\n    themeData.colors?.['terminal.ansiGreen'];\n  if (additionGreen != null) {\n    styles += `${formatCSSVariablePrefix('global')}${modePrefix}addition-color:${additionGreen};`;\n  }\n  const deletionRed =\n    themeData.colors?.['gitDecoration.deletedResourceForeground'] ??\n    themeData.colors?.['terminal.ansiRed'];\n  if (deletionRed != null) {\n    styles += `${formatCSSVariablePrefix('global')}${modePrefix}deletion-color:${deletionRed};`;\n  }\n  const modifiedBlue =\n    themeData.colors?.['gitDecoration.modifiedResourceForeground'] ??\n    themeData.colors?.['terminal.ansiBlue'];\n  if (modifiedBlue != null) {\n    styles += `${formatCSSVariablePrefix('global')}${modePrefix}modified-color:${modifiedBlue};`;\n  }\n  return styles;\n}\n"],"mappings":";;;;AAkBA,SAAgB,0BAA0B,EACxC,QAAQ,gBACR,aACA,UACyC;CACzC,IAAI,SAAS;AACb,KAAI,OAAO,UAAU,UAAU;EAC7B,MAAM,YAAY,YAAY,SAAS,MAAM;AAC7C,YAAU,SAAS,UAAU,GAAG;AAChC,YAAU,oBAAoB,UAAU,GAAG;AAC3C,YAAU,GAAG,wBAAwB,SAAS,CAAC,KAAK,UAAU,GAAG;AACjE,YAAU,GAAG,wBAAwB,SAAS,CAAC,KAAK,UAAU,GAAG;AACjE,YAAU,kBAAkB,WAAW,OAAO;QACzC;EACL,IAAI,YAAY,YAAY,SAAS,MAAM,KAAK;AAChD,YAAU,GAAG,wBAAwB,SAAS,CAAC,OAAO,UAAU,GAAG;AACnE,YAAU,GAAG,wBAAwB,SAAS,CAAC,UAAU,UAAU,GAAG;AACtE,YAAU,kBAAkB,WAAW,OAAO;AAE9C,cAAY,YAAY,SAAS,MAAM,MAAM;AAC7C,YAAU,GAAG,wBAAwB,SAAS,CAAC,QAAQ,UAAU,GAAG;AACpE,YAAU,GAAG,wBAAwB,SAAS,CAAC,WAAW,UAAU,GAAG;AACvE,YAAU,kBAAkB,WAAW,QAAQ;;AAEjD,QAAO;;AAGT,SAAS,kBACP,WACA,YACA;AACA,cAAa,cAAc,OAAO,GAAG,WAAW,KAAK;CACrD,IAAI,SAAS;CACb,MAAM,gBACJ,UAAU,SAAS,4CACnB,UAAU,SAAS;AACrB,KAAI,iBAAiB,KACnB,WAAU,GAAG,wBAAwB,SAAS,GAAG,WAAW,iBAAiB,cAAc;CAE7F,MAAM,cACJ,UAAU,SAAS,8CACnB,UAAU,SAAS;AACrB,KAAI,eAAe,KACjB,WAAU,GAAG,wBAAwB,SAAS,GAAG,WAAW,iBAAiB,YAAY;CAE3F,MAAM,eACJ,UAAU,SAAS,+CACnB,UAAU,SAAS;AACrB,KAAI,gBAAgB,KAClB,WAAU,GAAG,wBAAwB,SAAS,GAAG,WAAW,iBAAiB,aAAa;AAE5F,QAAO"}