UNPKG

kepler.gl

Version:

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

797 lines (721 loc) 141 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = LayerConfiguratorFactory; exports.AggregationTypeSelector = exports.AggrScaleSelector = exports.ChannelByValueSelector = exports.LayerColorRangeSelector = exports.ArcLayerColorSelector = exports.LayerColorSelector = exports.HowToButton = exports.getLayerChannelConfigProps = exports.getVisConfiguratorProps = exports.getLayerConfiguratorProps = exports.getLayerFields = 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 _reactIntl = require("react-intl"); 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("../common/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 _utils = require("../../../utils/utils"); var _defaultSettings = require("../../../constants/default-settings"); 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 _templateObject3() { var data = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n right: 12px;\n top: -4px;\n"]); _templateObject3 = function _templateObject3() { return data; }; return data; } 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 getLayerFields = function getLayerFields(datasets, layer) { return datasets[layer.config.dataId] ? datasets[layer.config.dataId].fields : []; }; exports.getLayerFields = getLayerFields; var getLayerConfiguratorProps = function getLayerConfiguratorProps(props) { return { layer: props.layer, fields: getLayerFields(props.datasets, props.layer), onChange: props.updateLayerConfig, setColorUI: props.updateLayerColorUI }; }; exports.getLayerConfiguratorProps = getLayerConfiguratorProps; var getVisConfiguratorProps = function getVisConfiguratorProps(props) { return { layer: props.layer, fields: getLayerFields(props.datasets, props.layer), onChange: props.updateLayerVisConfig, setColorUI: props.updateLayerColorUI }; }; exports.getVisConfiguratorProps = getVisConfiguratorProps; var getLayerChannelConfigProps = function getLayerChannelConfigProps(props) { return { layer: props.layer, fields: getLayerFields(props.datasets, props.layer), onChange: props.updateLayerVisualChannelConfig }; }; exports.getLayerChannelConfigProps = getLayerChannelConfigProps; LayerConfiguratorFactory.deps = [_sourceDataSelector["default"]]; function LayerConfiguratorFactory(SourceDataSelector) { 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"], (0, _extends2["default"])({}, layer.visConfigSettings.filled, visConfiguratorProps, { collapsible: true }), layer.config.colorField ? _react["default"].createElement(LayerColorRangeSelector, 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"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), layer.type === _defaultSettings.LAYER_TYPES.point ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, layer.visConfigSettings.outline, visConfiguratorProps, { collapsible: true }), layer.config.strokeColorField ? _react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, { property: "strokeColorRange" })) : _react["default"].createElement(LayerColorSelector, (0, _extends2["default"])({}, visConfiguratorProps, { selectedColor: layer.config.visConfig.strokeColor, property: "strokeColor" })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.strokeColor }, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, { label: "Stroke Width (Pixels)", disabled: !layer.config.visConfig.outline })))) : null, _react["default"].createElement(_layerConfigGroup["default"], { label: 'layer.radius', collapsible: true }, !layer.config.sizeField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.radius, visConfiguratorProps, { label: false, disabled: Boolean(layer.config.sizeField) })) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.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"])({}, layer.visConfigSettings.fixedRadius, visConfiguratorProps)) : null)), _react["default"].createElement(_textLabelPanel["default"], { fields: visConfiguratorProps.fields, updateLayerTextLabel: this.props.updateLayerTextLabel, textLabel: layer.config.textLabel, colorPalette: visConfiguratorProps.colorPalette, setColorPaletteUI: visConfiguratorProps.setColorPaletteUI })); } }, { 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: 'layer.color', collapsible: true }, _react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(AggrScaleSelector, (0, _extends2["default"])({}, layerConfiguratorProps, { channel: layer.visualChannels.color })), _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: 'layer.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: 'layer.color', collapsible: true }, _react["default"].createElement(LayerColorRangeSelector, 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: 'layer.radius' }, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.radius, visConfiguratorProps, { label: false }))), _react["default"].createElement(_layerConfigGroup["default"], { label: 'layer.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 = 'layer.elevationByDescription'; var colorByDescription = 'layer.colorByDescription'; return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], { label: 'layer.color', collapsible: true }, _react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(AggrScaleSelector, (0, _extends2["default"])({}, layerConfiguratorProps, { channel: layer.visualChannels.color })), _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, { description: 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: 'layer.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(AggrScaleSelector, (0, _extends2["default"])({}, layerConfiguratorProps, { channel: layer.visualChannels.size })), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps)), _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: 'layer.color', collapsible: true }, layer.config.colorField ? _react["default"].createElement(LayerColorRangeSelector, 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"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], { label: 'layer.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"])({}, layer.visConfigSettings.enable3d, visConfiguratorProps, { collapsible: true }), _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps)), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.elevationScale, visConfiguratorProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, { label: "layerVisConfigs.heightRange" }))))); } }, { 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: 'layer.color', collapsible: true }, layer.config.colorField ? _react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps) : _react["default"].createElement(ArcLayerColorSelector, { layer: layer, setColorUI: layerConfiguratorProps.setColorUI, 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"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], { label: 'layer.stroke', collapsible: true }, layer.config.sizeField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, { disabled: !layer.config.sizeField, label: false })) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, { label: false })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps))))); } }, { key: "_renderTripLayerConfig", value: function _renderTripLayerConfig(_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; return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], { label: 'layer.color', collapsible: true }, layer.config.colorField ? _react["default"].createElement(LayerColorRangeSelector, 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"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, visConfiguratorProps, { label: "layer.strokeWidth", collapsible: true }), layer.config.sizeField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, { label: false })) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, { label: false })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps)))), _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, visConfiguratorProps, featureTypes.polygon ? layer.visConfigSettings.stroked : {}, { label: "layer.trailLength", description: "layer.trailLengthDescription" }), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.trailLength, visConfiguratorProps, { label: false })))); } }, { key: "_renderGeojsonLayerConfig", value: function _renderGeojsonLayerConfig(_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; return _react["default"].createElement(StyledLayerVisualConfigurator, null, featureTypes.polygon || featureTypes.point ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, layer.visConfigSettings.filled, visConfiguratorProps, { label: "layer.fillColor", collapsible: true }), layer.config.colorField ? _react["default"].createElement(LayerColorRangeSelector, 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"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))) : null, _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, layer.visConfigSettings.stroked, visConfiguratorProps, { label: "layer.strokeColor", collapsible: true }), layer.config.strokeColorField ? _react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, { property: "strokeColorRange" })) : _react["default"].createElement(LayerColorSelector, (0, _extends2["default"])({}, visConfiguratorProps, { selectedColor: layer.config.visConfig.strokeColor, property: "strokeColor" })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.strokeColor }, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.strokeOpacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, visConfiguratorProps, featureTypes.polygon ? layer.visConfigSettings.stroked : {}, { label: "layer.strokeWidth", collapsible: true }), layer.config.sizeField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, { label: false })) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, { label: false })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps)))), featureTypes.polygon ? _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.enable3d, { disabled: !visConfig.filled, collapsible: true }), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.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, layer.visConfigSettings.wireframe)))) : null, featureTypes.point ? _react["default"].createElement(_layerConfigGroup["default"], { label: 'layer.radius', collapsible: true }, !layer.config.radiusField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.radius, visConfiguratorProps, { label: false, disabled: Boolean(layer.config.radiusField) })) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.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: "_render3DLayerConfig", value: function _render3DLayerConfig(_ref9) { var layer = _ref9.layer, visConfiguratorProps = _ref9.visConfiguratorProps; return _react["default"].createElement(_react.Fragment, null, _react["default"].createElement(_layerConfigGroup["default"], { label: 'layer.3DModel', collapsible: true }, _react["default"].createElement(_styledComponents2.Input, { type: "file", accept: ".glb,.gltf", onChange: function onChange(e) { if (e.target.files && e.target.files[0]) { var url = URL.createObjectURL(e.target.files[0]); visConfiguratorProps.onChange({ scenegraph: url }); } } })), _react["default"].createElement(_layerConfigGroup["default"], { label: 'layer.3DModelOptions', collapsible: true }, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.sizeScale, visConfiguratorProps, { disabled: false })), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.angleX, visConfiguratorProps, { disabled: false })), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.angleY, visConfiguratorProps, { disabled: false })), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.angleZ, visConfiguratorProps, { disabled: false })))); } }, { key: "_renderS2LayerConfig", value: function _renderS2LayerConfig(_ref10) { var layer = _ref10.layer, visConfiguratorProps = _ref10.visConfiguratorProps, layerConfiguratorProps = _ref10.layerConfiguratorProps, layerChannelConfigProps = _ref10.layerChannelConfigProps; var visConfig = layer.config.visConfig; return _react["default"].createElement(StyledLayerVisualConfigurator, null, _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, layer.visConfigSettings.filled, visConfiguratorProps, { label: "layer.fillColor", collapsible: true }), layer.config.colorField ? _react["default"].createElement(LayerColorRangeSelector, 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"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, layer.visConfigSettings.stroked, visConfiguratorProps, { label: "layer.strokeColor", collapsible: true }), layer.config.strokeColorField ? _react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, { property: "strokeColorRange" })) : _react["default"].createElement(LayerColorSelector, (0, _extends2["default"])({}, visConfiguratorProps, { selectedColor: layer.config.visConfig.strokeColor, property: "strokeColor" })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.strokeColor }, layerChannelConfigProps)))), _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, visConfiguratorProps, { label: "layer.strokeWidth", collapsible: true }), layer.config.sizeField ? _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, { label: false })) : _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, { label: false })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps)))), _react["default"].createElement(_layerConfigGroup["default"], (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.enable3d, { disabled: !visConfig.filled, collapsible: true }), _react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.height }, layerChannelConfigProps)), _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.elevationScale, visConfiguratorProps, { label: "layerVisConfigs.elevationScale" })), _react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, _react["default"].createElement(_visConfigSlider["default"], (0, _extends2["default"])({}, layer.visConfigSettings.heightRange, visConfiguratorProps, { label: "layerVisConfigs.heightRange" })), _react["default"].createElement(_visConfigSwitch["default"], (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.wireframe))))); } }, { 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 _ref11 = layer.config.dataId ? datasets[layer.config.dataId] : {}, _ref11$fields = _ref11.fields, fields = _ref11$fields === void 0 ? [] : _ref11$fields, fieldPairs = _ref11.fieldPairs; var config = layer.config; var visConfiguratorProps = getVisConfiguratorProps(this.props); var layerConfiguratorProps = getLayerConfiguratorProps(this.props); var layerChannelConfigProps = getLayerChannelConfigProps(this.props); 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: 'layer.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, { datasets: datasets, id: layer.id, disabled: layer.type && config.columns, dataId: config.dataId, onSelect: function onSelect(value) { return updateLayerConfig({ dataId: value }); } }), _react["default"].createElement(_layerColumnConfig["default"], { columnPairs: layer.columnPairs, columns: layer.config.columns, assignColumnPairs: layer.assignColumnPairs.bind(layer), assignColumn: layer.assignColumn.bind(layer), columnLabels: layer.columnLabels, 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); (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, updateLayerColorUI: _propTypes["default"].func.isRequired }); return LayerConfigurator; } /* * Componentize config component into pure functional components */ var StyledHowToButton = _styledComponents["default"].div(_templateObject3()); var HowToButton = function HowToButton(_ref12) { var onClick = _ref12.onClick; return _react["default"].createElement(StyledHowToButton, null, _react["default"].createElement(_styledComponents2.Button, { link: true, small: true, onClick: onClick }, _react["default"].createElement(_reactIntl.FormattedMessage, { id: 'layerConfiguration.howTo' }))); }; exports.HowToButton = HowToButton; var LayerColorSelector = function LayerColorSelector(_ref13) { var layer = _ref13.layer, onChange = _ref13.onChange, label = _ref13.label, selectedColor = _ref13.selectedColor, _ref13$property = _ref13.property, property = _ref13$property === void 0 ? 'color' : _ref13$property, _setColorUI = _ref13.setColorUI; return _react["default"].createElement(_styledComponents2.SidePanelSection, null, _react["default"].createElement(_colorSelector["default"], { colorSets: [{ selectedColor: selectedColor || layer.config.color, setColor: function setColor(rgbValue) { return onChange((0, _defineProperty2["default"])({}, property, rgbValue)); } }], colorUI: layer.config.colorUI[property], setColorUI: function setColorUI(newConfig) { return _setColorUI(property, newConfig); } })); }; exports.LayerColorSelector = LayerColorSelector; var ArcLayerColorSelector = function ArcLayerColorSelector(_ref14) { var layer = _ref14.layer, onChangeConfig = _ref14.onChangeConfig, onChangeVisConfig = _ref14.onChangeVisConfig, _ref14$property = _ref14.property, property = _ref14$property === void 0 ? 'color' : _ref14$property, _setColorUI2 = _ref14.setColorUI; 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' }], colorUI: layer.config.colorUI[property], setColorUI: function setColorUI(newConfig) { return _setColorUI2(property, newConfig); } })); }; exports.ArcLayerColorSelector = ArcLayerColorSelector; var LayerColorRangeSelector = function LayerColorRangeSelector(_ref15) { var layer = _ref15.layer, onChange = _ref15.onChange, _ref15$property = _ref15.property, property = _ref15$property === void 0 ? 'colorRange' : _ref15$property, _setColorUI3 = _ref15.setColorUI; return _react["default"].createElement(_styledComponents2.SidePanelSection, null, _react["default"].createElement(_colorSelector["default"], { colorSets: [{ selectedColor: layer.config.visConfig[property], isRange: true, setColor: function setColor(colorRange) { return onChange((0, _defineProperty2["default"])({}, property, colorRange)); } }], colorUI: layer.config.colorUI[property], setColorUI: function setColorUI(newConfig) { return _setColorUI3(property, newConfig); } })); }; exports.LayerColorRangeSelector = LayerColorRangeSelector; var ChannelByValueSelector = function ChannelByValueSelector(_ref16) { var layer = _ref16.layer, channel = _ref16.channel, onChange = _ref16.onChange, fields = _ref16.fields, description = _ref16.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 (_ref17) { var type = _ref17.type; return channelSupportedFieldTypes.includes(type); }); var scaleOptions = layer.getScaleOptions(channel.key); var showScale = !layer.isAggregated && layer.config[scale] && scaleOptions.length > 1; var defaultDescription = 'layerConfiguration.defaultDescription'; 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 || 'placeholder.selectField', 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 AggrScaleSelector = function AggrScaleSelector(_ref18) { var channel = _ref18.channel, layer = _ref18.layer, onChange = _ref18.onChange; var scale = channel.scale, key = channel.key; var scaleOptions = layer.getScaleOptions(key); return Array.isArray(scaleOptions) && scaleOptions.length > 1 ? _react["default"].createElement(_dimensionScaleSelector["default"], { label: "".concat(key, " Scale"), options: scaleOptions, scaleType: layer.config[scale], onSelect: function onSelect(val) { return onChange((0, _defineProperty2["default"])({}, scale, val), key); } }) : null; }; exports.AggrScaleSelector = AggrScaleSelector; var AggregationTypeSelector = function AggregationTypeSelector(_ref19) { var layer = _ref19.layer, channel = _ref19.channel, _onChange6 = _ref19.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, _react["default"].createElement(_reactIntl.FormattedMessage, { id: 'layer.aggregateBy', values: { field: selectedField.name } })), _react["default"].createElement(_itemSelector["default"], { selectedItems: visConfig[aggregation], options: aggregationOptions, multiSelect: false, searchable: false, onChange: function onChange(value) { return _onChange6({ visConfig: _objectSpread({}, layer.config.visConfig, (0, _defineProperty2["default"])({}, aggregation, value)) }, channel.key); } })); }; /* eslint-enable max-params */ exports.AggregationTypeSelector = AggregationTypeSelector; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvbGF5ZXItY29uZmlndXJhdG9yLmpzIl0sIm5hbWVzIjpbIlN0eWxlZExheWVyQ29uZmlndXJhdG9yIiwic3R5bGVkIiwiZGl2IiwiYXR0cnMiLCJjbGFzc05hbWUiLCJTdHlsZWRMYXllclZpc3VhbENvbmZpZ3VyYXRvciIsImdldExheWVyRmllbGRzIiwiZGF0YXNldHMiLCJsYXllciIsImNvbmZpZyIsImRhdGFJZCIsImZpZWxkcyIsImdldExheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJwcm9wcyIsIm9uQ2hhbmdlIiwidXBkYXRlTGF5ZXJDb25maWciLCJzZXRDb2xvclVJIiwidXBkYXRlTGF5ZXJDb2xvclVJIiwiZ2V0VmlzQ29uZmlndXJhdG9yUHJvcHMiLCJ1cGRhdGVMYXllclZpc0NvbmZpZyIsImdldExheWVyQ2hhbm5lbENvbmZpZ1Byb3BzIiwidXBkYXRlTGF5ZXJWaXN1YWxDaGFubmVsQ29uZmlnIiwiTGF5ZXJDb25maWd1cmF0b3JGYWN0b3J5IiwiZGVwcyIsIlNvdXJjZURhdGFTZWxlY3RvckZhY3RvcnkiLCJTb3VyY2VEYXRhU2VsZWN0b3IiLCJMYXllckNvbmZpZ3VyYXRvciIsIl9yZW5kZXJTY2F0dGVycGxvdExheWVyQ29uZmlnIiwidmlzQ29uZmlndXJhdG9yUHJvcHMiLCJsYXllckNoYW5uZWxDb25maWdQcm9wcyIsImxheWVyQ29uZmlndXJhdG9yUHJvcHMiLCJ2aXNDb25maWdTZXR0aW5ncyIsImZpbGxlZCIsImNvbG9yRmllbGQiLCJ2aXN1YWxDaGFubmVscyIsImNvbG9yIiwib3BhY2l0eSIsInR5cGUiLCJMQVlFUl9UWVBFUyIsInBvaW50Iiwib3V0bGluZSIsInN0cm9rZUNvbG9yRmllbGQiLCJ2aXNDb25maWciLCJzdHJva2VDb2xvciIsInRoaWNrbmVzcyIsInNpemVGaWVsZCIsInJhZGl1cyIsIkJvb2xlYW4iLCJyYWRpdXNSYW5nZSIsImZpeGVkUmFkaXVzIiwic2l6ZSIsInVwZGF0ZUxheWVyVGV4dExhYmVsIiwidGV4dExhYmVsIiwiY29sb3JQYWxldHRlIiwic2V0Q29sb3JQYWxldHRlVUkiLCJjb2xvckFnZ3JlZ2F0aW9uIiwiY29uZGl0aW9uIiwiY2x1c3RlclJhZGl1cyIsIndlaWdodCIsIl9yZW5kZXJBZ2dyZWdhdGlvbkxheWVyQ29uZmlnIiwiZW5hYmxlM2QiLCJlbGV2YXRpb25CeURlc2NyaXB0aW9uIiwiY29sb3JCeURlc2NyaXB0aW9uIiwicGVyY2VudGlsZSIsIndvc