UNPKG

@ngx-dynamic-components/tools

Version:

@ngx-dynamic-components/tools is Angular 7+ library what contains a core interfaces to build a configuration driven web pages.

1 lines 37 kB
{"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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"}