123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- "use strict";
- module.metadata = {
- "stability": "unstable"
- };
- function singularify(text) {
- return text[text.length - 1] === "s" ? text.substr(0, text.length - 1) : text;
- }
- function getInitializerName(category) {
- return "init" + singularify(category);
- }
- function on(element, type, listener, capture) {
-
- capture = capture || false;
- element.addEventListener(type, listener, capture);
- }
- exports.on = on;
- function once(element, type, listener, capture) {
- on(element, type, function selfRemovableListener(event) {
- removeListener(element, type, selfRemovableListener, capture);
- listener.apply(this, arguments);
- }, capture);
- }
- exports.once = once;
- function removeListener(element, type, listener, capture) {
- element.removeEventListener(type, listener, capture);
- }
- exports.removeListener = removeListener;
- function emit(element, type, { category, initializer, settings }) {
- category = category || "UIEvents";
- initializer = initializer || getInitializerName(category);
- let document = element.ownerDocument;
- let event = document.createEvent(category);
- event[initializer].apply(event, [type].concat(settings));
- element.dispatchEvent(event);
- };
- exports.emit = emit;
|