kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
104 lines (84 loc) • 12.6 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 _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _deck = require("deck.gl");
var _shaderUtils = require("../layer-utils/shader-utils");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
var defaultProps = _objectSpread({}, _deck.ArcLayer.defaultProps, {
// show arc if source is in brush
brushSource: true,
// show arc if target is in brush
brushTarget: true,
enableBrushing: true,
getStrokeWidth: function getStrokeWidth(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);', '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);', 'vec2 offset = brushing_getExtrusionOffset(next_pos_clipspace.xy - curr_pos_clipspace.xy, positions.y, project_uViewportSize, instancePositions, instanceWidths);');
}
var ArcBrushingLayer =
/*#__PURE__*/
function (_ArcLayer) {
(0, _inherits2["default"])(ArcBrushingLayer, _ArcLayer);
function ArcBrushingLayer() {
(0, _classCallCheck2["default"])(this, ArcBrushingLayer);
return (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(ArcBrushingLayer).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({}, opts, {
uniforms: _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);
exports["default"] = ArcBrushingLayer;
ArcBrushingLayer.layerName = 'ArcBrushingLayer';
ArcBrushingLayer.defaultProps = defaultProps;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNrZ2wtbGF5ZXJzL2FyYy1icnVzaGluZy1sYXllci9hcmMtYnJ1c2hpbmctbGF5ZXIuanMiXSwibmFtZXMiOlsiZGVmYXVsdFByb3BzIiwiQXJjTGF5ZXIiLCJicnVzaFNvdXJjZSIsImJydXNoVGFyZ2V0IiwiZW5hYmxlQnJ1c2hpbmciLCJnZXRTdHJva2VXaWR0aCIsImQiLCJzdHJva2VXaWR0aCIsInN0cm9rZVNjYWxlIiwiYnJ1c2hSYWRpdXMiLCJtb3VzZVBvc2l0aW9uIiwiYWRkQnJ1c2hpbmdWc1NoYWRlciIsInZzIiwiYWRkQnJ1c2hpbmdWczY0U2hhZGVyIiwiQXJjQnJ1c2hpbmdMYXllciIsInNoYWRlcnMiLCJpczY0Yml0RW5hYmxlZCIsImZzIiwibW9kdWxlcyIsImNvbmNhdCIsIm9wdHMiLCJ1bmlmb3JtcyIsInByb3BzIiwiYnJ1c2hpbmdfdUJydXNoU291cmNlIiwiYnJ1c2hpbmdfdUJydXNoVGFyZ2V0IiwiYnJ1c2hpbmdfdUJydXNoUmFkaXVzIiwiYnJ1c2hpbmdfdUVuYWJsZUJydXNoaW5nIiwiYnJ1c2hpbmdfdVN0cm9rZVNjYWxlIiwiYnJ1c2hpbmdfdU1vdXNlUG9zaXRpb24iLCJGbG9hdDMyQXJyYXkiLCJ1bnByb2plY3QiLCJsYXllck5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOzs7Ozs7QUFFQSxJQUFNQSxZQUFZLHFCQUNiQyxlQUFTRCxZQURJO0FBRWhCO0FBQ0FFLEVBQUFBLFdBQVcsRUFBRSxJQUhHO0FBSWhCO0FBQ0FDLEVBQUFBLFdBQVcsRUFBRSxJQUxHO0FBTWhCQyxFQUFBQSxjQUFjLEVBQUUsSUFOQTtBQU9oQkMsRUFBQUEsY0FBYyxFQUFFLHdCQUFBQyxDQUFDO0FBQUEsV0FBSUEsQ0FBQyxDQUFDQyxXQUFOO0FBQUEsR0FQRDtBQVFoQkMsRUFBQUEsV0FBVyxFQUFFLENBUkc7QUFTaEI7QUFDQUMsRUFBQUEsV0FBVyxFQUFFLE1BVkc7QUFXaEJDLEVBQUFBLGFBQWEsRUFBRSxDQUFDLENBQUQsRUFBSSxDQUFKO0FBWEMsRUFBbEI7O0FBY0EsU0FBU0MsbUJBQVQsQ0FBNkJDLEVBQTdCLEVBQWlDO0FBQy9CLFNBQU8sNkJBQ0xBLEVBREssRUFFTCxpQkFGSyxFQUdMLGdGQUhLLEVBSUwsbUpBSkssQ0FBUDtBQU1EOztBQUVELFNBQVNDLHFCQUFULENBQStCRCxFQUEvQixFQUFtQztBQUNqQyxTQUFPLDZCQUNMQSxFQURLLEVBRUwsbUJBRkssRUFHTCwrRkFISyxFQUlMLGtLQUpLLENBQVA7QUFNRDs7SUFFb0JFLGdCOzs7Ozs7Ozs7Ozs7aUNBQ047QUFDWCxVQUFNQyxPQUFPLHFIQUFiO0FBQ0EsYUFBTztBQUNMSCxRQUFBQSxFQUFFLEVBQUUsS0FBS0ksY0FBTCxLQUNBSCxxQkFBcUIsQ0FBQ0UsT0FBTyxDQUFDSCxFQUFULENBRHJCLEdBRUFELG1CQUFtQixDQUFDSSxPQUFPLENBQUNILEVBQVQsQ0FIbEI7QUFJTEssUUFBQUEsRUFBRSxFQUFFRixPQUFPLENBQUNFLEVBSlA7QUFLTEMsUUFBQUEsT0FBTyxFQUFFSCxPQUFPLENBQUNHLE9BQVIsQ0FBZ0JDLE1BQWhCLENBQXVCLENBQUMsVUFBRCxDQUF2QjtBQUxKLE9BQVA7QUFPRDs7O3lCQUVJQyxJLEVBQU07QUFBQSxVQUNGQyxRQURFLEdBQ1VELElBRFYsQ0FDRkMsUUFERTtBQUFBLHdCQVVMLEtBQUtDLEtBVkE7QUFBQSxVQUlQcEIsV0FKTyxlQUlQQSxXQUpPO0FBQUEsVUFLUEMsV0FMTyxlQUtQQSxXQUxPO0FBQUEsVUFNUE0sV0FOTyxlQU1QQSxXQU5PO0FBQUEsVUFPUEwsY0FQTyxlQU9QQSxjQVBPO0FBQUEsVUFRUE0sYUFSTyxlQVFQQSxhQVJPO0FBQUEsVUFTUEYsV0FUTyxlQVNQQSxXQVRPO0FBWVQscUlBQ0tZLElBREw7QUFFRUMsUUFBQUEsUUFBUSxvQkFDSEEsUUFERztBQUVORSxVQUFBQSxxQkFBcUIsRUFBRXJCLFdBQVcsR0FBRyxDQUFILEdBQU8sQ0FGbkM7QUFHTnNCLFVBQUFBLHFCQUFxQixFQUFFckIsV0FBVyxHQUFHLENBQUgsR0FBTyxDQUhuQztBQUlOc0IsVUFBQUEscUJBQXFCLEVBQUVoQixXQUpqQjtBQUtOaUIsVUFBQUEsd0JBQXdCLEVBQUV0QixjQUFjLEdBQUcsQ0FBSCxHQUFPLENBTHpDO0FBTU51QixVQUFBQSxxQkFBcUIsRUFBRW5CLFdBTmpCO0FBT05vQixVQUFBQSx1QkFBdUIsRUFBRWxCLGFBQWEsR0FDbEMsSUFBSW1CLFlBQUosQ0FBaUIsS0FBS0MsU0FBTCxDQUFlcEIsYUFBZixDQUFqQixDQURrQyxHQUVsQ1YsWUFBWSxDQUFDVTtBQVRYO0FBRlY7QUFjRDs7O0VBdEMyQ1QsYzs7O0FBeUM5Q2EsZ0JBQWdCLENBQUNpQixTQUFqQixHQUE2QixrQkFBN0I7QUFDQWpCLGdCQUFnQixDQUFDZCxZQUFqQixHQUFnQ0EsWUFBaEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMTkgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge0FyY0xheWVyfSBmcm9tICdkZWNrLmdsJztcbmltcG9ydCB7ZWRpdFNoYWRlcn0gZnJvbSAnZGVja2dsLWxheWVycy9sYXllci11dGlscy9zaGFkZXItdXRpbHMnO1xuXG5jb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gIC4uLkFyY0xheWVyLmRlZmF1bHRQcm9wcyxcbiAgLy8gc2hvdyBhcmMgaWYgc291cmNlIGlzIGluIGJydXNoXG4gIGJydXNoU291cmNlOiB0cnVlLFxuICAvLyBzaG93IGFyYyBpZiB0YXJnZXQgaXMgaW4gYnJ1c2hcbiAgYnJ1c2hUYXJnZXQ6IHRydWUsXG4gIGVuYWJsZUJydXNoaW5nOiB0cnVlLFxuICBnZXRTdHJva2VXaWR0aDogZCA9PiBkLnN0cm9rZVdpZHRoLFxuICBzdHJva2VTY2FsZTogMSxcbiAgLy8gYnJ1c2ggcmFkaXVzIGluIG1ldGVyc1xuICBicnVzaFJhZGl1czogMTAwMDAwLFxuICBtb3VzZVBvc2l0aW9uOiBbMCwgMF1cbn07XG5cbmZ1bmN0aW9uIGFkZEJydXNoaW5nVnNTaGFkZXIodnMpIHtcbiAgcmV0dXJuIGVkaXRTaGFkZXIoXG4gICAgdnMsXG4gICAgJ2FyYyBicnVzaGluZyB2cycsXG4gICAgJ3ZlYzIgb2Zmc2V0ID0gZ2V0RXh0cnVzaW9uT2Zmc2V0KChuZXh0Lnh5IC0gY3Vyci54eSkgKiBpbmRleERpciwgcG9zaXRpb25zLnkpOycsXG4gICAgJ3ZlYzIgb2Zmc2V0ID0gYnJ1c2hpbmdfZ2V0RXh0cnVzaW9uT2Zmc2V0KChuZXh0Lnh5IC0gY3Vyci54eSkgKiBpbmRleERpciwgcG9zaXRpb25zLnksIHByb2plY3RfdVZpZXdwb3J0U2l6ZSwgaW5zdGFuY2VQb3NpdGlvbnMsIGluc3RhbmNlV2lkdGhzKTsnXG4gICk7XG59XG5cbmZ1bmN0aW9uIGFkZEJydXNoaW5nVnM2NFNoYWRlcih2cykge1xuICByZXR1cm4gZWRpdFNoYWRlcihcbiAgICB2cyxcbiAgICAnYXJjIGJydXNoaW5nIHZzNjQnLFxuICAgICd2ZWMyIG9mZnNldCA9IGdldEV4dHJ1c2lvbk9mZnNldChuZXh0X3Bvc19jbGlwc3BhY2UueHkgLSBjdXJyX3Bvc19jbGlwc3BhY2UueHksIHBvc2l0aW9ucy55KTsnLFxuICAgICd2ZWMyIG9mZnNldCA9IGJydXNoaW5nX2dldEV4dHJ1c2lvbk9mZnNldChuZXh0X3Bvc19jbGlwc3BhY2UueHkgLSBjdXJyX3Bvc19jbGlwc3BhY2UueHksIHBvc2l0aW9ucy55LCBwcm9qZWN0X3VWaWV3cG9ydFNpemUsIGluc3RhbmNlUG9zaXRpb25zLCBpbnN0YW5jZVdpZHRocyk7J1xuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcmNCcnVzaGluZ0xheWVyIGV4dGVuZHMgQXJjTGF5ZXIge1xuICBnZXRTaGFkZXJzKCkge1xuICAgIGNvbnN0IHNoYWRlcnMgPSBzdXBlci5nZXRTaGFkZXJzKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZzOiB0aGlzLmlzNjRiaXRFbmFibGVkKClcbiAgICAgICAgPyBhZGRCcnVzaGluZ1ZzNjRTaGFkZXIoc2hhZGVycy52cylcbiAgICAgICAgOiBhZGRCcnVzaGluZ1ZzU2hhZGVyKHNoYWRlcnMudnMpLFxuICAgICAgZnM6IHNoYWRlcnMuZnMsXG4gICAgICBtb2R1bGVzOiBzaGFkZXJzLm1vZHVsZXMuY29uY2F0KFsnYnJ1c2hpbmcnXSlcbiAgICB9O1xuICB9XG5cbiAgZHJhdyhvcHRzKSB7XG4gICAgY29uc3Qge3VuaWZvcm1zfSA9IG9wdHM7XG5cbiAgICBjb25zdCB7XG4gICAgICBicnVzaFNvdXJjZSxcbiAgICAgIGJydXNoVGFyZ2V0LFxuICAgICAgYnJ1c2hSYWRpdXMsXG4gICAgICBlbmFibGVCcnVzaGluZyxcbiAgICAgIG1vdXNlUG9zaXRpb24sXG4gICAgICBzdHJva2VTY2FsZVxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgc3VwZXIuZHJhdyh7XG4gICAgICAuLi5vcHRzLFxuICAgICAgdW5pZm9ybXM6IHtcbiAgICAgICAgLi4udW5pZm9ybXMsXG4gICAgICAgIGJydXNoaW5nX3VCcnVzaFNvdXJjZTogYnJ1c2hTb3VyY2UgPyAxIDogMCxcbiAgICAgICAgYnJ1c2hpbmdfdUJydXNoVGFyZ2V0OiBicnVzaFRhcmdldCA/IDEgOiAwLFxuICAgICAgICBicnVzaGluZ191QnJ1c2hSYWRpdXM6IGJydXNoUmFkaXVzLFxuICAgICAgICBicnVzaGluZ191RW5hYmxlQnJ1c2hpbmc6IGVuYWJsZUJydXNoaW5nID8gMSA6IDAsXG4gICAgICAgIGJydXNoaW5nX3VTdHJva2VTY2FsZTogc3Ryb2tlU2NhbGUsXG4gICAgICAgIGJydXNoaW5nX3VNb3VzZVBvc2l0aW9uOiBtb3VzZVBvc2l0aW9uXG4gICAgICAgICAgPyBuZXcgRmxvYXQzMkFycmF5KHRoaXMudW5wcm9qZWN0KG1vdXNlUG9zaXRpb24pKVxuICAgICAgICAgIDogZGVmYXVsdFByb3BzLm1vdXNlUG9zaXRpb25cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5BcmNCcnVzaGluZ0xheWVyLmxheWVyTmFtZSA9ICdBcmNCcnVzaGluZ0xheWVyJztcbkFyY0JydXNoaW5nTGF5ZXIuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuIl19