UNPKG

kepler.gl

Version:

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

101 lines (88 loc) 13.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.getSupportedFilterFields = getSupportedFilterFields; exports["default"] = void 0; var _react = _interopRequireWildcard(require("react")); var _styledComponents = require("../../common/styled-components"); var _filterPanelHeader = _interopRequireDefault(require("../../side-panel/filter-panel/filter-panel-header")); var _sourceDataSelector = _interopRequireDefault(require("../../side-panel/common/source-data-selector")); var _fieldSelector = _interopRequireDefault(require("../../common/field-selector")); // Copyright (c) 2021 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. NewFilterPanelFactory.deps = [_filterPanelHeader["default"], _sourceDataSelector["default"], _fieldSelector["default"]]; function getSupportedFilterFields(supportedFilterTypes, fields) { return supportedFilterTypes ? fields.filter(function (field) { return supportedFilterTypes.includes(field.type); }) : fields; } function NewFilterPanelFactory(FilterPanelHeader, SourceDataSelector, FieldSelector) { /** @type {import('./filter-panel-types').FilterPanelComponent} */ var NewFilterPanel = /*#__PURE__*/_react["default"].memo(function (_ref) { var idx = _ref.idx, filter = _ref.filter, datasets = _ref.datasets, allAvailableFields = _ref.allAvailableFields, setFilter = _ref.setFilter, removeFilter = _ref.removeFilter, enlargeFilter = _ref.enlargeFilter; var onFieldSelector = (0, _react.useCallback)(function (field) { return setFilter(idx, 'name', field.name); }, [idx, setFilter]); var onSourceDataSelector = (0, _react.useCallback)(function (value) { return setFilter(idx, 'dataId', value); }, [idx, setFilter]); var dataset = datasets[filter.dataId[0]]; var supportedFields = (0, _react.useMemo)(function () { return getSupportedFilterFields(dataset.supportedFilterTypes, allAvailableFields); }, [dataset.supportedFilterTypes, allAvailableFields]); return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(FilterPanelHeader, { datasets: [dataset], allAvailableFields: supportedFields, idx: idx, filter: filter, removeFilter: removeFilter, enlargeFilter: enlargeFilter, enlarged: filter.enlarged }, /*#__PURE__*/_react["default"].createElement(FieldSelector, { inputTheme: "secondary", fields: supportedFields, value: Array.isArray(filter.name) ? filter.name[0] : filter.name, erasable: false, onSelect: onFieldSelector })), /*#__PURE__*/_react["default"].createElement(_styledComponents.StyledFilterContent, { className: "filter-panel__content" }, Object.keys(datasets).length > 1 && /*#__PURE__*/_react["default"].createElement(SourceDataSelector, { inputTheme: "secondary", datasets: datasets, disabled: filter.freeze, dataId: filter.dataId, onSelect: onSourceDataSelector }))); }); NewFilterPanel.displayName = 'NewFilterPanel'; return NewFilterPanel; } var _default = NewFilterPanelFactory; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpbHRlcnMvZmlsdGVyLXBhbmVscy9uZXctZmlsdGVyLXBhbmVsLmpzIl0sIm5hbWVzIjpbIk5ld0ZpbHRlclBhbmVsRmFjdG9yeSIsImRlcHMiLCJGaWx0ZXJQYW5lbEhlYWRlckZhY3RvcnkiLCJTb3VyY2VEYXRhU2VsZWN0b3JGYWN0b3J5IiwiRmllbGRTZWxlY3RvckZhY3RvcnkiLCJnZXRTdXBwb3J0ZWRGaWx0ZXJGaWVsZHMiLCJzdXBwb3J0ZWRGaWx0ZXJUeXBlcyIsImZpZWxkcyIsImZpbHRlciIsImZpZWxkIiwiaW5jbHVkZXMiLCJ0eXBlIiwiRmlsdGVyUGFuZWxIZWFkZXIiLCJTb3VyY2VEYXRhU2VsZWN0b3IiLCJGaWVsZFNlbGVjdG9yIiwiTmV3RmlsdGVyUGFuZWwiLCJSZWFjdCIsIm1lbW8iLCJpZHgiLCJkYXRhc2V0cyIsImFsbEF2YWlsYWJsZUZpZWxkcyIsInNldEZpbHRlciIsInJlbW92ZUZpbHRlciIsImVubGFyZ2VGaWx0ZXIiLCJvbkZpZWxkU2VsZWN0b3IiLCJuYW1lIiwib25Tb3VyY2VEYXRhU2VsZWN0b3IiLCJ2YWx1ZSIsImRhdGFzZXQiLCJkYXRhSWQiLCJzdXBwb3J0ZWRGaWVsZHMiLCJlbmxhcmdlZCIsIkFycmF5IiwiaXNBcnJheSIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJmcmVlemUiLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQXhCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVFBQSxxQkFBcUIsQ0FBQ0MsSUFBdEIsR0FBNkIsQ0FDM0JDLDZCQUQyQixFQUUzQkMsOEJBRjJCLEVBRzNCQyx5QkFIMkIsQ0FBN0I7O0FBTU8sU0FBU0Msd0JBQVQsQ0FB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Q3FCLE1BSmpCO0FBS0UsTUFBQSxRQUFRLEVBQUVIO0FBTFosTUFGSixDQWxCRixDQURGO0FBZ0NELEdBbERvQixDQUF2Qjs7QUFxREFYLEVBQUFBLGNBQWMsQ0FBQ3VCLFdBQWYsR0FBNkIsZ0JBQTdCO0FBRUEsU0FBT3ZCLGNBQVA7QUFDRDs7ZUFFY2YscUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjEgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlTWVtb30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtTdHlsZWRGaWx0ZXJDb250ZW50fSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgRmlsdGVyUGFuZWxIZWFkZXJGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvc2lkZS1wYW5lbC9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLWhlYWRlcic7XG5pbXBvcnQgU291cmNlRGF0YVNlbGVjdG9yRmFjdG9yeSBmcm9tICdjb21wb25lbnRzL3NpZGUtcGFuZWwvY29tbW9uL3NvdXJjZS1kYXRhLXNlbGVjdG9yJztcbmltcG9ydCBGaWVsZFNlbGVjdG9yRmFjdG9yeSBmcm9tICcuLi8uLi9jb21tb24vZmllbGQtc2VsZWN0b3InO1xuXG5OZXdGaWx0ZXJQYW5lbEZhY3RvcnkuZGVwcyA9IFtcbiAgRmlsdGVyUGFuZWxIZWFkZXJGYWN0b3J5LFxuICBTb3VyY2VEYXRhU2VsZWN0b3JGYWN0b3J5LFxuICBGaWVsZFNlbGVjdG9yRmFjdG9yeVxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN1cHBvcnRlZEZpbHRlckZpZWxkcyhzdXBwb3J0ZWRGaWx0ZXJUeXBlcywgZmllbGRzKSB7XG4gIHJldHVybiBzdXBwb3J0ZWRGaWx0ZXJUeXBlc1xuICAgID8gZmllbGRzLmZpbHRlcihmaWVsZCA9PiBzdXBwb3J0ZWRGaWx0ZXJUeXBlcy5pbmNsdWRlcyhmaWVsZC50eXBlKSlcbiAgICA6IGZpZWxkcztcbn1cblxuZnVuY3Rpb24gTmV3RmlsdGVyUGFuZWxGYWN0b3J5KEZpbHRlclBhbmVsSGVhZGVyLCBTb3VyY2VEYXRhU2VsZWN0b3IsIEZpZWxkU2VsZWN0b3IpIHtcbiAgLyoqIEB0eXBlIHtpbXBvcnQoJy4vZmlsdGVyLXBhbmVsLXR5cGVzJykuRmlsdGVyUGFuZWxDb21wb25lbnR9ICovXG4gIGNvbnN0IE5ld0ZpbHRlclBhbmVsID0gUmVhY3QubWVtbyhcbiAgICAoe2lkeCwgZmlsdGVyLCBkYXRhc2V0cywgYWxsQXZhaWxhYmxlRmllbGRzLCBzZXRGaWx0ZXIsIHJlbW92ZUZpbHRlciwgZW5sYXJnZUZpbHRlcn0pID0+IHtcbiAgICAgIGNvbnN0IG9uRmllbGRTZWxlY3RvciA9IHVzZUNhbGxiYWNrKGZpZWxkID0+IHNldEZpbHRlcihpZHgsICduYW1lJywgZmllbGQubmFtZSksIFtcbiAgICAgICAgaWR4LFxuICAgICAgICBzZXRGaWx0ZXJcbiAgICAgIF0pO1xuXG4gICAgICBjb25zdCBvblNvdXJjZURhdGFTZWxlY3RvciA9IHVzZUNhbGxiYWNrKHZhbHVlID0+IHNldEZpbHRlcihpZHgsICdkYXRhSWQnLCB2YWx1ZSksIFtcbiAgICAgICAgaWR4LFxuICAgICAgICBzZXRGaWx0ZXJcbiAgICAgIF0pO1xuXG4gICAgICBjb25zdCBkYXRhc2V0ID0gZGF0YXNldHNbZmlsdGVyLmRhdGFJZFswXV07XG4gICAgICBjb25zdCBzdXBwb3J0ZWRGaWVsZHMgPSB1c2VNZW1vKFxuICAgICAgICAoKSA9PiBnZXRTdXBwb3J0ZWRGaWx0ZXJGaWVsZHMoZGF0YXNldC5zdXBwb3J0ZWRGaWx0ZXJUeXBlcywgYWxsQXZhaWxhYmxlRmllbGRzKSxcbiAgICAgICAgW2RhdGFzZXQuc3VwcG9ydGVkRmlsdGVyVHlwZXMsIGFsbEF2YWlsYWJsZUZpZWxkc11cbiAgICAgICk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEZpbHRlclBhbmVsSGVhZGVyXG4gICAgICAgICAgICBkYXRhc2V0cz17W2RhdGFzZXRdfVxuICAgICAgICAgICAgYWxsQXZhaWxhYmxlRmllbGRzPXtzdXBwb3J0ZWRGaWVsZHN9XG4gICAgICAgICAgICBpZHg9e2lkeH1cbiAgICAgICAgICAgIGZpbHRlcj17ZmlsdGVyfVxuICAgICAgICAgICAgcmVtb3ZlRmlsdGVyPXtyZW1vdmVGaWx0ZXJ9XG4gICAgICAgICAgICBlbmxhcmdlRmlsdGVyPXtlbmxhcmdlRmlsdGVyfVxuICAgICAgICAgICAgZW5sYXJnZWQ9e2ZpbHRlci5lbmxhcmdlZH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RmllbGRTZWxlY3RvclxuICAgICAgICAgICAgICBpbnB1dFRoZW1lPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgZmllbGRzPXtzdXBwb3J0ZWRGaWVsZHN9XG4gICAgICAgICAgICAgIHZhbHVlPXtBcnJheS5pc0FycmF5KGZpbHRlci5uYW1lKSA/IGZpbHRlci5uYW1lWzBdIDogZmlsdGVyLm5hbWV9XG4gICAgICAgICAgICAgIGVyYXNhYmxlPXtmYWxzZX1cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e29uRmllbGRTZWxlY3Rvcn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9GaWx0ZXJQYW5lbEhlYWRlcj5cbiAgICAgICAgICA8U3R5bGVkRmlsdGVyQ29udGVudCBjbGFzc05hbWU9XCJmaWx0ZXItcGFuZWxfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIHtPYmplY3Qua2V5cyhkYXRhc2V0cykubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICAgIDxTb3VyY2VEYXRhU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBpbnB1dFRoZW1lPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZpbHRlci5mcmVlemV9XG4gICAgICAgICAgICAgICAgZGF0YUlkPXtmaWx0ZXIuZGF0YUlkfVxuICAgICAgICAgICAgICAgIG9uU2VsZWN0PXtvblNvdXJjZURhdGFTZWxlY3Rvcn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9TdHlsZWRGaWx0ZXJDb250ZW50PlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuICApO1xuXG4gIE5ld0ZpbHRlclBhbmVsLmRpc3BsYXlOYW1lID0gJ05ld0ZpbHRlclBhbmVsJztcblxuICByZXR1cm4gTmV3RmlsdGVyUGFuZWw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5ld0ZpbHRlclBhbmVsRmFjdG9yeTtcbiJdfQ==