{"version":3,"file":"shiki-adapter.mjs","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';\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        isHighlighted: true,\n        highlightedCode: stripShikiCodeBlocks(\n          ctx.codeToHtml(code, {\n            lang: language,\n            theme: forceColorScheme || ((colorScheme === 'light' ? light : dark) as any),\n          })\n        ),\n      });\n    },\n  };\n};\n"],"names":[],"mappings":";;AAGA,SAAS,YAAA,CAAa,SAAiB,IAAc,EAAA;AACnD,EAAA,MAAM,SAAY,GAAA,IAAA,CAAK,OAAQ,CAAA,CAAA,CAAA,EAAI,OAAO,CAAE,CAAA,CAAA;AAC5C,EAAI,IAAA,UAAA,GAAa,YAAY,OAAQ,CAAA,MAAA;AAErC,EAAA,KAAA,IAAS,CAAI,GAAA,SAAA,EAAW,CAAI,GAAA,IAAA,CAAK,QAAQ,CAAK,EAAA,EAAA;AAC5C,IAAI,IAAA,IAAA,CAAK,CAAC,CAAA,KAAM,GAAK,EAAA;AACnB,MAAa,UAAA,GAAA,CAAA;AACb,MAAA;AAAA;AACF;AAGF,EAAM,MAAA,OAAA,GAAU,KAAK,KAAM,CAAA,CAAA,EAAG,SAAS,CAAI,GAAA,IAAA,CAAK,KAAM,CAAA,UAAA,GAAa,CAAC,CAAA;AACpE,EAAA,OAAO,OAAQ,CAAA,OAAA,CAAQ,CAAK,EAAA,EAAA,OAAO,KAAK,EAAE,CAAA;AAC5C;AAEO,SAAS,qBAAqB,IAAc,EAAA;AACjD,EAAA,OAAO,YAAa,CAAA,MAAA,EAAQ,YAAa,CAAA,KAAA,EAAO,IAAI,CAAC,CAAA;AACvD;AAMO,MAAM,qBAAqB,CAChC,SAAA,EACA,EAAE,gBAAiB,EAAA,GAA+B,EACzB,KAAA;AACzB,EAAO,OAAA;AAAA,IACL,WAAa,EAAA,SAAA;AAAA,IACb,cAAA,EAAgB,CAAC,GAAQ,KAAA;AACvB,MAAA,IAAI,CAAC,GAAK,EAAA;AACR,QAAO,OAAA,CAAC,EAAE,IAAK,EAAA,MAAO,EAAE,eAAiB,EAAA,IAAA,EAAM,eAAe,KAAM,EAAA,CAAA;AAAA;AAGtE,MAAA,OAAO,CAAC,EAAE,IAAM,EAAA,QAAA,EAAU,aAAmB,MAAA;AAAA,QAC3C,aAAe,EAAA,IAAA;AAAA,QACf,eAAiB,EAAA,oBAAA;AAAA,UACf,GAAA,CAAI,WAAW,IAAM,EAAA;AAAA,YACnB,IAAM,EAAA,QAAA;AAAA,YACN,KAAO,EAAA,gBAAA,KAAsB,WAAgB,KAAA,OAAA,GAAU,KAAQ,GAAA,IAAA;AAAA,WAChE;AAAA;AACH,OACF,CAAA;AAAA;AACF,GACF;AACF;;;;"}