@koalarx/ui
Version:
Koala UI is a modern and accessible component library designed to speed up interface development in Angular projects. With simple integration and clear documentation, you can easily build robust and visually appealing applications.
1 lines • 6.44 kB
Source Map (JSON)
{"version":3,"file":"koalarx-ui-shared-components-code-viewer.mjs","sources":["../../projects/koala-ui/shared/components/code-viewer/code-viewer.ts","../../projects/koala-ui/shared/components/code-viewer/code-viewer.html","../../projects/koala-ui/shared/components/code-viewer/koalarx-ui-shared-components-code-viewer.ts"],"sourcesContent":["import 'prismjs/prism';\n\nimport 'prismjs/components/prism-bash';\nimport 'prismjs/components/prism-css';\nimport 'prismjs/components/prism-json';\nimport 'prismjs/components/prism-markup';\nimport 'prismjs/components/prism-typescript';\nimport 'prismjs/plugins/line-highlight/prism-line-highlight';\nimport 'prismjs/plugins/line-numbers/prism-line-numbers';\n\nimport {\n booleanAttribute,\n Component,\n inject,\n input,\n linkedSignal,\n signal,\n} from '@angular/core';\nimport { AppConfig } from '@koalarx/ui/core/config';\nimport { Tooltip } from '@koalarx/ui/shared/directives';\nimport { MarkdownModule } from 'ngx-markdown';\n\nexport type CodeViewerLanguage =\n | 'bash'\n | 'typescript'\n | 'html'\n | 'css'\n | 'json'\n | 'other';\n\nexport interface CodeViewerConfig {\n label: string;\n code?: string;\n language?: CodeViewerLanguage;\n src?: string;\n checked?: boolean;\n lineHighlight?: string;\n}\n\n@Component({\n selector: 'kl-code-viewer',\n templateUrl: './code-viewer.html',\n imports: [MarkdownModule, Tooltip],\n})\nexport class CodeViewer {\n readonly translations = inject(AppConfig).translation.codeViewer;\n\n copied = signal(false);\n content = signal<string>('');\n\n name = input.required<string>();\n src = input.required<string>();\n language = input<CodeViewerLanguage>('other');\n lineHighlight = input<string>();\n lineNumbers = input(false, { transform: booleanAttribute });\n\n icon = linkedSignal(() => {\n const language = this.language();\n\n if (language) {\n switch (language) {\n case 'bash':\n return 'fa-solid fa-terminal p-1 text-[0.5rem]';\n case 'typescript':\n return 'fa-brands fa-angular py-0 px-[0.2rem] text-[1rem]';\n case 'html':\n return 'fa-brands fa-html5 py-[0.1rem] px-[0.2rem] text-[1rem]';\n case 'css':\n return 'fa-brands fa-css3 py-[0.1rem] px-[0.2rem] text-[1rem]';\n case 'json':\n return 'fa-regular fa-file-code py-[0.1rem] px-[0.2rem] text-[1rem]';\n }\n }\n\n return 'fa-solid fa-code';\n });\n\n clipboard(event: any) {\n this.content.set(event.replace(/^[^\\n]*\\n?/, '').replace(/`/g, ''));\n }\n\n copyCode() {\n const code = this.content();\n\n if (code) {\n navigator.clipboard.writeText(code).then(() => {\n this.copied.set(true);\n setTimeout(() => this.copied.set(false), 2000);\n });\n }\n }\n}\n","<div class=\"relative rounded-xl bg-neutral-900 border border-base-300 mt-5 overflow-hidden\">\n <div class=\"flex items-center justify-between p-3\">\n <span class=\"flex items-center gap-2\">\n <i class=\"bg-neutral-400 text-neutral-950 rounded-sm\"\n [class]=\"icon()\">\n </i>\n <span class=\"text-neutral-500\">{{ name() }}</span>\n </span>\n\n <button class=\"hover:cursor-pointer px-2 text-md text-neutral-500 hover:text-neutral-300 hover:bg-neutral-800 rounded-sm\"\n type=\"button\"\n [tooltip]=\"copied()\n ? translations.copiedToClipboard\n : translations.copyToClipboard\"\n tooltipPosition=\"left\"\n (click)=\"copyCode()\">\n\n @if (copied()) {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n <i class=\"fa-regular fa-clipboard\"></i>\n }\n </button>\n </div>\n\n <markdown\n [src]=\"src()\"\n [disableSanitizer]=\"true\"\n [lineNumbers]=\"lineNumbers()\"\n lineHighlight\n [line]=\"lineHighlight()\"\n (load)=\"clipboard($event)\"\n />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}