UNPKG

kepler.gl

Version:

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

91 lines (89 loc) 15.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.DatasetNode = exports.ColumnNode = void 0; exports.Tree = Tree; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _reactCollapsible = require("@radix-ui/react-collapsible"); var _styledComponents = _interopRequireDefault(require("styled-components")); var _react = _interopRequireWildcard(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _components = require("@kepler.gl/components"); 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; } // TODO: consider using react-vtree/react-window for virtualization /** * Component that renders a generic tree. * @param treeData - The tree data. * @param renderNode - A function that renders a tree node. */ function Tree(props) { var treeData = props.treeData, renderNode = props.renderNode; return /*#__PURE__*/_react["default"].createElement("div", { className: "flex flex-col" }, /*#__PURE__*/_react["default"].createElement(TreeNode, { treeData: treeData, renderNode: renderNode })); } var StyledCollapsibleTriggerContent = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n width: 100%;\n cursor: pointer;\n align-items: center;\n"]))); /** * Component that renders a tree node. */ function TreeNode(props) { var treeData = props.treeData, renderNode = props.renderNode; var children = treeData.children; var _useState = (0, _react.useState)(Boolean(treeData.isOpen)), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), isOpen = _useState2[0], setIsOpen = _useState2[1]; (0, _react.useEffect)(function () { setIsOpen(Boolean(treeData.isOpen)); }, [treeData.isOpen]); if (!children) { return renderNode(treeData, isOpen); } return /*#__PURE__*/_react["default"].createElement(_reactCollapsible.Collapsible, { open: isOpen, onOpenChange: setIsOpen }, /*#__PURE__*/_react["default"].createElement(_reactCollapsible.CollapsibleTrigger, { className: "w-full", asChild: true }, /*#__PURE__*/_react["default"].createElement(StyledCollapsibleTriggerContent, null, /*#__PURE__*/_react["default"].createElement(_components.Icons.ArrowRight, { className: (0, _classnames["default"])('flex-shrink-0 text-gray-500', { 'rotate-90 transform': isOpen }), height: "18px" }), renderNode(treeData, isOpen))), /*#__PURE__*/_react["default"].createElement(_reactCollapsible.CollapsibleContent, { className: "pl-4" }, isOpen ? children.map(function (child) { return /*#__PURE__*/_react["default"].createElement(TreeNode, { key: child.key, treeData: child, renderNode: renderNode }); }) : null)); } var StyledDatasetNode = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n font-weight: bold;\n"]))); var DatasetNode = exports.DatasetNode = function DatasetNode(_ref) { var node = _ref.node; return /*#__PURE__*/_react["default"].createElement(StyledDatasetNode, null, node.object.tableName); }; var StyledColumnNode = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n padding: 4px 0;\n margin-left: 16px;\n\n .column-name {\n margin-left: 8px;\n }\n"]))); var ColumnNode = exports.ColumnNode = function ColumnNode(_ref2) { var node = _ref2.node; return /*#__PURE__*/_react["default"].createElement(StyledColumnNode, null, /*#__PURE__*/_react["default"].createElement(_components.FieldToken, { type: node.object.fieldType }), /*#__PURE__*/_react["default"].createElement("div", { className: "column-name" }, node.object.name)); }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3RDb2xsYXBzaWJsZSIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9jbGFzc25hbWVzIiwiX2NvbXBvbmVudHMiLCJfdGVtcGxhdGVPYmplY3QiLCJfdGVtcGxhdGVPYmplY3QyIiwiX3RlbXBsYXRlT2JqZWN0MyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlRyZWUiLCJwcm9wcyIsInRyZWVEYXRhIiwicmVuZGVyTm9kZSIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJUcmVlTm9kZSIsIlN0eWxlZENvbGxhcHNpYmxlVHJpZ2dlckNvbnRlbnQiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsImNoaWxkcmVuIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJCb29sZWFuIiwiaXNPcGVuIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNldElzT3BlbiIsInVzZUVmZmVjdCIsIkNvbGxhcHNpYmxlIiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsIkNvbGxhcHNpYmxlVHJpZ2dlciIsImFzQ2hpbGQiLCJJY29ucyIsIkFycm93UmlnaHQiLCJjbGFzc05hbWVzIiwiaGVpZ2h0IiwiQ29sbGFwc2libGVDb250ZW50IiwibWFwIiwiY2hpbGQiLCJrZXkiLCJTdHlsZWREYXRhc2V0Tm9kZSIsIkRhdGFzZXROb2RlIiwiZXhwb3J0cyIsIl9yZWYiLCJub2RlIiwib2JqZWN0IiwidGFibGVOYW1lIiwiU3R5bGVkQ29sdW1uTm9kZSIsIkNvbHVtbk5vZGUiLCJfcmVmMiIsIkZpZWxkVG9rZW4iLCJ0eXBlIiwiZmllbGRUeXBlIiwibmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3RyZWUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7Q29sbGFwc2libGUsIENvbGxhcHNpYmxlVHJpZ2dlciwgQ29sbGFwc2libGVDb250ZW50fSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29sbGFwc2libGUnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcblxuaW1wb3J0IHtJY29ucywgRmllbGRUb2tlbn0gZnJvbSAnQGtlcGxlci5nbC9jb21wb25lbnRzJztcblxuZXhwb3J0IHR5cGUgVHJlZU5vZGVEYXRhPFQ+ID0ge1xuICBrZXk6IHN0cmluZztcbiAgb2JqZWN0OiBUO1xuICBjaGlsZHJlbj86IFRyZWVOb2RlRGF0YTxUPltdO1xuICBpc09wZW4/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgVHJlZVByb3BzPFQ+ID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHRyZWVEYXRhOiBUcmVlTm9kZURhdGE8VD47XG4gIHJlbmRlck5vZGU6IFRyZWVOb2RlUHJvcHM8VD5bJ3JlbmRlck5vZGUnXTtcbn07XG5cbi8vIFRPRE86IGNvbnNpZGVyIHVzaW5nIHJlYWN0LXZ0cmVlL3JlYWN0LXdpbmRvdyBmb3IgdmlydHVhbGl6YXRpb25cblxuLyoqXG4gKiBDb21wb25lbnQgdGhhdCByZW5kZXJzIGEgZ2VuZXJpYyB0cmVlLlxuICogQHBhcmFtIHRyZWVEYXRhIC0gVGhlIHRyZWUgZGF0YS5cbiAqIEBwYXJhbSByZW5kZXJOb2RlIC0gQSBmdW5jdGlvbiB0aGF0IHJlbmRlcnMgYSB0cmVlIG5vZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBUcmVlPFQ+KHByb3BzOiBUcmVlUHJvcHM8VD4pOiBSZWFjdC5SZWFjdEVsZW1lbnQge1xuICBjb25zdCB7dHJlZURhdGEsIHJlbmRlck5vZGV9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICA8VHJlZU5vZGU8VD4gdHJlZURhdGE9e3RyZWVEYXRhfSByZW5kZXJOb2RlPXtyZW5kZXJOb2RlfSAvPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgdHlwZSBUcmVlTm9kZVByb3BzPFQ+ID0ge1xuICB0cmVlRGF0YTogVHJlZU5vZGVEYXRhPFQ+O1xuICByZW5kZXJOb2RlOiAobm9kZTogVHJlZU5vZGVEYXRhPFQ+LCBpc09wZW46IGJvb2xlYW4pID0+IEpTWC5FbGVtZW50IHwgbnVsbDtcbn07XG5cbmNvbnN0IFN0eWxlZENvbGxhcHNpYmxlVHJpZ2dlckNvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMTAwJTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcbi8qKlxuICogQ29tcG9uZW50IHRoYXQgcmVuZGVycyBhIHRyZWUgbm9kZS5cbiAqL1xuZnVuY3Rpb24gVHJlZU5vZGU8VD4ocHJvcHM6IFRyZWVOb2RlUHJvcHM8VD4pOiBKU1guRWxlbWVudCB8IG51bGwge1xuICBjb25zdCB7dHJlZURhdGEsIHJlbmRlck5vZGV9ID0gcHJvcHM7XG4gIGNvbnN0IHtjaGlsZHJlbn0gPSB0cmVlRGF0YTtcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKEJvb2xlYW4odHJlZURhdGEuaXNPcGVuKSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNPcGVuKEJvb2xlYW4odHJlZURhdGEuaXNPcGVuKSk7XG4gIH0sIFt0cmVlRGF0YS5pc09wZW5dKTtcbiAgaWYgKCFjaGlsZHJlbikge1xuICAgIHJldHVybiByZW5kZXJOb2RlKHRyZWVEYXRhLCBpc09wZW4pO1xuICB9XG4gIHJldHVybiAoXG4gICAgPENvbGxhcHNpYmxlIG9wZW49e2lzT3Blbn0gb25PcGVuQ2hhbmdlPXtzZXRJc09wZW59PlxuICAgICAgPENvbGxhcHNpYmxlVHJpZ2dlciBjbGFzc05hbWU9XCJ3LWZ1bGxcIiBhc0NoaWxkPlxuICAgICAgICA8U3R5bGVkQ29sbGFwc2libGVUcmlnZ2VyQ29udGVudD5cbiAgICAgICAgICA8SWNvbnMuQXJyb3dSaWdodFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCdmbGV4LXNocmluay0wIHRleHQtZ3JheS01MDAnLCB7J3JvdGF0ZS05MCB0cmFuc2Zvcm0nOiBpc09wZW59KX1cbiAgICAgICAgICAgIGhlaWdodD1cIjE4cHhcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAge3JlbmRlck5vZGUodHJlZURhdGEsIGlzT3Blbil9XG4gICAgICAgIDwvU3R5bGVkQ29sbGFwc2libGVUcmlnZ2VyQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2libGVUcmlnZ2VyPlxuICAgICAgPENvbGxhcHNpYmxlQ29udGVudCBjbGFzc05hbWU9XCJwbC00XCI+XG4gICAgICAgIHtpc09wZW5cbiAgICAgICAgICA/IGNoaWxkcmVuLm1hcChjaGlsZCA9PiAoXG4gICAgICAgICAgICAgIDxUcmVlTm9kZTxUPiBrZXk9e2NoaWxkLmtleX0gdHJlZURhdGE9e2NoaWxkfSByZW5kZXJOb2RlPXtyZW5kZXJOb2RlfSAvPlxuICAgICAgICAgICAgKSlcbiAgICAgICAgICA6IG51bGx9XG4gICAgICA8L0NvbGxhcHNpYmxlQ29udGVudD5cbiAgICA8L0NvbGxhcHNpYmxlPlxuICApO1xufVxuXG5jb25zdCBTdHlsZWREYXRhc2V0Tm9kZSA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuYDtcblxuZXhwb3J0IGNvbnN0IERhdGFzZXROb2RlID0gKHtub2RlfSkgPT4ge1xuICByZXR1cm4gPFN0eWxlZERhdGFzZXROb2RlPntub2RlLm9iamVjdC50YWJsZU5hbWV9PC9TdHlsZWREYXRhc2V0Tm9kZT47XG59O1xuXG5jb25zdCBTdHlsZWRDb2x1bW5Ob2RlID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogNHB4IDA7XG4gIG1hcmdpbi1sZWZ0OiAxNnB4O1xuXG4gIC5jb2x1bW4tbmFtZSB7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgfVxuYDtcbmV4cG9ydCBjb25zdCBDb2x1bW5Ob2RlID0gKHtub2RlfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRDb2x1bW5Ob2RlPlxuICAgICAgPEZpZWxkVG9rZW4gdHlwZT17bm9kZS5vYmplY3QuZmllbGRUeXBlfSAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2x1bW4tbmFtZVwiPntub2RlLm9iamVjdC5uYW1lfTwvZGl2PlxuICAgIDwvU3R5bGVkQ29sdW1uTm9kZT5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsaUJBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBTSxXQUFBLEdBQUFOLE9BQUE7QUFBd0QsSUFBQU8sZUFBQSxFQUFBQyxnQkFBQSxFQUFBQyxnQkFBQSxFQVJ4RDtBQUNBO0FBQUEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFB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