@rs-pk/asset-management 1.0.20 → 1.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"rs-pk-asset-management.js","sources":["ng://@rs-pk/asset-management/lib/models/asset.model.ts","ng://@rs-pk/asset-management/lib/models/asset-file.model.ts","ng://@rs-pk/asset-management/lib/models/file.model.ts","ng://@rs-pk/asset-management/lib/models/node-tree.model.ts","ng://@rs-pk/asset-management/lib/models/file-type.enum.ts","ng://@rs-pk/asset-management/lib/models/sort.enum.ts","ng://@rs-pk/asset-management/lib/services/env-config.service.ts","ng://@rs-pk/asset-management/lib/services/base.service.ts","ng://@rs-pk/asset-management/lib/services/asset.service.ts","ng://@rs-pk/asset-management/lib/asset-management.service.ts","ng://@rs-pk/asset-management/lib/store/actions.action.ts","ng://@rs-pk/asset-management/lib/store/reducer.ts","ng://@rs-pk/asset-management/lib/services/node-tree.service.ts","ng://@rs-pk/asset-management/lib/services/upload-assets.service.ts","ng://@rs-pk/asset-management/lib/services/file.service.ts","ng://@rs-pk/asset-management/lib/components/partial/asset-management-dialog/asset-management-dialog.component.ts","ng://@rs-pk/asset-management/lib/asset-management.component.ts","ng://@rs-pk/asset-management/lib/directives/dialogTrigger.directive.ts","ng://@rs-pk/asset-management/lib/directives/dnd.directive.ts","ng://@rs-pk/asset-management/lib/directives/directives.module.ts","ng://@rs-pk/asset-management/lib/components/ui/input-file/input-file.component.ts","ng://@rs-pk/asset-management/lib/components/ui/modal/modal.component.ts","ng://@rs-pk/asset-management/lib/contanst/data-image.ts","ng://@rs-pk/asset-management/lib/components/ui/search-not-found/search-not-found.component.ts","ng://@rs-pk/asset-management/lib/components/partial/file-item/file-item.component.ts","ng://@rs-pk/asset-management/lib/components/partial/file-list/file-list.component.ts","ng://@rs-pk/asset-management/lib/components/partial/upload-file/upload-file.component.ts","ng://@rs-pk/asset-management/lib/components/partial/add-folder-dialog/add-folder-dialog.component.ts","ng://@rs-pk/asset-management/lib/components/partial/edit-folder-dialog/edit-folder-dialog.component.ts","ng://@rs-pk/asset-management/lib/components/partial/delete-dialog/delete-dialog.component.ts","ng://@rs-pk/asset-management/lib/components/partial/upload-dialog/upload-dialog.component.ts","ng://@rs-pk/asset-management/lib/components/partial/folder-item/folder-item.component.ts","ng://@rs-pk/asset-management/lib/components/partial/folder-list/folder-list.component.ts","ng://@rs-pk/asset-management/lib/components/partial/asset-list/asset-list.component.ts","ng://@rs-pk/asset-management/lib/pipes/file-size.pipe.ts","ng://@rs-pk/asset-management/lib/components/partial/asset-dialog/asset-dialog.component.ts","ng://@rs-pk/asset-management/lib/components/partial/asset-item/asset-item.component.ts","ng://@rs-pk/asset-management/lib/datasources/node-tree.datasource.ts","ng://@rs-pk/asset-management/lib/components/partial/node-tree/node-tree.component.ts","ng://@rs-pk/asset-management/lib/components/partial/breadcrumb/breadcrumb.component.ts","ng://@rs-pk/asset-management/lib/components/partial/search-box/search-box.component.ts","ng://@rs-pk/asset-management/lib/components/partial/sort-items/sort-items.component.ts","ng://@rs-pk/asset-management/lib/components/partial/asset-wrapper/asset-wrapper.component.ts","ng://@rs-pk/asset-management/lib/components/partial/node-details/node-details.component.ts","ng://@rs-pk/asset-management/lib/components/ui/drag-to-resize/drag-to-resize.component.ts","ng://@rs-pk/asset-management/lib/configs/admin.config.ts","ng://@rs-pk/asset-management/lib/pipes/datetime.pipe.ts","ng://@rs-pk/asset-management/lib/asset-management.module.ts"],"sourcesContent":["export interface IPageMeta {\n PageIndex: number;\n PageSize: number;\n PageCount: number;\n Total: number;\n}\n\nexport interface IChildrenAssetPayload {\n assetId?: string;\n isFolder?: string;\n keyword?: string;\n getAll?: string;\n pageSize?: string;\n pageIndex?: string;\n}\n\nexport interface IAssetByIdPayload {\n assetId?: string;\n isFilter?: boolean;\n}\n\nexport interface IInitialFolderTreeOptions {\n dispatchRootId?: boolean;\n}\n\nexport class AssetModel {\n AssetId?: string;\n OriginalFileName?: string;\n OriginalFileNameWithoutExtension?: string;\n Description?: string;\n FileName: string;\n Width: number;\n Height: number;\n CompanyId: string;\n FilePath: string;\n CloudUrl: string;\n UrlDetail?: string;\n UrlThumbnail?: string;\n Extension: string;\n FileType: string;\n Source: string;\n Size: number;\n CreatedBy: string;\n ModifiedBy: string;\n CreatedDate: string;\n ModifiedDate: string;\n BackgroudProcessingStatus: string;\n IsRoot: boolean;\n IsFolder: boolean;\n TotalFile: number;\n TotalFolder: number;\n HaveChildren: boolean;\n ParentId?: string;\n}\nexport class FolderTreeModel extends AssetModel {\n Children?: FolderTreeModel[];\n}\n\nexport class AssetResultModel {\n Data: FolderTreeModel;\n Meta?: IPageMeta;\n}\n\nexport class DialogConfig {\n limit: number;\n allowedType: string;\n maxSize?: number;\n}\n","export class AssetFileUploadModel {\n File: FormData;\n CompanyId: string;\n}\n\nexport class AssetFileUploadResultModel {\n Files: AssetFileModel[];\n Messages: string[];\n Status: number;\n}\n\nexport class AssetFileModel {\n Id: number;\n OriginalFileName: string;\n CompanyId: string;\n FileData: null;\n ThumbnailPath: string;\n FilePath: string;\n Extension: string;\n FileType: string;\n Source: number;\n CloudUrl: string;\n CreatedBy: string;\n CreatedDate: string;\n ModifiedBy: string;\n ModifiedDate: string;\n FileName: string;\n}\n","import { AssetModel } from './asset.model';\n\nexport interface IAddFolderPayload {\n folderName: string;\n parentAssetId: string;\n}\n\nexport interface IAddFolderRes {\n AssetId: string;\n CorrelationId?: string;\n Data: AssetModel;\n Files?: AssetModel[];\n FolderName: string;\n IsFolder: boolean;\n Messages?: any[];\n ParentAssetId: string;\n ResponseCode: number;\n ResponseMessage: string;\n StackTrace: string | number;\n}\n\nexport interface IUpdateFilePayload {\n assetId: string;\n fileName: string;\n description?: string;\n}\n\nexport class IAssetUpdatedRes {\n AssetId?: AssetModel;\n CorrelationId?: string;\n Data: AssetModel;\n FileName: string;\n IncludeExtension: boolean;\n ResponseCode: number;\n ResponseMessage: string;\n StackTrace: string | number;\n}\n\nexport class IAssetDetailsRes {\n AssetDetail?: AssetModel;\n CorrelationId: string;\n Data: AssetModel;\n ResponseCode: number;\n ResponseMessage: string;\n StackTrace: string | number;\n}\n","import { FolderTreeModel } from './asset.model';\n\n/** Flat node with expandable and level information */\nexport class DynamicFlatNode {\n constructor(\n public item: FolderTreeModel,\n public level = 1,\n public expandable = false,\n public isLoading = false\n ) {}\n }\n","export enum FileTypeEnum {\n IMAGE = 'Image',\n DOCUMENT = 'Document',\n}\n","export enum SortFilesBy {\n NAME = 1,\n CREATED_DATE,\n MODIFIED_DATE,\n}\n\nexport enum TypeSort {\n DESC = 1,\n ASC,\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { InjectionToken } from '@angular/core';\n\nexport interface AMConfig {\n asset2Url: string;\n requestHeader?: HttpHeaders;\n}\n\nexport const AM_CONFIG = new InjectionToken<AMConfig>(\n 'asset.man.config.angular'\n);\n","import { HttpClient, HttpHandler, HttpHeaders, HttpParams, HttpRequest } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AM_CONFIG } from './env-config.service';\n\nexport type HttpObserve = 'body' | 'events' | 'response';\n\n@Injectable()\nexport class BaseHttpClient extends HttpClient {\n\tconstructor(\n\t\t@Inject(AM_CONFIG) private _env,\n\t\thandler: HttpHandler) {\n\t\tsuper(handler);\n\t}\n\n\trequest(\n\t\tfirst: string | HttpRequest<any>,\n\t\turl?: string,\n\t\toptions: {\n\t\t\tbody?: any;\n\t\t\theaders?: HttpHeaders | { [header: string]: string | string[] };\n\t\t\tobserve?: HttpObserve;\n\t\t\tparams?: HttpParams | { [param: string]: string | string[] };\n\t\t\treportProgress?: boolean;\n\t\t\tresponseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n\t\t\twithCredentials?: boolean;\n\t\t} = {}\n\t): Observable<any> {\n\t\tconst { requestHeader } = this._env;\n\n\t\tif (!options) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tif (requestHeader) {\n\t\t\toptions.headers = requestHeader;\n\t\t}\n\n\t\treturn super.request(first as string, url, options as any);\n\t}\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport {\n AssetModel,\n AssetResultModel,\n DialogConfig,\n FolderTreeModel,\n IAssetByIdPayload,\n IChildrenAssetPayload,\n SortFilesBy,\n TypeSort,\n} from '../models';\nimport { BaseHttpClient } from './base.service';\nimport { AM_CONFIG } from './env-config.service';\n\n@Injectable()\nexport class AssetService {\n private folderList$: BehaviorSubject<FolderTreeModel> = new BehaviorSubject(\n null\n );\n private assetList$: BehaviorSubject<AssetModel[]> = new BehaviorSubject(null);\n private openDialog$: BehaviorSubject<boolean> = new BehaviorSubject(null);\n public keyword: string;\n public pageSize: number;\n public pageIndex: number;\n public folderTotal: number;\n public fileTotal: number;\n public sortBy: SortFilesBy;\n public sortOrder: TypeSort;\n public dialogConfig: DialogConfig = new DialogConfig();\n public maxSize?: number;\n private baseUrl: string;\n\n constructor(\n @Inject(AM_CONFIG) private _env,\n public dialog: MatDialog,\n private _api: BaseHttpClient\n ) {\n this.baseUrl = this._env.asset2Url;\n this.initOptionFiles();\n }\n\n private initOptionFiles() {\n this.keyword = '';\n this.pageSize = 12;\n this.pageIndex = 0;\n this.folderTotal = 0;\n this.fileTotal = 0;\n this.sortBy = SortFilesBy.MODIFIED_DATE;\n this.sortOrder = TypeSort.DESC;\n }\n\n private resetData() {\n this.setAssetList(null);\n this.setFolderList(null);\n }\n\n resetAsset() {\n this.initOptionFiles();\n this.resetData();\n }\n\n getFolderList(): Observable<FolderTreeModel> {\n return this.folderList$.asObservable();\n }\n\n setFolderList(folders: FolderTreeModel, folderTotal?: number) {\n this.folderTotal = folderTotal || 0;\n this.folderList$.next(folders);\n }\n\n getAssetList(): Observable<AssetModel[]> {\n return this.assetList$.asObservable();\n }\n\n setAssetList(assets: AssetModel[], pagination?: any) {\n this.setPagination(pagination);\n this.assetList$.next(assets);\n }\n\n setDialogOpenStatus(status: boolean): void {\n this.openDialog$.next(status);\n }\n\n getDialogOpenStatus(): Observable<boolean> {\n return this.openDialog$.asObservable();\n }\n\n\n private setPagination(pagination) {\n if (pagination) {\n this.fileTotal = pagination.Total;\n this.pageIndex = pagination.PageIndex;\n this.pageSize = pagination.PageSize;\n }\n }\n\n public getAssetById(assetId: string) {\n const url = `${this.baseUrl}/File/GetById/${assetId}`;\n return this._api.get<AssetResultModel>(url);\n }\n\n public getChildrenFolders({ assetId, isFilter = true }: IAssetByIdPayload) {\n const url = `${this.baseUrl}/File/GetChildren`;\n let params = new HttpParams().set('getAll', 'true').set('isFolder', 'true');\n\n if (assetId) {\n params = params.set('assetId', assetId);\n }\n if (isFilter && this.keyword.length) {\n params = params.set('keyword', this.keyword || '');\n }\n if (this.dialogConfig.allowedType) {\n params = params.set('fileType', this.dialogConfig.allowedType);\n }\n\n return this._api.get<AssetResultModel>(url, { params });\n }\n\n public getChildrenAssets({ assetId, pageIndex }: IChildrenAssetPayload) {\n const url = `${this.baseUrl}/File/GetChildren`;\n let params = new HttpParams()\n .set('pageSize', this.pageSize.toString())\n .set('pageIndex', pageIndex || this.pageIndex.toString())\n .set('getAll', 'false')\n .set('isFolder', 'false')\n .set('TypeSort', this.sortOrder.toString())\n .set('SortFilesBy', this.sortBy.toString());\n\n if (assetId) {\n params = params.set('assetId', assetId);\n }\n if (this.keyword.length) {\n params = params.set('keyword', this.keyword || '');\n }\n if (this.dialogConfig.allowedType) {\n params = params.set('fileType', this.dialogConfig.allowedType);\n }\n\n return this._api.get<AssetResultModel>(url, { params });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as ACTIONS from './store/actions.action';\n\nconst eventDispatcher = new Subject<ACTIONS.Actions>();\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AssetManagementService {\n\n private _dispatcher;\n\n constructor() {\n }\n\n getDispatcher() {\n if (!this._dispatcher) {\n this._dispatcher = eventDispatcher;\n }\n\n return this._dispatcher;\n }\n\n dispatch(action: ACTIONS.Actions) {\n this.getDispatcher().next(action);\n }\n}\n","import { AssetModel, FolderTreeModel } from '../models';\n\ninterface ActionInterface {\n type: string;\n payload?;\n}\n\nexport enum ActionTypes {\n // global loading\n SET_GLOBAL_LOADING = '[LOADING] Set global loading state',\n\n // asset area\n SET_SELECTED_ASSETS = '[ASSET] Set selected assets',\n RELOAD_CURRENT_ASSETS = '[ASSET] reload current asset list ',\n DELETE_ASSET = '[ASSET] delete an asset ',\n\n // folder area\n SET_CURRENT_FOLDER_ID = '[FOLDER] get current folder id',\n SET_CURRENT_FOLDER = '[FOLDER] set current folder ',\n RELOAD_CURRENT_FOLDER = '[FOLDER] reload current folder ',\n SET_CURRENT_FOLDER_HIERARCHY = '[FOLDER] set current folder hierarchy ',\n\n // node area\n RELOAD_CURRENT_NODE = '[NODE] reload current node ',\n}\n\nexport class SetGlobalLoading implements ActionInterface {\n readonly type = ActionTypes.SET_GLOBAL_LOADING;\n payload: boolean;\n}\n\nexport class SetSelectedAssets implements ActionInterface {\n readonly type = ActionTypes.SET_SELECTED_ASSETS;\n payload: Array<AssetModel>;\n}\n\nexport class DeleteAsset implements ActionInterface {\n readonly type = ActionTypes.DELETE_ASSET;\n payload: string;\n}\n\nexport class SetCurrentFolder implements ActionInterface {\n readonly type = ActionTypes.SET_CURRENT_FOLDER;\n payload: AssetModel;\n}\n\nexport class ReloadCurrentFolder implements ActionInterface {\n readonly type = ActionTypes.RELOAD_CURRENT_FOLDER;\n}\n\nexport class SetCurrentFolderHierarchy implements ActionInterface {\n readonly type = ActionTypes.SET_CURRENT_FOLDER_HIERARCHY;\n payload: Array<FolderTreeModel>;\n}\n\nexport class GetCurrentFolder implements ActionInterface {\n readonly type = ActionTypes.SET_CURRENT_FOLDER_ID;\n payload: string;\n}\n\nexport class ReloadCurrentAssets implements ActionInterface {\n readonly type = ActionTypes.RELOAD_CURRENT_ASSETS;\n}\n\nexport class ReloadCurrentNode implements ActionInterface {\n readonly type = ActionTypes.RELOAD_CURRENT_NODE;\n}\n\nexport type Actions =\n | SetGlobalLoading\n | SetSelectedAssets\n | SetCurrentFolder\n | ReloadCurrentFolder\n | SetCurrentFolderHierarchy\n | GetCurrentFolder\n | ReloadCurrentAssets\n | ReloadCurrentNode\n | DeleteAsset;\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { AssetModel, FolderTreeModel } from '../models';\nimport * as ACTIONS from './actions.action';\n\ninterface InitialState {\n globalLoading: boolean;\n selectedAssets: Array<AssetModel>;\n deletedAssetId: string;\n currentFolder: AssetModel;\n currentFolderId: string;\n currentFolderHierarchy: Array<FolderTreeModel>;\n reloadCurrentFolder: boolean;\n reloadCurrentAssets: boolean;\n reloadCurrentNode: boolean;\n}\n\nlet state: InitialState = {\n globalLoading: false,\n selectedAssets: [],\n deletedAssetId: null,\n currentFolder: null,\n currentFolderId: null,\n currentFolderHierarchy: [],\n reloadCurrentFolder: false,\n reloadCurrentAssets: false,\n reloadCurrentNode: false,\n};\n\nexport const store = new BehaviorSubject<InitialState>(state);\n\nexport const initialReducer = (dispatcher: Subject<ACTIONS.Actions>) => {\n if (!dispatcher) {\n console.warn('Dispatcher not found.');\n return;\n }\n\n dispatcher.subscribe((action: ACTIONS.Actions) => {\n switch (action.type) {\n case ACTIONS.ActionTypes.SET_SELECTED_ASSETS:\n state = {\n ...state,\n selectedAssets: action.payload,\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.SET_GLOBAL_LOADING:\n state = {\n ...state,\n globalLoading: action.payload,\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.SET_CURRENT_FOLDER:\n state = {\n ...state,\n currentFolder: { ...action.payload },\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.RELOAD_CURRENT_FOLDER:\n state = {\n ...state,\n reloadCurrentFolder: !state.reloadCurrentFolder,\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.RELOAD_CURRENT_ASSETS:\n state = {\n ...state,\n reloadCurrentAssets: !state.reloadCurrentAssets,\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.RELOAD_CURRENT_NODE:\n state = {\n ...state,\n reloadCurrentNode: !state.reloadCurrentNode,\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.SET_CURRENT_FOLDER_HIERARCHY:\n state = {\n ...state,\n currentFolderHierarchy: [...action.payload],\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.SET_CURRENT_FOLDER_ID:\n state = {\n ...state,\n currentFolderId: action.payload,\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.DELETE_ASSET:\n state = {\n ...state,\n deletedAssetId: action.payload,\n };\n store.next(state);\n break;\n\n default:\n break;\n }\n });\n};\n\nexport const select = (mapFn: (status) => InitialState): Observable<any> => {\n return store.asObservable().pipe(\n map((status: InitialState) => mapFn(status)),\n distinctUntilChanged()\n );\n};\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { AssetManagementService } from '../asset-management.service';\nimport { AssetModel, DynamicFlatNode, FolderTreeModel, IInitialFolderTreeOptions } from '../models';\nimport { ActionTypes } from '../store';\nimport { AssetService } from './asset.service';\n\n@Injectable()\nexport class NodeTreeService {\n constructor(private assetService: AssetService, private svc: AssetManagementService) { }\n\n public storedData$ = new BehaviorSubject<AssetModel[]>([]);\n public loading$ = new BehaviorSubject<boolean>(false);\n public initialData$: BehaviorSubject<DynamicFlatNode[]> = new BehaviorSubject([]);\n public rootFolder: AssetModel;\n\n get data(): AssetModel[] {\n return this.storedData$.getValue();\n }\n set data(values: AssetModel[]) {\n this.storedData$.next(values);\n }\n\n private async fetchChildrenFolder(id: string): Promise<FolderTreeModel> {\n try {\n const result = await this.assetService.getChildrenFolders({ assetId: id, isFilter: false }).toPromise();\n if (result) {\n return result.Data;\n }\n } catch (err) { }\n return;\n }\n\n /** Initial data from database */\n public async initialData(\n { dispatchRootId }: IInitialFolderTreeOptions\n ): Promise<DynamicFlatNode[]> {\n if (dispatchRootId) { this.loading$.next(true); }\n const result = await this.assetService.getChildrenFolders({ isFilter: false }).toPromise();\n if (!result) { return; }\n if (dispatchRootId) {\n this.svc.dispatch({\n type: ActionTypes.SET_CURRENT_FOLDER_ID,\n payload: result.Data.AssetId,\n });\n this.svc.dispatch({\n type: ActionTypes.SET_CURRENT_FOLDER_HIERARCHY,\n payload: [],\n });\n }\n this.rootFolder = result.Data;\n const initData = result.Data.Children.map(\n (folder) => new DynamicFlatNode(folder, 0, this.isExpandable(folder))\n );\n this.initialData$.next(initData);\n\n if (dispatchRootId) { this.loading$.next(false); }\n return this.initialData$.getValue();\n }\n\n public async getChildren(node: FolderTreeModel): Promise<FolderTreeModel> {\n return await this.fetchChildrenFolder(node.AssetId);\n }\n\n public isExpandable(node: FolderTreeModel): boolean {\n return node.HaveChildren;\n }\n\n /** Add asset to stored data */\n public addNode(asset: AssetModel, parentId?: string): void {\n let data = [...this.data];\n const index = data.findIndex((node) => node.AssetId === asset.AssetId);\n if (index < 0) {\n data = [...data, { ...asset, ParentId: parentId ? parentId : null }];\n }\n this.data = data;\n }\n\n public async updateBreadcrumb(id: string) {\n const folder = this.data.find((n) => n.AssetId === id);\n if (folder) {\n const hierarchy = this.getFolderHierarchy(folder);\n this.svc.dispatch({\n type: ActionTypes.SET_CURRENT_FOLDER_HIERARCHY,\n payload: hierarchy,\n });\n }\n }\n\n private getAssetParent(node: AssetModel): AssetModel {\n return this.data.find((n) => n.AssetId === node.ParentId);\n }\n\n private getFolderHierarchy(node: FolderTreeModel): Array<FolderTreeModel> {\n if (!node) {\n return [];\n }\n let parentHierarchy: Array<FolderTreeModel> = [];\n let parent = this.getAssetParent(node);\n while (parent) {\n parentHierarchy = [parent, ...parentHierarchy];\n parent = this.getAssetParent(parent);\n }\n return [...parentHierarchy, node];\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { BaseHttpClient } from './base.service';\nimport { AM_CONFIG } from './env-config.service';\n\n@Injectable()\nexport class UploadAssetsService {\n private files: File[] = [];\n public fileNames: { [key: string]: string | boolean }[] = [];\n public supportedSize = 10 * 1024 * 1024; // 10MB\n public readonly documentExtension = ['.pdf', '.csv'];\n public readonly compressedExtension = ['.zip'];\n public readonly imageExtension = [\n '.png',\n '.gif',\n '.jpeg',\n '.jpg',\n '.svg',\n '.svg+xml',\n ];\n public supportedTypes = [...this.imageExtension, ...this.compressedExtension, ...this.documentExtension];\n public readonly messageErrors = {\n size: `File size should be upto`,\n ext: `Only supported file extension:`,\n replace: `The replacement file should be the same extension with old one:`,\n maxLength: `The character limit is 200 characters`,\n };\n\n private errorObs$: BehaviorSubject<any> = new BehaviorSubject(true);\n private baseUrl: string;\n\n constructor(\n @Inject(AM_CONFIG) private _env,\n public dialog: MatDialog,\n private _api: BaseHttpClient\n ) {\n this.baseUrl = this._env.asset2Url;\n }\n\n getErrorObs(): Observable<any> {\n return this.errorObs$.asObservable();\n }\n\n setErrorObs(error: boolean) {\n this.errorObs$.next(error);\n }\n\n get getFiles(): File[] {\n return this.files;\n }\n\n set setFiles(files: File[]) {\n this.files = files;\n }\n\n get errorFiles(): boolean {\n const invalidFiles = this.fileNames.filter(file => !file.valid);\n return this.fileNames.length && invalidFiles.length > 0;\n }\n\n get errorLength() {\n return this.fileNames.filter(file => !file.valid).length;\n }\n\n public deleteFile(index: number) {\n this.files.splice(index, 1);\n this.fileNames.splice(index, 1);\n }\n\n uploadMultipleAssets(parentAssetId: string) {\n const { files } = this;\n const fileNames = this.fileNames.map(file => file.name);\n const formData = new FormData();\n formData.append('parentAssetId', parentAssetId);\n formData.append('companyId', '732DA8D2-04EC-4BE0-A168-63EE0DCF50D8');\n\n for (let i = 0; i < files.length; i++) {\n const nameSplit = files[i].name.split('.');\n const ext = `.${nameSplit.splice(nameSplit.length - 1, 1)[0]}`;\n formData.append('files', files[i], `${fileNames[i]}${ext}`);\n }\n\n return this._api.post<any>(`${this.baseUrl}/File/Upload`, formData);\n }\n}\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { IAddFolderPayload, IUpdateFilePayload } from '../models';\nimport { BaseHttpClient } from './base.service';\nimport { AM_CONFIG } from './env-config.service';\n\n@Injectable()\nexport class FileService {\n private baseUrl: string;\n\n constructor(@Inject(AM_CONFIG) private _env, private _api: BaseHttpClient) {\n this.baseUrl = this._env.asset2Url;\n }\n\n addFolder({ parentAssetId, folderName }: IAddFolderPayload) {\n const params = new HttpParams()\n .set('parentAssetId', parentAssetId)\n .set('folderName', folderName);\n return this._api.post<any>(`${this.baseUrl}/File/Addfolder`, null, {\n params,\n });\n }\n\n updateFile({ assetId, fileName, description }: IUpdateFilePayload) {\n let params = new HttpParams()\n .set('assetId', assetId)\n .set('fileName', fileName);\n if (description) {\n params = params.set('Description', description);\n }\n return this._api.post<any>(`${this.baseUrl}/File/Update`, null, { params });\n }\n\n replaceAsset(assetId: string, file: File) {\n const formData = new FormData();\n formData.append('AssetId', assetId);\n formData.append('files', file);\n formData.append('KeepOldName', 'true');\n\n return this._api.post<any>(`${this.baseUrl}/File/Replace`, formData);\n }\n\n deleteFile(ids: string[]) {\n const headers = new HttpHeaders().set('Content-Type', 'application/json');\n\n return this._api.request('delete', `${this.baseUrl}/File/Delete`, {\n headers,\n body: ids,\n });\n }\n\n getFileDetail(id: string) {\n const params = new HttpParams().set('IncludeDetailedWidth', 'true');\n\n return this._api.get<any>(`${this.baseUrl}/File/GetById/${id}`, { params });\n }\n}\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { takeUntil } from 'rxjs/operators';\nimport { AssetModel, DialogConfig } from '../../../models';\nimport { AssetService } from '../../../services/asset.service';\nimport { select } from '../../../store';\n\n@Component({\n selector: 'lib-asset-management-dialog',\n templateUrl: './asset-management-dialog.component.html',\n styleUrls: ['./asset-management-dialog.component.scss'],\n})\nexport class AssetManagementDialogComponent implements OnInit, OnDestroy {\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: DialogConfig,\n public dialogRef: MatDialogRef<AssetManagementDialogComponent>,\n private assetService: AssetService\n ) { }\n private destroy$: Subject<boolean> = new Subject();\n public selectedAssets: Array<AssetModel> = [];\n\n ngOnInit() {\n this.initDialogConfig(this.data);\n select((state) => state.selectedAssets)\n .pipe(takeUntil(this.destroy$))\n .subscribe((selectedAssets) => {\n this.selectedAssets = selectedAssets;\n });\n }\n\n get disabled(): boolean {\n const { limit } = this.data;\n return (\n (!this.selectedAssets || !this.selectedAssets.length) ||\n (limit && this.selectedAssets.length > limit)\n );\n }\n\n selectAssets() {\n this.dialogRef.close(this.selectedAssets);\n }\n\n initDialogConfig(data: DialogConfig) {\n if (!data) {\n return;\n }\n \n this.assetService.dialogConfig = data;\n this.assetService.maxSize = data.maxSize;\n }\n\n ngOnDestroy(): void {\n this.assetService.dialogConfig = new DialogConfig();\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from './asset-management.service';\nimport { AssetManagementDialogComponent } from './components/partial/asset-management-dialog/asset-management-dialog.component';\nimport { AssetModel, DialogConfig } from './models';\nimport { AssetService } from './services/asset.service';\nimport { initialReducer } from './store';\n\n@Component({\n selector: 'lib-asset-management',\n templateUrl: './asset-management.component.html',\n styleUrls: ['./asset-management.component.scss'],\n providers: [AssetService]\n})\nexport class AssetManagementComponent implements OnInit, OnDestroy {\n @Input() isDialog ? = true;\n @Input() limit?: number;\n @Input() allowedType?: string;\n @Input() maxSize?: number;\n @Output() assetChange = new EventEmitter<AssetModel[]>();\n\n private destroy$: Subject<boolean> = new Subject();\n\n constructor(\n private dialog: MatDialog,\n private svc: AssetManagementService,\n private assetService: AssetService\n ) {}\n\n ngOnInit() {\n this.assetService.maxSize = this.maxSize;\n initialReducer(this.svc.getDispatcher());\n this.bindSubscriber();\n }\n\n bindSubscriber() {\n this.assetService\n .getDialogOpenStatus()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if (res) {\n this.openAssetsDialog();\n }\n });\n }\n\n onAssetsChange(assets) {\n if (!assets) {\n return;\n }\n this.assetChange.emit(assets);\n }\n\n openAssetsDialog() {\n const config: DialogConfig = {\n limit: this.limit,\n allowedType: this.allowedType,\n maxSize: this.maxSize\n };\n const dialogRef = this.dialog.open(AssetManagementDialogComponent, {\n autoFocus: false,\n panelClass: 'lib-dialog--large',\n data: config,\n });\n dialogRef\n .afterClosed()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if (res) {\n this.assetChange.emit(res);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { AssetService } from '../services/asset.service';\n\n@Directive({\n selector: '[libDialogTrigger]',\n})\nexport class DialogTriggerDirective {\n constructor(private assetService: AssetService) {}\n @HostListener('click', ['$event.target'])\n onClick(event) {\n this.openAssetsDialog();\n }\n openAssetsDialog() {\n this.assetService.setDialogOpenStatus(true);\n }\n}\n","import { Directive, Output, EventEmitter, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[libDnDFile]',\n})\nexport class DndDirective {\n @Output() imageDropped = new EventEmitter<any>();\n\n // Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n // Dragleave listener\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n // Drop listener\n @HostListener('drop', ['$event']) public ondrop(event: any) {\n event.preventDefault();\n event.stopPropagation();\n let files = event.dataTransfer.files;\n files = Array.from(files);\n this.imageDropped.emit(files);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DialogTriggerDirective } from './dialogTrigger.directive';\nimport { DndDirective } from './dnd.directive';\n\nexport const DIRECTIVES = [DndDirective, DialogTriggerDirective];\n\n@NgModule({\n declarations: [...DIRECTIVES],\n imports: [CommonModule],\n exports: [...DIRECTIVES],\n})\nexport class DirectivesModule {}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'lib-input-file',\n templateUrl: './input-file.component.html',\n styleUrls: ['./input-file.component.scss'],\n})\nexport class InputFileComponent {\n @Input() color: string;\n @Input() multiple = true;\n @Input() acceptTypes: string;\n @Output('onFileChange') fileChange = new EventEmitter<Event>();\n\n constructor() {}\n\n onFileChange(event: any) {\n let { files } = event.target;\n if (files.length < 1) {\n return;\n }\n\n files = Array.from(files);\n this.fileChange.emit(files);\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n})\nexport class ModalComponent implements OnInit {\n @Input() heading: string;\n @Input() customHeader = false;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","// tslint:disable:max-line-length\nexport const imageDefault =\n \"data:image/png;base64,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\";\n\nexport const searchNotFound =\n \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iNzAiIHZpZXdCb3g9IjAgMCA4MCA3MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTU5LjM4MDEgNDQuMDRINTYuMjIwMUw1NS4xMDAxIDQyLjk2QzU5LjAyMDEgMzguNCA2MS4zODAxIDMyLjQ4IDYxLjM4MDEgMjYuMDRDNjEuMzgwMSAxMS42OCA0OS43NDAxIDAuMDQwMDM5MSAzNS4zODAxIDAuMDQwMDM5MUMyMS43MDAxIDAuMDQwMDM5MSAxMC41MDAxIDEwLjYgOS41MDAwNiAyNC4wNEgxNy41ODAxQzE4LjU4MDEgMTUuMDQgMjYuMTAwMSA4LjA0MDA0IDM1LjM4MDEgOC4wNDAwNEM0NS4zNDAxIDguMDQwMDQgNTMuMzgwMSAxNi4wOCA1My4zODAxIDI2LjA0QzUzLjM4MDEgMzYgNDUuMzQwMSA0NC4wNCAzNS4zODAxIDQ0LjA0QzM0LjcwMDEgNDQuMDQgMzQuMDYwMSA0My45MiAzMy4zODAxIDQzLjg0VjUxLjkyQzM0LjA2MDEgNTIgMzQuNzAwMSA1Mi4wNCAzNS4zODAxIDUyLjA0QzQxLjgyMDEgNTIuMDQgNDcuNzQwMSA0OS42OCA1Mi4zMDAxIDQ1Ljc2TDUzLjM4MDEgNDYuODhWNTAuMDRMNzMuMzgwMSA3MEw3OS4zNDAxIDY0LjA0TDU5LjM4MDEgNDQuMDRaIiBmaWxsPSIjNkZDMEZGIi8+CjxwYXRoIGQ9Ik0yMy4yNiAzMS4zMjAzTDEzLjM4IDQxLjIwMDNMMy41MDAwMyAzMS4zMjAzTDAuNjYwMDM0IDM0LjE2MDNMMTAuNTQgNDQuMDQwM0wwLjY2MDAzNCA1My45MjAzTDMuNTAwMDMgNTYuNzYwM0wxMy4zOCA0Ni44ODAzTDIzLjI2IDU2Ljc2MDNMMjYuMSA1My45MjAzTDE2LjIyIDQ0LjA0MDNMMjYuMSAzNC4xNjAzTDIzLjI2IDMxLjMyMDNaIiBmaWxsPSIjNkZDMEZGIi8+Cjwvc3ZnPgo=\";\n\nexport const imagePdf =\n \"data:image/png;base64,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\";\n\nexport const imageZip = \n \"data:image/png;base64,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\";\n\nexport const imageCsv =\n \"data:image/png;base64,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\";\n\nexport const fileDefault = \"data:image/png;base64,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\"\n // tslint:enable:max-line-length\n","import { Component, OnInit } from '@angular/core';\nimport { searchNotFound } from '../../../contanst';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'lib-search-not-found',\n templateUrl: './search-not-found.component.html',\n styleUrls: ['./search-not-found.component.scss'],\n})\nexport class SearchNotFoundComponent implements OnInit {\n public base64Image = this.domSanitizer.bypassSecurityTrustUrl(searchNotFound);\n constructor(private domSanitizer: DomSanitizer) {}\n\n ngOnInit() {}\n}\n","import { Component, OnInit, Output, Input, EventEmitter } from '@angular/core';\nimport { UploadAssetsService } from '../../../services/upload-assets.service';\nimport { imagePdf, imageZip, imageCsv } from '../../../contanst';\nimport { DomSanitizer } from '@angular/platform-browser';\n@Component({\n selector: 'lib-file-item',\n templateUrl: './file-item.component.html',\n styleUrls: ['./file-item.component.scss'],\n})\nexport class FileItemComponent implements OnInit {\n public documentExts = ['pdf', 'zip', 'csv'];\n public base64PNG = {\n pdf: this.domSanitizer.bypassSecurityTrustUrl(imagePdf),\n zip: this.domSanitizer.bypassSecurityTrustUrl(imageZip),\n csv: this.domSanitizer.bypassSecurityTrustUrl(imageCsv),\n };\n @Input() file: File;\n @Output() checkError = new EventEmitter();\n @Output() fileChange = new EventEmitter();\n @Output() fileRemove = new EventEmitter();\n public dataFile = {\n name: '',\n size: 0,\n ext: '',\n data: null,\n errors: {\n maxLength: false,\n ext: false,\n size: false,\n },\n };\n\n constructor(\n private domSanitizer: DomSanitizer,\n public uploadAssetService: UploadAssetsService\n ) {}\n\n ngOnInit() {\n this.initDataFile();\n }\n\n private initDataFile(): void {\n this.setDetailsFile();\n this.setErrorFile();\n }\n\n private setDetailsFile() {\n const { name, size } = this.file;\n const { getFiles: files } = this.uploadAssetService;\n const names = files.filter(file => file.name === name);\n const nameSplit = name.split('.');\n if (names.length > 1) {\n nameSplit[0] = `${nameSplit[0]}(${names.length - 1})`;\n }\n this.dataFile.ext = nameSplit.splice(nameSplit.length - 1, 1)[0];\n this.dataFile.name = nameSplit.join('.');\n this.dataFile.size = size;\n }\n\n private setErrorFile() {\n const { supportedTypes, supportedSize, fileNames } = this.uploadAssetService;\n const { name, ext: extFile, size: sizeFile } = this.dataFile;\n this.dataFile.errors = {\n maxLength: name.length + extFile.length > 199,\n ext: supportedTypes.indexOf(`.${extFile}`) < 0,\n size: supportedSize < sizeFile,\n };\n\n if (this.file.type.indexOf('image') > -1) {\n const reader = new FileReader();\n reader.readAsDataURL(this.file);\n reader.onload = (readerEvent: any) => {\n const img = document.createElement('img');\n img.src = readerEvent.target.result as string;\n\n img.onload = () => {\n this.dataFile.data = this.domSanitizer.bypassSecurityTrustUrl(\n readerEvent.target.result\n );\n };\n };\n }\n\n fileNames.push({\n name,\n valid: this.checkErrors()\n });\n this.uploadAssetService.setErrorObs(this.uploadAssetService.errorFiles);\n }\n\n private checkErrors() {\n const { ext, size, maxLength } = this.dataFile.errors;\n return (ext || size || maxLength) ? false : true;\n }\n\n onChange(event: Event) {\n this.dataFile.name = (event.target as HTMLInputElement).value.trim();\n const { name, ext } = this.dataFile;\n this.dataFile.errors.maxLength = name.length + ext.length > 199;\n this.fileChange.emit({\n name: this.dataFile.name,\n valid: this.checkErrors()\n });\n }\n\n onRemove() {\n this.fileRemove.emit(true);\n }\n}\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { UploadAssetsService } from '../../../services/upload-assets.service';\n\n@Component({\n selector: 'lib-file-list',\n templateUrl: './file-list.component.html',\n styleUrls: ['./file-list.component.scss'],\n})\nexport class FileListComponent implements OnInit {\n @Output() revalidate = new EventEmitter();\n constructor(public uploadAssetsService: UploadAssetsService) {}\n\n ngOnInit() {}\n\n onFileChange(newFiles: File[]): void {\n const { getFiles: files } = this.uploadAssetsService;\n this.uploadAssetsService.setFiles = [...files, ...newFiles];\n (document.getElementById('file-import') as HTMLInputElement).value = '';\n }\n\n onDelFile(index: number) {\n this.uploadAssetsService.deleteFile(index);\n this.revalidate.emit(this.uploadAssetsService.errorFiles);\n }\n\n onChangeName({name, valid}, index: number) {\n const { fileNames } = this.uploadAssetsService;\n fileNames[index] = { name, valid };\n this.uploadAssetsService.setErrorObs(this.uploadAssetsService.errorFiles);\n }\n\n onEmitError(): void {\n this.revalidate.emit(this.uploadAssetsService.errorFiles);\n }\n}\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { UploadAssetsService } from '../../../services/upload-assets.service';\nimport { imageDefault } from '../../../contanst';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'lib-upload-file',\n templateUrl: './upload-file.component.html',\n styleUrls: ['./upload-file.component.scss'],\n})\nexport class UploadFileComponent implements OnInit {\n public base64Image = this.domSanitizer.bypassSecurityTrustUrl(imageDefault);\n @Output() revalidate = new EventEmitter();\n public isDragging = false;\n\n constructor(\n private domSanitizer: DomSanitizer,\n public uploadAssetsService: UploadAssetsService\n ) {}\n\n ngOnInit() {}\n\n onFileChange(newFiles: any): void {\n this.isDragging = false;\n const { getFiles: files } = this.uploadAssetsService;\n this.uploadAssetsService.setFiles = [...files, ...newFiles];\n }\n\n onEmitError(): void {\n this.revalidate.emit(this.uploadAssetsService.errorFiles);\n }\n\n onDragover(_event: Event) {\n this.isDragging = true;\n }\n\n onDragleave(_event: Event) {\n this.isDragging = false;\n }\n}\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { IAddFolderRes } from '../../../models';\nimport { FileService } from '../../../services/file.service';\n\ninterface IData {\n currentAssetId: string;\n}\n\n@Component({\n selector: 'lib-add-folder-dialog',\n templateUrl: './add-folder-dialog.component.html',\n styleUrls: ['./add-folder-dialog.component.scss'],\n})\nexport class AddFolderDialogComponent implements OnInit, OnDestroy {\n public isLoading = false;\n public errorMessage = '';\n public value = '';\n private destroy$: Subject<boolean> = new Subject();\n public formGroup: FormGroup;\n public form: FormControl = new FormControl();\n constructor(\n private fb: FormBuilder,\n @Inject(MAT_DIALOG_DATA) public data: IData,\n public dialogRef: MatDialogRef<AddFolderDialogComponent>,\n private fileService: FileService\n ) {\n this.formGroup = this.fb.group({\n name: ['', [\n Validators.maxLength(200),\n Validators.required\n ]],\n });\n }\n\n ngOnInit() {}\n\n get disabled() {\n const { value: name } = this.formGroup.controls.name;\n return !name || !!this.errorMessage || this.isLoading;\n }\n\n onChange(_event: Event) {\n this.errorMessage = '';\n }\n\n addFolder() {\n const { value: name } = this.formGroup.controls.name;\n this.isLoading = true;\n this.fileService\n .addFolder({\n parentAssetId: this.data.currentAssetId,\n folderName: name.trim(),\n })\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (_res: IAddFolderRes) => this.closeDialog(true),\n err => {\n this.isLoading = false;\n this.errorMessage = err.ResponseMessage;\n }\n );\n }\n\n closeDialog(res?: boolean) {\n this.dialogRef.close(res);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { FileService } from '../../../services/file.service';\nimport { IAssetUpdatedRes } from '../../../models';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\n\ninterface IData {\n assetId: string;\n name: string;\n}\n\n@Component({\n selector: 'lib-edit-folder-dialog',\n templateUrl: './edit-folder-dialog.component.html',\n styleUrls: ['./edit-folder-dialog.component.scss'],\n})\nexport class EditFolderDialogComponent implements OnInit, OnDestroy {\n public isLoading = false;\n public errorMessage = '';\n public value = '';\n private destroy$: Subject<boolean> = new Subject();\n public formGroup: FormGroup;\n public form: FormControl = new FormControl();\n constructor(\n private fb: FormBuilder,\n @Inject(MAT_DIALOG_DATA) public data: IData,\n public dialogRef: MatDialogRef<EditFolderDialogComponent>,\n private fileService: FileService\n ) {\n this.formGroup = this.fb.group({\n name: [this.data.name, [\n Validators.maxLength(200),\n Validators.required\n ]],\n });\n }\n\n ngOnInit() {}\n\n get disabled() {\n const { value: name } = this.formGroup.controls.name;\n return (\n !name ||\n !!this.errorMessage ||\n name.toLowerCase().trim() === this.data.name.toLowerCase() ||\n this.isLoading\n );\n }\n\n onChange(_event: Event) {\n this.errorMessage = '';\n }\n\n editFolder() {\n const { value: name } = this.formGroup.controls.name;\n this.isLoading = true;\n this.fileService\n .updateFile({\n assetId: this.data.assetId,\n fileName: name.trim(),\n })\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (_res: IAssetUpdatedRes) => this.closeDialog(true),\n err => {\n this.isLoading = false;\n this.errorMessage = err.ResponseMessage;\n }\n );\n }\n\n closeDialog(res?: boolean) {\n this.dialogRef.close(res);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import { Component, Inject, OnInit, OnDestroy } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { FileService } from '../../../services/file.service';\nimport { IAssetDetailsRes } from '../../../models';\nimport { AssetService } from '../../../services/asset.service';\n\ninterface IData {\n type: 'file' | 'folder' | 'files';\n ids: string[];\n name?: string;\n}\n\n@Component({\n selector: 'lib-delete-dialog',\n templateUrl: './delete-dialog.component.html',\n styleUrls: ['./delete-dialog.component.scss'],\n})\nexport class DeleteDialogComponent implements OnInit, OnDestroy {\n public isLoading = false;\n private destroy$: Subject<boolean> = new Subject();\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: IData,\n public dialogRef: MatDialogRef<DeleteDialogComponent>,\n private fileService: FileService,\n private assetService: AssetService\n ) {}\n\n ngOnInit() {}\n\n delete() {\n this.isLoading = true;\n this.fileService\n .deleteFile(this.data.ids)\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (_res: IAssetDetailsRes) => {\n this.handleAssetPaging();\n this.isLoading = false;\n this.closeDialog(true);\n },\n (_err) => {\n this.isLoading = false;\n console.log('deleted fail', _err);\n }\n );\n }\n\n private handleAssetPaging() {\n this.assetService\n .getAssetList()\n .pipe(takeUntil(this.destroy$))\n .subscribe((assets) => {\n if (\n assets &&\n assets.length === this.data.ids.length &&\n this.assetService.pageIndex > 0\n ) {\n this.assetService.pageIndex--;\n }\n });\n }\n\n closeDialog(res?: boolean) {\n this.dialogRef.close(res);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { ChangeDetectorRef } from '@angular/core';\nimport { UploadAssetsService } from '../../../services/upload-assets.service';\n\ninterface IData {\n currentAssetId: string;\n fileType?: string;\n maxSize?: number;\n}\n\n@Component({\n selector: 'lib-upload-dialog',\n templateUrl: './upload-dialog.component.html',\n styleUrls: ['./upload-dialog.component.scss'],\n providers: [UploadAssetsService],\n})\nexport class UploadDialogComponent implements OnInit, OnDestroy {\n public isLoading = false;\n public disabled = true;\n private destroy$: Subject<boolean> = new Subject();\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: IData,\n public dialogRef: MatDialogRef<UploadDialogComponent>,\n private changeDetectorRef: ChangeDetectorRef,\n public uploadAssetsService: UploadAssetsService\n ) {\n if (this.data.fileType) {\n this.uploadAssetsService.supportedTypes =\n this.data.fileType === 'Image'\n ? [...this.uploadAssetsService.imageExtension]\n : [...this.uploadAssetsService.documentExtension];\n }\n \n if (this.data.maxSize) {\n this.uploadAssetsService.supportedSize = this.data.maxSize * 1024 * 1024;\n }\n\n }\n\n ngOnInit() {\n this.uploadAssetsService\n .getErrorObs()\n .pipe(takeUntil(this.destroy$))\n .subscribe(error => {\n this.disabled = error;\n this.changeDetectorRef.detectChanges();\n });\n }\n\n onValidate(hasError: boolean) {\n this.disabled = hasError;\n }\n\n uploadFiles() {\n this.isLoading = true;\n this.uploadAssetsService\n .uploadMultipleAssets(this.data.currentAssetId)\n .pipe(takeUntil(this.destroy$))\n .subscribe(res => {\n if (res) {\n this.closeDialog(true);\n }\n });\n }\n\n closeDialog(res?: boolean) {\n this.dialogRef.close(res);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AssetModel } from '../../../models';\nimport { ActionTypes } from '../../../store/actions.action';\nimport { EditFolderDialogComponent } from '../edit-folder-dialog/edit-folder-dialog.component';\nimport { DeleteDialogComponent } from '../delete-dialog/delete-dialog.component';\nimport { AssetManagementService } from '../../../asset-management.service';\n\n@Component({\n selector: 'lib-folder-item',\n templateUrl: './folder-item.component.html',\n styleUrls: ['./folder-item.component.scss'],\n})\nexport class FolderItemComponent implements OnInit {\n constructor(private dialog: MatDialog, private svc: AssetManagementService) {}\n @Input() folder: AssetModel;\n ngOnInit() {}\n\n openFolder() {\n this.svc.dispatch({\n type: ActionTypes.SET_CURRENT_FOLDER_ID,\n payload: this.folder.AssetId,\n });\n }\n\n renameFolder() {\n const dialogRef = this.dialog.open(EditFolderDialogComponent, {\n data: {\n assetId: this.folder.AssetId,\n name: this.folder.OriginalFileName,\n },\n panelClass: 'lib-dialog--small',\n });\n\n dialogRef.afterClosed().subscribe(res => {\n if (res) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_FOLDER,\n });\n }\n });\n }\n\n deleteFolder() {\n const dialogRef = this.dialog.open(DeleteDialogComponent, {\n data: {\n type: 'folder',\n ids: [this.folder.AssetId],\n name: this.folder.OriginalFileName,\n },\n panelClass: 'lib-dialog--small',\n autoFocus: false,\n });\n\n dialogRef.afterClosed().subscribe(res => {\n if (res) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_FOLDER,\n });\n }\n });\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { takeUntil } from 'rxjs/operators';\nimport { AssetModel } from '../../../models';\nimport { select } from '../../../store';\n\n@Component({\n selector: 'lib-folder-list',\n templateUrl: './folder-list.component.html',\n styleUrls: ['./folder-list.component.scss'],\n})\nexport class FolderListComponent implements OnInit, OnDestroy {\n\n constructor() {\n this.bindSubscriber();\n }\n\n @Input() folders: AssetModel[];\n public loading = false;\n private unsubscribe$ = new Subject<void>();\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n private bindSubscriber() {\n select(state => state.globalLoading)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(globalLoading => {\n this.loading = globalLoading;\n });\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { of } from 'rxjs/internal/observable/of';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { AssetModel } from '../../../models';\nimport { AssetService } from '../../../services/asset.service';\nimport { ActionTypes } from '../../../store/actions.action';\nimport { select } from '../../../store/reducer';\n\n@Component({\n selector: 'lib-asset-list',\n templateUrl: './asset-list.component.html',\n styleUrls: ['./asset-list.component.scss'],\n})\nexport class AssetListComponent implements OnInit, OnChanges, OnDestroy {\n constructor(\n private assetService: AssetService,\n private svc: AssetManagementService\n ) {}\n\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\n @Input() assets: AssetModel[];\n\n private unsubscribe$ = new Subject<void>();\n private currentFolderId: string;\n private selectedAssets: Array<AssetModel> = [];\n\n ngOnInit() {\n this.bindSubscriber();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.assets) {\n this.paginator.pageIndex = this.assetService.pageIndex;\n this.paginator.pageSize = this.assetService.pageSize;\n this.paginator.length = this.assetService.fileTotal;\n }\n }\n\n public onSelectAsset(event: AssetModel) {\n const index = this.selectedAssets.findIndex(\n (asset) => asset.AssetId === event.AssetId\n );\n const newSelectedAssets: AssetModel[] =\n index > -1\n ? this.selectedAssets.filter((asset, i) => index !== i)\n : [...this.selectedAssets, event];\n\n this.svc.dispatch({\n type: ActionTypes.SET_SELECTED_ASSETS,\n payload: newSelectedAssets,\n });\n }\n\n private bindSubscriber() {\n select((state) => state.deletedAssetId)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((id) => {\n if (this.selectedAssets && this.selectedAssets.length) {\n const newSelectedAssets = this.selectedAssets.filter(\n (asset) => asset.AssetId !== id\n );\n this.svc.dispatch({\n type: ActionTypes.SET_SELECTED_ASSETS,\n payload: newSelectedAssets,\n });\n }\n });\n\n select((state) => state.currentFolderId)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((currentFolderId) => {\n this.currentFolderId = currentFolderId;\n this.svc.dispatch({\n type: ActionTypes.SET_SELECTED_ASSETS,\n payload: [],\n });\n });\n\n select((state) => state.selectedAssets)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((selectedAssets) => {\n this.selectedAssets = selectedAssets;\n });\n\n select((state) => state.reloadCurrentAssets)\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap((res) => of(res))\n )\n .subscribe(() => {\n this.fetchChildrenAssets();\n });\n }\n\n public pageChange(event?: PageEvent) {\n this.assetService.pageSize = event.pageSize;\n this.assetService.pageIndex = event.pageIndex;\n this.fetchChildrenAssets();\n }\n\n private fetchChildrenAssets() {\n if (!this.currentFolderId) {\n return;\n }\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: true,\n });\n\n this.assetService\n .getChildrenAssets({ assetId: this.currentFolderId })\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((res) => {\n this.assetService.setAssetList(res.Data.Children, res.Meta);\n })\n .add(() => {\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: false,\n });\n });\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\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 { Component, Inject, OnInit, OnDestroy } from '@angular/core';\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from '@angular/material/dialog';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { imagePdf, imageZip, imageCsv } from '../../../contanst';\nimport {\n AssetModel,\n FileTypeEnum,\n IAssetDetailsRes,\n IAssetUpdatedRes,\n} from '../../../models';\nimport { FileSizePipe } from '../../../pipes/file-size.pipe';\nimport { AssetService } from '../../../services/asset.service';\nimport { AM_CONFIG } from '../../../services/env-config.service';\nimport { FileService } from '../../../services/file.service';\nimport { UploadAssetsService } from '../../../services/upload-assets.service';\nimport { ActionTypes } from '../../../store';\nimport { DeleteDialogComponent } from '../delete-dialog/delete-dialog.component';\n\ninterface IData {\n assetId: string;\n name: string;\n}\n\n@Component({\n selector: 'lib-asset-dialog',\n templateUrl: './asset-dialog.component.html',\n styleUrls: ['./asset-dialog.component.scss'],\n providers: [FileSizePipe],\n})\nexport class AssetDialogComponent implements OnInit, OnDestroy {\n public fileName = '';\n public description = '';\n public linkDownload = '';\n public isCopied = false;\n public errorMessage = '';\n public patternError = false;\n public replaceMessage = '';\n public acceptTypes: string[];\n public assetDetails: AssetModel;\n private destroy$: Subject<boolean> = new Subject();\n public base64PNG = {\n pdf: this.domSanitizer.bypassSecurityTrustUrl(imagePdf),\n zip: this.domSanitizer.bypassSecurityTrustUrl(imageZip),\n csv: this.domSanitizer.bypassSecurityTrustUrl(imageCsv),\n };\n private timer;\n public isLoading = true;\n public isUpdating = false;\n public fileType = FileTypeEnum;\n\n constructor(\n @Inject(AM_CONFIG) private _env,\n private dialog: MatDialog,\n @Inject(MAT_DIALOG_DATA) public data: IData,\n public dialogRef: MatDialogRef<AssetDialogComponent>,\n private fileSize: FileSizePipe,\n public uploadAssetsService: UploadAssetsService,\n public assetsService: AssetService,\n private fileService: FileService,\n private domSanitizer: DomSanitizer,\n private svc: AssetManagementService\n ) {}\n\n ngOnInit() {\n this.uploadAssetsService.supportedSize = this.assetsService.maxSize * 1024 * 1024;\n this.linkDownload = `${this._env.asset2Url}/File/Download/${this.data.assetId}`;\n this.getAssetDetail();\n }\n\n get disabled() {\n return (\n !this.fileName.length ||\n this.fileName.length + this.assetDetails.Extension.length > 199 || // limit 200\n !!this.errorMessage ||\n this.patternError ||\n this.isUpdating\n );\n }\n\n closeDialog(res?: boolean) {\n this.dialogRef.close(res);\n }\n\n getAssetDetail() {\n this.fileService\n .getFileDetail(this.data.assetId)\n .pipe(takeUntil(this.destroy$))\n .subscribe((res: IAssetDetailsRes) => {\n if (res) {\n this.isLoading = false;\n this.assetDetails = res.Data;\n this.fileName = this.assetDetails.OriginalFileNameWithoutExtension;\n this.description = this.assetDetails.Description;\n this.acceptTypes = [`.${this.assetDetails.Extension.toLowerCase()}`];\n }\n });\n }\n\n updateAsset() {\n this.isUpdating = true;\n this.fileService\n .updateFile({\n assetId: this.assetDetails.AssetId,\n fileName: this.fileName.trim(),\n description: this.description && this.description.trim(),\n })\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (_res: IAssetUpdatedRes) => {\n this.isUpdating = false;\n this.closeDialog(true);\n },\n err => {\n this.errorMessage = err.ResponseMessage;\n this.isUpdating = false;\n }\n );\n }\n\n deleteAsset() {\n const dialogRef = this.dialog.open(DeleteDialogComponent, {\n data: {\n type: 'file',\n ids: [this.assetDetails.AssetId],\n name: this.assetDetails.OriginalFileNameWithoutExtension,\n },\n panelClass: 'lib-dialog--small',\n autoFocus: false,\n });\n\n dialogRef.afterClosed().subscribe(res => {\n if (res) {\n this.closeDialog(true);\n this.svc.dispatch({\n type: ActionTypes.DELETE_ASSET,\n payload: this.assetDetails.AssetId,\n });\n }\n });\n }\n\n replaceAsset(files: File[]) {\n if (!this.validateFile(files[0])) {\n return;\n }\n this.isLoading = true;\n this.fileService\n .replaceAsset(this.assetDetails.AssetId, files[0])\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (_res: IAssetDetailsRes) => {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_ASSETS,\n });\n this.getAssetDetail();\n },\n err => {\n this.isLoading = false;\n this.replaceMessage = err.ResponseMessage;\n }\n );\n }\n\n validateFile(file: File) {\n this.replaceMessage = '';\n if (!file) {\n return;\n }\n const ext = this.matchExt(file.type);\n const errors = [];\n\n if (this.acceptTypes.indexOf(ext) < 0) {\n const extError = `${\n this.uploadAssetsService.messageErrors.replace\n } ${this.acceptTypes.join(', ')}`;\n errors.push(extError);\n }\n if (this.uploadAssetsService.supportedSize < file.size) {\n const maxSize = this.fileSize.transform(\n this.uploadAssetsService.supportedSize,\n 0\n );\n errors.push(`${this.uploadAssetsService.messageErrors.size} ${maxSize}`);\n }\n\n if (errors.length) {\n this.replaceMessage = errors.join('<br/>');\n }\n\n return !errors.length;\n }\n\n matchExt(fileType: string) {\n const ext = `.${fileType.split('/')[1].toLowerCase()}`;\n\n switch (ext) {\n case '.jpeg':\n return '.jpg';\n\n case '.svg+xml':\n return '.svg';\n\n default:\n return ext;\n }\n }\n\n onChangeName(event: Event) {\n this.fileName = (event.target as HTMLInputElement).value;\n this.errorMessage = '';\n this.patternError = this.fileName && !this.fileName.match(/.*\\S+.*/);\n }\n\n onChangeDescription(event: Event) {\n this.description = (event.target as HTMLInputElement).value;\n }\n\n copyText(content: string) {\n const selBox = document.createElement('textarea');\n\n selBox.style.position = 'fixed';\n selBox.style.left = '0';\n selBox.style.top = '0';\n selBox.style.opacity = '0';\n selBox.value = content;\n document.body.appendChild(selBox);\n selBox.focus();\n selBox.select();\n document.execCommand('copy');\n document.body.removeChild(selBox);\n\n this.isCopied = true;\n this.timer = setTimeout(() => {\n this.isCopied = false;\n }, 1000);\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.timer);\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { imagePdf, imageZip, imageCsv, fileDefault } from '../../../contanst';\nimport { AssetModel, FileTypeEnum } from '../../../models';\nimport { AssetService } from '../../../services/asset.service';\nimport { ActionTypes, select } from '../../../store';\nimport { AssetDialogComponent } from '../asset-dialog/asset-dialog.component';\n\n@Component({\n selector: 'lib-asset-item',\n templateUrl: './asset-item.component.html',\n styleUrls: ['./asset-item.component.scss'],\n})\nexport class AssetItemComponent implements OnInit, OnDestroy {\n constructor(\n private dialog: MatDialog,\n private domSanitizer: DomSanitizer,\n private svc: AssetManagementService,\n private assetService: AssetService\n ) {\n this.bindSubscriber();\n }\n @Input() asset: AssetModel;\n\n @Output() selectAsset = new EventEmitter<AssetModel>();\n\n public base64PNG = {\n pdf: this.domSanitizer.bypassSecurityTrustUrl(imagePdf),\n zip: this.domSanitizer.bypassSecurityTrustUrl(imageZip),\n csv: this.domSanitizer.bypassSecurityTrustUrl(imageCsv),\n default: this.domSanitizer.bypassSecurityTrustUrl(fileDefault),\n };\n public selectedAssets: Array<AssetModel> = [];\n public fileType = FileTypeEnum;\n private destroy$: Subject<boolean> = new Subject();\n\n ngOnInit() {}\n\n get checkSelectedAsset(): boolean {\n return (\n this.selectedAssets &&\n this.selectedAssets.some((asset) => asset.AssetId === this.asset.AssetId)\n );\n }\n\n private bindSubscriber() {\n select((state) => state.selectedAssets)\n .pipe(takeUntil(this.destroy$))\n .subscribe((selectedAssets) => {\n this.selectedAssets = selectedAssets;\n });\n }\n\n public onChange() {\n this.selectAsset.emit(this.asset);\n }\n\n public editAsset() {\n const dialogRef = this.dialog.open(AssetDialogComponent, {\n autoFocus: false,\n data: {\n assetId: this.asset.AssetId,\n name: this.asset.OriginalFileNameWithoutExtension,\n },\n panelClass: 'lib-dialog--medium',\n });\n if (dialogRef) {\n dialogRef.afterClosed().subscribe((res) => {\n if (res) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_ASSETS,\n });\n }\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import {\n CollectionViewer,\n DataSource,\n SelectionChange,\n} from '@angular/cdk/collections';\nimport { FlatTreeControl } from '@angular/cdk/tree';\nimport { BehaviorSubject, merge, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DynamicFlatNode } from '../models';\nimport { NodeTreeService } from '../services/node-tree.service';\n\nexport class NodeTreeDataSource implements DataSource<DynamicFlatNode> {\n dataChange = new BehaviorSubject<DynamicFlatNode[]>([]);\n\n get data(): DynamicFlatNode[] {\n return this.dataChange.value;\n }\n set data(value: DynamicFlatNode[]) {\n this._treeControl.dataNodes = value;\n this.dataChange.next(value);\n }\n\n constructor(\n private _treeControl: FlatTreeControl<DynamicFlatNode>,\n private _database: NodeTreeService\n ) {}\n\n connect(collectionViewer: CollectionViewer): Observable<DynamicFlatNode[]> {\n this._treeControl.expansionModel.changed.subscribe((change) => {\n if (\n (change as SelectionChange<DynamicFlatNode>).added ||\n (change as SelectionChange<DynamicFlatNode>).removed\n ) {\n this.handleTreeControl(change as SelectionChange<DynamicFlatNode>);\n }\n });\n\n return merge(collectionViewer.viewChange, this.dataChange).pipe(\n map(() => this.data)\n );\n }\n\n disconnect(collectionViewer: CollectionViewer): void {}\n\n /** Handle expand/collapse behaviors */\n handleTreeControl(change: SelectionChange<DynamicFlatNode>) {\n if (change.added) {\n change.added.forEach(async (node) => await this.toggleNode(node, true));\n }\n if (change.removed) {\n change.removed\n .slice()\n .reverse()\n .forEach(async (node) => await this.toggleNode(node, false));\n }\n }\n\n /**\n * Toggle the node, remove from display list\n */\n async toggleNode(node: DynamicFlatNode, expand: boolean) {\n if (!node) {\n return;\n }\n node.isLoading = true;\n const index = this.data.indexOf(node);\n if (index < 0) {\n // If cannot find the node, no op\n return;\n }\n\n if (expand) {\n const newNode = await this._database.getChildren(node.item);\n if (!newNode) {\n // If no children, no op\n return;\n }\n const nodes = newNode.Children.map((child) => {\n this._database.addNode(child, node.item.AssetId);\n return new DynamicFlatNode(\n child,\n node.level + 1,\n this._database.isExpandable(child)\n );\n });\n this.data.splice(index + 1, 0, ...nodes);\n } else {\n let count = 0;\n for (\n let i = index + 1;\n i < this.data.length && this.data[i].level > node.level;\n i++, count++\n ) {}\n this.data.splice(index + 1, count);\n }\n\n // notify the change\n node.isLoading = false;\n this.dataChange.next(this.data);\n }\n\n /**\n * Reload the node, remove from display list\n */\n public async reloadNode(node: DynamicFlatNode) {\n if (!node) {\n return;\n }\n const newNode = await this._database.getChildren(node.item);\n const index = this.data.indexOf(node);\n if (!newNode || index < 0) {\n // If no children, or cannot find the node, no op\n return;\n }\n\n // Remove all current children\n let count = 0;\n for (\n let i = index + 1;\n i < this.data.length && this.data[i].level > node.level;\n i++, count++\n ) {}\n this.data.splice(index + 1, count);\n\n // Add new children\n const nodes = newNode.Children.map(\n (child) =>\n new DynamicFlatNode(\n child,\n node.level + 1,\n this._database.isExpandable(child)\n )\n );\n this.data.splice(index + 1, 0, ...nodes);\n\n // notify the change\n this.dataChange.next(this.data);\n }\n}\n","import { FlatTreeControl } from '@angular/cdk/tree';\nimport { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { of, Subject } from 'rxjs';\nimport { distinctUntilChanged, switchMap, takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { NodeTreeDataSource } from '../../../datasources';\nimport { DynamicFlatNode } from '../../../models';\nimport { NodeTreeService } from '../../../services/node-tree.service';\nimport { ActionTypes, select } from '../../../store/index';\n\n@Component({\n selector: 'lib-node-tree',\n templateUrl: './node-tree.component.html',\n styleUrls: ['./node-tree.component.scss'],\n})\nexport class NodeTreeComponent implements OnInit, OnDestroy {\n constructor(\n private nodeTreeService: NodeTreeService,\n private svc: AssetManagementService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this.treeControl = new FlatTreeControl<DynamicFlatNode>(\n this.getLevel,\n this.isExpandable\n );\n this.dataSource = new NodeTreeDataSource(this.treeControl, nodeTreeService);\n }\n\n @Input() width: number;\n\n public currentFolderId: string;\n public isRoot = false;\n public homeLoading = false;\n public loading = false;\n public treeControl: FlatTreeControl<DynamicFlatNode>;\n public dataSource: NodeTreeDataSource;\n private unsubscribe$ = new Subject<void>();\n\n ngOnInit() {\n this.bindSubscriber();\n this.initialData();\n }\n\n private async initialData() {\n await this.nodeTreeService.initialData({ dispatchRootId: true });\n this.changeDetectorRef.detectChanges();\n }\n\n private bindSubscriber() {\n this.nodeTreeService.loading$\n .pipe(takeUntil(this.unsubscribe$), distinctUntilChanged())\n .subscribe((loading) => {\n this.homeLoading = loading;\n this.changeDetectorRef.detectChanges();\n });\n\n this.nodeTreeService.initialData$\n .pipe(takeUntil(this.unsubscribe$), distinctUntilChanged())\n .subscribe((data) => {\n const { AssetId: rootId } = this.nodeTreeService.rootFolder || {AssetId: null};\n this.isRoot = rootId && this.currentFolderId === rootId;\n this.dataSource.data = data;\n data.forEach((node) => this.nodeTreeService.addNode(node.item, null));\n this.changeDetectorRef.detectChanges();\n });\n\n this.dataSource.dataChange\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((data) => {\n if (data && data.length) {\n this.changeDetectorRef.detectChanges();\n }\n });\n\n select((state) => state.currentFolderId)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(async (id) => {\n if (id) {\n const { AssetId: rootId } = this.nodeTreeService.rootFolder || {AssetId: null};\n this.isRoot = rootId && id === rootId;\n this.currentFolderId = id;\n await this.nodeTreeService.updateBreadcrumb(id);\n this.changeDetectorRef.detectChanges();\n }\n });\n\n select((state) => state.reloadCurrentFolder)\n .pipe(takeUntil(this.unsubscribe$), switchMap((res) => of(res)))\n .subscribe(async () => {\n await this.handleReloadFolder(this.currentFolderId);\n this.changeDetectorRef.detectChanges();\n });\n }\n\n public async selectNode(node: DynamicFlatNode) {\n const { AssetId: id } = node.item;\n if (id === this.currentFolderId) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_NODE,\n });\n } else {\n this.svc.dispatch({\n type: ActionTypes.SET_CURRENT_FOLDER_ID,\n payload: id,\n });\n }\n await this.handleReloadFolder(id);\n this.changeDetectorRef.detectChanges();\n }\n\n public backToHome() {\n this.initialData();\n const { AssetId: rootId } = this.nodeTreeService.rootFolder;\n if (this.currentFolderId === rootId) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_NODE,\n });\n }\n\n }\n\n checked(node: DynamicFlatNode): boolean {\n return this.currentFolderId && this.currentFolderId === node.item.AssetId;\n }\n\n disabled(node: DynamicFlatNode): boolean {\n return node.expandable;\n }\n\n getLevel = (node: DynamicFlatNode) => node.level;\n\n isExpandable = (node: DynamicFlatNode) => node.expandable;\n\n hasChild = (_: number, _nodeData: DynamicFlatNode) => _nodeData.expandable;\n\n getParent(node: DynamicFlatNode): DynamicFlatNode {\n const currentLevel = this.getLevel(node);\n\n if (currentLevel < 1) {\n return null;\n }\n\n const startIndex = this.dataSource.data.indexOf(node) - 1;\n\n for (let i = startIndex; i >= 0; i--) {\n const currentNode = this.dataSource.data[i];\n if (this.getLevel(currentNode) < currentLevel) {\n return currentNode;\n }\n }\n }\n\n getNodeById(id: string): DynamicFlatNode {\n return this.treeControl.dataNodes.find((node) => node.item.AssetId === id);\n }\n\n private async handleReloadFolder(id: string) {\n if (!id || this.loading) {\n return;\n }\n this.loading = true;\n const node = this.getNodeById(id);\n if (node) {\n const parent = this.getParent(node);\n if (parent) {\n await this.dataSource.reloadNode(parent);\n const updatedNode = this.getNodeById(id);\n if (updatedNode) {\n await this.treeControl.expand(updatedNode);\n }\n } else {\n await this.nodeTreeService.initialData({ dispatchRootId: false });\n const updatedNode = this.getNodeById(id);\n if (updatedNode) {\n await this.treeControl.expand(updatedNode);\n }\n }\n } else {\n await this.nodeTreeService.initialData({ dispatchRootId: false });\n }\n this.loading = false;\n }\n\n ngOnDestroy() {\n this.dataSource.data = [];\n this.nodeTreeService.data = [];\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { of } from 'rxjs/internal/observable/of';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { FolderTreeModel } from '../../../models';\nimport { NodeTreeService } from '../../../services/node-tree.service';\nimport { ActionTypes, select } from '../../../store';\n\n@Component({\n selector: 'lib-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n})\nexport class BreadcrumbComponent implements OnInit, OnDestroy {\n constructor(\n private nodeTreeService: NodeTreeService,\n private svc: AssetManagementService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this.bindSubscriber();\n }\n private unsubscribe$ = new Subject<void>();\n public currentFolderHierarchy: Array<FolderTreeModel> = [];\n public maximumShownLevel = 3;\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n private bindSubscriber() {\n select((state) => state.currentFolderHierarchy)\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap((res) => of(res))\n )\n .subscribe((currentFolderHierarchy) => {\n this.currentFolderHierarchy = currentFolderHierarchy;\n });\n }\n\n public navigateToFolder(folder: FolderTreeModel) {\n this.svc.dispatch({\n type: ActionTypes.SET_CURRENT_FOLDER_ID,\n payload: folder.AssetId,\n });\n }\n\n public async backToHome() {\n await this.nodeTreeService.initialData({ dispatchRootId: true });\n this.changeDetectorRef.detectChanges();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { combineLatest } from 'rxjs/internal/observable/combineLatest';\nimport { of } from 'rxjs/internal/observable/of';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { AssetService } from '../../../services/asset.service';\nimport { ActionTypes, select } from '../../../store';\n\n@Component({\n selector: 'lib-search-box',\n templateUrl: './search-box.component.html',\n styleUrls: ['./search-box.component.scss'],\n})\nexport class SearchBoxComponent implements OnInit, OnDestroy {\n private destroy$: Subject<boolean> = new Subject();\n public value = '';\n private folderId = '';\n constructor(\n public assetService: AssetService,\n private svc: AssetManagementService\n ) {\n this.bindingSubscriber();\n }\n\n ngOnInit() {}\n\n private bindingSubscriber() {\n select(state => state.currentFolderId)\n .pipe(\n takeUntil(this.destroy$),\n switchMap(res => of(res))\n )\n .subscribe(currentFolderId => (this.folderId = currentFolderId));\n }\n\n onChange(event: Event) {\n this.value = (event.target as HTMLInputElement).value;\n }\n\n onSubmit() {\n if (!this.value && !this.assetService.keyword) {\n return;\n }\n this.assetService.keyword = this.value;\n this.searchByName();\n }\n\n clearSearch() {\n if (!this.assetService.keyword) {\n this.value = '';\n return;\n }\n\n this.value = '';\n this.assetService.keyword = '';\n this.searchByName();\n this.assetService.setFolderList(null);\n this.assetService.setAssetList(null);\n }\n\n private searchByName() {\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: true,\n });\n combineLatest([\n this.assetService.getChildrenFolders({ assetId: this.folderId }),\n this.assetService.getChildrenAssets({\n assetId: this.folderId,\n pageIndex: '0',\n }),\n ])\n .pipe(takeUntil(this.destroy$))\n .subscribe(([folders, assets]) => {\n this.assetService.setFolderList(folders.Data, folders.Meta.Total);\n this.assetService.setAssetList(assets.Data.Children, assets.Meta);\n })\n .add(() => {\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: false,\n });\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { SortFilesBy, TypeSort } from '../../../models';\nimport { AssetService } from '../../../services/asset.service';\nimport { ActionTypes } from '../../../store';\n\n@Component({\n selector: 'lib-sort-items',\n templateUrl: './sort-items.component.html',\n styleUrls: ['./sort-items.component.scss'],\n})\nexport class SortItemsComponent implements OnInit {\n readonly typeSort = TypeSort;\n sortOrder: TypeSort = TypeSort.DESC;\n sortBy: SortFilesBy = SortFilesBy.MODIFIED_DATE;\n sortList: ISort[] = [\n { value: SortFilesBy.NAME, label: 'Sort by name' },\n { value: SortFilesBy.CREATED_DATE, label: 'Sort by created date' },\n { value: SortFilesBy.MODIFIED_DATE, label: 'Sort by modified date' },\n ];\n constructor(\n private assetService: AssetService,\n private svc: AssetManagementService\n ) {}\n\n ngOnInit() {\n this.sortBy = this.assetService.sortBy;\n this.sortOrder = this.assetService.sortOrder;\n }\n\n onSortBy(event: ISort) {\n this.sortBy = event.value;\n this.assetService.sortBy = this.sortBy;\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_ASSETS,\n });\n }\n\n toggleSortOrder() {\n this.sortOrder =\n this.sortOrder === TypeSort.ASC ? TypeSort.DESC : TypeSort.ASC;\n this.assetService.sortOrder = this.sortOrder;\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_ASSETS,\n });\n }\n}\n\ninterface ISort {\n value: SortFilesBy;\n label?: string;\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { takeUntil } from 'rxjs/operators';\nimport { AssetModel } from '../../../models';\nimport { AssetService } from '../../../services/asset.service';\nimport { select } from '../../../store';\n\n@Component({\n selector: 'lib-asset-wrapper',\n templateUrl: './asset-wrapper.component.html',\n styleUrls: ['./asset-wrapper.component.scss'],\n})\nexport class AssetWrapperComponent implements OnInit, OnDestroy {\n @Input() header = true;\n @Output() assets = new EventEmitter<AssetModel[]>();\n\n private unsubscribe$ = new Subject<void>();\n public nodeTreeMinWidth = 250;\n public nodeTreeMaxWidth = 700;\n public nodeTreeWidth;\n\n constructor(private assetService: AssetService) {}\n\n ngOnInit() {\n this.nodeTreeWidth = this.nodeTreeMinWidth;\n select((state) => state.selectedAssets)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((selectedAssets) => {\n this.assets.emit(selectedAssets);\n });\n }\n\n onResize({ width }) {\n this.nodeTreeWidth = width;\n }\n\n get nodeDetailsWidth(): string {\n return `calc(100% - ${this.nodeTreeWidth}px)`;\n }\n\n ngOnDestroy() {\n this.assetService.resetAsset();\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { of } from 'rxjs';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { combineLatest } from 'rxjs/internal/observable/combineLatest';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { AssetModel, FolderTreeModel } from '../../../models';\nimport { AssetService } from '../../../services/asset.service';\nimport { NodeTreeService } from '../../../services/node-tree.service';\nimport { ActionTypes, select } from '../../../store';\nimport { AddFolderDialogComponent } from '../add-folder-dialog/add-folder-dialog.component';\nimport { DeleteDialogComponent } from '../delete-dialog/delete-dialog.component';\nimport { UploadDialogComponent } from '../upload-dialog/upload-dialog.component';\n\n@Component({\n selector: 'lib-node-details',\n templateUrl: './node-details.component.html',\n styleUrls: ['./node-details.component.scss'],\n})\nexport class NodeDetailsComponent implements OnInit, OnDestroy {\n constructor(\n public dialog: MatDialog,\n public assetService: AssetService,\n private nodeTreeService: NodeTreeService,\n private svc: AssetManagementService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this.bindSubscriber();\n }\n\n private unsubscribe$ = new Subject<void>();\n\n public selectedAssets: Array<AssetModel> = [];\n public loading$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n public currentFolder: FolderTreeModel;\n public assets: AssetModel[];\n\n ngOnInit() {\n this.assetService\n .getFolderList()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((folders) => {\n this.currentFolder = folders;\n this.changeDetectorRef.detectChanges();\n });\n this.assetService\n .getAssetList()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((assets) => {\n this.assets = assets;\n this.changeDetectorRef.detectChanges();\n });\n }\n\n private bindSubscriber() {\n select((state) => state.globalLoading)\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap((res) => of(res))\n )\n .subscribe((globalLoading) => {\n this.loading$.next(globalLoading);\n });\n\n select((state) => state.selectedAssets)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((selectedAssets) => {\n if (selectedAssets) {\n this.selectedAssets = selectedAssets;\n }\n });\n\n select((state) => state.currentFolderId)\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap((res) => of(res))\n )\n .subscribe((currentFolderId) => {\n if (currentFolderId) {\n this.assetService.pageIndex = 0;\n this.fetchNodeDetails(currentFolderId);\n }\n });\n\n select((state) => state.reloadCurrentFolder)\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap((res) => of(res))\n )\n .subscribe(() => {\n if (!this.currentFolder) {\n return;\n }\n this.fetchFolder(this.currentFolder.AssetId);\n });\n\n select((state) => state.reloadCurrentNode)\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap((res) => of(res))\n )\n .subscribe(() => {\n if (!this.currentFolder) {\n return;\n }\n this.assetService.pageIndex = 0;\n this.fetchNodeDetails(this.currentFolder.AssetId);\n });\n }\n\n public openUploadDialog() {\n const dialogRef = this.dialog.open(UploadDialogComponent, {\n data: {\n currentAssetId: this.currentFolder.AssetId,\n fileType: this.assetService.dialogConfig.allowedType,\n maxSize: this.assetService.maxSize\n },\n panelClass: 'lib-dialog--medium',\n });\n\n dialogRef.afterClosed().subscribe((res) => {\n if (res) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_ASSETS,\n });\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_FOLDER,\n });\n }\n });\n }\n\n addFolder() {\n const dialogRef = this.dialog.open(AddFolderDialogComponent, {\n data: {\n currentAssetId: this.currentFolder.AssetId,\n },\n panelClass: 'lib-dialog--small',\n });\n\n dialogRef.afterClosed().subscribe((res) => {\n if (res) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_FOLDER,\n });\n }\n });\n }\n\n deleteAssets() {\n const ids = this.selectedAssets.map((asset) => asset.AssetId);\n const dialogRef = this.dialog.open(DeleteDialogComponent, {\n data: {\n type: 'files',\n ids,\n },\n panelClass: 'lib-dialog--small',\n autoFocus: false,\n });\n\n dialogRef.afterClosed().subscribe((res) => {\n if (res) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_ASSETS,\n });\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_FOLDER,\n });\n this.svc.dispatch({\n type: ActionTypes.SET_SELECTED_ASSETS,\n payload: [],\n });\n }\n });\n }\n\n private fetchFolder(id: string) {\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: true,\n });\n\n this.assetService\n .getChildrenFolders({ assetId: id })\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((res) => {\n this.assetService.setFolderList(res.Data, res.Meta.Total);\n if (res.Data && res.Data.Children) {\n res.Data.Children.forEach((node) =>\n this.nodeTreeService.addNode(node, this.currentFolder.AssetId)\n );\n }\n })\n .add(() => {\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: false,\n });\n });\n }\n\n private fetchNodeDetails(id: string) {\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: true,\n });\n combineLatest([\n this.assetService.getChildrenFolders({ assetId: id }),\n this.assetService.getChildrenAssets({\n assetId: id,\n }),\n ])\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(([folders, assets]) => {\n this.assetService.setFolderList(folders.Data, folders.Meta.Total);\n this.assetService.setAssetList(assets.Data.Children, assets.Meta);\n if (folders.Data && folders.Data.Children) {\n folders.Data.Children.forEach((node) =>\n this.nodeTreeService.addNode(node, this.currentFolder.AssetId)\n );\n }\n })\n .add(() => {\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: false,\n });\n });\n }\n\n get noResults() {\n return (\n this.assetService.keyword &&\n !this.currentFolder.Children.length &&\n !this.assets.length\n );\n }\n\n ngOnDestroy() {\n this.svc.dispatch({\n type: ActionTypes.SET_CURRENT_FOLDER_ID,\n payload: null,\n });\n this.svc.dispatch({\n type: ActionTypes.SET_SELECTED_ASSETS,\n payload: [],\n });\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","import {\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'lib-drag-to-resize',\n templateUrl: './drag-to-resize.component.html',\n styleUrls: ['./drag-to-resize.component.scss'],\n})\nexport class DragToResizeComponent implements OnInit {\n @Input() minWidth: number;\n @Input() maxWidth: number;\n\n @Output() resizeCompleted = new EventEmitter();\n\n public width: number;\n public grabber = false;\n private oldX = 0;\n\n constructor() {}\n\n ngOnInit() {\n this.width = this.minWidth;\n }\n\n @HostListener('document:mousemove', ['$event'])\n onMouseMove(event: MouseEvent) {\n if (!this.grabber) {\n return;\n }\n this.resizer(event.clientX - this.oldX);\n this.oldX = event.clientX;\n }\n\n @HostListener('document:mouseup', ['$event'])\n onMouseUp(event: MouseEvent) {\n if (this.grabber) {\n this.grabber = false;\n }\n }\n\n onMouseDown(event: MouseEvent) {\n this.grabber = true;\n this.oldX = event.clientX;\n }\n\n resizer(offsetX: number) {\n if (this.width + offsetX > this.maxWidth) {\n this.width = this.maxWidth;\n } else if (this.width + offsetX < this.minWidth) {\n this.width = this.minWidth;\n } else {\n this.width += offsetX;\n }\n this.resizeCompleted.emit({ width: this.width });\n }\n}\n","export const AdminConfig: { [name: string]: any } = {\n locale: 'en-US',\n timeZone: 'local',\n format: {\n date: 'MM/DD/YYYY',\n dayMonth: 'MMM DD',\n dateTime: 'MM/DD/YYYY HH:mm',\n fullDateTime: 'MM/DD/YYYY HH:mm:ss',\n dateTimeAM: 'MM/DD/YYYY hh:mm A',\n apiDate: 'YYYY/MM/DD',\n apiDateTime: 'YYYY-MM-DD[T]HH:mm:ssZ',\n apiDateTimeNoZ: 'YYYY-MM-DD[T]HH:mm:ss',\n apiDateMonthYear: 'MMM DD YYYY',\n urlParam: 'YYYY-MM-DD',\n },\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AdminConfig } from '../configs/admin.config';\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\n@Pipe({ name: 'localDatetime' })\nexport class LocalDateTimePipe implements PipeTransform {\n transform = (\n value: string,\n config?: { format: string; timeZone: string }\n ): string => {\n // Assume timezone is at UTC0 if there's have no timezone.\n const { format, timeZone } = config || {\n format: AdminConfig.format.dateTimeAM,\n timeZone: 'America/Chicago',\n };\n\n if (!value) {\n return '-';\n }\n\n // Check if UTC0.\n if (value.indexOf('Z') !== -1) {\n return moment(value).format(format);\n }\n\n // const utc0String = moment.tz(value, timeZone).toISOString();\n const utc0String = moment.utc(value).toISOString();\n return moment(utc0String).format(format);\n }\n}\n\n@Pipe({ name: 'localDate' })\nexport class LocalDatePipe implements PipeTransform {\n transform = (\n value: string,\n config?: { format: string; timeZone: string }\n ): string => {\n // Assume timezone is at UTC0 if there's have no timezone.\n\n const { format, timeZone } = config || {\n format: AdminConfig.format.date,\n timeZone: 'America/Chicago',\n };\n\n if (!value) {\n return '-';\n }\n\n // Check if UTC0.\n\n if (value.indexOf('Z') !== -1) {\n return moment(value).format(format);\n }\n\n // const utc0String = moment.tz(value, timeZone).toISOString();\n\n const utc0String = moment.utc(value).toISOString();\n\n return moment(utc0String).format(format);\n }\n}\n","import { APP_INITIALIZER, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport {\n UploadAssetsService,\n AssetService,\n FileService,\n NodeTreeService,\n BaseHttpClient\n} from './services/index';\n\nimport { AssetManagementComponent } from './asset-management.component';\nimport { DirectivesModule } from './directives/directives.module';\n\n// UI\nimport { InputFileComponent } from './components/ui//input-file/input-file.component';\nimport { ModalComponent } from './components/ui//modal/modal.component';\nimport { SearchNotFoundComponent } from './components/ui//search-not-found/search-not-found.component';\n\n// Partials\nimport { FileItemComponent } from './components/partial/file-item/file-item.component';\nimport { FileListComponent } from './components/partial/file-list/file-list.component';\nimport { UploadFileComponent } from './components/partial/upload-file/upload-file.component';\nimport { AddFolderDialogComponent } from './components/partial/add-folder-dialog/add-folder-dialog.component';\nimport { EditFolderDialogComponent } from './components/partial/edit-folder-dialog/edit-folder-dialog.component';\nimport { DeleteDialogComponent } from './components/partial/delete-dialog/delete-dialog.component';\nimport { UploadDialogComponent } from './components/partial/upload-dialog/upload-dialog.component';\nimport { FolderItemComponent } from './components/partial/folder-item/folder-item.component';\nimport { FolderListComponent } from './components/partial/folder-list/folder-list.component';\nimport { AssetListComponent } from './components/partial/asset-list/asset-list.component';\nimport { AssetItemComponent } from './components/partial/asset-item/asset-item.component';\nimport { AssetManagementDialogComponent } from './components/partial/asset-management-dialog/asset-management-dialog.component';\nimport { NodeTreeComponent } from './components/partial/node-tree/node-tree.component';\nimport { AssetDialogComponent } from './components/partial/asset-dialog/asset-dialog.component';\nimport { BreadcrumbComponent } from './components/partial/breadcrumb/breadcrumb.component';\nimport { SearchBoxComponent } from './components/partial/search-box/search-box.component';\nimport { SortItemsComponent } from './components/partial/sort-items/sort-items.component';\nimport { AssetWrapperComponent } from './components/partial/asset-wrapper/asset-wrapper.component';\nimport { NodeDetailsComponent } from './components/partial/node-details/node-details.component';\nimport { DragToResizeComponent } from './components/ui/drag-to-resize/drag-to-resize.component';\n\n\n// Pipes\nimport { FileSizePipe } from './pipes/file-size.pipe';\nimport { AMConfig } from './services/env-config.service';\nimport { LocalDatePipe, LocalDateTimePipe } from './pipes/datetime.pipe';\n\n// SERVICES\nconst SERVICES = [\n UploadAssetsService,\n AssetService,\n FileService,\n NodeTreeService,\n BaseHttpClient\n];\n\nconst COMPONENTS = [\n // UI\n InputFileComponent,\n ModalComponent,\n SearchNotFoundComponent,\n DragToResizeComponent,\n\n // Partials\n UploadFileComponent,\n FileItemComponent,\n FileListComponent,\n UploadDialogComponent,\n AddFolderDialogComponent,\n EditFolderDialogComponent,\n DeleteDialogComponent,\n AssetDialogComponent,\n FolderListComponent,\n NodeDetailsComponent,\n FolderItemComponent,\n AssetListComponent,\n AssetItemComponent,\n NodeTreeComponent,\n BreadcrumbComponent,\n SearchBoxComponent,\n SortItemsComponent,\n AssetWrapperComponent,\n AssetManagementDialogComponent,\n];\n\nconst ENTRY_COMPONENTS = [\n ModalComponent,\n UploadDialogComponent,\n AddFolderDialogComponent,\n EditFolderDialogComponent,\n DeleteDialogComponent,\n AssetDialogComponent,\n AssetManagementDialogComponent,\n];\n\nexport function AMFactory(config: AMConfig) {\n const fn = () => {\n return new Promise(res => {\n return setTimeout(() => res(config));\n });\n };\n return fn;\n}\n\n@NgModule({\n declarations: [\n ...COMPONENTS,\n AssetManagementComponent,\n FileSizePipe,\n LocalDatePipe,\n LocalDateTimePipe,\n ],\n imports: [\n DirectivesModule,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatButtonModule,\n MatInputModule,\n MatIconModule,\n MatDialogModule,\n MatButtonModule,\n MatInputModule,\n MatIconModule,\n MatTooltipModule,\n MatPaginatorModule,\n MatTableModule,\n MatProgressBarModule,\n MatMenuModule,\n MatCheckboxModule,\n MatTreeModule,\n MatSelectModule,\n MatProgressSpinnerModule,\n ],\n exports: [\n ...COMPONENTS,\n AssetManagementComponent,\n DirectivesModule,\n FileSizePipe,\n LocalDatePipe,\n LocalDateTimePipe,\n ],\n providers: [\n ...SERVICES,\n {\n provide: APP_INITIALIZER,\n useFactory: AMFactory,\n deps: SERVICES,\n multi: true,\n }\n ],\n entryComponents: [...ENTRY_COMPONENTS],\n})\nexport class AssetManagementModule {\n constructor() {}\n}\n"],"names":["tslib_1.__extends","ACTIONS.ActionTypes","BehaviorSubject","Subject","IData","MAT_DIALOG_DATA","MatDialogRef","of"],"mappings":"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"}
1
+ {"version":3,"file":"rs-pk-asset-management.js","sources":["ng://@rs-pk/asset-management/lib/models/asset.model.ts","ng://@rs-pk/asset-management/lib/models/asset-file.model.ts","ng://@rs-pk/asset-management/lib/models/file.model.ts","ng://@rs-pk/asset-management/lib/models/node-tree.model.ts","ng://@rs-pk/asset-management/lib/models/file-type.enum.ts","ng://@rs-pk/asset-management/lib/models/sort.enum.ts","ng://@rs-pk/asset-management/lib/services/env-config.service.ts","ng://@rs-pk/asset-management/lib/services/base.service.ts","ng://@rs-pk/asset-management/lib/services/asset.service.ts","ng://@rs-pk/asset-management/lib/asset-management.service.ts","ng://@rs-pk/asset-management/lib/store/actions.action.ts","ng://@rs-pk/asset-management/lib/store/reducer.ts","ng://@rs-pk/asset-management/lib/services/node-tree.service.ts","ng://@rs-pk/asset-management/lib/services/upload-assets.service.ts","ng://@rs-pk/asset-management/lib/services/file.service.ts","ng://@rs-pk/asset-management/lib/components/partial/asset-management-dialog/asset-management-dialog.component.ts","ng://@rs-pk/asset-management/lib/asset-management.component.ts","ng://@rs-pk/asset-management/lib/directives/dialogTrigger.directive.ts","ng://@rs-pk/asset-management/lib/directives/dnd.directive.ts","ng://@rs-pk/asset-management/lib/directives/directives.module.ts","ng://@rs-pk/asset-management/lib/components/ui/input-file/input-file.component.ts","ng://@rs-pk/asset-management/lib/components/ui/modal/modal.component.ts","ng://@rs-pk/asset-management/lib/contanst/data-image.ts","ng://@rs-pk/asset-management/lib/components/ui/search-not-found/search-not-found.component.ts","ng://@rs-pk/asset-management/lib/components/partial/file-item/file-item.component.ts","ng://@rs-pk/asset-management/lib/components/partial/file-list/file-list.component.ts","ng://@rs-pk/asset-management/lib/components/partial/upload-file/upload-file.component.ts","ng://@rs-pk/asset-management/lib/components/partial/add-folder-dialog/add-folder-dialog.component.ts","ng://@rs-pk/asset-management/lib/components/partial/edit-folder-dialog/edit-folder-dialog.component.ts","ng://@rs-pk/asset-management/lib/components/partial/delete-dialog/delete-dialog.component.ts","ng://@rs-pk/asset-management/lib/components/partial/upload-dialog/upload-dialog.component.ts","ng://@rs-pk/asset-management/lib/components/partial/folder-item/folder-item.component.ts","ng://@rs-pk/asset-management/lib/components/partial/folder-list/folder-list.component.ts","ng://@rs-pk/asset-management/lib/components/partial/asset-list/asset-list.component.ts","ng://@rs-pk/asset-management/lib/pipes/file-size.pipe.ts","ng://@rs-pk/asset-management/lib/components/partial/asset-dialog/asset-dialog.component.ts","ng://@rs-pk/asset-management/lib/components/partial/asset-item/asset-item.component.ts","ng://@rs-pk/asset-management/lib/datasources/node-tree.datasource.ts","ng://@rs-pk/asset-management/lib/components/partial/node-tree/node-tree.component.ts","ng://@rs-pk/asset-management/lib/components/partial/breadcrumb/breadcrumb.component.ts","ng://@rs-pk/asset-management/lib/components/partial/search-box/search-box.component.ts","ng://@rs-pk/asset-management/lib/components/partial/sort-items/sort-items.component.ts","ng://@rs-pk/asset-management/lib/components/partial/asset-wrapper/asset-wrapper.component.ts","ng://@rs-pk/asset-management/lib/components/partial/node-details/node-details.component.ts","ng://@rs-pk/asset-management/lib/components/ui/drag-to-resize/drag-to-resize.component.ts","ng://@rs-pk/asset-management/lib/configs/admin.config.ts","ng://@rs-pk/asset-management/lib/pipes/datetime.pipe.ts","ng://@rs-pk/asset-management/lib/asset-management.module.ts"],"sourcesContent":["export interface IPageMeta {\n PageIndex: number;\n PageSize: number;\n PageCount: number;\n Total: number;\n}\n\nexport interface IChildrenAssetPayload {\n assetId?: string;\n isFolder?: string;\n keyword?: string;\n getAll?: string;\n pageSize?: string;\n pageIndex?: string;\n}\n\nexport interface IAssetByIdPayload {\n assetId?: string;\n isFilter?: boolean;\n}\n\nexport interface IInitialFolderTreeOptions {\n dispatchRootId?: boolean;\n}\n\nexport class AssetModel {\n AssetId?: string;\n OriginalFileName?: string;\n OriginalFileNameWithoutExtension?: string;\n Description?: string;\n FileName: string;\n Width: number;\n Height: number;\n CompanyId: string;\n FilePath: string;\n CloudUrl: string;\n UrlDetail?: string;\n UrlThumbnail?: string;\n Extension: string;\n FileType: string;\n Source: string;\n Size: number;\n CreatedBy: string;\n ModifiedBy: string;\n CreatedDate: string;\n ModifiedDate: string;\n BackgroudProcessingStatus: string;\n IsRoot: boolean;\n IsFolder: boolean;\n TotalFile: number;\n TotalFolder: number;\n HaveChildren: boolean;\n ParentId?: string;\n}\nexport class FolderTreeModel extends AssetModel {\n Children?: FolderTreeModel[];\n}\n\nexport class AssetResultModel {\n Data: FolderTreeModel;\n Meta?: IPageMeta;\n}\n\nexport class DialogConfig {\n limit: number;\n allowedType: string;\n maxSize?: number;\n}\n","export class AssetFileUploadModel {\n File: FormData;\n CompanyId: string;\n}\n\nexport class AssetFileUploadResultModel {\n Files: AssetFileModel[];\n Messages: string[];\n Status: number;\n}\n\nexport class AssetFileModel {\n Id: number;\n OriginalFileName: string;\n CompanyId: string;\n FileData: null;\n ThumbnailPath: string;\n FilePath: string;\n Extension: string;\n FileType: string;\n Source: number;\n CloudUrl: string;\n CreatedBy: string;\n CreatedDate: string;\n ModifiedBy: string;\n ModifiedDate: string;\n FileName: string;\n}\n","import { AssetModel } from './asset.model';\n\nexport interface IAddFolderPayload {\n folderName: string;\n parentAssetId: string;\n}\n\nexport interface IAddFolderRes {\n AssetId: string;\n CorrelationId?: string;\n Data: AssetModel;\n Files?: AssetModel[];\n FolderName: string;\n IsFolder: boolean;\n Messages?: any[];\n ParentAssetId: string;\n ResponseCode: number;\n ResponseMessage: string;\n StackTrace: string | number;\n}\n\nexport interface IUpdateFilePayload {\n assetId: string;\n fileName: string;\n description?: string;\n}\n\nexport class IAssetUpdatedRes {\n AssetId?: AssetModel;\n CorrelationId?: string;\n Data: AssetModel;\n FileName: string;\n IncludeExtension: boolean;\n ResponseCode: number;\n ResponseMessage: string;\n StackTrace: string | number;\n}\n\nexport class IAssetDetailsRes {\n AssetDetail?: AssetModel;\n CorrelationId: string;\n Data: AssetModel;\n ResponseCode: number;\n ResponseMessage: string;\n StackTrace: string | number;\n}\n","import { FolderTreeModel } from './asset.model';\n\n/** Flat node with expandable and level information */\nexport class DynamicFlatNode {\n constructor(\n public item: FolderTreeModel,\n public level = 1,\n public expandable = false,\n public isLoading = false\n ) {}\n }\n","export enum FileTypeEnum {\n IMAGE = 'Image',\n DOCUMENT = 'Document',\n}\n","export enum SortFilesBy {\n NAME = 1,\n CREATED_DATE,\n MODIFIED_DATE,\n}\n\nexport enum TypeSort {\n DESC = 1,\n ASC,\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { InjectionToken } from '@angular/core';\n\nexport interface AMConfig {\n asset2Url: string;\n requestHeader?: HttpHeaders;\n}\n\nexport const AM_CONFIG = new InjectionToken<AMConfig>(\n 'asset.man.config.angular'\n);\n","import { HttpClient, HttpHandler, HttpHeaders, HttpParams, HttpRequest } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AM_CONFIG } from './env-config.service';\n\nexport type HttpObserve = 'body' | 'events' | 'response';\n\n@Injectable()\nexport class BaseHttpClient extends HttpClient {\n\tconstructor(\n\t\t@Inject(AM_CONFIG) private _env,\n\t\thandler: HttpHandler) {\n\t\tsuper(handler);\n\t}\n\n\trequest(\n\t\tfirst: string | HttpRequest<any>,\n\t\turl?: string,\n\t\toptions: {\n\t\t\tbody?: any;\n\t\t\theaders?: HttpHeaders | { [header: string]: string | string[] };\n\t\t\tobserve?: HttpObserve;\n\t\t\tparams?: HttpParams | { [param: string]: string | string[] };\n\t\t\treportProgress?: boolean;\n\t\t\tresponseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n\t\t\twithCredentials?: boolean;\n\t\t} = {}\n\t): Observable<any> {\n\t\tconst { requestHeader } = this._env;\n\n\t\tif (!options) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tif (requestHeader) {\n\t\t\toptions.headers = requestHeader;\n\t\t}\n\n\t\treturn super.request(first as string, url, options as any);\n\t}\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport {\n AssetModel,\n AssetResultModel,\n DialogConfig,\n FolderTreeModel,\n IAssetByIdPayload,\n IChildrenAssetPayload,\n SortFilesBy,\n TypeSort,\n} from '../models';\nimport { BaseHttpClient } from './base.service';\nimport { AM_CONFIG } from './env-config.service';\n\n@Injectable()\nexport class AssetService {\n private folderList$: BehaviorSubject<FolderTreeModel> = new BehaviorSubject(\n null\n );\n private assetList$: BehaviorSubject<AssetModel[]> = new BehaviorSubject(null);\n private openDialog$: BehaviorSubject<boolean> = new BehaviorSubject(null);\n public keyword: string;\n public pageSize: number;\n public pageIndex: number;\n public folderTotal: number;\n public fileTotal: number;\n public sortBy: SortFilesBy;\n public sortOrder: TypeSort;\n public dialogConfig: DialogConfig = new DialogConfig();\n public maxSize?: number;\n private baseUrl: string;\n\n constructor(\n @Inject(AM_CONFIG) private _env,\n public dialog: MatDialog,\n private _api: BaseHttpClient\n ) {\n this.baseUrl = this._env.asset2Url;\n this.initOptionFiles();\n }\n\n private initOptionFiles() {\n this.keyword = '';\n this.pageSize = 12;\n this.pageIndex = 0;\n this.folderTotal = 0;\n this.fileTotal = 0;\n this.sortBy = SortFilesBy.MODIFIED_DATE;\n this.sortOrder = TypeSort.DESC;\n }\n\n private resetData() {\n this.setAssetList(null);\n this.setFolderList(null);\n }\n\n resetAsset() {\n this.initOptionFiles();\n this.resetData();\n }\n\n getFolderList(): Observable<FolderTreeModel> {\n return this.folderList$.asObservable();\n }\n\n setFolderList(folders: FolderTreeModel, folderTotal?: number) {\n this.folderTotal = folderTotal || 0;\n this.folderList$.next(folders);\n }\n\n getAssetList(): Observable<AssetModel[]> {\n return this.assetList$.asObservable();\n }\n\n setAssetList(assets: AssetModel[], pagination?: any) {\n this.setPagination(pagination);\n this.assetList$.next(assets);\n }\n\n setDialogOpenStatus(status: boolean): void {\n this.openDialog$.next(status);\n }\n\n getDialogOpenStatus(): Observable<boolean> {\n return this.openDialog$.asObservable();\n }\n\n\n private setPagination(pagination) {\n if (pagination) {\n this.fileTotal = pagination.Total;\n this.pageIndex = pagination.PageIndex;\n this.pageSize = pagination.PageSize;\n }\n }\n\n public getAssetById(assetId: string) {\n const url = `${this.baseUrl}/File/GetById/${assetId}`;\n return this._api.get<AssetResultModel>(url);\n }\n\n public getChildrenFolders({ assetId, isFilter = true }: IAssetByIdPayload) {\n const url = `${this.baseUrl}/File/GetChildren`;\n let params = new HttpParams().set('getAll', 'true').set('isFolder', 'true');\n\n if (assetId) {\n params = params.set('assetId', assetId);\n }\n if (isFilter && this.keyword.length) {\n params = params.set('keyword', this.keyword || '');\n }\n if (this.dialogConfig.allowedType) {\n params = params.set('fileType', this.dialogConfig.allowedType);\n }\n\n return this._api.get<AssetResultModel>(url, { params });\n }\n\n public getChildrenAssets({ assetId, pageIndex }: IChildrenAssetPayload) {\n const url = `${this.baseUrl}/File/GetChildren`;\n let params = new HttpParams()\n .set('pageSize', this.pageSize.toString())\n .set('pageIndex', pageIndex || this.pageIndex.toString())\n .set('getAll', 'false')\n .set('isFolder', 'false')\n .set('TypeSort', this.sortOrder.toString())\n .set('SortFilesBy', this.sortBy.toString());\n\n if (assetId) {\n params = params.set('assetId', assetId);\n }\n if (this.keyword.length) {\n params = params.set('keyword', this.keyword || '');\n }\n if (this.dialogConfig.allowedType) {\n params = params.set('fileType', this.dialogConfig.allowedType);\n }\n\n return this._api.get<AssetResultModel>(url, { params });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as ACTIONS from './store/actions.action';\n\nconst eventDispatcher = new Subject<ACTIONS.Actions>();\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AssetManagementService {\n\n private _dispatcher;\n\n constructor() {\n }\n\n getDispatcher() {\n if (!this._dispatcher) {\n this._dispatcher = eventDispatcher;\n }\n\n return this._dispatcher;\n }\n\n dispatch(action: ACTIONS.Actions) {\n this.getDispatcher().next(action);\n }\n}\n","import { AssetModel, FolderTreeModel } from '../models';\n\ninterface ActionInterface {\n type: string;\n payload?;\n}\n\nexport enum ActionTypes {\n // global loading\n SET_GLOBAL_LOADING = '[LOADING] Set global loading state',\n\n // asset area\n SET_SELECTED_ASSETS = '[ASSET] Set selected assets',\n RELOAD_CURRENT_ASSETS = '[ASSET] reload current asset list ',\n DELETE_ASSET = '[ASSET] delete an asset ',\n\n // folder area\n SET_CURRENT_FOLDER_ID = '[FOLDER] get current folder id',\n SET_CURRENT_FOLDER = '[FOLDER] set current folder ',\n RELOAD_CURRENT_FOLDER = '[FOLDER] reload current folder ',\n SET_CURRENT_FOLDER_HIERARCHY = '[FOLDER] set current folder hierarchy ',\n\n // node area\n RELOAD_CURRENT_NODE = '[NODE] reload current node ',\n}\n\nexport class SetGlobalLoading implements ActionInterface {\n readonly type = ActionTypes.SET_GLOBAL_LOADING;\n payload: boolean;\n}\n\nexport class SetSelectedAssets implements ActionInterface {\n readonly type = ActionTypes.SET_SELECTED_ASSETS;\n payload: Array<AssetModel>;\n}\n\nexport class DeleteAsset implements ActionInterface {\n readonly type = ActionTypes.DELETE_ASSET;\n payload: string;\n}\n\nexport class SetCurrentFolder implements ActionInterface {\n readonly type = ActionTypes.SET_CURRENT_FOLDER;\n payload: AssetModel;\n}\n\nexport class ReloadCurrentFolder implements ActionInterface {\n readonly type = ActionTypes.RELOAD_CURRENT_FOLDER;\n}\n\nexport class SetCurrentFolderHierarchy implements ActionInterface {\n readonly type = ActionTypes.SET_CURRENT_FOLDER_HIERARCHY;\n payload: Array<FolderTreeModel>;\n}\n\nexport class GetCurrentFolder implements ActionInterface {\n readonly type = ActionTypes.SET_CURRENT_FOLDER_ID;\n payload: string;\n}\n\nexport class ReloadCurrentAssets implements ActionInterface {\n readonly type = ActionTypes.RELOAD_CURRENT_ASSETS;\n}\n\nexport class ReloadCurrentNode implements ActionInterface {\n readonly type = ActionTypes.RELOAD_CURRENT_NODE;\n}\n\nexport type Actions =\n | SetGlobalLoading\n | SetSelectedAssets\n | SetCurrentFolder\n | ReloadCurrentFolder\n | SetCurrentFolderHierarchy\n | GetCurrentFolder\n | ReloadCurrentAssets\n | ReloadCurrentNode\n | DeleteAsset;\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { AssetModel, FolderTreeModel } from '../models';\nimport * as ACTIONS from './actions.action';\n\ninterface InitialState {\n globalLoading: boolean;\n selectedAssets: Array<AssetModel>;\n deletedAssetId: string;\n currentFolder: AssetModel;\n currentFolderId: string;\n currentFolderHierarchy: Array<FolderTreeModel>;\n reloadCurrentFolder: boolean;\n reloadCurrentAssets: boolean;\n reloadCurrentNode: boolean;\n}\n\nlet state: InitialState = {\n globalLoading: false,\n selectedAssets: [],\n deletedAssetId: null,\n currentFolder: null,\n currentFolderId: null,\n currentFolderHierarchy: [],\n reloadCurrentFolder: false,\n reloadCurrentAssets: false,\n reloadCurrentNode: false,\n};\n\nexport const store = new BehaviorSubject<InitialState>(state);\n\nexport const initialReducer = (dispatcher: Subject<ACTIONS.Actions>) => {\n if (!dispatcher) {\n console.warn('Dispatcher not found.');\n return;\n }\n\n dispatcher.subscribe((action: ACTIONS.Actions) => {\n switch (action.type) {\n case ACTIONS.ActionTypes.SET_SELECTED_ASSETS:\n state = {\n ...state,\n selectedAssets: action.payload,\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.SET_GLOBAL_LOADING:\n state = {\n ...state,\n globalLoading: action.payload,\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.SET_CURRENT_FOLDER:\n state = {\n ...state,\n currentFolder: { ...action.payload },\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.RELOAD_CURRENT_FOLDER:\n state = {\n ...state,\n reloadCurrentFolder: !state.reloadCurrentFolder,\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.RELOAD_CURRENT_ASSETS:\n state = {\n ...state,\n reloadCurrentAssets: !state.reloadCurrentAssets,\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.RELOAD_CURRENT_NODE:\n state = {\n ...state,\n reloadCurrentNode: !state.reloadCurrentNode,\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.SET_CURRENT_FOLDER_HIERARCHY:\n state = {\n ...state,\n currentFolderHierarchy: [...action.payload],\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.SET_CURRENT_FOLDER_ID:\n state = {\n ...state,\n currentFolderId: action.payload,\n };\n store.next(state);\n break;\n\n case ACTIONS.ActionTypes.DELETE_ASSET:\n state = {\n ...state,\n deletedAssetId: action.payload,\n };\n store.next(state);\n break;\n\n default:\n break;\n }\n });\n};\n\nexport const select = (mapFn: (status) => InitialState): Observable<any> => {\n return store.asObservable().pipe(\n map((status: InitialState) => mapFn(status)),\n distinctUntilChanged()\n );\n};\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { AssetManagementService } from '../asset-management.service';\nimport { AssetModel, DynamicFlatNode, FolderTreeModel, IInitialFolderTreeOptions } from '../models';\nimport { ActionTypes } from '../store';\nimport { AssetService } from './asset.service';\n\n@Injectable()\nexport class NodeTreeService {\n constructor(private assetService: AssetService, private svc: AssetManagementService) { }\n\n public storedData$ = new BehaviorSubject<AssetModel[]>([]);\n public loading$ = new BehaviorSubject<boolean>(false);\n public initialData$: BehaviorSubject<DynamicFlatNode[]> = new BehaviorSubject([]);\n public rootFolder: AssetModel;\n\n get data(): AssetModel[] {\n return this.storedData$.getValue();\n }\n set data(values: AssetModel[]) {\n this.storedData$.next(values);\n }\n\n private async fetchChildrenFolder(id: string): Promise<FolderTreeModel> {\n try {\n const result = await this.assetService.getChildrenFolders({ assetId: id, isFilter: false }).toPromise();\n if (result) {\n return result.Data;\n }\n } catch (err) { }\n return;\n }\n\n /** Initial data from database */\n public async initialData(\n { dispatchRootId }: IInitialFolderTreeOptions\n ): Promise<DynamicFlatNode[]> {\n if (dispatchRootId) { this.loading$.next(true); }\n const result = await this.assetService.getChildrenFolders({ isFilter: false }).toPromise();\n if (!result) { return; }\n if (dispatchRootId) {\n this.svc.dispatch({\n type: ActionTypes.SET_CURRENT_FOLDER_ID,\n payload: result.Data.AssetId,\n });\n this.svc.dispatch({\n type: ActionTypes.SET_CURRENT_FOLDER_HIERARCHY,\n payload: [],\n });\n }\n this.rootFolder = result.Data;\n const initData = result.Data.Children.map(\n (folder) => new DynamicFlatNode(folder, 0, this.isExpandable(folder))\n );\n this.initialData$.next(initData);\n\n if (dispatchRootId) { this.loading$.next(false); }\n return this.initialData$.getValue();\n }\n\n public async getChildren(node: FolderTreeModel): Promise<FolderTreeModel> {\n return await this.fetchChildrenFolder(node.AssetId);\n }\n\n public isExpandable(node: FolderTreeModel): boolean {\n return node.HaveChildren;\n }\n\n /** Add asset to stored data */\n public addNode(asset: AssetModel, parentId?: string): void {\n let data = [...this.data];\n const index = data.findIndex((node) => node.AssetId === asset.AssetId);\n if (index < 0) {\n data = [...data, { ...asset, ParentId: parentId ? parentId : null }];\n }\n this.data = data;\n }\n\n public async updateBreadcrumb(id: string) {\n const folder = this.data.find((n) => n.AssetId === id);\n if (folder) {\n const hierarchy = this.getFolderHierarchy(folder);\n this.svc.dispatch({\n type: ActionTypes.SET_CURRENT_FOLDER_HIERARCHY,\n payload: hierarchy,\n });\n }\n }\n\n private getAssetParent(node: AssetModel): AssetModel {\n return this.data.find((n) => n.AssetId === node.ParentId);\n }\n\n private getFolderHierarchy(node: FolderTreeModel): Array<FolderTreeModel> {\n if (!node) {\n return [];\n }\n let parentHierarchy: Array<FolderTreeModel> = [];\n let parent = this.getAssetParent(node);\n while (parent) {\n parentHierarchy = [parent, ...parentHierarchy];\n parent = this.getAssetParent(parent);\n }\n return [...parentHierarchy, node];\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { BaseHttpClient } from './base.service';\nimport { AM_CONFIG } from './env-config.service';\n\n@Injectable()\nexport class UploadAssetsService {\n private files: File[] = [];\n public fileNames: { [key: string]: string | boolean }[] = [];\n public supportedSize = 10 * 1024 * 1024; // 10MB\n public readonly documentExtension = ['.pdf', '.csv'];\n public readonly compressedExtension = ['.zip'];\n public readonly imageExtension = [\n '.png',\n '.gif',\n '.jpeg',\n '.jpg',\n '.svg',\n '.svg+xml',\n ];\n public supportedTypes = [...this.imageExtension, ...this.compressedExtension, ...this.documentExtension];\n public readonly messageErrors = {\n size: `File size should be upto`,\n ext: `Only supported file extension:`,\n replace: `The replacement file should be the same extension with old one:`,\n maxLength: `The character limit is 200 characters`,\n };\n\n private errorObs$: BehaviorSubject<any> = new BehaviorSubject(true);\n private baseUrl: string;\n\n constructor(\n @Inject(AM_CONFIG) private _env,\n public dialog: MatDialog,\n private _api: BaseHttpClient\n ) {\n this.baseUrl = this._env.asset2Url;\n }\n\n getErrorObs(): Observable<any> {\n return this.errorObs$.asObservable();\n }\n\n setErrorObs(error: boolean) {\n this.errorObs$.next(error);\n }\n\n get getFiles(): File[] {\n return this.files;\n }\n\n set setFiles(files: File[]) {\n this.files = files;\n }\n\n get errorFiles(): boolean {\n const invalidFiles = this.fileNames.filter(file => !file.valid);\n return this.fileNames.length && invalidFiles.length > 0;\n }\n\n get errorLength() {\n return this.fileNames.filter(file => !file.valid).length;\n }\n\n public deleteFile(index: number) {\n this.files.splice(index, 1);\n this.fileNames.splice(index, 1);\n }\n\n uploadMultipleAssets(parentAssetId: string) {\n const { files } = this;\n const fileNames = this.fileNames.map(file => file.name);\n const formData = new FormData();\n formData.append('parentAssetId', parentAssetId);\n formData.append('companyId', '732DA8D2-04EC-4BE0-A168-63EE0DCF50D8');\n\n for (let i = 0; i < files.length; i++) {\n const nameSplit = files[i].name.split('.');\n const ext = `.${nameSplit.splice(nameSplit.length - 1, 1)[0]}`;\n formData.append('files', files[i], `${fileNames[i]}${ext}`);\n }\n\n return this._api.post<any>(`${this.baseUrl}/File/Upload`, formData);\n }\n}\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { IAddFolderPayload, IUpdateFilePayload } from '../models';\nimport { BaseHttpClient } from './base.service';\nimport { AM_CONFIG } from './env-config.service';\n\n@Injectable()\nexport class FileService {\n private baseUrl: string;\n\n constructor(@Inject(AM_CONFIG) private _env, private _api: BaseHttpClient) {\n this.baseUrl = this._env.asset2Url;\n }\n\n addFolder({ parentAssetId, folderName }: IAddFolderPayload) {\n const params = new HttpParams()\n .set('parentAssetId', parentAssetId)\n .set('folderName', folderName);\n return this._api.post<any>(`${this.baseUrl}/File/Addfolder`, null, {\n params,\n });\n }\n\n updateFile({ assetId, fileName, description }: IUpdateFilePayload) {\n let params = new HttpParams()\n .set('assetId', assetId)\n .set('fileName', fileName);\n if (description) {\n params = params.set('Description', description);\n }\n return this._api.post<any>(`${this.baseUrl}/File/Update`, null, { params });\n }\n\n replaceAsset(assetId: string, file: File) {\n const formData = new FormData();\n formData.append('AssetId', assetId);\n formData.append('files', file);\n formData.append('KeepOldName', 'true');\n\n return this._api.post<any>(`${this.baseUrl}/File/Replace`, formData);\n }\n\n deleteFile(ids: string[]) {\n const headers = new HttpHeaders().set('Content-Type', 'application/json');\n\n return this._api.request('delete', `${this.baseUrl}/File/Delete`, {\n headers,\n body: ids,\n });\n }\n\n getFileDetail(id: string) {\n const params = new HttpParams().set('IncludeDetailedWidth', 'true');\n\n return this._api.get<any>(`${this.baseUrl}/File/GetById/${id}`, { params });\n }\n}\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { takeUntil } from 'rxjs/operators';\nimport { AssetModel, DialogConfig } from '../../../models';\nimport { AssetService } from '../../../services/asset.service';\nimport { select } from '../../../store';\n\n@Component({\n selector: 'lib-asset-management-dialog',\n templateUrl: './asset-management-dialog.component.html',\n styleUrls: ['./asset-management-dialog.component.scss'],\n})\nexport class AssetManagementDialogComponent implements OnInit, OnDestroy {\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: DialogConfig,\n public dialogRef: MatDialogRef<AssetManagementDialogComponent>,\n private assetService: AssetService\n ) { }\n private destroy$: Subject<boolean> = new Subject();\n public selectedAssets: Array<AssetModel> = [];\n\n ngOnInit() {\n this.initDialogConfig(this.data);\n select((state) => state.selectedAssets)\n .pipe(takeUntil(this.destroy$))\n .subscribe((selectedAssets) => {\n this.selectedAssets = selectedAssets;\n });\n }\n\n get disabled(): boolean {\n const { limit } = this.data;\n return (\n (!this.selectedAssets || !this.selectedAssets.length) ||\n (limit && this.selectedAssets.length > limit)\n );\n }\n\n selectAssets() {\n this.dialogRef.close(this.selectedAssets);\n }\n\n initDialogConfig(data: DialogConfig) {\n if (!data) {\n return;\n }\n \n this.assetService.dialogConfig = data;\n this.assetService.maxSize = data.maxSize;\n }\n\n ngOnDestroy(): void {\n this.assetService.dialogConfig = new DialogConfig();\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from './asset-management.service';\nimport { AssetManagementDialogComponent } from './components/partial/asset-management-dialog/asset-management-dialog.component';\nimport { AssetModel, DialogConfig } from './models';\nimport { AssetService } from './services/asset.service';\nimport { initialReducer } from './store';\n\n@Component({\n selector: 'lib-asset-management',\n templateUrl: './asset-management.component.html',\n styleUrls: ['./asset-management.component.scss'],\n providers: [AssetService]\n})\nexport class AssetManagementComponent implements OnInit, OnDestroy {\n @Input() isDialog ? = true;\n @Input() limit?: number;\n @Input() allowedType?: string;\n @Input() maxSize?: number;\n @Output() assetChange = new EventEmitter<AssetModel[]>();\n\n private destroy$: Subject<boolean> = new Subject();\n\n constructor(\n private dialog: MatDialog,\n private svc: AssetManagementService,\n private assetService: AssetService\n ) {}\n\n ngOnInit() {\n this.assetService.maxSize = this.maxSize;\n initialReducer(this.svc.getDispatcher());\n this.bindSubscriber();\n }\n\n bindSubscriber() {\n this.assetService\n .getDialogOpenStatus()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if (res) {\n this.openAssetsDialog();\n }\n });\n }\n\n onAssetsChange(assets) {\n if (!assets) {\n return;\n }\n this.assetChange.emit(assets);\n }\n\n openAssetsDialog() {\n const config: DialogConfig = {\n limit: this.limit,\n allowedType: this.allowedType,\n maxSize: this.maxSize\n };\n const dialogRef = this.dialog.open(AssetManagementDialogComponent, {\n autoFocus: false,\n panelClass: 'lib-dialog--large',\n data: config,\n });\n dialogRef\n .afterClosed()\n .pipe(takeUntil(this.destroy$))\n .subscribe((res) => {\n if (res) {\n this.assetChange.emit(res);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { AssetService } from '../services/asset.service';\n\n@Directive({\n selector: '[libDialogTrigger]',\n})\nexport class DialogTriggerDirective {\n constructor(private assetService: AssetService) {}\n @HostListener('click', ['$event.target'])\n onClick(event) {\n this.openAssetsDialog();\n }\n openAssetsDialog() {\n this.assetService.setDialogOpenStatus(true);\n }\n}\n","import { Directive, Output, EventEmitter, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[libDnDFile]',\n})\nexport class DndDirective {\n @Output() imageDropped = new EventEmitter<any>();\n\n // Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n\n // Dragleave listener\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n }\n // Drop listener\n @HostListener('drop', ['$event']) public ondrop(event: any) {\n event.preventDefault();\n event.stopPropagation();\n let files = event.dataTransfer.files;\n files = Array.from(files);\n this.imageDropped.emit(files);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DialogTriggerDirective } from './dialogTrigger.directive';\nimport { DndDirective } from './dnd.directive';\n\nexport const DIRECTIVES = [DndDirective, DialogTriggerDirective];\n\n@NgModule({\n declarations: [...DIRECTIVES],\n imports: [CommonModule],\n exports: [...DIRECTIVES],\n})\nexport class DirectivesModule {}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'lib-input-file',\n templateUrl: './input-file.component.html',\n styleUrls: ['./input-file.component.scss'],\n})\nexport class InputFileComponent {\n @Input() color: string;\n @Input() multiple = true;\n @Input() acceptTypes: string;\n @Output('onFileChange') fileChange = new EventEmitter<Event>();\n\n constructor() {}\n\n onFileChange(event: any) {\n let { files } = event.target;\n if (files.length < 1) {\n return;\n }\n\n files = Array.from(files);\n this.fileChange.emit(files);\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss'],\n})\nexport class ModalComponent implements OnInit {\n @Input() heading: string;\n @Input() customHeader = false;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","// tslint:disable:max-line-length\nexport const imageDefault =\n \"data:image/png;base64,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\";\n\nexport const searchNotFound =\n \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iNzAiIHZpZXdCb3g9IjAgMCA4MCA3MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTU5LjM4MDEgNDQuMDRINTYuMjIwMUw1NS4xMDAxIDQyLjk2QzU5LjAyMDEgMzguNCA2MS4zODAxIDMyLjQ4IDYxLjM4MDEgMjYuMDRDNjEuMzgwMSAxMS42OCA0OS43NDAxIDAuMDQwMDM5MSAzNS4zODAxIDAuMDQwMDM5MUMyMS43MDAxIDAuMDQwMDM5MSAxMC41MDAxIDEwLjYgOS41MDAwNiAyNC4wNEgxNy41ODAxQzE4LjU4MDEgMTUuMDQgMjYuMTAwMSA4LjA0MDA0IDM1LjM4MDEgOC4wNDAwNEM0NS4zNDAxIDguMDQwMDQgNTMuMzgwMSAxNi4wOCA1My4zODAxIDI2LjA0QzUzLjM4MDEgMzYgNDUuMzQwMSA0NC4wNCAzNS4zODAxIDQ0LjA0QzM0LjcwMDEgNDQuMDQgMzQuMDYwMSA0My45MiAzMy4zODAxIDQzLjg0VjUxLjkyQzM0LjA2MDEgNTIgMzQuNzAwMSA1Mi4wNCAzNS4zODAxIDUyLjA0QzQxLjgyMDEgNTIuMDQgNDcuNzQwMSA0OS42OCA1Mi4zMDAxIDQ1Ljc2TDUzLjM4MDEgNDYuODhWNTAuMDRMNzMuMzgwMSA3MEw3OS4zNDAxIDY0LjA0TDU5LjM4MDEgNDQuMDRaIiBmaWxsPSIjNkZDMEZGIi8+CjxwYXRoIGQ9Ik0yMy4yNiAzMS4zMjAzTDEzLjM4IDQxLjIwMDNMMy41MDAwMyAzMS4zMjAzTDAuNjYwMDM0IDM0LjE2MDNMMTAuNTQgNDQuMDQwM0wwLjY2MDAzNCA1My45MjAzTDMuNTAwMDMgNTYuNzYwM0wxMy4zOCA0Ni44ODAzTDIzLjI2IDU2Ljc2MDNMMjYuMSA1My45MjAzTDE2LjIyIDQ0LjA0MDNMMjYuMSAzNC4xNjAzTDIzLjI2IDMxLjMyMDNaIiBmaWxsPSIjNkZDMEZGIi8+Cjwvc3ZnPgo=\";\n\nexport const imagePdf =\n \"data:image/png;base64,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\";\n\nexport const imageZip = \n \"data:image/png;base64,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\";\n\nexport const imageCsv =\n \"data:image/png;base64,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\";\n\nexport const fileDefault = \"data:image/png;base64,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\"\n // tslint:enable:max-line-length\n","import { Component, OnInit } from '@angular/core';\nimport { searchNotFound } from '../../../contanst';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'lib-search-not-found',\n templateUrl: './search-not-found.component.html',\n styleUrls: ['./search-not-found.component.scss'],\n})\nexport class SearchNotFoundComponent implements OnInit {\n public base64Image = this.domSanitizer.bypassSecurityTrustUrl(searchNotFound);\n constructor(private domSanitizer: DomSanitizer) {}\n\n ngOnInit() {}\n}\n","import { Component, OnInit, Output, Input, EventEmitter } from '@angular/core';\nimport { UploadAssetsService } from '../../../services/upload-assets.service';\nimport { imagePdf, imageZip, imageCsv } from '../../../contanst';\nimport { DomSanitizer } from '@angular/platform-browser';\n@Component({\n selector: 'lib-file-item',\n templateUrl: './file-item.component.html',\n styleUrls: ['./file-item.component.scss'],\n})\nexport class FileItemComponent implements OnInit {\n public documentExts = ['pdf', 'zip', 'csv'];\n public base64PNG = {\n pdf: this.domSanitizer.bypassSecurityTrustUrl(imagePdf),\n zip: this.domSanitizer.bypassSecurityTrustUrl(imageZip),\n csv: this.domSanitizer.bypassSecurityTrustUrl(imageCsv),\n };\n @Input() file: File;\n @Output() checkError = new EventEmitter();\n @Output() fileChange = new EventEmitter();\n @Output() fileRemove = new EventEmitter();\n public dataFile = {\n name: '',\n size: 0,\n ext: '',\n data: null,\n errors: {\n maxLength: false,\n ext: false,\n size: false,\n },\n };\n\n constructor(\n private domSanitizer: DomSanitizer,\n public uploadAssetService: UploadAssetsService\n ) {}\n\n ngOnInit() {\n this.initDataFile();\n }\n\n private initDataFile(): void {\n this.setDetailsFile();\n this.setErrorFile();\n }\n\n private setDetailsFile() {\n const { name, size } = this.file;\n const { getFiles: files } = this.uploadAssetService;\n const names = files.filter(file => file.name === name);\n const nameSplit = name.split('.');\n if (names.length > 1) {\n nameSplit[0] = `${nameSplit[0]}(${names.length - 1})`;\n }\n this.dataFile.ext = nameSplit.splice(nameSplit.length - 1, 1)[0];\n this.dataFile.name = nameSplit.join('.');\n this.dataFile.size = size;\n }\n\n private setErrorFile() {\n const { supportedTypes, supportedSize, fileNames } = this.uploadAssetService;\n const { name, ext: extFile, size: sizeFile } = this.dataFile;\n this.dataFile.errors = {\n maxLength: name.length + extFile.length > 199,\n ext: supportedTypes.indexOf(`.${extFile}`) < 0,\n size: supportedSize < sizeFile,\n };\n\n if (this.file.type.indexOf('image') > -1) {\n const reader = new FileReader();\n reader.readAsDataURL(this.file);\n reader.onload = (readerEvent: any) => {\n const img = document.createElement('img');\n img.src = readerEvent.target.result as string;\n\n img.onload = () => {\n this.dataFile.data = this.domSanitizer.bypassSecurityTrustUrl(\n readerEvent.target.result\n );\n };\n };\n }\n\n fileNames.push({\n name,\n valid: this.checkErrors()\n });\n this.uploadAssetService.setErrorObs(this.uploadAssetService.errorFiles);\n }\n\n private checkErrors() {\n const { ext, size, maxLength } = this.dataFile.errors;\n return (ext || size || maxLength) ? false : true;\n }\n\n onChange(event: Event) {\n this.dataFile.name = (event.target as HTMLInputElement).value.trim();\n const { name, ext } = this.dataFile;\n this.dataFile.errors.maxLength = name.length + ext.length > 199;\n this.fileChange.emit({\n name: this.dataFile.name,\n valid: this.checkErrors()\n });\n }\n\n onRemove() {\n this.fileRemove.emit(true);\n }\n}\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { UploadAssetsService } from '../../../services/upload-assets.service';\n\n@Component({\n selector: 'lib-file-list',\n templateUrl: './file-list.component.html',\n styleUrls: ['./file-list.component.scss'],\n})\nexport class FileListComponent implements OnInit {\n @Output() revalidate = new EventEmitter();\n constructor(public uploadAssetsService: UploadAssetsService) {}\n\n ngOnInit() {}\n\n onFileChange(newFiles: File[]): void {\n const { getFiles: files } = this.uploadAssetsService;\n this.uploadAssetsService.setFiles = [...files, ...newFiles];\n (document.getElementById('file-import') as HTMLInputElement).value = '';\n }\n\n onDelFile(index: number) {\n this.uploadAssetsService.deleteFile(index);\n this.revalidate.emit(this.uploadAssetsService.errorFiles);\n }\n\n onChangeName({name, valid}, index: number) {\n const { fileNames } = this.uploadAssetsService;\n fileNames[index] = { name, valid };\n this.uploadAssetsService.setErrorObs(this.uploadAssetsService.errorFiles);\n }\n\n onEmitError(): void {\n this.revalidate.emit(this.uploadAssetsService.errorFiles);\n }\n}\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { UploadAssetsService } from '../../../services/upload-assets.service';\nimport { imageDefault } from '../../../contanst';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'lib-upload-file',\n templateUrl: './upload-file.component.html',\n styleUrls: ['./upload-file.component.scss'],\n})\nexport class UploadFileComponent implements OnInit {\n public base64Image = this.domSanitizer.bypassSecurityTrustUrl(imageDefault);\n @Output() revalidate = new EventEmitter();\n public isDragging = false;\n\n constructor(\n private domSanitizer: DomSanitizer,\n public uploadAssetsService: UploadAssetsService\n ) {}\n\n ngOnInit() {}\n\n onFileChange(newFiles: any): void {\n this.isDragging = false;\n const { getFiles: files } = this.uploadAssetsService;\n this.uploadAssetsService.setFiles = [...files, ...newFiles];\n }\n\n onEmitError(): void {\n this.revalidate.emit(this.uploadAssetsService.errorFiles);\n }\n\n onDragover(_event: Event) {\n this.isDragging = true;\n }\n\n onDragleave(_event: Event) {\n this.isDragging = false;\n }\n}\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { IAddFolderRes } from '../../../models';\nimport { FileService } from '../../../services/file.service';\n\ninterface IData {\n currentAssetId: string;\n}\n\n@Component({\n selector: 'lib-add-folder-dialog',\n templateUrl: './add-folder-dialog.component.html',\n styleUrls: ['./add-folder-dialog.component.scss'],\n})\nexport class AddFolderDialogComponent implements OnInit, OnDestroy {\n public isLoading = false;\n public errorMessage = '';\n public value = '';\n private destroy$: Subject<boolean> = new Subject();\n public formGroup: FormGroup;\n public form: FormControl = new FormControl();\n constructor(\n private fb: FormBuilder,\n @Inject(MAT_DIALOG_DATA) public data: IData,\n public dialogRef: MatDialogRef<AddFolderDialogComponent>,\n private fileService: FileService\n ) {\n this.formGroup = this.fb.group({\n name: ['', [\n Validators.maxLength(200),\n Validators.required\n ]],\n });\n }\n\n ngOnInit() {}\n\n get disabled() {\n const { value: name } = this.formGroup.controls.name;\n return !name || !!this.errorMessage || this.isLoading;\n }\n\n onChange(_event: Event) {\n this.errorMessage = '';\n }\n\n addFolder() {\n const { value: name } = this.formGroup.controls.name;\n this.isLoading = true;\n this.fileService\n .addFolder({\n parentAssetId: this.data.currentAssetId,\n folderName: name.trim(),\n })\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (_res: IAddFolderRes) => this.closeDialog(true),\n err => {\n this.isLoading = false;\n this.errorMessage = err.ResponseMessage;\n }\n );\n }\n\n closeDialog(res?: boolean) {\n this.dialogRef.close(res);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { FileService } from '../../../services/file.service';\nimport { IAssetUpdatedRes } from '../../../models';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n Validators,\n} from '@angular/forms';\n\ninterface IData {\n assetId: string;\n name: string;\n}\n\n@Component({\n selector: 'lib-edit-folder-dialog',\n templateUrl: './edit-folder-dialog.component.html',\n styleUrls: ['./edit-folder-dialog.component.scss'],\n})\nexport class EditFolderDialogComponent implements OnInit, OnDestroy {\n public isLoading = false;\n public errorMessage = '';\n public value = '';\n private destroy$: Subject<boolean> = new Subject();\n public formGroup: FormGroup;\n public form: FormControl = new FormControl();\n constructor(\n private fb: FormBuilder,\n @Inject(MAT_DIALOG_DATA) public data: IData,\n public dialogRef: MatDialogRef<EditFolderDialogComponent>,\n private fileService: FileService\n ) {\n this.formGroup = this.fb.group({\n name: [this.data.name, [\n Validators.maxLength(200),\n Validators.required\n ]],\n });\n }\n\n ngOnInit() {}\n\n get disabled() {\n const { value: name } = this.formGroup.controls.name;\n return (\n !name ||\n !!this.errorMessage ||\n name.toLowerCase().trim() === this.data.name.toLowerCase() ||\n this.isLoading\n );\n }\n\n onChange(_event: Event) {\n this.errorMessage = '';\n }\n\n editFolder() {\n const { value: name } = this.formGroup.controls.name;\n this.isLoading = true;\n this.fileService\n .updateFile({\n assetId: this.data.assetId,\n fileName: name.trim(),\n })\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (_res: IAssetUpdatedRes) => this.closeDialog(true),\n err => {\n this.isLoading = false;\n this.errorMessage = err.ResponseMessage;\n }\n );\n }\n\n closeDialog(res?: boolean) {\n this.dialogRef.close(res);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import { Component, Inject, OnInit, OnDestroy } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { FileService } from '../../../services/file.service';\nimport { IAssetDetailsRes } from '../../../models';\nimport { AssetService } from '../../../services/asset.service';\n\ninterface IData {\n type: 'file' | 'folder' | 'files';\n ids: string[];\n name?: string;\n}\n\n@Component({\n selector: 'lib-delete-dialog',\n templateUrl: './delete-dialog.component.html',\n styleUrls: ['./delete-dialog.component.scss'],\n})\nexport class DeleteDialogComponent implements OnInit, OnDestroy {\n public isLoading = false;\n private destroy$: Subject<boolean> = new Subject();\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: IData,\n public dialogRef: MatDialogRef<DeleteDialogComponent>,\n private fileService: FileService,\n private assetService: AssetService\n ) {}\n\n ngOnInit() {}\n\n delete() {\n this.isLoading = true;\n this.fileService\n .deleteFile(this.data.ids)\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (_res: IAssetDetailsRes) => {\n this.handleAssetPaging();\n this.isLoading = false;\n this.closeDialog(true);\n },\n (_err) => {\n this.isLoading = false;\n console.log('deleted fail', _err);\n }\n );\n }\n\n private handleAssetPaging() {\n this.assetService\n .getAssetList()\n .pipe(takeUntil(this.destroy$))\n .subscribe((assets) => {\n if (\n assets &&\n assets.length === this.data.ids.length &&\n this.assetService.pageIndex > 0\n ) {\n this.assetService.pageIndex--;\n }\n });\n }\n\n closeDialog(res?: boolean) {\n this.dialogRef.close(res);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';\nimport { takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { ChangeDetectorRef } from '@angular/core';\nimport { UploadAssetsService } from '../../../services/upload-assets.service';\n\ninterface IData {\n currentAssetId: string;\n fileType?: string;\n maxSize?: number;\n}\n\n@Component({\n selector: 'lib-upload-dialog',\n templateUrl: './upload-dialog.component.html',\n styleUrls: ['./upload-dialog.component.scss'],\n providers: [UploadAssetsService],\n})\nexport class UploadDialogComponent implements OnInit, OnDestroy {\n public isLoading = false;\n public disabled = true;\n private destroy$: Subject<boolean> = new Subject();\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: IData,\n public dialogRef: MatDialogRef<UploadDialogComponent>,\n private changeDetectorRef: ChangeDetectorRef,\n public uploadAssetsService: UploadAssetsService\n ) {\n if (this.data.fileType) {\n this.uploadAssetsService.supportedTypes =\n this.data.fileType === 'Image'\n ? [...this.uploadAssetsService.imageExtension]\n : [...this.uploadAssetsService.documentExtension];\n }\n \n if (this.data.maxSize) {\n this.uploadAssetsService.supportedSize = this.data.maxSize * 1024 * 1024;\n }\n\n }\n\n ngOnInit() {\n this.uploadAssetsService\n .getErrorObs()\n .pipe(takeUntil(this.destroy$))\n .subscribe(error => {\n this.disabled = error;\n this.changeDetectorRef.detectChanges();\n });\n }\n\n onValidate(hasError: boolean) {\n this.disabled = hasError;\n }\n\n uploadFiles() {\n this.isLoading = true;\n this.uploadAssetsService\n .uploadMultipleAssets(this.data.currentAssetId)\n .pipe(takeUntil(this.destroy$))\n .subscribe(res => {\n if (res) {\n this.closeDialog(true);\n }\n });\n }\n\n closeDialog(res?: boolean) {\n this.dialogRef.close(res);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AssetModel } from '../../../models';\nimport { ActionTypes } from '../../../store/actions.action';\nimport { EditFolderDialogComponent } from '../edit-folder-dialog/edit-folder-dialog.component';\nimport { DeleteDialogComponent } from '../delete-dialog/delete-dialog.component';\nimport { AssetManagementService } from '../../../asset-management.service';\n\n@Component({\n selector: 'lib-folder-item',\n templateUrl: './folder-item.component.html',\n styleUrls: ['./folder-item.component.scss'],\n})\nexport class FolderItemComponent implements OnInit {\n constructor(private dialog: MatDialog, private svc: AssetManagementService) {}\n @Input() folder: AssetModel;\n ngOnInit() {}\n\n openFolder() {\n this.svc.dispatch({\n type: ActionTypes.SET_CURRENT_FOLDER_ID,\n payload: this.folder.AssetId,\n });\n }\n\n renameFolder() {\n const dialogRef = this.dialog.open(EditFolderDialogComponent, {\n data: {\n assetId: this.folder.AssetId,\n name: this.folder.OriginalFileName,\n },\n panelClass: 'lib-dialog--small',\n });\n\n dialogRef.afterClosed().subscribe(res => {\n if (res) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_FOLDER,\n });\n }\n });\n }\n\n deleteFolder() {\n const dialogRef = this.dialog.open(DeleteDialogComponent, {\n data: {\n type: 'folder',\n ids: [this.folder.AssetId],\n name: this.folder.OriginalFileName,\n },\n panelClass: 'lib-dialog--small',\n autoFocus: false,\n });\n\n dialogRef.afterClosed().subscribe(res => {\n if (res) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_FOLDER,\n });\n }\n });\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { takeUntil } from 'rxjs/operators';\nimport { AssetModel } from '../../../models';\nimport { select } from '../../../store';\n\n@Component({\n selector: 'lib-folder-list',\n templateUrl: './folder-list.component.html',\n styleUrls: ['./folder-list.component.scss'],\n})\nexport class FolderListComponent implements OnInit, OnDestroy {\n\n constructor() {\n this.bindSubscriber();\n }\n\n @Input() folders: AssetModel[];\n public loading = false;\n private unsubscribe$ = new Subject<void>();\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n private bindSubscriber() {\n select(state => state.globalLoading)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(globalLoading => {\n this.loading = globalLoading;\n });\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { of } from 'rxjs/internal/observable/of';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { AssetModel } from '../../../models';\nimport { AssetService } from '../../../services/asset.service';\nimport { ActionTypes } from '../../../store/actions.action';\nimport { select } from '../../../store/reducer';\n\n@Component({\n selector: 'lib-asset-list',\n templateUrl: './asset-list.component.html',\n styleUrls: ['./asset-list.component.scss'],\n})\nexport class AssetListComponent implements OnInit, OnChanges, OnDestroy {\n constructor(\n private assetService: AssetService,\n private svc: AssetManagementService\n ) {}\n\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\n @Input() assets: AssetModel[];\n\n private unsubscribe$ = new Subject<void>();\n private currentFolderId: string;\n private selectedAssets: Array<AssetModel> = [];\n\n ngOnInit() {\n this.bindSubscriber();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.assets) {\n this.paginator.pageIndex = this.assetService.pageIndex;\n this.paginator.pageSize = this.assetService.pageSize;\n this.paginator.length = this.assetService.fileTotal;\n }\n }\n\n public onSelectAsset(event: AssetModel) {\n const index = this.selectedAssets.findIndex(\n (asset) => asset.AssetId === event.AssetId\n );\n const newSelectedAssets: AssetModel[] =\n index > -1\n ? this.selectedAssets.filter((asset, i) => index !== i)\n : [...this.selectedAssets, event];\n\n this.svc.dispatch({\n type: ActionTypes.SET_SELECTED_ASSETS,\n payload: newSelectedAssets,\n });\n }\n\n private bindSubscriber() {\n select((state) => state.deletedAssetId)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((id) => {\n if (this.selectedAssets && this.selectedAssets.length) {\n const newSelectedAssets = this.selectedAssets.filter(\n (asset) => asset.AssetId !== id\n );\n this.svc.dispatch({\n type: ActionTypes.SET_SELECTED_ASSETS,\n payload: newSelectedAssets,\n });\n }\n });\n\n select((state) => state.currentFolderId)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((currentFolderId) => {\n this.currentFolderId = currentFolderId;\n this.svc.dispatch({\n type: ActionTypes.SET_SELECTED_ASSETS,\n payload: [],\n });\n });\n\n select((state) => state.selectedAssets)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((selectedAssets) => {\n this.selectedAssets = selectedAssets;\n });\n\n select((state) => state.reloadCurrentAssets)\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap((res) => of(res))\n )\n .subscribe(() => {\n this.fetchChildrenAssets();\n });\n }\n\n public pageChange(event?: PageEvent) {\n this.assetService.pageSize = event.pageSize;\n this.assetService.pageIndex = event.pageIndex;\n this.fetchChildrenAssets();\n }\n\n private fetchChildrenAssets() {\n if (!this.currentFolderId) {\n return;\n }\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: true,\n });\n\n this.assetService\n .getChildrenAssets({ assetId: this.currentFolderId })\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((res) => {\n this.assetService.setAssetList(res.Data.Children, res.Meta);\n })\n .add(() => {\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: false,\n });\n });\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\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 { Component, Inject, OnInit, OnDestroy } from '@angular/core';\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from '@angular/material/dialog';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { imagePdf, imageZip, imageCsv, fileDefault } from '../../../contanst';\nimport {\n AssetModel,\n FileTypeEnum,\n IAssetDetailsRes,\n IAssetUpdatedRes,\n} from '../../../models';\nimport { FileSizePipe } from '../../../pipes/file-size.pipe';\nimport { AssetService } from '../../../services/asset.service';\nimport { AM_CONFIG } from '../../../services/env-config.service';\nimport { FileService } from '../../../services/file.service';\nimport { UploadAssetsService } from '../../../services/upload-assets.service';\nimport { ActionTypes } from '../../../store';\nimport { DeleteDialogComponent } from '../delete-dialog/delete-dialog.component';\n\ninterface IData {\n assetId: string;\n name: string;\n}\n\n@Component({\n selector: 'lib-asset-dialog',\n templateUrl: './asset-dialog.component.html',\n styleUrls: ['./asset-dialog.component.scss'],\n providers: [FileSizePipe],\n})\nexport class AssetDialogComponent implements OnInit, OnDestroy {\n public fileName = '';\n public description = '';\n public linkDownload = '';\n public isCopied = false;\n public errorMessage = '';\n public patternError = false;\n public replaceMessage = '';\n public acceptTypes: string[];\n public assetDetails: AssetModel;\n private destroy$: Subject<boolean> = new Subject();\n public base64PNG = {\n pdf: this.domSanitizer.bypassSecurityTrustUrl(imagePdf),\n zip: this.domSanitizer.bypassSecurityTrustUrl(imageZip),\n csv: this.domSanitizer.bypassSecurityTrustUrl(imageCsv),\n default: this.domSanitizer.bypassSecurityTrustUrl(fileDefault),\n };\n private timer;\n public isLoading = true;\n public isUpdating = false;\n public fileType = FileTypeEnum;\n\n constructor(\n @Inject(AM_CONFIG) private _env,\n private dialog: MatDialog,\n @Inject(MAT_DIALOG_DATA) public data: IData,\n public dialogRef: MatDialogRef<AssetDialogComponent>,\n private fileSize: FileSizePipe,\n public uploadAssetsService: UploadAssetsService,\n public assetsService: AssetService,\n private fileService: FileService,\n private domSanitizer: DomSanitizer,\n private svc: AssetManagementService\n ) {}\n\n ngOnInit() {\n this.uploadAssetsService.supportedSize = this.assetsService.maxSize * 1024 * 1024;\n this.linkDownload = `${this._env.asset2Url}/File/Download/${this.data.assetId}`;\n this.getAssetDetail();\n }\n\n get disabled() {\n return (\n !this.fileName.length ||\n this.fileName.length + this.assetDetails.Extension.length > 199 || // limit 200\n !!this.errorMessage ||\n this.patternError ||\n this.isUpdating\n );\n }\n\n closeDialog(res?: boolean) {\n this.dialogRef.close(res);\n }\n\n getAssetDetail() {\n this.fileService\n .getFileDetail(this.data.assetId)\n .pipe(takeUntil(this.destroy$))\n .subscribe((res: IAssetDetailsRes) => {\n if (res) {\n this.isLoading = false;\n this.assetDetails = res.Data;\n this.fileName = this.assetDetails.OriginalFileNameWithoutExtension;\n this.description = this.assetDetails.Description;\n this.acceptTypes = [`.${this.assetDetails.Extension.toLowerCase()}`];\n }\n });\n }\n\n updateAsset() {\n this.isUpdating = true;\n this.fileService\n .updateFile({\n assetId: this.assetDetails.AssetId,\n fileName: this.fileName.trim(),\n description: this.description && this.description.trim(),\n })\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (_res: IAssetUpdatedRes) => {\n this.isUpdating = false;\n this.closeDialog(true);\n },\n err => {\n this.errorMessage = err.ResponseMessage;\n this.isUpdating = false;\n }\n );\n }\n\n deleteAsset() {\n const dialogRef = this.dialog.open(DeleteDialogComponent, {\n data: {\n type: 'file',\n ids: [this.assetDetails.AssetId],\n name: this.assetDetails.OriginalFileNameWithoutExtension,\n },\n panelClass: 'lib-dialog--small',\n autoFocus: false,\n });\n\n dialogRef.afterClosed().subscribe(res => {\n if (res) {\n this.closeDialog(true);\n this.svc.dispatch({\n type: ActionTypes.DELETE_ASSET,\n payload: this.assetDetails.AssetId,\n });\n }\n });\n }\n\n replaceAsset(files: File[]) {\n if (!this.validateFile(files[0])) {\n return;\n }\n this.isLoading = true;\n this.fileService\n .replaceAsset(this.assetDetails.AssetId, files[0])\n .pipe(takeUntil(this.destroy$))\n .subscribe(\n (_res: IAssetDetailsRes) => {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_ASSETS,\n });\n this.getAssetDetail();\n },\n err => {\n this.isLoading = false;\n this.replaceMessage = err.ResponseMessage;\n }\n );\n }\n\n validateFile(file: File) {\n this.replaceMessage = '';\n if (!file) {\n return;\n }\n const ext = this.matchExt(file.type);\n const errors = [];\n\n if (this.acceptTypes.indexOf(ext) < 0) {\n const extError = `${\n this.uploadAssetsService.messageErrors.replace\n } ${this.acceptTypes.join(', ')}`;\n errors.push(extError);\n }\n if (this.uploadAssetsService.supportedSize < file.size) {\n const maxSize = this.fileSize.transform(\n this.uploadAssetsService.supportedSize,\n 0\n );\n errors.push(`${this.uploadAssetsService.messageErrors.size} ${maxSize}`);\n }\n\n if (errors.length) {\n this.replaceMessage = errors.join('<br/>');\n }\n\n return !errors.length;\n }\n\n matchExt(fileType: string) {\n const ext = `.${fileType.split('/')[1].toLowerCase()}`;\n\n switch (ext) {\n case '.jpeg':\n return '.jpg';\n\n case '.svg+xml':\n return '.svg';\n\n default:\n return ext;\n }\n }\n\n onChangeName(event: Event) {\n this.fileName = (event.target as HTMLInputElement).value;\n this.errorMessage = '';\n this.patternError = this.fileName && !this.fileName.match(/.*\\S+.*/);\n }\n\n onChangeDescription(event: Event) {\n this.description = (event.target as HTMLInputElement).value;\n }\n\n copyText(content: string) {\n const selBox = document.createElement('textarea');\n\n selBox.style.position = 'fixed';\n selBox.style.left = '0';\n selBox.style.top = '0';\n selBox.style.opacity = '0';\n selBox.value = content;\n document.body.appendChild(selBox);\n selBox.focus();\n selBox.select();\n document.execCommand('copy');\n document.body.removeChild(selBox);\n\n this.isCopied = true;\n this.timer = setTimeout(() => {\n this.isCopied = false;\n }, 1000);\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.timer);\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { imagePdf, imageZip, imageCsv, fileDefault } from '../../../contanst';\nimport { AssetModel, FileTypeEnum } from '../../../models';\nimport { AssetService } from '../../../services/asset.service';\nimport { ActionTypes, select } from '../../../store';\nimport { AssetDialogComponent } from '../asset-dialog/asset-dialog.component';\n\n@Component({\n selector: 'lib-asset-item',\n templateUrl: './asset-item.component.html',\n styleUrls: ['./asset-item.component.scss'],\n})\nexport class AssetItemComponent implements OnInit, OnDestroy {\n constructor(\n private dialog: MatDialog,\n private domSanitizer: DomSanitizer,\n private svc: AssetManagementService,\n private assetService: AssetService\n ) {\n this.bindSubscriber();\n }\n @Input() asset: AssetModel;\n\n @Output() selectAsset = new EventEmitter<AssetModel>();\n\n public base64PNG = {\n pdf: this.domSanitizer.bypassSecurityTrustUrl(imagePdf),\n zip: this.domSanitizer.bypassSecurityTrustUrl(imageZip),\n csv: this.domSanitizer.bypassSecurityTrustUrl(imageCsv),\n default: this.domSanitizer.bypassSecurityTrustUrl(fileDefault),\n };\n public selectedAssets: Array<AssetModel> = [];\n public fileType = FileTypeEnum;\n private destroy$: Subject<boolean> = new Subject();\n\n ngOnInit() {}\n\n get checkSelectedAsset(): boolean {\n return (\n this.selectedAssets &&\n this.selectedAssets.some((asset) => asset.AssetId === this.asset.AssetId)\n );\n }\n\n private bindSubscriber() {\n select((state) => state.selectedAssets)\n .pipe(takeUntil(this.destroy$))\n .subscribe((selectedAssets) => {\n this.selectedAssets = selectedAssets;\n });\n }\n\n public onChange() {\n this.selectAsset.emit(this.asset);\n }\n\n public editAsset() {\n const dialogRef = this.dialog.open(AssetDialogComponent, {\n autoFocus: false,\n data: {\n assetId: this.asset.AssetId,\n name: this.asset.OriginalFileNameWithoutExtension,\n },\n panelClass: 'lib-dialog--medium',\n });\n if (dialogRef) {\n dialogRef.afterClosed().subscribe((res) => {\n if (res) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_ASSETS,\n });\n }\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n}\n","import {\n CollectionViewer,\n DataSource,\n SelectionChange,\n} from '@angular/cdk/collections';\nimport { FlatTreeControl } from '@angular/cdk/tree';\nimport { BehaviorSubject, merge, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DynamicFlatNode } from '../models';\nimport { NodeTreeService } from '../services/node-tree.service';\n\nexport class NodeTreeDataSource implements DataSource<DynamicFlatNode> {\n dataChange = new BehaviorSubject<DynamicFlatNode[]>([]);\n\n get data(): DynamicFlatNode[] {\n return this.dataChange.value;\n }\n set data(value: DynamicFlatNode[]) {\n this._treeControl.dataNodes = value;\n this.dataChange.next(value);\n }\n\n constructor(\n private _treeControl: FlatTreeControl<DynamicFlatNode>,\n private _database: NodeTreeService\n ) {}\n\n connect(collectionViewer: CollectionViewer): Observable<DynamicFlatNode[]> {\n this._treeControl.expansionModel.changed.subscribe((change) => {\n if (\n (change as SelectionChange<DynamicFlatNode>).added ||\n (change as SelectionChange<DynamicFlatNode>).removed\n ) {\n this.handleTreeControl(change as SelectionChange<DynamicFlatNode>);\n }\n });\n\n return merge(collectionViewer.viewChange, this.dataChange).pipe(\n map(() => this.data)\n );\n }\n\n disconnect(collectionViewer: CollectionViewer): void {}\n\n /** Handle expand/collapse behaviors */\n handleTreeControl(change: SelectionChange<DynamicFlatNode>) {\n if (change.added) {\n change.added.forEach(async (node) => await this.toggleNode(node, true));\n }\n if (change.removed) {\n change.removed\n .slice()\n .reverse()\n .forEach(async (node) => await this.toggleNode(node, false));\n }\n }\n\n /**\n * Toggle the node, remove from display list\n */\n async toggleNode(node: DynamicFlatNode, expand: boolean) {\n if (!node) {\n return;\n }\n node.isLoading = true;\n const index = this.data.indexOf(node);\n if (index < 0) {\n // If cannot find the node, no op\n return;\n }\n\n if (expand) {\n const newNode = await this._database.getChildren(node.item);\n if (!newNode) {\n // If no children, no op\n return;\n }\n const nodes = newNode.Children.map((child) => {\n this._database.addNode(child, node.item.AssetId);\n return new DynamicFlatNode(\n child,\n node.level + 1,\n this._database.isExpandable(child)\n );\n });\n this.data.splice(index + 1, 0, ...nodes);\n } else {\n let count = 0;\n for (\n let i = index + 1;\n i < this.data.length && this.data[i].level > node.level;\n i++, count++\n ) {}\n this.data.splice(index + 1, count);\n }\n\n // notify the change\n node.isLoading = false;\n this.dataChange.next(this.data);\n }\n\n /**\n * Reload the node, remove from display list\n */\n public async reloadNode(node: DynamicFlatNode) {\n if (!node) {\n return;\n }\n const newNode = await this._database.getChildren(node.item);\n const index = this.data.indexOf(node);\n if (!newNode || index < 0) {\n // If no children, or cannot find the node, no op\n return;\n }\n\n // Remove all current children\n let count = 0;\n for (\n let i = index + 1;\n i < this.data.length && this.data[i].level > node.level;\n i++, count++\n ) {}\n this.data.splice(index + 1, count);\n\n // Add new children\n const nodes = newNode.Children.map(\n (child) =>\n new DynamicFlatNode(\n child,\n node.level + 1,\n this._database.isExpandable(child)\n )\n );\n this.data.splice(index + 1, 0, ...nodes);\n\n // notify the change\n this.dataChange.next(this.data);\n }\n}\n","import { FlatTreeControl } from '@angular/cdk/tree';\nimport { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { of, Subject } from 'rxjs';\nimport { distinctUntilChanged, switchMap, takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { NodeTreeDataSource } from '../../../datasources';\nimport { DynamicFlatNode } from '../../../models';\nimport { NodeTreeService } from '../../../services/node-tree.service';\nimport { ActionTypes, select } from '../../../store/index';\n\n@Component({\n selector: 'lib-node-tree',\n templateUrl: './node-tree.component.html',\n styleUrls: ['./node-tree.component.scss'],\n})\nexport class NodeTreeComponent implements OnInit, OnDestroy {\n constructor(\n private nodeTreeService: NodeTreeService,\n private svc: AssetManagementService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this.treeControl = new FlatTreeControl<DynamicFlatNode>(\n this.getLevel,\n this.isExpandable\n );\n this.dataSource = new NodeTreeDataSource(this.treeControl, nodeTreeService);\n }\n\n @Input() width: number;\n\n public currentFolderId: string;\n public isRoot = false;\n public homeLoading = false;\n public loading = false;\n public treeControl: FlatTreeControl<DynamicFlatNode>;\n public dataSource: NodeTreeDataSource;\n private unsubscribe$ = new Subject<void>();\n\n ngOnInit() {\n this.bindSubscriber();\n this.initialData();\n }\n\n private async initialData() {\n await this.nodeTreeService.initialData({ dispatchRootId: true });\n this.changeDetectorRef.detectChanges();\n }\n\n private bindSubscriber() {\n this.nodeTreeService.loading$\n .pipe(takeUntil(this.unsubscribe$), distinctUntilChanged())\n .subscribe((loading) => {\n this.homeLoading = loading;\n this.changeDetectorRef.detectChanges();\n });\n\n this.nodeTreeService.initialData$\n .pipe(takeUntil(this.unsubscribe$), distinctUntilChanged())\n .subscribe((data) => {\n const { AssetId: rootId } = this.nodeTreeService.rootFolder || {AssetId: null};\n this.isRoot = rootId && this.currentFolderId === rootId;\n this.dataSource.data = data;\n data.forEach((node) => this.nodeTreeService.addNode(node.item, null));\n this.changeDetectorRef.detectChanges();\n });\n\n this.dataSource.dataChange\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((data) => {\n if (data && data.length) {\n this.changeDetectorRef.detectChanges();\n }\n });\n\n select((state) => state.currentFolderId)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(async (id) => {\n if (id) {\n const { AssetId: rootId } = this.nodeTreeService.rootFolder || {AssetId: null};\n this.isRoot = rootId && id === rootId;\n this.currentFolderId = id;\n await this.nodeTreeService.updateBreadcrumb(id);\n this.changeDetectorRef.detectChanges();\n }\n });\n\n select((state) => state.reloadCurrentFolder)\n .pipe(takeUntil(this.unsubscribe$), switchMap((res) => of(res)))\n .subscribe(async () => {\n await this.handleReloadFolder(this.currentFolderId);\n this.changeDetectorRef.detectChanges();\n });\n }\n\n public async selectNode(node: DynamicFlatNode) {\n const { AssetId: id } = node.item;\n if (id === this.currentFolderId) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_NODE,\n });\n } else {\n this.svc.dispatch({\n type: ActionTypes.SET_CURRENT_FOLDER_ID,\n payload: id,\n });\n }\n await this.handleReloadFolder(id);\n this.changeDetectorRef.detectChanges();\n }\n\n public backToHome() {\n this.initialData();\n const { AssetId: rootId } = this.nodeTreeService.rootFolder;\n if (this.currentFolderId === rootId) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_NODE,\n });\n }\n\n }\n\n checked(node: DynamicFlatNode): boolean {\n return this.currentFolderId && this.currentFolderId === node.item.AssetId;\n }\n\n disabled(node: DynamicFlatNode): boolean {\n return node.expandable;\n }\n\n getLevel = (node: DynamicFlatNode) => node.level;\n\n isExpandable = (node: DynamicFlatNode) => node.expandable;\n\n hasChild = (_: number, _nodeData: DynamicFlatNode) => _nodeData.expandable;\n\n getParent(node: DynamicFlatNode): DynamicFlatNode {\n const currentLevel = this.getLevel(node);\n\n if (currentLevel < 1) {\n return null;\n }\n\n const startIndex = this.dataSource.data.indexOf(node) - 1;\n\n for (let i = startIndex; i >= 0; i--) {\n const currentNode = this.dataSource.data[i];\n if (this.getLevel(currentNode) < currentLevel) {\n return currentNode;\n }\n }\n }\n\n getNodeById(id: string): DynamicFlatNode {\n return this.treeControl.dataNodes.find((node) => node.item.AssetId === id);\n }\n\n private async handleReloadFolder(id: string) {\n if (!id || this.loading) {\n return;\n }\n this.loading = true;\n const node = this.getNodeById(id);\n if (node) {\n const parent = this.getParent(node);\n if (parent) {\n await this.dataSource.reloadNode(parent);\n const updatedNode = this.getNodeById(id);\n if (updatedNode) {\n await this.treeControl.expand(updatedNode);\n }\n } else {\n await this.nodeTreeService.initialData({ dispatchRootId: false });\n const updatedNode = this.getNodeById(id);\n if (updatedNode) {\n await this.treeControl.expand(updatedNode);\n }\n }\n } else {\n await this.nodeTreeService.initialData({ dispatchRootId: false });\n }\n this.loading = false;\n }\n\n ngOnDestroy() {\n this.dataSource.data = [];\n this.nodeTreeService.data = [];\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { of } from 'rxjs/internal/observable/of';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { FolderTreeModel } from '../../../models';\nimport { NodeTreeService } from '../../../services/node-tree.service';\nimport { ActionTypes, select } from '../../../store';\n\n@Component({\n selector: 'lib-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n})\nexport class BreadcrumbComponent implements OnInit, OnDestroy {\n constructor(\n private nodeTreeService: NodeTreeService,\n private svc: AssetManagementService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this.bindSubscriber();\n }\n private unsubscribe$ = new Subject<void>();\n public currentFolderHierarchy: Array<FolderTreeModel> = [];\n public maximumShownLevel = 3;\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n private bindSubscriber() {\n select((state) => state.currentFolderHierarchy)\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap((res) => of(res))\n )\n .subscribe((currentFolderHierarchy) => {\n this.currentFolderHierarchy = currentFolderHierarchy;\n });\n }\n\n public navigateToFolder(folder: FolderTreeModel) {\n this.svc.dispatch({\n type: ActionTypes.SET_CURRENT_FOLDER_ID,\n payload: folder.AssetId,\n });\n }\n\n public async backToHome() {\n await this.nodeTreeService.initialData({ dispatchRootId: true });\n this.changeDetectorRef.detectChanges();\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { combineLatest } from 'rxjs/internal/observable/combineLatest';\nimport { of } from 'rxjs/internal/observable/of';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { AssetService } from '../../../services/asset.service';\nimport { ActionTypes, select } from '../../../store';\n\n@Component({\n selector: 'lib-search-box',\n templateUrl: './search-box.component.html',\n styleUrls: ['./search-box.component.scss'],\n})\nexport class SearchBoxComponent implements OnInit, OnDestroy {\n private destroy$: Subject<boolean> = new Subject();\n public value = '';\n private folderId = '';\n constructor(\n public assetService: AssetService,\n private svc: AssetManagementService\n ) {\n this.bindingSubscriber();\n }\n\n ngOnInit() {}\n\n private bindingSubscriber() {\n select(state => state.currentFolderId)\n .pipe(\n takeUntil(this.destroy$),\n switchMap(res => of(res))\n )\n .subscribe(currentFolderId => (this.folderId = currentFolderId));\n }\n\n onChange(event: Event) {\n this.value = (event.target as HTMLInputElement).value;\n }\n\n onSubmit() {\n if (!this.value && !this.assetService.keyword) {\n return;\n }\n this.assetService.keyword = this.value;\n this.searchByName();\n }\n\n clearSearch() {\n if (!this.assetService.keyword) {\n this.value = '';\n return;\n }\n\n this.value = '';\n this.assetService.keyword = '';\n this.searchByName();\n this.assetService.setFolderList(null);\n this.assetService.setAssetList(null);\n }\n\n private searchByName() {\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: true,\n });\n combineLatest([\n this.assetService.getChildrenFolders({ assetId: this.folderId }),\n this.assetService.getChildrenAssets({\n assetId: this.folderId,\n pageIndex: '0',\n }),\n ])\n .pipe(takeUntil(this.destroy$))\n .subscribe(([folders, assets]) => {\n this.assetService.setFolderList(folders.Data, folders.Meta.Total);\n this.assetService.setAssetList(assets.Data.Children, assets.Meta);\n })\n .add(() => {\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: false,\n });\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { SortFilesBy, TypeSort } from '../../../models';\nimport { AssetService } from '../../../services/asset.service';\nimport { ActionTypes } from '../../../store';\n\n@Component({\n selector: 'lib-sort-items',\n templateUrl: './sort-items.component.html',\n styleUrls: ['./sort-items.component.scss'],\n})\nexport class SortItemsComponent implements OnInit {\n readonly typeSort = TypeSort;\n sortOrder: TypeSort = TypeSort.DESC;\n sortBy: SortFilesBy = SortFilesBy.MODIFIED_DATE;\n sortList: ISort[] = [\n { value: SortFilesBy.NAME, label: 'Sort by name' },\n { value: SortFilesBy.CREATED_DATE, label: 'Sort by created date' },\n { value: SortFilesBy.MODIFIED_DATE, label: 'Sort by modified date' },\n ];\n constructor(\n private assetService: AssetService,\n private svc: AssetManagementService\n ) {}\n\n ngOnInit() {\n this.sortBy = this.assetService.sortBy;\n this.sortOrder = this.assetService.sortOrder;\n }\n\n onSortBy(event: ISort) {\n this.sortBy = event.value;\n this.assetService.sortBy = this.sortBy;\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_ASSETS,\n });\n }\n\n toggleSortOrder() {\n this.sortOrder =\n this.sortOrder === TypeSort.ASC ? TypeSort.DESC : TypeSort.ASC;\n this.assetService.sortOrder = this.sortOrder;\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_ASSETS,\n });\n }\n}\n\ninterface ISort {\n value: SortFilesBy;\n label?: string;\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { takeUntil } from 'rxjs/operators';\nimport { AssetModel } from '../../../models';\nimport { AssetService } from '../../../services/asset.service';\nimport { select } from '../../../store';\n\n@Component({\n selector: 'lib-asset-wrapper',\n templateUrl: './asset-wrapper.component.html',\n styleUrls: ['./asset-wrapper.component.scss'],\n})\nexport class AssetWrapperComponent implements OnInit, OnDestroy {\n @Input() header = true;\n @Output() assets = new EventEmitter<AssetModel[]>();\n\n private unsubscribe$ = new Subject<void>();\n public nodeTreeMinWidth = 250;\n public nodeTreeMaxWidth = 700;\n public nodeTreeWidth;\n\n constructor(private assetService: AssetService) {}\n\n ngOnInit() {\n this.nodeTreeWidth = this.nodeTreeMinWidth;\n select((state) => state.selectedAssets)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((selectedAssets) => {\n this.assets.emit(selectedAssets);\n });\n }\n\n onResize({ width }) {\n this.nodeTreeWidth = width;\n }\n\n get nodeDetailsWidth(): string {\n return `calc(100% - ${this.nodeTreeWidth}px)`;\n }\n\n ngOnDestroy() {\n this.assetService.resetAsset();\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { of } from 'rxjs';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { combineLatest } from 'rxjs/internal/observable/combineLatest';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { switchMap, takeUntil } from 'rxjs/operators';\nimport { AssetManagementService } from '../../../asset-management.service';\nimport { AssetModel, FolderTreeModel } from '../../../models';\nimport { AssetService } from '../../../services/asset.service';\nimport { NodeTreeService } from '../../../services/node-tree.service';\nimport { ActionTypes, select } from '../../../store';\nimport { AddFolderDialogComponent } from '../add-folder-dialog/add-folder-dialog.component';\nimport { DeleteDialogComponent } from '../delete-dialog/delete-dialog.component';\nimport { UploadDialogComponent } from '../upload-dialog/upload-dialog.component';\n\n@Component({\n selector: 'lib-node-details',\n templateUrl: './node-details.component.html',\n styleUrls: ['./node-details.component.scss'],\n})\nexport class NodeDetailsComponent implements OnInit, OnDestroy {\n constructor(\n public dialog: MatDialog,\n public assetService: AssetService,\n private nodeTreeService: NodeTreeService,\n private svc: AssetManagementService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this.bindSubscriber();\n }\n\n private unsubscribe$ = new Subject<void>();\n\n public selectedAssets: Array<AssetModel> = [];\n public loading$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n public currentFolder: FolderTreeModel;\n public assets: AssetModel[];\n\n ngOnInit() {\n this.assetService\n .getFolderList()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((folders) => {\n this.currentFolder = folders;\n this.changeDetectorRef.detectChanges();\n });\n this.assetService\n .getAssetList()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((assets) => {\n this.assets = assets;\n this.changeDetectorRef.detectChanges();\n });\n }\n\n private bindSubscriber() {\n select((state) => state.globalLoading)\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap((res) => of(res))\n )\n .subscribe((globalLoading) => {\n this.loading$.next(globalLoading);\n });\n\n select((state) => state.selectedAssets)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((selectedAssets) => {\n if (selectedAssets) {\n this.selectedAssets = selectedAssets;\n }\n });\n\n select((state) => state.currentFolderId)\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap((res) => of(res))\n )\n .subscribe((currentFolderId) => {\n if (currentFolderId) {\n this.assetService.pageIndex = 0;\n this.fetchNodeDetails(currentFolderId);\n }\n });\n\n select((state) => state.reloadCurrentFolder)\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap((res) => of(res))\n )\n .subscribe(() => {\n if (!this.currentFolder) {\n return;\n }\n this.fetchFolder(this.currentFolder.AssetId);\n });\n\n select((state) => state.reloadCurrentNode)\n .pipe(\n takeUntil(this.unsubscribe$),\n switchMap((res) => of(res))\n )\n .subscribe(() => {\n if (!this.currentFolder) {\n return;\n }\n this.assetService.pageIndex = 0;\n this.fetchNodeDetails(this.currentFolder.AssetId);\n });\n }\n\n public openUploadDialog() {\n const dialogRef = this.dialog.open(UploadDialogComponent, {\n data: {\n currentAssetId: this.currentFolder.AssetId,\n fileType: this.assetService.dialogConfig.allowedType,\n maxSize: this.assetService.maxSize\n },\n panelClass: 'lib-dialog--medium',\n });\n\n dialogRef.afterClosed().subscribe((res) => {\n if (res) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_ASSETS,\n });\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_FOLDER,\n });\n }\n });\n }\n\n addFolder() {\n const dialogRef = this.dialog.open(AddFolderDialogComponent, {\n data: {\n currentAssetId: this.currentFolder.AssetId,\n },\n panelClass: 'lib-dialog--small',\n });\n\n dialogRef.afterClosed().subscribe((res) => {\n if (res) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_FOLDER,\n });\n }\n });\n }\n\n deleteAssets() {\n const ids = this.selectedAssets.map((asset) => asset.AssetId);\n const dialogRef = this.dialog.open(DeleteDialogComponent, {\n data: {\n type: 'files',\n ids,\n },\n panelClass: 'lib-dialog--small',\n autoFocus: false,\n });\n\n dialogRef.afterClosed().subscribe((res) => {\n if (res) {\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_ASSETS,\n });\n this.svc.dispatch({\n type: ActionTypes.RELOAD_CURRENT_FOLDER,\n });\n this.svc.dispatch({\n type: ActionTypes.SET_SELECTED_ASSETS,\n payload: [],\n });\n }\n });\n }\n\n private fetchFolder(id: string) {\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: true,\n });\n\n this.assetService\n .getChildrenFolders({ assetId: id })\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((res) => {\n this.assetService.setFolderList(res.Data, res.Meta.Total);\n if (res.Data && res.Data.Children) {\n res.Data.Children.forEach((node) =>\n this.nodeTreeService.addNode(node, this.currentFolder.AssetId)\n );\n }\n })\n .add(() => {\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: false,\n });\n });\n }\n\n private fetchNodeDetails(id: string) {\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: true,\n });\n combineLatest([\n this.assetService.getChildrenFolders({ assetId: id }),\n this.assetService.getChildrenAssets({\n assetId: id,\n }),\n ])\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(([folders, assets]) => {\n this.assetService.setFolderList(folders.Data, folders.Meta.Total);\n this.assetService.setAssetList(assets.Data.Children, assets.Meta);\n if (folders.Data && folders.Data.Children) {\n folders.Data.Children.forEach((node) =>\n this.nodeTreeService.addNode(node, this.currentFolder.AssetId)\n );\n }\n })\n .add(() => {\n this.svc.dispatch({\n type: ActionTypes.SET_GLOBAL_LOADING,\n payload: false,\n });\n });\n }\n\n get noResults() {\n return (\n this.assetService.keyword &&\n !this.currentFolder.Children.length &&\n !this.assets.length\n );\n }\n\n ngOnDestroy() {\n this.svc.dispatch({\n type: ActionTypes.SET_CURRENT_FOLDER_ID,\n payload: null,\n });\n this.svc.dispatch({\n type: ActionTypes.SET_SELECTED_ASSETS,\n payload: [],\n });\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","import {\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\n@Component({\n selector: 'lib-drag-to-resize',\n templateUrl: './drag-to-resize.component.html',\n styleUrls: ['./drag-to-resize.component.scss'],\n})\nexport class DragToResizeComponent implements OnInit {\n @Input() minWidth: number;\n @Input() maxWidth: number;\n\n @Output() resizeCompleted = new EventEmitter();\n\n public width: number;\n public grabber = false;\n private oldX = 0;\n\n constructor() {}\n\n ngOnInit() {\n this.width = this.minWidth;\n }\n\n @HostListener('document:mousemove', ['$event'])\n onMouseMove(event: MouseEvent) {\n if (!this.grabber) {\n return;\n }\n this.resizer(event.clientX - this.oldX);\n this.oldX = event.clientX;\n }\n\n @HostListener('document:mouseup', ['$event'])\n onMouseUp(event: MouseEvent) {\n if (this.grabber) {\n this.grabber = false;\n }\n }\n\n onMouseDown(event: MouseEvent) {\n this.grabber = true;\n this.oldX = event.clientX;\n }\n\n resizer(offsetX: number) {\n if (this.width + offsetX > this.maxWidth) {\n this.width = this.maxWidth;\n } else if (this.width + offsetX < this.minWidth) {\n this.width = this.minWidth;\n } else {\n this.width += offsetX;\n }\n this.resizeCompleted.emit({ width: this.width });\n }\n}\n","export const AdminConfig: { [name: string]: any } = {\n locale: 'en-US',\n timeZone: 'local',\n format: {\n date: 'MM/DD/YYYY',\n dayMonth: 'MMM DD',\n dateTime: 'MM/DD/YYYY HH:mm',\n fullDateTime: 'MM/DD/YYYY HH:mm:ss',\n dateTimeAM: 'MM/DD/YYYY hh:mm A',\n apiDate: 'YYYY/MM/DD',\n apiDateTime: 'YYYY-MM-DD[T]HH:mm:ssZ',\n apiDateTimeNoZ: 'YYYY-MM-DD[T]HH:mm:ss',\n apiDateMonthYear: 'MMM DD YYYY',\n urlParam: 'YYYY-MM-DD',\n },\n};\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AdminConfig } from '../configs/admin.config';\nimport * as moment_ from 'moment';\nconst moment = moment_;\n\n@Pipe({ name: 'localDatetime' })\nexport class LocalDateTimePipe implements PipeTransform {\n transform = (\n value: string,\n config?: { format: string; timeZone: string }\n ): string => {\n // Assume timezone is at UTC0 if there's have no timezone.\n const { format, timeZone } = config || {\n format: AdminConfig.format.dateTimeAM,\n timeZone: 'America/Chicago',\n };\n\n if (!value) {\n return '-';\n }\n\n // Check if UTC0.\n if (value.indexOf('Z') !== -1) {\n return moment(value).format(format);\n }\n\n // const utc0String = moment.tz(value, timeZone).toISOString();\n const utc0String = moment.utc(value).toISOString();\n return moment(utc0String).format(format);\n }\n}\n\n@Pipe({ name: 'localDate' })\nexport class LocalDatePipe implements PipeTransform {\n transform = (\n value: string,\n config?: { format: string; timeZone: string }\n ): string => {\n // Assume timezone is at UTC0 if there's have no timezone.\n\n const { format, timeZone } = config || {\n format: AdminConfig.format.date,\n timeZone: 'America/Chicago',\n };\n\n if (!value) {\n return '-';\n }\n\n // Check if UTC0.\n\n if (value.indexOf('Z') !== -1) {\n return moment(value).format(format);\n }\n\n // const utc0String = moment.tz(value, timeZone).toISOString();\n\n const utc0String = moment.utc(value).toISOString();\n\n return moment(utc0String).format(format);\n }\n}\n","import { APP_INITIALIZER, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport {\n UploadAssetsService,\n AssetService,\n FileService,\n NodeTreeService,\n BaseHttpClient\n} from './services/index';\n\nimport { AssetManagementComponent } from './asset-management.component';\nimport { DirectivesModule } from './directives/directives.module';\n\n// UI\nimport { InputFileComponent } from './components/ui//input-file/input-file.component';\nimport { ModalComponent } from './components/ui//modal/modal.component';\nimport { SearchNotFoundComponent } from './components/ui//search-not-found/search-not-found.component';\n\n// Partials\nimport { FileItemComponent } from './components/partial/file-item/file-item.component';\nimport { FileListComponent } from './components/partial/file-list/file-list.component';\nimport { UploadFileComponent } from './components/partial/upload-file/upload-file.component';\nimport { AddFolderDialogComponent } from './components/partial/add-folder-dialog/add-folder-dialog.component';\nimport { EditFolderDialogComponent } from './components/partial/edit-folder-dialog/edit-folder-dialog.component';\nimport { DeleteDialogComponent } from './components/partial/delete-dialog/delete-dialog.component';\nimport { UploadDialogComponent } from './components/partial/upload-dialog/upload-dialog.component';\nimport { FolderItemComponent } from './components/partial/folder-item/folder-item.component';\nimport { FolderListComponent } from './components/partial/folder-list/folder-list.component';\nimport { AssetListComponent } from './components/partial/asset-list/asset-list.component';\nimport { AssetItemComponent } from './components/partial/asset-item/asset-item.component';\nimport { AssetManagementDialogComponent } from './components/partial/asset-management-dialog/asset-management-dialog.component';\nimport { NodeTreeComponent } from './components/partial/node-tree/node-tree.component';\nimport { AssetDialogComponent } from './components/partial/asset-dialog/asset-dialog.component';\nimport { BreadcrumbComponent } from './components/partial/breadcrumb/breadcrumb.component';\nimport { SearchBoxComponent } from './components/partial/search-box/search-box.component';\nimport { SortItemsComponent } from './components/partial/sort-items/sort-items.component';\nimport { AssetWrapperComponent } from './components/partial/asset-wrapper/asset-wrapper.component';\nimport { NodeDetailsComponent } from './components/partial/node-details/node-details.component';\nimport { DragToResizeComponent } from './components/ui/drag-to-resize/drag-to-resize.component';\n\n\n// Pipes\nimport { FileSizePipe } from './pipes/file-size.pipe';\nimport { AMConfig } from './services/env-config.service';\nimport { LocalDatePipe, LocalDateTimePipe } from './pipes/datetime.pipe';\n\n// SERVICES\nconst SERVICES = [\n UploadAssetsService,\n AssetService,\n FileService,\n NodeTreeService,\n BaseHttpClient\n];\n\nconst COMPONENTS = [\n // UI\n InputFileComponent,\n ModalComponent,\n SearchNotFoundComponent,\n DragToResizeComponent,\n\n // Partials\n UploadFileComponent,\n FileItemComponent,\n FileListComponent,\n UploadDialogComponent,\n AddFolderDialogComponent,\n EditFolderDialogComponent,\n DeleteDialogComponent,\n AssetDialogComponent,\n FolderListComponent,\n NodeDetailsComponent,\n FolderItemComponent,\n AssetListComponent,\n AssetItemComponent,\n NodeTreeComponent,\n BreadcrumbComponent,\n SearchBoxComponent,\n SortItemsComponent,\n AssetWrapperComponent,\n AssetManagementDialogComponent,\n];\n\nconst ENTRY_COMPONENTS = [\n ModalComponent,\n UploadDialogComponent,\n AddFolderDialogComponent,\n EditFolderDialogComponent,\n DeleteDialogComponent,\n AssetDialogComponent,\n AssetManagementDialogComponent,\n];\n\nexport function AMFactory(config: AMConfig) {\n const fn = () => {\n return new Promise(res => {\n return setTimeout(() => res(config));\n });\n };\n return fn;\n}\n\n@NgModule({\n declarations: [\n ...COMPONENTS,\n AssetManagementComponent,\n FileSizePipe,\n LocalDatePipe,\n LocalDateTimePipe,\n ],\n imports: [\n DirectivesModule,\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatButtonModule,\n MatInputModule,\n MatIconModule,\n MatDialogModule,\n MatButtonModule,\n MatInputModule,\n MatIconModule,\n MatTooltipModule,\n MatPaginatorModule,\n MatTableModule,\n MatProgressBarModule,\n MatMenuModule,\n MatCheckboxModule,\n MatTreeModule,\n MatSelectModule,\n MatProgressSpinnerModule,\n ],\n exports: [\n ...COMPONENTS,\n AssetManagementComponent,\n DirectivesModule,\n FileSizePipe,\n LocalDatePipe,\n LocalDateTimePipe,\n ],\n providers: [\n ...SERVICES,\n {\n provide: APP_INITIALIZER,\n useFactory: AMFactory,\n deps: SERVICES,\n multi: true,\n }\n ],\n entryComponents: [...ENTRY_COMPONENTS],\n})\nexport class AssetManagementModule {\n constructor() {}\n}\n"],"names":["tslib_1.__extends","ACTIONS.ActionTypes","BehaviorSubject","Subject","IData","MAT_DIALOG_DATA","MatDialogRef","of"],"mappings":"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"}