{"version":3,"file":"primeng-terminal.mjs","sources":["../../src/terminal/style/terminalstyle.ts","../../src/terminal/terminalservice.ts","../../src/terminal/terminal.ts","../../src/terminal/primeng-terminal.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/terminal';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n    root: () => ['p-terminal p-component'],\n    welcomeMessage: 'p-terminal-welcome-message',\n    commandList: 'p-terminal-command-list',\n    command: 'p-terminal-command',\n    commandValue: 'p-terminal-command-value',\n    commandResponse: 'p-terminal-command-response',\n    prompt: 'p-terminal-prompt',\n    promptLabel: 'p-terminal-prompt-label',\n    promptValue: 'p-terminal-prompt-value'\n};\n\n@Injectable()\nexport class TerminalStyle extends BaseStyle {\n    name = 'terminal';\n\n    style = style;\n\n    classes = classes;\n}\n\n/**\n *\n * Terminal is a text based user interface.\n *\n * [Live Demo](https://www.primeng.org/terminal)\n *\n * @module terminalstyle\n *\n */\nexport enum TerminalClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-terminal',\n    /**\n     * Class name of the welcome message element\n     */\n    welcomeMessage = 'p-terminal-welcome-message',\n    /**\n     * Class name of the command list element\n     */\n    commandList = 'p-terminal-command-list',\n    /**\n     * Class name of the command element\n     */\n    command = 'p-terminal-command',\n    /**\n     * Class name of the command value element\n     */\n    commandValue = 'p-terminal-command-value',\n    /**\n     * Class name of the command response element\n     */\n    commandResponse = 'p-terminal-command-response',\n    /**\n     * Class name of the prompt element\n     */\n    prompt = 'p-terminal-prompt',\n    /**\n     * Class name of the prompt label element\n     */\n    promptLabel = 'p-terminal-prompt-label',\n    /**\n     * Class name of the prompt value element\n     */\n    promptValue = 'p-terminal-prompt-value'\n}\n\nexport interface TerminalStyle extends BaseStyle {}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class TerminalService {\n    private commandSource = new Subject<string>();\n    private responseSource = new Subject<string>();\n\n    commandHandler = this.commandSource.asObservable();\n    responseHandler = this.responseSource.asObservable();\n\n    sendCommand(command: string) {\n        if (command) {\n            this.commandSource.next(command);\n        }\n    }\n\n    sendResponse(response: string) {\n        if (response) {\n            this.responseSource.next(response);\n        }\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { AfterViewChecked, AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, HostListener, inject, InjectionToken, Input, NgModule, OnDestroy, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { find } from '@primeuix/utils';\nimport { SharedModule } from 'primeng/api';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { TerminalPassThrough } from 'primeng/types/terminal';\nimport { Subscription } from 'rxjs';\nimport { TerminalStyle } from './style/terminalstyle';\nimport { TerminalService } from './terminalservice';\n\nconst TERMINAL_INSTANCE = new InjectionToken<Terminal>('TERMINAL_INSTANCE');\n\n/**\n * Terminal is a text based user interface.\n * @group Components\n */\n@Component({\n    selector: 'p-terminal',\n    standalone: true,\n    imports: [CommonModule, FormsModule, SharedModule, Bind],\n    template: `\n        <div [class]=\"cx('welcomeMessage')\" [pBind]=\"ptm('welcomeMessage')\" *ngIf=\"welcomeMessage\">{{ welcomeMessage }}</div>\n        <div [class]=\"cx('commandList')\" [pBind]=\"ptm('commandList')\">\n            <div [class]=\"cx('command')\" [pBind]=\"ptm('command')\" *ngFor=\"let command of commands\">\n                <span [class]=\"cx('promptLabel')\" [pBind]=\"ptm('promptLabel')\">{{ prompt }}</span>\n                <span [class]=\"cx('commandValue')\" [pBind]=\"ptm('commandValue')\">{{ command.text }}</span>\n                <div [class]=\"cx('commandResponse')\" [pBind]=\"ptm('commandResponse')\" [attr.aria-live]=\"'polite'\">{{ command.response }}</div>\n            </div>\n        </div>\n        <div [class]=\"cx('prompt')\" [pBind]=\"ptm('prompt')\">\n            <span [class]=\"cx('promptLabel')\" [pBind]=\"ptm('promptLabel')\">{{ prompt }}</span>\n            <input #in type=\"text\" [(ngModel)]=\"command\" [class]=\"cx('promptValue')\" [pBind]=\"ptm('promptValue')\" autocomplete=\"off\" (keydown)=\"handleCommand($event)\" autofocus />\n        </div>\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [TerminalStyle, { provide: TERMINAL_INSTANCE, useExisting: Terminal }, { provide: PARENT_INSTANCE, useExisting: Terminal }],\n    host: {\n        '[class]': \"cn(cx('root'), styleClass)\"\n    },\n    hostDirectives: [Bind]\n})\nexport class Terminal extends BaseComponent<TerminalPassThrough> implements AfterViewInit, AfterViewChecked, OnDestroy {\n    componentName = 'Terminal';\n    $pcTerminal: Terminal | undefined = inject(TERMINAL_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    /**\n     * Initial text to display on terminal.\n     * @group Props\n     */\n    @Input() welcomeMessage: string | undefined;\n    /**\n     * Prompt text for each command.\n     * @group Props\n     */\n    @Input() prompt: string | undefined;\n    /**\n     * Style class of the component.\n     * @deprecated since v20.0.0, use `class` instead.\n     * @group Props\n     */\n    @Input() styleClass: string | undefined;\n\n    commands: any[] = [];\n\n    command!: string;\n\n    container!: Element;\n\n    commandProcessed!: boolean;\n\n    subscription: Subscription;\n\n    _componentStyle = inject(TerminalStyle);\n\n    @ViewChild('in') inputRef!: ElementRef<HTMLInputElement>;\n\n    @HostListener('click')\n    onHostClick() {\n        this.focus(this.inputRef?.nativeElement);\n    }\n\n    constructor(public terminalService: TerminalService) {\n        super();\n        this.subscription = terminalService.responseHandler.subscribe((response) => {\n            this.commands[this.commands.length - 1].response = response;\n            this.commandProcessed = true;\n        });\n    }\n\n    onAfterViewInit() {\n        this.container = this.el.nativeElement;\n    }\n\n    onAfterViewChecked() {\n        this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n\n        if (this.commandProcessed) {\n            this.container.scrollTop = this.container.scrollHeight;\n            this.commandProcessed = false;\n        }\n    }\n\n    @Input()\n    set response(value: string) {\n        if (value) {\n            this.commands[this.commands.length - 1].response = value;\n            this.commandProcessed = true;\n        }\n    }\n\n    handleCommand(event: KeyboardEvent) {\n        if (event.keyCode == 13) {\n            this.commands.push({ text: this.command });\n            this.terminalService.sendCommand(this.command);\n            this.command = '';\n        }\n    }\n\n    focus(element: HTMLElement) {\n        element.focus();\n    }\n\n    onDestroy() {\n        if (this.subscription) {\n            this.subscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    exports: [Terminal, SharedModule],\n    imports: [Terminal, SharedModule]\n})\nexport class TerminalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.TerminalService"],"mappings":"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"}