UNPKG

@clr/angular

Version:

Angular components for Clarity

37 lines 3.98 kB
/* * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved. * This software is released under MIT license. * The full license information can be found in LICENSE in the root directory of this project. */ /** * Generic accessor for deep object properties * that can be specified as simple dot-separated strings. */ export class NestedProperty { constructor(prop) { this.prop = prop; if (prop.indexOf('.') >= 0) { this.splitProp = prop.split('.'); } } // Safe getter for a deep object property, will not throw an error but return // undefined if one of the intermediate properties is null or undefined. getPropValue(item) { if (this.splitProp) { let value = item; for (const nestedProp of this.splitProp) { if (value === null || typeof value === 'undefined' || typeof value[nestedProp] === 'undefined') { return undefined; } value = value[nestedProp]; } return value; } else { return item[this.prop]; } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkLXByb3BlcnR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZGF0YS9kYXRhZ3JpZC9idWlsdC1pbi9uZXN0ZWQtcHJvcGVydHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVIOzs7R0FHRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQW9CLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQzlCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVELDZFQUE2RTtJQUM3RSx3RUFBd0U7SUFDeEUsWUFBWSxDQUFDLElBQU87UUFDbEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztZQUNqQixLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ3ZDLElBQ0UsS0FBSyxLQUFLLElBQUk7b0JBQ2QsT0FBTyxLQUFLLEtBQUssV0FBVztvQkFDNUIsT0FBUSxLQUE2QixDQUFDLFVBQVUsQ0FBQyxLQUFLLFdBQVcsRUFDakU7b0JBQ0EsT0FBTyxTQUFTLENBQUM7aUJBQ2xCO2dCQUNELEtBQUssR0FBSSxLQUE2QixDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3BEO1lBQ0QsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNO1lBQ0wsT0FBUSxJQUE0QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMyBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuLyoqXG4gKiBHZW5lcmljIGFjY2Vzc29yIGZvciBkZWVwIG9iamVjdCBwcm9wZXJ0aWVzXG4gKiB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgYXMgc2ltcGxlIGRvdC1zZXBhcmF0ZWQgc3RyaW5ncy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5lc3RlZFByb3BlcnR5PFQgPSBhbnk+IHtcbiAgcHJpdmF0ZSBzcGxpdFByb3A6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJvcDogc3RyaW5nKSB7XG4gICAgaWYgKHByb3AuaW5kZXhPZignLicpID49IDApIHtcbiAgICAgIHRoaXMuc3BsaXRQcm9wID0gcHJvcC5zcGxpdCgnLicpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNhZmUgZ2V0dGVyIGZvciBhIGRlZXAgb2JqZWN0IHByb3BlcnR5LCB3aWxsIG5vdCB0aHJvdyBhbiBlcnJvciBidXQgcmV0dXJuXG4gIC8vIHVuZGVmaW5lZCBpZiBvbmUgb2YgdGhlIGludGVybWVkaWF0ZSBwcm9wZXJ0aWVzIGlzIG51bGwgb3IgdW5kZWZpbmVkLlxuICBnZXRQcm9wVmFsdWUoaXRlbTogVCk6IGFueSB7XG4gICAgaWYgKHRoaXMuc3BsaXRQcm9wKSB7XG4gICAgICBsZXQgdmFsdWUgPSBpdGVtO1xuICAgICAgZm9yIChjb25zdCBuZXN0ZWRQcm9wIG9mIHRoaXMuc3BsaXRQcm9wKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICAgICAgICB0eXBlb2YgKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW25lc3RlZFByb3BdID09PSAndW5kZWZpbmVkJ1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHZhbHVlID0gKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW25lc3RlZFByb3BdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgYW55PilbdGhpcy5wcm9wXTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==