UNPKG

kepler.gl

Version:

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

77 lines (74 loc) 13.6 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 _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _react = _interopRequireWildcard(require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/node_modules/react")); var _src = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/utils/src"); var _src2 = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/constants/src"); var _animationController = _interopRequireDefault(require("./common/animation-control/animation-controller")); 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; } // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project FilterAnimationControllerFactory.deps = [_animationController["default"]]; function FilterAnimationControllerFactory(AnimationController) { var FilterAnimationController = function FilterAnimationController(_ref) { var _filter$plotType2; var filter = _ref.filter, filterIdx = _ref.filterIdx, setFilterAnimationTime = _ref.setFilterAnimationTime, children = _ref.children; var binThresholds = (0, _react.useMemo)(function () { var _filter$plotType; return (0, _src.getBinThresholds)((_filter$plotType = filter.plotType) === null || _filter$plotType === void 0 ? void 0 : _filter$plotType.interval, filter.domain); }, [(_filter$plotType2 = filter.plotType) === null || _filter$plotType2 === void 0 ? void 0 : _filter$plotType2.interval, filter.domain]); var steps = (0, _react.useMemo)(function () { if (binThresholds) { var thresholds = (0, _toConsumableArray2["default"])(binThresholds); // pop last threshold thresholds.pop(); return thresholds; } return null; }, [binThresholds]); var updateAnimation = (0, _react.useCallback)(function (value) { switch (filter.animationWindow) { case _src2.ANIMATION_WINDOW.interval: { var idx = value[1]; if (idx < binThresholds.length - 1) { setFilterAnimationTime(filterIdx, 'value', [binThresholds[idx], binThresholds[idx + 1] - 1]); } break; } default: setFilterAnimationTime(filterIdx, 'value', value); break; } }, [filterIdx, binThresholds, filter.animationWindow, setFilterAnimationTime]); // if filter is synced merge the filter and animation config var timeline = (0, _src.getTimelineFromFilter)(filter); return /*#__PURE__*/_react["default"].createElement(AnimationController, { key: "filter-control", value: filter.value, domain: filter.domain, speed: filter.speed, isAnimating: filter.isAnimating, animationWindow: filter.animationWindow, steps: steps, updateAnimation: updateAnimation // @ts-expect-error different function type, goes to TimeWidget setFilterAnimationTime() , setTimelineValue: setFilterAnimationTime, timeline: timeline, children: children }); }; return FilterAnimationController; } var _default = exports["default"] = FilterAnimationControllerFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3JjIiwiX3NyYzIiLCJfYW5pbWF0aW9uQ29udHJvbGxlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeSIsImRlcHMiLCJBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeSIsIkFuaW1hdGlvbkNvbnRyb2xsZXIiLCJGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyIiwiX3JlZiIsIl9maWx0ZXIkcGxvdFR5cGUyIiwiZmlsdGVyIiwiZmlsdGVySWR4Iiwic2V0RmlsdGVyQW5pbWF0aW9uVGltZSIsImNoaWxkcmVuIiwiYmluVGhyZXNob2xkcyIsInVzZU1lbW8iLCJfZmlsdGVyJHBsb3RUeXBlIiwiZ2V0QmluVGhyZXNob2xkcyIsInBsb3RUeXBlIiwiaW50ZXJ2YWwiLCJkb21haW4iLCJzdGVwcyIsInRocmVzaG9sZHMiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwicG9wIiwidXBkYXRlQW5pbWF0aW9uIiwidXNlQ2FsbGJhY2siLCJ2YWx1ZSIsImFuaW1hdGlvbldpbmRvdyIsIkFOSU1BVElPTl9XSU5ET1ciLCJpZHgiLCJsZW5ndGgiLCJ0aW1lbGluZSIsImdldFRpbWVsaW5lRnJvbUZpbHRlciIsImNyZWF0ZUVsZW1lbnQiLCJrZXkiLCJzcGVlZCIsImlzQW5pbWF0aW5nIiwic2V0VGltZWxpbmVWYWx1ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3NyYy9maWx0ZXItYW5pbWF0aW9uLWNvbnRyb2xsZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge2dldEJpblRocmVzaG9sZHMsIGdldFRpbWVsaW5lRnJvbUZpbHRlcn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge1RpbWVSYW5nZUZpbHRlcn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge0FOSU1BVElPTl9XSU5ET1d9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCBBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeSBmcm9tICcuL2NvbW1vbi9hbmltYXRpb24tY29udHJvbC9hbmltYXRpb24tY29udHJvbGxlcic7XG5pbXBvcnQge1RpbWVsaW5lfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW50ZXJmYWNlIEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJQcm9wcyB7XG4gIGZpbHRlcjogVGltZVJhbmdlRmlsdGVyICYge2FuaW1hdGlvbldpbmRvdz86IHN0cmluZ307XG4gIGZpbHRlcklkeDogbnVtYmVyO1xuICBzZXRGaWx0ZXJBbmltYXRpb25UaW1lOiAoaWR4OiBudW1iZXIsIHZhbHVlOiBzdHJpbmcsIGE6IGFueVtdKSA9PiB2b2lkO1xuICBjaGlsZHJlbj86IChcbiAgICBpc0FuaW1hdGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgICBzdGFydEFuaW1hdGlvbjogKCkgPT4gdm9pZCxcbiAgICBwYXVzZUFuaW1hdGlvbjogKCkgPT4gdm9pZCxcbiAgICByZXNldEFuaW1hdGlvbjogKCkgPT4gdm9pZCxcbiAgICB0aW1lbGluZTogVGltZWxpbmUgfCB1bmRlZmluZWQsXG4gICAgc2V0VGltZWxpbmVWYWx1ZTogKHg6IGFueSkgPT4gdm9pZFxuICApID0+IFJlYWN0LlJlYWN0RWxlbWVudCB8IG51bGw7XG59XG5cbkZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5LmRlcHMgPSBbQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnldO1xuZnVuY3Rpb24gRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkoXG4gIEFuaW1hdGlvbkNvbnRyb2xsZXI6IFJldHVyblR5cGU8dHlwZW9mIEFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5PlxuKSB7XG4gIGNvbnN0IEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXI6IFJlYWN0LkZDPEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJQcm9wcz4gPSAoe1xuICAgIGZpbHRlcixcbiAgICBmaWx0ZXJJZHgsXG4gICAgc2V0RmlsdGVyQW5pbWF0aW9uVGltZSxcbiAgICBjaGlsZHJlblxuICB9KSA9PiB7XG4gICAgY29uc3QgYmluVGhyZXNob2xkcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgcmV0dXJuIGdldEJpblRocmVzaG9sZHMoZmlsdGVyLnBsb3RUeXBlPy5pbnRlcnZhbCwgZmlsdGVyLmRvbWFpbik7XG4gICAgfSwgW2ZpbHRlci5wbG90VHlwZT8uaW50ZXJ2YWwsIGZpbHRlci5kb21haW5dKTtcblxuICAgIGNvbnN0IHN0ZXBzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICBpZiAoYmluVGhyZXNob2xkcykge1xuICAgICAgICBjb25zdCB0aHJlc2hvbGRzID0gWy4uLmJpblRocmVzaG9sZHNdO1xuICAgICAgICAvLyBwb3AgbGFzdCB0aHJlc2hvbGRcbiAgICAgICAgdGhyZXNob2xkcy5wb3AoKTtcbiAgICAgICAgcmV0dXJuIHRocmVzaG9sZHM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sIFtiaW5UaHJlc2hvbGRzXSk7XG5cbiAgICBjb25zdCB1cGRhdGVBbmltYXRpb24gPSB1c2VDYWxsYmFjayhcbiAgICAgIHZhbHVlID0+IHtcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIuYW5pbWF0aW9uV2luZG93KSB7XG4gICAgICAgICAgY2FzZSBBTklNQVRJT05fV0lORE9XLmludGVydmFsOiB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSB2YWx1ZVsxXTtcbiAgICAgICAgICAgIGlmIChpZHggPCBiaW5UaHJlc2hvbGRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgc2V0RmlsdGVyQW5pbWF0aW9uVGltZShmaWx0ZXJJZHgsICd2YWx1ZScsIFtcbiAgICAgICAgICAgICAgICBiaW5UaHJlc2hvbGRzW2lkeF0sXG4gICAgICAgICAgICAgICAgYmluVGhyZXNob2xkc1tpZHggKyAxXSAtIDFcbiAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHNldEZpbHRlckFuaW1hdGlvblRpbWUoZmlsdGVySWR4LCAndmFsdWUnLCB2YWx1ZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFtmaWx0ZXJJZHgsIGJpblRocmVzaG9sZHMsIGZpbHRlci5hbmltYXRpb25XaW5kb3csIHNldEZpbHRlckFuaW1hdGlvblRpbWVdXG4gICAgKTtcblxuICAgIC8vIGlmIGZpbHRlciBpcyBzeW5jZWQgbWVyZ2UgdGhlIGZpbHRlciBhbmQgYW5pbWF0aW9uIGNvbmZpZ1xuICAgIGNvbnN0IHRpbWVsaW5lID0gZ2V0VGltZWxpbmVGcm9tRmlsdGVyKGZpbHRlcik7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEFuaW1hdGlvbkNvbnRyb2xsZXJcbiAgICAgICAga2V5PVwiZmlsdGVyLWNvbnRyb2xcIlxuICAgICAgICB2YWx1ZT17ZmlsdGVyLnZhbHVlfVxuICAgICAgICBkb21haW49e2ZpbHRlci5kb21haW59XG4gICAgICAgIHNwZWVkPXtmaWx0ZXIuc3BlZWR9XG4gICAgICAgIGlzQW5pbWF0aW5nPXtmaWx0ZXIuaXNBbmltYXRpbmd9XG4gICAgICAgIGFuaW1hdGlvbldpbmRvdz17ZmlsdGVyLmFuaW1hdGlvbldpbmRvd31cbiAgICAgICAgc3RlcHM9e3N0ZXBzfVxuICAgICAgICB1cGRhdGVBbmltYXRpb249e3VwZGF0ZUFuaW1hdGlvbn1cbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBkaWZmZXJlbnQgZnVuY3Rpb24gdHlwZSwgZ29lcyB0byBUaW1lV2lkZ2V0IHNldEZpbHRlckFuaW1hdGlvblRpbWUoKVxuICAgICAgICBzZXRUaW1lbGluZVZhbHVlPXtzZXRGaWx0ZXJBbmltYXRpb25UaW1lfVxuICAgICAgICB0aW1lbGluZT17dGltZWxpbmV9XG4gICAgICAgIGNoaWxkcmVuPXtjaGlsZHJlbn1cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcbiAgcmV0dXJuIEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxJQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxLQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxvQkFBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBQXlGLFNBQUFLLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBUCx3QkFBQU8sQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVB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