@ux-aspects/ux-aspects
Version:
Open source user interface framework for building modern, responsive, mobile big data applications
24 lines • 3.58 kB
JavaScript
import { defaultConduitProps } from './interfaces/conduit-properties';
/** Expose the property that conduits will be stored in */
export const CONDUITS = '_conduits';
/** Create the conduit property decorator */
export function Conduit(properties) {
return (target, propertyKey) => {
if (typeof properties === 'function') {
properties = properties.call(null);
}
// if the target does not already have a conduit list then create one
// eslint-disable-next-line no-prototype-builtins
if (!target.hasOwnProperty(CONDUITS)) {
Object.defineProperty(target, CONDUITS, { value: [] });
}
// add the conduit to the list ensuring all required properties are provided
target[CONDUITS].push({
...defaultConduitProps,
...properties,
target,
propertyKey,
});
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZHVpdC5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9jb25kdWl0L2NvbmR1aXQuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBcUIsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6RiwwREFBMEQ7QUFDMUQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQztBQUlwQyw0Q0FBNEM7QUFDNUMsTUFBTSxVQUFVLE9BQU8sQ0FBQyxVQUF3QztJQUM5RCxPQUFPLENBQUMsTUFBYyxFQUFFLFdBQW1CLEVBQUUsRUFBRTtRQUM3QyxJQUFJLE9BQU8sVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFFRCxxRUFBcUU7UUFDckUsaURBQWlEO1FBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDckMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUVELDRFQUE0RTtRQUM1RSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3BCLEdBQUcsbUJBQW1CO1lBQ3RCLEdBQUcsVUFBVTtZQUNiLE1BQU07WUFDTixXQUFXO1NBQ08sQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIgXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8td3JhcHBlci1vYmplY3QtdHlwZXMgKi9cbmltcG9ydCB7IENvbmR1aXRNZXRhZGF0YSB9IGZyb20gJy4vaW50ZXJmYWNlcy9jb25kdWl0LW1ldGFkYXRhJztcbmltcG9ydCB7IENvbmR1aXRQcm9wZXJ0aWVzLCBkZWZhdWx0Q29uZHVpdFByb3BzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbmR1aXQtcHJvcGVydGllcyc7XG5cbi8qKiBFeHBvc2UgdGhlIHByb3BlcnR5IHRoYXQgY29uZHVpdHMgd2lsbCBiZSBzdG9yZWQgaW4gKi9cbmV4cG9ydCBjb25zdCBDT05EVUlUUyA9ICdfY29uZHVpdHMnO1xuXG50eXBlIFByb3BlcnR5RGVjb3JhdG9yID0gKHRhcmdldDogT2JqZWN0LCBwcm9wZXJ0eUtleTogc3RyaW5nIHwgc3ltYm9sKSA9PiB2b2lkO1xuXG4vKiogQ3JlYXRlIHRoZSBjb25kdWl0IHByb3BlcnR5IGRlY29yYXRvciAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbmR1aXQocHJvcGVydGllczogQ29uZHVpdFByb3BlcnRpZXMgfCBGdW5jdGlvbik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgcmV0dXJuICh0YXJnZXQ6IE9iamVjdCwgcHJvcGVydHlLZXk6IHN0cmluZykgPT4ge1xuICAgIGlmICh0eXBlb2YgcHJvcGVydGllcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMuY2FsbChudWxsKTtcbiAgICB9XG5cbiAgICAvLyBpZiB0aGUgdGFyZ2V0IGRvZXMgbm90IGFscmVhZHkgaGF2ZSBhIGNvbmR1aXQgbGlzdCB0aGVuIGNyZWF0ZSBvbmVcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gICAgaWYgKCF0YXJnZXQuaGFzT3duUHJvcGVydHkoQ09ORFVJVFMpKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBDT05EVUlUUywgeyB2YWx1ZTogW10gfSk7XG4gICAgfVxuXG4gICAgLy8gYWRkIHRoZSBjb25kdWl0IHRvIHRoZSBsaXN0IGVuc3VyaW5nIGFsbCByZXF1aXJlZCBwcm9wZXJ0aWVzIGFyZSBwcm92aWRlZFxuICAgIHRhcmdldFtDT05EVUlUU10ucHVzaCh7XG4gICAgICAuLi5kZWZhdWx0Q29uZHVpdFByb3BzLFxuICAgICAgLi4ucHJvcGVydGllcyxcbiAgICAgIHRhcmdldCxcbiAgICAgIHByb3BlcnR5S2V5LFxuICAgIH0gYXMgQ29uZHVpdE1ldGFkYXRhKTtcbiAgfTtcbn1cbiJdfQ==