UNPKG

npm-smooch-test

Version:

*Smooch adds beautifully simple messaging to your app to keep your users engaged and coming back.*

76 lines (61 loc) 2.23 kB
'use strict'; exports.__esModule = true; var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); exports.isImageUploadSupported = isImageUploadSupported; exports.getBlobFromDataUrl = getBlobFromDataUrl; exports.isFileTypeSupported = isFileTypeSupported; exports.resizeImage = resizeImage; var _loadImage = require('../lib/load-image'); var _loadImage2 = _interopRequireDefault(_loadImage); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function isImageUploadSupported() { // check for features used in the image upload var isSupported = ['atob', 'Blob', 'Uint8Array', 'File', 'FileReader'].every(function (feature) { return typeof global[feature] !== 'undefined'; }); if (isSupported) { var canvas = document.createElement('canvas'); isSupported = typeof canvas.toDataURL === 'function'; } return isSupported; } function getBlobFromDataUrl(dataUrl) { var blobBin = atob(dataUrl.split(',')[1]); var array = []; for (var i = 0; i < blobBin.length; i++) { array.push(blobBin.charCodeAt(i)); } return new Blob([new Uint8Array(array)], { type: 'image/jpeg' }); } function isFileTypeSupported(filetype) { return filetype.startsWith('image/'); } function resizeImage(file) { return new _promise2.default(function (resolve) { _loadImage2.default.parseMetaData(file, function (data) { resolve(data.exif && data.exif.get('Orientation')); }); }).then(function (orientation) { var MAX_WIDTH = 1280; var MAX_HEIGHT = 1280; return new _promise2.default(function (resolve, reject) { (0, _loadImage2.default)(file, function (img) { if (img.type === 'error') { reject(); } else { resolve(img); } }, { maxWidth: MAX_WIDTH, maxHeight: MAX_HEIGHT, canvas: true, orientation: orientation }); }); }).then(function (canvas) { return canvas.toDataURL('image/jpeg'); }); }