UNPKG

kepler.gl.geoiq

Version:

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

727 lines (647 loc) 120 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.BoundaryTypeSelector = exports.AggregationTypeSelector = exports.AggrColorScaleSelector = exports.ChannelByValueSelector = exports.ColorRangeConfig = exports.ArcLayerColorSelector = exports.LayerColorSelector = exports.HowToButton = exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); 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 _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _styledComponents2 = require("../../common/styled-components"); var _itemSelector = _interopRequireDefault(require("../../common/item-selector/item-selector")); var _visConfigByFieldSelector = _interopRequireDefault(require("./vis-config-by-field-selector")); var _layerColumnConfig = _interopRequireDefault(require("./layer-column-config")); var _layerTypeSelector = _interopRequireDefault(require("./layer-type-selector")); var _dimensionScaleSelector = _interopRequireDefault(require("./dimension-scale-selector")); var _colorSelector = _interopRequireDefault(require("./color-selector")); var _sourceDataSelector = _interopRequireDefault(require("../source-data-selector")); var _visConfigSwitch = _interopRequireDefault(require("./vis-config-switch")); var _visConfigSlider = _interopRequireDefault(require("./vis-config-slider")); var _layerConfigGroup = _interopRequireWildcard(require("./layer-config-group")); var _textLabelPanel = _interopRequireDefault(require("./text-label-panel")); var _layerFactory = require("../../../layers/layer-factory"); var _utils = require("../../../utils/utils"); var _defaultSettings = require("../../../constants/default-settings"); function _templateObject3() { var data = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n right: 12px;\n top: -4px;\n"]); _templateObject3 = function _templateObject3() { return data; }; return data; } 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; } function _templateObject2() { var data = (0, _taggedTemplateLiteral2["default"])(["\n margin-top: 12px;\n"]); _templateObject2 = function _templateObject2() { return data; }; return data; } function _templateObject() { var data = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n margin-top: 12px;\n"]); _templateObject = function _templateObject() { return data; }; return data; } var StyledLayerConfigurator = _styledComponents["default"].div.attrs({ className: 'layer-panel__config' })(_templateObject()); var StyledLayerVisualConfigurator = _styledComponents["default"].div.attrs({ className: 'layer-panel__config__visualC-config' })(_templateObject2()); var LayerConfigurator = /*#__PURE__*/ function (_Component) { (0, _inherits2["default"])(LayerConfigurator, _Component); function LayerConfigurator() { (0, _classCallCheck2["default"])(this, LayerConfigurator); return (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(LayerConfigurator).apply(this, arguments)); } (0, _createClass2["default"])(LayerConfigurator, [{ key: "_renderPointLayerConfig", value: function _renderPointLayerConfig(props) { return this._renderScatterplotLayerConfig(props); } }, { key: "_renderIconLayerConfig", value: function _renderIconLayerConfig(props) { return this._renderScatterplotLayerConfig(props); } }, { key: "_renderScatterplotLayerConfig", value: function _renderScatterplotLayerConfig(_ref) { var layer = _ref.layer, visConfiguratorProps = _ref.visConfiguratorProps, layerChannelConfigProps = _ref.layerChannelConfigProps, layerConfiguratorProps = _ref.layerConfiguratorProps; return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], { label: 'color', collapsible: true }, layer.config.colorField ? _react["default"].createElement(ColorRangeConfig, visConfiguratorProps) : _react["default"].createElement(LayerColorSelector, layerConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.color }, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], { label: 'radius', collapsible: true }, !layer.config.sizeField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.radius, visConfiguratorProps, { label: false, disabled: Boolean(layer.config.sizeField) })) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.radiusRange, visConfiguratorProps, { label: false, disabled: !layer.config.sizeField || layer.config.visConfig.fixedRadius })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps)), layer.config.sizeField ? _react["default"].createElement(_visConfigSwitch["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.fixedRadius, visConfiguratorProps, { disabled: !layer.config.sizeField })) : null)), layer.type === _defaultSettings.LAYER_TYPES.point ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.outline, visConfiguratorProps), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.thickness, visConfiguratorProps, { label: false, disabled: !layer.config.visConfig.outline }))) : null, _react["default"].createElement(_textLabelPanel["default"], { visConfiguratorProps: visConfiguratorProps, layerConfiguratorProps: layerConfiguratorProps, textLabel: layer.config.textLabel })); } }, { key: "_renderClusterLayerConfig", value: function _renderClusterLayerConfig(_ref2) { var layer = _ref2.layer, visConfiguratorProps = _ref2.visConfiguratorProps, layerConfiguratorProps = _ref2.layerConfiguratorProps, layerChannelConfigProps = _ref2.layerChannelConfigProps; return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], { label: 'color', collapsible: true }, _react["default"].createElement(ColorRangeConfig, visConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(AggrColorScaleSelector, layerConfiguratorProps), _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.color }, layerChannelConfigProps)), layer.visConfigSettings.colorAggregation.condition(layer.config) ? _react["default"].createElement(AggregationTypeSelector, (0, _extends2["default"])({}, layer.visConfigSettings.colorAggregation, layerChannelConfigProps, { channel: layer.visualChannels.color })) : null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], { label: 'radius', collapsible: true }, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.clusterRadius, visConfiguratorProps)), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.radiusRange, visConfiguratorProps))))); } }, { key: "_renderHeatmapLayerConfig", value: function _renderHeatmapLayerConfig(_ref3) { var layer = _ref3.layer, visConfiguratorProps = _ref3.visConfiguratorProps, layerConfiguratorProps = _ref3.layerConfiguratorProps, layerChannelConfigProps = _ref3.layerChannelConfigProps; return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], { label: 'color', collapsible: true }, _react["default"].createElement(ColorRangeConfig, visConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], { label: 'radius' }, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.radius, visConfiguratorProps, { label: false }))), _react["default"].createElement(_layerConfigGroup["default"], { label: 'weight' }, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.weight }, layerChannelConfigProps)))); } }, { key: "_renderGridLayerConfig", value: function _renderGridLayerConfig(props) { return this._renderAggregationLayerConfig(props); } }, { key: "_renderHexagonLayerConfig", value: function _renderHexagonLayerConfig(props) { return this._renderAggregationLayerConfig(props); } }, { key: "_renderAggregationLayerConfig", value: function _renderAggregationLayerConfig(_ref4) { var layer = _ref4.layer, visConfiguratorProps = _ref4.visConfiguratorProps, layerConfiguratorProps = _ref4.layerConfiguratorProps, layerChannelConfigProps = _ref4.layerChannelConfigProps; var config = layer.config; var enable3d = config.visConfig.enable3d; var elevationByDescription = 'When off, height is based on count of points'; var colorByDescription = 'When off, color is based on count of points'; return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], { label: 'color', collapsible: true }, _react["default"].createElement(ColorRangeConfig, visConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(AggrColorScaleSelector, layerConfiguratorProps), _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.color }, layerChannelConfigProps)), layer.visConfigSettings.colorAggregation.condition(layer.config) ? _react["default"].createElement(AggregationTypeSelector, (0, _extends2["default"])({}, layer.visConfigSettings.colorAggregation, layerChannelConfigProps, { descreiption: colorByDescription, channel: layer.visualChannels.color })) : null, layer.visConfigSettings.percentile && layer.visConfigSettings.percentile.condition(layer.config) ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.percentile, visConfiguratorProps)) : null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], { label: 'radius', collapsible: true }, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.worldUnitSize, visConfiguratorProps)), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.coverage, visConfiguratorProps)))), layer.visConfigSettings.enable3d ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, layer.visConfigSettings.enable3d, visConfiguratorProps, { collapsible: true }), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.elevationScale, visConfiguratorProps)), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({}, layerChannelConfigProps, { channel: layer.visualChannels.size, description: elevationByDescription, disabled: !enable3d })), layer.visConfigSettings.sizeAggregation.condition(layer.config) ? _react["default"].createElement(AggregationTypeSelector, (0, _extends2["default"])({}, layer.visConfigSettings.sizeAggregation, layerChannelConfigProps, { channel: layer.visualChannels.size })) : null, layer.visConfigSettings.elevationPercentile.condition(layer.config) ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.elevationPercentile, visConfiguratorProps)) : null)) : null); } // TODO: Shan move these into layer class }, { key: "_renderHexagonIdLayerConfig", value: function _renderHexagonIdLayerConfig(_ref5) { var layer = _ref5.layer, visConfiguratorProps = _ref5.visConfiguratorProps, layerConfiguratorProps = _ref5.layerConfiguratorProps, layerChannelConfigProps = _ref5.layerChannelConfigProps; return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], { label: 'color', collapsible: true }, layer.config.colorField ? _react["default"].createElement(ColorRangeConfig, visConfiguratorProps) : _react["default"].createElement(LayerColorSelector, layerConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.color }, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], { label: 'coverage', collapsible: true }, !layer.config.coverageField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.coverage, visConfiguratorProps, { label: false })) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.coverageRange, visConfiguratorProps, { label: false })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.coverage }, layerChannelConfigProps)))), _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.enable3d, visConfiguratorProps, { collapsible: true }), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.elevationRange, visConfiguratorProps, { label: false })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps))))); } }, { key: "_renderArcLayerConfig", value: function _renderArcLayerConfig(args) { return this._renderLineLayerConfig(args); } }, { key: "_renderLineLayerConfig", value: function _renderLineLayerConfig(_ref6) { var layer = _ref6.layer, visConfiguratorProps = _ref6.visConfiguratorProps, layerConfiguratorProps = _ref6.layerConfiguratorProps, layerChannelConfigProps = _ref6.layerChannelConfigProps; return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], { label: 'color', collapsible: true }, layer.config.colorField ? _react["default"].createElement(ColorRangeConfig, visConfiguratorProps) : _react["default"].createElement(ArcLayerColorSelector, { layer: layer, onChangeConfig: layerConfiguratorProps.onChange, onChangeVisConfig: visConfiguratorProps.onChange }), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.color }, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], { label: 'stroke', collapsible: true }, layer.config.sizeField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.strokeWidthRange, visConfiguratorProps, { disabled: !layer.config.sizeField, label: false })) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.thickness, visConfiguratorProps, { label: false })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps))))); } }, { key: "_renderBoundaryLayerConfig", value: function _renderBoundaryLayerConfig(props) { return this._renderGeoBoundaryLayerConfig(props); } }, { key: "_renderGeojsonLayerConfig", value: function _renderGeojsonLayerConfig(props) { return this._renderGeoLayerConfig(props); } }, { key: "_renderPincodeLayerConfig", value: function _renderPincodeLayerConfig(props) { return this._renderGeoBoundaryLayerConfig(props); } }, { key: "_renderGeoLayerConfig", value: function _renderGeoLayerConfig(_ref7) { var layer = _ref7.layer, visConfiguratorProps = _ref7.visConfiguratorProps, layerConfiguratorProps = _ref7.layerConfiguratorProps, layerChannelConfigProps = _ref7.layerChannelConfigProps; var _layer$meta$featureTy = layer.meta.featureTypes, featureTypes = _layer$meta$featureTy === void 0 ? {} : _layer$meta$featureTy, visConfig = layer.config.visConfig; return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], { label: 'color', collapsible: true }, layer.config.colorField ? _react["default"].createElement(ColorRangeConfig, visConfiguratorProps) : _react["default"].createElement(LayerColorSelector, layerConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.color }, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.opacity, visConfiguratorProps)))), featureTypes.polygon ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({ label: 'fill' }, visConfiguratorProps, _layerFactory.LAYER_VIS_CONFIGS.filled)) : null, featureTypes.line || featureTypes.polygon ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({ label: "stroke" }, visConfiguratorProps, featureTypes.polygon ? _layerFactory.LAYER_VIS_CONFIGS.stroked : {}, { collapsible: true }), layer.config.sizeField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.strokeWidthRange, visConfiguratorProps, { label: false })) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.thickness, visConfiguratorProps, { label: false })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps)))) : null, featureTypes.polygon && visConfig.filled ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, visConfiguratorProps, _layerFactory.LAYER_VIS_CONFIGS.enable3d, { collapsible: true }), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.elevationScale, visConfiguratorProps, { label: false })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.height }, layerChannelConfigProps)), _react["default"].createElement(_visConfigSwitch["default"], (0, _extends2["default"])({}, visConfiguratorProps, _layerFactory.LAYER_VIS_CONFIGS.wireframe)))) : null, featureTypes.point ? _react["default"].createElement(_layerConfigGroup["default"], { label: 'radius', collapsible: true }, !layer.config.radiusField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.radius, visConfiguratorProps, { label: false, disabled: Boolean(layer.config.radiusField) })) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.radiusRange, visConfiguratorProps, { label: false, disabled: !layer.config.radiusField })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.radius }, layerChannelConfigProps)))) : null); } }, { key: "_renderGeoBoundaryLayerConfig", value: function _renderGeoBoundaryLayerConfig(_ref8) { var layer = _ref8.layer, visConfiguratorProps = _ref8.visConfiguratorProps, layerConfiguratorProps = _ref8.layerConfiguratorProps, layerChannelConfigProps = _ref8.layerChannelConfigProps; var _layer$meta$featureTy2 = layer.meta.featureTypes, featureTypes = _layer$meta$featureTy2 === void 0 ? {} : _layer$meta$featureTy2, visConfig = layer.config.visConfig; var enable3d = visConfig.enable3d; var elevationByDescription = 'When off, height is based on count of points'; var colorByDescription = 'When off, color is based on count of points'; return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], { label: layer.type === 'boundary' ? 'boundary' : '' }, _react["default"].createElement(BoundaryTypeSelector, (0, _extends2["default"])({}, layer.visConfigSettings.colorAggregation, layerConfiguratorProps, { descreiption: colorByDescription, channel: layer.visualChannels.color }))), _react["default"].createElement(_layerConfigGroup["default"], { label: 'color', collapsible: true }, _react["default"].createElement(ColorRangeConfig, visConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(AggrColorScaleSelector, layerConfiguratorProps), _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.color }, layerChannelConfigProps)), layer.visConfigSettings.colorAggregation.condition(layer.config) ? _react["default"].createElement(AggregationTypeSelector, (0, _extends2["default"])({}, layer.visConfigSettings.colorAggregation, layerChannelConfigProps, { descreiption: colorByDescription, channel: layer.visualChannels.color })) : null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.opacity, visConfiguratorProps)))), featureTypes.polygon ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({ label: 'fill' }, visConfiguratorProps, _layerFactory.LAYER_VIS_CONFIGS.filled)) : null, featureTypes.line || featureTypes.polygon ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({ label: "stroke" }, visConfiguratorProps, featureTypes.polygon ? _layerFactory.LAYER_VIS_CONFIGS.stroked : {}, { collapsible: true }), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.thickness, visConfiguratorProps, { label: false }))) : null, featureTypes.polygon && visConfig.filled ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, visConfiguratorProps, _layerFactory.LAYER_VIS_CONFIGS.enable3d, { collapsible: true }), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.elevationScale, visConfiguratorProps, { label: false })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({}, layerChannelConfigProps, { channel: layer.visualChannels.height, description: elevationByDescription, disabled: !enable3d })), layer.visConfigSettings.heightAggregation.condition(layer.config) ? _react["default"].createElement(AggregationTypeSelector, (0, _extends2["default"])({}, layer.visConfigSettings.sizeAggregation, layerChannelConfigProps, { channel: layer.visualChannels.height })) : null)) : null, featureTypes.point ? _react["default"].createElement(_layerConfigGroup["default"], { label: 'radius', collapsible: true }, !layer.config.radiusField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.radius, visConfiguratorProps, { label: false, disabled: Boolean(layer.config.radiusField) })) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_VIS_CONFIGS.radiusRange, visConfiguratorProps, { label: false, disabled: !layer.config.radiusField })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.radius }, layerChannelConfigProps)))) : null); } }, { key: "render", value: function render() { var _this = this; var _this$props = this.props, layer = _this$props.layer, datasets = _this$props.datasets, updateLayerConfig = _this$props.updateLayerConfig, layerTypeOptions = _this$props.layerTypeOptions, updateLayerType = _this$props.updateLayerType; var _ref9 = layer.config.dataId ? datasets[layer.config.dataId] : {}, _ref9$fields = _ref9.fields, fields = _ref9$fields === void 0 ? [] : _ref9$fields, fieldPairs = _ref9.fieldPairs; var config = layer.config; var commonConfigProp = { layer: layer, fields: fields }; var visConfiguratorProps = _objectSpread({}, commonConfigProp, { onChange: this.props.updateLayerVisConfig }); var layerConfiguratorProps = _objectSpread({}, commonConfigProp, { onChange: updateLayerConfig }); var layerChannelConfigProps = _objectSpread({}, commonConfigProp, { onChange: this.props.updateLayerVisualChannelConfig }); var renderTemplate = layer.type && "_render".concat((0, _utils.capitalizeFirstLetter)(layer.type), "LayerConfig"); return _react["default"].createElement(StyledLayerConfigurator, null, layer.layerInfoModal ? _react["default"].createElement(HowToButton, { onClick: function onClick() { return _this.props.openModal(layer.layerInfoModal); } }) : null, _react["default"].createElement(_layerConfigGroup["default"], { label: 'basic', collapsible: true, expanded: !layer.hasAllColumns() }, _react["default"].createElement(_layerTypeSelector["default"], { layer: layer, layerTypeOptions: layerTypeOptions, onSelect: updateLayerType }), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, Object.keys(datasets).length > 1 && _react["default"].createElement(_sourceDataSelector["default"], { datasets: datasets, id: layer.id, disabled: layer.tyep && config.columns, dataId: config.dataId, onSelect: function onSelect(value) { return updateLayerConfig({ dataId: value }); } }), _react["default"].createElement(_layerColumnConfig["default"], { layer: layer, fields: fields, fieldPairs: fieldPairs, updateLayerConfig: updateLayerConfig, updateLayerType: this.props.updateLayerType }))), this[renderTemplate] && this[renderTemplate]({ layer: layer, visConfiguratorProps: visConfiguratorProps, layerChannelConfigProps: layerChannelConfigProps, layerConfiguratorProps: layerConfiguratorProps })); } }]); return LayerConfigurator; }(_react.Component); /* * Componentize config component into pure functional components */ exports["default"] = LayerConfigurator; (0, _defineProperty2["default"])(LayerConfigurator, "propTypes", { layer: _propTypes["default"].object.isRequired, datasets: _propTypes["default"].object.isRequired, layerTypeOptions: _propTypes["default"].arrayOf(_propTypes["default"].any).isRequired, openModal: _propTypes["default"].func.isRequired, updateLayerConfig: _propTypes["default"].func.isRequired, updateLayerType: _propTypes["default"].func.isRequired, updateLayerVisConfig: _propTypes["default"].func.isRequired, updateLayerVisualChannelConfig: _propTypes["default"].func.isRequired, updateLayerData: _propTypes["default"].func.isRequired }); var StyledHowToButton = _styledComponents["default"].div(_templateObject3()); var HowToButton = function HowToButton(_ref10) { var onClick = _ref10.onClick; return _react["default"].createElement(StyledHowToButton, null, _react["default"].createElement(_styledComponents2.Button, { link: true, small: true, onClick: onClick }, "How to")); }; exports.HowToButton = HowToButton; var LayerColorSelector = function LayerColorSelector(_ref11) { var layer = _ref11.layer, onChange = _ref11.onChange, label = _ref11.label; return _react["default"].createElement(_styledComponents2.SidePanelSection, { disabled: layer.config.colorField }, _react["default"].createElement(_colorSelector["default"], { colorSets: [{ selectedColor: layer.config.color, setColor: function setColor(rgbValue) { return onChange({ color: rgbValue }); } }] })); }; exports.LayerColorSelector = LayerColorSelector; var ArcLayerColorSelector = function ArcLayerColorSelector(_ref12) { var layer = _ref12.layer, onChangeConfig = _ref12.onChangeConfig, onChangeVisConfig = _ref12.onChangeVisConfig; return _react["default"].createElement(_styledComponents2.SidePanelSection, null, _react["default"].createElement(_colorSelector["default"], { colorSets: [{ selectedColor: layer.config.color, setColor: function setColor(rgbValue) { return onChangeConfig({ color: rgbValue }); }, label: 'Source' }, { selectedColor: layer.config.visConfig.targetColor || layer.config.color, setColor: function setColor(rgbValue) { return onChangeVisConfig({ targetColor: rgbValue }); }, label: 'Target' }] })); }; exports.ArcLayerColorSelector = ArcLayerColorSelector; var ColorRangeConfig = function ColorRangeConfig(_ref13) { var layer = _ref13.layer, onChange = _ref13.onChange; return _react["default"].createElement(_styledComponents2.SidePanelSection, null, _react["default"].createElement(_colorSelector["default"], { colorSets: [{ selectedColor: layer.config.visConfig.colorRange, isRange: true, setColor: function setColor(colorRange) { return onChange({ colorRange: colorRange }); } }] })); }; exports.ColorRangeConfig = ColorRangeConfig; var ChannelByValueSelector = function ChannelByValueSelector(_ref14) { var layer = _ref14.layer, channel = _ref14.channel, onChange = _ref14.onChange, fields = _ref14.fields, description = _ref14.description; var channelScaleType = channel.channelScaleType, domain = channel.domain, field = channel.field, key = channel.key, property = channel.property, range = channel.range, scale = channel.scale, defaultMeasure = channel.defaultMeasure, supportedFieldTypes = channel.supportedFieldTypes; var channelSupportedFieldTypes = supportedFieldTypes || _defaultSettings.CHANNEL_SCALE_SUPPORTED_FIELDS[channelScaleType]; var supportedFields = fields.filter(function (_ref15) { var type = _ref15.type; return channelSupportedFieldTypes.includes(type); }); var scaleOptions = layer.getScaleOptions(channel.key); var showScale = !layer.isAggregated && layer.config[scale] && scaleOptions.length > 1; var defaultDescription = "Calculate ".concat(property, " based on selected field"); return _react["default"].createElement(_visConfigByFieldSelector["default"], { channel: channel.key, description: description || defaultDescription, domain: layer.config[domain], fields: supportedFields, id: layer.id, key: "".concat(key, "-channel-selector"), property: property, placeholder: defaultMeasure || 'Select a field', range: layer.config.visConfig[range], scaleOptions: scaleOptions, scaleType: scale ? layer.config[scale] : null, selectedField: layer.config[field], showScale: showScale, updateField: function updateField(val) { return onChange((0, _defineProperty2["default"])({}, field, val), key); }, updateScale: function updateScale(val) { return onChange((0, _defineProperty2["default"])({}, scale, val), key); } }); }; exports.ChannelByValueSelector = ChannelByValueSelector; var AggrColorScaleSelector = function AggrColorScaleSelector(_ref16) { var layer = _ref16.layer, onChange = _ref16.onChange; var scaleOptions = layer.getScaleOptions('color'); return Array.isArray(scaleOptions) && scaleOptions.length > 1 ? _react["default"].createElement(_dimensionScaleSelector["default"], { label: "Color Scale", options: scaleOptions, scaleType: layer.config.colorScale, onSelect: function onSelect(val) { return onChange({ colorScale: val }, 'color'); } }) : null; }; exports.AggrColorScaleSelector = AggrColorScaleSelector; var AggregationTypeSelector = function AggregationTypeSelector(_ref17) { var layer = _ref17.layer, channel = _ref17.channel, _onChange3 = _ref17.onChange; var field = channel.field, aggregation = channel.aggregation, key = channel.key; var selectedField = layer.config[field]; var visConfig = layer.config.visConfig; // aggregation should only be selectable when field is selected var aggregationOptions = layer.getAggregationOptions(key); return _react["default"].createElement(_styledComponents2.SidePanelSection, null, _react["default"].createElement(_styledComponents2.PanelLabel, null, "Aggregate ".concat(selectedField.name, " by")), _react["default"].createElement(_itemSelector["default"], { selectedItems: visConfig[aggregation], options: aggregationOptions, multiSelect: false, searchable: false, onChange: function onChange(value) { return _onChange3({ visConfig: _objectSpread({}, layer.config.visConfig, (0, _defineProperty2["default"])({}, aggregation, value)) }, channel.key); } })); }; exports.AggregationTypeSelector = AggregationTypeSelector; var BoundaryTypeSelector = function BoundaryTypeSelector(_ref18) { var layer = _ref18.layer, channel = _ref18.channel, _onChange4 = _ref18.onChange; var field = channel.field, aggregation = channel.aggregation, key = channel.key; // const selectedField = layer.config[field]; var boundaryAggregation = layer.config.boundaryAggregation; if (layer.type === 'pincode' && !boundaryAggregation) { console.log('is this getting updated everytime '); _onChange4({ boundaryAggregation: 'Pincode' }); return null; } else if (layer.type === 'pincode') { return null; } // const aggregationOptions = layer.getAggregationOptions(key); var boundaryAggregationOptions = ['Locality', 'Pincode', 'Taluk', 'District', 'State']; return _react["default"].createElement(_styledComponents2.SidePanelSection, null, _react["default"].createElement(_itemSelector["default"] // selectedItems={visConfig[boundaryAggregation]} , { placeholder: boundaryAggregation ? boundaryAggregation : 'Select boundary type', options: boundaryAggregationOptions, multiSelect: false, searchable: false, onChange: function onChange(value) { return _onChange4({ boundaryAggregation: value, apiCallRequest: true, apiCallLoader: true }, channel.key); } })); }; /* eslint-enable max-params */ exports.BoundaryTypeSelector = BoundaryTypeSelector; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItY29uZmlndXJhdG9yLmpzIl0sIm5hbWVzIjpbIlN0eWxlZExheWVyQ29uZmlndXJhdG9yIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvciIsIkxheWVyQ29uZmlndXJhdG9yIiwicHJvcHMiLCJfcmVuZGVyU2NhdHRlcnBsb3RMYXllckNvbmZpZyIsImxheWVyIiwidmlzQ29uZmlndXJhdG9yUHJvcHMiLCJsYXllckNoYW5uZWxDb25maWdQcm9wcyIsImxheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJjb25maWciLCJjb2xvckZpZWxkIiwidmlzdWFsQ2hhbm5lbHMiLCJjb2xvciIsIkxBWUVSX1ZJU19DT05GSUdTIiwib3BhY2l0eSIsInNpemVGaWVsZCIsInJhZGl1cyIsIkJvb2xlYW4iLCJyYWRpdXNSYW5nZSIsInZpc0NvbmZpZyIsImZpeGVkUmFkaXVzIiwic2l6ZSIsInR5cGUiLCJMQVlFUl9UWVBFUyIsInBvaW50Iiwib3V0bGluZSIsInRoaWNrbmVzcyIsInRleHRMYWJlbCIsInZpc0NvbmZpZ1NldHRpbmdzIiwiY29sb3JBZ2dyZWdhdGlvbiIsImNvbmRpdGlvbiIsImNsdXN0ZXJSYWRpdXMiLCJ3ZWlnaHQiLCJfcmVuZGVyQWdncmVnYXRpb25MYXllckNvbmZpZyIsImVuYWJsZTNkIiwiZWxldmF0aW9uQnlEZXNjcmlwdGlvbiIsImNvbG9yQnlEZXNjcmlwdGlvbiIsInBlcmNlbnRpbGUiLCJ3b3JsZFVuaXRTaXplIiwiY292ZXJhZ2UiLCJlbGV2YXRpb25TY2FsZSIsInNpemVBZ2dyZWdhdGlvbiIsImVsZXZhdGlvblBlcmNlbnRpbGUiLCJjb3ZlcmFnZUZpZWxkIiwiY292ZXJhZ2VSYW5nZSIsImVsZXZhdGlvblJhbmdlIiwiYXJncyIsIl9yZW5kZXJMaW5lTGF5ZXJDb25maWciLCJvbkNoYW5nZSIsInN0cm9rZVdpZHRoUmFuZ2UiLCJfcmVuZGVyR2VvQm91bmRhcnlMYXllckNvbmZpZyIsIl9yZW5kZXJHZW9MYXllckNvbmZpZyIsIm1ldGEiLCJmZWF0dXJlVHlwZXMiLCJwb2x5Z29uIiwiZmlsbGVkIiwibGluZSIsInN0cm9rZWQiLCJoZWlnaHQiLCJ3aXJlZnJhbWUiLCJyYWRpdXNGaWVsZCIsImhlaWdodEFnZ3JlZ2F0aW9uIiwiZGF0YXNldHMiLCJ1cGRhdGVMYXllckNvbmZpZyIsImxheWVyVHlwZU9wdGlvbnMiLCJ1cGRhdGVMYXllclR5cGUiLCJkYXRhSWQiLCJmaWVsZHMiLCJmaWVsZFBhaXJzIiwiY29tbW9uQ29uZmlnUHJvcCIsInVwZGF0ZUxheWVyVmlzQ29uZmlnIiwidXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnIiwicmVuZGVyVGVtcGxhdGUiLCJsYXllckluZm9Nb2RhbCIsIm9wZW5Nb2RhbCIsImhhc0FsbENvbHVtbnMiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiaWQiLCJ0eWVwIiwiY29sdW1ucyIsInZhbHVlIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsImFycmF5T2YiLCJhbnkiLCJmdW5jIiwidXBkYXRlTGF5ZXJEYXRhIiwiU3R5bGVkSG93VG9CdXR0b24iLCJIb3dUb0J1dHRvbiIsIm9uQ2xpY2siLCJMYXllckNvbG9yU2VsZWN0b3IiLCJsYWJlbCIsInNlbGVjdGVkQ29sb3IiLCJzZXRDb2xvciIsInJnYlZhbHVlIiwiQXJjTGF5ZXJDb2xvclNlbGVjdG9yIiwib25DaGFuZ2VDb25maWciLCJvbkNoYW5nZVZpc0NvbmZpZyIsInRhcmdldENvbG9yIiwiQ29sb3JSYW5nZUNvbmZpZyIsImNvbG9yUmFuZ2UiLCJpc1JhbmdlIiwiQ2hhbm5lbEJ5VmFsdWVTZWxlY3RvciIsImNoYW5uZWwiLCJkZXNjcmlwdGlvbiIsImNoYW5uZWxTY2FsZVR5cGUiLCJkb21haW4iLCJmaWVsZCIsImtleSIsInByb3BlcnR5IiwicmFuZ2UiLCJzY2FsZSIsImRlZmF1bHRNZWFzdXJlIiwic3VwcG9ydGVkRmllbGRUeXBlcyIsImNoYW5uZWxTdXBwb3J0ZWRGaWVsZFR5cGVzIiwiQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTIiwic3VwcG9ydGVkRmllbGRzIiwiZmlsdGVyIiwiaW5jbHVkZXMiLCJzY2FsZU9wdGlvbnMiLCJnZXRTY2FsZU9wdGlvbnMiLCJzaG93U2NhbGUiLCJpc0FnZ3JlZ2F0ZWQiLCJkZWZhdWx0RGVzY3JpcHRpb24iLCJ2YWwiLCJBZ2dyQ29sb3JTY2FsZVNlbGVjdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiY29sb3JTY2FsZSIsIkFnZ3JlZ2F0aW9uVHlwZVNlbGVjdG9yIiwiYWdncmVnYXRpb24iLCJzZWxlY3RlZEZpZWxkIiwiYWdncmVnYXRpb25PcHRpb25zIiwiZ2V0QWdncmVnYXRpb25PcHRpb25zIiwibmFtZSIsIkJvdW5kYXJ5VHlwZVNlbGVjdG9yIiwiYm91bmRhcnlBZ2dyZWdhdGlvbiIsImNvbnNvbGUiLCJsb2ciLCJib3VuZGFyeUFnZ3JlZ2F0aW9uT3B0aW9ucyIsImFwaUNhbGxSZXF1ZXN0IiwiYXBpQ2FsbExvYWRlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUVBOztBQUtBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOztBQUVBOztBQUVBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLQSxJQUFNQSx1QkFBdUIsR0FBR0MsNkJBQU9DLEdBQVAsQ0FBV0MsS0FBWCxDQUFpQjtBQUMvQ0MsRUFBQUEsU0FBUyxFQUFFO0FBRG9DLENBQWpCLENBQUgsbUJBQTdCOztBQU9BLElBQU1DLDZCQUE2QixHQUFHSiw2QkFBT0MsR0FBUCxDQUFXQyxLQUFYLENBQWlCO0FBQ3JEQyxFQUFBQSxTQUFTLEVBQUU7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