UNPKG

@alfresco/adf-content-services

Version:
102 lines 14.3 kB
/*! * @license * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { ObjectUtils } from '@alfresco/adf-core'; export const ERR_OBJECT_NOT_FOUND = 'Object source not found'; export class ShareDataRow { get node() { return this.obj; } set node(value) { this.obj = value; this.cache = {}; } constructor(obj, contentService, permissionsStyle, thumbnailService, allowDropFiles) { this.obj = obj; this.contentService = contentService; this.permissionsStyle = permissionsStyle; this.thumbnailService = thumbnailService; this.allowDropFiles = allowDropFiles; this.cache = {}; this.isSelected = false; this.isSelectable = true; this.cssClass = ''; if (!obj) { throw new Error(ERR_OBJECT_NOT_FOUND); } this.isDropTarget = allowDropFiles !== undefined ? this.allowDropFiles && this.checkNodeTypeAndPermissions(obj) : this.checkNodeTypeAndPermissions(obj); if (permissionsStyle) { this.cssClass = this.getPermissionClass(obj); } this.id = this.getId(); } checkNodeTypeAndPermissions(nodeEntry) { return this.isFolderAndHasPermissionToUpload(nodeEntry) || this.isFileAndHasParentFolderPermissionToUpload(nodeEntry); } getPermissionClass(nodeEntity) { let permissionsClasses = ''; this.permissionsStyle.forEach((currentPermissionsStyle) => { if (this.applyPermissionStyleToFolder(nodeEntity.entry, currentPermissionsStyle) || this.applyPermissionStyleToFile(nodeEntity.entry, currentPermissionsStyle)) { if (this.contentService.hasAllowableOperations(nodeEntity.entry, currentPermissionsStyle.permission)) { permissionsClasses += ` ${currentPermissionsStyle.css}`; } } }); return permissionsClasses; } applyPermissionStyleToFile(node, currentPermissionsStyle) { return currentPermissionsStyle.isFile && node.isFile; } applyPermissionStyleToFolder(node, currentPermissionsStyle) { return currentPermissionsStyle.isFolder && node.isFolder; } isFolderAndHasPermissionToUpload(nodeEntry) { return this.isFolder(nodeEntry) && this.contentService.hasAllowableOperations(nodeEntry.entry, 'create'); } isFileAndHasParentFolderPermissionToUpload(nodeEntry) { return this.isFile(nodeEntry) && this.contentService.hasAllowableOperations(nodeEntry.entry, 'update'); } isFile(nodeEntry) { return nodeEntry.entry?.isFile; } isFolder(nodeEntry) { return nodeEntry.entry?.isFolder; } cacheValue(key, value) { this.cache[key] = value; return value; } getValue(key) { if (this.cache[key]) { return this.cache[key]; } return ObjectUtils.getValue(this.obj.entry, key); } imageErrorResolver() { if (this.obj.entry.content) { return this.thumbnailService.getMimeTypeIcon(this.obj.entry.content.mimeType); } } hasValue(key) { return this.getValue(key) !== undefined; } getId() { return this.obj.entry.id || undefined; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmUtZGF0YS1yb3cubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvY29udGVudC1zZXJ2aWNlcy9zcmMvbGliL2RvY3VtZW50LWxpc3QvZGF0YS9zaGFyZS1kYXRhLXJvdy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxPQUFPLEVBQVcsV0FBVyxFQUFvQixNQUFNLG9CQUFvQixDQUFDO0FBSzVFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFXLHlCQUF5QixDQUFDO0FBRXRFLE1BQU0sT0FBTyxZQUFZO0lBUXJCLElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsS0FBZ0I7UUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFlBQ1ksR0FBYyxFQUNkLGNBQThCLEVBQzlCLGdCQUF3QyxFQUN4QyxnQkFBbUMsRUFDbkMsY0FBd0I7UUFKeEIsUUFBRyxHQUFILEdBQUcsQ0FBVztRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXdCO1FBQ3hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBbUI7UUFDbkMsbUJBQWMsR0FBZCxjQUFjLENBQVU7UUFyQnBDLFVBQUssR0FBMkIsRUFBRSxDQUFDO1FBQ25DLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFFN0IsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQW1CbEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxJQUFJ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QUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEYsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxDQUFDO0lBQzVDLENBQUM7SUFFRCxLQUFLO1FBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksU0FBUyxDQUFDO0lBQzFDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgRGF0YVJvdywgT2JqZWN0VXRpbHMsIFRodW1ibmFpbFNlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgTm9kZSwgTm9kZUVudHJ5IH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBQZXJtaXNzaW9uU3R5bGVNb2RlbCB9IGZyb20gJy4vLi4vbW9kZWxzL3Blcm1pc3Npb25zLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IENvbnRlbnRTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi9jb21tb24vc2VydmljZXMvY29udGVudC5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IEVSUl9PQkpFQ1RfTk9UX0ZPVU5EOiBzdHJpbmcgPSAnT2JqZWN0IHNvdXJjZSBub3QgZm91bmQnO1xuXG5leHBvcnQgY2xhc3MgU2hhcmVEYXRhUm93IGltcGxlbWVudHMgRGF0YVJvdyB7XG4gICAgY2FjaGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBpc1NlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgaXNTZWxlY3RhYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgICBpc0Ryb3BUYXJnZXQ6IGJvb2xlYW47XG4gICAgY3NzQ2xhc3M6IHN0cmluZyA9ICcnO1xuICAgIGlkOiBzdHJpbmc7XG5cbiAgICBnZXQgbm9kZSgpOiBOb2RlRW50cnkge1xuICAgICAgICByZXR1cm4gdGhpcy5vYmo7XG4gICAgfVxuXG4gICAgc2V0IG5vZGUodmFsdWU6IE5vZGVFbnRyeSkge1xuICAgICAgICB0aGlzLm9iaiA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNhY2hlID0ge307XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgb2JqOiBOb2RlRW50cnksXG4gICAgICAgIHByaXZhdGUgY29udGVudFNlcnZpY2U6IENvbnRlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHBlcm1pc3Npb25zU3R5bGU6IFBlcm1pc3Npb25TdHlsZU1vZGVsW10sXG4gICAgICAgIHByaXZhdGUgdGh1bWJuYWlsU2VydmljZT86IFRodW1ibmFpbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYWxsb3dEcm9wRmlsZXM/OiBib29sZWFuXG4gICAgKSB7XG4gICAgICAgIGlmICghb2JqKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRVJSX09CSkVDVF9OT1RfRk9VTkQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0Ryb3BUYXJnZXQgPVxuICAgICAgICAgICAgYWxsb3dEcm9wRmlsZXMgIT09IHVuZGVmaW5lZCA/IHRoaXMuYWxsb3dEcm9wRmlsZXMgJiYgdGhpcy5jaGVja05vZGVUeXBlQW5kUGVybWlzc2lvbnMob2JqKSA6IHRoaXMuY2hlY2tOb2RlVHlwZUFuZFBlcm1pc3Npb25zKG9iaik7XG4gICAgICAgIGlmIChwZXJtaXNzaW9uc1N0eWxlKSB7XG4gICAgICAgICAgICB0aGlzLmNzc0NsYXNzID0gdGhpcy5nZXRQZXJtaXNzaW9uQ2xhc3Mob2JqKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlkID0gdGhpcy5nZXRJZCgpO1xuICAgIH1cblxuICAgIGNoZWNrTm9kZVR5cGVBbmRQZXJtaXNzaW9ucyhub2RlRW50cnk6IE5vZGVFbnRyeSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0ZvbGRlckFuZEhhc1Blcm1pc3Npb25Ub1VwbG9hZChub2RlRW50cnkpIHx8IHRoaXMuaXNGaWxlQW5kSGFzUGFyZW50Rm9sZGVyUGVybWlzc2lvblRvVXBsb2FkKG5vZGVFbnRyeSk7XG4gICAgfVxuXG4gICAgZ2V0UGVybWlzc2lvbkNsYXNzKG5vZGVFbnRpdHk6IE5vZGVFbnRyeSk6IHN0cmluZyB7XG4gICAgICAgIGxldCBwZXJtaXNzaW9uc0NsYXNzZXMgPSAnJztcblxuICAgICAgICB0aGlzLnBlcm1pc3Npb25zU3R5bGUuZm9yRWFjaCgoY3VycmVudFBlcm1pc3Npb25zU3R5bGU6IFBlcm1pc3Npb25TdHlsZU1vZGVsKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBseVBlcm1pc3Npb25TdHlsZVRvRm9sZGVyKG5vZGVFbnRpdHkuZW50cnksIGN1cnJlbnRQZXJtaXNzaW9uc1N0eWxlKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlQZXJtaXNzaW9uU3R5bGVUb0ZpbGUobm9kZUVudGl0eS5lbnRyeSwgY3VycmVudFBlcm1pc3Npb25zU3R5bGUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZW50U2VydmljZS5oYXNBbGxvd2FibGVPcGVyYXRpb25zKG5vZGVFbnRpdHkuZW50cnksIGN1cnJlbnRQZXJtaXNzaW9uc1N0eWxlLnBlcm1pc3Npb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zQ2xhc3NlcyArPSBgICR7Y3VycmVudFBlcm1pc3Npb25zU3R5bGUuY3NzfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcGVybWlzc2lvbnNDbGFzc2VzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlQZXJtaXNzaW9uU3R5bGVUb0ZpbGUobm9kZTogTm9kZSwgY3VycmVudFBlcm1pc3Npb25zU3R5bGU6IFBlcm1pc3Npb25TdHlsZU1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBjdXJyZW50UGVybWlzc2lvbnNTdHlsZS5pc0ZpbGUgJiYgbm9kZS5pc0ZpbGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseVBlcm1pc3Npb25TdHlsZVRvRm9sZGVyKG5vZGU6IE5vZGUsIGN1cnJlbnRQZXJtaXNzaW9uc1N0eWxlOiBQZXJtaXNzaW9uU3R5bGVNb2RlbCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gY3VycmVudFBlcm1pc3Npb25zU3R5bGUuaXNGb2xkZXIgJiYgbm9kZS5pc0ZvbGRlcjtcbiAgICB9XG5cbiAgICBpc0ZvbGRlckFuZEhhc1Blcm1pc3Npb25Ub1VwbG9hZChub2RlRW50cnk6IE5vZGVFbnRyeSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0ZvbGRlcihub2RlRW50cnkpICYmIHRoaXMuY29udGVudFNlcnZpY2UuaGFzQWxsb3dhYmxlT3BlcmF0aW9ucyhub2RlRW50cnkuZW50cnksICdjcmVhdGUnKTtcbiAgICB9XG5cbiAgICBpc0ZpbGVBbmRIYXNQYXJlbnRGb2xkZXJQZXJtaXNzaW9uVG9VcGxvYWQobm9kZUVudHJ5OiBOb2RlRW50cnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGaWxlKG5vZGVFbnRyeSkgJiYgdGhpcy5jb250ZW50U2VydmljZS5oYXNBbGxvd2FibGVPcGVyYXRpb25zKG5vZGVFbnRyeS5lbnRyeSwgJ3VwZGF0ZScpO1xuICAgIH1cblxuICAgIGlzRmlsZShub2RlRW50cnk6IE5vZGVFbnRyeSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gbm9kZUVudHJ5LmVudHJ5Py5pc0ZpbGU7XG4gICAgfVxuXG4gICAgaXNGb2xkZXIobm9kZUVudHJ5OiBOb2RlRW50cnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIG5vZGVFbnRyeS5lbnRyeT8uaXNGb2xkZXI7XG4gICAgfVxuXG4gICAgY2FjaGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IGFueSB7XG4gICAgICAgIHRoaXMuY2FjaGVba2V5XSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0VmFsdWUoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5jYWNoZVtrZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWNoZVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3RVdGlscy5nZXRWYWx1ZSh0aGlzLm9iai5lbnRyeSwga2V5KTtcbiAgICB9XG5cbiAgICBpbWFnZUVycm9yUmVzb2x2ZXIoKTogYW55IHtcbiAgICAgICAgaWYgKHRoaXMub2JqLmVudHJ5LmNvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRodW1ibmFpbFNlcnZpY2UuZ2V0TWltZVR5cGVJY29uKHRoaXMub2JqLmVudHJ5LmNvbnRlbnQubWltZVR5cGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFzVmFsdWUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoa2V5KSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm9iai5lbnRyeS5pZCB8fCB1bmRlZmluZWQ7XG4gICAgfVxufVxuIl19