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
JavaScript
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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
;