kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
78 lines (76 loc) • 19.7 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.AiAssistantPanel = AiAssistantPanel;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireWildcard(require("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _reactRedux = require("react-redux");
var _reactIntl = require("react-intl");
var _utils = require("@kepler.gl/utils");
var _localization = require("@kepler.gl/localization");
var _components = require("@kepler.gl/components");
var _actions = require("../actions");
var _aiAssistantConfig = require("./ai-assistant-config");
var _aiAssistantComponent = require("./ai-assistant-component");
var _localization2 = require("../localization");
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; }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var StyledAiAssistantPanelContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n pointer-events: none !important; /* prevent padding from blocking input */\n flex-grow: 1;\n justify-content: space-between;\n overflow: hidden;\n height: 100%;\n width: 100%;\n & > * {\n /* all children should allow input */\n pointer-events: all;\n }\n"])));
var StyledAiAssistantPanel = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n top: 0;\n background-color: ", ";\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n overflow: hidden;\n"])), function (props) {
return props.theme.sidePanelBg;
});
var StyledAiAssistantPanelHeader = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 16px 16px 4px 16px;\n border-bottom: 1px solid ", ";\n color: ", ";\n"])), function (props) {
return props.theme.borderColor;
}, function (props) {
return props.theme.subtextColorActive;
});
var StyledAiAssistantPanelContent = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n color: ", ";\n padding: 10px 0px 10px 0px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n height: 100%;\n"])), function (props) {
return props.theme.sidePanelScrollBar;
}, function (props) {
return props.theme.subtextColorActive;
});
var SidePanelTitle = (0, _components.SidePanelTitleFactory)();
function AiAssistantPanel() {
var dispatch = (0, _reactRedux.useDispatch)();
var aiAssistant = (0, _reactRedux.useSelector)(function (state) {
return state.demo.aiAssistant;
});
var locale = (0, _reactRedux.useSelector)(function (state) {
return state.demo.keplerGl.map.uiState.locale;
});
var onConfigButtonClick = (0, _react.useCallback)(function () {
if (aiAssistant) {
// set aiAssistant.config.isReady to false so we can render the config component
dispatch((0, _actions.updateAiAssistantConfig)(_objectSpread(_objectSpread({}, aiAssistant.config), {}, {
isReady: false
})));
}
}, [aiAssistant, dispatch]);
// combine keplerGlMessages and messages
var combinedMessages = (0, _react.useMemo)(function () {
return Object.keys(_localization2.messages).reduce(function (acc, language) {
return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2["default"])({}, language, _objectSpread(_objectSpread({}, _localization2.messages[language] || {}), _localization.messages[language] || {})));
}, {});
}, []);
return /*#__PURE__*/_react["default"].createElement(_reactIntl.IntlProvider, {
locale: locale,
messages: (0, _utils.flattenMessages)(combinedMessages[locale])
}, /*#__PURE__*/_react["default"].createElement(StyledAiAssistantPanelContainer, {
className: "ai-assistant-manager"
}, /*#__PURE__*/_react["default"].createElement(StyledAiAssistantPanel, null, /*#__PURE__*/_react["default"].createElement(StyledAiAssistantPanelHeader, null, /*#__PURE__*/_react["default"].createElement(SidePanelTitle, {
className: "ai-assistant-manager-title",
title: "AI Assistant"
}, /*#__PURE__*/_react["default"].createElement(_components.Icons.Settings, {
onClick: onConfigButtonClick
}))), /*#__PURE__*/_react["default"].createElement(StyledAiAssistantPanelContent, null, !(aiAssistant !== null && aiAssistant !== void 0 && aiAssistant.config.isReady) ? /*#__PURE__*/_react["default"].createElement(_aiAssistantConfig.AiAssistantConfig, null) : /*#__PURE__*/_react["default"].createElement(_aiAssistantComponent.AiAssistantComponent, null)))));
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3RSZWR1eCIsIl9yZWFjdEludGwiLCJfdXRpbHMiLCJfbG9jYWxpemF0aW9uIiwiX2NvbXBvbmVudHMiLCJfYWN0aW9ucyIsIl9haUFzc2lzdGFudENvbmZpZyIsIl9haUFzc2lzdGFudENvbXBvbmVudCIsIl9sb2NhbGl6YXRpb24yIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiU3R5bGVkQWlBc3Npc3RhbnRQYW5lbENvbnRhaW5lciIsInN0eWxlZCIsImRpdiIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwiU3R5bGVkQWlBc3Npc3RhbnRQYW5lbCIsInByb3BzIiwidGhlbWUiLCJzaWRlUGFuZWxCZyIsIlN0eWxlZEFpQXNzaXN0YW50UGFuZWxIZWFkZXIiLCJib3JkZXJDb2xvciIsInN1YnRleHRDb2xvckFjdGl2ZSIsIlN0eWxlZEFpQXNzaXN0YW50UGFuZWxDb250ZW50Iiwic2lkZVBhbmVsU2Nyb2xsQmFyIiwiU2lkZVBhbmVsVGl0bGUiLCJTaWRlUGFuZWxUaXRsZUZhY3RvcnkiLCJBaUFzc2lzdGFudFBhbmVsIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsImFpQXNzaXN0YW50IiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsImRlbW8iLCJsb2NhbGUiLCJrZXBsZXJHbCIsIm1hcCIsInVpU3RhdGUiLCJvbkNvbmZpZ0J1dHRvbkNsaWNrIiwidXNlQ2FsbGJhY2siLCJ1cGRhdGVBaUFzc2lzdGFudENvbmZpZyIsImNvbmZpZyIsImlzUmVhZHkiLCJjb21iaW5lZE1lc3NhZ2VzIiwidXNlTWVtbyIsIm1lc3NhZ2VzIiwicmVkdWNlIiwiYWNjIiwibGFuZ3VhZ2UiLCJrZXBsZXJHbE1lc3NhZ2VzIiwiY3JlYXRlRWxlbWVudCIsIkludGxQcm92aWRlciIsImZsYXR0ZW5NZXNzYWdlcyIsImNsYXNzTmFtZSIsInRpdGxlIiwiSWNvbnMiLCJTZXR0aW5ncyIsIm9uQ2xpY2siLCJBaUFzc2lzdGFudENvbmZpZyIsIkFpQXNzaXN0YW50Q29tcG9uZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvYWktYXNzaXN0YW50LW1hbmFnZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCB7dXNlU2VsZWN0b3IsIHVzZURpc3BhdGNofSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQge0ludGxQcm92aWRlcn0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQge2ZsYXR0ZW5NZXNzYWdlc30gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge21lc3NhZ2VzIGFzIGtlcGxlckdsTWVzc2FnZXN9IGZyb20gJ0BrZXBsZXIuZ2wvbG9jYWxpemF0aW9uJztcblxuaW1wb3J0IHtNYXBTdHlsZX0gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG5pbXBvcnQge1NpZGVQYW5lbFRpdGxlRmFjdG9yeSwgSWNvbnN9IGZyb20gJ0BrZXBsZXIuZ2wvY29tcG9uZW50cyc7XG5pbXBvcnQge1Zpc1N0YXRlfSBmcm9tICdAa2VwbGVyLmdsL3NjaGVtYXMnO1xuXG5pbXBvcnQge0FpQXNzaXN0YW50U3RhdGV9IGZyb20gJy4uL2luZGV4JztcbmltcG9ydCB7dXBkYXRlQWlBc3Npc3RhbnRDb25maWd9IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHtBaUFzc2lzdGFudENvbmZpZ30gZnJvbSAnLi9haS1hc3Npc3RhbnQtY29uZmlnJztcbmltcG9ydCB7QWlBc3Npc3RhbnRDb21wb25lbnR9IGZyb20gJy4vYWktYXNzaXN0YW50LWNvbXBvbmVudCc7XG5pbXBvcnQge21lc3NhZ2VzfSBmcm9tICcuLi9sb2NhbGl6YXRpb24nO1xuXG5jb25zdCBTdHlsZWRBaUFzc2lzdGFudFBhbmVsQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDsgLyogcHJldmVudCBwYWRkaW5nIGZyb20gYmxvY2tpbmcgaW5wdXQgKi9cbiAgZmxleC1ncm93OiAxO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gICYgPiAqIHtcbiAgICAvKiBhbGwgY2hpbGRyZW4gc2hvdWxkIGFsbG93IGlucHV0ICovXG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkQWlBc3Npc3RhbnRQYW5lbCA9IHN0eWxlZC5kaXZgXG4gIHRvcDogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zaWRlUGFuZWxCZ307XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXgtZ3JvdzogMTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbmA7XG5cbmNvbnN0IFN0eWxlZEFpQXNzaXN0YW50UGFuZWxIZWFkZXIgPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiAxNnB4IDE2cHggNHB4IDE2cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJvcmRlckNvbG9yfTtcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yQWN0aXZlfTtcbmA7XG5cbmNvbnN0IFN0eWxlZEFpQXNzaXN0YW50UGFuZWxDb250ZW50ID0gc3R5bGVkLmRpdmBcbiAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zaWRlUGFuZWxTY3JvbGxCYXJ9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3JBY3RpdmV9O1xuICBwYWRkaW5nOiAxMHB4IDBweCAxMHB4IDBweDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiAxMDAlO1xuYDtcblxuY29uc3QgU2lkZVBhbmVsVGl0bGUgPSBTaWRlUGFuZWxUaXRsZUZhY3RvcnkoKTtcblxuZXhwb3J0IHR5cGUgU3RhdGUgPSB7XG4gIGRlbW86IHtcbiAgICBrZXBsZXJHbDoge1xuICAgICAgbWFwOiB7XG4gICAgICAgIHVpU3RhdGU6IHtsb2NhbGU6IHN0cmluZ307XG4gICAgICAgIHZpc1N0YXRlOiBWaXNTdGF0ZTtcbiAgICAgICAgbWFwU3R5bGU6IE1hcFN0eWxlO1xuICAgICAgfTtcbiAgICB9O1xuICAgIGFpQXNzaXN0YW50OiBBaUFzc2lzdGFudFN0YXRlO1xuICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIEFpQXNzaXN0YW50UGFuZWwoKSB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgYWlBc3Npc3RhbnQgPSB1c2VTZWxlY3Rvcigoc3RhdGU6IFN0YXRlKSA9PiBzdGF0ZS5kZW1vLmFpQXNzaXN0YW50KTtcbiAgY29uc3QgbG9jYWxlID0gdXNlU2VsZWN0b3IoKHN0YXRlOiBTdGF0ZSkgPT4gc3RhdGUuZGVtby5rZXBsZXJHbC5tYXAudWlTdGF0ZS5sb2NhbGUpO1xuXG4gIGNvbnN0IG9uQ29uZmlnQnV0dG9uQ2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGFpQXNzaXN0YW50KSB7XG4gICAgICAvLyBzZXQgYWlBc3Npc3RhbnQuY29uZmlnLmlzUmVhZHkgdG8gZmFsc2Ugc28gd2UgY2FuIHJlbmRlciB0aGUgY29uZmlnIGNvbXBvbmVudFxuICAgICAgZGlzcGF0Y2godXBkYXRlQWlBc3Npc3RhbnRDb25maWcoey4uLmFpQXNzaXN0YW50LmNvbmZpZywgaXNSZWFkeTogZmFsc2V9KSk7XG4gICAgfVxuICB9LCBbYWlBc3Npc3RhbnQsIGRpc3BhdGNoXSk7XG5cbiAgLy8gY29tYmluZSBrZXBsZXJHbE1lc3NhZ2VzIGFuZCBtZXNzYWdlc1xuICBjb25zdCBjb21iaW5lZE1lc3NhZ2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG1lc3NhZ2VzKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBsYW5ndWFnZSkgPT4gKHtcbiAgICAgICAgLi4uYWNjLFxuICAgICAgICBbbGFuZ3VhZ2VdOiB7XG4gICAgICAgICAgLi4uKG1lc3NhZ2VzW2xhbmd1YWdlXSB8fCB7fSksXG4gICAgICAgICAgLi4uKGtlcGxlckdsTWVzc2FnZXNbbGFuZ3VhZ2VdIHx8IHt9KVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHt9XG4gICAgKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPEludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e2ZsYXR0ZW5NZXNzYWdlcyhjb21iaW5lZE1lc3NhZ2VzW2xvY2FsZV0pfT5cbiAgICAgIDxTdHlsZWRBaUFzc2lzdGFudFBhbmVsQ29udGFpbmVyIGNsYXNzTmFtZT1cImFpLWFzc2lzdGFudC1tYW5hZ2VyXCI+XG4gICAgICAgIDxTdHlsZWRBaUFzc2lzdGFudFBhbmVsPlxuICAgICAgICAgIDxTdHlsZWRBaUFzc2lzdGFudFBhbmVsSGVhZGVyPlxuICAgICAgICAgICAgPFNpZGVQYW5lbFRpdGxlIGNsYXNzTmFtZT1cImFpLWFzc2lzdGFudC1tYW5hZ2VyLXRpdGxlXCIgdGl0bGU9XCJBSSBBc3Npc3RhbnRcIj5cbiAgICAgICAgICAgICAgPEljb25zLlNldHRpbmdzIG9uQ2xpY2s9e29uQ29uZmlnQnV0dG9uQ2xpY2t9IC8+XG4gICAgICAgICAgICA8L1NpZGVQYW5lbFRpdGxlPlxuICAgICAgICAgIDwvU3R5bGVkQWlBc3Npc3RhbnRQYW5lbEhlYWRlcj5cblxuICAgICAgICAgIDxTdHlsZWRBaUFzc2lzdGFudFBhbmVsQ29udGVudD5cbiAgICAgICAgICAgIHshYWlBc3Npc3RhbnQ/LmNvbmZpZy5pc1JlYWR5ID8gPEFpQXNzaXN0YW50Q29uZmlnIC8+IDogPEFpQXNzaXN0YW50Q29tcG9uZW50IC8+fVxuICAgICAgICAgIDwvU3R5bGVkQWlBc3Npc3RhbnRQYW5lbENvbnRlbnQ+XG4gICAgICAgIDwvU3R5bGVkQWlBc3Npc3RhbnRQYW5lbD5cbiAgICAgIDwvU3R5bGVkQWlBc3Npc3RhbnRQYW5lbENvbnRhaW5lcj5cbiAgICA8L0ludGxQcm92aWRlcj5cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlC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
;