UNPKG

kepler.gl

Version:

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

86 lines (84 loc) 16 kB
"use strict"; 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 _react = _interopRequireWildcard(require("react")); var _commonUtils = require("@kepler.gl/common-utils"); var _columnSelector = _interopRequireDefault(require("./column-selector")); var _styledComponents = require("../../common/styled-components"); 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 /** * only provide suggested field pairs if there is a match, * otherwise the user can select a suggested field pair that will create invalid columns and a hard crash */ function getValidFieldPairsSuggestionsForColumn(enhancedFieldPairs, columnPairs, columnKey) { if (enhancedFieldPairs && columnPairs !== null && columnPairs !== void 0 && columnPairs[columnKey]) { var columnPair = columnPairs[columnKey]; var matchingFieldPairs = enhancedFieldPairs.filter(function (_ref) { var pair = _ref.pair; return (0, _commonUtils.toArray)(columnPair.fieldPairKey).some(function (fieldPairKey) { return Object.prototype.hasOwnProperty.call(pair, fieldPairKey); }); }); return matchingFieldPairs.length > 0 ? matchingFieldPairs : null; } return null; } LayerColumnConfigFactory.deps = [_columnSelector["default"]]; function LayerColumnConfigFactory(ColumnSelector) { var LayerColumnConfig = function LayerColumnConfig(_ref2) { var columnPairs = _ref2.columnPairs, fieldPairs = _ref2.fieldPairs, columns = _ref2.columns, columnLabels = _ref2.columnLabels, fields = _ref2.fields, updateLayerConfig = _ref2.updateLayerConfig, assignColumn = _ref2.assignColumn, assignColumnPairs = _ref2.assignColumnPairs, isActive = _ref2.isActive; var enhancedFieldPairs = (0, _react.useMemo)(function () { return columnPairs && fieldPairs ? fieldPairs.map(function (fp) { return { name: fp.defaultName, type: 'point', pair: fp.pair }; }) : null; }, [columnPairs, fieldPairs]); var onUpdateColumn = (0, _react.useCallback)(function (key, value) { var assignedColumns = value && value.pair && columnPairs ? assignColumnPairs(key, value.pair) : assignColumn(key, value); updateLayerConfig({ columns: assignedColumns }); }, [updateLayerConfig, columnPairs, assignColumnPairs, assignColumn]); if (!Object.keys(columns).length) { // don't render if columns is empty return /*#__PURE__*/_react["default"].createElement("div", null); } return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_styledComponents.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement("div", { className: "layer-config__column" }, Object.keys(columns).map(function (key) { return /*#__PURE__*/_react["default"].createElement(ColumnSelector, { column: columns[key], columns: columns, label: columnLabels && columnLabels[key] || key, key: key, allFields: fields, fieldPairs: getValidFieldPairsSuggestionsForColumn(enhancedFieldPairs, columnPairs, key), onSelect: function onSelect(val) { return onUpdateColumn(key, val); }, isActive: isActive }); })))); }; return LayerColumnConfig; } var _default = exports["default"] = LayerColumnConfigFactory; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfY29tbW9uVXRpbHMiLCJfY29sdW1uU2VsZWN0b3IiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3N0eWxlZENvbXBvbmVudHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJnZXRWYWxpZEZpZWxkUGFpcnNTdWdnZXN0aW9uc0ZvckNvbHVtbiIsImVuaGFuY2VkRmllbGRQYWlycyIsImNvbHVtblBhaXJzIiwiY29sdW1uS2V5IiwiY29sdW1uUGFpciIsIm1hdGNoaW5nRmllbGRQYWlycyIsImZpbHRlciIsIl9yZWYiLCJwYWlyIiwidG9BcnJheSIsImZpZWxkUGFpcktleSIsInNvbWUiLCJwcm90b3R5cGUiLCJsZW5ndGgiLCJMYXllckNvbHVtbkNvbmZpZ0ZhY3RvcnkiLCJkZXBzIiwiQ29sdW1uU2VsZWN0b3JGYWN0b3J5IiwiQ29sdW1uU2VsZWN0b3IiLCJMYXllckNvbHVtbkNvbmZpZyIsIl9yZWYyIiwiZmllbGRQYWlycyIsImNvbHVtbnMiLCJjb2x1bW5MYWJlbHMiLCJmaWVsZHMiLCJ1cGRhdGVMYXllckNvbmZpZyIsImFzc2lnbkNvbHVtbiIsImFzc2lnbkNvbHVtblBhaXJzIiwiaXNBY3RpdmUiLCJ1c2VNZW1vIiwibWFwIiwiZnAiLCJuYW1lIiwiZGVmYXVsdE5hbWUiLCJ0eXBlIiwib25VcGRhdGVDb2x1bW4iLCJ1c2VDYWxsYmFjayIsImtleSIsInZhbHVlIiwiYXNzaWduZWRDb2x1bW5zIiwia2V5cyIsImNyZWF0ZUVsZW1lbnQiLCJTaWRlUGFuZWxTZWN0aW9uIiwiY2xhc3NOYW1lIiwiY29sdW1uIiwibGFiZWwiLCJhbGxGaWVsZHMiLCJvblNlbGVjdCIsInZhbCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaWRlLXBhbmVsL2xheWVyLXBhbmVsL2xheWVyLWNvbHVtbi1jb25maWcudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7TGF5ZXJCYXNlQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL2xheWVycyc7XG5pbXBvcnQge1xuICBGaWVsZFBhaXIsXG4gIENvbHVtblBhaXJzLFxuICBMYXllckNvbHVtbnMsXG4gIENvbHVtbkxhYmVscyxcbiAgRW5oYW5jZWRGaWVsZFBhaXJcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge3RvQXJyYXl9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcblxuaW1wb3J0IENvbHVtblNlbGVjdG9yRmFjdG9yeSBmcm9tICcuL2NvbHVtbi1zZWxlY3Rvcic7XG5pbXBvcnQge01pbmltYWxGaWVsZH0gZnJvbSAnLi4vLi4vY29tbW9uL2ZpZWxkLXNlbGVjdG9yJztcbmltcG9ydCB7U2lkZVBhbmVsU2VjdGlvbn0gZnJvbSAnLi4vLi4vY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcblxuZXhwb3J0IHR5cGUgTGF5ZXJDb2x1bW5Db25maWdQcm9wczxGaWVsZE9wdGlvbiBleHRlbmRzIE1pbmltYWxGaWVsZD4gPSB7XG4gIGNvbHVtbnM6IExheWVyQ29sdW1ucztcbiAgZmllbGRzOiBGaWVsZE9wdGlvbltdO1xuICBhc3NpZ25Db2x1bW5QYWlyczogKGtleTogc3RyaW5nLCBwYWlyOiBGaWVsZFBhaXIpID0+IExheWVyQ29sdW1ucztcbiAgYXNzaWduQ29sdW1uOiAoa2V5OiBzdHJpbmcsIGZpZWxkOiBGaWVsZE9wdGlvbikgPT4gTGF5ZXJDb2x1bW5zO1xuICB1cGRhdGVMYXllckNvbmZpZzogKG5ld0NvbmZpZzogUGFydGlhbDxMYXllckJhc2VDb25maWc+KSA9PiB2b2lkO1xuICB1cGRhdGVMYXllclR5cGU/OiAobmV3VHlwZTogc3RyaW5nKSA9PiB2b2lkO1xuICBjb2x1bW5QYWlycz86IENvbHVtblBhaXJzIHwgbnVsbDtcbiAgZmllbGRQYWlycz86IEZpZWxkUGFpcltdO1xuICBjb2x1bW5MYWJlbHM6IENvbHVtbkxhYmVscyB8IG51bGw7XG4gIGlzQWN0aXZlOiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBvbmx5IHByb3ZpZGUgc3VnZ2VzdGVkIGZpZWxkIHBhaXJzIGlmIHRoZXJlIGlzIGEgbWF0Y2gsXG4gKiBvdGhlcndpc2UgdGhlIHVzZXIgY2FuIHNlbGVjdCBhIHN1Z2dlc3RlZCBmaWVsZCBwYWlyIHRoYXQgd2lsbCBjcmVhdGUgaW52YWxpZCBjb2x1bW5zIGFuZCBhIGhhcmQgY3Jhc2hcbiAqL1xuZnVuY3Rpb24gZ2V0VmFsaWRGaWVsZFBhaXJzU3VnZ2VzdGlvbnNGb3JDb2x1bW4oXG4gIGVuaGFuY2VkRmllbGRQYWlyczogRW5oYW5jZWRGaWVsZFBhaXJbXSB8IG51bGwsXG4gIGNvbHVtblBhaXJzOiBDb2x1bW5QYWlycyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGNvbHVtbktleTogc3RyaW5nXG4pOiBFbmhhbmNlZEZpZWxkUGFpcltdIHwgbnVsbCB7XG4gIGlmIChlbmhhbmNlZEZpZWxkUGFpcnMgJiYgY29sdW1uUGFpcnM/Lltjb2x1bW5LZXldKSB7XG4gICAgY29uc3QgY29sdW1uUGFpciA9IGNvbHVtblBhaXJzW2NvbHVtbktleV07XG4gICAgY29uc3QgbWF0Y2hpbmdGaWVsZFBhaXJzID0gZW5oYW5jZWRGaWVsZFBhaXJzLmZpbHRlcigoe3BhaXJ9KSA9PiB7XG4gICAgICByZXR1cm4gdG9BcnJheShjb2x1bW5QYWlyLmZpZWxkUGFpcktleSkuc29tZShmaWVsZFBhaXJLZXkgPT5cbiAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhaXIsIGZpZWxkUGFpcktleSlcbiAgICAgICk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG1hdGNoaW5nRmllbGRQYWlycy5sZW5ndGggPiAwID8gbWF0Y2hpbmdGaWVsZFBhaXJzIDogbnVsbDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuTGF5ZXJDb2x1bW5Db25maWdGYWN0b3J5LmRlcHMgPSBbQ29sdW1uU2VsZWN0b3JGYWN0b3J5XTtcblxuZnVuY3Rpb24gTGF5ZXJDb2x1bW5Db25maWdGYWN0b3J5KENvbHVtblNlbGVjdG9yOiBSZXR1cm5UeXBlPHR5cGVvZiBDb2x1bW5TZWxlY3RvckZhY3Rvcnk+KSB7XG4gIGNvbnN0IExheWVyQ29sdW1uQ29uZmlnOiBSZWFjdC5GQzxMYXllckNvbHVtbkNvbmZpZ1Byb3BzPE1pbmltYWxGaWVsZCAmIHtmaWVsZElkeDogbnVtYmVyfT4+ID0gKHtcbiAgICBjb2x1bW5QYWlycyxcbiAgICBmaWVsZFBhaXJzLFxuICAgIGNvbHVtbnMsXG4gICAgY29sdW1uTGFiZWxzLFxuICAgIGZpZWxkcyxcbiAgICB1cGRhdGVMYXllckNvbmZpZyxcbiAgICBhc3NpZ25Db2x1bW4sXG4gICAgYXNzaWduQ29sdW1uUGFpcnMsXG4gICAgaXNBY3RpdmVcbiAgfSkgPT4ge1xuICAgIGNvbnN0IGVuaGFuY2VkRmllbGRQYWlyczogRW5oYW5jZWRGaWVsZFBhaXJbXSB8IG51bGwgPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgY29sdW1uUGFpcnMgJiYgZmllbGRQYWlyc1xuICAgICAgICAgID8gZmllbGRQYWlycy5tYXAoZnAgPT4gKHtcbiAgICAgICAgICAgICAgbmFtZTogZnAuZGVmYXVsdE5hbWUsXG4gICAgICAgICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgICAgICAgIHBhaXI6IGZwLnBhaXJcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgIFtjb2x1bW5QYWlycywgZmllbGRQYWlyc11cbiAgICApO1xuXG4gICAgY29uc3Qgb25VcGRhdGVDb2x1bW4gPSB1c2VDYWxsYmFjayhcbiAgICAgIChrZXksIHZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVkQ29sdW1ucyA9XG4gICAgICAgICAgdmFsdWUgJiYgdmFsdWUucGFpciAmJiBjb2x1bW5QYWlyc1xuICAgICAgICAgICAgPyBhc3NpZ25Db2x1bW5QYWlycyhrZXksIHZhbHVlLnBhaXIpXG4gICAgICAgICAgICA6IGFzc2lnbkNvbHVtbihrZXksIHZhbHVlKTtcblxuICAgICAgICB1cGRhdGVMYXllckNvbmZpZyh7Y29sdW1uczogYXNzaWduZWRDb2x1bW5zfSk7XG4gICAgICB9LFxuICAgICAgW3VwZGF0ZUxheWVyQ29uZmlnLCBjb2x1bW5QYWlycywgYXNzaWduQ29sdW1uUGFpcnMsIGFzc2lnbkNvbHVtbl1cbiAgICApO1xuXG4gICAgaWYgKCFPYmplY3Qua2V5cyhjb2x1bW5zKS5sZW5ndGgpIHtcbiAgICAgIC8vIGRvbid0IHJlbmRlciBpZiBjb2x1bW5zIGlzIGVtcHR5XG4gICAgICByZXR1cm4gPGRpdiAvPjtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdj5cbiAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYXllci1jb25maWdfX2NvbHVtblwiPlxuICAgICAgICAgICAge09iamVjdC5rZXlzKGNvbHVtbnMpLm1hcChrZXkgPT4gKFxuICAgICAgICAgICAgICA8Q29sdW1uU2VsZWN0b3JcbiAgICAgICAgICAgICAgICBjb2x1bW49e2NvbHVtbnNba2V5XX1cbiAgICAgICAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgICAgIGxhYmVsPXsoY29sdW1uTGFiZWxzICYmIGNvbHVtbkxhYmVsc1trZXldKSB8fCBrZXl9XG4gICAgICAgICAgICAgICAga2V5PXtrZXl9XG4gICAgICAgICAgICAgICAgYWxsRmllbGRzPXtmaWVsZHN9XG4gICAgICAgICAgICAgICAgZmllbGRQYWlycz17Z2V0VmFsaWRGaWVsZFBhaXJzU3VnZ2VzdGlvbnNGb3JDb2x1bW4oXG4gICAgICAgICAgICAgICAgICBlbmhhbmNlZEZpZWxkUGFpcnMsXG4gICAgICAgICAgICAgICAgICBjb2x1bW5QYWlycyxcbiAgICAgICAgICAgICAgICAgIGtleVxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgb25TZWxlY3Q9e3ZhbCA9PiBvblVwZGF0ZUNvbHVtbihrZXksIHZhbCl9XG4gICAgICAgICAgICAgICAgaXNBY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIExheWVyQ29sdW1uQ29uZmlnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBMYXllckNvbHVtbkNvbmZpZ0ZhY3Rvcnk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBVUEsSUFBQUMsWUFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsZUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBRUEsSUFBQUksaUJBQUEsR0FBQUosT0FBQTtBQUFnRSxTQUFBSyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQVAsd0JBQUFP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