UNPKG

@web-atoms/core

Version:
117 lines (116 loc) 3.38 kB
System.register(["@web-atoms/date-time/dist/DateTime", "./types"], function (_export, _context) { "use strict"; var DateTime, CancelToken, EventScope, key, id; _export("default", void 0); return { setters: [function (_webAtomsDateTimeDistDateTime) { DateTime = _webAtomsDateTimeDistDateTime.default; }, function (_types) { CancelToken = _types.CancelToken; }], execute: function () { key = DateTime.now.msSinceEpoch; id = 1; _export("default", EventScope = class EventScope { static create() { return new EventScope(`eventScopeE${key}${id++}`); } bindEvent(fx) { return { [this.eventName]: fx }; } constructor(eventType) { this.eventType = eventType; this.eventName = `event-${this.eventType}`; } subscribe(control, handler) { return control.bindEvent(window, this.eventType, handler); } listen(fx) { const asyncHandler = ce => { if (ce.defaultPrevented) { return; } try { const p = fx(ce); if (p === null || p === void 0 ? void 0 : p.catch) { p.catch(r => { if (CancelToken.isCancelled(r)) { return; } console.error(r); }); } } catch (e) { if (CancelToken.isCancelled(e)) { return; } console.error(e); } }; window.addEventListener(this.eventType, asyncHandler); return { dispose: () => { window.removeEventListener(this.eventType, asyncHandler); } }; } listenOn(target, fx) { const asyncHandler = ce => { if (ce.defaultPrevented) { return; } try { const p = fx(ce); if (p === null || p === void 0 ? void 0 : p.catch) { p.catch(r => { if (CancelToken.isCancelled(r)) { return; } console.error(r); }); } } catch (e) { if (CancelToken.isCancelled(e)) { return; } console.error(e); } }; target.addEventListener(this.eventType, asyncHandler); return { dispose: () => { target.removeEventListener(this.eventType, asyncHandler); } }; } dispatch(target, detail, { cancelable = true, bubbles = true } = {}) { const ce = new CustomEvent(this.eventType, { detail, cancelable, bubbles }); target.dispatchEvent(ce); return ce; } dispatchEvent(detail, cancelable = true) { const ce = new CustomEvent(this.eventType, { detail, cancelable, bubbles: false }); window.dispatchEvent(ce); return ce; } toString() { return this.eventType; } }); } }; }); //# sourceMappingURL=EventScope.js.map