kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
133 lines (132 loc) • 16.2 kB
JavaScript
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("/Users/ihordykhta/Desktop/unfolded/kepler.gl/node_modules/react");
var _pmtiles = require("@loaders.gl/pmtiles");
var _src = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/constants/src");
var _src2 = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/table/src");
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 === _src.RemoteTileFormat.MVT)) {
_context.next = 12;
break;
}
_context.next = 9;
return (0, _src2.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, _src2.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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX3BtdGlsZXMiLCJfc3JjIiwiX3NyYzIiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIkRFRkFVTFRfUFJPQ0VTU19GVU5DVElPTiIsImpzb24iLCJtZXRhSnNvbiIsImJvdW5kcyIsImNlbnRlciIsIm1heFpvb20iLCJtaW5ab29tIiwiZmllbGRzIiwidXNlRmV0Y2hWZWN0b3JUaWxlTWV0YWRhdGEiLCJfcmVmIiwicmVtb3RlVGlsZUZvcm1hdCIsInRpbGVzZXRVcmwiLCJtZXRhZGF0YVVybCIsIl9yZWYkcHJvY2VzcyIsInByb2Nlc3MiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJlcnJvciIsInNldEVycm9yIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJkYXRhIiwic2V0RGF0YSIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwibG9hZGluZyIsInNldExvYWRpbmciLCJ1c2VFZmZlY3QiLCJnZXRBbmRQcm9jZXNzTWV0YWRhdGEiLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwibWV0YWRhdGEiLCJ0aWxlU291cmNlIiwicHJvY2Vzc2VkTWV0YWRhdGEiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiUmVtb3RlVGlsZUZvcm1hdCIsIk1WVCIsImdldE1WVE1ldGFkYXRhIiwic2VudCIsIlBNVGlsZXNTb3VyY2UiLCJjcmVhdGVEYXRhU291cmNlIiwiRXJyb3IiLCJnZXRGaWVsZHNGcm9tVGlsZSIsInQwIiwic3RvcCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NyYy9ob29rcy91c2UtZmV0Y2gtdmVjdG9yLXRpbGUtbWV0YWRhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7VGlsZUpTT059IGZyb20gJ0Bsb2FkZXJzLmdsL212dCc7XG5pbXBvcnQge1BNVGlsZXNTb3VyY2UsIFBNVGlsZXNNZXRhZGF0YX0gZnJvbSAnQGxvYWRlcnMuZ2wvcG10aWxlcyc7XG5cbmltcG9ydCB7UmVtb3RlVGlsZUZvcm1hdH0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtnZXRNVlRNZXRhZGF0YSwgVmVjdG9yVGlsZU1ldGFkYXRhLCBnZXRGaWVsZHNGcm9tVGlsZX0gZnJvbSAnQGtlcGxlci5nbC90YWJsZSc7XG5cbnR5cGUgRmV0Y2hWZWN0b3JUaWxlTWV0YWRhdGFQcm9wcyA9IHtcbiAgbWV0YWRhdGFVcmw6IHN0cmluZyB8IG51bGw7XG4gIHRpbGVzZXRVcmw6IHN0cmluZyB8IG51bGw7XG4gIHJlbW90ZVRpbGVGb3JtYXQ6IFJlbW90ZVRpbGVGb3JtYXQ7XG4gIHByb2Nlc3M/OiAoanNvbjogUE1UaWxlc01ldGFkYXRhIHwgVGlsZUpTT04pID0+IFZlY3RvclRpbGVNZXRhZGF0YSB8IEVycm9yIHwgbnVsbDtcbn07XG5cbmNvbnN0IERFRkFVTFRfUFJPQ0VTU19GVU5DVElPTiA9IChqc29uOiBQTVRpbGVzTWV0YWRhdGEgfCBUaWxlSlNPTik6IFZlY3RvclRpbGVNZXRhZGF0YSA9PiB7XG4gIHJldHVybiB7XG4gICAgbWV0YUpzb246IG51bGwsXG4gICAgYm91bmRzOiBudWxsLFxuICAgIGNlbnRlcjogbnVsbCxcbiAgICBtYXhab29tOiBudWxsLFxuICAgIG1pblpvb206IG51bGwsXG4gICAgZmllbGRzOiBbXSxcbiAgICAuLi5qc29uXG4gIH07XG59O1xuXG50eXBlIEZldGNoVmVjdG9yVGlsZU1ldGFkYXRhUmV0dXJuID0ge1xuICBkYXRhOiBWZWN0b3JUaWxlTWV0YWRhdGEgfCBudWxsO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBlcnJvcjogRXJyb3IgfCBudWxsO1xufTtcblxuLyoqIEhvb2sgdG8gZmV0Y2ggYW5kIHJldHVybiBtdnQgb3IgcG10aWxlcyBtZXRhZGF0YS4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUZldGNoVmVjdG9yVGlsZU1ldGFkYXRhKHtcbiAgcmVtb3RlVGlsZUZvcm1hdCxcbiAgdGlsZXNldFVybCxcbiAgbWV0YWRhdGFVcmwsXG4gIHByb2Nlc3MgPSBERUZBVUxUX1BST0NFU1NfRlVOQ1RJT05cbn06IEZldGNoVmVjdG9yVGlsZU1ldGFkYXRhUHJvcHMpOiBGZXRjaFZlY3RvclRpbGVNZXRhZGF0YVJldHVybiB7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGU8RXJyb3IgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGU8VmVjdG9yVGlsZU1ldGFkYXRhIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGdldEFuZFByb2Nlc3NNZXRhZGF0YSA9IGFzeW5jICgpID0+IHtcbiAgICAgIHNldEVycm9yKG51bGwpO1xuICAgICAgc2V0RGF0YShudWxsKTtcbiAgICAgIGlmIChtZXRhZGF0YVVybCkge1xuICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbGV0IG1ldGFkYXRhOiBQTVRpbGVzTWV0YWRhdGEgfCBUaWxlSlNPTiB8IG51bGwgPSBudWxsO1xuICAgICAgICAgIGlmIChyZW1vdGVUaWxlRm9ybWF0ID09PSBSZW1vdGVUaWxlRm9ybWF0Lk1WVCkge1xuICAgICAgICAgICAgbWV0YWRhdGEgPSBhd2FpdCBnZXRNVlRNZXRhZGF0YShtZXRhZGF0YVVybCk7XG5cbiAgICAgICAgICAgIC8vIE1WVFNvdXJjZSByZXR1cm5zIG1lc3N5IHBhcnRpYWwgbWV0YWRhdGFcbiAgICAgICAgICAgIC8vIE1WVFNvdXJjZS5jcmVhdGVEYXRhU291cmNlKCcnLCB7XG4gICAgICAgICAgICAvLyAgIG12dDoge1xuICAgICAgICAgICAgLy8gICAgIG1ldGFkYXRhVXJsOiBkZWNvZGVVUklDb21wb25lbnQodXJsKVxuICAgICAgICAgICAgLy8gICB9XG4gICAgICAgICAgICAvLyB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0aWxlU291cmNlID0gUE1UaWxlc1NvdXJjZS5jcmVhdGVEYXRhU291cmNlKG1ldGFkYXRhVXJsLCB7fSk7XG4gICAgICAgICAgICBtZXRhZGF0YSA9IGF3YWl0IHRpbGVTb3VyY2UubWV0YWRhdGE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU2luY2Ugd2Ugc3dpdGNoZWQgdG8gU291cmNlLmNyZWF0ZURhdGFTb3VyY2UgZGV0YWlsZWQgcmVzcG9uc2UgZXJyb3JzIGFyZW4ndCBhdmFpbGFibGUgaGVyZS4uLlxuICAgICAgICAgIGlmICghbWV0YWRhdGEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGZldGNoIG1ldGFkYXRhJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcHJvY2Vzc2VkTWV0YWRhdGEgPSBwcm9jZXNzKG1ldGFkYXRhKTtcbiAgICAgICAgICBpZiAocHJvY2Vzc2VkTWV0YWRhdGEgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgc2V0RXJyb3IocHJvY2Vzc2VkTWV0YWRhdGEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRFcnJvcihudWxsKTtcblxuICAgICAgICAgICAgYXdhaXQgZ2V0RmllbGRzRnJvbVRpbGUoe1xuICAgICAgICAgICAgICByZW1vdGVUaWxlRm9ybWF0LFxuICAgICAgICAgICAgICB0aWxlc2V0VXJsLFxuICAgICAgICAgICAgICBtZXRhZGF0YVVybCxcbiAgICAgICAgICAgICAgbWV0YWRhdGE6IHByb2Nlc3NlZE1ldGFkYXRhXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgc2V0RGF0YShwcm9jZXNzZWRNZXRhZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChtZXRhZGF0YUVycm9yKSB7XG4gICAgICAgICAgc2V0RXJyb3IobWV0YWRhdGFFcnJvciBhcyBhbnkpO1xuICAgICAgICB9XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBnZXRBbmRQcm9jZXNzTWV0YWRhdGEoKTtcbiAgfSwgW21ldGFkYXRhVXJsLCB0aWxlc2V0VXJsLCByZW1vdGVUaWxlRm9ybWF0LCBzZXRFcnJvciwgc2V0RGF0YSwgcHJvY2Vzc10pO1xuXG4gIHJldHVybiB7ZGF0YSwgbG9hZGluZywgZXJyb3J9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUdBLElBQUFBLE1BQUEsR0FBQUMsT0FBQTtBQUdBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLElBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUgsT0FBQTtBQUF1RixTQUFBSSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFB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
;