UNPKG

kepler.gl

Version:

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

155 lines (123 loc) 16.6 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireDefault(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _d3Shape = require("d3-shape"); var _styledComponents2 = require("../../components/common/styled-components"); var _reactIntl = require("react-intl"); function _templateObject4() { var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: flex-start;\n flex-wrap: wrap;\n"]); _templateObject4 = function _templateObject4() { return data; }; return data; } function _templateObject3() { var data = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 20px;\n letter-spacing: 1.25px;\n margin: 18px 0 14px 0;\n color: ", ";\n"]); _templateObject3 = function _templateObject3() { return data; }; return data; } function _templateObject2() { var data = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n"]); _templateObject2 = function _templateObject2() { return data; }; return data; } function _templateObject() { var data = (0, _taggedTemplateLiteral2["default"])(["\n padding-left: 6px;\n width: 180px;\n height: 48px;\n margin-right: 12px;\n\n .icon-table_item__name {\n margin-left: 12px;\n }\n"]); _templateObject = function _templateObject() { return data; }; return data; } var lineFunction = (0, _d3Shape.line)().x(function (d) { return d[0] * 10; }).y(function (d) { return d[1] * 10; }); var IconShape = function IconShape(_ref) { var mesh = _ref.mesh; return _react["default"].createElement("svg", { width: "20px", height: "20px" }, _react["default"].createElement("g", { transform: "translate(10, 10)" }, mesh.cells.map(function (cell, i) { return _react["default"].createElement("path", { key: i, fill: "#000000", d: lineFunction(cell.map(function (idx) { return mesh.positions[idx]; })) }); }))); }; var StyledIconItem = (0, _styledComponents["default"])(_styledComponents2.CenterFlexbox)(_templateObject()); var StyledCode = _styledComponents["default"].code(_templateObject2(), function (props) { return props.theme.titleColorLT; }); var StyledTitle = _styledComponents["default"].div(_templateObject3(), function (props) { return props.theme.titleColorLT; }); var IconItem = function IconItem(_ref2) { var _ref2$icon = _ref2.icon, id = _ref2$icon.id, mesh = _ref2$icon.mesh; return _react["default"].createElement(StyledIconItem, { className: "icon-table__item" }, _react["default"].createElement(IconShape, { className: "icon-table__item__shape", mesh: mesh }), _react["default"].createElement("div", { className: "icon-table_item__name" }, _react["default"].createElement(StyledCode, null, id))); }; var ExampleTable = function ExampleTable() { return _react["default"].createElement(_styledComponents2.Table, { className: "icon-example-table" }, _react["default"].createElement("thead", null, _react["default"].createElement("tr", null, _react["default"].createElement("th", null, "point_lat"), _react["default"].createElement("th", null, "point_lng"), _react["default"].createElement("th", null, "icon"))), _react["default"].createElement("tbody", null, _react["default"].createElement("tr", null, _react["default"].createElement("td", null, "37.769897"), _react["default"].createElement("td", null, "-122.41168"), _react["default"].createElement("td", null, _react["default"].createElement(StyledCode, null, "android"))), _react["default"].createElement("tr", null, _react["default"].createElement("td", null, "37.806928"), _react["default"].createElement("td", null, "-122.40218"), _react["default"].createElement("td", null)), _react["default"].createElement("tr", null, _react["default"].createElement("td", null, "37.778564"), _react["default"].createElement("td", null, "-122.39096"), _react["default"].createElement("td", null, _react["default"].createElement(StyledCode, null, "calendar"))), _react["default"].createElement("tr", null, _react["default"].createElement("td", null, "37.745995"), _react["default"].createElement("td", null, "-122.30220"), _react["default"].createElement("td", null)), _react["default"].createElement("tr", null, _react["default"].createElement("td", null, "37.329841"), _react["default"].createElement("td", null, "-122.103847"), _react["default"].createElement("td", null, _react["default"].createElement(StyledCode, null, "control-off"))))); }; var IconTable = _styledComponents["default"].div(_templateObject4()); var IconInfoModalFactory = function IconInfoModalFactory() { var svgIcons = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var IconInfoModal = function IconInfoModal() { return _react["default"].createElement("div", { className: "icon-info-modal" }, _react["default"].createElement("div", { className: "icon-info-modal__description" }, _react["default"].createElement(_reactIntl.FormattedMessage, { id: 'modal.iconInfo.description1' }), ' ', _react["default"].createElement("code", null, _react["default"].createElement(_reactIntl.FormattedMessage, { id: 'modal.iconInfo.code' })), _react["default"].createElement(_reactIntl.FormattedMessage, { id: 'modal.iconInfo.description2' })), _react["default"].createElement("div", { className: "icon-info-modal__example" }, _react["default"].createElement(StyledTitle, null, _react["default"].createElement(_reactIntl.FormattedMessage, { id: 'modal.iconInfo.example' })), _react["default"].createElement(ExampleTable, null)), _react["default"].createElement("div", { className: "icon-info-modal__icons" }, _react["default"].createElement(StyledTitle, null, _react["default"].createElement(_reactIntl.FormattedMessage, { id: 'modal.iconInfo.icons' })), _react["default"].createElement(IconTable, { className: "icon-info-modal__icons__table" }, svgIcons.map(function (icon) { return _react["default"].createElement(IconItem, { key: icon.id, icon: icon }); })))); }; return IconInfoModal; }; var _default = IconInfoModalFactory; exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvaWNvbi1sYXllci9pY29uLWluZm8tbW9kYWwuanMiXSwibmFtZXMiOlsibGluZUZ1bmN0aW9uIiwieCIsImQiLCJ5IiwiSWNvblNoYXBlIiwibWVzaCIsImNlbGxzIiwibWFwIiwiY2VsbCIsImkiLCJpZHgiLCJwb3NpdGlvbnMiLCJTdHlsZWRJY29uSXRlbSIsIkNlbnRlckZsZXhib3giLCJTdHlsZWRDb2RlIiwic3R5bGVkIiwiY29kZSIsInByb3BzIiwidGhlbWUiLCJ0aXRsZUNvbG9yTFQiLCJTdHlsZWRUaXRsZSIsImRpdiIsIkljb25JdGVtIiwiaWNvbiIsImlkIiwiRXhhbXBsZVRhYmxlIiwiSWNvblRhYmxlIiwiSWNvbkluZm9Nb2RhbEZhY3RvcnkiLCJzdmdJY29ucyIsIkljb25JbmZvTW9kYWwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxZQUFZLEdBQUcscUJBQ2xCQyxDQURrQixDQUNoQixVQUFBQyxDQUFDO0FBQUEsU0FBSUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFPLEVBQVg7QUFBQSxDQURlLEVBRWxCQyxDQUZrQixDQUVoQixVQUFBRCxDQUFDO0FBQUEsU0FBSUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFPLEVBQVg7QUFBQSxDQUZlLENBQXJCOztBQUlBLElBQU1FLFNBQVMsR0FBRyxTQUFaQSxTQUFZO0FBQUEsTUFBRUMsSUFBRixRQUFFQSxJQUFGO0FBQUEsU0FDaEI7QUFBSyxJQUFBLEtBQUssRUFBQyxNQUFYO0FBQWtCLElBQUEsTUFBTSxFQUFDO0FBQXpCLEtBQ0U7QUFBRyxJQUFBLFNBQVMsRUFBQztBQUFiLEtBQ0dBLElBQUksQ0FBQ0MsS0FBTCxDQUFXQyxHQUFYLENBQWUsVUFBQ0MsSUFBRCxFQUFPQyxDQUFQO0FBQUEsV0FDZDtBQUFN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LGdDQUFDLFdBQUQsUUFBYSxnQ0FBQywyQkFBRDtBQUFrQixNQUFBLEVBQUUsRUFBRTtBQUF0QixNQUFiLENBREYsRUFFRSxnQ0FBQyxTQUFEO0FBQVcsTUFBQSxTQUFTLEVBQUM7QUFBckIsT0FDR0QsUUFBUSxDQUFDckIsR0FBVCxDQUFhLFVBQUFnQixJQUFJO0FBQUEsYUFDaEIsZ0NBQUMsUUFBRDtBQUFVLFFBQUEsR0FBRyxFQUFFQSxJQUFJLENBQUNDLEVBQXBCO0FBQXdCLFFBQUEsSUFBSSxFQUFFRDtBQUE5QixRQURnQjtBQUFBLEtBQWpCLENBREgsQ0FGRixDQVZGLENBRG9CO0FBQUEsR0FBdEI7O0FBc0JBLFNBQU9NLGFBQVA7QUFDRCxDQXhCRDs7ZUEwQmVGLG9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIwIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtsaW5lfSBmcm9tICdkMy1zaGFwZSc7XG5pbXBvcnQge1RhYmxlLCBDZW50ZXJGbGV4Ym94fSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBGb3JtYXR0ZWRNZXNzYWdlIH0gZnJvbSBcInJlYWN0LWludGxcIjtcblxuY29uc3QgbGluZUZ1bmN0aW9uID0gbGluZSgpXG4gIC54KGQgPT4gZFswXSAqIDEwKVxuICAueShkID0+IGRbMV0gKiAxMCk7XG5cbmNvbnN0IEljb25TaGFwZSA9ICh7bWVzaH0pID0+IChcbiAgPHN2ZyB3aWR0aD1cIjIwcHhcIiBoZWlnaHQ9XCIyMHB4XCI+XG4gICAgPGcgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDEwLCAxMClcIj5cbiAgICAgIHttZXNoLmNlbGxzLm1hcCgoY2VsbCwgaSkgPT4gKFxuICAgICAgICA8cGF0aCBrZXk9e2l9IGZpbGw9XCIjMDAwMDAwXCIgZD17bGluZUZ1bmN0aW9uKGNlbGwubWFwKGlkeCA9PiBtZXNoLnBvc2l0aW9uc1tpZHhdKSl9IC8+XG4gICAgICApKX1cbiAgICA8L2c+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgU3R5bGVkSWNvbkl0ZW0gPSBzdHlsZWQoQ2VudGVyRmxleGJveClgXG4gIHBhZGRpbmctbGVmdDogNnB4O1xuICB3aWR0aDogMTgwcHg7XG4gIGhlaWdodDogNDhweDtcbiAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuXG4gIC5pY29uLXRhYmxlX2l0ZW1fX25hbWUge1xuICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRDb2RlID0gc3R5bGVkLmNvZGVgXG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRpdGxlQ29sb3JMVH07XG5gO1xuXG5jb25zdCBTdHlsZWRUaXRsZSA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDEuMjVweDtcbiAgbWFyZ2luOiAxOHB4IDAgMTRweCAwO1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50aXRsZUNvbG9yTFR9O1xuYDtcblxuY29uc3QgSWNvbkl0ZW0gPSAoe2ljb246IHtpZCwgbWVzaH19KSA9PiAoXG4gIDxTdHlsZWRJY29uSXRlbSBjbGFzc05hbWU9XCJpY29uLXRhYmxlX19pdGVtXCI+XG4gICAgPEljb25TaGFwZSBjbGFzc05hbWU9XCJpY29uLXRhYmxlX19pdGVtX19zaGFwZVwiIG1lc2g9e21lc2h9IC8+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJpY29uLXRhYmxlX2l0ZW1fX25hbWVcIj5cbiAgICAgIDxTdHlsZWRDb2RlPntpZH08L1N0eWxlZENvZGU+XG4gICAgPC9kaXY+XG4gIDwvU3R5bGVkSWNvbkl0ZW0+XG4pO1xuXG5jb25zdCBFeGFtcGxlVGFibGUgPSAoKSA9PiAoXG4gIDxUYWJsZSBjbGFzc05hbWU9XCJpY29uLWV4YW1wbGUtdGFibGVcIj5cbiAgICA8dGhlYWQ+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aD5wb2ludF9sYXQ8L3RoPlxuICAgICAgICA8dGg+cG9pbnRfbG5nPC90aD5cbiAgICAgICAgPHRoPmljb248L3RoPlxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRkPjM3Ljc2OTg5NzwvdGQ+XG4gICAgICAgIDx0ZD4tMTIyLjQxMTY4PC90ZD5cbiAgICAgICAgPHRkPlxuICAgICAgICAgIDxTdHlsZWRDb2RlPmFuZHJvaWQ8L1N0eWxlZENvZGU+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPHRyPlxuICAgICAgICA8dGQ+MzcuODA2OTI4PC90ZD5cbiAgICAgICAgPHRkPi0xMjIuNDAyMTg8L3RkPlxuICAgICAgICA8dGQgLz5cbiAgICAgIDwvdHI+XG4gICAgICA8dHI+XG4gICAgICAgIDx0ZD4zNy43Nzg1NjQ8L3RkPlxuICAgICAgICA8dGQ+LTEyMi4zOTA5NjwvdGQ+XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICA8U3R5bGVkQ29kZT5jYWxlbmRhcjwvU3R5bGVkQ29kZT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHI+XG4gICAgICAgIDx0ZD4zNy43NDU5OTU8L3RkPlxuICAgICAgICA8dGQ+LTEyMi4zMDIyMDwvdGQ+XG4gICAgICAgIDx0ZCAvPlxuICAgICAgPC90cj5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRkPjM3LjMyOTg0MTwvdGQ+XG4gICAgICAgIDx0ZD4tMTIyLjEwMzg0NzwvdGQ+XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICA8U3R5bGVkQ29kZT5jb250cm9sLW9mZjwvU3R5bGVkQ29kZT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cbiAgPC9UYWJsZT5cbik7XG5cbmNvbnN0IEljb25UYWJsZSA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBmbGV4LXdyYXA6IHdyYXA7XG5gO1xuXG5jb25zdCBJY29uSW5mb01vZGFsRmFjdG9yeSA9IChzdmdJY29ucyA9IFtdKSA9PiB7XG4gIGNvbnN0IEljb25JbmZvTW9kYWwgPSAoKSA9PiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJpY29uLWluZm8tbW9kYWxcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaWNvbi1pbmZvLW1vZGFsX19kZXNjcmlwdGlvblwiPlxuICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLmljb25JbmZvLmRlc2NyaXB0aW9uMSd9IC8+eycgJ31cbiAgICAgICAgPGNvZGU+PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydtb2RhbC5pY29uSW5mby5jb2RlJ30gLz48L2NvZGU+XG4gICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPXsnbW9kYWwuaWNvbkluZm8uZGVzY3JpcHRpb24yJ30vPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImljb24taW5mby1tb2RhbF9fZXhhbXBsZVwiPlxuICAgICAgICA8U3R5bGVkVGl0bGU+PEZvcm1hdHRlZE1lc3NhZ2UgaWQ9eydtb2RhbC5pY29uSW5mby5leGFtcGxlJ30vPjwvU3R5bGVkVGl0bGU+XG4gICAgICAgIDxFeGFtcGxlVGFibGUgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJpY29uLWluZm8tbW9kYWxfX2ljb25zXCI+XG4gICAgICAgIDxTdHlsZWRUaXRsZT48Rm9ybWF0dGVkTWVzc2FnZSBpZD17J21vZGFsLmljb25JbmZvLmljb25zJ30vPjwvU3R5bGVkVGl0bGU+XG4gICAgICAgIDxJY29uVGFibGUgY2xhc3NOYW1lPVwiaWNvbi1pbmZvLW1vZGFsX19pY29uc19fdGFibGVcIj5cbiAgICAgICAgICB7c3ZnSWNvbnMubWFwKGljb24gPT4gKFxuICAgICAgICAgICAgPEljb25JdGVtIGtleT17aWNvbi5pZH0gaWNvbj17aWNvbn0gLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JY29uVGFibGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcblxuICByZXR1cm4gSWNvbkluZm9Nb2RhbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEljb25JbmZvTW9kYWxGYWN0b3J5O1xuIl19