@hashicorp/design-system-components
Version:
Helios Design System Components
56 lines (55 loc) • 2.32 kB
TypeScript
/**
* Copyright IBM Corp. 2021, 2025
* SPDX-License-Identifier: MPL-2.0
*/
import Component from '@glimmer/component';
import type { EditorView } from '@codemirror/view';
import type { WithBoundArgs } from '@glint/template';
import type Owner from '@ember/owner';
import HdsCodeEditorDescription from './description';
import HdsCodeEditorGeneric from './generic';
import HdsCodeEditorTitle from './title';
import type { HdsCodeEditorDescriptionSignature } from './description';
import type { HdsCodeEditorSignature as HdsCodeEditorModifierSignature } from '../../../modifiers/hds-code-editor.ts';
import type { HdsCodeEditorTitleSignature } from './title';
import type { HdsCopyButtonSignature } from '../copy/button/index';
export interface HdsCodeEditorSignature {
Args: {
hasCopyButton?: boolean;
hasFullScreenButton?: boolean;
isStandalone?: boolean;
copyButtonText?: HdsCopyButtonSignature['Args']['text'];
} & HdsCodeEditorModifierSignature['Args']['Named'];
Blocks: {
default: [
{
Title?: WithBoundArgs<typeof HdsCodeEditorTitle, 'onInsert' | 'editorId'>;
Description?: WithBoundArgs<typeof HdsCodeEditorDescription, 'onInsert' | 'editorId'>;
Generic?: typeof HdsCodeEditorGeneric;
}
];
};
Element: HTMLDivElement;
}
export default class HdsCodeEditor extends Component<HdsCodeEditorSignature> {
private _isFullScreen;
private _isSetupComplete;
private _value;
private _titleId;
private _descriptionId;
private _id;
private _handleEscape;
constructor(owner: Owner, args: HdsCodeEditorSignature['Args']);
get ariaLabelledBy(): string | undefined;
get ariaDescribedBy(): string | undefined;
get hasActions(): boolean;
get isStandalone(): boolean;
get classNames(): string;
get copyButtonText(): HdsCopyButtonSignature['Args']['text'];
registerTitleElement: (element: HdsCodeEditorTitleSignature["Element"]) => void;
registerDescriptionElement: (element: HdsCodeEditorDescriptionSignature["Element"]) => void;
toggleFullScreen: () => void;
onInput: (newValue: string, editorView: EditorView) => void;
onKeyDown: (event: KeyboardEvent) => void;
onSetup: (editorView: EditorView) => void;
}