@alfresco/adf-content-services
Version:
Alfresco ADF content services
102 lines • 14.3 kB
JavaScript
/*!
* @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