kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
120 lines (118 loc) • 12.2 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = useFetchJson;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _global = require("global");
var _react = require("react");
var _pmtiles = require("@loaders.gl/pmtiles");
var _constants = require("@kepler.gl/constants");
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
function useFetchJson(_ref) {
var url = _ref.url,
rasterTileType = _ref.rasterTileType,
options = _ref.options,
process = _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 rawMetadata, tileSource, response, processedMetadata;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
setError(null);
setData(null);
if (!url) {
_context.next = 31;
break;
}
setLoading(true);
_context.prev = 4;
rawMetadata = null;
if (!(rasterTileType === _constants.RasterTileType.PMTILES)) {
_context.next = 13;
break;
}
tileSource = _pmtiles.PMTilesSource.createDataSource(url, {});
_context.next = 10;
return tileSource.metadata;
case 10:
rawMetadata = _context.sent;
_context.next = 21;
break;
case 13:
_context.next = 15;
return (0, _global.fetch)(url, options);
case 15:
response = _context.sent;
if (response.ok) {
_context.next = 18;
break;
}
throw new Error("Failed Fetch ".concat(url));
case 18:
_context.next = 20;
return response.json();
case 20:
rawMetadata = _context.sent;
case 21:
if (rawMetadata) {
_context.next = 23;
break;
}
throw new Error('Failed to fetch metadata');
case 23:
processedMetadata = process(rawMetadata, {
rasterTileType: rasterTileType,
metadataUrl: url
});
if (processedMetadata instanceof Error) {
setError(processedMetadata);
} else {
setError(null);
setData(processedMetadata);
}
_context.next = 30;
break;
case 27:
_context.prev = 27;
_context.t0 = _context["catch"](4);
setError(_context.t0);
case 30:
setLoading(false);
case 31:
case "end":
return _context.stop();
}
}, _callee, null, [[4, 27]]);
}));
return function getAndProcessMetadata() {
return _ref2.apply(this, arguments);
};
}();
getAndProcessMetadata();
}, [url, rasterTileType, options, process]);
return {
data: data,
loading: loading,
error: error
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2xvYmFsIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9wbXRpbGVzIiwiX2NvbnN0YW50cyIsInVzZUZldGNoSnNvbiIsIl9yZWYiLCJ1cmwiLCJyYXN0ZXJUaWxlVHlwZSIsIm9wdGlvbnMiLCJwcm9jZXNzIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZXJyb3IiLCJzZXRFcnJvciIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwidXNlRWZmZWN0IiwiZ2V0QW5kUHJvY2Vzc01ldGFkYXRhIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvcjIiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsInJhd01ldGFkYXRhIiwidGlsZVNvdXJjZSIsInJlc3BvbnNlIiwicHJvY2Vzc2VkTWV0YWRhdGEiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiUmFzdGVyVGlsZVR5cGUiLCJQTVRJTEVTIiwiUE1UaWxlc1NvdXJjZSIsImNyZWF0ZURhdGFTb3VyY2UiLCJtZXRhZGF0YSIsInNlbnQiLCJmZXRjaCIsIm9rIiwiRXJyb3IiLCJjb25jYXQiLCJqc29uIiwibWV0YWRhdGFVcmwiLCJ0MCIsInN0b3AiLCJhcHBseSIsImFyZ3VtZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2UtZmV0Y2gtcmFzdGVyLXRpbGUtbWV0YWRhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtmZXRjaH0gZnJvbSAnZ2xvYmFsJztcbmltcG9ydCB7dXNlRWZmZWN0LCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQge1BNVGlsZXNTb3VyY2UsIFBNVGlsZXNNZXRhZGF0YX0gZnJvbSAnQGxvYWRlcnMuZ2wvcG10aWxlcyc7XG5cbmltcG9ydCB7VmVjdG9yVGlsZU1ldGFkYXRhfSBmcm9tICdAa2VwbGVyLmdsL3RhYmxlJztcbmltcG9ydCB7SnNvbk9iamVjdE9yQXJyYXksIFN0YWNUeXBlc30gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge1Jhc3RlclRpbGVUeXBlfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbnR5cGUgUmFzdGVyTWV0YWRhdGFSZXNwb25zZSA9IFZlY3RvclRpbGVNZXRhZGF0YSB8IFN0YWNUeXBlcy5Db21wbGV0ZVNUQUNPYmplY3QgfCBudWxsO1xuXG5leHBvcnQgdHlwZSBGZXRjaEpzb25Qcm9wcyA9IHtcbiAgdXJsOiBzdHJpbmcgfCBudWxsO1xuICByYXN0ZXJUaWxlVHlwZTogUmFzdGVyVGlsZVR5cGU7XG4gIG9wdGlvbnM/OiBKc29uT2JqZWN0T3JBcnJheTtcbiAgcHJvY2VzczogKFxuICAgIGpzb246IFBNVGlsZXNNZXRhZGF0YSB8IEpzb25PYmplY3RPckFycmF5LFxuICAgIG9wdGlvbnM6IHttZXRhZGF0YVVybDogc3RyaW5nOyByYXN0ZXJUaWxlVHlwZTogUmFzdGVyVGlsZVR5cGV9XG4gICkgPT4gUmFzdGVyTWV0YWRhdGFSZXNwb25zZSB8IEVycm9yO1xufTtcblxuZXhwb3J0IHR5cGUgVXNlRmV0Y2hKc29uUmV0dXJuID0ge1xuICBkYXRhOiBSYXN0ZXJNZXRhZGF0YVJlc3BvbnNlO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBlcnJvcjogRXJyb3IgfCBudWxsO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlRmV0Y2hKc29uKHtcbiAgdXJsLFxuICByYXN0ZXJUaWxlVHlwZSxcbiAgb3B0aW9ucyxcbiAgcHJvY2Vzc1xufTogRmV0Y2hKc29uUHJvcHMpOiBVc2VGZXRjaEpzb25SZXR1cm4ge1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlPEVycm9yIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlPFJhc3Rlck1ldGFkYXRhUmVzcG9uc2U+KG51bGwpO1xuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBnZXRBbmRQcm9jZXNzTWV0YWRhdGEgPSBhc3luYyAoKSA9PiB7XG4gICAgICBzZXRFcnJvcihudWxsKTtcbiAgICAgIHNldERhdGEobnVsbCk7XG4gICAgICBpZiAodXJsKSB7XG4gICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsZXQgcmF3TWV0YWRhdGE6IFBNVGlsZXNNZXRhZGF0YSB8IEpzb25PYmplY3RPckFycmF5IHwgbnVsbCA9IG51bGw7XG4gICAgICAgICAgaWYgKHJhc3RlclRpbGVUeXBlID09PSBSYXN0ZXJUaWxlVHlwZS5QTVRJTEVTKSB7XG4gICAgICAgICAgICBjb25zdCB0aWxlU291cmNlID0gUE1UaWxlc1NvdXJjZS5jcmVhdGVEYXRhU291cmNlKHVybCwge30pO1xuICAgICAgICAgICAgcmF3TWV0YWRhdGEgPSBhd2FpdCB0aWxlU291cmNlLm1ldGFkYXRhO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgb3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIEZldGNoICR7dXJsfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmF3TWV0YWRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFyYXdNZXRhZGF0YSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggbWV0YWRhdGEnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBwcm9jZXNzZWRNZXRhZGF0YSA9IHByb2Nlc3MocmF3TWV0YWRhdGEsIHtyYXN0ZXJUaWxlVHlwZSwgbWV0YWRhdGFVcmw6IHVybH0pO1xuICAgICAgICAgIGlmIChwcm9jZXNzZWRNZXRhZGF0YSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICBzZXRFcnJvcihwcm9jZXNzZWRNZXRhZGF0YSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldEVycm9yKG51bGwpO1xuICAgICAgICAgICAgc2V0RGF0YShwcm9jZXNzZWRNZXRhZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChtZXRhZGF0YUVycm9yKSB7XG4gICAgICAgICAgc2V0RXJyb3IobWV0YWRhdGFFcnJvciBhcyBFcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGdldEFuZFByb2Nlc3NNZXRhZGF0YSgpO1xuICB9LCBbdXJsLCByYXN0ZXJUaWxlVHlwZSwgb3B0aW9ucywgcHJvY2Vzc10pO1xuXG4gIHJldHVybiB7ZGF0YSwgbG9hZGluZywgZXJyb3J9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBSUEsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBVkE7QUFDQTs7QUE2QmUsU0FBU0ksWUFBWUEsQ0FBQUMsSUFBQSxFQUtHO0VBQUEsSUFKckNDLEdBQUcsR0FBQUQsSUFBQSxDQUFIQyxHQUFHO0lBQ0hDLGNBQWMsR0FBQUYsSUFBQSxDQUFkRSxjQUFjO0lBQ2RDLE9BQU8sR0FBQUgsSUFBQSxD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
;