{"version":3,"sources":["../../src/medias/code-block.ts"],"names":[],"mappings":";;AAuDO,MAAM,kBAAkB,OAA8B,CAAA;AAAA,EAC3D,IAAA;AAAA;AAAA;AAAA;AAAA,EAKA,QAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAA;AAAA;AAAA;AAAA;AAAA,EAKA,eAAA;AAAA,EAEA,WAAA,CAAY,OAA4B,GAAA,EAAI,EAAA;AAC1C,IAAM,KAAA,EAAA;AACN,IAAA,IAAA,CAAK,IAAO,GAAA,WAAA;AACZ,IAAO,MAAA,CAAA,MAAA,CAAO,MAAM,OAAO,CAAA;AAAA;AAC7B,EAEA,OAAO,KAAK,OAA2B,EAAA;AACrC,IAAO,OAAA,IAAI,UAAU,OAAO,CAAA;AAAA;AAC9B,EAEA,aAAa,KAAqB,EAAA;AAChC,IAAA,IAAA,CAAK,QAAW,GAAA,KAAA;AAChB,IAAO,OAAA,IAAA;AAAA;AACT,EAEA,SAAS,KAAe,EAAA;AACtB,IAAA,IAAA,CAAK,WAAc,GAAA,KAAA;AACnB,IAAO,OAAA,IAAA;AAAA;AACT,EAEA,oBAAoB,KAAe,EAAA;AACjC,IAAA,IAAA,CAAK,eAAkB,GAAA,KAAA;AACvB,IAAO,OAAA,IAAA;AAAA;AAEX","file":"code-block.mjs","sourcesContent":["import { IElement, Element } from '../base';\n\nexport type CodeLanguage =\n  | 'Bash'\n  | 'C'\n  | 'Cpp'\n  | 'CSharp'\n  | 'Css'\n  | 'Dos'\n  | 'Go'\n  | 'Graphql'\n  | 'Html'\n  | 'Java'\n  | 'JavaScript'\n  | 'Json'\n  | 'ObjectiveC'\n  | 'Perl'\n  | 'Php'\n  | 'PlainText'\n  | 'PowerShell'\n  | 'Python'\n  | 'Sql'\n  | 'TypeScript'\n  | 'VbNet'\n  | 'Verilog'\n  | 'Vhdl'\n  | 'Xml';\n\n/**\n * Displays a block of code with syntax highlighting\n */\nexport interface ICodeBlock extends IElement {\n  type: 'CodeBlock';\n\n  /**\n   * which programming language to use.\n   */\n  language?: CodeLanguage;\n\n  /**\n   * code to display/highlight.\n   */\n  codeSnippet?: string;\n\n  /**\n   * which line number to display on the first line.\n   */\n  startLineNumber?: number;\n}\n\nexport type CodeBlockOptions = Omit<ICodeBlock, 'type'>;\n\n/**\n * Displays a block of code with syntax highlighting\n */\nexport class CodeBlock extends Element implements ICodeBlock {\n  type: 'CodeBlock';\n\n  /**\n   * which programming language to use.\n   */\n  language?: CodeLanguage;\n\n  /**\n   * code to display/highlight.\n   */\n  codeSnippet?: string;\n\n  /**\n   * which line number to display on the first line.\n   */\n  startLineNumber?: number;\n\n  constructor(options: CodeBlockOptions = {}) {\n    super();\n    this.type = 'CodeBlock';\n    Object.assign(this, options);\n  }\n\n  static from(options: CodeBlockOptions) {\n    return new CodeBlock(options);\n  }\n\n  withLanguage(value: CodeLanguage) {\n    this.language = value;\n    return this;\n  }\n\n  withCode(value: string) {\n    this.codeSnippet = value;\n    return this;\n  }\n\n  withStartLineNumber(value: number) {\n    this.startLineNumber = value;\n    return this;\n  }\n}\n"]}