"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.DimensionDataExtraEditor = DimensionDataExtraEditor; exports.DimensionEditor = DimensionEditor; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); require("./toolbar.scss"); var _react = _interopRequireDefault(require("react")); var _i18n = require("@kbn/i18n"); var _visualizationUiComponents = require("@kbn/visualization-ui-components"); var _shared_components = require("../../shared_components"); var _collapse_setting = require("../../shared_components/collapse_setting"); var _visualization = require("./visualization"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ function DimensionEditor(props) { var _currentLayer$colorsB; const { inputValue: localState, handleInputChange: setLocalState } = (0, _visualizationUiComponents.useDebouncedValue)({ value: props.state, onChange: props.setState }); const currentLayer = localState.layers.find(layer => layer.layerId === props.layerId); const setConfig = _react.default.useCallback(({ color }) => { if (!currentLayer) { return; } const newColorsByDimension = { ...currentLayer.colorsByDimension }; if (color) { newColorsByDimension[props.accessor] = color; } else { delete newColorsByDimension[props.accessor]; } setLocalState({ ...localState, layers: localState.layers.map(layer => layer.layerId === currentLayer.layerId ? { ...layer, colorsByDimension: newColorsByDimension } : layer) }); }, [currentLayer, localState, props.accessor, setLocalState]); if (!currentLayer) { return null; } const firstNonCollapsedColumnId = currentLayer.primaryGroups.find(id => !(0, _visualization.isCollapsed)(id, currentLayer)); const showColorPicker = currentLayer.metrics.includes(props.accessor) && currentLayer.allowMultipleMetrics; const colorPickerDisabledMessage = (0, _visualization.hasNonCollapsedSliceBy)(currentLayer) ? ['pie', 'donut'].includes(props.state.shape) ? _i18n.i18n.translate('xpack.lens.pieChart.colorPicker.disabledBecauseSliceBy', { defaultMessage: 'You are unable to apply custom colors to individual slices when the layer includes one or more "Slice by" dimensions.' }) : _i18n.i18n.translate('xpack.lens.pieChart.colorPicker.disabledBecauseGroupBy', { defaultMessage: 'You are unable to apply custom colors to individual slices when the layer includes one or more "Group by" dimensions.' }) : undefined; return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, props.accessor === firstNonCollapsedColumnId && /*#__PURE__*/_react.default.createElement(_shared_components.PalettePicker, { palettes: props.paletteService, activePalette: props.state.palette, setPalette: newPalette => { setLocalState({ ...props.state, palette: newPalette }); } }), showColorPicker && /*#__PURE__*/_react.default.createElement(_visualizationUiComponents.ColorPicker, (0, _extends2.default)({}, props, { overwriteColor: (_currentLayer$colorsB = currentLayer.colorsByDimension) === null || _currentLayer$colorsB === void 0 ? void 0 : _currentLayer$colorsB[props.accessor], defaultColor: (0, _visualization.getDefaultColorForMultiMetricDimension)({ layer: currentLayer, columnId: props.accessor, paletteService: props.paletteService, datasource: props.datasource, palette: props.state.palette }), disabledMessage: colorPickerDisabledMessage, setConfig: setConfig }))); } function DimensionDataExtraEditor(props) { var _currentLayer$seconda, _currentLayer$collaps; const currentLayer = props.state.layers.find(layer => layer.layerId === props.layerId); if (!currentLayer) { return null; } return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, [...currentLayer.primaryGroups, ...((_currentLayer$seconda = currentLayer.secondaryGroups) !== null && _currentLayer$seconda !== void 0 ? _currentLayer$seconda : [])].includes(props.accessor) && /*#__PURE__*/_react.default.createElement(_collapse_setting.CollapseSetting, { value: (currentLayer === null || currentLayer === void 0 ? void 0 : (_currentLayer$collaps = currentLayer.collapseFns) === null || _currentLayer$collaps === void 0 ? void 0 : _currentLayer$collaps[props.accessor]) || '', onChange: collapseFn => { props.setState({ ...props.state, layers: props.state.layers.map(layer => layer.layerId !== props.layerId ? layer : { ...layer, collapseFns: { ...layer.collapseFns, [props.accessor]: collapseFn } }) }); } })); }