@flexis/ui
Version:
Styleless React Components
22 lines • 1.71 kB
JavaScript
/**
* Decortor for bind class method to context.
* @return Method decorator.
*/
export function Bind() {
return (_, key, descriptor) => {
const method = descriptor.value;
const bindedListenerKey = `__bindedListener(${String(key)})__`;
Reflect.deleteProperty(descriptor, 'value');
Reflect.deleteProperty(descriptor, 'writable');
descriptor.get =
function wrapper() {
if (this.hasOwnProperty(bindedListenerKey)) {
return this[bindedListenerKey];
}
const bindedListener = method.bind(this);
this[bindedListenerKey] = bindedListener;
return bindedListener;
};
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL0JpbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLElBQUk7SUFDbkIsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBOEIsRUFBRSxFQUFFO1FBRWpELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxvQkFBb0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFFL0QsT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFL0MsVUFBVSxDQUFDLEdBQUc7WUFDZCxTQUFTLE9BQU87Z0JBRWYsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7b0JBQzNDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7aUJBQy9CO2dCQUVELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRXpDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLGNBQWMsQ0FBQztnQkFFekMsT0FBTyxjQUFjLENBQUM7WUFDdkIsQ0FBQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0gsQ0FBQyJ9