@airgram/vue
Version:
## License
44 lines (43 loc) • 1.58 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var vue_1 = __importDefault(require("vue"));
var AirgramProvider = /** @class */ (function () {
function AirgramProvider(_a) {
var airgram = _a.airgram;
this.isInitialized = false;
this.airgram = airgram;
this.eventBus = new vue_1.default();
}
AirgramProvider.prototype.off = function (eventName, handler) {
this.eventBus.$off(eventName, handler);
};
AirgramProvider.prototype.on = function (eventName, handler) {
return this.listen('$on', eventName, handler);
};
AirgramProvider.prototype.once = function (eventName, handler) {
return this.listen('$once', eventName, handler);
};
AirgramProvider.prototype.initialize = function () {
var _this = this;
this.airgram.use(function (ctx, next) {
if ('update' in ctx) {
_this.eventBus.$emit(ctx._, ctx);
}
return next();
});
};
AirgramProvider.prototype.listen = function (type, eventName, handler) {
var _this = this;
if (!this.isInitialized) {
this.initialize();
}
this.isInitialized = true;
this.eventBus[type](eventName, handler);
return function () { return _this.off(eventName, handler); };
};
return AirgramProvider;
}());
exports.AirgramProvider = AirgramProvider;