UNPKG

@hashicorp/design-system-components

Version:
99 lines (98 loc) 3.21 kB
/** * Copyright (c) HashiCorp, Inc. * SPDX-License-Identifier: MPL-2.0 */ import Component from '@glimmer/component'; import type { ComponentLike } from '@glint/template'; import type { HdsCodeBlockTitleSignature } from './title'; import type { HdsCodeBlockDescriptionSignature } from './description'; import type { HdsCodeBlockLanguages } from './types.ts'; import type { HdsCopyButtonSignature } from '../copy/button/index.ts'; import 'prismjs/plugins/line-numbers/prism-line-numbers'; import 'prismjs/plugins/line-highlight/prism-line-highlight'; import 'prismjs/components/prism-bash'; import 'prismjs/components/prism-go'; import 'prismjs/components/prism-hcl'; import 'prismjs/components/prism-json'; import 'prismjs/components/prism-log'; import 'prismjs/components/prism-ruby'; import 'prismjs/components/prism-shell-session'; import 'prismjs/components/prism-yaml'; import 'prismjs/components/prism-markup-templating'; import 'prismjs/components/prism-handlebars'; export declare const LANGUAGES: string[]; export interface HdsCodeBlockSignature { Args: { hasCopyButton?: boolean; hasLineNumbers?: boolean; hasLineWrapping?: boolean; highlightLines?: string; lineNumberStart?: number; isStandalone?: boolean; language?: HdsCodeBlockLanguages; maxHeight?: string; value: string; copyButtonText?: HdsCopyButtonSignature['Args']['text']; onCopy?: HdsCopyButtonSignature['Args']['onSuccess']; }; Blocks: { default: [ { Title?: ComponentLike<HdsCodeBlockTitleSignature>; Description?: ComponentLike<HdsCodeBlockDescriptionSignature>; } ]; }; Element: HTMLDivElement; } export default class HdsCodeBlock extends Component<HdsCodeBlockSignature> { private _prismCode; /** * Generates a unique ID for the code content * * @param _preCodeId */ private _preCodeId; /** * @param code * @type {string} * @description code text content for the CodeBlock */ get code(): string; /** * @param language * @type {string} * @default undefined * @description name of coding language used within CodeBlock for syntax highlighting */ get language(): HdsCodeBlockLanguages | undefined; /** * @param hasLineNumbers * @type {boolean} * @default true * @description Displays line numbers if true */ get hasLineNumbers(): boolean; /** * @param isStandalone * @type {boolean} * @default true * @description Make CodeBlock container corners appear rounded */ get isStandalone(): boolean; /** * @param hasLineWrapping * @type {boolean} * @default false * @description Make text content wrap on multiple lines */ get hasLineWrapping(): boolean; get copyButtonText(): HdsCopyButtonSignature['Args']['text']; setPrismCode(element: HTMLElement): void; /** * Get the class names to apply to the component. * @method classNames * @return {string} The "class" attribute to apply to the component. */ get classNames(): string; }