UNPKG

kepler.gl.geoiq

Version:

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

87 lines (61 loc) 10.4 kB
"use strict"; 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.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.RATIO_OPTIONS.find(function (op) { return op.id === ratio; }).getSize(scaledWidth, scaledHeight)); } function convertToPng(sourceElem) { return _domToImage["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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9leHBvcnQtaW1hZ2UtdXRpbHMuanMiXSwibmFtZXMiOlsiY2FsY3VsYXRlRXhwb3J0SW1hZ2VTaXplIiwid2lkdGgiLCJoZWlnaHQiLCJyYXRpbyIsInJlc29sdXRpb24iLCJyZXNvbHV0aW9uSXRlbSIsIlJFU09MVVRJT05fT1BUSU9OUyIsImZpbmQiLCJvcCIsImlkIiwiZ2V0U2l6ZSIsInNjYWxlZFdpZHRoIiwic2NhbGVkSGVpZ2h0Iiwiem9vbU9mZnNldCIsInNjYWxlIiwiUkFUSU9fT1BUSU9OUyIsImNvbnZlcnRUb1BuZyIsInNvdXJjZUVsZW0iLCJkb210b2ltYWdlIiwidG9QbmciLCJkYXRhVVJJdG9CbG9iIiwiZGF0YVVSSSIsImJpbmFyeSIsInNwbGl0IiwibWltZVN0cmluZyIsImFiIiwiQXJyYXlCdWZmZXIiLCJsZW5ndGgiLCJpYSIsIlVpbnQ4QXJyYXkiLCJpIiwiY2hhckNvZGVBdCIsIkJsb2IiLCJ0eXBlIiwiZG93bmxvYWRGaWxlIiwiZmlsZUJsb2IiLCJmaWxlbmFtZSIsInVybCIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGUiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJjbGljayIsInJlbW92ZUNoaWxkIiwicmV2b2tlT2JqZWN0VVJMIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFRQTs7Ozs7O0FBRU8sU0FBU0Esd0JBQVQsT0FBc0U7QUFBQSxNQUFuQ0MsS0FBbUMsUUFBbkNBLEtBQW1DO0FBQUEsTUFBNUJDLE1BQTRCLFFBQTVCQSxNQUE0QjtBQUFBLE1BQXBCQyxLQUFvQixRQUFwQkEsS0FBb0I7QUFBQSxNQUFiQyxVQUFhLFFBQWJBLFVBQWE7O0FBQzNFLE1BQU1DLGNBQWMsR0FBR0Msb0NBQW1CQyxJQUFuQixDQUF3QixVQUFBQyxFQUFFO0FBQUEsV0FBSUEsRUFBRSxDQUFDQyxFQUFILEtBQVVMLFVBQWQ7QUFBQSxHQUExQixDQUF2Qjs7QUFEMkUsOEJBRXhCQyxjQUFjLENBQUNLLE9BQWYsQ0FDakRULEtBRGlELEVBRWpEQyxNQUZpRCxDQUZ3QjtBQUFBLE1BRTdEUyxXQUY2RCx5QkFFcEVWLEtBRm9FO0FBQUEsTUFFeENXLFlBRndDLHlCQUVoRFYsTUFGZ0Q7O0FBQUEsTUFNcEVXLFVBTm9FLEdBTS9DUixjQU4rQyxDQU1wRVEsVUFOb0U7QUFBQSxNQU14REMsS0FOd0QsR0FNL0NULGNBTitDLENBTXhEUyxLQU53RDtBQVEzRTtBQUNFRCxJQUFBQSxVQUFVLEVBQVZBLFVBREY7QUFFRUMsSUFBQUEsS0FBSyxFQUFMQTtBQUZGLEtBR0tDLCtCQUFjUixJQUFkLENBQW1CLFVBQUFDLEVBQUU7QUFBQSxXQUFJQSxFQUFFLENBQUNDLEVBQUgsS0FBVU4sS0FBZDtBQUFBLEdBQXJCLEVBQTBDTyxPQUExQyxDQUNEQyxXQURDLEVBRURDLFlBRkMsQ0FITDtBQVFEOztBQUVNLFNBQVNJLFlBQVQsQ0FBc0JDLFVBQXRCLEVBQWtDO0FBQ3ZDLFNBQU9DLHVCQUFXQyxLQUFYLENBQWlCRixVQUFqQixDQUFQO0FBQ0Q7O0FBRU0sU0FBU0csYUFBVCxDQUF1QkMsT0FBdkIsRUFBZ0M7QUFDckMsTUFBTUMsTUFBTSxHQUFHLGtCQUFLRCxPQUFPLENBQUNFLEtBQVIsQ0FBYyxHQUFkLEVBQW1CLENBQW5CLENBQUwsQ0FBZixDQURxQyxDQUdyQzs7QUFDQSxNQUFNQyxVQUFVLEdBQUdILE9BQU8sQ0FDdkJFLEtBRGdCLENBQ1YsR0FEVSxFQUNMLENBREssRUFFaEJBLEtBRmdCLENBRVYsR0FGVSxFQUVMLENBRkssRUFHaEJBLEtBSGdCLENBR1YsR0FIVSxFQUdMLENBSEssQ0FBbkIsQ0FKcUMsQ0FTckM7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHLElBQUlDLG1CQUFKLENBQWdCSixNQUFNLENBQUNLLE1BQXZCLENBQVgsQ0FWcUMsQ0FZckM7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHLElBQUlDLGtCQUFKLENBQWVKLEVBQWYsQ0FBWDs7QUFFQSxPQUFLLElBQUlLLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdSLE1BQU0sQ0FBQ0ssTUFBM0IsRUFBbUNHLENBQUMsRUFBcEMsRUFBd0M7QUFDdENGLElBQUFBLEVBQUUsQ0FBQ0UsQ0FBRCxDQUFGLEdBQVFSLE1BQU0sQ0FBQ1MsVUFBUCxDQUFrQkQsQ0FBbEIsQ0FBUjtBQUNEOztBQUVELFNBQU8sSUFBSUUsWUFBSixDQUFTLENBQUNQLEVBQUQsQ0FBVCxFQUFlO0FBQUNRLElBQUFBLElBQUksRUFBRVQ7QUFBUCxHQUFmLENBQVA7QUFDRDs7QUFFTSxTQUFTVSxZQUFULENBQXNCQyxRQUF0QixFQUFnQ0MsUUFBaEMsRUFBMEM7QUFDL0MsTUFBTUMsR0FBRyxHQUFHQyxZQUFJQyxlQUFKLENBQW9CSixRQUFwQixDQUFaOztBQUVBLE1BQU1LLElBQUksR0FBR0MsaUJBQVNDLGFBQVQsQ0FBdUIsR0FBdkIsQ0FBYjs7QUFDQUYsRUFBQUEsSUFBSSxDQUFDRyxZQUFMLENBQWtCLE1BQWxCLEVBQTBCTixHQUExQjtBQUNBRyxFQUFBQSxJQUFJLENBQUNHLFlBQUwsQ0FBa0IsVUFBbEIsRUFBOEJQLFFBQTlCOztBQUVBSyxtQkFBU0csSUFBVCxDQUFjQyxXQUFkLENBQTBCTCxJQUExQjs7QUFDQUEsRUFBQUEsSUFBSSxDQUFDTSxLQUFMOztBQUNBTCxtQkFBU0csSUFBVCxDQUFjRyxXQUFkLENBQTBCUCxJQUExQjs7QUFDQUYsY0FBSVUsZUFBSixDQUFvQlgsR0FBcEI7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxOSBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBkb210b2ltYWdlIGZyb20gJ3V0aWxzL2RvbS10by1pbWFnZSc7XG5pbXBvcnQge1xuICBCbG9iLFxuICBVUkwsXG4gIGF0b2IsXG4gIFVpbnQ4QXJyYXksXG4gIEFycmF5QnVmZmVyLFxuICBkb2N1bWVudFxufSBmcm9tICdnbG9iYWwvd2luZG93JztcbmltcG9ydCB7UkVTT0xVVElPTl9PUFRJT05TLCBSQVRJT19PUFRJT05TfSBmcm9tICdjb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFeHBvcnRJbWFnZVNpemUoe3dpZHRoLCBoZWlnaHQsIHJhdGlvLCByZXNvbHV0aW9ufSkge1xuICBjb25zdCByZXNvbHV0aW9uSXRlbSA9IFJFU09MVVRJT05fT1BUSU9OUy5maW5kKG9wID0+IG9wLmlkID09PSByZXNvbHV0aW9uKTtcbiAgY29uc3Qge3dpZHRoOiBzY2FsZWRXaWR0aCwgaGVpZ2h0OiBzY2FsZWRIZWlnaHR9ID0gcmVzb2x1dGlvbkl0ZW0uZ2V0U2l6ZShcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgKTtcbiAgY29uc3Qge3pvb21PZmZzZXQsIHNjYWxlfSA9IHJlc29sdXRpb25JdGVtO1xuXG4gIHJldHVybiB7XG4gICAgem9vbU9mZnNldCxcbiAgICBzY2FsZSxcbiAgICAuLi5SQVRJT19PUFRJT05TLmZpbmQob3AgPT4gb3AuaWQgPT09IHJhdGlvKS5nZXRTaXplKFxuICAgICAgc2NhbGVkV2lkdGgsXG4gICAgICBzY2FsZWRIZWlnaHRcbiAgICApXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9Qbmcoc291cmNlRWxlbSkge1xuICByZXR1cm4gZG9tdG9pbWFnZS50b1BuZyhzb3VyY2VFbGVtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGFVUkl0b0Jsb2IoZGF0YVVSSSkge1xuICBjb25zdCBiaW5hcnkgPSBhdG9iKGRhdGFVUkkuc3BsaXQoJywnKVsxXSk7XG5cbiAgLy8gc2VwYXJhdGUgb3V0IHRoZSBtaW1lIGNvbXBvbmVudFxuICBjb25zdCBtaW1lU3RyaW5nID0gZGF0YVVSSVxuICAgIC5zcGxpdCgnLCcpWzBdXG4gICAgLnNwbGl0KCc6JylbMV1cbiAgICAuc3BsaXQoJzsnKVswXTtcblxuICAvLyB3cml0ZSB0aGUgYnl0ZXMgb2YgdGhlIHN0cmluZyB0byBhbiBBcnJheUJ1ZmZlclxuICBjb25zdCBhYiA9IG5ldyBBcnJheUJ1ZmZlcihiaW5hcnkubGVuZ3RoKTtcblxuICAvLyBjcmVhdGUgYSB2aWV3IGludG8gdGhlIGJ1ZmZlclxuICBjb25zdCBpYSA9IG5ldyBVaW50OEFycmF5KGFiKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGJpbmFyeS5sZW5ndGg7IGkrKykge1xuICAgIGlhW2ldID0gYmluYXJ5LmNoYXJDb2RlQXQoaSk7XG4gIH1cblxuICByZXR1cm4gbmV3IEJsb2IoW2FiXSwge3R5cGU6IG1pbWVTdHJpbmd9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkRmlsZShmaWxlQmxvYiwgZmlsZW5hbWUpIHtcbiAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlQmxvYik7XG5cbiAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgbGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB1cmwpO1xuICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlbmFtZSk7XG5cbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgbGluay5jbGljaygpO1xuICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG59XG4iXX0=