78 lines
2.2 KiB
JavaScript
78 lines
2.2 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.log = log;
|
|
exports.resetState = resetState;
|
|
|
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
|
// Tracks portals that are open and emits events to subscribers
|
|
|
|
var PortalOpenInstances = function PortalOpenInstances() {
|
|
var _this = this;
|
|
|
|
_classCallCheck(this, PortalOpenInstances);
|
|
|
|
this.register = function (openInstance) {
|
|
if (_this.openInstances.indexOf(openInstance) !== -1) {
|
|
if (process.env.NODE_ENV !== "production") {
|
|
// eslint-disable-next-line no-console
|
|
console.warn("React-Modal: Cannot register modal instance that's already open");
|
|
}
|
|
return;
|
|
}
|
|
_this.openInstances.push(openInstance);
|
|
_this.emit("register");
|
|
};
|
|
|
|
this.deregister = function (openInstance) {
|
|
var index = _this.openInstances.indexOf(openInstance);
|
|
if (index === -1) {
|
|
if (process.env.NODE_ENV !== "production") {
|
|
// eslint-disable-next-line no-console
|
|
console.warn("React-Modal: Unable to deregister " + openInstance + " as " + "it was never registered");
|
|
}
|
|
return;
|
|
}
|
|
_this.openInstances.splice(index, 1);
|
|
_this.emit("deregister");
|
|
};
|
|
|
|
this.subscribe = function (callback) {
|
|
_this.subscribers.push(callback);
|
|
};
|
|
|
|
this.emit = function (eventType) {
|
|
_this.subscribers.forEach(function (subscriber) {
|
|
return subscriber(eventType,
|
|
// shallow copy to avoid accidental mutation
|
|
_this.openInstances.slice());
|
|
});
|
|
};
|
|
|
|
this.openInstances = [];
|
|
this.subscribers = [];
|
|
};
|
|
|
|
var portalOpenInstances = new PortalOpenInstances();
|
|
|
|
/* eslint-disable no-console */
|
|
/* istanbul ignore next */
|
|
function log() {
|
|
console.log("portalOpenInstances ----------");
|
|
console.log(portalOpenInstances.openInstances.length);
|
|
portalOpenInstances.openInstances.forEach(function (p) {
|
|
return console.log(p);
|
|
});
|
|
console.log("end portalOpenInstances ----------");
|
|
}
|
|
|
|
/* istanbul ignore next */
|
|
function resetState() {
|
|
portalOpenInstances = new PortalOpenInstances();
|
|
}
|
|
/* eslint-enable no-console */
|
|
|
|
exports.default = portalOpenInstances; |