UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

122 lines (121 loc) 5.04 kB
/** * DevExtreme (esm/__internal/file_management/provider_base.js) * Version: 25.2.3 * Build date: Fri Dec 12 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import { ensureDefined } from "../../core/utils/common"; import { compileGetter } from "../../core/utils/data"; import dateSerialization from "../../core/utils/date_serialization"; import { Deferred, fromPromise } from "../../core/utils/deferred"; import { each } from "../../core/utils/iterator"; import { isPromise } from "../../core/utils/type"; import FileSystemItem from "../file_management/file_system_item"; const DEFAULT_FILE_UPLOAD_CHUNK_SIZE = 2e5; class FileSystemProviderBase { constructor(options) { options = ensureDefined(options, {}); this._keyGetter = compileGetter(this._getKeyExpr(options)); this._nameGetter = compileGetter(this._getNameExpr(options)); this._isDirGetter = compileGetter(this._getIsDirExpr(options)); this._sizeGetter = compileGetter(this._getSizeExpr(options)); this._dateModifiedGetter = compileGetter(this._getDateModifiedExpr(options)); this._thumbnailGetter = compileGetter(this._getThumbnailExpr(options)) } getItems(parentDirectory) { const deferred = new Deferred; deferred.resolve([]); return deferred.promise() } abortFileUpload(fileData, chunksInfo, destinationDirectory) {} getItemsContent(items) {} getFileUploadChunkSize() { return 2e5 } _convertDataObjectsToFileItems(entries, pathInfo) { const result = []; each(entries, ((_, entry) => { const fileItem = this._createFileItem(entry, pathInfo); result.push(fileItem) })); return result } _createFileItem(dataObj, pathInfo) { var _this$_keyGetter, _this$_nameGetter, _this$_isDirGetter, _this$_sizeGetter, _this$_dateModifiedGe, _this$_thumbnailGette; const key = null === (_this$_keyGetter = this._keyGetter) || void 0 === _this$_keyGetter ? void 0 : _this$_keyGetter.call(this, dataObj); const fileItem = new FileSystemItem(pathInfo, null === (_this$_nameGetter = this._nameGetter) || void 0 === _this$_nameGetter ? void 0 : _this$_nameGetter.call(this, dataObj), !!(null !== (_this$_isDirGetter = this._isDirGetter) && void 0 !== _this$_isDirGetter && _this$_isDirGetter.call(this, dataObj)), key); fileItem.size = null === (_this$_sizeGetter = this._sizeGetter) || void 0 === _this$_sizeGetter ? void 0 : _this$_sizeGetter.call(this, dataObj); if (void 0 === fileItem.size) { fileItem.size = 0 } fileItem.dateModified = dateSerialization.deserializeDate(null === (_this$_dateModifiedGe = this._dateModifiedGetter) || void 0 === _this$_dateModifiedGe ? void 0 : _this$_dateModifiedGe.call(this, dataObj)); if (void 0 === fileItem.dateModified) { fileItem.dateModified = new Date } if (fileItem.isDirectory) { fileItem.hasSubDirectories = this._hasSubDirs(dataObj) } if (!key) { fileItem.key = fileItem.relativeName } fileItem.thumbnail = (null === (_this$_thumbnailGette = this._thumbnailGetter) || void 0 === _this$_thumbnailGette ? void 0 : _this$_thumbnailGette.call(this, dataObj)) || ""; fileItem.dataItem = dataObj; return fileItem } _hasSubDirs(dataObj) { return true } _getKeyExpr(options) { return options.keyExpr ?? this._defaultKeyExpr } _defaultKeyExpr(fileItem) { if (2 === arguments.length) { fileItem.__KEY__ = arguments[1]; return } return Object.prototype.hasOwnProperty.call(fileItem, "__KEY__") ? fileItem.__KEY__ : null } _getNameExpr(options) { return options.nameExpr ?? "name" } _getIsDirExpr(options) { return options.isDirectoryExpr ?? "isDirectory" } _getSizeExpr(options) { return options.sizeExpr ?? "size" } _getDateModifiedExpr(options) { return options.dateModifiedExpr ?? "dateModified" } _getThumbnailExpr(options) { return options.thumbnailExpr ?? "thumbnail" } _executeActionAsDeferred(action, keepResult) { const deferred = new Deferred; try { const result = action(); if (isPromise(result)) { fromPromise(result).done((userResult => deferred.resolve(keepResult ? userResult : void 0))).fail((error => deferred.reject(error))) } else { deferred.resolve(keepResult ? result : void 0) } } catch (error) { return deferred.reject(error) } return deferred.promise() } } export default FileSystemProviderBase;