@versatiledatakit/data-pipelines
Version:
Data Pipelines help Data Engineers develop, deploy, run, and manage data processing workloads (called 'Data Job')
88 lines • 10.8 kB
JavaScript
/*
* Copyright 2023-2025 Broadcom
* SPDX-License-Identifier: Apache-2.0
*/
import { Directive, Input } from '@angular/core';
import { CollectionsUtil, TaurusObject } from '@versatiledatakit/shared';
import * as i0 from "@angular/core";
/**
* ** Directive that set provided object as Element attributes.
*
* @author gorankokin
*/
export class AttributesDirective extends TaurusObject {
/**
* ** Constructor.
*/
constructor(el, renderer) {
super();
this.el = el;
this.renderer = renderer;
}
/**
* @inheritDoc
*/
ngOnChanges(_changes) {
this._transformAttributes();
}
/**
* @inheritDoc
*/
ngOnInit() {
this._transformAttributes();
}
_transformAttributes() {
if (CollectionsUtil.isEqual(this.attributes, this._attributesCopy)) {
return;
}
if (CollectionsUtil.isNil(this.attributes)) {
if (CollectionsUtil.isNil(this._attributesCopy)) {
return;
}
CollectionsUtil.iterateObject(this._attributesCopy, (_attributeValue, attributeName) => {
this._removeAttribute(attributeName);
});
return;
}
if (!CollectionsUtil.isLiteralObject(this.attributes)) {
return;
}
this._attributesCopy = CollectionsUtil.cloneDeep(this.attributes);
CollectionsUtil.iterateObject(this._attributesCopy, (attributeValue, attributeName) => {
this._setOrRemoveAttribute(attributeName, attributeValue);
});
}
_setOrRemoveAttribute(attributeName, attributeValue) {
if (AttributesDirective._isTruthy(attributeValue)) {
this._setAttribute(attributeName, attributeValue);
}
else {
this._removeAttribute(attributeName);
}
}
_setAttribute(attributeName, attributeValue) {
this.renderer.setAttribute(this.el.nativeElement, attributeName, attributeValue);
}
_removeAttribute(attributeName) {
this.renderer.removeAttribute(this.el.nativeElement, attributeName);
}
// eslint-disable-next-line @typescript-eslint/member-ordering,@typescript-eslint/no-explicit-any
static _isTruthy(value) {
return AttributesDirective._valueNotIn(value, [undefined, false, null, 'delete', 'false', '']);
}
// eslint-disable-next-line @typescript-eslint/member-ordering,@typescript-eslint/no-explicit-any
static _valueNotIn(value, forbiddenValues) {
return forbiddenValues.every((prop) => value !== prop);
}
}
AttributesDirective.ɵfac = function AttributesDirective_Factory(t) { return new (t || AttributesDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2)); };
AttributesDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: AttributesDirective, selectors: [["", "libSetAttributes", ""]], inputs: { attributes: "attributes" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature] });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AttributesDirective, [{
type: Directive,
args: [{
selector: '[libSetAttributes]'
}]
}], function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, { attributes: [{
type: Input
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtcGlwZWxpbmVzL3NyYy9saWIvc2hhcmVkL2RpcmVjdGl2ZXMvYXR0cmlidXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBK0MsTUFBTSxlQUFlLENBQUM7QUFFMUcsT0FBTyxFQUFFLGVBQWUsRUFBaUIsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBTXhGOzs7O0dBSUc7QUFJSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsWUFBWTtJQVFqRDs7T0FFRztJQUNILFlBQ3FCLEVBQWMsRUFDZCxRQUFtQjtRQUVwQyxLQUFLLEVBQUUsQ0FBQztRQUhTLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBR3hDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxRQUF1QjtRQUMvQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ0osSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLG9CQUFvQjtRQUN4QixJQUFJLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDaEUsT0FBTztTQUNWO1FBRUQsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN4QyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFO2dCQUM3QyxPQUFPO2FBQ1Y7WUFFRCxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEVBQUU7Z0JBQ25GLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6QyxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNuRCxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxFLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsRUFBRTtZQUNsRixJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHFCQUFxQixDQUFDLGFBQXFCLEVBQUUsY0FBdUI7UUFDeEUsSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDL0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDckQ7YUFBTTtZQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN4QztJQUNMLENBQUM7SUFFTyxhQUFhLENBQUMsYUFBcUIsRUFBRSxjQUF1QjtRQUNoRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsY0FBd0IsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxhQUFxQjtRQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsaUdBQWlHO0lBQ3pGLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUMvQixPQUFPLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUVELGlHQUFpRztJQUN6RixNQUFNLENBQUMsV0FBVyxDQUFDLEtBQVUsRUFBRSxlQUFzQjtRQUN6RCxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDOztzRkFwRlEsbUJBQW1CO3NFQUFuQixtQkFBbUI7dUZBQW5CLG1CQUFtQjtjQUgvQixTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjthQUNqQztxRkFLWSxVQUFVO2tCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIzLTIwMjUgQnJvYWRjb21cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb2xsZWN0aW9uc1V0aWwsIFByaW1pdGl2ZXNOaWwsIFRhdXJ1c09iamVjdCB9IGZyb20gJ0B2ZXJzYXRpbGVkYXRha2l0L3NoYXJlZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0cmlidXRlcyB7XG4gICAgW2F0dHJpYnV0ZTogc3RyaW5nXTogUHJpbWl0aXZlc05pbDtcbn1cblxuLyoqXG4gKiAqKiBEaXJlY3RpdmUgdGhhdCBzZXQgcHJvdmlkZWQgb2JqZWN0IGFzIEVsZW1lbnQgYXR0cmlidXRlcy5cbiAqXG4gKiBAYXV0aG9yIGdvcmFua29raW5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbGliU2V0QXR0cmlidXRlc10nXG59KVxuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZXNEaXJlY3RpdmUgZXh0ZW5kcyBUYXVydXNPYmplY3QgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgLyoqXG4gICAgICogKiogSW5wdXQgYXR0cmlidXRlcyB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIHRvIGhvc3QgZWxlbWVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVzO1xuXG4gICAgcHJpdmF0ZSBfYXR0cmlidXRlc0NvcHk6IEF0dHJpYnV0ZXM7XG5cbiAgICAvKipcbiAgICAgKiAqKiBDb25zdHJ1Y3Rvci5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICBuZ09uQ2hhbmdlcyhfY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICB0aGlzLl90cmFuc2Zvcm1BdHRyaWJ1dGVzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGluaGVyaXREb2NcbiAgICAgKi9cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5fdHJhbnNmb3JtQXR0cmlidXRlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3RyYW5zZm9ybUF0dHJpYnV0ZXMoKTogdm9pZCB7XG4gICAgICAgIGlmIChDb2xsZWN0aW9uc1V0aWwuaXNFcXVhbCh0aGlzLmF0dHJpYnV0ZXMsIHRoaXMuX2F0dHJpYnV0ZXNDb3B5KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKENvbGxlY3Rpb25zVXRpbC5pc05pbCh0aGlzLmF0dHJpYnV0ZXMpKSB7XG4gICAgICAgICAgICBpZiAoQ29sbGVjdGlvbnNVdGlsLmlzTmlsKHRoaXMuX2F0dHJpYnV0ZXNDb3B5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQ29sbGVjdGlvbnNVdGlsLml0ZXJhdGVPYmplY3QodGhpcy5fYXR0cmlidXRlc0NvcHksIChfYXR0cmlidXRlVmFsdWUsIGF0dHJpYnV0ZU5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFDb2xsZWN0aW9uc1V0aWwuaXNMaXRlcmFsT2JqZWN0KHRoaXMuYXR0cmlidXRlcykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2F0dHJpYnV0ZXNDb3B5ID0gQ29sbGVjdGlvbnNVdGlsLmNsb25lRGVlcCh0aGlzLmF0dHJpYnV0ZXMpO1xuXG4gICAgICAgIENvbGxlY3Rpb25zVXRpbC5pdGVyYXRlT2JqZWN0KHRoaXMuX2F0dHJpYnV0ZXNDb3B5LCAoYXR0cmlidXRlVmFsdWUsIGF0dHJpYnV0ZU5hbWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NldE9yUmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGF0dHJpYnV0ZVZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0T3JSZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZTogc3RyaW5nLCBhdHRyaWJ1dGVWYWx1ZTogdW5rbm93bik6IHZvaWQge1xuICAgICAgICBpZiAoQXR0cmlidXRlc0RpcmVjdGl2ZS5faXNUcnV0aHkoYXR0cmlidXRlVmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlVmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWU6IHN0cmluZywgYXR0cmlidXRlVmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCBhdHRyaWJ1dGVOYW1lLCBhdHRyaWJ1dGVWYWx1ZSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2lzVHJ1dGh5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEF0dHJpYnV0ZXNEaXJlY3RpdmUuX3ZhbHVlTm90SW4odmFsdWUsIFt1bmRlZmluZWQsIGZhbHNlLCBudWxsLCAnZGVsZXRlJywgJ2ZhbHNlJywgJyddKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZyxAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBzdGF0aWMgX3ZhbHVlTm90SW4odmFsdWU6IGFueSwgZm9yYmlkZGVuVmFsdWVzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZm9yYmlkZGVuVmFsdWVzLmV2ZXJ5KChwcm9wKSA9PiB2YWx1ZSAhPT0gcHJvcCk7XG4gICAgfVxufVxuIl19