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
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("/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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