react-modal
Version:
Accessible modal dialog component for React.JS
78 lines (64 loc) • 2.25 kB
JavaScript
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;
;