UNPKG

kepler.gl

Version:

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

731 lines (663 loc) 151 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = LayerConfiguratorFactory; exports.ChannelByValueSelectorFactory = ChannelByValueSelectorFactory; exports.AggregationTypeSelector = exports.AggrScaleSelector = exports.LayerColorRangeSelector = exports.ArcLayerColorSelector = exports.LayerColorSelector = exports.HowToButton = exports.getLayerChannelConfigProps = exports.getVisConfiguratorProps = exports.getLayerConfiguratorProps = exports.getLayerDataset = 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 _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); 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 _localization = require("../../../localization"); 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"); var _types = require("../../../layers/types"); var _templateObject, _templateObject2, _templateObject3; 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 _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var StyledLayerConfigurator = _styledComponents["default"].div.attrs({ className: 'layer-panel__config' })(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n margin-top: ", ";\n padding: ", ";\n border-left: ", " dashed\n ", ";\n"])), function (props) { return props.theme.layerConfiguratorMargin; }, function (props) { return props.theme.layerConfiguratorPadding; }, function (props) { return props.theme.layerConfiguratorBorder; }, function (props) { return props.theme.layerConfiguratorBorderColor; }); var StyledLayerVisualConfigurator = _styledComponents["default"].div.attrs({ className: 'layer-panel__config__visualC-config' })(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin-top: 12px;\n"]))); var getLayerFields = function getLayerFields(datasets, layer) { return layer.config && datasets[layer.config.dataId] ? datasets[layer.config.dataId].fields : []; }; exports.getLayerFields = getLayerFields; var getLayerDataset = function getLayerDataset(datasets, layer) { return layer.config && datasets[layer.config.dataId] ? datasets[layer.config.dataId] : null; }; exports.getLayerDataset = getLayerDataset; 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"], _visConfigSlider["default"], _textLabelPanel["default"], _layerConfigGroup["default"], ChannelByValueSelectorFactory, _layerColumnConfig["default"], _layerTypeSelector["default"], _visConfigSwitch["default"]]; function LayerConfiguratorFactory(SourceDataSelector, VisConfigSlider, TextLabelPanel, LayerConfigGroup, ChannelByValueSelector, LayerColumnConfig, LayerTypeSelector, VisConfigSwitch) { var LayerConfigurator = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(LayerConfigurator, _Component); var _super = _createSuper(LayerConfigurator); function LayerConfigurator() { (0, _classCallCheck2["default"])(this, LayerConfigurator); return _super.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 /*#__PURE__*/_react["default"].createElement(StyledLayerVisualConfigurator, null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, layer.visConfigSettings.filled || { label: 'layer.color' }, visConfiguratorProps, { collapsible: true }), layer.config.colorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, layerConfiguratorProps), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.color }, layerChannelConfigProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), layer.type === _types.LAYER_TYPES.point ? /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, layer.visConfigSettings.outline, visConfiguratorProps, { collapsible: true }), layer.config.strokeColorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, { property: "strokeColorRange" })) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, (0, _extends2["default"])({}, visConfiguratorProps, { selectedColor: layer.config.visConfig.strokeColor, property: "strokeColor" })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.strokeColor }, layerChannelConfigProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, { disabled: !layer.config.visConfig.outline })))) : null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.radius', collapsible: true }, !layer.config.sizeField ? /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.radius, visConfiguratorProps, { label: false, disabled: Boolean(layer.config.sizeField) })) : /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.radiusRange, visConfiguratorProps, { label: false, disabled: !layer.config.sizeField || layer.config.visConfig.fixedRadius })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps)), layer.config.sizeField ? /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, layer.visConfigSettings.fixedRadius, visConfiguratorProps)) : null)), /*#__PURE__*/_react["default"].createElement(TextLabelPanel, { 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 /*#__PURE__*/_react["default"].createElement(StyledLayerVisualConfigurator, null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.color', collapsible: true }, /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(AggrScaleSelector, (0, _extends2["default"])({}, layerConfiguratorProps, { channel: layer.visualChannels.color })), /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.color }, layerChannelConfigProps)), layer.visConfigSettings.colorAggregation.condition(layer.config) ? /*#__PURE__*/_react["default"].createElement(AggregationTypeSelector, (0, _extends2["default"])({}, layer.visConfigSettings.colorAggregation, layerChannelConfigProps, { channel: layer.visualChannels.color })) : null, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.radius', collapsible: true }, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.clusterRadius, visConfiguratorProps)), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (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 /*#__PURE__*/_react["default"].createElement(StyledLayerVisualConfigurator, null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.color', collapsible: true }, /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.radius' }, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.radius, visConfiguratorProps, { label: false }))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.weight' }, /*#__PURE__*/_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 /*#__PURE__*/_react["default"].createElement(StyledLayerVisualConfigurator, null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.color', collapsible: true }, /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(AggrScaleSelector, (0, _extends2["default"])({}, layerConfiguratorProps, { channel: layer.visualChannels.color })), /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.color }, layerChannelConfigProps)), layer.visConfigSettings.colorAggregation.condition(layer.config) ? /*#__PURE__*/_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) ? /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.percentile, visConfiguratorProps)) : null, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.radius', collapsible: true }, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.worldUnitSize, visConfiguratorProps)), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.coverage, visConfiguratorProps)))), layer.visConfigSettings.enable3d ? /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, layer.visConfigSettings.enable3d, visConfiguratorProps, { collapsible: true }), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.elevationScale, visConfiguratorProps, { label: "layerVisConfigs.heightMultiplier" })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({}, layerChannelConfigProps, { channel: layer.visualChannels.size, description: elevationByDescription, disabled: !enable3d })), /*#__PURE__*/_react["default"].createElement(AggrScaleSelector, (0, _extends2["default"])({}, layerConfiguratorProps, { channel: layer.visualChannels.size })), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, { label: "layerVisConfigs.heightRange" })), /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, layer.visConfigSettings.enableElevationZoomFactor, visConfiguratorProps, { label: "layerVisConfigs.enableHeightZoomFactor" })), layer.visConfigSettings.sizeAggregation.condition(layer.config) ? /*#__PURE__*/_react["default"].createElement(AggregationTypeSelector, (0, _extends2["default"])({}, layer.visConfigSettings.sizeAggregation, layerChannelConfigProps, { channel: layer.visualChannels.size })) : null, layer.visConfigSettings.elevationPercentile.condition(layer.config) ? /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (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 /*#__PURE__*/_react["default"].createElement(StyledLayerVisualConfigurator, null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.color', collapsible: true }, layer.config.colorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, layerConfiguratorProps), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.color }, layerChannelConfigProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.coverage', collapsible: true }, !layer.config.coverageField ? /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.coverage, visConfiguratorProps, { label: false })) : /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.coverageRange, visConfiguratorProps, { label: false })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.coverage }, layerChannelConfigProps)))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, layer.visConfigSettings.enable3d, visConfiguratorProps, { collapsible: true }), /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps)), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.elevationScale, visConfiguratorProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, { label: "layerVisConfigs.heightRange" })), /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, layer.visConfigSettings.enableElevationZoomFactor, visConfiguratorProps))))); } }, { 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 /*#__PURE__*/_react["default"].createElement(StyledLayerVisualConfigurator, null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.color', collapsible: true }, layer.config.colorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps) : /*#__PURE__*/_react["default"].createElement(ArcLayerColorSelector, { layer: layer, setColorUI: layerConfiguratorProps.setColorUI, onChangeConfig: layerConfiguratorProps.onChange, onChangeVisConfig: visConfiguratorProps.onChange }), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.sourceColor }, layerChannelConfigProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.stroke', collapsible: true }, layer.config.sizeField ? /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, { disabled: !layer.config.sizeField, label: false })) : /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, { label: false })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps)))), layer.visConfigSettings.elevationScale ? /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: "layerVisConfigs.elevationScale", collapsible: true }, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.elevationScale, visConfiguratorProps))) : null); } }, { 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 /*#__PURE__*/_react["default"].createElement(StyledLayerVisualConfigurator, null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.color', collapsible: true }, layer.config.colorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, layerConfiguratorProps), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.color }, layerChannelConfigProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, { label: "layer.strokeWidth", collapsible: true }), layer.config.sizeField ? /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, { label: false })) : /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, { label: false })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps)))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, featureTypes.polygon ? layer.visConfigSettings.stroked : {}, { label: "layer.trailLength", description: "layer.trailLengthDescription" }), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (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 /*#__PURE__*/_react["default"].createElement(StyledLayerVisualConfigurator, null, featureTypes.polygon || featureTypes.point ? /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, layer.visConfigSettings.filled, visConfiguratorProps, { label: "layer.fillColor", collapsible: true }), layer.config.colorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, layerConfiguratorProps), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.color }, layerChannelConfigProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))) : null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, layer.visConfigSettings.stroked, visConfiguratorProps, { label: "layer.strokeColor", collapsible: true }), layer.config.strokeColorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, { property: "strokeColorRange" })) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, (0, _extends2["default"])({}, visConfiguratorProps, { selectedColor: layer.config.visConfig.strokeColor, property: "strokeColor" })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.strokeColor }, layerChannelConfigProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.strokeOpacity, visConfiguratorProps)))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, featureTypes.polygon ? layer.visConfigSettings.stroked : {}, { label: "layer.strokeWidth", collapsible: true }), layer.config.sizeField ? /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, { label: false })) : /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, { label: false })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps)))), featureTypes.polygon ? /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.enable3d, { disabled: !visConfig.filled, collapsible: true }), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.elevationScale, visConfiguratorProps, { label: false })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.height }, layerChannelConfigProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, layer.visConfigSettings.enableElevationZoomFactor, visConfiguratorProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.wireframe)))) : null, featureTypes.point ? /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.radius', collapsible: true }, !layer.config.radiusField ? /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.radius, visConfiguratorProps, { label: false, disabled: Boolean(layer.config.radiusField) })) : /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.radiusRange, visConfiguratorProps, { label: false, disabled: !layer.config.radiusField })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_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 /*#__PURE__*/_react["default"].createElement(_react.Fragment, null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.3DModel', collapsible: true }, /*#__PURE__*/_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 }); } } })), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.3DModelOptions', collapsible: true }, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.sizeScale, visConfiguratorProps, { disabled: false })), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.angleX, visConfiguratorProps, { disabled: false })), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.angleY, visConfiguratorProps, { disabled: false })), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (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 /*#__PURE__*/_react["default"].createElement(StyledLayerVisualConfigurator, null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, layer.visConfigSettings.filled, visConfiguratorProps, { label: "layer.fillColor", collapsible: true }), layer.config.colorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, visConfiguratorProps) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, layerConfiguratorProps), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.color }, layerChannelConfigProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.opacity, visConfiguratorProps)))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, layer.visConfigSettings.stroked, visConfiguratorProps, { label: "layer.strokeColor", collapsible: true }), layer.config.strokeColorField ? /*#__PURE__*/_react["default"].createElement(LayerColorRangeSelector, (0, _extends2["default"])({}, visConfiguratorProps, { property: "strokeColorRange" })) : /*#__PURE__*/_react["default"].createElement(LayerColorSelector, (0, _extends2["default"])({}, visConfiguratorProps, { selectedColor: layer.config.visConfig.strokeColor, property: "strokeColor" })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.strokeColor }, layerChannelConfigProps)))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, { label: "layer.strokeWidth", collapsible: true }), layer.config.sizeField ? /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.sizeRange, visConfiguratorProps, { label: false })) : /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.thickness, visConfiguratorProps, { label: false })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.size }, layerChannelConfigProps)))), /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, (0, _extends2["default"])({}, visConfiguratorProps, layer.visConfigSettings.enable3d, { disabled: !visConfig.filled, collapsible: true }), /*#__PURE__*/_react["default"].createElement(ChannelByValueSelector, (0, _extends2["default"])({ channel: layer.visualChannels.height }, layerChannelConfigProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.elevationScale, visConfiguratorProps, { label: "layerVisConfigs.elevationScale" })), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, /*#__PURE__*/_react["default"].createElement(VisConfigSlider, (0, _extends2["default"])({}, layer.visConfigSettings.heightRange, visConfiguratorProps, { label: "layerVisConfigs.heightRange" })), /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (0, _extends2["default"])({}, layer.visConfigSettings.enableElevationZoomFactor, visConfiguratorProps)), /*#__PURE__*/_react["default"].createElement(VisConfigSwitch, (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, _ref11$fieldPairs = _ref11.fieldPairs, fieldPairs = _ref11$fieldPairs === void 0 ? undefined : _ref11$fieldPairs; var config = layer.config; var visConfiguratorProps = getVisConfiguratorProps(this.props); var layerConfiguratorProps = getLayerConfiguratorProps(this.props); var layerChannelConfigProps = getLayerChannelConfigProps(this.props); var dataset = getLayerDataset(datasets, layer); var renderTemplate = layer.type && "_render".concat((0, _utils.capitalizeFirstLetter)(layer.type), "LayerConfig"); return /*#__PURE__*/_react["default"].createElement(StyledLayerConfigurator, null, layer.layerInfoModal ? /*#__PURE__*/_react["default"].createElement(HowToButton, { onClick: function onClick() { return _this.props.openModal(layer.layerInfoModal); } }) : null, /*#__PURE__*/_react["default"].createElement(LayerConfigGroup, { label: 'layer.basic', collapsible: true, expanded: !layer.hasAllColumns() }, /*#__PURE__*/_react["default"].createElement(LayerTypeSelector, { datasets: datasets, layer: layer, layerTypeOptions: layerTypeOptions, onSelect: updateLayerType }), Object.keys(datasets).length > 1 && /*#__PURE__*/_react["default"].createElement(SourceDataSelector, { datasets: datasets, id: layer.id, dataId: config.dataId, onSelect: function onSelect(value) { return updateLayerConfig({ dataId: value }); } }), /*#__PURE__*/_react["default"].createElement(LayerColumnConfig, { 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, dataset: dataset, 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 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n right: 12px;\n top: -4px;\n"]))); var HowToButton = function HowToButton(_ref12) { var onClick = _ref12.onClick; return /*#__PURE__*/_react["default"].createElement(StyledHowToButton, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.Button, { link: true, small: true, onClick: onClick }, /*#__PURE__*/_react["default"].createElement(_localization.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 /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_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 /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_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 /*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_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; ChannelByValueSelectorFactory.deps = [_visConfigByFieldSelector["default"]]; function ChannelByValueSelectorFactory(VisConfigByFieldSelector) { 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 /*#__PURE__*/_react["default"].createElement(VisConfigByFieldSelector, { channel: channel.key,