UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

201 lines (166 loc) 16.5 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _taggedTemplateLiteral2 = require('babel-runtime/helpers/taggedTemplateLiteral'); var _taggedTemplateLiteral3 = _interopRequireDefault(_taggedTemplateLiteral2); var _class, _temp; var _templateObject = (0, _taggedTemplateLiteral3.default)(['\n display: flex;\n justify-content: space-between;\n'], ['\n display: flex;\n justify-content: space-between;\n']), _templateObject2 = (0, _taggedTemplateLiteral3.default)(['\n display: flex;\n margin-bottom: 8px;\n align-items: center;\n'], ['\n display: flex;\n margin-bottom: 8px;\n align-items: center;\n']), _templateObject3 = (0, _taggedTemplateLiteral3.default)(['\n width: 30%;\n'], ['\n width: 30%;\n']), _templateObject4 = (0, _taggedTemplateLiteral3.default)(['\n width: 70%;\n'], ['\n width: 70%;\n']); // Copyright (c) 2018 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _styledComponents = require('styled-components'); var _styledComponents2 = _interopRequireDefault(_styledComponents); var _fieldSelector = require('../../common/field-selector'); var _fieldSelector2 = _interopRequireDefault(_fieldSelector); var _styledComponents3 = require('../../common/styled-components'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var TopRow = _styledComponents2.default.div(_templateObject); var LayerColumnConfig = (_temp = _class = function (_Component) { (0, _inherits3.default)(LayerColumnConfig, _Component); function LayerColumnConfig() { (0, _classCallCheck3.default)(this, LayerColumnConfig); return (0, _possibleConstructorReturn3.default)(this, (LayerColumnConfig.__proto__ || Object.getPrototypeOf(LayerColumnConfig)).apply(this, arguments)); } (0, _createClass3.default)(LayerColumnConfig, [{ key: '_updateColumn', value: function _updateColumn(key, value) { var layer = this.props.layer; var columns = value && value.pair && layer.columnPairs ? layer.assignColumnPairs(key, value.pair) : layer.assignColumn(key, value); this.props.updateLayerConfig({ columns: columns }); } }, { key: 'render', value: function render() { var _this2 = this; var _props = this.props, layer = _props.layer, fields = _props.fields, fieldPairs = _props.fieldPairs; return _react2.default.createElement( 'div', null, _react2.default.createElement( _styledComponents3.SidePanelSection, null, _react2.default.createElement( 'div', { className: 'layer-config__column' }, _react2.default.createElement( TopRow, null, _react2.default.createElement( _styledComponents3.PanelLabel, null, 'Columns' ), _react2.default.createElement( _styledComponents3.PanelLabel, null, '* Required' ) ), Object.keys(layer.config.columns).map(function (key) { return _react2.default.createElement(ColumnSelector, { column: layer.config.columns[key], label: key, key: key, allFields: fields, fieldPairs: layer.columnPairs ? fieldPairs.map(function (fp) { return { name: fp.defaultName, type: 'point', pair: fp.pair }; }) : null, onSelect: function onSelect(val) { return _this2._updateColumn(key, val); } }); }) ) ) ); } }]); return LayerColumnConfig; }(_react.Component), _class.propTypes = { layer: _propTypes2.default.object.isRequired, fields: _propTypes2.default.arrayOf(_propTypes2.default.any).isRequired, updateLayerConfig: _propTypes2.default.func.isRequired, fieldPairs: _propTypes2.default.arrayOf(_propTypes2.default.any) }, _temp); exports.default = LayerColumnConfig; ; var ColumnRow = _styledComponents2.default.div(_templateObject2); var ColumnName = _styledComponents2.default.div(_templateObject3); var ColumnSelect = _styledComponents2.default.div(_templateObject4); var ColumnSelector = function ColumnSelector(_ref) { var column = _ref.column, label = _ref.label, allFields = _ref.allFields, onSelect = _ref.onSelect, fieldPairs = _ref.fieldPairs; return _react2.default.createElement( ColumnRow, { className: 'layer-config__column__selector' }, _react2.default.createElement( ColumnName, { className: 'layer-config__column__name' }, _react2.default.createElement( _styledComponents3.PanelLabel, null, label ), !column.optional ? _react2.default.createElement( _styledComponents3.PanelLabel, null, ' *' ) : null ), _react2.default.createElement( ColumnSelect, { className: 'layer-config__column__select' }, _react2.default.createElement(_fieldSelector2.default, { suggested: fieldPairs, error: !column.optional && !column.value, fields: allFields, value: column.value, erasable: Boolean(column.optional), onSelect: onSelect }) ) ); }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItY29sdW1uLWNvbmZpZy5qcyJdLCJuYW1lcyI6WyJUb3BSb3ciLCJzdHlsZWQiLCJkaXYiLCJMYXllckNvbHVtbkNvbmZpZyIsImtleSIsInZhbHVlIiwibGF5ZXIiLCJwcm9wcyIsImNvbHVtbnMiLCJwYWlyIiwiY29sdW1uUGFpcnMiLCJhc3NpZ25Db2x1bW5QYWlycyIsImFzc2lnbkNvbHVtbiIsInVwZGF0ZUxheWVyQ29uZmlnIiwiZmllbGRzIiwiZmllbGRQYWlycyIsIk9iamVjdCIsImtleXMiLCJjb25maWciLCJtYXAiLCJuYW1lIiwiZnAiLCJkZWZhdWx0TmFtZSIsInR5cGUiLCJfdXBkYXRlQ29sdW1uIiwidmFsIiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsImFycmF5T2YiLCJhbnkiLCJmdW5jIiwiQ29sdW1uUm93IiwiQ29sdW1uTmFtZSIsIkNvbHVtblNlbGVjdCIsIkNvbHVtblNlbGVjdG9yIiwiY29sdW1uIiwibGFiZWwiLCJhbGxGaWVsZHMiLCJvblNlbGVjdCIsIm9wdGlvbmFsIiwiQm9vbGVhbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MkdBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFFQTs7OztBQUtBLElBQU1BLFNBQVNDLDJCQUFPQyxHQUFoQixpQkFBTjs7SUFLcUJDLGlCOzs7Ozs7Ozs7O2tDQVFMQyxHLEVBQUtDLEssRUFBTztBQUFBLFVBQ2pCQyxLQURpQixHQUNSLEtBQUtDLEtBREcsQ0FDakJELEtBRGlCOzs7QUFHeEIsVUFBTUUsVUFD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QUFPakMsS0FGckM7QUFHRSxnQkFBUW1DLFNBSFY7QUFJRSxlQUFPRixPQUFPakMsS0FKaEI7QUFLRSxrQkFBVXNDLFFBQVFMLE9BQU9JLFFBQWYsQ0FMWjtBQU1FLGtCQUFVRDtBQU5aO0FBREY7QUFMRixHQURxQjtBQUFBLENBQXZCIiwiZmlsZSI6ImxheWVyLWNvbHVtbi1jb25maWcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMTggVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBGaWVsZFNlbGVjdG9yIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ZpZWxkLXNlbGVjdG9yJztcblxuaW1wb3J0IHtcbiAgUGFuZWxMYWJlbCxcbiAgU2lkZVBhbmVsU2VjdGlvblxufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbmNvbnN0IFRvcFJvdyA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbmA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExheWVyQ29sdW1uQ29uZmlnIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBsYXllcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGZpZWxkczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICB1cGRhdGVMYXllckNvbmZpZzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBmaWVsZFBhaXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KVxuICB9O1xuXG4gIF91cGRhdGVDb2x1bW4oa2V5LCB2YWx1ZSkge1xuICAgIGNvbnN0IHtsYXllcn0gPSB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgY29sdW1ucyA9XG4gICAgICB2YWx1ZSAmJiB2YWx1ZS5wYWlyICYmIGxheWVyLmNvbHVtblBhaXJzXG4gICAgICAgID8gbGF5ZXIuYXNzaWduQ29sdW1uUGFpcnMoa2V5LCB2YWx1ZS5wYWlyKVxuICAgICAgICA6IGxheWVyLmFzc2lnbkNvbHVtbihrZXksIHZhbHVlKTtcblxuICAgIHRoaXMucHJvcHMudXBkYXRlTGF5ZXJDb25maWcoe2NvbHVtbnN9KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7bGF5ZXIsIGZpZWxkcywgZmllbGRQYWlyc30gPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZ19fY29sdW1uXCI+XG4gICAgICAgICAgPFRvcFJvdz5cbiAgICAgICAgICAgIDxQYW5lbExhYmVsPkNvbHVtbnM8L1BhbmVsTGFiZWw+XG4gICAgICAgICAgICA8UGFuZWxMYWJlbD4qIFJlcXVpcmVkPC9QYW5lbExhYmVsPlxuICAgICAgICAgIDwvVG9wUm93PlxuICAgICAgICAgIHtPYmplY3Qua2V5cyhsYXllci5jb25maWcuY29sdW1ucykubWFwKGtleSA9PiAoXG4gICAgICAgICAgICA8Q29sdW1uU2VsZWN0b3JcbiAgICAgICAgICAgICAgY29sdW1uPXtsYXllci5jb25maWcuY29sdW1uc1trZXldfVxuICAgICAgICAgICAgICBsYWJlbD17a2V5fVxuICAgICAgICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgICAgICAgYWxsRmllbGRzPXtmaWVsZHN9XG4gICAgICAgICAgICAgIGZpZWxkUGFpcnM9e1xuICAgICAgICAgICAgICAgIGxheWVyLmNvbHVtblBhaXJzXG4gICAgICAgICAgICAgICAgICA/IGZpZWxkUGFpcnMubWFwKGZwID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgbmFtZTogZnAuZGVmYXVsdE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3BvaW50JyxcbiAgICAgICAgICAgICAgICAgICAgICBwYWlyOiBmcC5wYWlyXG4gICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e3ZhbCA9PiB0aGlzLl91cGRhdGVDb2x1bW4oa2V5LCB2YWwpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufTtcblxuY29uc3QgQ29sdW1uUm93ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgQ29sdW1uTmFtZSA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAzMCU7XG5gO1xuY29uc3QgQ29sdW1uU2VsZWN0ID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDcwJTtcbmA7XG5cbmNvbnN0IENvbHVtblNlbGVjdG9yID0gKHtjb2x1bW4sIGxhYmVsLCBhbGxGaWVsZHMsIG9uU2VsZWN0LCBmaWVsZFBhaXJzfSkgPT4gKFxuICA8Q29sdW1uUm93IGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZ19fY29sdW1uX19zZWxlY3RvclwiPlxuICAgIDxDb2x1bW5OYW1lIGNsYXNzTmFtZT1cImxheWVyLWNvbmZpZ19fY29sdW1uX19uYW1lXCI+XG4gICAgICA8UGFuZWxMYWJlbD57bGFiZWx9PC9QYW5lbExhYmVsPlxuICAgICAgeyFjb2x1bW4ub3B0aW9uYWwgPyA8UGFuZWxMYWJlbD57YCAgKmB9PC9QYW5lbExhYmVsPiA6IG51bGx9XG4gICAgPC9Db2x1bW5OYW1lPlxuICAgIDxDb2x1bW5TZWxlY3QgY2xhc3NOYW1lPVwibGF5ZXItY29uZmlnX19jb2x1bW5fX3NlbGVjdFwiPlxuICAgICAgPEZpZWxkU2VsZWN0b3JcbiAgICAgICAgc3VnZ2VzdGVkPXtmaWVsZFBhaXJzfVxuICAgICAgICBlcnJvcj17IWNvbHVtbi5vcHRpb25hbCAmJiAhY29sdW1uLnZhbHVlfVxuICAgICAgICBmaWVsZHM9e2FsbEZpZWxkc31cbiAgICAgICAgdmFsdWU9e2NvbHVtbi52YWx1ZX1cbiAgICAgICAgZXJhc2FibGU9e0Jvb2xlYW4oY29sdW1uLm9wdGlvbmFsKX1cbiAgICAgICAgb25TZWxlY3Q9e29uU2VsZWN0fVxuICAgICAgLz5cbiAgICA8L0NvbHVtblNlbGVjdD5cbiAgPC9Db2x1bW5Sb3c+XG4pO1xuIl19