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.4 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("react")); var _utils = require("@kepler.gl/utils"); var _constants = require("@kepler.gl/constants"); 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, _utils.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 _constants.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, _utils.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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfdXRpbHMiLCJfY29uc3RhbnRzIiwiX2FuaW1hdGlvbkNvbnRyb2xsZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkiLCJkZXBzIiwiQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkiLCJBbmltYXRpb25Db250cm9sbGVyIiwiRmlsdGVyQW5pbWF0aW9uQ29udHJvbGxlciIsIl9yZWYiLCJfZmlsdGVyJHBsb3RUeXBlMiIsImZpbHRlciIsImZpbHRlcklkeCIsInNldEZpbHRlckFuaW1hdGlvblRpbWUiLCJjaGlsZHJlbiIsImJpblRocmVzaG9sZHMiLCJ1c2VNZW1vIiwiX2ZpbHRlciRwbG90VHlwZSIsImdldEJpblRocmVzaG9sZHMiLCJwbG90VHlwZSIsImludGVydmFsIiwiZG9tYWluIiwic3RlcHMiLCJ0aHJlc2hvbGRzIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsInBvcCIsInVwZGF0ZUFuaW1hdGlvbiIsInVzZUNhbGxiYWNrIiwidmFsdWUiLCJhbmltYXRpb25XaW5kb3ciLCJBTklNQVRJT05fV0lORE9XIiwiaWR4IiwibGVuZ3RoIiwidGltZWxpbmUiLCJnZXRUaW1lbGluZUZyb21GaWx0ZXIiLCJjcmVhdGVFbGVtZW50Iiwia2V5Iiwic3BlZWQiLCJpc0FuaW1hdGluZyIsInNldFRpbWVsaW5lVmFsdWUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvZmlsdGVyLWFuaW1hdGlvbi1jb250cm9sbGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlTWVtb30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtnZXRCaW5UaHJlc2hvbGRzLCBnZXRUaW1lbGluZUZyb21GaWx0ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtUaW1lUmFuZ2VGaWx0ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtBTklNQVRJT05fV0lORE9XfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQgQW5pbWF0aW9uQ29udHJvbGxlckZhY3RvcnkgZnJvbSAnLi9jb21tb24vYW5pbWF0aW9uLWNvbnRyb2wvYW5pbWF0aW9uLWNvbnRyb2xsZXInO1xuaW1wb3J0IHtUaW1lbGluZX0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmludGVyZmFjZSBGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyUHJvcHMge1xuICBmaWx0ZXI6IFRpbWVSYW5nZUZpbHRlciAmIHthbmltYXRpb25XaW5kb3c/OiBzdHJpbmd9O1xuICBmaWx0ZXJJZHg6IG51bWJlcjtcbiAgc2V0RmlsdGVyQW5pbWF0aW9uVGltZTogKGlkeDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nLCBhOiBhbnlbXSkgPT4gdm9pZDtcbiAgY2hpbGRyZW4/OiAoXG4gICAgaXNBbmltYXRpbmc6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gICAgc3RhcnRBbmltYXRpb246ICgpID0+IHZvaWQsXG4gICAgcGF1c2VBbmltYXRpb246ICgpID0+IHZvaWQsXG4gICAgcmVzZXRBbmltYXRpb246ICgpID0+IHZvaWQsXG4gICAgdGltZWxpbmU6IFRpbWVsaW5lIHwgdW5kZWZpbmVkLFxuICAgIHNldFRpbWVsaW5lVmFsdWU6ICh4OiBhbnkpID0+IHZvaWRcbiAgKSA9PiBSZWFjdC5SZWFjdEVsZW1lbnQgfCBudWxsO1xufVxuXG5GaWx0ZXJBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeS5kZXBzID0gW0FuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5XTtcbmZ1bmN0aW9uIEZpbHRlckFuaW1hdGlvbkNvbnRyb2xsZXJGYWN0b3J5KFxuICBBbmltYXRpb25Db250cm9sbGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeT5cbikge1xuICBjb25zdCBGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyOiBSZWFjdC5GQzxGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyUHJvcHM+ID0gKHtcbiAgICBmaWx0ZXIsXG4gICAgZmlsdGVySWR4LFxuICAgIHNldEZpbHRlckFuaW1hdGlvblRpbWUsXG4gICAgY2hpbGRyZW5cbiAgfSkgPT4ge1xuICAgIGNvbnN0IGJpblRocmVzaG9sZHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIHJldHVybiBnZXRCaW5UaHJlc2hvbGRzKGZpbHRlci5wbG90VHlwZT8uaW50ZXJ2YWwsIGZpbHRlci5kb21haW4pO1xuICAgIH0sIFtmaWx0ZXIucGxvdFR5cGU/LmludGVydmFsLCBmaWx0ZXIuZG9tYWluXSk7XG5cbiAgICBjb25zdCBzdGVwcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKGJpblRocmVzaG9sZHMpIHtcbiAgICAgICAgY29uc3QgdGhyZXNob2xkcyA9IFsuLi5iaW5UaHJlc2hvbGRzXTtcbiAgICAgICAgLy8gcG9wIGxhc3QgdGhyZXNob2xkXG4gICAgICAgIHRocmVzaG9sZHMucG9wKCk7XG4gICAgICAgIHJldHVybiB0aHJlc2hvbGRzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LCBbYmluVGhyZXNob2xkc10pO1xuXG4gICAgY29uc3QgdXBkYXRlQW5pbWF0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgICB2YWx1ZSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZmlsdGVyLmFuaW1hdGlvbldpbmRvdykge1xuICAgICAgICAgIGNhc2UgQU5JTUFUSU9OX1dJTkRPVy5pbnRlcnZhbDoge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gdmFsdWVbMV07XG4gICAgICAgICAgICBpZiAoaWR4IDwgYmluVGhyZXNob2xkcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgIHNldEZpbHRlckFuaW1hdGlvblRpbWUoZmlsdGVySWR4LCAndmFsdWUnLCBbXG4gICAgICAgICAgICAgICAgYmluVGhyZXNob2xkc1tpZHhdLFxuICAgICAgICAgICAgICAgIGJpblRocmVzaG9sZHNbaWR4ICsgMV0gLSAxXG4gICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBzZXRGaWx0ZXJBbmltYXRpb25UaW1lKGZpbHRlcklkeCwgJ3ZhbHVlJywgdmFsdWUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbZmlsdGVySWR4LCBiaW5UaHJlc2hvbGRzLCBmaWx0ZXIuYW5pbWF0aW9uV2luZG93LCBzZXRGaWx0ZXJBbmltYXRpb25UaW1lXVxuICAgICk7XG5cbiAgICAvLyBpZiBmaWx0ZXIgaXMgc3luY2VkIG1lcmdlIHRoZSBmaWx0ZXIgYW5kIGFuaW1hdGlvbiBjb25maWdcbiAgICBjb25zdCB0aW1lbGluZSA9IGdldFRpbWVsaW5lRnJvbUZpbHRlcihmaWx0ZXIpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxBbmltYXRpb25Db250cm9sbGVyXG4gICAgICAgIGtleT1cImZpbHRlci1jb250cm9sXCJcbiAgICAgICAgdmFsdWU9e2ZpbHRlci52YWx1ZX1cbiAgICAgICAgZG9tYWluPXtmaWx0ZXIuZG9tYWlufVxuICAgICAgICBzcGVlZD17ZmlsdGVyLnNwZWVkfVxuICAgICAgICBpc0FuaW1hdGluZz17ZmlsdGVyLmlzQW5pbWF0aW5nfVxuICAgICAgICBhbmltYXRpb25XaW5kb3c9e2ZpbHRlci5hbmltYXRpb25XaW5kb3d9XG4gICAgICAgIHN0ZXBzPXtzdGVwc31cbiAgICAgICAgdXBkYXRlQW5pbWF0aW9uPXt1cGRhdGVBbmltYXRpb259XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgZGlmZmVyZW50IGZ1bmN0aW9uIHR5cGUsIGdvZXMgdG8gVGltZVdpZGdldCBzZXRGaWx0ZXJBbmltYXRpb25UaW1lKClcbiAgICAgICAgc2V0VGltZWxpbmVWYWx1ZT17c2V0RmlsdGVyQW5pbWF0aW9uVGltZX1cbiAgICAgICAgdGltZWxpbmU9e3RpbWVsaW5lfVxuICAgICAgICBjaGlsZHJlbj17Y2hpbGRyZW59XG4gICAgICAvPlxuICAgICk7XG4gIH07XG4gIHJldHVybiBGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJBbmltYXRpb25Db250cm9sbGVyRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsVUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsb0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUF5RixTQUFBSyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVAsd0JBQUFPLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENB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