ziko
Version:
A versatile JavaScript library offering a rich set of Hyperscript Based UI components, advanced mathematical utilities, interactivity ,animations, client side routing and more ...
57 lines (50 loc) • 1.53 kB
JavaScript
import { EventsMap } from "../../events/events-map/index.js";
import {
bind_pointer_event,
bind_mouse_event,
bind_key_event,
bind_click_event,
bind_drag_event,
bind_clipboard_event,
bind_focus_event,
bind_wheel_event,
bind_view_event,
bind_swipe_event
} from "../../events/binders/index.js";
import { bind_custom_event } from "../../events/binders/custom-event.js";
const binderMap = {
ptr: bind_pointer_event,
mouse : bind_mouse_event,
key: bind_key_event,
click : bind_click_event,
drag : bind_drag_event,
clipboard : bind_clipboard_event,
focus : bind_focus_event,
wheel : bind_wheel_event,
view : bind_view_event,
swipe : bind_swipe_event
};
const EventsMethodes = {
on(event_name,...callbacks){
if(!this.events.custom)this.events.custom = bind_custom_event(this);
this.events.custom.on(event_name,...callbacks);
return this;
},
emit(event_name,detail={}){
if(!this.events.custom)this.events.custom = bind_custom_event(this);
this.events.custom.emit(event_name,detail);
return this;
}
};
Object.entries(EventsMap).forEach(([name, eventList]) => {
const lname = name.toLowerCase()
eventList.forEach(event => {
const methodName = `on${event}`;
EventsMethodes[methodName] = function (callbacks) {
if (!this.events[lname]) this.events[lname] = binderMap[lname](this);
this.events[lname][methodName](callbacks);
return this;
};
});
});
export {EventsMethodes}