UNPKG

kepler.gl

Version:

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

111 lines (110 loc) 19.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.StyledPanelDropdown = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _utils = require("@kepler.gl/utils"); var _styledComponents2 = require("../common/styled-components"); var _portaled = _interopRequireDefault(require("../common/portaled")); var _singleColorPalette = _interopRequireDefault(require("../side-panel/layer-panel/single-color-palette")); var _templateObject, _templateObject2, _templateObject3, _templateObject4; // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } var StyledPanelDropdown = exports.StyledPanelDropdown = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n ", "\n background-color: ", ";\n box-shadow: ", ";\n border-radius: ", ";\n overflow-y: auto;\n max-height: 500px;\n position: relative;\n z-index: 999;\n width: 220px;\n"])), function (props) { return props.theme.panelDropdownScrollBar; }, function (props) { return props.theme.panelBackground; }, function (props) { return props.theme.panelBoxShadow; }, function (props) { return props.theme.panelBorderRadius; }); var StyledConfigSection = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n"]))); var SectionTitle = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: ", ";\n color: ", ";\n margin-bottom: 8px;\n"])), function (props) { return props.theme.inputFontSize; }, function (props) { return props.theme.effectPanelTextSecondary2; }); var StyledDropdownButtonWrapper = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n align-self: flex-start;\n .button {\n color: ", ";\n display: flex;\n gap: 5px;\n border: none;\n transition: background 0.2s;\n background-color: ", ";\n padding: 8px 5px 8px 10px;\n &:active {\n color: ", ";\n background-color: ", ";\n }\n &:hover {\n color: ", ";\n background-color: ", ";\n }\n & > svg {\n margin-right: 0;\n }\n }\n"])), function (props) { return props.theme.effectPanelTextSecondary2; }, function (props) { return props.theme.inputBgd; }, function (props) { return props.theme.effectPanelTextMain; }, function (props) { return props.theme.inputBgdHover; }, function (props) { return props.theme.effectPanelTextMain; }, function (props) { return props.theme.inputBgdHover; }); var DEFAULT_OFFSET = { top: 0, left: 0 }; var SingleColorPickerDropdown = function SingleColorPickerDropdown(_ref) { var isOpened = _ref.isOpened, onClose = _ref.onClose, selectedColor = _ref.selectedColor, onSelectColor = _ref.onSelectColor, _ref$offset = _ref.offset, offset = _ref$offset === void 0 ? DEFAULT_OFFSET : _ref$offset; var onSelectColorCb = (0, _react.useCallback)(function (v) { onSelectColor(v); }, [onSelectColor]); return /*#__PURE__*/_react["default"].createElement(_portaled["default"], { top: offset.top, left: offset.left, isOpened: isOpened, onClose: onClose }, /*#__PURE__*/_react["default"].createElement(StyledPanelDropdown, null, /*#__PURE__*/_react["default"].createElement(_singleColorPalette["default"], { selectedColor: selectedColor, onSelectColor: onSelectColorCb }))); }; var CompactColorPicker = function CompactColorPicker(_ref2) { var color = _ref2.color, onSetColor = _ref2.onSetColor, Icon = _ref2.Icon, label = _ref2.label; var _React$useState = _react["default"].useState(false), _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2), isColorPickerOpened = _React$useState2[0], setIsColorPickerOpened = _React$useState2[1]; var hexColor = (0, _react.useMemo)(function () { return (0, _utils.rgbToHex)(color); }, [color]); var colorBlockStyle = (0, _react.useMemo)(function () { return { width: 16, height: 16, backgroundColor: hexColor, borderRadius: 2 }; }, [hexColor]); var toggleDropdown = (0, _react.useCallback)(function () { setIsColorPickerOpened(!isColorPickerOpened); }, [isColorPickerOpened, setIsColorPickerOpened]); var closeDropdown = (0, _react.useCallback)(function () { setIsColorPickerOpened(false); }, [setIsColorPickerOpened]); return /*#__PURE__*/_react["default"].createElement(StyledConfigSection, null, /*#__PURE__*/_react["default"].createElement(SectionTitle, null, label), /*#__PURE__*/_react["default"].createElement(StyledDropdownButtonWrapper, null, /*#__PURE__*/_react["default"].createElement(_styledComponents2.Button, { onClick: toggleDropdown }, /*#__PURE__*/_react["default"].createElement("div", { style: colorBlockStyle }), /*#__PURE__*/_react["default"].createElement(Icon, null))), /*#__PURE__*/_react["default"].createElement(SingleColorPickerDropdown, { isOpened: isColorPickerOpened, onClose: closeDropdown, selectedColor: hexColor, onSelectColor: onSetColor })); }; var _default = exports["default"] = CompactColorPicker; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXRpbHMiLCJfc3R5bGVkQ29tcG9uZW50czIiLCJfcG9ydGFsZWQiLCJfc2luZ2xlQ29sb3JQYWxldHRlIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiU3R5bGVkUGFuZWxEcm9wZG93biIsImV4cG9ydHMiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInByb3BzIiwidGhlbWUiLCJwYW5lbERyb3Bkb3duU2Nyb2xsQmFyIiwicGFuZWxCYWNrZ3JvdW5kIiwicGFuZWxCb3hTaGFkb3ciLCJwYW5lbEJvcmRlclJhZGl1cyIsIlN0eWxlZENvbmZpZ1NlY3Rpb24iLCJTZWN0aW9uVGl0bGUiLCJpbnB1dEZvbnRTaXplIiwiZWZmZWN0UGFuZWxUZXh0U2Vjb25kYXJ5MiIsIlN0eWxlZERyb3Bkb3duQnV0dG9uV3JhcHBlciIsImlucHV0QmdkIiwiZWZmZWN0UGFuZWxUZXh0TWFpbiIsImlucHV0QmdkSG92ZXIiLCJERUZBVUxUX09GRlNFVCIsInRvcCIsImxlZnQiLCJTaW5nbGVDb2xvclBpY2tlckRyb3Bkb3duIiwiX3JlZiIsImlzT3BlbmVkIiwib25DbG9zZSIsInNlbGVjdGVkQ29sb3IiLCJvblNlbGVjdENvbG9yIiwiX3JlZiRvZmZzZXQiLCJvZmZzZXQiLCJvblNlbGVjdENvbG9yQ2IiLCJ1c2VDYWxsYmFjayIsInYiLCJjcmVhdGVFbGVtZW50IiwiQ29tcGFjdENvbG9yUGlja2VyIiwiX3JlZjIiLCJjb2xvciIsIm9uU2V0Q29sb3IiLCJJY29uIiwibGFiZWwiLCJfUmVhY3QkdXNlU3RhdGUiLCJSZWFjdCIsInVzZVN0YXRlIiwiX1JlYWN0JHVzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImlzQ29sb3JQaWNrZXJPcGVuZWQiLCJzZXRJc0NvbG9yUGlja2VyT3BlbmVkIiwiaGV4Q29sb3IiLCJ1c2VNZW1vIiwicmdiVG9IZXgiLCJjb2xvckJsb2NrU3R5bGUiLCJ3aWR0aCIsImhlaWdodCIsImJhY2tncm91bmRDb2xvciIsImJvcmRlclJhZGl1cyIsInRvZ2dsZURyb3Bkb3duIiwiY2xvc2VEcm9wZG93biIsIkJ1dHRvbiIsIm9uQ2xpY2siLCJzdHlsZSIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VmZmVjdHMvY29tcGFjdC1jb2xvci1waWNrZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtyZ2JUb0hleH0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbmltcG9ydCB7QnV0dG9ufSBmcm9tICcuLi9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IFBvcnRhbGVkIGZyb20gJy4uL2NvbW1vbi9wb3J0YWxlZCc7XG5pbXBvcnQgU2luZ2xlQ29sb3JQYWxldHRlIGZyb20gJy4uL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvc2luZ2xlLWNvbG9yLXBhbGV0dGUnO1xuXG5leHBvcnQgdHlwZSBTaW5nbGVDb2xvclBpY2tlclByb3BzID0ge1xuICBjb2xvcjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBvblNldENvbG9yOiAodmFsdWU6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSkgPT4gdm9pZDtcbiAgbGFiZWw6IHN0cmluZztcbiAgSWNvbjogUmVhY3QuRWxlbWVudFR5cGU7XG59O1xuXG5leHBvcnQgY29uc3QgU3R5bGVkUGFuZWxEcm9wZG93biA9IHN0eWxlZC5kaXZgXG4gICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxEcm9wZG93blNjcm9sbEJhcn1cbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmR9O1xuICBib3gtc2hhZG93OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQm94U2hhZG93fTtcbiAgYm9yZGVyLXJhZGl1czogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbEJvcmRlclJhZGl1c307XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIG1heC1oZWlnaHQ6IDUwMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDk5OTtcbiAgd2lkdGg6IDIyMHB4O1xuYDtcblxuY29uc3QgU3R5bGVkQ29uZmlnU2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5gO1xuXG5jb25zdCBTZWN0aW9uVGl0bGUgPSBzdHlsZWQuZGl2YFxuICBmb250LXNpemU6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRGb250U2l6ZX07XG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmVmZmVjdFBhbmVsVGV4dFNlY29uZGFyeTJ9O1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG5gO1xuXG5jb25zdCBTdHlsZWREcm9wZG93bkJ1dHRvbldyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAuYnV0dG9uIHtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lZmZlY3RQYW5lbFRleHRTZWNvbmRhcnkyfTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogNXB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5pbnB1dEJnZH07XG4gICAgcGFkZGluZzogOHB4IDVweCA4cHggMTBweDtcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5lZmZlY3RQYW5lbFRleHRNYWlufTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRCZ2RIb3Zlcn07XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZWZmZWN0UGFuZWxUZXh0TWFpbn07XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmlucHV0QmdkSG92ZXJ9O1xuICAgIH1cbiAgICAmID4gc3ZnIHtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IERFRkFVTFRfT0ZGU0VUID0ge1xuICB0b3A6IDAsXG4gIGxlZnQ6IDBcbn07XG5cbmNvbnN0IFNpbmdsZUNvbG9yUGlja2VyRHJvcGRvd24gPSAoe1xuICBpc09wZW5lZCxcbiAgb25DbG9zZSxcbiAgc2VsZWN0ZWRDb2xvcixcbiAgb25TZWxlY3RDb2xvcixcbiAgb2Zmc2V0ID0gREVGQVVMVF9PRkZTRVRcbn0pID0+IHtcbiAgY29uc3Qgb25TZWxlY3RDb2xvckNiID0gdXNlQ2FsbGJhY2soXG4gICAgdiA9PiB7XG4gICAgICBvblNlbGVjdENvbG9yKHYpO1xuICAgIH0sXG4gICAgW29uU2VsZWN0Q29sb3JdXG4gICk7XG4gIHJldHVybiAoXG4gICAgPFBvcnRhbGVkIHRvcD17b2Zmc2V0LnRvcH0gbGVmdD17b2Zmc2V0LmxlZnR9IGlzT3BlbmVkPXtpc09wZW5lZH0gb25DbG9zZT17b25DbG9zZX0+XG4gICAgICA8U3R5bGVkUGFuZWxEcm9wZG93bj5cbiAgICAgICAgPFNpbmdsZUNvbG9yUGFsZXR0ZSBzZWxlY3RlZENvbG9yPXtzZWxlY3RlZENvbG9yfSBvblNlbGVjdENvbG9yPXtvblNlbGVjdENvbG9yQ2J9IC8+XG4gICAgICA8L1N0eWxlZFBhbmVsRHJvcGRvd24+XG4gICAgPC9Qb3J0YWxlZD5cbiAgKTtcbn07XG5cbmNvbnN0IENvbXBhY3RDb2xvclBpY2tlcjogUmVhY3QuRkM8U2luZ2xlQ29sb3JQaWNrZXJQcm9wcz4gPSAoe1xuICBjb2xvcixcbiAgb25TZXRDb2xvcixcbiAgSWNvbixcbiAgbGFiZWxcbn06IFNpbmdsZUNvbG9yUGlja2VyUHJvcHMpID0+IHtcbiAgY29uc3QgW2lzQ29sb3JQaWNrZXJPcGVuZWQsIHNldElzQ29sb3JQaWNrZXJPcGVuZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGhleENvbG9yID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHJnYlRvSGV4KGNvbG9yKTtcbiAgfSwgW2NvbG9yXSk7XG5cbiAgY29uc3QgY29sb3JCbG9ja1N0eWxlID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgd2lkdGg6IDE2LFxuICAgICAgaGVpZ2h0OiAxNixcbiAgICAgIGJhY2tncm91bmRDb2xvcjogaGV4Q29sb3IsXG4gICAgICBib3JkZXJSYWRpdXM6IDJcbiAgICB9KSxcbiAgICBbaGV4Q29sb3JdXG4gICk7XG5cbiAgY29uc3QgdG9nZ2xlRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNDb2xvclBpY2tlck9wZW5lZCghaXNDb2xvclBpY2tlck9wZW5lZCk7XG4gIH0sIFtpc0NvbG9yUGlja2VyT3BlbmVkLCBzZXRJc0NvbG9yUGlja2VyT3BlbmVkXSk7XG5cbiAgY29uc3QgY2xvc2VEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc0NvbG9yUGlja2VyT3BlbmVkKGZhbHNlKTtcbiAgfSwgW3NldElzQ29sb3JQaWNrZXJPcGVuZWRdKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRDb25maWdTZWN0aW9uPlxuICAgICAgPFNlY3Rpb25UaXRsZT57bGFiZWx9PC9TZWN0aW9uVGl0bGU+XG4gICAgICA8U3R5bGVkRHJvcGRvd25CdXR0b25XcmFwcGVyPlxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e3RvZ2dsZURyb3Bkb3dufT5cbiAgICAgICAgICA8ZGl2IHN0eWxlPXtjb2xvckJsb2NrU3R5bGV9IC8+XG4gICAgICAgICAgPEljb24gLz5cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L1N0eWxlZERyb3Bkb3duQnV0dG9uV3JhcHBlcj5cbiAgICAgIDxTaW5nbGVDb2xvclBpY2tlckRyb3Bkb3duXG4gICAgICAgIGlzT3BlbmVkPXtpc0NvbG9yUGlja2VyT3BlbmVkfVxuICAgICAgICBvbkNsb3NlPXtjbG9zZURyb3Bkb3dufVxuICAgICAgICBzZWxlY3RlZENvbG9yPXtoZXhDb2xvcn1cbiAgICAgICAgb25TZWxlY3RDb2xvcj17b25TZXRDb2xvcn1cbiAgICAgIC8+XG4gICAgPC9TdHlsZWRDb25maWdTZWN0aW9uPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGFjdENvbG9yUGlja2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLGtCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxTQUFBLEdBQUFILHNCQUFBLENBQUFG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