{"version":3,"file":"shiki-adapter.cjs","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":["stripElement","openTag","data","openIndex","indexOf","closeIndex","length","i","striped","slice","replace","stripShikiCodeBlocks","createShikiAdapter","loadShiki","forceColorScheme","arguments","undefined","loadContext","getHighlighter","ctx","_ref","code","highlightedCode","isHighlighted","_ref2","language","colorScheme","codeToHtml","lang","theme","light","dark"],"mappings":";;;;AAGA,SAASA,YAAAA,CAAaC,SAAiBC,IAAA,EAAc;EACnD,MAAMC,SAAA,GAAYD,IAAA,CAAKE,OAAA,CAAQ,CAAA,CAAA,EAAIH,OAAO,CAAA,CAAE,CAAA;AAC5C,EAAA,IAAII,UAAA,GAAaF,YAAYF,OAAA,CAAQK,MAAA;AAErC,EAAA,KAAA,IAASC,CAAA,GAAIJ,SAAA,EAAWI,CAAA,GAAIL,IAAA,CAAKI,QAAQC,CAAA,EAAA,EAAK;AAC5C,IAAA,IAAIL,IAAA,CAAKK,CAAC,CAAA,KAAM,GAAA,EAAK;AACnBF,MAAAA,UAAA,GAAaE,CAAA;AACb,MAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,MAAMC,OAAA,GAAUN,KAAKO,KAAA,CAAM,CAAA,EAAGN,SAAS,CAAA,GAAID,IAAA,CAAKO,KAAA,CAAMJ,UAAA,GAAa,CAAC,CAAA;EACpE,OAAOG,OAAA,CAAQE,OAAA,CAAQ,KAAKT,OAAO,CAAA,CAAA,GAAK,EAAE,CAAA;AAC5C;AAEO,SAASU,qBAAqBT,IAAA,EAAc;EACjD,OAAOF,YAAA,CAAa,MAAA,EAAQA,YAAA,CAAa,KAAA,EAAOE,IAAI,CAAC,CAAA;AACvD;MAMaU,qBAAqB,UAChCC,SAAA,EAEyB;EAAA,IADzB;AAAEC,IAAAA;AAAiB,GAAA,GAAAC,SAAA,CAAAT,MAAA,GAAA,CAAA,IAAAS,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAA+B,EAAC;EAEnD,OAAO;AACLE,IAAAA,WAAA,EAAaJ,SAAA;IACbK,cAAA,EAAiBC,GAAA,IAAQ;MACvB,IAAI,CAACA,GAAA,EAAK;AACR,QAAA,OAAOC,IAAA,IAAA;UAAA,IAAC;AAAEC,YAAAA;AAAK,WAAA,GAAAD,IAAA;UAAA,OAAO;AAAEE,YAAAA,eAAA,EAAiBD,IAAA;AAAME,YAAAA,eAAe;WAAM;QAAA,CAAA;AACtE,MAAA;AAEA,MAAA,OAAOC,KAAA,IAAA;QAAA,IAAC;UAAEH,IAAA;UAAMI,QAAA;AAAUC,UAAAA;AAAY,SAAA,GAAAF,KAAA;QAAA,OAAO;AAC3CD,UAAAA,aAAA,EAAe,IAAA;UACfD,eAAA,EAAiBX,oBAAA,CACfQ,GAAA,CAAIQ,WAAWN,IAAA,EAAM;AACnBO,YAAAA,IAAA,EAAMH,QAAA;YACNI,KAAA,EAAOf,gBAAA,KAAsBY,WAAA,KAAgB,OAAA,GAAUI,iBAAA,GAAQC,gBAAA;AACjE,WAAC,CACH;SACF;MAAA,CAAA;AACF,IAAA;GACF;AACF;;;;;"}