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
JavaScript
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
;