{"version":3,"file":"ng6-file-man.mjs","sources":["../../ng6-file-man/projects/file-manager/src/file-manager/components/functions/loading-overlay/loading-overlay.component.ts","../../ng6-file-man/projects/file-manager/src/file-manager/components/functions/loading-overlay/loading-overlay.component.html","../../ng6-file-man/projects/file-manager/src/file-manager/enums/download-mode.enum.ts","../../ng6-file-man/projects/file-manager/src/file-manager/components/side-view/side-view.component.ts","../../ng6-file-man/projects/file-manager/src/file-manager/components/side-view/side-view.component.html","../../ng6-file-man/projects/file-manager/src/file-manager/services/file-manager-store.service.ts","../../ng6-file-man/projects/file-manager/src/file-manager/services/node.service.ts","../../ng6-file-man/projects/file-manager/src/file-manager/services/node-clicked.service.ts","../../ng6-file-man/projects/file-manager/src/file-manager/components/functions/node/node.component.ts","../../ng6-file-man/projects/file-manager/src/file-manager/components/functions/node/node.component.html","../../ng6-file-man/projects/file-manager/src/file-manager/components/folder-content/folder-content.component.ts","../../ng6-file-man/projects/file-manager/src/file-manager/components/folder-content/folder-content.component.html","../../ng6-file-man/projects/file-manager/src/file-manager/components/tree/node-lister/node-lister.component.ts","../../ng6-file-man/projects/file-manager/src/file-manager/components/tree/node-lister/node-lister.component.html","../../ng6-file-man/projects/file-manager/src/file-manager/components/tree/tree.component.ts","../../ng6-file-man/projects/file-manager/src/file-manager/components/tree/tree.component.html","../../ng6-file-man/projects/file-manager/src/file-manager/components/nav-bar/nav-bar.component.ts","../../ng6-file-man/projects/file-manager/src/file-manager/components/nav-bar/nav-bar.component.html","../../ng6-file-man/projects/file-manager/src/file-manager/components/functions/upload/new-folder/new-folder.component.ts","../../ng6-file-man/projects/file-manager/src/file-manager/components/functions/upload/new-folder/new-folder.component.html","../../ng6-file-man/projects/file-manager/src/file-manager/components/functions/upload/upload.component.ts","../../ng6-file-man/projects/file-manager/src/file-manager/components/functions/upload/upload.component.html","../../ng6-file-man/projects/file-manager/src/file-manager/components/navigation/navigation.component.ts","../../ng6-file-man/projects/file-manager/src/file-manager/components/navigation/navigation.component.html","../../ng6-file-man/projects/file-manager/src/file-manager/file-manager.component.ts","../../ng6-file-man/projects/file-manager/src/file-manager/file-manager.component.html","../../ng6-file-man/projects/file-manager/src/file-manager/pipes/map-to-iterable.pipe.ts","../../ng6-file-man/projects/file-manager/src/file-manager/pipes/file-size.pipe.ts","../../ng6-file-man/projects/file-manager/src/file-manager/file-manager.module.ts","../../ng6-file-man/projects/file-manager/src/file-manager/models/tree.model.ts","../../ng6-file-man/projects/file-manager/src/public_api.ts","../../ng6-file-man/projects/file-manager/src/ng6-file-man.ts"],"sourcesContent":["import {Component, Input, OnInit, TemplateRef} from '@angular/core';\nimport {timer} from 'rxjs';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Component({\n  selector: 'app-loading-overlay',\n  templateUrl: './loading-overlay.component.html',\n  styleUrls: ['./loading-overlay.component.scss']\n})\nexport class LoadingOverlayComponent implements OnInit {\n  @Input() loadingOverlayTemplate: TemplateRef<any>;\n  timeoutMessage: any;\n\n  constructor(private translateService: TranslateService) {\n\n  }\n\n\n  // todo unsubscribe from 'list' event - now we are only dismissing this component\n  ngOnInit() {\n    timer(2000).subscribe(() => {\n      this.timeoutMessage = this.translateService.instant('filemanager.loading_troubles');\n    });\n  }\n}\n","<ng-container\n  [ngTemplateOutletContext]=\"{$implicit: timeoutMessage}\"\n  [ngTemplateOutlet]=\"loadingOverlayTemplate\">\n</ng-container>\n","export enum DownloadModeEnum {\n  DOWNLOAD_DISABLED, DOWNLOAD_FILES, DOWNLOAD_ALL\n}\n","import {Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {NodeInterface} from '../../interfaces/node.interface';\nimport {DownloadModeEnum} from '../../enums/download-mode.enum';\n\n@Component({\n  selector: 'app-side-view',\n  templateUrl: './side-view.component.html',\n  styleUrls: ['./side-view.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class SideViewComponent implements OnInit {\n  @Input() sideViewTemplate: TemplateRef<any>;\n\n  @Input() node: NodeInterface;\n  @Input() allowRename = false;\n  @Input() allowFolderDownload: DownloadModeEnum = DownloadModeEnum.DOWNLOAD_DISABLED;\n\n  @Output() clickEvent = new EventEmitter();\n\n  constructor() {\n  }\n\n  ngOnInit() {\n  }\n\n  onClick(event: any, type: string) {\n    this.clickEvent.emit({type: type, event: event, node: this.node});\n  }\n\n  isDisabled() {\n    if (this.allowFolderDownload === DownloadModeEnum.DOWNLOAD_DISABLED) {\n      return true;\n    } else if (this.allowFolderDownload === DownloadModeEnum.DOWNLOAD_FILES && this.node.isFolder) {\n      return true;\n    }\n\n    return false;\n  }\n\n}\n","<div class=\"side-view\" *ngIf=\"node\">\n  <div class=\"side-view-preview\">\n    <i (click)=\"onClick($event, 'closeSideView')\" class=\"fas fa-times side-view-close\"></i>\n\n    <div class=\"side-view-preview-title\">{{node.name}}</div>\n\n    <div class=\"side-view-preview-content\">\n      <ng-container\n        [ngTemplateOutletContext]=\"{$implicit: node}\"\n        [ngTemplateOutlet]=\"sideViewTemplate\">\n      </ng-container>\n    </div>\n\n    <div class=\"side-view-buttons\">\n      <button (click)=\"onClick($event, 'download')\" class=\"button\"\n              [disabled]=\"isDisabled()\">\n        {{'filemanager.download' | translate }}\n      </button>\n      <button *ngIf=\"allowRename\" (click)=\"onClick($event, 'renameConfirm')\" class=\"button\">{{'filemanager.rename' | translate }}</button>\n      <button (click)=\"onClick($event, 'removeAsk')\" class=\"button\">{{'filemanager.delete' | translate }}</button>\n    </div>\n  </div>\n</div>\n","import {Injectable, isDevMode} from '@angular/core';\nimport {AppStore} from '../reducers/reducer.factory';\nimport {Observable, Subject} from 'rxjs';\nimport {NodeInterface} from '../interfaces/node.interface';\nimport {StateInterface} from '../interfaces/state.interface';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\n\nconst initialState: StateInterface = {\n  path: '',\n  isLoading: true,\n  selectedNode: null\n};\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FileManagerStoreService {\n  private state: AppStore;\n\n  private sub: Subject<AppStore> = new Subject<AppStore>();\n\n  constructor() {\n    this.state = {\n      fileManagerState: initialState\n    };\n\n    // @ts-ignore\n    window.getInfo = () => this.state;\n  }\n\n  dispatch(param: Actions) {\n    Object.assign(this.state.fileManagerState, stateReducer(this.state.fileManagerState, param));\n    this.sub.next(this.state);\n    // if (isDevMode()) console.warn('[FileManagerStoreService] dispatch', param, JSON.parse(JSON.stringify(this.state)));\n  }\n\n  getState<R>(mapFn: (value: AppStore, index: number) => R): Observable<R> {\n    if (typeof mapFn !== 'function') {\n      throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n    }\n\n    return this.sub.asObservable()\n      .pipe(map(mapFn))\n      .pipe(distinctUntilChanged());\n  }\n}\n\n\n// REDUCERS\nexport function stateReducer(state: StateInterface = initialState, action: Actions): StateInterface {\n  switch (action.type) {\n    case SET_PATH :\n      if (state.path === action.payload) {\n        return state;\n      }\n      return {...state, path: action.payload, isLoading: true};\n    case SET_LOADING_STATE :\n      return {...state, isLoading: action.payload};\n    case SET_SELECTED_NODE :\n      return {...state, selectedNode: action.payload};\n    default:\n      return initialState;\n  }\n}\n\n\n// ACTIONS\nexport interface ActionInterface {\n  readonly type: string\n  payload?: any;\n}\n\nexport const SET_PATH = 'SET_PATH';\nexport const SET_LOADING_STATE = 'SET_LOADING_STATE';\nexport const SET_SELECTED_NODE = 'SET_SELECTED_NODE';\n\nexport class SetPath implements ActionInterface {\n  readonly type = SET_PATH;\n  payload: string;\n}\n\nexport class SetLoadingState implements ActionInterface {\n  readonly type = SET_LOADING_STATE;\n  payload: boolean;\n}\n\nexport class SetSelectedNode implements ActionInterface {\n  readonly type = SET_SELECTED_NODE;\n  payload: NodeInterface;\n}\n\nexport type Actions = SetPath | SetLoadingState | SetSelectedNode;\n","import {Injectable} from '@angular/core';\nimport {NodeInterface} from '../interfaces/node.interface';\nimport {Observable} from 'rxjs';\nimport {TreeModel} from '../models/tree.model';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport {FileManagerStoreService, SET_LOADING_STATE, SET_PATH, SET_SELECTED_NODE} from './file-manager-store.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NodeService {\n  public tree: TreeModel;\n  private _path: string;\n\n  constructor(private http: HttpClient, private store: FileManagerStoreService) {\n  }\n\n  // todo ask server to get parent structure\n  public startManagerAt(path: string) {\n    this.currentPath = path;\n    this.refreshCurrentPath();\n  }\n\n  public refreshCurrentPath() {\n    this.findNodeByPath(this.currentPath).children = {};\n    this.getNodes(this.currentPath).then(() => {\n      this.store.dispatch({type: SET_SELECTED_NODE, payload: this.tree.nodes});\n      this.store.dispatch({type: SET_PATH, payload: this.currentPath});\n    });\n  }\n\n  getNodes(path: string) {\n    return new Promise((resolve => {\n      this.parseNodes(path).subscribe((data: Array<NodeInterface>) => {\n        for (let i = 0; i < data.length; i++) {\n          const parentPath = this.getParentPath(data[i].pathToNode);\n          this.findNodeByPath(parentPath).children[data[i].name] = data[i];\n        }\n\n        resolve(null);\n      });\n    }));\n  }\n\n  private getParentPath(path: string): string {\n    let parentPath = path.split('/');\n    parentPath = parentPath.slice(0, parentPath.length - 1);\n    return parentPath.join('/');\n  }\n\n  private parseNodes(path: string): Observable<NodeInterface[]> {\n    return new Observable(observer => {\n      this.getNodesFromServer(path).subscribe((data: Array<any>) => {\n        observer.next(data.map(node => this.createNode(path, node)));\n        this.store.dispatch({type: SET_LOADING_STATE, payload: false});\n      });\n    });\n  }\n\n  private createNode(path, node): NodeInterface {\n    if (node.path[0] !== '/') {\n      console.warn('[Node Service] Server should return initial path with \"/\"');\n      node.path = '/' + node.path;\n    }\n\n    const ids = node.path.split('/');\n    if (ids.length > 2 && ids[ids.length - 1] === '') {\n      ids.splice(-1, 1);\n      node.path = ids.join('/');\n    }\n\n    const cachedNode = this.findNodeByPath(node.path);\n\n    return <NodeInterface>{\n      id: node.id,\n      isFolder: node.dir,\n      isExpanded: cachedNode ? cachedNode.isExpanded : false,\n      pathToNode: node.path,\n      pathToParent: this.getParentPath(node.path),\n      name: node.name || node.id,\n      children: cachedNode ? cachedNode.children : {}\n    };\n  }\n\n  private getNodesFromServer = (path: string) => {\n    let folderId: any = this.findNodeByPath(path).id;\n    folderId = folderId === 0 ? '' : folderId;\n\n    return this.http.get(\n      this.tree.config.baseURL + this.tree.config.api.listFile,\n      {params: new HttpParams().set('parentPath', folderId)}\n    );\n  };\n\n  public findNodeByPath(nodePath: string): NodeInterface {\n    const ids = nodePath.split('/');\n    ids.splice(0, 1);\n\n    return ids.length === 0 ? this.tree.nodes : ids.reduce((value, index) => value['children'][index], this.tree.nodes);\n  }\n\n  public findNodeById(id: number): NodeInterface {\n    const result = this.findNodeByIdHelper(id);\n\n    if (result === null) {\n      console.warn('[Node Service] Cannot find node by id. Id not existing or not fetched. Returning root.');\n      return this.tree.nodes;\n    }\n\n    return result;\n  }\n\n  public findNodeByIdHelper(id: number, node: NodeInterface = this.tree.nodes): NodeInterface {\n    if (node.id === id) {\n      return node;\n    }\n\n    const keys = Object.keys(node.children);\n\n    for (let i = 0; i < keys.length; i++) {\n      if (typeof node.children[keys[i]] === 'object') {\n        const obj = this.findNodeByIdHelper(id, node.children[keys[i]]);\n        if (obj != null) {\n          return obj;\n        }\n      }\n    }\n\n    return null;\n  }\n\n  public foldRecursively(node: NodeInterface) {\n    // console.log('folding ', node);\n    const children = node.children;\n\n    Object.keys(children).map((child: string) => {\n      if (!children.hasOwnProperty(child) || !children[child].isExpanded) {\n        return null;\n      }\n\n      this.foldRecursively(children[child]);\n      //todo put this getElById into one func (curr inside node.component.ts + fm.component.ts) - this won't be maintainable\n      document.getElementById('tree_' + children[child].pathToNode).classList.add('deselected');\n      children[child].isExpanded = false;\n    });\n  }\n\n  public foldAll() {\n    this.foldRecursively(this.tree.nodes);\n  }\n\n  get currentPath(): string {\n    return this._path;\n  }\n\n  set currentPath(value: string) {\n    this._path = value;\n  }\n}\n","import {Injectable} from '@angular/core';\nimport {NodeInterface} from '../interfaces/node.interface';\nimport {NodeService} from './node.service';\nimport {TreeModel} from '../models/tree.model';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {NgxSmartModalService} from 'ngx-smart-modal';\nimport {first} from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NodeClickedService {\n  public tree: TreeModel;\n\n  constructor(\n    public ngxSmartModalService: NgxSmartModalService,\n    private nodeService: NodeService,\n    private http: HttpClient\n  ) {\n  }\n\n  public startDownload(node: NodeInterface): void {\n    const parameters = new HttpParams().append('path', node.id + '');\n    this.reachServer('download', this.tree.config.api.downloadFile, parameters);\n  }\n\n  public initDelete(node: NodeInterface): void {\n    this.sideEffectHelper(\n      'Delete',\n      new HttpParams().append('path', node.id + ''),\n      'delete',\n      this.tree.config.api.deleteFile,\n      () => this.successWithSideViewClose()\n    );\n  }\n\n  public searchForString(input: string): void {\n    this.sideEffectHelper(\n      'Search',\n      new HttpParams().append('query', input),\n      'get',\n      this.tree.config.api.searchFiles,\n      (res) => this.searchSuccess(input, res)\n    );\n  }\n\n  public createFolder(currentParent: number, newDirName: string) {\n    this.sideEffectHelper(\n      'Create Folder',\n      (() => {\n        let httpParams = new HttpParams().append('dirName', newDirName);\n        if (currentParent !== 0) {\n          httpParams = httpParams.append('parentPath', currentParent + '');\n        }\n\n        console.log(currentParent, httpParams.get('dirName'), httpParams.get('parentPath'));\n        return httpParams;\n      })(),\n      'post',\n      this.tree.config.api.createFolder\n    );\n  }\n\n  public rename(id: number, newName: string) {\n    this.sideEffectHelper(\n      'Rename',\n      new HttpParams().append('path', id + '').append('newName', newName),\n      'post',\n      this.tree.config.api.renameFile,\n      () => this.successWithSideViewClose()\n    );\n  }\n\n  private sideEffectHelper(name: string, parameters: HttpParams, httpMethod: string, apiURL: string,\n                           successMethod = (a) => this.actionSuccess(a),\n                           failMethod = (a, b) => this.actionFailed(a, b)\n  ) {\n    this.ngxSmartModalService.getModal('waitModal').open();\n\n    this.reachServer(httpMethod, apiURL, parameters)\n      .subscribe(\n        (a) => successMethod(a),\n        (err) => failMethod(name, err)\n      );\n  }\n\n  private reachServer(method: string, apiUrl: string, parameters: HttpParams, data: any = {}): Observable<Object> {\n    switch (method.toLowerCase()) {\n      case 'get':\n        return this.http.get(this.tree.config.baseURL + apiUrl, {params: parameters});\n      case 'post':\n        return this.http.post(this.tree.config.baseURL + apiUrl, data, {params: parameters});\n      case 'delete':\n        return this.http.delete(this.tree.config.baseURL + apiUrl, {params: parameters});\n      case 'download':\n        window.open(this.tree.config.baseURL + apiUrl + '?path=' + parameters.get('path'), '_blank');\n        return null;\n      default:\n        console.warn('[NodeClickedService] Incorrect params for this side-effect');\n        return null;\n    }\n  }\n\n  private successWithSideViewClose() {\n    this.actionSuccess();\n    document.getElementById('side-view').classList.remove('selected');\n  }\n\n  private searchSuccess(input: string, data: any) {\n    const obj = {\n      searchString: input,\n      response: data\n    };\n\n    this.actionSuccess();\n\n    this.ngxSmartModalService.setModalData(obj, 'searchModal', true);\n    this.ngxSmartModalService.getModal('searchModal').open();\n  }\n\n  private actionSuccess(response: string = '') {\n    document.body.classList.remove('dialog-open');\n\n    this.nodeService.refreshCurrentPath();\n\n    const modal = this.ngxSmartModalService.getModal('waitModal');\n    modal.onOpenFinished.pipe(first()).subscribe(() => modal.close());\n    modal.close();\n  }\n\n  private actionFailed(name: string, error: any) {\n    document.body.classList.remove('dialog-open');\n\n    this.ngxSmartModalService.getModal('waitModal').close();\n    this.ngxSmartModalService.getModal('errorModal').open();\n    console.warn('[NodeClickedService] Action \"' + name + '\" failed', error);\n  }\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {NodeInterface} from '../../../interfaces/node.interface';\n\nimport {NodeService} from '../../../services/node.service';\nimport {NodeClickedService} from '../../../services/node-clicked.service';\nimport {FileManagerStoreService, SET_PATH, SET_SELECTED_NODE} from '../../../services/file-manager-store.service';\nimport {DownloadModeEnum} from '../../../enums/download-mode.enum';\n\n@Component({\n  selector: 'app-node',\n  templateUrl: './node.component.html',\n  styleUrls: ['./node.component.scss']\n})\nexport class NodeComponent implements OnInit {\n  @Input() node: NodeInterface;\n  isSingleClick = true;\n  showFolderOptions = false;\n  openFolderOnDoubleClick = true;\n\n  constructor(\n    private store: FileManagerStoreService,\n    private nodeService: NodeService,\n    private nodeClickedService: NodeClickedService\n  ) {\n    this.openFolderOnDoubleClick = this.nodeService.tree?.config?.options?.openFolderOnDoubleClick;\n    this.showFolderOptions = this.nodeService.tree?.config?.options?.showFolderOptions;\n  }\n\n  public method1CallForClick(event: MouseEvent) {\n    if (this.node.isFolder && !this.openFolderOnDoubleClick) {\n      this.method2CallForDblClick(event);\n      return;\n    }\n    event.preventDefault();\n\n    this.isSingleClick = true;\n    setTimeout(() => {\n      if (this.isSingleClick) {\n        this.showMenu();\n      }\n    }, 200);\n  }\n\n  // todo event.preventDefault for double click\n  public method2CallForDblClick(event: any) {\n    event.preventDefault();\n\n    this.isSingleClick = false;\n    this.open();\n  }\n\n  ngOnInit() {\n  }\n\n  private open() {\n    if (!this.node.isFolder) {\n      if (this.nodeService?.tree?.config?.options?.allowFolderDownload === DownloadModeEnum.DOWNLOAD_DISABLED) {\n        this.isSingleClick = true;\n        this.showMenu();\n        return;\n      }\n\n      this.nodeClickedService.startDownload(this.node);\n      return;\n    }\n\n    if (this.node.stayOpen) {\n      if (this.node.name == 'root') {\n        this.nodeService.foldAll();\n      }\n\n      this.store.dispatch({type: SET_PATH, payload: this.node.pathToNode});\n      return;\n    }\n\n    this.toggleNodeExpanded();\n\n    if (this.node.isExpanded) {\n      this.store.dispatch({type: SET_PATH, payload: this.node.pathToNode});\n    }\n\n    this.setNodeSelectedState();\n  }\n\n  public showMenu() {\n    this.store.dispatch({type: SET_SELECTED_NODE, payload: this.node});\n  }\n\n  private toggleNodeExpanded() {\n    this.node.isExpanded = !this.node.isExpanded;\n  }\n\n  private setNodeSelectedState() {\n    if (!this.node.isExpanded) {\n      document.getElementById('tree_' + this.node.pathToNode).classList.add('deselected');\n\n      this.nodeService.foldRecursively(this.node);\n\n      this.store.dispatch({type: SET_PATH, payload: this.node.pathToParent});\n    } else {\n      document.getElementById('tree_' + this.node.pathToNode).classList.remove('deselected');\n    }\n  }\n}\n","<div class=\"node-container\">\n  <div class=\"node-option\" *ngIf=\"showFolderOptions && !this.node?.isExpanded && this.node.isFolder\">\n    <i class=\"fas fa-1x fa-ellipsis-v\" (click)=\"showMenu()\"></i>\n  </div>\n  <div #customTemplate (dblclick)=\"method2CallForDblClick($event)\" (click)=\"method1CallForClick($event)\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","import {Component, EventEmitter, Input, OnInit, Output, TemplateRef} from '@angular/core';\nimport {NodeService} from '../../services/node.service';\nimport {NodeInterface} from '../../interfaces/node.interface';\nimport {FileManagerStoreService} from '../../services/file-manager-store.service';\n\n@Component({\n  selector: 'app-folder-content',\n  templateUrl: './folder-content.component.html',\n  styleUrls: ['./folder-content.component.scss']\n})\nexport class FolderContentComponent implements OnInit {\n  @Input() folderContentTemplate: TemplateRef<any>;\n  @Input() folderContentBackTemplate: TemplateRef<any>;\n  @Input() folderContentNewTemplate: TemplateRef<any>;\n\n  @Output() openUploadDialog = new EventEmitter();\n\n  nodes: NodeInterface;\n  obj = Object;\n\n  constructor(\n    private nodeService: NodeService,\n    private store: FileManagerStoreService\n  ) {\n  }\n\n  ngOnInit() {\n    this.nodes = this.nodeService.tree.nodes;\n\n    this.store\n      .getState(state => state.fileManagerState.path)\n      .subscribe((path: string) => {\n        this.nodes = this.nodeService.findNodeByPath(path);\n      });\n  }\n\n  newClickedAction() {\n    this.openUploadDialog.emit(true);\n  }\n}\n","<div class=\"item-holder\" *ngIf=\"nodes\">\n  <ng-container *ngIf=\"nodes.id !== 0\">\n    <app-node [node]=nodes id=\"{{nodes.pathToNode}}\">\n      <ng-container [ngTemplateOutletContext]=\"{$implicit: nodes}\"\n                    [ngTemplateOutlet]=\"folderContentBackTemplate\">\n      </ng-container>\n    </app-node>\n  </ng-container>\n\n  <ng-container *ngFor=\"let node of obj.keys(nodes.children)\">\n    <app-node [node]=\"nodes.children[node]\"\n              id=\"fc_{{nodes.children[node].pathToNode}}\">\n      <ng-container [ngTemplateOutletContext]=\"{$implicit: nodes.children[node]}\"\n                    [ngTemplateOutlet]=\"folderContentTemplate\">\n      </ng-container>\n    </app-node>\n  </ng-container>\n\n  <div class=\"new\" (click)=\"newClickedAction()\">\n    <ng-container [ngTemplateOutlet]=\"folderContentNewTemplate\"></ng-container>\n  </div>\n</div>\n","import {Component, ContentChild, Input, OnInit, TemplateRef} from '@angular/core';\nimport {NodeInterface} from '../../../interfaces/node.interface';\n\n@Component({\n  selector: 'app-node-lister',\n  templateUrl: './node-lister.component.html',\n  styleUrls: ['./node-lister.component.scss']\n})\nexport class NodeListerComponent implements OnInit {\n  @ContentChild(TemplateRef, {static: false}) templateRef: TemplateRef<any>;\n  @Input() nodes: NodeInterface;\n  @Input() showFiles: boolean;\n\n  obj = Object;\n\n  constructor() {\n  }\n\n  ngOnInit() {\n  }\n}\n","<ul class=\"node-lister-flist\">\n  <!--In order to avoid having to create that extra div, we can instead use ng-container directive-->\n  <ng-container *ngFor=\"let node of obj.keys(nodes)\">\n    <li class=\"node-lister-list-item\" *ngIf=\"nodes[node].isFolder || showFiles\">\n\n      <app-node class=\"node-lister-app-node\" [node]=\"nodes[node]\" id=\"tree_{{nodes[node].isRoot ? 'root' : nodes[node].pathToNode}}\">\n        <ng-container [ngTemplateOutletContext]=\"{$implicit: (nodes[node])}\"\n                      [ngTemplateOutlet]=\"templateRef\">\n        </ng-container>\n      </app-node>\n\n      <app-node-lister class=\"node-lister\" *ngIf=\"obj.keys(nodes[node].children).length > 0\"\n                       [showFiles]=\"showFiles\" [nodes]=\"nodes[node].children\">\n        <ng-template let-nodes>\n          <ng-container [ngTemplateOutletContext]=\"{$implicit: (nodes)}\"\n                        [ngTemplateOutlet]=\"templateRef\">\n          </ng-container>\n        </ng-template>\n      </app-node-lister>\n    </li>\n  </ng-container>\n</ul>\n","import {AfterViewInit, Component, ContentChild, Input, OnInit, TemplateRef} from '@angular/core';\nimport {NodeInterface} from '../../interfaces/node.interface';\nimport {TreeModel} from '../../models/tree.model';\nimport {NodeService} from '../../services/node.service';\nimport {first} from 'rxjs/operators';\nimport {FileManagerStoreService, SET_SELECTED_NODE} from '../../services/file-manager-store.service';\n\n@Component({\n  selector: 'app-tree',\n  templateUrl: './tree.component.html',\n  styleUrls: ['./tree.component.scss']\n})\nexport class TreeComponent implements AfterViewInit, OnInit {\n  @ContentChild(TemplateRef, {static: false}) templateRef: TemplateRef<any>;\n\n  @Input() treeModel: TreeModel;\n\n  nodes: NodeInterface;\n  currentTreeLevel = '';\n\n  constructor(\n    private nodeService: NodeService,\n    private store: FileManagerStoreService\n  ) {\n  }\n\n  ngOnInit() {\n    this.nodes = this.treeModel.nodes;\n\n    //todo move this store to proper place\n    this.store\n      .getState(state => state.fileManagerState.path)\n      .subscribe((path: string) => {\n        this.nodeService.getNodes(path);\n\n        this.currentTreeLevel = this.treeModel.currentPath;\n\n        return this.treeModel.currentPath = path;\n      });\n  }\n\n  ngAfterViewInit() {\n    this.store\n      .getState(state => state.fileManagerState.path)\n      .pipe(first())\n      .subscribe((path: string) => {\n        const nodes = this.nodeService.findNodeByPath(path);\n        this.store.dispatch({type: SET_SELECTED_NODE, payload: nodes});\n      });\n  }\n}\n","<app-node-lister [showFiles]=\"treeModel.config.options.showFilesInsideTree\"\n                 [nodes]=\"{children: nodes}\">\n  <ng-template let-nodes>\n    <ng-container [ngTemplateOutletContext]=\"{$implicit: nodes}\" [ngTemplateOutlet]=\"templateRef\"></ng-container>\n  </ng-template>\n</app-node-lister>\n","import {Component, OnInit} from '@angular/core';\nimport {NodeService} from '../../services/node.service';\nimport {FileManagerStoreService, SET_PATH} from '../../services/file-manager-store.service';\n\n@Component({\n  selector: 'app-nav-bar',\n  templateUrl: './nav-bar.component.html',\n  styleUrls: ['./nav-bar.component.scss']\n})\nexport class NavBarComponent implements OnInit {\n  currentPath: string[];\n\n  constructor(\n    private store: FileManagerStoreService,\n    private nodeService: NodeService\n  ) {\n  }\n\n  ngOnInit() {\n    this.store\n      .getState(state => state.fileManagerState.path)\n      .subscribe((data: string) => {\n        this.nodeService.currentPath = data;\n        this.currentPath = data.split('/');\n      });\n  }\n\n  onClick(path: string[], index: number) {\n    const newPath = path.slice(0, index + 1).join('/');\n    this.store.dispatch({type: SET_PATH, payload: newPath});\n  }\n\n}\n","<div>\n  >> <span *ngFor=\"let to of currentPath; let i = index\">\n  <a class=\"link\" (click)=\"onClick(currentPath, i)\">\n    <div *ngIf=\"to === '' || to === 'root'; then icon else name\"></div>\n    <ng-template #icon><i class=\"fas fa-home\"></i></ng-template>\n    <ng-template #name>{{to}}</ng-template>\n  </a> /\n  </span>\n</div>\n","import {Component, ElementRef, EventEmitter, OnInit, Output, ViewChild} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Component({\n  selector: 'app-new-folder',\n  templateUrl: './new-folder.component.html',\n  styleUrls: ['./new-folder.component.scss']\n})\nexport class NewFolderComponent implements OnInit {\n  @ViewChild('uploadFolder') uploadFolder: ElementRef;\n  @Output() buttonClicked = new EventEmitter();\n\n  // buttonText: string;\n  inputValue = '';\n\n  constructor(private translateService: TranslateService) {\n    // this.buttonText = this.translateService.instant('filemanager.close');\n  }\n\n  ngOnInit() {\n  }\n\n  onClick() {\n    const el: HTMLElement = (this.uploadFolder.nativeElement as HTMLElement);\n    // @ts-ignore\n    this.buttonClicked.emit(el.value);\n  }\n\n  onInputChange(event: any) {\n    this.inputValue = event.target.value;\n    // if (this.inputValue.length > 0) {\n    //   this.buttonText = this.translateService.instant('filemanager.confirm').toString();\n    // } else {\n    //   this.buttonText = this.translateService.instant('filemanager.close').toString();\n    // }\n  }\n}\n","<div class=\"new-folder-container\">\n  <div class=\"new-folder-child\">\n    <h3 class=\"new-folder-description\">{{'filemanager.type_new_folder_name' | translate}}</h3>\n    <div class=\"new-folder-input-container\">\n      <input #uploadFolder placeholder=\"{{'filemanager.folder_name' | translate}}\" (keyup)=\"onInputChange($event)\"\n             (keyup.enter)=\"onClick()\" type=\"text\" class=\"new-folder-input\"/>\n      <button [disabled]=\"this.inputValue.length <= 0\" class=\"button new-folder-send\" (click)=\"onClick()\">{{'filemanager.confirm' | translate}}</button>\n    </div>\n  </div>\n</div>\n\n","import {AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation} from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport {FineUploader} from 'fine-uploader';\nimport {NodeService} from '../../../services/node.service';\n\n@Component({\n  selector: 'app-upload',\n  templateUrl: './upload.component.html',\n  styleUrls: ['./upload.component.scss', './fine-uploader/fine-uploader.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class UploadComponent implements OnInit, AfterViewInit {\n  @Input() openDialog;\n  @Input() whiteList;\n\n  @Output() closeDialog = new EventEmitter();\n  @Output() createDir = new EventEmitter();\n\n  uploader: FineUploader;\n  newFolder = false;\n  counter = 0;\n  showProgressBar = false;\n\n  constructor(private http: HttpClient,\n              private nodeService: NodeService) {\n  }\n\n  ngAfterViewInit() {\n    const fileUploadConfig = {\n      debug: false,\n      autoUpload: false,\n      maxConnections: 1, // todo configurable\n      element: document.getElementById('fine-uploader'),\n      template: document.getElementById('fine-uploader-template'),\n      request: {\n        endpoint: this.nodeService.tree.config.baseURL + this.nodeService.tree.config.api.uploadFile,\n        // forceMultipart: false,\n        paramsInBody: false,\n        params: {\n          parentPath: this.getCurrentPath\n        }\n      },\n      validation: {\n        allowedExtensions:  this.whiteList ?? [],\n      },\n      retry: {\n        enableAuto: false\n      },\n      callbacks: {\n        onSubmitted: () => this.counter++,\n        onCancel: () => {\n          this.counter < 0 ? console.warn('wtf?') : this.counter--;\n        },\n        onAllComplete: (succ: any, fail: any) => {\n          if (succ.length > 0) {\n            this.counter = 0;\n            this.nodeService.refreshCurrentPath();\n          }\n        }\n      }\n    };\n\n    this.uploader = new FineUploader(fileUploadConfig);\n  }\n\n  ngOnInit() {\n  }\n\n  get getCurrentPath() {\n    const parentPath = this.nodeService.findNodeByPath(this.nodeService.currentPath).id;\n    return parentPath === 0 ? '' : parentPath;\n  }\n\n  uploadFiles() {\n    this.uploader.uploadStoredFiles();\n    this.showProgressBar = true;\n  }\n\n  createNewFolder(input?: string) {\n    if (!this.newFolder) {\n      this.newFolder = true;\n    } else {\n      this.newFolder = false;\n      if (input?.length > 0) {\n        this.createDir.emit(input);\n        this.newClickedAction();\n      }\n    }\n  }\n\n  newClickedAction() {\n    this.uploader.cancelAll();\n    this.closeDialog.emit();\n  }\n}\n","<div class=\"backdrop\" (click)=\"newClickedAction()\"></div>\n\n<div class=\"upload-background\">\n  <div class=\"close\">\n<!--    <i class=\"fas fa-2x fa-solid\" [ngClass]=\"newFolder ? 'fa-upload': 'fa-folder-plus'\" (click)=\"createNewFolder()\"></i>-->\n    <i class=\"fas fa-2x fa-times\" (click)=\"newClickedAction()\"></i>\n  </div>\n\n  <div *ngIf=\"newFolder\">\n    <div class=\"buttons\">\n      <app-new-folder (buttonClicked)=\"createNewFolder($event)\"></app-new-folder>\n    </div>\n  </div>\n\n  <div id=\"fine-uploader\" [ngStyle]=\"!newFolder ? null : {display: 'none'}\" >\n  </div>\n\n\n  <div class=\"buttons\">\n    <button class=\"button\" (click)=\"createNewFolder()\">\n      <ng-container *ngIf=\"!newFolder\">\n        {{'filemanager.create_new_folder' | translate }}\n      </ng-container>\n      <ng-container *ngIf=\"newFolder\">\n        {{'filemanager.upload_file' | translate }}\n      </ng-container>\n    </button>\n    <button class=\"button\" (click)=\"newClickedAction()\">\n      {{'filemanager.close' | translate }}\n    </button>\n    <button class=\"button\" [disabled]=\"this.counter < 1\" (click)=\"uploadFiles()\">\n      {{'filemanager.upload' | translate }}\n    </button>\n  </div>\n\n</div>\n\n<div id=\"fine-uploader-template\" style=\"display: none;\">\n  <div class=\"qq-uploader-selector qq-uploader\" [attr.qq-drop-area-text]=\"'filemanager.drop_zone_label' | translate\">\n    <div class=\"qq-upload-drop-area-selector qq-upload-drop-area\" qq-hide-dropzone>\n      <span class=\"qq-upload-drop-area-text-selector\"></span>\n    </div>\n\n    <div style=\"\">\n      <div class=\"qq-upload-button-selector qq-upload-button\">\n        <div>{{'filemanager.upload_file' | translate}}</div>\n      </div>\n    </div>\n\n    <span class=\"qq-drop-processing-selector qq-drop-processing\">\n            <span>{{'filemanager.processing_dropped_files'}}</span>...\n            <span class=\"qq-drop-processing-spinner-selector qq-drop-processing-spinner\"></span>\n    </span>\n\n    <ul class=\"qq-upload-list-selector qq-upload-list\" aria-live=\"polite\" aria-relevant=\"additions removals\">\n      <li>\n        <div class=\"qq-progress-bar-container-selector\">\n          <div role=\"progressbar\" aria-valuenow=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\"\n               class=\"qq-progress-bar-selector qq-progress-bar\"></div>\n        </div>\n        <span class=\"qq-upload-spinner-selector qq-upload-spinner\"></span>\n        <img class=\"qq-thumbnail-selector\" qq-max-size=\"100\" qq-server-scale>\n        <span class=\"qq-upload-file-selector qq-upload-file\"></span>\n        <span class=\"qq-edit-filename-icon-selector qq-edit-filename-icon\" aria-label=\"Edit filename\"></span>\n        <input class=\"qq-edit-filename-selector qq-edit-filename\" tabindex=\"0\" type=\"text\">\n        <span class=\"qq-upload-size-selector qq-upload-size\"></span>\n        <span class=\"qq-btn qq-upload-cancel-selector qq-upload-cancel\"></span>\n        <button type=\"button\" class=\"qq-btn qq-upload-retry-selector qq-upload-retry\">{{'filemanager.retry' | translate}}</button>\n        <button type=\"button\" class=\"qq-btn qq-upload-delete-selector qq-upload-delete\">{{'filemanager.delete' | translate}}</button>\n        <span role=\"status\" class=\"qq-upload-status-text-selector qq-upload-status-text\"></span>\n      </li>\n    </ul>\n\n    <dialog class=\"qq-alert-dialog-selector\">\n      <div class=\"qq-dialog-message-selector\"></div>\n      <div class=\"qq-dialog-buttons\">\n        <button type=\"button\" class=\"qq-cancel-button-selector\">{{'filemanager.close' | translate }}</button>\n      </div>\n    </dialog>\n\n    <dialog class=\"qq-confirm-dialog-selector\">\n      <div class=\"qq-dialog-message-selector\"></div>\n      <div class=\"qq-dialog-buttons\">\n        <button type=\"button\" class=\"qq-cancel-button-selector\">{{'filemanager.no' | translate}}</button>\n        <button type=\"button\" class=\"qq-ok-button-selector\">{{'filemanager.yes' | translate}}</button>\n      </div>\n    </dialog>\n\n    <dialog class=\"qq-prompt-dialog-selector\">\n      <div class=\"qq-dialog-message-selector\"></div>\n      <input type=\"text\">\n      <div class=\"qq-dialog-buttons\">\n        <button type=\"button\" class=\"qq-cancel-button-selector\">{{'filemanager.cancel' | translate }}</button>\n        <button type=\"button\" class=\"qq-ok-button-selector\">{{'filemanager.ok' | translate }}</button>\n      </div>\n    </dialog>\n  </div>\n</div>\n","import {Component, OnInit, ViewEncapsulation} from '@angular/core';\nimport {NodeClickedService} from '../../services/node-clicked.service';\n\n@Component({\n  selector: 'app-navigation',\n  templateUrl: './navigation.component.html',\n  styleUrls: ['./navigation.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class NavigationComponent implements OnInit {\n\n  constructor(\n    private nodeClickedService: NodeClickedService\n  ) {\n  }\n\n  ngOnInit() {\n  }\n\n  onClick(input: string) {\n    this.nodeClickedService.searchForString(input);\n  }\n}\n","<div class=\"navigation-component\">\n  <input #input class=\"navigation-search\" (keyup.enter)=\"onClick(input.value)\"\n         placeholder=\"{{'filemanager.search' | translate}}\">\n\n  <button [disabled]=\"input.value.length === 0\" class=\"navigation-search-icon\" (click)=\"onClick(input.value)\">\n    <i class=\"fas fa-search\"></i>\n  </button>\n\n  <div>\n    <ng-content></ng-content>\n  </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { TreeModel } from './models/tree.model';\nimport { NodeService } from './services/node.service';\nimport { NodeInterface } from './interfaces/node.interface';\nimport { NgxSmartModalService } from 'ngx-smart-modal';\nimport { NodeClickedService } from './services/node-clicked.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { FileManagerStoreService, SET_LOADING_STATE, SET_SELECTED_NODE } from './services/file-manager-store.service';\n\n@Component({\n  selector: 'fm-file-manager',\n  templateUrl: './file-manager.component.html',\n  styleUrls: ['./file-manager.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class FileManagerComponent implements OnInit {\n  @Input() iconTemplate: TemplateRef<any>;\n  @Input() folderContentTemplate: TemplateRef<any>;\n  @Input() folderContentBackTemplate: TemplateRef<any>;\n  @Input() folderContentNewTemplate: TemplateRef<any>;\n  @Input() loadingOverlayTemplate: TemplateRef<any>;\n  @Input() sideViewTemplate: TemplateRef<any>;\n\n  @Input() tree: TreeModel;\n  @Input() isPopup = false;\n  @Input() allowRename = false;\n  @Input() openFilemanagerButtonLabelKey = 'filemanager.open_file_manager';\n\n  @Input() whiteList: string[] = null; // ['mp4', 'mp3'];\n\n  @Output() itemClicked = new EventEmitter();\n  @Output() itemSelected = new EventEmitter();\n\n\n  openFilemanagerButtonLabel: string;\n  private _language = 'en';\n  @Input() set language(value: string) {\n    this._language = value;\n    this.translate.use(this.language);\n  }\n\n  get language(): string {\n    return this._language;\n  }\n\n  selectedNode: NodeInterface;\n  sideMenuClosed = true;\n\n  fmOpen = false;\n  loading: boolean;\n  newDialog = false;\n\n  constructor(\n    private store: FileManagerStoreService,\n    private nodeService: NodeService,\n    private nodeClickedService: NodeClickedService,\n    public ngxSmartModalService: NgxSmartModalService,\n    public translate: TranslateService\n  ) {\n    translate.setDefaultLang('en');\n    translate.use('en');\n  }\n\n  ngOnInit() {\n    this.nodeService.tree = this.tree;\n    this.nodeClickedService.tree = this.tree;\n\n    this.nodeService.startManagerAt(this.tree.currentPath);\n    // this.nodeService.getNodes(this.tree.currentPath).then(() => {\n    //   this.store.dispatch({type: SET_SELECTED_NODE, payload: });\n    // });\n\n    this.translate.get(this.openFilemanagerButtonLabelKey).subscribe((translation) => {\n      this.openFilemanagerButtonLabel = translation;\n    });\n\n    this.store\n      .getState(state => state.fileManagerState.isLoading)\n      .subscribe((isLoading: boolean) => {\n        this.loading = isLoading;\n      });\n\n    this.store\n      .getState(state => state.fileManagerState.selectedNode)\n      .subscribe((selectedNode: NodeInterface) => {\n        if (!selectedNode) {\n          return;\n        }\n\n        // fixed highlighting error when closing node but not changing path\n        if ((selectedNode.isExpanded && selectedNode.pathToNode !== this.nodeService.currentPath) && !selectedNode.stayOpen) {\n          return;\n        }\n\n        this.handleFileManagerClickEvent({type: 'select', node: selectedNode});\n      });\n  }\n\n  onItemClicked(event: any): void {\n    this.itemClicked.emit(event);\n  }\n\n  searchClicked(data: any) {\n    // console.log(data);\n\n    const node = this.nodeService.findNodeById(data.id);\n    this.ngxSmartModalService.getModal('searchModal').close();\n    this.store.dispatch({type: SET_SELECTED_NODE, payload: node});\n  }\n\n  handleFileManagerClickEvent(event: any) {\n    switch (event.type) {\n      case 'closeSideView' :\n        return this.nodeClickHandler(event.node, true);\n\n      case 'select' :\n        this.onItemClicked(event);\n        this.highlightSelected(event.node);\n        return this.nodeClickHandler(event.node);\n\n      case 'download' :\n        this.nodeClickedService.startDownload(event.node);\n        return this.onItemClicked(event);\n\n      case 'renameConfirm' :\n        return this.ngxSmartModalService.getModal('renameModal').open();\n      case 'rename' :\n        this.ngxSmartModalService.getModal('renameModal').close();\n\n        this.nodeClickedService.rename(this.selectedNode.id, event.value);\n        return this.onItemClicked({\n          type: event.type,\n          node: this.selectedNode,\n          newName: event.value\n        });\n\n      case 'removeAsk':\n        return this.ngxSmartModalService.getModal('confirmDeleteModal').open();\n      case 'remove':\n        this.ngxSmartModalService.getModal('confirmDeleteModal').close();\n\n        this.nodeClickedService.initDelete(this.selectedNode);\n        return this.onItemClicked({\n          type: event.type,\n          node: this.selectedNode\n        });\n\n      case 'createFolder' :\n        const parentId = this.nodeService.findNodeByPath(this.nodeService.currentPath).id;\n\n        this.nodeClickedService.createFolder(parentId, event.payload);\n        return this.onItemClicked({\n          type: event.type,\n          parentId: parentId,\n          newDirName: event.payload\n        });\n    }\n  }\n\n  nodeClickHandler(node: NodeInterface, closing?: boolean) {\n    if (node.name === 'root') {\n      return;\n    }\n\n    if (closing) {\n      const parentNode = this.nodeService.findNodeByPath(this.nodeService.currentPath);\n      this.store.dispatch({type: SET_SELECTED_NODE, payload: parentNode});\n      this.sideMenuClosed = true;\n    } else {\n      if (this.selectedNode === node && this.sideMenuClosed) {\n        this.sideMenuClosed = false;\n      } else if (this.selectedNode === node && !this.sideMenuClosed) {\n        this.sideMenuClosed = true;\n      } else if (this.selectedNode !== node && this.sideMenuClosed) {\n        this.sideMenuClosed = false;\n      } else if (this.selectedNode !== node && !this.sideMenuClosed) {\n        this.sideMenuClosed = false;\n      }\n    }\n\n    this.selectedNode = node;\n\n    // todo investigate this workaround - warning: [File Manager] failed to find requested node for path: [path]\n    if (!document.getElementById('side-view')) {\n      return;\n    }\n\n    if (this.sideMenuClosed) {\n      document.getElementById('side-view').classList.remove('selected');\n    } else {\n      document.getElementById('side-view').classList.add('selected');\n    }\n  }\n\n  // todo stay DRY!\n  highlightSelected(node: NodeInterface) {\n    let pathToNode = node.pathToNode;\n\n    if (pathToNode.length === 0) {\n      pathToNode = 'root';\n    }\n\n    const treeElement = this.getElementById(pathToNode, 'tree_');\n    const fcElement = this.getElementById(pathToNode, 'fc_');\n    if (!treeElement && !fcElement) {\n      console.warn('[File Manager] failed to find requested node for path:', pathToNode);\n      return;\n    }\n\n    this.removeClass('highlighted');\n    this.removeClass('light');\n\n    if (fcElement) {\n      this.highilghtChildElement(fcElement);\n    }\n    if (treeElement) {\n      this.highilghtChildElement(treeElement, true);\n    }\n\n    // parent node highlight\n    let pathToParent = node.pathToParent;\n    if (pathToParent === null || node.pathToNode === this.nodeService.currentPath) {\n      return;\n    }\n\n    if (pathToParent.length === 0) {\n      pathToParent = 'root';\n    }\n\n    const parentElement = this.getElementById(pathToParent, 'tree_');\n    if (!parentElement) {\n      console.warn('[File Manager] failed to find requested parent node for path:', pathToParent);\n      return;\n    }\n\n    this.highilghtChildElement(parentElement);\n  }\n\n  private highilghtChildElement(el: HTMLElement, light: boolean = false) {\n    el.children[0] // appnode div wrapper\n      .children[0] // ng template first item\n      .classList.add('highlighted');\n\n    if (light) {\n      el.children[0]\n        .children[0]\n        .classList.add('light');\n    }\n  }\n\n  private getElementById(id: string, prefix: string = ''): HTMLElement {\n    const fullId = prefix + id;\n    return document.getElementById(fullId);\n  }\n\n  private removeClass(className: string) {\n    Array.from(document.getElementsByClassName(className))\n      .map((el: HTMLElement) => el.classList.remove(className));\n  }\n\n  fmShowHide() {\n    this.fmOpen = !this.fmOpen;\n  }\n\n  backdropClicked() {\n    // todo get rid of this ugly workaround\n    // todo fire userCanceledLoading event\n    this.store.dispatch({type: SET_LOADING_STATE, payload: false});\n  }\n\n  handleUploadDialog(event: any) {\n    this.newDialog = event;\n  }\n\n  confirmSelection() {\n    this.fmOpen = false;\n    this.itemSelected.emit(this.selectedNode);\n  }\n\n  cancelSelection() {\n    this.fmOpen = false;\n  }\n\n  getModalData(): any {\n    return  this.ngxSmartModalService.getModal('searchModal').getData() as any;\n  }\n}\n","<ng-container *ngIf=\"isPopup; then itIsPopup else showContent\"></ng-container>\n\n<ng-template #itIsPopup>\n  <div *ngIf=\"!fmOpen\">\n    <button class=\"button big\" (click)=\"fmShowHide()\">{{openFilemanagerButtonLabel}}</button>\n  </div>\n  <div class=\"file-manager-backdrop\" *ngIf=\"fmOpen\">\n    <div class=\"fmModalInside\">\n      <div *ngIf=\"fmOpen; then showContent\"></div>\n      <div class=\"buttons-panel\">\n        <button class=\"button big\" (click)=\"confirmSelection()\" [disabled]=\"!selectedNode\">{{'filemanager.confirm_selection' | translate}}</button>\n        <button class=\"button big\" (click)=\"cancelSelection()\">{{'filemanager.cancel_selection' | translate}}</button>\n      </div>\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #showContent>\n  <div class=\"content\">\n    <div class=\"file-manager-navbar\">\n      <div class=\"path\">\n        <app-nav-bar></app-nav-bar>\n      </div>\n\n      <div class=\"navigation\">\n        <app-navigation>\n          <div class=\"button close\" (click)=\"fmShowHide()\" *ngIf=\"isPopup\">\n            <i class=\"fas fa-2x fa-times\"></i>\n          </div>\n        </app-navigation>\n      </div>\n    </div>\n\n    <div class=\"holder\">\n      <div class=\"file-manager-left\">\n        <app-tree [treeModel]=\"tree\">\n          <ng-template let-nodes>\n            <ng-container [ngTemplateOutletContext]=\"{$implicit: nodes}\"\n                          [ngTemplateOutlet]=\"iconTemplate ? iconTemplate : defaultIconTemplate\">\n            </ng-container>\n          </ng-template>\n        </app-tree>\n      </div>\n\n      <div class=\"right\">\n        <app-folder-content\n          (openUploadDialog)=\"handleUploadDialog($event)\"\n          [folderContentTemplate]=\"folderContentTemplate ? folderContentTemplate : defaultFolderContentTemplate\"\n          [folderContentNewTemplate]=\"folderContentNewTemplate ? folderContentNewTemplate : defaultFolderContentNewTemplate\"\n          [folderContentBackTemplate]=\"folderContentBackTemplate ? folderContentBackTemplate : defaultFolderContentBackTemplate\">\n        </app-folder-content>\n      </div>\n\n      <app-side-view id=\"side-view\"\n                     [node]=\"selectedNode\"\n                     [sideViewTemplate]=\"sideViewTemplate ? sideViewTemplate : defaultSideViewTemplate\"\n                     [allowFolderDownload]=\"tree.config.options.allowFolderDownload\"\n                     [allowRename]=\"allowRename\"\n                     (clickEvent)=\"handleFileManagerClickEvent($event)\">\n      </app-side-view>\n    </div>\n  </div>\n\n  <app-upload *ngIf=\"newDialog\"\n              [openDialog]=\"newDialog\"\n              [whiteList]=\"whiteList\"\n              (closeDialog)=\"handleUploadDialog(false)\"\n              (createDir)=\"handleFileManagerClickEvent({type: 'createFolder', payload: $event})\">\n  </app-upload>\n\n  <app-loading-overlay\n    *ngIf=\"loading\"\n    [loadingOverlayTemplate]=\"loadingOverlayTemplate ? loadingOverlayTemplate : defaultLoadingOverlayTemplate\">\n  </app-loading-overlay>\n</ng-template>\n\n<ng-template let-node #defaultIconTemplate>\n  <div class=\"file-manager-node\" style=\"display: inline-block; padding: 3px\">\n    <div *ngIf=\"node.isFolder; then itIsFolder else showFile\"></div>\n\n    <ng-template #itIsFolder>\n      <ng-template [ngIf]=\"!node.isRoot\" [ngIfElse]=\"isFolderRoot\">\n        <div *ngIf=\"node.isExpanded; then isFolderExpanded else isFolderClosed\"></div>\n      </ng-template>\n    </ng-template>\n\n    <ng-template #showFile><i class=\"fas fa-file child\"></i></ng-template>\n    <ng-template #isFolderExpanded><i class=\"fas fa-folder-open child\"></i></ng-template>\n    <ng-template #isFolderClosed><i class=\"fas fa-folder child\"></i></ng-template>\n    <ng-template #isFolderRoot><i class=\"fas fa-home\"></i></ng-template>\n\n\n    <span *ngIf=\"!node.isRoot\">{{node.name}}</span>\n  </div>\n</ng-template>\n<ng-template let-node #defaultFolderContentTemplate>\n  <div class=\"file-manager-item\">\n    <div class=\"file-preview\">\n      <div *ngIf=\"node.isFolder; then itIsFolder else showFile\"></div>\n      <ng-template #itIsFolder><i class=\"fas fa-3x fa-folder child\"></i></ng-template>\n      <ng-template #showFile><i class=\"fas fa-3x fa-file child\"></i></ng-template>\n    </div>\n    <div class=\"file-name\">\n      {{node.name}}\n    </div>\n  </div>\n</ng-template>\n<ng-template #defaultFolderContentNewTemplate>\n  <div class=\"file-manager-item\">\n    <div class=\"file-preview\" style=\"width: 100%; height:100%\">\n      <i class=\"fas fa-3x fa-plus child\" style=\"line-height: 2\"></i>\n    </div>\n  </div>\n</ng-template>\n<ng-template let-node #defaultFolderContentBackTemplate>\n  <div class=\"file-manager-item\">\n    <div class=\"file-preview\" style=\"width: 100%; height:100%\">\n      <i class=\"fas fa-2x fa-ellipsis-h\" style=\"line-height: 5\"></i>\n    </div>\n  </div>\n</ng-template>\n<ng-template let-timeoutMessage #defaultLoadingOverlayTemplate>\n  <div class=\"file-manager-backdrop loading\" (click)=\"backdropClicked()\">\n    <div class=\"file-manager-error\" *ngIf=\"timeoutMessage\">{{timeoutMessage | translate}}</div>\n  </div>\n  <div class=\"spinner\">\n    <i class=\"fas fa-5x fa-spin fa-sync-alt\"></i>\n  </div>\n</ng-template>\n<ng-template let-node #defaultSideViewTemplate>\n  <div style=\"position: absolute; bottom: 0; width: 100%; margin: 5px auto\">\n    <span *ngIf=\"node.isFolder\">{{'filemanager.no_data' | translate}}</span>\n    <span *ngIf=\"!node.isFolder\">{{'filemanager.no_data' | translate}}</span>\n  </div>\n</ng-template>\n\n<ngx-smart-modal identifier=\"renameModal\" [dismissable]=\"false\" [closable]=\"false\" *ngIf=\"selectedNode\" #renameModal>\n  <h2 class=\"modal-title\" *ngIf=\"!selectedNode.isFolder\">\n    {{'filemanager.rename_file' | translate}}\n  </h2>\n\n  <h2 class=\"modal-title\" *ngIf=\"selectedNode.isFolder\">\n    {{'filemanager.rename_folder' | translate}}\n  </h2>\n  <div class=\"old-name\">\n    <p class=\"rename-name\">\n      {{'filemanager.old_name' | translate}}\n    </p>\n    <span style=\"margin: 8px\">{{selectedNode.name}}</span>\n  </div>\n\n  <div class=\"new-name\">\n    <p class=\"rename-name\">\n      {{'filemanager.new_name' | translate}}\n    </p>\n    <input type=\"text\" class=\"rename-input\" [value]=\"selectedNode.name\" #renameInput\n           (keyup.enter)=\"handleFileManagerClickEvent({type: 'rename', value: renameInput.value})\">\n  </div>\n\n  <br>\n\n  <div class=\"rename-button\">\n    <button class=\"button big\"\n            (click)=\"handleFileManagerClickEvent({type: 'rename', value: renameInput.value})\"\n            [disabled]=\"renameInput.value === selectedNode.name || renameInput.value.length === 0\">\n      {{'filename.rename' | translate}}\n    </button>\n    <button class=\"button big\" (click)=\"renameModal.close()\">\n      {{'filemanager.cancel' | translate}}\n    </button>\n  </div>\n\n</ngx-smart-modal>\n<ngx-smart-modal *ngIf=\"selectedNode\" identifier=\"confirmDeleteModal\" #deleteModal\n                 [dismissable]=\"false\" [closable]=\"false\">\n  <h2 class=\"modal-title\">\n    <span>{{'filemanager.file_delete_confirm' | translate}}</span>\n    <span *ngIf=\"selectedNode.isFolder\">{{'filemanager.folder' | translate}}</span>\n    <span *ngIf=\"!selectedNode.isFolder\">{{'filemanager.file' | translate}}</span>\n  </h2>\n\n  <div style=\"width: 100%; margin: 5px auto; text-align: center\">{{selectedNode.name}}</div>\n\n  <div class=\"rename-button\">\n    <button class=\"button big\" (click)=\"handleFileManagerClickEvent({type: 'remove'})\">\n      <span>{{'filemanager.yes_delete_this' | translate}}</span>\n      <span *ngIf=\"selectedNode.isFolder\">{{'filemanager.folder' | translate}}</span>\n      <span *ngIf=\"!selectedNode.isFolder\">{{'filemanager.file' | translate}}</span>\n    </button>\n    <button class=\"button big\" (click)=\"deleteModal.close()\">\n      {{'filemanager.cancel'|translate}}\n    </button>\n  </div>\n</ngx-smart-modal>\n<ngx-smart-modal identifier=\"searchModal\" #searchModal [closable]=\"true\">\n  <h2 class=\"modal-title\" style=\"margin-bottom: 2px\"\n      *ngIf=\"searchModal.hasData() && getModalData().response.length !== 0\">\n    {{'filemanager.search_results_for' | translate}}\n  </h2>\n  <h2 class=\"modal-title\" style=\"margin-bottom: 2px\"\n      *ngIf=\"!searchModal.hasData() || getModalData().response.length === 0\">\n    {{'filemanager.no_results' | translate}}\n  </h2>\n  <div style=\"text-align: center\" *ngIf=\"searchModal.hasData()\">{{getModalData().searchString}}</div>\n\n  <div *ngIf=\"searchModal.hasData() && getModalData().response.length !== 0\">\n    <table style=\"margin: 0 auto\">\n      <tr>\n        <td class=\"table-item table-head\">{{'filemanager.file_name' | translate}}</td>\n        <td class=\"table-item-short table-head\">{{'filemanager.size' | translate}}</td>\n      </tr>\n      <tr *ngFor=\"let item of getModalData().response\" (click)=\"searchClicked(item)\">\n        <td style=\"cursor: pointer\">\n          <ng-container *ngIf=\"item.fileCategory === 'D'; else file\">\n            <i class=\"fas fa-folder search-output-icon\"></i>\n          </ng-container>\n          <ng-template #file>\n            <i class=\"fas fa-file search-output-icon\"></i>\n          </ng-template>\n          <span style=\"text-overflow: ellipsis\">{{item.name}}</span>\n        </td>\n        <td class=\"table-item-short\">{{item.size}}</td>\n      </tr>\n    </table>\n  </div>\n</ngx-smart-modal>\n<ngx-smart-modal identifier=\"waitModal\" [closable]=\"false\" [dismissable]=\"false\" [escapable]=\"false\">\n  <div style=\"overflow-y: hidden\">\n    <h2 class=\"modal-title\" style=\"margin-top: 20px\">\n      {{'filemanager.processing_request' | translate}}...\n    </h2>\n\n    <div style=\"text-align: center; height: 70px\">\n      <i class=\"fas fa-spinner fa-spin fa-4x\"></i>\n    </div>\n  </div>\n</ngx-smart-modal>\n<ngx-smart-modal identifier=\"errorModal\" [closable]=\"true\">\n  <h2 class=\"modal-title\" style=\"margin-top: 20px\">\n    {{'filemanager.something_went_wrong_with_your_request' | translate}}...\n  </h2>\n</ngx-smart-modal>\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n  name: 'mapToIterablePipe'\n})\nexport class MapToIterablePipe implements PipeTransform {\n  transform(dict: Object) {\n    const a = [];\n    for (const key in dict) {\n      if (dict.hasOwnProperty(key)) {\n        a.push({key: key, val: dict[key]});\n      }\n    }\n\n    return a;\n  }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n/*\n * Convert bytes into largest possible unit.\n * Takes an precision argument that defaults to 2.\n * Usage:\n *   bytes | fileSize:precision\n * Example:\n *   {{ 1024 |  fileSize}}\n *   formats to: 1 KB\n*/\n@Pipe({name: 'fileSize'})\nexport class FileSizePipe implements PipeTransform {\n\n  private units = [\n    'bytes',\n    'KB',\n    'MB',\n    'GB',\n    'TB',\n    'PB'\n  ];\n\n  transform(bytes: number = 0, precision: number = 2 ) : string {\n    if ( isNaN( parseFloat( String(bytes) )) || ! isFinite( bytes ) ) return '?';\n\n    let unit = 0;\n\n    while ( bytes >= 1024 ) {\n      bytes /= 1024;\n      unit ++;\n    }\n\n    return bytes.toFixed( + precision ) + ' ' + this.units[ unit ];\n  }\n}\n","// import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FileManagerComponent} from './file-manager.component';\nimport {FolderContentComponent} from './components/folder-content/folder-content.component';\nimport {TreeComponent} from './components/tree/tree.component';\nimport {NodeListerComponent} from './components/tree/node-lister/node-lister.component';\nimport {NodeComponent} from './components/functions/node/node.component';\nimport {MapToIterablePipe} from './pipes/map-to-iterable.pipe';\nimport { HttpClient, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport {NavBarComponent} from './components/nav-bar/nav-bar.component';\nimport {LoadingOverlayComponent} from './components/functions/loading-overlay/loading-overlay.component';\nimport {FileSizePipe} from './pipes/file-size.pipe';\nimport {UploadComponent} from './components/functions/upload/upload.component';\nimport {NewFolderComponent} from './components/functions/upload/new-folder/new-folder.component';\nimport {SideViewComponent} from './components/side-view/side-view.component';\nimport {NavigationComponent} from './components/navigation/navigation.component';\nimport {NgxSmartModalModule} from 'ngx-smart-modal';\nimport {TranslateLoader, TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {TranslateHttpLoader} from '@ngx-translate/http-loader';\n\nexport function createTranslateLoader(http: HttpClient) {\n  return new TranslateHttpLoader(http, '/assets/i18n/', '.json');\n}\n\n@NgModule({ declarations: [\n        FileManagerComponent,\n        FolderContentComponent,\n        NodeComponent,\n        TreeComponent,\n        NodeListerComponent,\n        MapToIterablePipe,\n        NavBarComponent,\n        LoadingOverlayComponent,\n        FileSizePipe,\n        UploadComponent,\n        NewFolderComponent,\n        SideViewComponent,\n        NavigationComponent\n    ],\n    exports: [\n        FileManagerComponent,\n        LoadingOverlayComponent,\n        SideViewComponent\n    ], imports: [CommonModule,\n        NgxSmartModalModule.forRoot(),\n        TranslateModule.forRoot({\n            loader: {\n                provide: TranslateLoader,\n                useFactory: (createTranslateLoader),\n                deps: [HttpClient]\n            }\n        })], providers: [TranslateService, provideHttpClient(withInterceptorsFromDi())] })\nexport class FileManagerModule {\n  // static forRoot(): ModuleWithProviders {\n  //   return {\n  //     ngModule: FileManagerModule,\n  //     providers: [TranslateService]\n  //   };\n  // }\n}\n","import {NodeInterface} from '../interfaces/node.interface';\nimport {ConfigInterface} from '../interfaces/config.interface';\n\nexport class TreeModel {\n  private _currentPath: string;\n  private _nodes: NodeInterface;\n  private _selectedNodeId: string;\n  public config: ConfigInterface;\n\n  constructor(config: ConfigInterface) {\n    // this._currentPath = config.startingFolder; // todo implement (config.interfce.ts)\n    this._currentPath = '';\n    this.config = config;\n\n    this.nodes = <NodeInterface>{\n      id: 0,\n      pathToNode: '',\n      pathToParent: null,\n      isFolder: true,\n      isExpanded: true,\n      stayOpen: true,\n      name: 'root',\n      children: {},\n      isRoot: true\n    };\n  }\n\n  get currentPath(): string {\n    return this._currentPath;\n  }\n\n  set currentPath(value: string) {\n    this._currentPath = value;\n  }\n\n  get nodes(): NodeInterface {\n    return this._nodes;\n  }\n\n  set nodes(value: NodeInterface) {\n    this._nodes = value;\n  }\n\n  get selectedNodeId(): string {\n    return this._selectedNodeId;\n  }\n\n  set selectedNodeId(value: string) {\n    this._selectedNodeId = value;\n  }\n\n  // todo implement (config.interfce.ts)\n  // get isCache(): boolean {\n  //   return this.config.offlineMode;\n  // }\n  //\n  // set isCache(value: boolean) {\n  //   this.config.offlineMode = value;\n  // }\n}\n","/*\n * Public API Surface of file-manager\n */\n\nexport * from './file-manager/components/functions/loading-overlay/loading-overlay.component';\nexport * from './file-manager/components/side-view/side-view.component';\nexport * from './file-manager/file-manager.component';\nexport * from './file-manager/file-manager.module';\nexport * from './file-manager/models/tree.model';\nexport * from './file-manager/interfaces/config.interface';\nexport * from './file-manager/interfaces/node.interface';\nexport * from './file-manager/enums/download-mode.enum';\nexport * from './file-manager/services/node.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i1","i2.FileManagerStoreService","i2.NodeService","i3","i1.FileManagerStoreService","i3.NodeClickedService","i4","i1.NodeService","i4.NodeComponent","i4.NodeListerComponent","i4.NewFolderComponent","i5","i1.NodeClickedService","i6","i7.FolderContentComponent","i8.TreeComponent","i9.NavBarComponent","i10.LoadingOverlayComponent","i11.UploadComponent","i12.SideViewComponent","i13.NavigationComponent"],"mappings":"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"}