UNPKG

kepler.gl

Version:

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

71 lines (68 loc) 15.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.StyledContainer = void 0; var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireWildcard(require("styled-components")); var _layers = require("@kepler.gl/layers"); var _templateObject, _templateObject2, _templateObject3; // 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 spin = (0, _styledComponents.keyframes)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n"]))); var Spinner = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-block;\n width: 14px;\n height: 14px;\n margin-right: 8px;\n border: 2px solid ", ";\n border-top-color: transparent;\n border-radius: 50%;\n animation: ", " 0.8s linear infinite;\n vertical-align: middle;\n"])), function (props) { return props.theme.textColorHl; }, spin); var StyledContainer = exports.StyledContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n left: ", "px;\n bottom: ", "px;\n z-index: 1;\n color: ", ";\n opacity: ", ";\n transition: opacity 0.5s ease-in-out;\n background-color: ", ";\n padding: 8px 12px;\n font-size: 13px;\n font-weight: 500;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n pointer-events: none;\n"])), function (props) { return props.$left; }, function (props) { return props.theme.sidePanel.margin.left; }, function (props) { return props.theme.textColor; }, function (props) { return props.$isVisible ? 1 : 0; }, function (props) { return props.theme.sidePanelBg; }); /** Extra adjustment for the loading indicator when side panel is visible */ var LEFT_POSITION_ADJUSTMENT = 3; var LoadingIndicator = function LoadingIndicator(_ref) { var isVisible = _ref.isVisible, activeSidePanel = _ref.activeSidePanel, sidePanelWidth = _ref.sidePanelWidth, theme = _ref.theme; var left = (activeSidePanel ? (sidePanelWidth || 0) + LEFT_POSITION_ADJUSTMENT : 0) + theme.sidePanel.margin.left; // Helper message to track number of tiles that are being loaded var numRasterTilesInProgress = (0, _layers.getNumRasterTilesBeingLoaded)(); var numVectorTilesInProgress = (0, _layers.getNumVectorTilesBeingLoaded)(); var extraMessage = ''; if (numRasterTilesInProgress > 0 && numVectorTilesInProgress > 0) { // Both types loading: show combined count var totalTiles = numRasterTilesInProgress + numVectorTilesInProgress; extraMessage = "".concat(totalTiles, " tile").concat(totalTiles === 1 ? ' is' : 's are', " being loaded"); } else if (numRasterTilesInProgress > 0) { // Only raster tiles loading extraMessage = "".concat(numRasterTilesInProgress, " raster tile").concat(numRasterTilesInProgress === 1 ? ' is' : 's are', " being loaded"); } else if (numVectorTilesInProgress > 0) { // Only vector tiles loading extraMessage = "".concat(numVectorTilesInProgress, " vector tile").concat(numVectorTilesInProgress === 1 ? ' is' : 's are', " being loaded"); } // Preserve the last message during fade-out var lastMessageRef = (0, _react.useRef)(extraMessage); (0, _react.useEffect)(function () { if (isVisible && extraMessage) { lastMessageRef.current = extraMessage; } }, [isVisible, extraMessage]); var displayMessage = isVisible ? extraMessage : lastMessageRef.current; return /*#__PURE__*/_react["default"].createElement(StyledContainer, { $isVisible: isVisible, $left: left }, /*#__PURE__*/_react["default"].createElement(Spinner, null), /*#__PURE__*/_react["default"].createElement("span", null, "Loading... ".concat(displayMessage))); }; var _default = exports["default"] = (0, _styledComponents.withTheme)(LoadingIndicator); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9sYXllcnMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsInNwaW4iLCJrZXlmcmFtZXMiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsIlNwaW5uZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsInRoZW1lIiwidGV4dENvbG9ySGwiLCJTdHlsZWRDb250YWluZXIiLCJleHBvcnRzIiwiJGxlZnQiLCJzaWRlUGFuZWwiLCJtYXJnaW4iLCJsZWZ0IiwidGV4dENvbG9yIiwiJGlzVmlzaWJsZSIsInNpZGVQYW5lbEJnIiwiTEVGVF9QT1NJVElPTl9BREpVU1RNRU5UIiwiTG9hZGluZ0luZGljYXRvciIsIl9yZWYiLCJpc1Zpc2libGUiLCJhY3RpdmVTaWRlUGFuZWwiLCJzaWRlUGFuZWxXaWR0aCIsIm51bVJhc3RlclRpbGVzSW5Qcm9ncmVzcyIsImdldE51bVJhc3RlclRpbGVzQmVpbmdMb2FkZWQiLCJudW1WZWN0b3JUaWxlc0luUHJvZ3Jlc3MiLCJnZXROdW1WZWN0b3JUaWxlc0JlaW5nTG9hZGVkIiwiZXh0cmFNZXNzYWdlIiwidG90YWxUaWxlcyIsImNvbmNhdCIsImxhc3RNZXNzYWdlUmVmIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiY3VycmVudCIsImRpc3BsYXlNZXNzYWdlIiwiY3JlYXRlRWxlbWVudCIsIl9kZWZhdWx0Iiwid2l0aFRoZW1lIl0sInNvdXJjZXMiOlsiLi4vc3JjL2xvYWRpbmctaW5kaWNhdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHtQcm9wc1dpdGhDaGlsZHJlbiwgdXNlUmVmLCB1c2VFZmZlY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQsIHt3aXRoVGhlbWUsIGtleWZyYW1lc30gZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQge2dldE51bVJhc3RlclRpbGVzQmVpbmdMb2FkZWQsIGdldE51bVZlY3RvclRpbGVzQmVpbmdMb2FkZWR9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcblxudHlwZSBTdHlsZWRDb250YWluZXJQcm9wcyA9IHtcbiAgJGlzVmlzaWJsZT86IGJvb2xlYW47XG4gICRsZWZ0OiBudW1iZXI7XG59O1xuXG5jb25zdCBzcGluID0ga2V5ZnJhbWVzYFxuICAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XG4gIDEwMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG5gO1xuXG5jb25zdCBTcGlubmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMTRweDtcbiAgaGVpZ2h0OiAxNHB4O1xuICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgYm9yZGVyOiAycHggc29saWQgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JIbH07XG4gIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGFuaW1hdGlvbjogJHtzcGlufSAwLjhzIGxpbmVhciBpbmZpbml0ZTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRDb250YWluZXIgPSBzdHlsZWQuZGl2PFN0eWxlZENvbnRhaW5lclByb3BzPmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAke3Byb3BzID0+IHByb3BzLiRsZWZ0fXB4O1xuICBib3R0b206ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2lkZVBhbmVsLm1hcmdpbi5sZWZ0fXB4O1xuICB6LWluZGV4OiAxO1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICBvcGFjaXR5OiAke3Byb3BzID0+IChwcm9wcy4kaXNWaXNpYmxlID8gMSA6IDApfTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW4tb3V0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNpZGVQYW5lbEJnfTtcbiAgcGFkZGluZzogOHB4IDEycHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYDtcblxudHlwZSBMb2FkaW5nSW5kaWNhdG9yUHJvcHMgPSB7XG4gIGlzVmlzaWJsZT86IGJvb2xlYW47XG4gIGFjdGl2ZVNpZGVQYW5lbD86IGJvb2xlYW47XG4gIHNpZGVQYW5lbFdpZHRoPzogbnVtYmVyO1xufTtcblxuLyoqIEV4dHJhIGFkanVzdG1lbnQgZm9yIHRoZSBsb2FkaW5nIGluZGljYXRvciB3aGVuIHNpZGUgcGFuZWwgaXMgdmlzaWJsZSAqL1xuY29uc3QgTEVGVF9QT1NJVElPTl9BREpVU1RNRU5UID0gMztcblxuY29uc3QgTG9hZGluZ0luZGljYXRvcjogUmVhY3QuRkM8TG9hZGluZ0luZGljYXRvclByb3BzICYge3RoZW1lOiBhbnl9PiA9ICh7XG4gIGlzVmlzaWJsZSxcbiAgYWN0aXZlU2lkZVBhbmVsLFxuICBzaWRlUGFuZWxXaWR0aCxcbiAgdGhlbWVcbn0pID0+IHtcbiAgY29uc3QgbGVmdCA9XG4gICAgKGFjdGl2ZVNpZGVQYW5lbCA/IChzaWRlUGFuZWxXaWR0aCB8fCAwKSArIExFRlRfUE9TSVRJT05fQURKVVNUTUVOVCA6IDApICtcbiAgICB0aGVtZS5zaWRlUGFuZWwubWFyZ2luLmxlZnQ7XG5cbiAgLy8gSGVscGVyIG1lc3NhZ2UgdG8gdHJhY2sgbnVtYmVyIG9mIHRpbGVzIHRoYXQgYXJlIGJlaW5nIGxvYWRlZFxuICBjb25zdCBudW1SYXN0ZXJUaWxlc0luUHJvZ3Jlc3MgPSBnZXROdW1SYXN0ZXJUaWxlc0JlaW5nTG9hZGVkKCk7XG4gIGNvbnN0IG51bVZlY3RvclRpbGVzSW5Qcm9ncmVzcyA9IGdldE51bVZlY3RvclRpbGVzQmVpbmdMb2FkZWQoKTtcblxuICBsZXQgZXh0cmFNZXNzYWdlID0gJyc7XG4gIGlmIChudW1SYXN0ZXJUaWxlc0luUHJvZ3Jlc3MgPiAwICYmIG51bVZlY3RvclRpbGVzSW5Qcm9ncmVzcyA+IDApIHtcbiAgICAvLyBCb3RoIHR5cGVzIGxvYWRpbmc6IHNob3cgY29tYmluZWQgY291bnRcbiAgICBjb25zdCB0b3RhbFRpbGVzID0gbnVtUmFzdGVyVGlsZXNJblByb2dyZXNzICsgbnVtVmVjdG9yVGlsZXNJblByb2dyZXNzO1xuICAgIGV4dHJhTWVzc2FnZSA9IGAke3RvdGFsVGlsZXN9IHRpbGUke3RvdGFsVGlsZXMgPT09IDEgPyAnIGlzJyA6ICdzIGFyZSd9IGJlaW5nIGxvYWRlZGA7XG4gIH0gZWxzZSBpZiAobnVtUmFzdGVyVGlsZXNJblByb2dyZXNzID4gMCkge1xuICAgIC8vIE9ubHkgcmFzdGVyIHRpbGVzIGxvYWRpbmdcbiAgICBleHRyYU1lc3NhZ2UgPSBgJHtudW1SYXN0ZXJUaWxlc0luUHJvZ3Jlc3N9IHJhc3RlciB0aWxlJHtcbiAgICAgIG51bVJhc3RlclRpbGVzSW5Qcm9ncmVzcyA9PT0gMSA/ICcgaXMnIDogJ3MgYXJlJ1xuICAgIH0gYmVpbmcgbG9hZGVkYDtcbiAgfSBlbHNlIGlmIChudW1WZWN0b3JUaWxlc0luUHJvZ3Jlc3MgPiAwKSB7XG4gICAgLy8gT25seSB2ZWN0b3IgdGlsZXMgbG9hZGluZ1xuICAgIGV4dHJhTWVzc2FnZSA9IGAke251bVZlY3RvclRpbGVzSW5Qcm9ncmVzc30gdmVjdG9yIHRpbGUke1xuICAgICAgbnVtVmVjdG9yVGlsZXNJblByb2dyZXNzID09PSAxID8gJyBpcycgOiAncyBhcmUnXG4gICAgfSBiZWluZyBsb2FkZWRgO1xuICB9XG5cbiAgLy8gUHJlc2VydmUgdGhlIGxhc3QgbWVzc2FnZSBkdXJpbmcgZmFkZS1vdXRcbiAgY29uc3QgbGFzdE1lc3NhZ2VSZWYgPSB1c2VSZWYoZXh0cmFNZXNzYWdlKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWaXNpYmxlICYmIGV4dHJhTWVzc2FnZSkge1xuICAgICAgbGFzdE1lc3NhZ2VSZWYuY3VycmVudCA9IGV4dHJhTWVzc2FnZTtcbiAgICB9XG4gIH0sIFtpc1Zpc2libGUsIGV4dHJhTWVzc2FnZV0pO1xuXG4gIGNvbnN0IGRpc3BsYXlNZXNzYWdlID0gaXNWaXNpYmxlID8gZXh0cmFNZXNzYWdlIDogbGFzdE1lc3NhZ2VSZWYuY3VycmVudDtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRDb250YWluZXIgJGlzVmlzaWJsZT17aXNWaXNpYmxlfSAkbGVmdD17bGVmdH0+XG4gICAgICA8U3Bpbm5lciAvPlxuICAgICAgPHNwYW4+e2BMb2FkaW5nLi4uICR7ZGlzcGxheU1lc3NhZ2V9YH08L3NwYW4+XG4gICAgPC9TdHlsZWRDb250YWluZXI+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoVGhlbWUoTG9hZGluZ0luZGljYXRvcikgYXMgUmVhY3QuRkM8UHJvcHNXaXRoQ2hpbGRyZW48TG9hZGluZ0luZGljYXRvclByb3BzPj47XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUdB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