UNPKG

kepler.gl

Version:

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

133 lines (132 loc) 16.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = useFetchVectorTileMetadata; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = require("react"); var _pmtiles = require("@loaders.gl/pmtiles"); var _constants = require("@kepler.gl/constants"); var _table = require("@kepler.gl/table"); 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; } // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project var DEFAULT_PROCESS_FUNCTION = function DEFAULT_PROCESS_FUNCTION(json) { return _objectSpread({ metaJson: null, bounds: null, center: null, maxZoom: null, minZoom: null, fields: [] }, json); }; /** Hook to fetch and return mvt or pmtiles metadata. */ function useFetchVectorTileMetadata(_ref) { var remoteTileFormat = _ref.remoteTileFormat, tilesetUrl = _ref.tilesetUrl, metadataUrl = _ref.metadataUrl, _ref$process = _ref.process, process = _ref$process === void 0 ? DEFAULT_PROCESS_FUNCTION : _ref$process; var _useState = (0, _react.useState)(null), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), error = _useState2[0], setError = _useState2[1]; var _useState3 = (0, _react.useState)(null), _useState4 = (0, _slicedToArray2["default"])(_useState3, 2), data = _useState4[0], setData = _useState4[1]; var _useState5 = (0, _react.useState)(false), _useState6 = (0, _slicedToArray2["default"])(_useState5, 2), loading = _useState6[0], setLoading = _useState6[1]; (0, _react.useEffect)(function () { var getAndProcessMetadata = /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() { var metadata, tileSource, processedMetadata; return _regenerator["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: setError(null); setData(null); if (!metadataUrl) { _context.next = 33; break; } setLoading(true); _context.prev = 4; metadata = null; if (!(remoteTileFormat === _constants.RemoteTileFormat.MVT)) { _context.next = 12; break; } _context.next = 9; return (0, _table.getMVTMetadata)(metadataUrl); case 9: metadata = _context.sent; _context.next = 16; break; case 12: tileSource = _pmtiles.PMTilesSource.createDataSource(metadataUrl, {}); _context.next = 15; return tileSource.metadata; case 15: metadata = _context.sent; case 16: if (metadata) { _context.next = 18; break; } throw new Error('Failed to fetch metadata'); case 18: processedMetadata = process(metadata); if (!(processedMetadata instanceof Error)) { _context.next = 23; break; } setError(processedMetadata); _context.next = 27; break; case 23: setError(null); _context.next = 26; return (0, _table.getFieldsFromTile)({ remoteTileFormat: remoteTileFormat, tilesetUrl: tilesetUrl, metadataUrl: metadataUrl, metadata: processedMetadata }); case 26: setData(processedMetadata); case 27: _context.next = 32; break; case 29: _context.prev = 29; _context.t0 = _context["catch"](4); setError(_context.t0); case 32: setLoading(false); case 33: case "end": return _context.stop(); } }, _callee, null, [[4, 29]]); })); return function getAndProcessMetadata() { return _ref2.apply(this, arguments); }; }(); getAndProcessMetadata(); }, [metadataUrl, tilesetUrl, remoteTileFormat, setError, setData, process]); return { data: data, loading: loading, error: error }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3BtdGlsZXMiLCJfY29uc3RhbnRzIiwiX3RhYmxlIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJERUZBVUxUX1BST0NFU1NfRlVOQ1RJT04iLCJqc29uIiwibWV0YUpzb24iLCJib3VuZHMiLCJjZW50ZXIiLCJtYXhab29tIiwibWluWm9vbSIsImZpZWxkcyIsInVzZUZldGNoVmVjdG9yVGlsZU1ldGFkYXRhIiwiX3JlZiIsInJlbW90ZVRpbGVGb3JtYXQiLCJ0aWxlc2V0VXJsIiwibWV0YWRhdGFVcmwiLCJfcmVmJHByb2Nlc3MiLCJwcm9jZXNzIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZXJyb3IiLCJzZXRFcnJvciIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwidXNlRWZmZWN0IiwiZ2V0QW5kUHJvY2Vzc01ldGFkYXRhIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIm1ldGFkYXRhIiwidGlsZVNvdXJjZSIsInByb2Nlc3NlZE1ldGFkYXRhIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIlJlbW90ZVRpbGVGb3JtYXQiLCJNVlQiLCJnZXRNVlRNZXRhZGF0YSIsInNlbnQiLCJQTVRpbGVzU291cmNlIiwiY3JlYXRlRGF0YVNvdXJjZSIsIkVycm9yIiwiZ2V0RmllbGRzRnJvbVRpbGUiLCJ0MCIsInN0b3AiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlLWZldGNoLXZlY3Rvci10aWxlLW1ldGFkYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge1RpbGVKU09OfSBmcm9tICdAbG9hZGVycy5nbC9tdnQnO1xuaW1wb3J0IHtQTVRpbGVzU291cmNlLCBQTVRpbGVzTWV0YWRhdGF9IGZyb20gJ0Bsb2FkZXJzLmdsL3BtdGlsZXMnO1xuXG5pbXBvcnQge1JlbW90ZVRpbGVGb3JtYXR9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcbmltcG9ydCB7Z2V0TVZUTWV0YWRhdGEsIFZlY3RvclRpbGVNZXRhZGF0YSwgZ2V0RmllbGRzRnJvbVRpbGV9IGZyb20gJ0BrZXBsZXIuZ2wvdGFibGUnO1xuXG50eXBlIEZldGNoVmVjdG9yVGlsZU1ldGFkYXRhUHJvcHMgPSB7XG4gIG1ldGFkYXRhVXJsOiBzdHJpbmcgfCBudWxsO1xuICB0aWxlc2V0VXJsOiBzdHJpbmcgfCBudWxsO1xuICByZW1vdGVUaWxlRm9ybWF0OiBSZW1vdGVUaWxlRm9ybWF0O1xuICBwcm9jZXNzPzogKGpzb246IFBNVGlsZXNNZXRhZGF0YSB8IFRpbGVKU09OKSA9PiBWZWN0b3JUaWxlTWV0YWRhdGEgfCBFcnJvciB8IG51bGw7XG59O1xuXG5jb25zdCBERUZBVUxUX1BST0NFU1NfRlVOQ1RJT04gPSAoanNvbjogUE1UaWxlc01ldGFkYXRhIHwgVGlsZUpTT04pOiBWZWN0b3JUaWxlTWV0YWRhdGEgPT4ge1xuICByZXR1cm4ge1xuICAgIG1ldGFKc29uOiBudWxsLFxuICAgIGJvdW5kczogbnVsbCxcbiAgICBjZW50ZXI6IG51bGwsXG4gICAgbWF4Wm9vbTogbnVsbCxcbiAgICBtaW5ab29tOiBudWxsLFxuICAgIGZpZWxkczogW10sXG4gICAgLi4uanNvblxuICB9O1xufTtcblxudHlwZSBGZXRjaFZlY3RvclRpbGVNZXRhZGF0YVJldHVybiA9IHtcbiAgZGF0YTogVmVjdG9yVGlsZU1ldGFkYXRhIHwgbnVsbDtcbiAgbG9hZGluZzogYm9vbGVhbjtcbiAgZXJyb3I6IEVycm9yIHwgbnVsbDtcbn07XG5cbi8qKiBIb29rIHRvIGZldGNoIGFuZCByZXR1cm4gbXZ0IG9yIHBtdGlsZXMgbWV0YWRhdGEuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VGZXRjaFZlY3RvclRpbGVNZXRhZGF0YSh7XG4gIHJlbW90ZVRpbGVGb3JtYXQsXG4gIHRpbGVzZXRVcmwsXG4gIG1ldGFkYXRhVXJsLFxuICBwcm9jZXNzID0gREVGQVVMVF9QUk9DRVNTX0ZVTkNUSU9OXG59OiBGZXRjaFZlY3RvclRpbGVNZXRhZGF0YVByb3BzKTogRmV0Y2hWZWN0b3JUaWxlTWV0YWRhdGFSZXR1cm4ge1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPEVycm9yIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlPFZlY3RvclRpbGVNZXRhZGF0YSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBnZXRBbmRQcm9jZXNzTWV0YWRhdGEgPSBhc3luYyAoKSA9PiB7XG4gICAgICBzZXRFcnJvcihudWxsKTtcbiAgICAgIHNldERhdGEobnVsbCk7XG4gICAgICBpZiAobWV0YWRhdGFVcmwpIHtcbiAgICAgICAgc2V0TG9hZGluZyh0cnVlKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGxldCBtZXRhZGF0YTogUE1UaWxlc01ldGFkYXRhIHwgVGlsZUpTT04gfCBudWxsID0gbnVsbDtcbiAgICAgICAgICBpZiAocmVtb3RlVGlsZUZvcm1hdCA9PT0gUmVtb3RlVGlsZUZvcm1hdC5NVlQpIHtcbiAgICAgICAgICAgIG1ldGFkYXRhID0gYXdhaXQgZ2V0TVZUTWV0YWRhdGEobWV0YWRhdGFVcmwpO1xuXG4gICAgICAgICAgICAvLyBNVlRTb3VyY2UgcmV0dXJucyBtZXNzeSBwYXJ0aWFsIG1ldGFkYXRhXG4gICAgICAgICAgICAvLyBNVlRTb3VyY2UuY3JlYXRlRGF0YVNvdXJjZSgnJywge1xuICAgICAgICAgICAgLy8gICBtdnQ6IHtcbiAgICAgICAgICAgIC8vICAgICBtZXRhZGF0YVVybDogZGVjb2RlVVJJQ29tcG9uZW50KHVybClcbiAgICAgICAgICAgIC8vICAgfVxuICAgICAgICAgICAgLy8gfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdGlsZVNvdXJjZSA9IFBNVGlsZXNTb3VyY2UuY3JlYXRlRGF0YVNvdXJjZShtZXRhZGF0YVVybCwge30pO1xuICAgICAgICAgICAgbWV0YWRhdGEgPSBhd2FpdCB0aWxlU291cmNlLm1ldGFkYXRhO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFNpbmNlIHdlIHN3aXRjaGVkIHRvIFNvdXJjZS5jcmVhdGVEYXRhU291cmNlIGRldGFpbGVkIHJlc3BvbnNlIGVycm9ycyBhcmVuJ3QgYXZhaWxhYmxlIGhlcmUuLi5cbiAgICAgICAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBtZXRhZGF0YScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZE1ldGFkYXRhID0gcHJvY2VzcyhtZXRhZGF0YSk7XG4gICAgICAgICAgaWYgKHByb2Nlc3NlZE1ldGFkYXRhIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHNldEVycm9yKHByb2Nlc3NlZE1ldGFkYXRhKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0RXJyb3IobnVsbCk7XG5cbiAgICAgICAgICAgIGF3YWl0IGdldEZpZWxkc0Zyb21UaWxlKHtcbiAgICAgICAgICAgICAgcmVtb3RlVGlsZUZvcm1hdCxcbiAgICAgICAgICAgICAgdGlsZXNldFVybCxcbiAgICAgICAgICAgICAgbWV0YWRhdGFVcmwsXG4gICAgICAgICAgICAgIG1ldGFkYXRhOiBwcm9jZXNzZWRNZXRhZGF0YVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHNldERhdGEocHJvY2Vzc2VkTWV0YWRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAobWV0YWRhdGFFcnJvcikge1xuICAgICAgICAgIHNldEVycm9yKG1ldGFkYXRhRXJyb3IgYXMgYW55KTtcbiAgICAgICAgfVxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZ2V0QW5kUHJvY2Vzc01ldGFkYXRhKCk7XG4gIH0sIFttZXRhZGF0YVVybCwgdGlsZXNldFVybCwgcmVtb3RlVGlsZUZvcm1hdCwgc2V0RXJyb3IsIHNldERhdGEsIHByb2Nlc3NdKTtcblxuICByZXR1cm4ge2RhdGEsIGxvYWRpbmcsIGVycm9yfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFHQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFBdUYsU0FBQUksUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFB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