{"version":3,"file":"ng-doc-app-services-highlighter.mjs","sources":["../../../../libs/app/services/highlighter/highlighter.service.ts","../../../../libs/app/services/highlighter/ng-doc-app-services-highlighter.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { NG_DOC_SHIKI_THEME } from '@ng-doc/app/tokens';\nimport { HighlighterGeneric } from '@shikijs/core/types';\nimport { ThemeInput } from 'shiki';\nimport { createHighlighterCore } from 'shiki/core';\nimport getWasm from 'shiki/wasm';\n\nexport interface NgDocHighlighterConfig {\n  /**\n   * Themes sources.\n   */\n  themes?: ThemeInput[];\n  /**\n   * Theme that will be used for rendering the code blocks.\n   */\n  theme?: {\n    light: string;\n    dark: string;\n  };\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NgDocHighlighterService {\n  private static highlighter?: HighlighterGeneric<string, string>;\n\n  protected readonly theme = inject(NG_DOC_SHIKI_THEME);\n\n  async initialize(config?: NgDocHighlighterConfig): Promise<void> {\n    if (NgDocHighlighterService.highlighter) {\n      return;\n    }\n    NgDocHighlighterService.highlighter = (await createHighlighterCore({\n      themes: [\n        import('shiki/themes/github-light.mjs'),\n        import('shiki/themes/ayu-dark.mjs'),\n        ...(config?.themes ?? []),\n      ],\n      langs: [import('shiki/langs/angular-html.mjs')],\n      loadWasm: getWasm,\n    })) as HighlighterGeneric<string, string>;\n  }\n\n  highlight(code: string): string {\n    return (\n      NgDocHighlighterService.highlighter?.codeToHtml(code, {\n        lang: 'angular-html',\n        themes: {\n          light: this.theme.light || 'github-light',\n          dark: this.theme.dark || 'ayu-dark',\n        },\n      }) ?? ''\n    );\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAwBa,uBAAuB,CAAA;AAHpC,IAAA,WAAA,GAAA;AAMqB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,kBAAkB,CAAC;AA4BtD,IAAA;IA1BC,MAAM,UAAU,CAAC,MAA+B,EAAA;AAC9C,QAAA,IAAI,uBAAuB,CAAC,WAAW,EAAE;YACvC;QACF;AACA,QAAA,uBAAuB,CAAC,WAAW,IAAI,MAAM,qBAAqB,CAAC;AACjE,YAAA,MAAM,EAAE;gBACN,OAAO,+BAA+B,CAAC;gBACvC,OAAO,2BAA2B,CAAC;AACnC,gBAAA,IAAI,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;AAC1B,aAAA;AACD,YAAA,KAAK,EAAE,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAC/C,YAAA,QAAQ,EAAE,OAAO;AAClB,SAAA,CAAC,CAAuC;IAC3C;AAEA,IAAA,SAAS,CAAC,IAAY,EAAA;QACpB,QACE,uBAAuB,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE;AACpD,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,MAAM,EAAE;AACN,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,cAAc;AACzC,gBAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU;AACpC,aAAA;SACF,CAAC,IAAI,EAAE;IAEZ;8GA9BW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACvBD;;AAEG;;;;"}