UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

107 lines (106 loc) 15.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _reactVirtualized = require("react-virtualized"); var _lodash = _interopRequireDefault(require("lodash.isequal")); var _excluded = ["setGridRef"]; function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project var GridHack = exports["default"] = /*#__PURE__*/function (_PureComponent) { function GridHack() { var _this; (0, _classCallCheck2["default"])(this, GridHack); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _callSuper(this, GridHack, [].concat(args)); (0, _defineProperty2["default"])(_this, "grid", null); (0, _defineProperty2["default"])(_this, "_preventScrollBack", function (e) { var scrollLeft = _this.props.scrollLeft; if (scrollLeft !== undefined && scrollLeft <= 0 && e.deltaX < 0) { // Prevent Scroll On Scrollable Elements, avoid browser backward navigation // https://alvarotrigo.com/blog/prevent-scroll-on-scrollable-element-js/ e.preventDefault(); e.stopPropagation(); return false; } return; }); (0, _defineProperty2["default"])(_this, "_updateRef", function (x) { if (!_this.grid && x) { var _this$grid; _this.grid = x; /* * This hack exists because we need to add wheel event listener to the div rendered by Grid * */ // @ts-expect-error _scrollingContainer not typed in Grid (_this$grid = _this.grid) === null || _this$grid === void 0 || (_this$grid = _this$grid._scrollingContainer) === null || _this$grid === void 0 || _this$grid.addEventListener('wheel', _this._preventScrollBack, { passive: false }); } }); return _this; } (0, _inherits2["default"])(GridHack, _PureComponent); return (0, _createClass2["default"])(GridHack, [{ key: "componentDidUpdate", value: function componentDidUpdate(preProps) { /* * This hack exists because in react-virtualized the * _columnWidthGetter is only called in the constructor * even though it is reassigned with new props resulting in * a new width for cells not being calculated so we must * force trigger a resize. * * https://github.com/bvaughn/react-virtualized/blob/master/source/Grid/Grid.js#L322 * */ if (!(0, _lodash["default"])(preProps.cellSizeCache, this.props.cellSizeCache)) { var _this$grid2; (_this$grid2 = this.grid) === null || _this$grid2 === void 0 || _this$grid2.recomputeGridSize(); } } }, { key: "componentWillUnmount", value: function componentWillUnmount() { var _this$grid3; // @ts-expect-error _scrollingContainer not typed in Grid (_this$grid3 = this.grid) === null || _this$grid3 === void 0 || (_this$grid3 = _this$grid3._scrollingContainer) === null || _this$grid3 === void 0 || _this$grid3.removeEventListener('wheel', this._preventScrollBack, { passive: false }); } }, { key: "render", value: function render() { var _this2 = this; var _this$props = this.props, setGridRef = _this$props.setGridRef, rest = (0, _objectWithoutProperties2["default"])(_this$props, _excluded); return /*#__PURE__*/_react["default"].createElement(_reactVirtualized.Grid, (0, _extends2["default"])({ ref: function ref(x) { if (setGridRef) setGridRef(x); _this2._updateRef(x); }, key: "grid-hack" }, rest)); } }]); }(_react.PureComponent); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RWaXJ0dWFsaXplZCIsIl9sb2Rhc2giLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2V4Y2x1ZGVkIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2NhbGxTdXBlciIsIm8iLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5IiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJHcmlkSGFjayIsImV4cG9ydHMiLCJfUHVyZUNvbXBvbmVudCIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY29uY2F0IiwiX2RlZmluZVByb3BlcnR5MiIsInNjcm9sbExlZnQiLCJwcm9wcyIsInVuZGVmaW5lZCIsImRlbHRhWCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwieCIsImdyaWQiLCJfdGhpcyRncmlkIiwiX3Njcm9sbGluZ0NvbnRhaW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJfcHJldmVudFNjcm9sbEJhY2siLCJwYXNzaXZlIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZVByb3BzIiwiaXNFcXVhbCIsImNlbGxTaXplQ2FjaGUiLCJfdGhpcyRncmlkMiIsInJlY29tcHV0ZUdyaWRTaXplIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJfdGhpcyRncmlkMyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGhpcyRwcm9wcyIsInNldEdyaWRSZWYiLCJyZXN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzMiIsImNyZWF0ZUVsZW1lbnQiLCJHcmlkIiwiX2V4dGVuZHMyIiwicmVmIiwiX3VwZGF0ZVJlZiIsIlB1cmVDb21wb25lbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tbW9uL2RhdGEtdGFibGUvZ3JpZC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IFJlYWN0LCB7UHVyZUNvbXBvbmVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtHcmlkLCBHcmlkUHJvcHN9IGZyb20gJ3JlYWN0LXZpcnR1YWxpemVkJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC5pc2VxdWFsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR3JpZEhhY2sgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PEdyaWRQcm9wcz4ge1xuICBncmlkOiBHcmlkIHwgbnVsbCA9IG51bGw7XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZVByb3BzKSB7XG4gICAgLypcbiAgICAgKiBUaGlzIGhhY2sgZXhpc3RzIGJlY2F1c2UgaW4gcmVhY3QtdmlydHVhbGl6ZWQgdGhlXG4gICAgICogX2NvbHVtbldpZHRoR2V0dGVyIGlzIG9ubHkgY2FsbGVkIGluIHRoZSBjb25zdHJ1Y3RvclxuICAgICAqIGV2ZW4gdGhvdWdoIGl0IGlzIHJlYXNzaWduZWQgd2l0aCBuZXcgcHJvcHMgcmVzdWx0aW5nIGluXG4gICAgICogYSBuZXcgd2lkdGggZm9yIGNlbGxzIG5vdCBiZWluZyBjYWxjdWxhdGVkIHNvIHdlIG11c3RcbiAgICAgKiBmb3JjZSB0cmlnZ2VyIGEgcmVzaXplLlxuICAgICAqXG4gICAgICogaHR0cHM6Ly9naXRodWIuY29tL2J2YXVnaG4vcmVhY3QtdmlydHVhbGl6ZWQvYmxvYi9tYXN0ZXIvc291cmNlL0dyaWQvR3JpZC5qcyNMMzIyXG4gICAgICpcbiAgICAgKi9cbiAgICBpZiAoIWlzRXF1YWwocHJlUHJvcHMuY2VsbFNpemVDYWNoZSwgdGhpcy5wcm9wcy5jZWxsU2l6ZUNhY2hlKSkge1xuICAgICAgdGhpcy5ncmlkPy5yZWNvbXB1dGVHcmlkU2l6ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgX3Njcm9sbGluZ0NvbnRhaW5lciBub3QgdHlwZWQgaW4gR3JpZFxuICAgIHRoaXMuZ3JpZD8uX3Njcm9sbGluZ0NvbnRhaW5lcj8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLl9wcmV2ZW50U2Nyb2xsQmFjaywge1xuICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICB9KTtcbiAgfVxuXG4gIF9wcmV2ZW50U2Nyb2xsQmFjayA9IGUgPT4ge1xuICAgIGNvbnN0IHtzY3JvbGxMZWZ0fSA9IHRoaXMucHJvcHM7XG4gICAgaWYgKHNjcm9sbExlZnQgIT09IHVuZGVmaW5lZCAmJiBzY3JvbGxMZWZ0IDw9IDAgJiYgZS5kZWx0YVggPCAwKSB7XG4gICAgICAvLyBQcmV2ZW50IFNjcm9sbCBPbiBTY3JvbGxhYmxlIEVsZW1lbnRzLCBhdm9pZCBicm93c2VyIGJhY2t3YXJkIG5hdmlnYXRpb25cbiAgICAgIC8vIGh0dHBzOi8vYWx2YXJvdHJpZ28uY29tL2Jsb2cvcHJldmVudC1zY3JvbGwtb24tc2Nyb2xsYWJsZS1lbGVtZW50LWpzL1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9O1xuXG4gIF91cGRhdGVSZWYgPSB4ID0+IHtcbiAgICBpZiAoIXRoaXMuZ3JpZCAmJiB4KSB7XG4gICAgICB0aGlzLmdyaWQgPSB4O1xuICAgICAgLypcbiAgICAgICAqIFRoaXMgaGFjayBleGlzdHMgYmVjYXVzZSB3ZSBuZWVkIHRvIGFkZCB3aGVlbCBldmVudCBsaXN0ZW5lciB0byB0aGUgZGl2IHJlbmRlcmVkIGJ5IEdyaWRcbiAgICAgICAqXG4gICAgICAgKi9cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgX3Njcm9sbGluZ0NvbnRhaW5lciBub3QgdHlwZWQgaW4gR3JpZFxuICAgICAgdGhpcy5ncmlkPy5fc2Nyb2xsaW5nQ29udGFpbmVyPy5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIHRoaXMuX3ByZXZlbnRTY3JvbGxCYWNrLCB7XG4gICAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtzZXRHcmlkUmVmLCAuLi5yZXN0fSA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIChcbiAgICAgIDxHcmlkXG4gICAgICAgIHJlZj17eCA9PiB7XG4gICAgICAgICAgaWYgKHNldEdyaWRSZWYpIHNldEdyaWRSZWYoeCk7XG4gICAgICAgICAgdGhpcy5fdXBkYXRlUmVmKHgpO1xuICAgICAgICB9fVxuICAgICAgICBrZXk9XCJncmlkLWhhY2tcIlxuICAgICAgICB7Li4ucmVzdH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUFxQyxJQUFBSSxTQUFBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJB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