@blackbaud/skyux-lib-code-block
Version:
This library was generated with [Nx](https://nx.dev).
502 lines (493 loc) • 32.9 kB
JavaScript
import * as i2 from '@angular/common';
import { CommonModule } from '@angular/common';
import * as i0 from '@angular/core';
import { NgModule, ElementRef, ViewChild, Input, Component, ChangeDetectionStrategy } from '@angular/core';
import * as i3 from '@blackbaud/skyux-lib-clipboard';
import { SkyClipboardModule } from '@blackbaud/skyux-lib-clipboard';
import * as i4 from '@skyux/i18n';
import { SkyLibResourcesService, SkyI18nModule } from '@skyux/i18n';
import Prism from 'prismjs';
import 'prismjs/plugins/normalize-whitespace/prism-normalize-whitespace';
import 'prismjs/components/prism-abap.min';
import 'prismjs/components/prism-actionscript.min';
import 'prismjs/components/prism-ada.min';
import 'prismjs/components/prism-apacheconf.min';
import 'prismjs/components/prism-apl.min';
import 'prismjs/components/prism-applescript.min';
import 'prismjs/components/prism-arff.min';
import 'prismjs/components/prism-asciidoc.min';
import 'prismjs/components/prism-asm6502.min';
import 'prismjs/components/prism-aspnet.min';
import 'prismjs/components/prism-autohotkey.min';
import 'prismjs/components/prism-autoit.min';
import 'prismjs/components/prism-bash.min';
import 'prismjs/components/prism-basic.min';
import 'prismjs/components/prism-batch.min';
import 'prismjs/components/prism-c.min';
import 'prismjs/components/prism-bison.min';
import 'prismjs/components/prism-brainfuck.min';
import 'prismjs/components/prism-bro.min';
import 'prismjs/components/prism-clike.min';
import 'prismjs/components/prism-clojure.min';
import 'prismjs/components/prism-coffeescript.min';
import 'prismjs/components/prism-cpp.min';
import 'prismjs/components/prism-arduino.min';
import 'prismjs/components/prism-csharp.min';
import 'prismjs/components/prism-csp.min';
import 'prismjs/components/prism-css.min';
import 'prismjs/components/prism-css-extras.min';
import 'prismjs/components/prism-d.min';
import 'prismjs/components/prism-dart.min';
import 'prismjs/components/prism-diff.min';
import 'prismjs/components/prism-docker.min';
import 'prismjs/components/prism-eiffel.min';
import 'prismjs/components/prism-elixir.min';
import 'prismjs/components/prism-elm.min';
import 'prismjs/components/prism-erb.min';
import 'prismjs/components/prism-erlang.min';
import 'prismjs/components/prism-flow.min';
import 'prismjs/components/prism-fortran.min';
import 'prismjs/components/prism-fsharp.min';
import 'prismjs/components/prism-gedcom.min';
import 'prismjs/components/prism-gherkin.min';
import 'prismjs/components/prism-git.min';
import 'prismjs/components/prism-glsl.min';
import 'prismjs/components/prism-go.min';
import 'prismjs/components/prism-graphql.min';
import 'prismjs/components/prism-groovy.min';
import 'prismjs/components/prism-haml.min';
import 'prismjs/components/prism-handlebars.min';
import 'prismjs/components/prism-haskell.min';
import 'prismjs/components/prism-haxe.min';
import 'prismjs/components/prism-hpkp.min';
import 'prismjs/components/prism-hsts.min';
import 'prismjs/components/prism-http.min';
import 'prismjs/components/prism-ichigojam.min';
import 'prismjs/components/prism-icon.min';
import 'prismjs/components/prism-inform7.min';
import 'prismjs/components/prism-ini.min';
import 'prismjs/components/prism-io.min';
import 'prismjs/components/prism-j.min';
import 'prismjs/components/prism-java.min';
import 'prismjs/components/prism-javascript.min';
import 'prismjs/components/prism-jolie.min';
import 'prismjs/components/prism-json.min';
import 'prismjs/components/prism-jsx.min';
import 'prismjs/components/prism-julia.min';
import 'prismjs/components/prism-keyman.min';
import 'prismjs/components/prism-kotlin.min';
import 'prismjs/components/prism-latex.min';
import 'prismjs/components/prism-less.min';
import 'prismjs/components/prism-liquid.min';
import 'prismjs/components/prism-lisp.min';
import 'prismjs/components/prism-livescript.min';
import 'prismjs/components/prism-lolcode.min';
import 'prismjs/components/prism-lua.min';
import 'prismjs/components/prism-makefile.min';
import 'prismjs/components/prism-markdown.min';
import 'prismjs/components/prism-markup.min';
import 'prismjs/components/prism-markup-templating.min';
import 'prismjs/components/prism-django.min';
import 'prismjs/components/prism-matlab.min';
import 'prismjs/components/prism-mel.min';
import 'prismjs/components/prism-mizar.min';
import 'prismjs/components/prism-monkey.min';
import 'prismjs/components/prism-n4js.min';
import 'prismjs/components/prism-nasm.min';
import 'prismjs/components/prism-nginx.min';
import 'prismjs/components/prism-nim.min';
import 'prismjs/components/prism-nix.min';
import 'prismjs/components/prism-nsis.min';
import 'prismjs/components/prism-objectivec.min';
import 'prismjs/components/prism-ocaml.min';
import 'prismjs/components/prism-opencl.min';
import 'prismjs/components/prism-oz.min';
import 'prismjs/components/prism-parigp.min';
import 'prismjs/components/prism-parser.min';
import 'prismjs/components/prism-pascal.min';
import 'prismjs/components/prism-perl.min';
import 'prismjs/components/prism-php.min';
import 'prismjs/components/prism-php-extras.min';
import 'prismjs/components/prism-powershell.min';
import 'prismjs/components/prism-processing.min';
import 'prismjs/components/prism-prolog.min';
import 'prismjs/components/prism-properties.min';
import 'prismjs/components/prism-protobuf.min';
import 'prismjs/components/prism-pug.min';
import 'prismjs/components/prism-puppet.min';
import 'prismjs/components/prism-pure.min';
import 'prismjs/components/prism-python.min';
import 'prismjs/components/prism-q.min';
import 'prismjs/components/prism-qore.min';
import 'prismjs/components/prism-r.min';
import 'prismjs/components/prism-reason.min';
import 'prismjs/components/prism-renpy.min';
import 'prismjs/components/prism-rest.min';
import 'prismjs/components/prism-rip.min';
import 'prismjs/components/prism-roboconf.min';
import 'prismjs/components/prism-ruby.min';
import 'prismjs/components/prism-crystal.min';
import 'prismjs/components/prism-rust.min';
import 'prismjs/components/prism-sas.min';
import 'prismjs/components/prism-sass.min';
import 'prismjs/components/prism-scala.min';
import 'prismjs/components/prism-scheme.min';
import 'prismjs/components/prism-scss.min';
import 'prismjs/components/prism-smalltalk.min';
import 'prismjs/components/prism-smarty.min';
import 'prismjs/components/prism-soy.min';
import 'prismjs/components/prism-sql.min';
import 'prismjs/components/prism-plsql.min';
import 'prismjs/components/prism-stylus.min';
import 'prismjs/components/prism-swift.min';
import 'prismjs/components/prism-tap.min';
import 'prismjs/components/prism-tcl.min';
import 'prismjs/components/prism-textile.min';
import 'prismjs/components/prism-tsx.min';
import 'prismjs/components/prism-tt2.min';
import 'prismjs/components/prism-twig.min';
import 'prismjs/components/prism-typescript.min';
import 'prismjs/components/prism-vbnet.min';
import 'prismjs/components/prism-velocity.min';
import 'prismjs/components/prism-verilog.min';
import 'prismjs/components/prism-vhdl.min';
import 'prismjs/components/prism-vim.min';
import 'prismjs/components/prism-visual-basic.min';
import 'prismjs/components/prism-wasm.min';
import 'prismjs/components/prism-wiki.min';
import 'prismjs/components/prism-xeora.min';
import 'prismjs/components/prism-xojo.min';
import 'prismjs/components/prism-xquery.min';
import 'prismjs/components/prism-yaml.min';
import * as i1 from '@angular/platform-browser';
/* istanbul ignore file */
/**
* NOTICE: DO NOT MODIFY THIS FILE!
* The contents of this file were automatically generated by
* the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-code-block' schematic.
* To update this file, simply rerun the command.
*/
const RESOURCES = {
'EN-US': {
sky_copy_to_clipboard_button_title: { message: 'Copy to clipboard' },
sky_copy_to_clipboard_button: { message: 'Copy' },
sky_copy_to_clipboard_button_success: { message: 'Copied!' },
},
};
SkyLibResourcesService.addResources(RESOURCES);
/**
* Import into any component library module that needs to use resource strings.
*/
class SkyCodeBlockResourcesModule {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeBlockResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeBlockResourcesModule, exports: [SkyI18nModule] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeBlockResourcesModule, imports: [SkyI18nModule] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeBlockResourcesModule, decorators: [{
type: NgModule,
args: [{
exports: [SkyI18nModule],
}]
}] });
const prismLanguages = {
properties: '.properties',
asm6502: '6502 Assembly',
abap: 'ABAP',
apl: 'APL',
arff: 'ARFF',
aspnet: 'ASP.NET (C#)',
actionscript: 'ActionScript',
ada: 'Ada',
apacheconf: 'Apache Configuration',
applescript: 'AppleScript',
arduino: 'Arduino',
asciidoc: 'AsciiDoc',
autohotkey: 'AutoHotkey',
autoit: 'AutoIt',
basic: 'BASIC',
bash: 'Bash',
batch: 'Batch',
bison: 'Bison',
brainfuck: 'Brainfuck',
bro: 'Bro',
c: 'C',
csharp: 'C#',
cpp: 'C++',
clike: 'C-like',
css: 'CSS',
'css-extras': 'CSS Extras',
clojure: 'Clojure',
coffeescript: 'CoffeeScript',
csp: 'Content-Security-Policy',
crystal: 'Crystal',
d: 'D',
dart: 'Dart',
diff: 'Diff',
django: 'Django/Jinja2',
docker: 'Docker',
erb: 'ERB',
eiffel: 'Eiffel',
elixir: 'Elixir',
elm: 'Elm',
erlang: 'Erlang',
fsharp: 'F#',
flow: 'Flow',
fortran: 'Fortran',
gedcom: 'GEDCOM',
glsl: 'GLSL',
gml: 'GameMaker Language',
gherkin: 'Gherkin',
git: 'Git',
go: 'Go',
graphql: 'GraphQL',
groovy: 'Groovy',
http: 'HTTP',
hpkp: 'HTTP Public-Key-Pins',
hsts: 'HTTP Strict-Transport-Security',
haml: 'Haml',
handlebars: 'Handlebars',
haskell: 'Haskell',
haxe: 'Haxe',
ichigojam: 'IchigoJam',
icon: 'Icon',
inform7: 'Inform 7',
ini: 'Ini',
io: 'Io',
j: 'J',
json: 'JSON',
java: 'Java',
javascript: 'JavaScript',
js: 'JavaScript',
jolie: 'Jolie',
julia: 'Julia',
keyman: 'Keyman',
kotlin: 'Kotlin',
lolcode: 'LOLCODE',
latex: 'LaTeX',
less: 'Less',
liquid: 'Liquid',
lisp: 'Lisp',
livescript: 'LiveScript',
lua: 'Lua',
matlab: 'MATLAB',
mel: 'MEL',
makefile: 'Makefile',
markdown: 'Markdown',
markup: 'Markup',
'markup-templating': 'Markup templating',
mizar: 'Mizar',
monkey: 'Monkey',
n4js: 'N4JS',
nasm: 'NASM',
nsis: 'NSIS',
nim: 'Nim',
nix: 'Nix',
ocaml: 'OCaml',
objectivec: 'Objective-C',
opencl: 'OpenCL',
oz: 'Oz',
parigp: 'PARI/GP',
php: 'PHP',
'php-extras': 'PHP Extras',
plsql: 'PL/SQL',
parser: 'Parser',
pascal: 'Pascal',
perl: 'Perl',
powershell: 'PowerShell',
processing: 'Processing',
prolog: 'Prolog',
protobuf: 'Protocol Buffers',
pug: 'Pug',
puppet: 'Puppet',
pure: 'Pure',
python: 'Python',
q: 'Q (kdb+ database)',
qore: 'Qore',
r: 'R',
jsx: 'React JSX',
tsx: 'React TSX',
reason: 'Reason',
renpy: "Ren'py",
rip: 'Rip',
roboconf: 'Roboconf',
ruby: 'Ruby',
rust: 'Rust',
sas: 'SAS',
sql: 'SQL',
sass: 'Sass (Sass)',
scss: 'Sass (Scss)',
scala: 'Scala',
scheme: 'Scheme',
smalltalk: 'Smalltalk',
smarty: 'Smarty',
soy: 'Soy (Closure Template)',
stylus: 'Stylus',
swift: 'Swift',
tap: 'TAP',
tcl: 'Tcl',
tt2: 'Template Toolkit 2',
textile: 'Textile',
twig: 'Twig',
typescript: 'TypeScript',
vbnet: 'VB.Net',
vhdl: 'VHDL',
velocity: 'Velocity',
verilog: 'Verilog',
'visual-basic': 'Visual Basic',
wasm: 'WebAssembly',
wiki: 'Wiki markup',
xquery: 'XQuery',
xeora: 'Xeora',
xojo: 'Xojo (REALbasic)',
yaml: 'YAML',
nginx: 'nginx',
rest: 'reST (reStructuredText)',
vim: 'vim',
};
const DEFAULT_LANGUAGE = 'markup';
class SkyCodeBlockComponent {
set code(value) {
if (value !== this.#_code) {
this.#_code = value;
this.#updateCodeBlockDisplay();
}
}
get code() {
return this.#_code;
}
set languageType(value) {
if (value && this.#validLanguages.indexOf(value) > -1) {
this.#_languageType = value;
}
else {
this.#_languageType = DEFAULT_LANGUAGE;
}
this.#setDisplayName(value);
this.#updateCodeBlockClassName();
}
get languageType() {
return this.#_languageType;
}
#_code;
#_languageType;
#changeDetector;
#sanitizer;
#validLanguages;
constructor(changeDetector, sanitizer) {
this.hideCopyToClipboard = false;
this.#_languageType = DEFAULT_LANGUAGE;
this.#changeDetector = changeDetector;
this.#sanitizer = sanitizer;
this.#validLanguages = Object.keys(Prism.languages);
// Create an empty SafeHtml value on init since output cannot be undefined.
this.output = sanitizer.bypassSecurityTrustHtml('');
}
ngAfterViewInit() {
this.#updateCodeBlockClassName();
this.#updateCodeBlockDisplay();
}
ngOnChanges(changes) {
if (changes['fileName'] ||
changes['hideCopyToClipboard'] ||
changes['hideHeader']) {
this.#updateHeaderVisibility();
}
}
#updateHeaderVisibility() {
this.hideHeader =
this.hideHeader ||
(!this.displayName && !this.fileName && this.hideCopyToClipboard);
}
#updateCodeBlockClassName() {
this.codeBlockClassName = `language-${this.languageType}`;
this.#changeDetector.markForCheck();
}
#setDisplayName(value = '') {
this.displayName = value ? prismLanguages[value] : undefined;
this.#changeDetector.markForCheck();
}
#formatCode(code) {
return Prism.plugins['NormalizeWhitespace'].normalize(code, {
'remove-trailing': true,
'remove-indent': true,
'left-trim': true,
'right-trim': true,
indent: 0,
'remove-initial-line-feed': true,
'tabs-to-spaces': 2,
});
}
#highlightCode(code) {
return Prism.highlight(code, Prism.languages[this.languageType], this.languageType);
}
#updateCodeBlockDisplay() {
if (this.codeTemplateRef) {
const textContent = this.codeTemplateRef.nativeElement.textContent;
let code = this.code || textContent;
if (code) {
code = this.#formatCode(code);
code = this.#highlightCode(code);
}
this.output = this.#sanitizer.bypassSecurityTrustHtml(code);
this.#changeDetector.detectChanges();
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeBlockComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: SkyCodeBlockComponent, isStandalone: false, selector: "sky-code-block", inputs: { code: "code", fileName: "fileName", languageType: "languageType", hideCopyToClipboard: "hideCopyToClipboard", hideHeader: "hideHeader" }, viewQueries: [{ propertyName: "codeTemplateRef", first: true, predicate: ["codeFromContent"], descendants: true, read: ElementRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"sky-code-block\">\n @if (!hideHeader) {\n <div class=\"sky-code-block-header\">\n <div>\n @if (fileName) {\n <span class=\"sky-emphasized sky-margin-inline-default\">\n {{ fileName }}\n </span>\n }\n @if (displayName) {\n <span class=\"sky-deemphasized\">\n {{ displayName }}\n </span>\n }\n </div>\n @if (!hideCopyToClipboard) {\n <sky-copy-to-clipboard\n [buttonText]=\"'sky_copy_to_clipboard_button' | skyLibResources\"\n [buttonClickedText]=\"\n 'sky_copy_to_clipboard_button_success' | skyLibResources\n \"\n [copyTarget]=\"skyCodeOutput\"\n />\n }\n </div>\n }\n <div #codeFromContent class=\"sky-code-input\">\n <ng-content />\n </div>\n <div>\n <pre #skyCodeOutput class=\"sky-code-output\"><code\n [ngClass]=\"codeBlockClassName\"\n [innerHTML]=\"output\"></code></pre>\n </div>\n</div>\n", styles: ["::ng-deep code[class*=language-],pre[class*=language-]{text-shadow:0 1px var(--sky-color-text-inverse, white);font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}::ng-deep code[class*=language-] .token.comment,::ng-deep code[class*=language-] .token.prolog,::ng-deep code[class*=language-] .token.doctype,::ng-deep code[class*=language-] .token.cdata,pre[class*=language-] .token.comment,pre[class*=language-] .token.prolog,pre[class*=language-] .token.doctype,pre[class*=language-] .token.cdata{color:#5f6c79}::ng-deep code[class*=language-] .token.punctuation,pre[class*=language-] .token.punctuation{color:#5f6c79}::ng-deep code[class*=language-] .namespace,pre[class*=language-] .namespace{color:#10776e}::ng-deep code[class*=language-] .token.property,::ng-deep code[class*=language-] .token.tag,::ng-deep code[class*=language-] .token.boolean,::ng-deep code[class*=language-] .token.number,::ng-deep code[class*=language-] .token.constant,::ng-deep code[class*=language-] .token.symbol,::ng-deep code[class*=language-] .token.deleted,pre[class*=language-] .token.property,pre[class*=language-] .token.tag,pre[class*=language-] .token.boolean,pre[class*=language-] .token.number,pre[class*=language-] .token.constant,pre[class*=language-] .token.symbol,pre[class*=language-] .token.deleted{color:#c50028}::ng-deep code[class*=language-] .token.selector,::ng-deep code[class*=language-] .token.attr-name,::ng-deep code[class*=language-] .token.string,::ng-deep code[class*=language-] .token.char,::ng-deep code[class*=language-] .token.builtin,::ng-deep code[class*=language-] .token.inserted,pre[class*=language-] .token.selector,pre[class*=language-] .token.attr-name,pre[class*=language-] .token.string,pre[class*=language-] .token.char,pre[class*=language-] .token.builtin,pre[class*=language-] .token.inserted{color:#627932}::ng-deep code[class*=language-] .token.operator,::ng-deep code[class*=language-] .token.entity,::ng-deep code[class*=language-] .token.url,::ng-deep code[class*=language-] .language-css .token.string,::ng-deep code[class*=language-] .style .token.string,pre[class*=language-] .token.operator,pre[class*=language-] .token.entity,pre[class*=language-] .token.url,pre[class*=language-] .language-css .token.string,pre[class*=language-] .style .token.string{color:#996525}::ng-deep code[class*=language-] .token.atrule,::ng-deep code[class*=language-] .token.attr-value,::ng-deep code[class*=language-] .token.keyword,pre[class*=language-] .token.atrule,pre[class*=language-] .token.attr-value,pre[class*=language-] .token.keyword{color:#07a}::ng-deep code[class*=language-] .token.function,::ng-deep code[class*=language-] .token.class-name,pre[class*=language-] .token.function,pre[class*=language-] .token.class-name{color:#c50028}::ng-deep code[class*=language-] .token.regex,::ng-deep code[class*=language-] .token.important,::ng-deep code[class*=language-] .token.variable,pre[class*=language-] .token.regex,pre[class*=language-] .token.important,pre[class*=language-] .token.variable{color:#9a690f}::ng-deep code[class*=language-] .token.important,::ng-deep code[class*=language-] .token.bold,pre[class*=language-] .token.important,pre[class*=language-] .token.bold{font-weight:700}::ng-deep code[class*=language-] .token.italic,pre[class*=language-] .token.italic{font-style:italic}::ng-deep code[class*=language-] .token.entity,pre[class*=language-] .token.entity{cursor:help}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}.sky-code-input{display:none}.sky-code-output{border:var(--sky-border-width-container-base, 1px) solid var(--sky-color-border-container-base, #cdcfd2);margin-top:0;padding:20px;background-color:var(--sky-color-background-container-base, #fff);overflow-x:auto;margin-bottom:20px}.sky-code-block-header{height:45px;border:var(--sky-border-width-container-base, 1px) solid var(--sky-color-border-container-base, #cdcfd2);border-bottom:none;background-color:var(--sky-color-background-container-base, #fff);display:flex;justify-content:space-between;align-items:center;padding:5px 5px 5px 20px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i3.λ1, selector: "sky-copy-to-clipboard", inputs: ["ariaLabel", "ariaLabelledBy", "copyTarget", "buttonText", "buttonClickedText", "title"] }, { kind: "pipe", type: i4.SkyLibResourcesPipe, name: "skyLibResources" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeBlockComponent, decorators: [{
type: Component,
args: [{ selector: 'sky-code-block', standalone: false, template: "<div class=\"sky-code-block\">\n @if (!hideHeader) {\n <div class=\"sky-code-block-header\">\n <div>\n @if (fileName) {\n <span class=\"sky-emphasized sky-margin-inline-default\">\n {{ fileName }}\n </span>\n }\n @if (displayName) {\n <span class=\"sky-deemphasized\">\n {{ displayName }}\n </span>\n }\n </div>\n @if (!hideCopyToClipboard) {\n <sky-copy-to-clipboard\n [buttonText]=\"'sky_copy_to_clipboard_button' | skyLibResources\"\n [buttonClickedText]=\"\n 'sky_copy_to_clipboard_button_success' | skyLibResources\n \"\n [copyTarget]=\"skyCodeOutput\"\n />\n }\n </div>\n }\n <div #codeFromContent class=\"sky-code-input\">\n <ng-content />\n </div>\n <div>\n <pre #skyCodeOutput class=\"sky-code-output\"><code\n [ngClass]=\"codeBlockClassName\"\n [innerHTML]=\"output\"></code></pre>\n </div>\n</div>\n", styles: ["::ng-deep code[class*=language-],pre[class*=language-]{text-shadow:0 1px var(--sky-color-text-inverse, white);font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}::ng-deep code[class*=language-] .token.comment,::ng-deep code[class*=language-] .token.prolog,::ng-deep code[class*=language-] .token.doctype,::ng-deep code[class*=language-] .token.cdata,pre[class*=language-] .token.comment,pre[class*=language-] .token.prolog,pre[class*=language-] .token.doctype,pre[class*=language-] .token.cdata{color:#5f6c79}::ng-deep code[class*=language-] .token.punctuation,pre[class*=language-] .token.punctuation{color:#5f6c79}::ng-deep code[class*=language-] .namespace,pre[class*=language-] .namespace{color:#10776e}::ng-deep code[class*=language-] .token.property,::ng-deep code[class*=language-] .token.tag,::ng-deep code[class*=language-] .token.boolean,::ng-deep code[class*=language-] .token.number,::ng-deep code[class*=language-] .token.constant,::ng-deep code[class*=language-] .token.symbol,::ng-deep code[class*=language-] .token.deleted,pre[class*=language-] .token.property,pre[class*=language-] .token.tag,pre[class*=language-] .token.boolean,pre[class*=language-] .token.number,pre[class*=language-] .token.constant,pre[class*=language-] .token.symbol,pre[class*=language-] .token.deleted{color:#c50028}::ng-deep code[class*=language-] .token.selector,::ng-deep code[class*=language-] .token.attr-name,::ng-deep code[class*=language-] .token.string,::ng-deep code[class*=language-] .token.char,::ng-deep code[class*=language-] .token.builtin,::ng-deep code[class*=language-] .token.inserted,pre[class*=language-] .token.selector,pre[class*=language-] .token.attr-name,pre[class*=language-] .token.string,pre[class*=language-] .token.char,pre[class*=language-] .token.builtin,pre[class*=language-] .token.inserted{color:#627932}::ng-deep code[class*=language-] .token.operator,::ng-deep code[class*=language-] .token.entity,::ng-deep code[class*=language-] .token.url,::ng-deep code[class*=language-] .language-css .token.string,::ng-deep code[class*=language-] .style .token.string,pre[class*=language-] .token.operator,pre[class*=language-] .token.entity,pre[class*=language-] .token.url,pre[class*=language-] .language-css .token.string,pre[class*=language-] .style .token.string{color:#996525}::ng-deep code[class*=language-] .token.atrule,::ng-deep code[class*=language-] .token.attr-value,::ng-deep code[class*=language-] .token.keyword,pre[class*=language-] .token.atrule,pre[class*=language-] .token.attr-value,pre[class*=language-] .token.keyword{color:#07a}::ng-deep code[class*=language-] .token.function,::ng-deep code[class*=language-] .token.class-name,pre[class*=language-] .token.function,pre[class*=language-] .token.class-name{color:#c50028}::ng-deep code[class*=language-] .token.regex,::ng-deep code[class*=language-] .token.important,::ng-deep code[class*=language-] .token.variable,pre[class*=language-] .token.regex,pre[class*=language-] .token.important,pre[class*=language-] .token.variable{color:#9a690f}::ng-deep code[class*=language-] .token.important,::ng-deep code[class*=language-] .token.bold,pre[class*=language-] .token.important,pre[class*=language-] .token.bold{font-weight:700}::ng-deep code[class*=language-] .token.italic,pre[class*=language-] .token.italic{font-style:italic}::ng-deep code[class*=language-] .token.entity,pre[class*=language-] .token.entity{cursor:help}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}.sky-code-input{display:none}.sky-code-output{border:var(--sky-border-width-container-base, 1px) solid var(--sky-color-border-container-base, #cdcfd2);margin-top:0;padding:20px;background-color:var(--sky-color-background-container-base, #fff);overflow-x:auto;margin-bottom:20px}.sky-code-block-header{height:45px;border:var(--sky-border-width-container-base, 1px) solid var(--sky-color-border-container-base, #cdcfd2);border-bottom:none;background-color:var(--sky-color-background-container-base, #fff);display:flex;justify-content:space-between;align-items:center;padding:5px 5px 5px 20px}\n"] }]
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.DomSanitizer }], propDecorators: { code: [{
type: Input
}], fileName: [{
type: Input
}], languageType: [{
type: Input
}], hideCopyToClipboard: [{
type: Input
}], hideHeader: [{
type: Input
}], codeTemplateRef: [{
type: ViewChild,
args: ['codeFromContent', { read: ElementRef, static: true }]
}] } });
class SkyCodeBlockModule {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeBlockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeBlockModule, declarations: [SkyCodeBlockComponent], imports: [CommonModule, SkyClipboardModule, SkyCodeBlockResourcesModule], exports: [SkyCodeBlockComponent] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeBlockModule, imports: [CommonModule, SkyClipboardModule, SkyCodeBlockResourcesModule] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeBlockModule, decorators: [{
type: NgModule,
args: [{
declarations: [SkyCodeBlockComponent],
imports: [CommonModule, SkyClipboardModule, SkyCodeBlockResourcesModule],
exports: [SkyCodeBlockComponent],
}]
}] });
class SkyCodeComponent {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: SkyCodeComponent, isStandalone: false, selector: "sky-code", ngImport: i0, template: "<code class=\"sky-code\"><ng-content /></code>\n", styles: [".sky-code{border:var(--sky-border-width-container-base, 1px) solid var(--sky-color-border-container-base, #cdcfd2);overflow-wrap:break-word;font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-size:90%;color:var(--sky-color-text-danger, rgb(209.1553191489, 40.3446808511, 43.529787234));padding:0 4px;background-color:var(--sky-color-container-dimmed, #f1eef6)}.sky-code ::ng-deep a{color:var(--sky-color-text-danger, #d93a3d);text-decoration:underline}::ng-deep a .sky-code{text-decoration:underline}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeComponent, decorators: [{
type: Component,
args: [{ selector: 'sky-code', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<code class=\"sky-code\"><ng-content /></code>\n", styles: [".sky-code{border:var(--sky-border-width-container-base, 1px) solid var(--sky-color-border-container-base, #cdcfd2);overflow-wrap:break-word;font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-size:90%;color:var(--sky-color-text-danger, rgb(209.1553191489, 40.3446808511, 43.529787234));padding:0 4px;background-color:var(--sky-color-container-dimmed, #f1eef6)}.sky-code ::ng-deep a{color:var(--sky-color-text-danger, #d93a3d);text-decoration:underline}::ng-deep a .sky-code{text-decoration:underline}\n"] }]
}] });
class SkyCodeModule {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeModule, declarations: [SkyCodeComponent], imports: [CommonModule], exports: [SkyCodeComponent] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeModule, imports: [CommonModule] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SkyCodeModule, decorators: [{
type: NgModule,
args: [{
declarations: [SkyCodeComponent],
imports: [CommonModule],
exports: [SkyCodeComponent],
}]
}] });
/**
* Generated bundle index. Do not edit.
*/
export { SkyCodeBlockModule, SkyCodeModule, SkyCodeComponent as λ1, SkyCodeBlockComponent as λ2 };
//# sourceMappingURL=blackbaud-skyux-lib-code-block.mjs.map