dygraphs
Version:
dygraphs is a fast, flexible open source JavaScript charting library.
75 lines (72 loc) • 9.96 kB
JavaScript
;
/**
* To create a "drag" interaction, you typically register a mousedown event
* handler on the element where the drag begins. In that handler, you register a
* mouseup handler on the window to determine when the mouse is released,
* wherever that release happens. This works well, except when the user releases
* the mouse over an off-domain iframe. In that case, the mouseup event is
* handled by the iframe and never bubbles up to the window handler.
*
* To deal with this issue, we cover iframes with high z-index divs to make sure
* they don't capture mouseup.
*
* Usage:
* element.addEventListener('mousedown', function() {
* var tarper = new IFrameTarp();
* tarper.cover();
* var mouseUpHandler = function() {
* ...
* window.removeEventListener(mouseUpHandler);
* tarper.uncover();
* };
* window.addEventListener('mouseup', mouseUpHandler);
* });
*
* @constructor
*/
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var utils = _interopRequireWildcard(require("./dygraph-utils"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
function IFrameTarp() {
/** @type {Array.<!HTMLDivElement>} */
this.tarps = [];
}
/**
* Find all the iframes in the document and cover them with high z-index
* transparent divs.
*/
IFrameTarp.prototype.cover = function () {
var iframes = document.getElementsByTagName("iframe");
for (var i = 0; i < iframes.length; i++) {
var iframe = iframes[i];
var pos = utils.findPos(iframe),
x = pos.x,
y = pos.y,
width = iframe.offsetWidth,
height = iframe.offsetHeight;
var div = document.createElement("div");
div.style.position = "absolute";
div.style.left = x + 'px';
div.style.top = y + 'px';
div.style.width = width + 'px';
div.style.height = height + 'px';
div.style.zIndex = 999;
document.body.appendChild(div);
this.tarps.push(div);
}
};
/**
* Remove all the iframe covers. You should call this in a mouseup handler.
*/
IFrameTarp.prototype.uncover = function () {
for (var i = 0; i < this.tarps.length; i++) {
this.tarps[i].parentNode.removeChild(this.tarps[i]);
}
this.tarps = [];
};
var _default = exports["default"] = IFrameTarp;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsInV0aWxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJJRnJhbWVUYXJwIiwidGFycHMiLCJwcm90b3R5cGUiLCJjb3ZlciIsImlmcmFtZXMiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwibGVuZ3RoIiwiaWZyYW1lIiwicG9zIiwiZmluZFBvcyIsIngiLCJ5Iiwid2lkdGgiLCJvZmZzZXRXaWR0aCIsImhlaWdodCIsIm9mZnNldEhlaWdodCIsImRpdiIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInBvc2l0aW9uIiwibGVmdCIsInRvcCIsInpJbmRleCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsInB1c2giLCJ1bmNvdmVyIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwiX2RlZmF1bHQiLCJtb2R1bGUiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2lmcmFtZS10YXJwLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBUbyBjcmVhdGUgYSBcImRyYWdcIiBpbnRlcmFjdGlvbiwgeW91IHR5cGljYWxseSByZWdpc3RlciBhIG1vdXNlZG93biBldmVudFxuICogaGFuZGxlciBvbiB0aGUgZWxlbWVudCB3aGVyZSB0aGUgZHJhZyBiZWdpbnMuIEluIHRoYXQgaGFuZGxlciwgeW91IHJlZ2lzdGVyIGFcbiAqIG1vdXNldXAgaGFuZGxlciBvbiB0aGUgd2luZG93IHRvIGRldGVybWluZSB3aGVuIHRoZSBtb3VzZSBpcyByZWxlYXNlZCxcbiAqIHdoZXJldmVyIHRoYXQgcmVsZWFzZSBoYXBwZW5zLiBUaGlzIHdvcmtzIHdlbGwsIGV4Y2VwdCB3aGVuIHRoZSB1c2VyIHJlbGVhc2VzXG4gKiB0aGUgbW91c2Ugb3ZlciBhbiBvZmYtZG9tYWluIGlmcmFtZS4gSW4gdGhhdCBjYXNlLCB0aGUgbW91c2V1cCBldmVudCBpc1xuICogaGFuZGxlZCBieSB0aGUgaWZyYW1lIGFuZCBuZXZlciBidWJibGVzIHVwIHRvIHRoZSB3aW5kb3cgaGFuZGxlci5cbiAqXG4gKiBUbyBkZWFsIHdpdGggdGhpcyBpc3N1ZSwgd2UgY292ZXIgaWZyYW1lcyB3aXRoIGhpZ2ggei1pbmRleCBkaXZzIHRvIG1ha2Ugc3VyZVxuICogdGhleSBkb24ndCBjYXB0dXJlIG1vdXNldXAuXG4gKlxuICogVXNhZ2U6XG4gKiBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uKCkge1xuICogICB2YXIgdGFycGVyID0gbmV3IElGcmFtZVRhcnAoKTtcbiAqICAgdGFycGVyLmNvdmVyKCk7XG4gKiAgIHZhciBtb3VzZVVwSGFuZGxlciA9IGZ1bmN0aW9uKCkge1xuICogICAgIC4uLlxuICogICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKG1vdXNlVXBIYW5kbGVyKTtcbiAqICAgICB0YXJwZXIudW5jb3ZlcigpO1xuICogICB9O1xuICogICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcbiAqIH0pO1xuICpcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuL2R5Z3JhcGgtdXRpbHMnO1xuXG5mdW5jdGlvbiBJRnJhbWVUYXJwKCkge1xuICAvKiogQHR5cGUge0FycmF5LjwhSFRNTERpdkVsZW1lbnQ+fSAqL1xuICB0aGlzLnRhcnBzID0gW107XG59XG5cbi8qKlxuICogRmluZCBhbGwgdGhlIGlmcmFtZXMgaW4gdGhlIGRvY3VtZW50IGFuZCBjb3ZlciB0aGVtIHdpdGggaGlnaCB6LWluZGV4XG4gKiB0cmFuc3BhcmVudCBkaXZzLlxuICovXG5JRnJhbWVUYXJwLnByb3RvdHlwZS5jb3ZlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaWZyYW1lcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaWZyYW1lXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGlmcmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaWZyYW1lID0gaWZyYW1lc1tpXTtcbiAgICB2YXIgcG9zID0gdXRpbHMuZmluZFBvcyhpZnJhbWUpLFxuICAgICAgICB4ID0gcG9zLngsXG4gICAgICAgIHkgPSBwb3MueSxcbiAgICAgICAgd2lkdGggPSBpZnJhbWUub2Zmc2V0V2lkdGgsXG4gICAgICAgIGhlaWdodCA9IGlmcmFtZS5vZmZzZXRIZWlnaHQ7XG5cbiAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBkaXYuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG4gICAgZGl2LnN0eWxlLmxlZnQgPSB4ICsgJ3B4JztcbiAgICBkaXYuc3R5bGUudG9wID0geSArICdweCc7XG4gICAgZGl2LnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICAgIGRpdi5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnO1xuICAgIGRpdi5zdHlsZS56SW5kZXggPSA5OTk7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO1xuICAgIHRoaXMudGFycHMucHVzaChkaXYpO1xuICB9XG59O1xuXG4vKipcbiAqIFJlbW92ZSBhbGwgdGhlIGlmcmFtZSBjb3ZlcnMuIFlvdSBzaG91bGQgY2FsbCB0aGlzIGluIGEgbW91c2V1cCBoYW5kbGVyLlxuICovXG5JRnJhbWVUYXJwLnByb3RvdHlwZS51bmNvdmVyID0gZnVuY3Rpb24oKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50YXJwcy5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMudGFycHNbaV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnRhcnBzW2ldKTtcbiAgfVxuICB0aGlzLnRhcnBzID0gW107XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJRnJhbWVUYXJwO1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxZQUFZOztBQUVaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBeEJBQSxNQUFBLENBQUFDLGNBQUEsQ0FBQUMsT0FBQTtFQUFBQyxLQUFBO0FBQUE7QUFBQUQsT0FBQTtBQXlCQSxJQUFBRSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFBeUMsU0FBQUQsd0JBQUFFLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFKLHVCQUFBLFlBQUFBLHdCQUFBRSxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsdUJBQUFBLENBQUEseUJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBVixDQUFBLFVBQUFNLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLEdBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFBLEVBQUFRLENBQUEsY0FBQUssRUFBQSxJQUFBYixDQUFBLGdCQUFBYSxFQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBZixDQUFBLEVBQUFhLEVBQUEsT0FBQU4sQ0FBQSxJQUFBRCxDQUFB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