kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
87 lines (61 loc) • 10.5 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.calculateExportImageSize = calculateExportImageSize;
exports.convertToPng = convertToPng;
exports.dataURItoBlob = dataURItoBlob;
exports.downloadFile = downloadFile;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _domToImage = _interopRequireDefault(require("./dom-to-image"));
var _window = require("global/window");
var _defaultSettings = require("../constants/default-settings");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function calculateExportImageSize(_ref) {
var width = _ref.width,
height = _ref.height,
ratio = _ref.ratio,
resolution = _ref.resolution;
var resolutionItem = _defaultSettings.EXPORT_IMG_RESOLUTION_OPTIONS.find(function (op) {
return op.id === resolution;
});
var _resolutionItem$getSi = resolutionItem.getSize(width, height),
scaledWidth = _resolutionItem$getSi.width,
scaledHeight = _resolutionItem$getSi.height;
var zoomOffset = resolutionItem.zoomOffset,
scale = resolutionItem.scale;
return _objectSpread({
zoomOffset: zoomOffset,
scale: scale
}, _defaultSettings.EXPORT_IMG_RATIO_OPTIONS.find(function (op) {
return op.id === ratio;
}).getSize(scaledWidth, scaledHeight));
}
function convertToPng(sourceElem, options) {
return _domToImage["default"].toPng(sourceElem, options);
}
function dataURItoBlob(dataURI) {
var binary = (0, _window.atob)(dataURI.split(',')[1]); // separate out the mime component
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; // write the bytes of the string to an ArrayBuffer
var ab = new _window.ArrayBuffer(binary.length); // create a view into the buffer
var ia = new _window.Uint8Array(ab);
for (var i = 0; i < binary.length; i++) {
ia[i] = binary.charCodeAt(i);
}
return new _window.Blob([ab], {
type: mimeString
});
}
function downloadFile(fileBlob, filename) {
var url = _window.URL.createObjectURL(fileBlob);
var link = _window.document.createElement('a');
link.setAttribute('href', url);
link.setAttribute('download', filename);
_window.document.body.appendChild(link);
link.click();
_window.document.body.removeChild(link);
_window.URL.revokeObjectURL(url);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9leHBvcnQtaW1hZ2UtdXRpbHMuanMiXSwibmFtZXMiOlsiY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplIiwid2lkdGgiLCJoZWlnaHQiLCJyYXRpbyIsInJlc29sdXRpb24iLCJyZXNvbHV0aW9uSXRlbSIsIkVYUE9SVF9JTUdfUkVTT0xVVElPTl9PUFRJT05TIiwiZmluZCIsIm9wIiwiaWQiLCJnZXRTaXplIiwic2NhbGVkV2lkdGgiLCJzY2FsZWRIZWlnaHQiLCJ6b29tT2Zmc2V0Iiwic2NhbGUiLCJFWFBPUlRfSU1HX1JBVElPX09QVElPTlMiLCJjb252ZXJ0VG9QbmciLCJzb3VyY2VFbGVtIiwib3B0aW9ucyIsImRvbXRvaW1hZ2UiLCJ0b1BuZyIsImRhdGFVUkl0b0Jsb2IiLCJkYXRhVVJJIiwiYmluYXJ5Iiwic3BsaXQiLCJtaW1lU3RyaW5nIiwiYWIiLCJBcnJheUJ1ZmZlciIsImxlbmd0aCIsImlhIiwiVWludDhBcnJheSIsImkiLCJjaGFyQ29kZUF0IiwiQmxvYiIsInR5cGUiLCJkb3dubG9hZEZpbGUiLCJmaWxlQmxvYiIsImZpbGVuYW1lIiwidXJsIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOzs7Ozs7QUFFTyxTQUFTQSx3QkFBVCxPQUFzRTtBQUFBLE1BQW5DQyxLQUFtQyxRQUFuQ0EsS0FBbUM7QUFBQSxNQUE1QkMsTUFBNEIsUUFBNUJBLE1BQTRCO0FBQUEsTUFBcEJDLEtBQW9CLFFBQXBCQSxLQUFvQjtBQUFBLE1BQWJDLFVBQWEsUUFBYkEsVUFBYTs7QUFDM0UsTUFBTUMsY0FBYyxHQUFHQywrQ0FBOEJDLElBQTlCLENBQW1DLFVBQUFDLEVBQUU7QUFBQSxXQUFJQSxFQUFFLENBQUNDLEVBQUgsS0FBVUwsVUFBZDtBQUFBLEdBQXJDLENBQXZCOztBQUQyRSw4QkFFeEJDLGNBQWMsQ0FBQ0ssT0FBZixDQUF1QlQsS0FBdkIsRUFBOEJDLE1BQTlCLENBRndCO0FBQUEsTUFFN0RTLFdBRjZELHlCQUVwRVYsS0FGb0U7QUFBQSxNQUV4Q1csWUFGd0MseUJBRWhEVixNQUZnRDs7QUFBQSxNQUdwRVcsVUFIb0UsR0FHL0NSLGNBSCtDLENBR3BFUSxVQUhvRTtBQUFBLE1BR3hEQyxLQUh3RCxHQUcvQ1QsY0FIK0MsQ0FHeERTLEtBSHdEO0FBSzNFO0FBQ0VELElBQUFBLFVBQVUsRUFBVkEsVUFERjtBQUVFQyxJQUFBQSxLQUFLLEVBQUxBO0FBRkYsS0FHS0MsMENBQXlCUixJQUF6QixDQUE4QixVQUFBQyxFQUFFO0FBQUEsV0FBSUEsRUFBRSxDQUFDQyxFQUFILEtBQVVOLEtBQWQ7QUFBQSxHQUFoQyxFQUFxRE8sT0FBckQsQ0FBNkRDLFdBQTdELEVBQTBFQyxZQUExRSxDQUhMO0FBS0Q7O0FBRU0sU0FBU0ksWUFBVCxDQUFzQkMsVUFBdEIsRUFBa0NDLE9BQWxDLEVBQTJDO0FBQ2hELFNBQU9DLHVCQUFXQyxLQUFYLENBQWlCSCxVQUFqQixFQUE2QkMsT0FBN0IsQ0FBUDtBQUNEOztBQUVNLFNBQVNHLGFBQVQsQ0FBdUJDLE9BQXZCLEVBQWdDO0FBQ3JDLE1BQU1DLE1BQU0sR0FBRyxrQkFBS0QsT0FBTyxDQUFDRSxLQUFSLENBQWMsR0FBZCxFQUFtQixDQUFuQixDQUFMLENBQWYsQ0FEcUMsQ0FHckM7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHSCxPQUFPLENBQ3ZCRSxLQURnQixDQUNWLEdBRFUsRUFDTCxDQURLLEVBRWhCQSxLQUZnQixDQUVWLEdBRlUsRUFFTCxDQUZLLEVBR2hCQSxLQUhnQixDQUdWLEdBSFUsRUFHTCxDQUhLLENBQW5CLENBSnFDLENBU3JDOztBQUNBLE1BQU1FLEVBQUUsR0FBRyxJQUFJQyxtQkFBSixDQUFnQkosTUFBTSxDQUFDSyxNQUF2QixDQUFYLENBVnFDLENBWXJDOztBQUNBLE1BQU1DLEVBQUUsR0FBRyxJQUFJQyxrQkFBSixDQUFlSixFQUFmLENBQVg7O0FBRUEsT0FBSyxJQUFJSyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHUixNQUFNLENBQUNLLE1BQTNCLEVBQW1DRyxDQUFDLEVBQXBDLEVBQXdDO0FBQ3RDRixJQUFBQSxFQUFFLENBQUNFLENBQUQsQ0FBRixHQUFRUixNQUFNLENBQUNTLFVBQVAsQ0FBa0JELENBQWxCLENBQVI7QUFDRDs7QUFFRCxTQUFPLElBQUlFLFlBQUosQ0FBUyxDQUFDUCxFQUFELENBQVQsRUFBZTtBQUFDUSxJQUFBQSxJQUFJLEVBQUVUO0FBQVAsR0FBZixDQUFQO0FBQ0Q7O0FBRU0sU0FBU1UsWUFBVCxDQUFzQkMsUUFBdEIsRUFBZ0NDLFFBQWhDLEVBQTBDO0FBQy9DLE1BQU1DLEdBQUcsR0FBR0MsWUFBSUMsZUFBSixDQUFvQkosUUFBcEIsQ0FBWjs7QUFFQSxNQUFNSyxJQUFJLEdBQUdDLGlCQUFTQyxhQUFULENBQXVCLEdBQXZCLENBQWI7O0FBQ0FGLEVBQUFBLElBQUksQ0FBQ0csWUFBTCxDQUFrQixNQUFsQixFQUEwQk4sR0FBMUI7QUFDQUcsRUFBQUEsSUFBSSxDQUFDRyxZQUFMLENBQWtCLFVBQWxCLEVBQThCUCxRQUE5Qjs7QUFFQUssbUJBQVNHLElBQVQsQ0FBY0MsV0FBZCxDQUEwQkwsSUFBMUI7O0FBQ0FBLEVBQUFBLElBQUksQ0FBQ00sS0FBTDs7QUFDQUwsbUJBQVNHLElBQVQsQ0FBY0csV0FBZCxDQUEwQlAsSUFBMUI7O0FBQ0FGLGNBQUlVLGVBQUosQ0FBb0JYLEdBQXBCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjAgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgZG9tdG9pbWFnZSBmcm9tICd1dGlscy9kb20tdG8taW1hZ2UnO1xuaW1wb3J0IHtCbG9iLCBVUkwsIGF0b2IsIFVpbnQ4QXJyYXksIEFycmF5QnVmZmVyLCBkb2N1bWVudH0gZnJvbSAnZ2xvYmFsL3dpbmRvdyc7XG5pbXBvcnQge0VYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUywgRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlN9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUV4cG9ydEltYWdlU2l6ZSh7d2lkdGgsIGhlaWdodCwgcmF0aW8sIHJlc29sdXRpb259KSB7XG4gIGNvbnN0IHJlc29sdXRpb25JdGVtID0gRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlMuZmluZChvcCA9PiBvcC5pZCA9PT0gcmVzb2x1dGlvbik7XG4gIGNvbnN0IHt3aWR0aDogc2NhbGVkV2lkdGgsIGhlaWdodDogc2NhbGVkSGVpZ2h0fSA9IHJlc29sdXRpb25JdGVtLmdldFNpemUod2lkdGgsIGhlaWdodCk7XG4gIGNvbnN0IHt6b29tT2Zmc2V0LCBzY2FsZX0gPSByZXNvbHV0aW9uSXRlbTtcblxuICByZXR1cm4ge1xuICAgIHpvb21PZmZzZXQsXG4gICAgc2NhbGUsXG4gICAgLi4uRVhQT1JUX0lNR19SQVRJT19PUFRJT05TLmZpbmQob3AgPT4gb3AuaWQgPT09IHJhdGlvKS5nZXRTaXplKHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9Qbmcoc291cmNlRWxlbSwgb3B0aW9ucykge1xuICByZXR1cm4gZG9tdG9pbWFnZS50b1BuZyhzb3VyY2VFbGVtLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFVUkl0b0Jsb2IoZGF0YVVSSSkge1xuICBjb25zdCBiaW5hcnkgPSBhdG9iKGRhdGFVUkkuc3BsaXQoJywnKVsxXSk7XG5cbiAgLy8gc2VwYXJhdGUgb3V0IHRoZSBtaW1lIGNvbXBvbmVudFxuICBjb25zdCBtaW1lU3RyaW5nID0gZGF0YVVSSVxuICAgIC5zcGxpdCgnLCcpWzBdXG4gICAgLnNwbGl0KCc6JylbMV1cbiAgICAuc3BsaXQoJzsnKVswXTtcblxuICAvLyB3cml0ZSB0aGUgYnl0ZXMgb2YgdGhlIHN0cmluZyB0byBhbiBBcnJheUJ1ZmZlclxuICBjb25zdCBhYiA9IG5ldyBBcnJheUJ1ZmZlcihiaW5hcnkubGVuZ3RoKTtcblxuICAvLyBjcmVhdGUgYSB2aWV3IGludG8gdGhlIGJ1ZmZlclxuICBjb25zdCBpYSA9IG5ldyBVaW50OEFycmF5KGFiKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbmFyeS5sZW5ndGg7IGkrKykge1xuICAgIGlhW2ldID0gYmluYXJ5LmNoYXJDb2RlQXQoaSk7XG4gIH1cblxuICByZXR1cm4gbmV3IEJsb2IoW2FiXSwge3R5cGU6IG1pbWVTdHJpbmd9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkRmlsZShmaWxlQmxvYiwgZmlsZW5hbWUpIHtcbiAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlQmxvYik7XG5cbiAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgbGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB1cmwpO1xuICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlbmFtZSk7XG5cbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgbGluay5jbGljaygpO1xuICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG59XG4iXX0=
;