{"version":3,"file":"ngx-dynamic-components-tools.mjs","sources":["../../../../projects/tools/src/lib/components/preview-editor/preview-editor.component.ts","../../../../projects/tools/src/lib/components/preview-editor/preview-editor.component.html","../../../../projects/tools/src/lib/components/add-dialog/add-dialog.component.ts","../../../../projects/tools/src/lib/components/properties-editor/properties-editor.component.ts","../../../../projects/tools/src/lib/components/control-editor/control-editor.component.ts","../../../../projects/tools/src/lib/tools.module.ts","../../../../projects/tools/src/public_api.ts","../../../../projects/tools/src/ngx-dynamic-components-tools.ts"],"sourcesContent":["import {\r\n  Component,\r\n  OnInit,\r\n  Input,\r\n  HostBinding,\r\n  ViewChild,\r\n  AfterViewInit,\r\n} from '@angular/core';\r\nimport type { ElementRef } from '@angular/core';\r\nimport {\r\n  formatObjToJsonStr,\r\n  ComponentEvent,\r\n  getComponentById,\r\n  BaseDynamicComponent,\r\n  CoreService,\r\n} from '@ngx-dynamic-components/core';\r\nimport type {\r\n  NGXDynamicComponent,\r\n  UIModel,\r\n} from '@ngx-dynamic-components/core';\r\nimport { debounceTime, map } from 'rxjs/operators';\r\nimport { Observable, fromEvent } from 'rxjs';\r\nimport { Ace, edit } from 'ace-builds';\r\nimport { jsPython, Interpreter } from 'jspython-interpreter';\r\n\r\n// eslint-disable-next-line no-shadow\r\nenum Layout {\r\n  horizontal = 'horizontal',\r\n  vertical = 'vertical',\r\n}\r\n\r\n@Component({\r\n  selector: 'dc-preview-editor',\r\n  templateUrl: './preview-editor.component.html',\r\n  styleUrls: ['./preview-editor.component.scss'],\r\n})\r\nexport class PreviewEditorComponent implements OnInit, AfterViewInit {\r\n  @Input() scripts: string;\r\n  @Input() initUiModel: UIModel | string;\r\n  @Input() initDataModel: any;\r\n  @Input() title: string;\r\n  @ViewChild('uiModelEl') uiModelEl: ElementRef<HTMLElement>;\r\n  @ViewChild('uiModelJSONEl') uiModelJSONEl: ElementRef<HTMLElement>;\r\n  @ViewChild('scriptsEl') scriptsEl: ElementRef<HTMLElement>;\r\n  @ViewChild('dataModelEl') dataModelEl: ElementRef<HTMLElement>;\r\n  @ViewChild('dynamicComponent') dynamicComponent: NGXDynamicComponent;\r\n  @HostBinding('style.flex') flex = 'initial';\r\n\r\n  dataModel: any;\r\n  dataModelCopy: any;\r\n  uiModel: string;\r\n\r\n  uiModelEditor: Ace.Editor;\r\n  uiModelJSONEditor: Ace.Editor;\r\n  dataModelEditor: Ace.Editor;\r\n  scriptsEditor: Ace.Editor;\r\n  interpreter: Interpreter;\r\n  editorOptions = {\r\n    language: 'json',\r\n    automaticLayout: true,\r\n  };\r\n  direction: Layout = Layout.horizontal;\r\n  codeSize = 50;\r\n\r\n  async eventHandlers({\r\n    eventName,\r\n    rootUIModel,\r\n    parameters = null,\r\n    sender,\r\n    eventHandler\r\n  }: ComponentEvent): Promise<void> {\r\n    if (!this.interpreter) {\r\n      return;\r\n    }\r\n\r\n    if (this.interpreter.hasFunction(this.scripts, eventHandler)) {\r\n      try {\r\n        if (parameters) {\r\n          parameters[parameters.argsKey] = parameters.argsValue;\r\n        }\r\n        const res = await this.interpreter.evaluate(\r\n          this.scripts,\r\n          {\r\n            rootUIModel,\r\n            dataModel: this.dataModel,\r\n            ...parameters,\r\n          },\r\n          eventHandler\r\n        );\r\n        sender?.setEventHandlerResult(eventName, res);\r\n      } catch (e) {\r\n        alert(`${e.message}`);\r\n      }\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.interpreter = jsPython();\r\n    this.interpreter.addFunction(\r\n      'getComponentById',\r\n      (uiModel: UIModel, id: string): BaseDynamicComponent =>\r\n        getComponentById(uiModel, id)\r\n    );\r\n\r\n    this.interpreter.addFunction('alert', (msg: string): void => alert(msg));\r\n\r\n    this.interpreter.assignGlobalContext({});\r\n    this.uiModel = this.initUiModel as string;\r\n    this.dataModel = this.initDataModel;\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.onDataModelChange(this.dynamicComponent.dataModel);\r\n    this.initUIPreview();\r\n  }\r\n\r\n  toggleSourceCode(): void {\r\n    this.codeSize = !this.codeSize ? 50 : 0;\r\n  }\r\n\r\n  toggleLayout(): void {\r\n    this.direction =\r\n      this.direction === Layout.horizontal\r\n        ? Layout.vertical\r\n        : Layout.horizontal;\r\n  }\r\n\r\n  get isHorizontal(): boolean {\r\n    return this.direction === Layout.horizontal;\r\n  }\r\n\r\n  onRendered(data: any): void {\r\n    console.log('rendered', data);\r\n  }\r\n\r\n  onDataModelChange(data: any): void {\r\n    if (data && this.dataModelEditor) {\r\n      this.dataModelEditor.setValue(formatObjToJsonStr(data));\r\n    } else if (this.uiModelEditor) {\r\n      this.uiModelEditor.setValue(formatObjToJsonStr(this.uiModel));\r\n    }\r\n  }\r\n\r\n  resize(): void {\r\n    this.scriptsEditor.resize();\r\n    this.uiModelEditor.resize();\r\n    this.uiModelJSONEditor.resize();\r\n    this.dataModelEditor.resize();\r\n  }\r\n\r\n  private initUIPreview(): void {\r\n    if (this.uiModelEl) {\r\n      this.uiModelJSONEditor = edit(this.uiModelJSONEl.nativeElement, {\r\n        mode: 'ace/mode/json',\r\n        autoScrollEditorIntoView: true,\r\n        tabSize: 2,\r\n        useSoftTabs: true,\r\n        readOnly: true,\r\n      });\r\n\r\n      this.setJSONEditor(this.initUiModel as string);\r\n\r\n      this.initEditor(\r\n        'uiModel',\r\n        this.uiModelEl,\r\n        this.initUiModel,\r\n        'ace/mode/xml'\r\n      ).pipe(\r\n        debounceTime(500)\r\n      ).subscribe((uiModel) => {\r\n        this.dynamicComponent.containerRef.clear();\r\n        this.setJSONEditor(uiModel);\r\n        this.refreshPreview(uiModel, this.dataModel);\r\n      });\r\n\r\n      this.initEditor(\r\n        'dataModel',\r\n        this.dataModelEl,\r\n        this.initDataModel\r\n      ).subscribe((dataModel) =>\r\n        this.refreshPreview(\r\n          this.uiModel,\r\n          dataModel ? JSON.parse(dataModel) : dataModel\r\n        )\r\n      );\r\n\r\n      this.initEditor(\r\n        'scripts',\r\n        this.scriptsEl,\r\n        this.scripts,\r\n        'ace/mode/python'\r\n      ).subscribe((sc) => (this.scripts = sc));\r\n    }\r\n  }\r\n\r\n  private setJSONEditor(uiModel: string): void {\r\n    const res = CoreService.parseXMLModel(uiModel);\r\n\r\n    this.uiModelJSONEditor.setValue(formatObjToJsonStr(res), -1);\r\n    this.uiModelJSONEditor.resize();\r\n  }\r\n\r\n  private refreshPreview(uiModel: string, dataModel: any): void {\r\n        this.uiModel = uiModel;\r\n        this.dataModelCopy = JSON.parse(JSON.stringify(dataModel));\r\n  }\r\n  // eslint-disable-next-line max-len\r\n  private initEditor(\r\n    name: string,\r\n    element: ElementRef,\r\n    value: UIModel<Record<string, unknown>> | string,\r\n    mode = 'ace/mode/json'\r\n  ): Observable<any> {\r\n    const editor = edit(element.nativeElement, {\r\n      mode,\r\n      autoScrollEditorIntoView: true,\r\n      value: formatObjToJsonStr(value),\r\n      tabSize: 2,\r\n      useSoftTabs: true,\r\n      indentedSoftWrap: true,\r\n    });\r\n\r\n    editor.setOptions({\r\n      enableBasicAutocompletion: true,\r\n      enableSnippets: false,\r\n      enableLiveAutocompletion: true,\r\n    });\r\n\r\n    this[`${name}Editor`] = editor;\r\n\r\n    return fromEvent(editor, 'change').pipe(map(() => editor.getValue()));\r\n  }\r\n}\r\n","<mat-card *ngIf=\"initUiModel\" class=\"h-100 preview-card d-flex flex-column\">\r\n  <mat-card-header>\r\n    <span class=\"flex-fill align-self-center\">{{title}}</span>\r\n    <button mat-icon-button *ngIf=\"codeSize\" (click)=\"toggleLayout()\"\r\n      [matTooltip]=\"(isHorizontal ? 'Vertical' : 'Horizontal') + ' layout'\">\r\n      <mat-icon>{{isHorizontal ? 'vertical_split' : 'horizontal_split'}}</mat-icon>\r\n    </button>\r\n    <button mat-icon-button matTooltip=\"Source code\" (click)=\"toggleSourceCode()\">\r\n      <mat-icon>code</mat-icon>\r\n    </button>\r\n  </mat-card-header>\r\n  <mat-card-content class=\"h-100\">\r\n    <as-split [useTransition]=\"true\" [direction]=\"direction\" unit=\"percent\" [gutterSize]=\"codeSize ? 11 : 0\">\r\n      <as-split-area #area0=\"asSplitArea\" class=\"d-flex\" [size]=\"codeSize\">\r\n        <mat-tab-group class=\"w-100 ui-model-tab\">\r\n          <mat-tab label=\"UI Model\">\r\n            <mat-tab-group class=\"w-100 h-100\" headerPosition=\"below\">\r\n              <mat-tab label=\"XML\">\r\n                <div #uiModelEl class=\"h-100\"></div>\r\n              </mat-tab>\r\n              <mat-tab label=\"JSON\">\r\n                <div #uiModelJSONEl class=\"h-100\"></div>\r\n              </mat-tab>\r\n            </mat-tab-group>\r\n          </mat-tab>\r\n          <mat-tab label=\"Scripts\">\r\n            <div #scriptsEl class=\"h-100\"></div>\r\n          </mat-tab>\r\n          <mat-tab label=\"Data Model\">\r\n            <div #dataModelEl class=\"h-100\"></div>\r\n          </mat-tab>\r\n        </mat-tab-group>\r\n      </as-split-area>\r\n      <as-split-area [size]=\"100 - codeSize\" #area1=\"asSplitArea\">\r\n        <div class=\"preview\">\r\n          <ngx-dynamic-component class=\"d-block\" *ngIf=\"uiModel\" #dynamicComponent\r\n            [xmlUIModel]='uiModel'\r\n            [dataModel]='dataModel'\r\n            (render)='onRendered($event)'\r\n            (changedDataModel)=\"onDataModelChange($event)\"\r\n            (eventHandlers)=\"eventHandlers($event)\"></ngx-dynamic-component>\r\n        </div>\r\n      </as-split-area>\r\n    </as-split>\r\n  </mat-card-content>\r\n</mat-card>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n  selector: 'dc-add-dialog',\r\n  template: `\r\n  <mat-list role=\"list\" class=\"components\" *ngFor=\"let cat of categories\">\r\n    <h3 class=\"mat-h3\">{{cat.name}}</h3>\r\n    <mat-list-item role=\"listitem\"\r\n      (click)=\"selectComponent(item)\" *ngFor=\"let item of cat.components\">\r\n      {{item.name}} - {{item.description}}\r\n    </mat-list-item>\r\n  </mat-list>\r\n  `,\r\n  styles: [`\r\n    :host {\r\n      min-width: 300px;\r\n      display: block;\r\n    }\r\n\r\n    mat-list h3 {\r\n      margin: 0;\r\n      text-decoration: underline;\r\n    }\r\n\r\n    .components mat-list-item {\r\n      height: auto;\r\n      cursor: pointer;\r\n    }\r\n  `]\r\n})\r\nexport class AddDialogComponent implements OnInit {\r\n\r\n  categories = [];\r\n\r\n  constructor(public dialogRef: MatDialogRef<AddDialogComponent>) { }\r\n\r\n  ngOnInit(): void {\r\n    this.categories = [];\r\n  }\r\n\r\n  selectComponent(item): void {\r\n    this.dialogRef.close(item.defaultModel || item.example.uiModel || {\r\n      type: `${item.packageName}:${item.name}`,\r\n      itemProperties: {},\r\n      containerProperties: {}\r\n    });\r\n  }\r\n}\r\n","import { Component, Input, HostListener, ViewChild, EventEmitter, Output, OnInit } from '@angular/core';\r\nimport { UIModelProperty, CoreService } from '@ngx-dynamic-components/core';\r\nimport type { ElementRef } from '@angular/core';\r\nimport type { MatButton } from '@angular/material/button';\r\nimport type { UIModel } from '@ngx-dynamic-components/core';\r\n\r\n@Component({\r\n  selector: 'dc-properties-editor',\r\n  template: `\r\n    <button mat-icon-button matTooltip=\"Edit properties\" (click)=\"showEditor = true\" #editBtn>\r\n      <mat-icon>edit</mat-icon>\r\n    </button>\r\n    <div class=\"editor-container\" #editorContainer fxLayout=\"column\" *ngIf=\"showEditor\" [ngClass]=\"positionClass\">\r\n      <mat-form-field *ngFor=\"let property of properties\">\r\n        <input matInput [placeholder]=\"property.name\" [value]=\"property.value\" (input)=\"updateProperty($event, property.name)\">\r\n      </mat-form-field>\r\n    </div>\r\n  `,\r\n  styles: [`\r\n    .editor-container {\r\n      position: absolute;\r\n      background: white;\r\n      top: 0;\r\n      left: 40px;\r\n      z-index: 3;\r\n      padding: 10px;\r\n      box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2),\r\n              0 8px 10px 1px rgba(0, 0, 0, 0.14),\r\n              0 3px 14px 2px rgba(0, 0, 0, 0.12);\r\n\r\n    }\r\n    .editor-container.left {\r\n      left: -200px;\r\n    }\r\n  `]\r\n})\r\nexport class PropertiesEditorComponent implements OnInit {\r\n  @Input()\r\n  uiModel: UIModel;\r\n\r\n  @ViewChild('editorContainer')\r\n  editorContainer: ElementRef;\r\n\r\n  @ViewChild('editBtn')\r\n  editBtn: MatButton;\r\n\r\n  @Output()\r\n  updatedProperty = new EventEmitter();\r\n\r\n  itemProperties: UIModelProperty[] = [];\r\n  properties = [];\r\n\r\n  showEditor = false;\r\n\r\n  get positionClass(): string {\r\n    // eslint-disable-next-line no-underscore-dangle\r\n    const btnPos = this.editBtn._elementRef.nativeElement.getBoundingClientRect().right;\r\n    const docWidth = document.body.offsetWidth;\r\n    return docWidth - btnPos < 200 ? 'left' : '';\r\n  }\r\n\r\n  @HostListener('document:click', ['$event.target'])\r\n  onClick(targetElement): void {\r\n    if (this.editorContainer) {\r\n      const clickedInside = this.editorContainer.nativeElement.contains(targetElement);\r\n      // eslint-disable-next-line no-underscore-dangle\r\n      if (!clickedInside && this.editBtn._elementRef.nativeElement.contains(targetElement)) {\r\n        // Clicked on button.\r\n        const itemProps = this.uiModel.itemProperties || {};\r\n        this.properties = this.itemProperties.map(({name}) => {\r\n          let value = itemProps[name];\r\n          if (value === undefined) {\r\n            value = '';\r\n          } else if (typeof value === 'object') {\r\n            value = JSON.stringify(value);\r\n          }\r\n          return {name, value};\r\n        });\r\n        this.showEditor = true;\r\n      } else if (!clickedInside) {\r\n        // Clicked outside.\r\n        this.showEditor = false;\r\n        this.updatedProperty.emit();\r\n      }\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.itemProperties = CoreService.getComponentProperties(this.uiModel.type);\r\n  }\r\n\r\n  updateProperty(evt, prop): void {\r\n    try {\r\n      // If property value is an object or an array.\r\n      this.uiModel.itemProperties[prop] = JSON.parse(evt.target.value);\r\n    } catch {\r\n      this.uiModel.itemProperties[prop] = evt.target.value;\r\n    }\r\n  }\r\n}\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport type { UIModel } from '@ngx-dynamic-components/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AddDialogComponent } from '../add-dialog/add-dialog.component';\r\n\r\n@Component({\r\n  selector: 'dc-control-editor',\r\n  template: `\r\n    <dc-properties-editor [uiModel]=\"uiModel\" (updatedProperty)=\"uiModelChanged.emit()\"></dc-properties-editor>\r\n    <button mat-icon-button [matTooltip]=\"getDragTooltip()\"\r\n     (mouseover)=\"onHover($event)\" (focus)=\"onHover($event)\" (mouseleave)=\"onMouseLeave($event)\" class=\"handle\">\r\n      <svg width=\"24px\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\r\n        <path d=\"M10 9h4V6h3l-5-5-5 5h3v3zm-1 1H6V7l-5 5 5 5v-3h3v-4zm14 2l-5-5v3h-3v4h3v3l5-5zm-9 3h-4v3H7l5 5 5-5h-3v-3z\">\r\n        </path>\r\n        <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\r\n      </svg>\r\n    </button>\r\n    <button mat-icon-button class=\"add-component\" matTooltip=\"Add component\" (click)=\"openAddDialog()\">\r\n      <mat-icon>add</mat-icon>\r\n    </button>\r\n    <button mat-icon-button matTooltip=\"Remove\" (click)=\"uiModelRemoved.emit()\">\r\n      <mat-icon>clear</mat-icon>\r\n    </button>\r\n  `,\r\n  styleUrls: ['./control-editor.component.scss']\r\n})\r\nexport class ControlEditorComponent {\r\n\r\n  @Input() uiModel: UIModel;\r\n  @Output() uiModelChanged = new EventEmitter();\r\n  @Output() uiModelRemoved = new EventEmitter();\r\n\r\n  constructor(private dialog: MatDialog) {}\r\n\r\n  openAddDialog(): void {\r\n    const dialogRef = this.dialog.open(AddDialogComponent);\r\n\r\n    dialogRef.afterClosed().subscribe(item => {\r\n      this.uiModel.children.push(item);\r\n      this.uiModelChanged.emit();\r\n    });\r\n  }\r\n\r\n  onHover(evt): void {\r\n    const dragEl = this.getParentDrag(evt.target as HTMLElement);\r\n    dragEl.classList.add('drag-selected');\r\n  }\r\n\r\n  onMouseLeave(evt: Event): void {\r\n    const dragEl = this.getParentDrag(evt.target as HTMLElement);\r\n    dragEl.classList.remove('drag-selected');\r\n  }\r\n\r\n  getDragTooltip(): string {\r\n    return this.uiModel.type === 'material:flex-container' ? 'Drag container' : 'Drag component';\r\n  }\r\n\r\n  private getParentDrag(el: HTMLElement): HTMLElement {\r\n    let dragEl = el;\r\n\r\n    while (!['item', 'row', 'col-sm'].some(c => Array.from(dragEl.classList).includes(c))) {\r\n      dragEl = dragEl.parentNode as HTMLElement;\r\n    }\r\n\r\n    return dragEl;\r\n  }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { AngularSplitModule } from 'angular-split';\r\n\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatListModule } from '@angular/material/list';\r\n\r\nimport { DynamicComponentsCoreModule } from '@ngx-dynamic-components/core';\r\nimport { DynamicComponentsBootstrapModule } from '@ngx-dynamic-components/bootstrap';\r\n\r\nimport { PreviewEditorComponent } from './components/preview-editor/preview-editor.component';\r\nimport { ControlEditorComponent } from './components/control-editor/control-editor.component';\r\nimport { PropertiesEditorComponent } from './components/properties-editor/properties-editor.component';\r\nimport { AddDialogComponent } from './components/add-dialog/add-dialog.component';\r\n\r\nexport const angularSplitModuleForRoot: ModuleWithProviders<AngularSplitModule> = AngularSplitModule.forRoot();\r\n\r\n@NgModule({\r\n  declarations: [\r\n    PreviewEditorComponent, ControlEditorComponent, PropertiesEditorComponent, AddDialogComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    DynamicComponentsCoreModule,\r\n    DynamicComponentsBootstrapModule,\r\n    MatToolbarModule,\r\n    MatButtonModule,\r\n    MatTabsModule,\r\n    MatDividerModule,\r\n    MatCardModule,\r\n    MatIconModule,\r\n    MatTooltipModule,\r\n    MatInputModule,\r\n    MatFormFieldModule,\r\n    MatDialogModule,\r\n    MatListModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    angularSplitModuleForRoot\r\n  ],\r\n  exports: [ PreviewEditorComponent ]\r\n})\r\nexport class ToolsModule { }\r\n","/*\r\n * Public API Surface of tools\r\n */\r\n\r\nexport * from './lib/tools.module';\r\nexport { PreviewEditorComponent } from './lib/components/preview-editor/preview-editor.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3","i6","i7","i1","i2","i4","i5","i5.PropertiesEditorComponent"],"mappings":"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"}