UNPKG

kepler.gl

Version:

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

98 lines (97 loc) 18.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireDefault(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _moment = _interopRequireDefault(require("moment")); var _icons = require("../common/icons"); var _localization = require("@kepler.gl/localization"); var _templateObject, _templateObject2, _templateObject3, _templateObject4; // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } var imageH = 108; var StyledAssetGallery = _styledComponents["default"].div.attrs({ className: 'storage-asset-gallery' })(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: flex-start;\n flex-wrap: wrap;\n"]))); var StyledAssetItem = _styledComponents["default"].div.attrs({ className: 'asset__item' })(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n width: 23%;\n margin-right: 2%;\n max-width: 500px;\n margin-bottom: 40px;\n height: 245px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n\n :last {\n margin-right: 0;\n }\n\n .asset__title {\n font-size: 12px;\n font-weight: 500;\n color: ", ";\n line-height: 18px;\n height: 32px;\n }\n\n .asset__image {\n border-radius: 4px;\n overflow: hidden;\n margin-bottom: 12px;\n opacity: 0.9;\n transition: opacity 0.4s ease;\n position: relative;\n line-height: 0;\n height: ", "px;\n flex-shrink: 0;\n\n img {\n max-width: 100%;\n }\n &:hover {\n cursor: pointer;\n opacity: 1;\n }\n }\n\n .asset__image__caption {\n font-size: 11px;\n font-weight: 400;\n line-height: 16px;\n margin-top: 10px;\n height: 48px;\n overflow: hidden;\n display: -webkit-box;\n text-overflow: ellipsis;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n }\n\n .asset__last-updated {\n font-size: 11px;\n color: ", ";\n }\n"])), function (props) { return props.theme.textColorLT; }, imageH, function (props) { return props.theme.textColorLT; }); var BackLink = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n font-size: 14px;\n align-items: center;\n color: ", ";\n cursor: pointer;\n margin-bottom: 40px;\n\n &:hover {\n font-weight: 500;\n }\n\n span {\n white-space: nowrap;\n }\n svg {\n margin-right: 10px;\n }\n"])), function (props) { return props.theme.titleColorLT; }); var StyledError = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: red;\n font-size: 14px;\n margin-bottom: 16px;\n"]))); var getDuration = function getDuration() { var last = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; return _moment["default"].duration(new Date().valueOf() - last).humanize(); }; var AssetItem = function AssetItem(_ref) { var asset = _ref.asset, onClick = _ref.onClick; return /*#__PURE__*/_react["default"].createElement(StyledAssetItem, null, /*#__PURE__*/_react["default"].createElement("div", { className: "asset__image", onClick: onClick }, asset.imageUrl && /*#__PURE__*/_react["default"].createElement("img", { src: asset.imageUrl })), /*#__PURE__*/_react["default"].createElement("div", { className: "asset__title" }, asset.label || asset.title), /*#__PURE__*/_react["default"].createElement("div", { className: "asset__image__caption" }, asset.description), asset.lastUpdated ? /*#__PURE__*/_react["default"].createElement("div", { className: "asset__last-updated" }, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, { id: 'modal.storageMapViewer.lastModified', values: { lastUpdated: getDuration(asset.lastUpdated) } })) : null); }; var StorageAssetsViewer = /*#__PURE__*/function (_React$Component) { function StorageAssetsViewer() { (0, _classCallCheck2["default"])(this, StorageAssetsViewer); return _callSuper(this, StorageAssetsViewer, arguments); } (0, _inherits2["default"])(StorageAssetsViewer, _React$Component); return (0, _createClass2["default"])(StorageAssetsViewer, [{ key: "render", value: function render() { var _this$props = this.props, assets = _this$props.assets, onLoadAsset = _this$props.onLoadAsset, back = _this$props.back, error = _this$props.error; return /*#__PURE__*/_react["default"].createElement("div", { className: "storage-asset-viewer" }, /*#__PURE__*/_react["default"].createElement(BackLink, { onClick: back }, /*#__PURE__*/_react["default"].createElement(_icons.LeftArrow, { height: "12px" }), /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_localization.FormattedMessage, { id: 'modal.storageMapViewer.back' }))), error && /*#__PURE__*/_react["default"].createElement(StyledError, null, error.message), /*#__PURE__*/_react["default"].createElement(StyledAssetGallery, null, assets.map(function (sp) { return /*#__PURE__*/_react["default"].createElement(AssetItem, { asset: sp, key: sp.id, onClick: function onClick() { return onLoadAsset(sp); } }); }))); } }]); }(_react["default"].Component); var _default = exports["default"] = StorageAssetsViewer; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZWRDb21wb25lbnRzIiwiX21vbWVudCIsIl9pY29ucyIsIl9sb2NhbGl6YXRpb24iLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl90ZW1wbGF0ZU9iamVjdDQiLCJfY2FsbFN1cGVyIiwidCIsIm8iLCJlIiwiX2dldFByb3RvdHlwZU9mMiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuMiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiY29uc3RydWN0b3IiLCJhcHBseSIsIkJvb2xlYW4iLCJwcm90b3R5cGUiLCJ2YWx1ZU9mIiwiY2FsbCIsImltYWdlSCIsIlN0eWxlZEFzc2V0R2FsbGVyeSIsInN0eWxlZCIsImRpdiIsImF0dHJzIiwiY2xhc3NOYW1lIiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJTdHlsZWRBc3NldEl0ZW0iLCJwcm9wcyIsInRoZW1lIiwidGV4dENvbG9yTFQiLCJCYWNrTGluayIsInRpdGxlQ29sb3JMVCIsIlN0eWxlZEVycm9yIiwiZ2V0RHVyYXRpb24iLCJsYXN0IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwibW9tZW50IiwiZHVyYXRpb24iLCJEYXRlIiwiaHVtYW5pemUiLCJBc3NldEl0ZW0iLCJfcmVmIiwiYXNzZXQiLCJvbkNsaWNrIiwiY3JlYXRlRWxlbWVudCIsImltYWdlVXJsIiwic3JjIiwibGFiZWwiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwibGFzdFVwZGF0ZWQiLCJGb3JtYXR0ZWRNZXNzYWdlIiwiaWQiLCJ2YWx1ZXMiLCJTdG9yYWdlQXNzZXRzVmlld2VyIiwiX1JlYWN0JENvbXBvbmVudCIsIl9jbGFzc0NhbGxDaGVjazIiLCJfaW5oZXJpdHMyIiwiX2NyZWF0ZUNsYXNzMiIsImtleSIsInZhbHVlIiwicmVuZGVyIiwiX3RoaXMkcHJvcHMiLCJhc3NldHMiLCJvbkxvYWRBc3NldCIsImJhY2siLCJlcnJvciIsIkxlZnRBcnJvdyIsImhlaWdodCIsIm1lc3NhZ2UiLCJtYXAiLCJzcCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGFscy9zdG9yYWdlLW1hcC12aWV3ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7TGVmdEFycm93fSBmcm9tICcuLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdAa2VwbGVyLmdsL2xvY2FsaXphdGlvbic7XG5cbmNvbnN0IGltYWdlSCA9IDEwODtcblxuY29uc3QgU3R5bGVkQXNzZXRHYWxsZXJ5ID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ3N0b3JhZ2UtYXNzZXQtZ2FsbGVyeSdcbn0pYFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIGZsZXgtd3JhcDogd3JhcDtcbmA7XG5cbmNvbnN0IFN0eWxlZEFzc2V0SXRlbSA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdhc3NldF9faXRlbSdcbn0pYFxuICB3aWR0aDogMjMlO1xuICBtYXJnaW4tcmlnaHQ6IDIlO1xuICBtYXgtd2lkdGg6IDUwMHB4O1xuICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICBoZWlnaHQ6IDI0NXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgOmxhc3Qge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxuXG4gIC5hc3NldF9fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvckxUfTtcbiAgICBsaW5lLWhlaWdodDogMThweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gIH1cblxuICAuYXNzZXRfX2ltYWdlIHtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgIG9wYWNpdHk6IDAuOTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNHMgZWFzZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgaGVpZ2h0OiAke2ltYWdlSH1weDtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgIGltZyB7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuICAgICY6aG92ZXIge1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICAuYXNzZXRfX2ltYWdlX19jYXB0aW9uIHtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICB9XG5cbiAgLmFzc2V0X19sYXN0LXVwZGF0ZWQge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3JMVH07XG4gIH1cbmA7XG5cbmNvbnN0IEJhY2tMaW5rID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50aXRsZUNvbG9yTFR9O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDQwcHg7XG5cbiAgJjpob3ZlciB7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgfVxuXG4gIHNwYW4ge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIH1cbiAgc3ZnIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZEVycm9yID0gc3R5bGVkLmRpdmBcbiAgY29sb3I6IHJlZDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuYDtcblxuY29uc3QgZ2V0RHVyYXRpb24gPSAobGFzdCA9IDApID0+IG1vbWVudC5kdXJhdGlvbihuZXcgRGF0ZSgpLnZhbHVlT2YoKSAtIGxhc3QpLmh1bWFuaXplKCk7XG5cbmludGVyZmFjZSBBc3NldCB7XG4gIGltYWdlVXJsPzogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBsYXN0VXBkYXRlZD86IG51bWJlcjtcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBBc3NldEl0ZW1Qcm9wcyB7XG4gIGFzc2V0OiBBc3NldDtcbiAgb25DbGljazogUmVhY3QuTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xufVxuXG5jb25zdCBBc3NldEl0ZW06IFJlYWN0LkZDPEFzc2V0SXRlbVByb3BzPiA9ICh7YXNzZXQsIG9uQ2xpY2t9KSA9PiAoXG4gIDxTdHlsZWRBc3NldEl0ZW0+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJhc3NldF9faW1hZ2VcIiBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgIHthc3NldC5pbWFnZVVybCAmJiA8aW1nIHNyYz17YXNzZXQuaW1hZ2VVcmx9IC8+fVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYXNzZXRfX3RpdGxlXCI+e2Fzc2V0LmxhYmVsIHx8IGFzc2V0LnRpdGxlfTwvZGl2PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYXNzZXRfX2ltYWdlX19jYXB0aW9uXCI+e2Fzc2V0LmRlc2NyaXB0aW9ufTwvZGl2PlxuICAgIHthc3NldC5sYXN0VXBkYXRlZCA/IChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXNzZXRfX2xhc3QtdXBkYXRlZFwiPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgIGlkPXsnbW9kYWwuc3RvcmFnZU1hcFZpZXdlci5sYXN0TW9kaWZpZWQnfVxuICAgICAgICAgIHZhbHVlcz17e2xhc3RVcGRhdGVkOiBnZXREdXJhdGlvbihhc3NldC5sYXN0VXBkYXRlZCl9fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKSA6IG51bGx9XG4gIDwvU3R5bGVkQXNzZXRJdGVtPlxuKTtcblxuaW50ZXJmYWNlIFN0b3JhZ2VBc3NldHNWaWV3ZXJQcm9wcyB7XG4gIGFzc2V0czogQXNzZXRbXTtcbiAgb25Mb2FkQXNzZXQ6IChhc3NldDogQXNzZXQpID0+IHZvaWQ7XG4gIGJhY2s/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG4gIGVycm9yPzoge21lc3NhZ2U/OiBzdHJpbmd9O1xufVxuXG5jbGFzcyBTdG9yYWdlQXNzZXRzVmlld2VyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFN0b3JhZ2VBc3NldHNWaWV3ZXJQcm9wcz4ge1xuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2Fzc2V0cywgb25Mb2FkQXNzZXQsIGJhY2ssIGVycm9yfSA9IHRoaXMucHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJzdG9yYWdlLWFzc2V0LXZpZXdlclwiPlxuICAgICAgICA8QmFja0xpbmsgb25DbGljaz17YmFja30+XG4gICAgICAgICAgPExlZnRBcnJvdyBoZWlnaHQ9XCIxMnB4XCIgLz5cbiAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbW9kYWwuc3RvcmFnZU1hcFZpZXdlci5iYWNrJ30gLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvQmFja0xpbms+XG4gICAgICAgIHtlcnJvciAmJiA8U3R5bGVkRXJyb3I+e2Vycm9yLm1lc3NhZ2V9PC9TdHlsZWRFcnJvcj59XG4gICAgICAgIDxTdHlsZWRBc3NldEdhbGxlcnk+XG4gICAgICAgICAge2Fzc2V0cy5tYXAoc3AgPT4gKFxuICAgICAgICAgICAgPEFzc2V0SXRlbSBhc3NldD17c3B9IGtleT17c3AuaWR9IG9uQ2xpY2s9eygpID0+IG9uTG9hZEFzc2V0KHNwKX0gLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TdHlsZWRBc3NldEdhbGxlcnk+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0b3JhZ2VBc3NldHNWaWV3ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksYUFBQSxHQUFBSixPQUFBO0FBQXlELElBQUFLLGVBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JBQUEsRUFBQUMsZ0JB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