kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
107 lines (84 loc) • 13.3 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _deck = require("deck.gl");
var _shaderUtils = require("../layer-utils/shader-utils");
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var defaultProps = _objectSpread(_objectSpread({}, _deck.ArcLayer.defaultProps), {}, {
// show arc if source is in brush
brushSource: true,
// show arc if target is in brush
brushTarget: true,
enableBrushing: true,
getWidth: function getWidth(d) {
return d.strokeWidth;
},
strokeScale: 1,
// brush radius in meters
brushRadius: 100000,
mousePosition: [0, 0]
});
function addBrushingVsShader(vs) {
return (0, _shaderUtils.editShader)(vs, 'arc brushing vs', 'vec2 offset = getExtrusionOffset((next.xy - curr.xy) * indexDir, positions.y, widthPixels);', 'vec2 offset = brushing_getExtrusionOffset((next.xy - curr.xy) * indexDir, positions.y, project_uViewportSize, instancePositions, instanceWidths);');
}
function addBrushingVs64Shader(vs) {
return (0, _shaderUtils.editShader)(vs, 'arc brushing vs64', 'vec2 offset = getExtrusionOffset(next_pos_clipspace.xy - curr_pos_clipspace.xy, positions.y, widthPixels);', 'vec2 offset = brushing_getExtrusionOffset(next_pos_clipspace.xy - curr_pos_clipspace.xy, positions.y, project_uViewportSize, instancePositions, instanceWidths);');
}
var ArcBrushingLayer = exports["default"] = /*#__PURE__*/function (_ArcLayer) {
(0, _inherits2["default"])(ArcBrushingLayer, _ArcLayer);
var _super = _createSuper(ArcBrushingLayer);
function ArcBrushingLayer() {
(0, _classCallCheck2["default"])(this, ArcBrushingLayer);
return _super.apply(this, arguments);
}
(0, _createClass2["default"])(ArcBrushingLayer, [{
key: "getShaders",
value: function getShaders() {
var shaders = (0, _get2["default"])((0, _getPrototypeOf2["default"])(ArcBrushingLayer.prototype), "getShaders", this).call(this);
return {
vs: this.is64bitEnabled() ? addBrushingVs64Shader(shaders.vs) : addBrushingVsShader(shaders.vs),
fs: shaders.fs,
modules: shaders.modules.concat(['brushing'])
};
}
}, {
key: "draw",
value: function draw(opts) {
var uniforms = opts.uniforms;
var _this$props = this.props,
brushSource = _this$props.brushSource,
brushTarget = _this$props.brushTarget,
brushRadius = _this$props.brushRadius,
enableBrushing = _this$props.enableBrushing,
mousePosition = _this$props.mousePosition,
strokeScale = _this$props.strokeScale;
(0, _get2["default"])((0, _getPrototypeOf2["default"])(ArcBrushingLayer.prototype), "draw", this).call(this, _objectSpread(_objectSpread({}, opts), {}, {
uniforms: _objectSpread(_objectSpread({}, uniforms), {}, {
brushing_uBrushSource: brushSource ? 1 : 0,
brushing_uBrushTarget: brushTarget ? 1 : 0,
brushing_uBrushRadius: brushRadius,
brushing_uEnableBrushing: enableBrushing ? 1 : 0,
brushing_uStrokeScale: strokeScale,
brushing_uMousePosition: mousePosition ? new Float32Array(this.unproject(mousePosition)) : defaultProps.mousePosition
})
}));
}
}]);
return ArcBrushingLayer;
}(_deck.ArcLayer);
ArcBrushingLayer.layerName = 'ArcBrushingLayer';
ArcBrushingLayer.defaultProps = defaultProps;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNrZ2wtbGF5ZXJzL2FyYy1icnVzaGluZy1sYXllci9hcmMtYnJ1c2hpbmctbGF5ZXIuanMiXSwibmFtZXMiOlsiZGVmYXVsdFByb3BzIiwiQXJjTGF5ZXIiLCJicnVzaFNvdXJjZSIsImJydXNoVGFyZ2V0IiwiZW5hYmxlQnJ1c2hpbmciLCJnZXRXaWR0aCIsImQiLCJzdHJva2VXaWR0aCIsInN0cm9rZVNjYWxlIiwiYnJ1c2hSYWRpdXMiLCJtb3VzZVBvc2l0aW9uIiwiYWRkQnJ1c2hpbmdWc1NoYWRlciIsInZzIiwiYWRkQnJ1c2hpbmdWczY0U2hhZGVyIiwiQXJjQnJ1c2hpbmdMYXllciIsInNoYWRlcnMiLCJpczY0Yml0RW5hYmxlZCIsImZzIiwibW9kdWxlcyIsImNvbmNhdCIsIm9wdHMiLCJ1bmlmb3JtcyIsInByb3BzIiwiYnJ1c2hpbmdfdUJydXNoU291cmNlIiwiYnJ1c2hpbmdfdUJydXNoVGFyZ2V0IiwiYnJ1c2hpbmdfdUJydXNoUmFkaXVzIiwiYnJ1c2hpbmdfdUVuYWJsZUJydXNoaW5nIiwiYnJ1c2hpbmdfdVN0cm9rZVNjYWxlIiwiYnJ1c2hpbmdfdU1vdXNlUG9zaXRpb24iLCJGbG9hdDMyQXJyYXkiLCJ1bnByb2plY3QiLCJsYXllck5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOzs7Ozs7Ozs7O0FBRUEsSUFBTUEsWUFBWSxtQ0FDYkMsZUFBU0QsWUFESTtBQUVoQjtBQUNBRSxFQUFBQSxXQUFXLEVBQUUsSUFIRztBQUloQjtBQUNBQyxFQUFBQSxXQUFXLEVBQUUsSUFMRztBQU1oQkMsRUFBQUEsY0FBYyxFQUFFLElBTkE7QUFPaEJDLEVBQUFBLFFBQVEsRUFBRSxrQkFBQUMsQ0FBQztBQUFBLFdBQUlBLENBQUMsQ0FBQ0MsV0FBTjtBQUFBLEdBUEs7QUFRaEJDLEVBQUFBLFdBQVcsRUFBRSxDQVJHO0FBU2hCO0FBQ0FDLEVBQUFBLFdBQVcsRUFBRSxNQVZHO0FBV2hCQyxFQUFBQSxhQUFhLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSjtBQVhDLEVBQWxCOztBQWNBLFNBQVNDLG1CQUFULENBQTZCQyxFQUE3QixFQUFpQztBQUMvQixTQUFPLDZCQUNMQSxFQURLLEVBRUwsaUJBRkssRUFHTCw2RkFISyxFQUlMLG1KQUpLLENBQVA7QUFNRDs7QUFFRCxTQUFTQyxxQkFBVCxDQUErQkQsRUFBL0IsRUFBbUM7QUFDakMsU0FBTyw2QkFDTEEsRUFESyxFQUVMLG1CQUZLLEVBR0wsNEdBSEssRUFJTCxrS0FKSyxDQUFQO0FBTUQ7O0lBRW9CRSxnQjs7Ozs7Ozs7Ozs7O1dBQ25CLHNCQUFhO0FBQ1gsVUFBTUMsT0FBTyxxSEFBYjtBQUNBLGFBQU87QUFDTEgsUUFBQUEsRUFBRSxFQUFFLEtBQUtJLGNBQUwsS0FDQUgscUJBQXFCLENBQUNFLE9BQU8sQ0FBQ0gsRUFBVCxDQURyQixHQUVBRCxtQkFBbUIsQ0FBQ0ksT0FBTyxDQUFDSCxFQUFULENBSGxCO0FBSUxLLFFBQUFBLEVBQUUsRUFBRUYsT0FBTyxDQUFDRSxFQUpQO0FBS0xDLFFBQUFBLE9BQU8sRUFBRUgsT0FBTyxDQUFDRyxPQUFSLENBQWdCQyxNQUFoQixDQUF1QixDQUFDLFVBQUQsQ0FBdkI7QUFMSixPQUFQO0FBT0Q7OztXQUVELGNBQUtDLElBQUwsRUFBVztBQUNULFVBQU9DLFFBQVAsR0FBbUJELElBQW5CLENBQU9DLFFBQVA7QUFFQSx3QkFPSSxLQUFLQyxLQVBUO0FBQUEsVUFDRXBCLFdBREYsZUFDRUEsV0FERjtBQUFBLFVBRUVDLFdBRkYsZUFFRUEsV0FGRjtBQUFBLFVBR0VNLFdBSEYsZUFHRUEsV0FIRjtBQUFBLFVBSUVMLGNBSkYsZUFJRUEsY0FKRjtBQUFBLFVBS0VNLGFBTEYsZUFLRUEsYUFMRjtBQUFBLFVBTUVGLFdBTkYsZUFNRUEsV0FORjtBQVNBLG1KQUNLWSxJQURMO0FBRUVDLFFBQUFBLFFBQVEsa0NBQ0hBLFFBREc7QUFFTkUsVUFBQUEscUJBQXFCLEVBQUVyQixXQUFXLEdBQUcsQ0FBSCxHQUFPLENBRm5DO0FBR05zQixVQUFBQSxxQkFBcUIsRUFBRXJCLFdBQVcsR0FBRyxDQUFILEdBQU8sQ0FIbkM7QUFJTnNCLFVBQUFBLHFCQUFxQixFQUFFaEIsV0FKakI7QUFLTmlCLFVBQUFBLHdCQUF3QixFQUFFdEIsY0FBYyxHQUFHLENBQUgsR0FBTyxDQUx6QztBQU1OdUIsVUFBQUEscUJBQXFCLEVBQUVuQixXQU5qQjtBQU9Ob0IsVUFBQUEsdUJBQXVCLEVBQUVsQixhQUFhLEdBQ2xDLElBQUltQixZQUFKLENBQWlCLEtBQUtDLFNBQUwsQ0FBZXBCLGFBQWYsQ0FBakIsQ0FEa0MsR0FFbENWLFlBQVksQ0FBQ1U7QUFUWDtBQUZWO0FBY0Q7OztFQXRDMkNULGM7O0FBeUM5Q2EsZ0JBQWdCLENBQUNpQixTQUFqQixHQUE2QixrQkFBN0I7QUFDQWpCLGdCQUFnQixDQUFDZCxZQUFqQixHQUFnQ0EsWUFBaEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjMgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge0FyY0xheWVyfSBmcm9tICdkZWNrLmdsJztcbmltcG9ydCB7ZWRpdFNoYWRlcn0gZnJvbSAnZGVja2dsLWxheWVycy9sYXllci11dGlscy9zaGFkZXItdXRpbHMnO1xuXG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIC4uLkFyY0xheWVyLmRlZmF1bHRQcm9wcyxcbiAgLy8gc2hvdyBhcmMgaWYgc291cmNlIGlzIGluIGJydXNoXG4gIGJydXNoU291cmNlOiB0cnVlLFxuICAvLyBzaG93IGFyYyBpZiB0YXJnZXQgaXMgaW4gYnJ1c2hcbiAgYnJ1c2hUYXJnZXQ6IHRydWUsXG4gIGVuYWJsZUJydXNoaW5nOiB0cnVlLFxuICBnZXRXaWR0aDogZCA9PiBkLnN0cm9rZVdpZHRoLFxuICBzdHJva2VTY2FsZTogMSxcbiAgLy8gYnJ1c2ggcmFkaXVzIGluIG1ldGVyc1xuICBicnVzaFJhZGl1czogMTAwMDAwLFxuICBtb3VzZVBvc2l0aW9uOiBbMCwgMF1cbn07XG5cbmZ1bmN0aW9uIGFkZEJydXNoaW5nVnNTaGFkZXIodnMpIHtcbiAgcmV0dXJuIGVkaXRTaGFkZXIoXG4gICAgdnMsXG4gICAgJ2FyYyBicnVzaGluZyB2cycsXG4gICAgJ3ZlYzIgb2Zmc2V0ID0gZ2V0RXh0cnVzaW9uT2Zmc2V0KChuZXh0Lnh5IC0gY3Vyci54eSkgKiBpbmRleERpciwgcG9zaXRpb25zLnksIHdpZHRoUGl4ZWxzKTsnLFxuICAgICd2ZWMyIG9mZnNldCA9IGJydXNoaW5nX2dldEV4dHJ1c2lvbk9mZnNldCgobmV4dC54eSAtIGN1cnIueHkpICogaW5kZXhEaXIsIHBvc2l0aW9ucy55LCBwcm9qZWN0X3VWaWV3cG9ydFNpemUsIGluc3RhbmNlUG9zaXRpb25zLCBpbnN0YW5jZVdpZHRocyk7J1xuICApO1xufVxuXG5mdW5jdGlvbiBhZGRCcnVzaGluZ1ZzNjRTaGFkZXIodnMpIHtcbiAgcmV0dXJuIGVkaXRTaGFkZXIoXG4gICAgdnMsXG4gICAgJ2FyYyBicnVzaGluZyB2czY0JyxcbiAgICAndmVjMiBvZmZzZXQgPSBnZXRFeHRydXNpb25PZmZzZXQobmV4dF9wb3NfY2xpcHNwYWNlLnh5IC0gY3Vycl9wb3NfY2xpcHNwYWNlLnh5LCBwb3NpdGlvbnMueSwgd2lkdGhQaXhlbHMpOycsXG4gICAgJ3ZlYzIgb2Zmc2V0ID0gYnJ1c2hpbmdfZ2V0RXh0cnVzaW9uT2Zmc2V0KG5leHRfcG9zX2NsaXBzcGFjZS54eSAtIGN1cnJfcG9zX2NsaXBzcGFjZS54eSwgcG9zaXRpb25zLnksIHByb2plY3RfdVZpZXdwb3J0U2l6ZSwgaW5zdGFuY2VQb3NpdGlvbnMsIGluc3RhbmNlV2lkdGhzKTsnXG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFyY0JydXNoaW5nTGF5ZXIgZXh0ZW5kcyBBcmNMYXllciB7XG4gIGdldFNoYWRlcnMoKSB7XG4gICAgY29uc3Qgc2hhZGVycyA9IHN1cGVyLmdldFNoYWRlcnMoKTtcbiAgICByZXR1cm4ge1xuICAgICAgdnM6IHRoaXMuaXM2NGJpdEVuYWJsZWQoKVxuICAgICAgICA/IGFkZEJydXNoaW5nVnM2NFNoYWRlcihzaGFkZXJzLnZzKVxuICAgICAgICA6IGFkZEJydXNoaW5nVnNTaGFkZXIoc2hhZGVycy52cyksXG4gICAgICBmczogc2hhZGVycy5mcyxcbiAgICAgIG1vZHVsZXM6IHNoYWRlcnMubW9kdWxlcy5jb25jYXQoWydicnVzaGluZyddKVxuICAgIH07XG4gIH1cblxuICBkcmF3KG9wdHMpIHtcbiAgICBjb25zdCB7dW5pZm9ybXN9ID0gb3B0cztcblxuICAgIGNvbnN0IHtcbiAgICAgIGJydXNoU291cmNlLFxuICAgICAgYnJ1c2hUYXJnZXQsXG4gICAgICBicnVzaFJhZGl1cyxcbiAgICAgIGVuYWJsZUJydXNoaW5nLFxuICAgICAgbW91c2VQb3NpdGlvbixcbiAgICAgIHN0cm9rZVNjYWxlXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBzdXBlci5kcmF3KHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICB1bmlmb3Jtczoge1xuICAgICAgICAuLi51bmlmb3JtcyxcbiAgICAgICAgYnJ1c2hpbmdfdUJydXNoU291cmNlOiBicnVzaFNvdXJjZSA/IDEgOiAwLFxuICAgICAgICBicnVzaGluZ191QnJ1c2hUYXJnZXQ6IGJydXNoVGFyZ2V0ID8gMSA6IDAsXG4gICAgICAgIGJydXNoaW5nX3VCcnVzaFJhZGl1czogYnJ1c2hSYWRpdXMsXG4gICAgICAgIGJydXNoaW5nX3VFbmFibGVCcnVzaGluZzogZW5hYmxlQnJ1c2hpbmcgPyAxIDogMCxcbiAgICAgICAgYnJ1c2hpbmdfdVN0cm9rZVNjYWxlOiBzdHJva2VTY2FsZSxcbiAgICAgICAgYnJ1c2hpbmdfdU1vdXNlUG9zaXRpb246IG1vdXNlUG9zaXRpb25cbiAgICAgICAgICA/IG5ldyBGbG9hdDMyQXJyYXkodGhpcy51bnByb2plY3QobW91c2VQb3NpdGlvbikpXG4gICAgICAgICAgOiBkZWZhdWx0UHJvcHMubW91c2VQb3NpdGlvblxuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbkFyY0JydXNoaW5nTGF5ZXIubGF5ZXJOYW1lID0gJ0FyY0JydXNoaW5nTGF5ZXInO1xuQXJjQnJ1c2hpbmdMYXllci5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG4iXX0=