kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
105 lines (80 loc) • 10.7 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
exports.calculateExportImageSize = calculateExportImageSize;
exports.convertToPng = convertToPng;
exports.dataURItoBlob = dataURItoBlob;
exports.downloadFile = downloadFile;
var _domToImage = require('./dom-to-image');
var _domToImage2 = _interopRequireDefault(_domToImage);
var _window = require('global/window');
var _defaultSettings = require('../constants/default-settings');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function calculateExportImageSize(_ref) {
var width = _ref.width,
height = _ref.height,
ratio = _ref.ratio,
resolution = _ref.resolution;
var resolutionItem = _defaultSettings.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 (0, _extends3.default)({
zoomOffset: zoomOffset,
scale: scale
}, _defaultSettings.RATIO_OPTIONS.find(function (op) {
return op.id === ratio;
}).getSize(scaledWidth, scaledHeight));
} // Copyright (c) 2018 Uber Technologies, Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
function convertToPng(sourceElem) {
return _domToImage2.default.toPng(sourceElem);
}
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9leHBvcnQtaW1hZ2UtdXRpbHMuanMiXSwibmFtZXMiOlsiY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplIiwiY29udmVydFRvUG5nIiwiZGF0YVVSSXRvQmxvYiIsImRvd25sb2FkRmlsZSIsIndpZHRoIiwiaGVpZ2h0IiwicmF0aW8iLCJyZXNvbHV0aW9uIiwicmVzb2x1dGlvbkl0ZW0iLCJSRVNPTFVUSU9OX09QVElPTlMiLCJmaW5kIiwib3AiLCJpZCIsImdldFNpemUiLCJzY2FsZWRXaWR0aCIsInNjYWxlZEhlaWdodCIsInpvb21PZmZzZXQiLCJzY2FsZSIsIlJBVElPX09QVElPTlMiLCJzb3VyY2VFbGVtIiwiZG9tdG9pbWFnZSIsInRvUG5nIiwiZGF0YVVSSSIsImJpbmFyeSIsInNwbGl0IiwibWltZVN0cmluZyIsImFiIiwiQXJyYXlCdWZmZXIiLCJsZW5ndGgiLCJpYSIsIlVpbnQ4QXJyYXkiLCJpIiwiY2hhckNvZGVBdCIsIkJsb2IiLCJ0eXBlIiwiZmlsZUJsb2IiLCJmaWxlbmFtZSIsInVybCIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGUiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJjbGljayIsInJlbW92ZUNoaWxkIiwicmV2b2tlT2JqZWN0VVJMIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O1FBK0JnQkEsd0IsR0FBQUEsd0I7UUFrQkFDLFksR0FBQUEsWTtRQUlBQyxhLEdBQUFBLGE7UUFzQkFDLFksR0FBQUEsWTs7QUF2RGhCOzs7O0FBQ0E7O0FBUUE7Ozs7QUFFTyxTQUFTSCx3QkFBVCxPQUFzRTtBQUFBLE1BQW5DSSxLQUFtQyxRQUFuQ0EsS0FBbUM7QUFBQSxNQUE1QkMsTUFBNEIsUUFBNUJBLE1BQTRCO0FBQUEsTUFBcEJDLEtBQW9CLFFBQXBCQSxLQUFvQjtBQUFBLE1BQWJDLFVBQWEsUUFBYkEsVUFBYTs7QUFDM0UsTUFBTUMsaUJBQWlCQyxvQ0FBbUJDLElBQW5CLENBQXdCO0FBQUEsV0FBTUMsR0FBR0MsRUFBSCxLQUFVTCxVQUFoQjtBQUFBLEdBQXhCLENBQXZCOztBQUQyRSw4QkFFeEJDLGVBQWVLLE9BQWYsQ0FDakRULEtBRGlELEVBRWpEQyxNQUZpRCxDQUZ3QjtBQUFBLE1BRTdEUyxXQUY2RCx5QkFFcEVWLEtBRm9FO0FBQUEsTUFFeENXLFlBRndDLHlCQUVoRFYsTUFGZ0Q7O0FBQUEsTUFNcEVXLFVBTm9FLEdBTS9DUixjQU4rQyxDQU1wRVEsVUFOb0U7QUFBQSxNQU14REMsS0FOd0QsR0FNL0NULGNBTitDLENBTXhEUyxLQU53RDs7O0FBUTNFO0FBQ0VELDBCQURGO0FBRUVDO0FBRkYsS0FHS0MsK0JBQWNSLElBQWQsQ0FBbUI7QUFBQSxXQUFNQyxHQUFHQyxFQUFILEtBQVVOLEtBQWhCO0FBQUEsR0FBbkIsRUFBMENPLE9BQTFDLENBQ0RDLFdBREMsRUFFREMsWUFGQyxDQUhMO0FBUUQsQyxDQS9DRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUErQk8sU0FBU2QsWUFBVCxDQUFzQmtCLFVBQXRCLEVBQWtDO0FBQ3ZDLFNBQU9DLHFCQUFXQyxLQUFYLENBQWlCRixVQUFqQixDQUFQO0FBQ0Q7O0FBRU0sU0FBU2pCLGFBQVQsQ0FBdUJvQixPQUF2QixFQUFnQztBQUNyQyxNQUFNQyxTQUFTLGtCQUFLRCxRQUFRRSxLQUFSLENBQWMsR0FBZCxFQUFtQixDQUFuQixDQUFMLENBQWY7O0FBRUE7QUFDQSxNQUFNQyxhQUFhSCxRQUNoQkUsS0FEZ0IsQ0FDVixHQURVLEVBQ0wsQ0FESyxFQUVoQkEsS0FGZ0IsQ0FFVixHQUZVLEVBRUwsQ0FGSyxFQUdoQkEsS0FIZ0IsQ0FHVixHQUhVLEVBR0wsQ0FISyxDQUFuQjs7QUFLQTtBQUNBLE1BQU1FLEtBQUssSUFBSUMsbUJBQUosQ0FBZ0JKLE9BQU9LLE1BQXZCLENBQVg7O0FBRUE7QUFDQSxNQUFNQyxLQUFLLElBQUlDLGtCQUFKLENBQWVKLEVBQWYsQ0FBWDs7QUFFQSxPQUFLLElBQUlLLElBQUksQ0FBYixFQUFnQkEsSUFBSVIsT0FBT0ssTUFBM0IsRUFBbUNHLEdBQW5DLEVBQXdDO0FBQ3RDRixPQUFHRSxDQUFILElBQVFSLE9BQU9TLFVBQVAsQ0FBa0JELENBQWxCLENBQVI7QUFDRDs7QUFFRCxTQUFPLElBQUlFLFlBQUosQ0FBUyxDQUFDUCxFQUFELENBQVQsRUFBZSxFQUFDUSxNQUFNVCxVQUFQLEVBQWYsQ0FBUDtBQUNEOztBQUVNLFNBQVN0QixZQUFULENBQXNCZ0MsUUFBdEIsRUFBZ0NDLFFBQWhDLEVBQTBDO0FBQy9DLE1BQU1DLE1BQU1DLFlBQUlDLGVBQUosQ0FBb0JKLFFBQXBCLENBQVo7O0FBRUEsTUFBTUssT0FBT0MsaUJBQVNDLGFBQVQsQ0FBdUIsR0FBdkIsQ0FBYjtBQUNBRixPQUFLRyxZQUFMLENBQWtCLE1BQWxCLEVBQTBCTixHQUExQjtBQUNBRyxPQUFLRyxZQUFMLENBQWtCLFVBQWxCLEVBQThCUCxRQUE5Qjs7QUFFQUssbUJBQVNHLElBQVQsQ0FBY0MsV0FBZCxDQUEwQkwsSUFBMUI7QUFDQUEsT0FBS00sS0FBTDtBQUNBTCxtQkFBU0csSUFBVCxDQUFjRyxXQUFkLENBQTBCUCxJQUExQjtBQUNBRixjQUFJVSxlQUFKLENBQW9CWCxHQUFwQjtBQUNEIiwiZmlsZSI6ImV4cG9ydC1pbWFnZS11dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxOCBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBkb210b2ltYWdlIGZyb20gJ3V0aWxzL2RvbS10by1pbWFnZSc7XG5pbXBvcnQge1xuICBCbG9iLFxuICBVUkwsXG4gIGF0b2IsXG4gIFVpbnQ4QXJyYXksXG4gIEFycmF5QnVmZmVyLFxuICBkb2N1bWVudFxufSBmcm9tICdnbG9iYWwvd2luZG93JztcbmltcG9ydCB7UkVTT0xVVElPTl9PUFRJT05TLCBSQVRJT19PUFRJT05TfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFeHBvcnRJbWFnZVNpemUoe3dpZHRoLCBoZWlnaHQsIHJhdGlvLCByZXNvbHV0aW9ufSkge1xuICBjb25zdCByZXNvbHV0aW9uSXRlbSA9IFJFU09MVVRJT05fT1BUSU9OUy5maW5kKG9wID0+IG9wLmlkID09PSByZXNvbHV0aW9uKTtcbiAgY29uc3Qge3dpZHRoOiBzY2FsZWRXaWR0aCwgaGVpZ2h0OiBzY2FsZWRIZWlnaHR9ID0gcmVzb2x1dGlvbkl0ZW0uZ2V0U2l6ZShcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgKTtcbiAgY29uc3Qge3pvb21PZmZzZXQsIHNjYWxlfSA9IHJlc29sdXRpb25JdGVtO1xuXG4gIHJldHVybiB7XG4gICAgem9vbU9mZnNldCxcbiAgICBzY2FsZSxcbiAgICAuLi5SQVRJT19PUFRJT05TLmZpbmQob3AgPT4gb3AuaWQgPT09IHJhdGlvKS5nZXRTaXplKFxuICAgICAgc2NhbGVkV2lkdGgsXG4gICAgICBzY2FsZWRIZWlnaHRcbiAgICApXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9Qbmcoc291cmNlRWxlbSkge1xuICByZXR1cm4gZG9tdG9pbWFnZS50b1BuZyhzb3VyY2VFbGVtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFVUkl0b0Jsb2IoZGF0YVVSSSkge1xuICBjb25zdCBiaW5hcnkgPSBhdG9iKGRhdGFVUkkuc3BsaXQoJywnKVsxXSk7XG5cbiAgLy8gc2VwYXJhdGUgb3V0IHRoZSBtaW1lIGNvbXBvbmVudFxuICBjb25zdCBtaW1lU3RyaW5nID0gZGF0YVVSSVxuICAgIC5zcGxpdCgnLCcpWzBdXG4gICAgLnNwbGl0KCc6JylbMV1cbiAgICAuc3BsaXQoJzsnKVswXTtcblxuICAvLyB3cml0ZSB0aGUgYnl0ZXMgb2YgdGhlIHN0cmluZyB0byBhbiBBcnJheUJ1ZmZlclxuICBjb25zdCBhYiA9IG5ldyBBcnJheUJ1ZmZlcihiaW5hcnkubGVuZ3RoKTtcblxuICAvLyBjcmVhdGUgYSB2aWV3IGludG8gdGhlIGJ1ZmZlclxuICBjb25zdCBpYSA9IG5ldyBVaW50OEFycmF5KGFiKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbmFyeS5sZW5ndGg7IGkrKykge1xuICAgIGlhW2ldID0gYmluYXJ5LmNoYXJDb2RlQXQoaSk7XG4gIH1cblxuICByZXR1cm4gbmV3IEJsb2IoW2FiXSwge3R5cGU6IG1pbWVTdHJpbmd9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkRmlsZShmaWxlQmxvYiwgZmlsZW5hbWUpIHtcbiAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlQmxvYik7XG5cbiAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgbGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB1cmwpO1xuICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlbmFtZSk7XG5cbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgbGluay5jbGljaygpO1xuICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG59XG4iXX0=
;