{"version":3,"file":"shiki-adapter.cjs","names":["light","dark"],"sources":["../../../src/CodeHighlightProvider/adapters/shiki-adapter.ts"],"sourcesContent":["import type { CodeHighlightAdapter } from '../CodeHighlightProvider';\nimport { dark, light } from './shiki-themes';\n\nfunction stripElement(openTag: string, data: string) {\n  const openIndex = data.indexOf(`<${openTag}`);\n  let closeIndex = openIndex + openTag.length;\n\n  for (let i = openIndex; i < data.length; i++) {\n    if (data[i] === '>') {\n      closeIndex = i;\n      break;\n    }\n  }\n\n  const striped = data.slice(0, openIndex) + data.slice(closeIndex + 1);\n  return striped.replace(`</${openTag}>`, '');\n}\n\nexport function stripShikiCodeBlocks(data: string) {\n  return stripElement('code', stripElement('pre', data));\n}\n\ninterface CreateShikiAdapterOptions {\n  forceColorScheme?: 'dark' | 'light' | (string & {});\n}\n\nexport const createShikiAdapter = (\n  loadShiki: () => Promise<any>,\n  { forceColorScheme }: CreateShikiAdapterOptions = {}\n): CodeHighlightAdapter => {\n  return {\n    loadContext: loadShiki,\n    getHighlighter: (ctx) => {\n      if (!ctx) {\n        return ({ code }) => ({ highlightedCode: code, isHighlighted: false });\n      }\n\n      return ({ code, language, colorScheme }) => {\n        let _colorScheme: any = colorScheme;\n\n        if (colorScheme === 'light') {\n          _colorScheme = light;\n        } else if (colorScheme === 'dark') {\n          _colorScheme = dark;\n        }\n\n        return {\n          isHighlighted: true,\n          highlightedCode: stripShikiCodeBlocks(\n            ctx.codeToHtml(code, {\n              lang: language,\n              theme: forceColorScheme || _colorScheme,\n            })\n          ),\n        };\n      };\n    },\n  };\n};\n"],"mappings":";;AAGA,SAAS,aAAa,SAAiB,MAAc;CACnD,MAAM,YAAY,KAAK,QAAQ,IAAI,SAAS;CAC5C,IAAI,aAAa,YAAY,QAAQ;CAErC,KAAK,IAAI,IAAI,WAAW,IAAI,KAAK,QAAQ,KACvC,IAAI,KAAK,OAAO,KAAK;EACnB,aAAa;EACb;CACF;CAIF,QADgB,KAAK,MAAM,GAAG,SAAS,IAAI,KAAK,MAAM,aAAa,CAAC,GACrD,QAAQ,KAAK,QAAQ,IAAI,EAAE;AAC5C;AAEA,SAAgB,qBAAqB,MAAc;CACjD,OAAO,aAAa,QAAQ,aAAa,OAAO,IAAI,CAAC;AACvD;AAMA,MAAa,sBACX,WACA,EAAE,qBAAgD,CAAC,MAC1B;CACzB,OAAO;EACL,aAAa;EACb,iBAAiB,QAAQ;GACvB,IAAI,CAAC,KACH,QAAQ,EAAE,YAAY;IAAE,iBAAiB;IAAM,eAAe;GAAM;GAGtE,QAAQ,EAAE,MAAM,UAAU,kBAAkB;IAC1C,IAAI,eAAoB;IAExB,IAAI,gBAAgB,SAClB,eAAeA,qBAAAA;SACV,IAAI,gBAAgB,QACzB,eAAeC,qBAAAA;IAGjB,OAAO;KACL,eAAe;KACf,iBAAiB,qBACf,IAAI,WAAW,MAAM;MACnB,MAAM;MACN,OAAO,oBAAoB;KAC7B,CAAC,CACH;IACF;GACF;EACF;CACF;AACF"}