{"version":3,"file":"axulus-uikit-terminal.mjs","sources":["../../src/app/components/terminal/terminalservice.ts","../../src/app/components/terminal/terminal.ts","../../src/app/components/terminal/axulus-uikit-terminal.ts"],"sourcesContent":["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 {\n  NgModule,\n  Component,\n  AfterViewInit,\n  AfterViewChecked,\n  OnDestroy,\n  Input,\n  ElementRef,\n  ChangeDetectionStrategy,\n  ViewEncapsulation,\n  ChangeDetectorRef\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from '@axulus/uikit/dom';\nimport { TerminalService } from './terminalservice';\nimport { Subscription } from 'rxjs';\n\n@Component({\n  selector: 'p-terminal',\n  template: `\n    <div [ngClass]=\"'p-terminal p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" (click)=\"focus(in)\">\n      <div *ngIf=\"welcomeMessage\">{{ welcomeMessage }}</div>\n      <div class=\"p-terminal-content\">\n        <div *ngFor=\"let command of commands\">\n          <span class=\"p-terminal-prompt\">{{ prompt }}</span>\n          <span class=\"p-terminal-command\">{{ command.text }}</span>\n          <div class=\"p-terminal-response\">{{ command.response }}</div>\n        </div>\n      </div>\n      <div class=\"p-terminal-prompt-container\">\n        <span class=\"p-terminal-content-prompt\">{{ prompt }}</span>\n        <input\n          #in\n          type=\"text\"\n          [(ngModel)]=\"command\"\n          class=\"p-terminal-input\"\n          autocomplete=\"off\"\n          (keydown)=\"handleCommand($event)\"\n          autofocus\n        />\n      </div>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['./terminal.css'],\n  host: {\n    class: 'p-element'\n  }\n})\nexport class Terminal implements AfterViewInit, AfterViewChecked, OnDestroy {\n  @Input() welcomeMessage: string;\n\n  @Input() prompt: string;\n\n  @Input() style: any;\n\n  @Input() styleClass: string;\n\n  commands: any[] = [];\n\n  command: string;\n\n  container: Element;\n\n  commandProcessed: boolean;\n\n  subscription: Subscription;\n\n  constructor(public el: ElementRef, public terminalService: TerminalService, public cd: ChangeDetectorRef) {\n    this.subscription = terminalService.responseHandler.subscribe((response) => {\n      this.commands[this.commands.length - 1].response = response;\n      this.commandProcessed = true;\n    });\n  }\n\n  ngAfterViewInit() {\n    this.container = DomHandler.find(this.el.nativeElement, '.p-terminal')[0];\n  }\n\n  ngAfterViewChecked() {\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  ngOnDestroy() {\n    if (this.subscription) {\n      this.subscription.unsubscribe();\n    }\n  }\n}\n\n@NgModule({\n  imports: [CommonModule, FormsModule],\n  exports: [Terminal],\n  declarations: [Terminal]\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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"}