botframework-webchat-component
Version:
React component of botframework-webchat
96 lines (90 loc) • 11.5 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
/* eslint object-shorthand: "off" */
/* eslint prefer-destructuring: "off" */
/* eslint prefer-arrow-callback: "off" */
// This file is the entrypoint of Web Worker and is minimally transpiled through Babel.
// Do not include any dependencies here because they will not be bundled.
// This file will also get loaded by IE11, please make sure you hand-transpile it correctly.
function _default() {
function blobToDataURL(blob) {
return new Promise(function (resolve, reject) {
const reader = new FileReader();
reader.onerror = function (event) {
reject(event.error || new Error(event.message));
};
reader.onloadend = function () {
resolve(reader.result);
};
reader.readAsDataURL(blob);
});
}
function keepAspectRatio(width, height, maxWidth, maxHeight) {
if (width < maxWidth && height < maxHeight) {
// Photo is smaller than both maximum dimensions, take it as-is
return {
height: height,
width: width
};
}
const aspectRatio = width / height;
if (aspectRatio > maxWidth / maxHeight) {
// Photo is wider than maximum dimension, downscale it based on maxWidth.
return {
height: maxWidth / aspectRatio,
width: maxWidth
};
}
// Photo is taller than maximum dimension, downscale it based on maxHeight.
return {
height: maxHeight,
width: maxHeight * aspectRatio
};
}
onmessage = function (event) {
const data = event.data;
const arrayBuffer = data.arrayBuffer;
const maxHeight = data.maxHeight;
const maxWidth = data.maxWidth;
const type = data.type;
const quality = data.quality;
const port = event.ports[0];
return Promise.resolve().then(function () {
return createImageBitmap(new Blob([arrayBuffer]), {
resizeQuality: 'high'
});
}).then(function (imageBitmap) {
const dimension = keepAspectRatio(imageBitmap.width, imageBitmap.height, maxWidth, maxHeight);
const height = dimension.height;
const width = dimension.width;
const offscreenCanvas = new OffscreenCanvas(width, height);
const context = offscreenCanvas.getContext('2d');
context.drawImage(imageBitmap, 0, 0, width, height);
// Firefox quirks: 68.0.1 call named OffscreenCanvas.convertToBlob as OffscreenCanvas.toBlob.
const convertToBlob = (offscreenCanvas.convertToBlob || offscreenCanvas.toBlob).bind(offscreenCanvas);
return convertToBlob({
type: type,
quality: quality
});
}).then(function (blob) {
return blobToDataURL(blob);
}).then(function (dataURL) {
return port.postMessage({
result: dataURL
});
}).catch(function (err) {
console.error(err);
port.postMessage({
error: {
message: err.message,
stack: err.stack
}
});
});
};
postMessage('ready');
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmYXVsdCIsImJsb2JUb0RhdGFVUkwiLCJibG9iIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWFkZXIiLCJGaWxlUmVhZGVyIiwib25lcnJvciIsImV2ZW50IiwiZXJyb3IiLCJFcnJvciIsIm1lc3NhZ2UiLCJvbmxvYWRlbmQiLCJyZXN1bHQiLCJyZWFkQXNEYXRhVVJMIiwia2VlcEFzcGVjdFJhdGlvIiwid2lkdGgiLCJoZWlnaHQiLCJtYXhXaWR0aCIsIm1heEhlaWdodCIsImFzcGVjdFJhdGlvIiwib25tZXNzYWdlIiwiZGF0YSIsImFycmF5QnVmZmVyIiwidHlwZSIsInF1YWxpdHkiLCJwb3J0IiwicG9ydHMiLCJ0aGVuIiwiY3JlYXRlSW1hZ2VCaXRtYXAiLCJCbG9iIiwicmVzaXplUXVhbGl0eSIsImltYWdlQml0bWFwIiwiZGltZW5zaW9uIiwib2Zmc2NyZWVuQ2FudmFzIiwiT2Zmc2NyZWVuQ2FudmFzIiwiY29udGV4dCIsImdldENvbnRleHQiLCJkcmF3SW1hZ2UiLCJjb252ZXJ0VG9CbG9iIiwidG9CbG9iIiwiYmluZCIsImRhdGFVUkwiLCJwb3N0TWVzc2FnZSIsImNhdGNoIiwiZXJyIiwiY29uc29sZSIsInN0YWNrIl0sInNvdXJjZVJvb3QiOiJjb21wb25lbnQ6Ly8vIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvVXRpbHMvZG93bnNjYWxlSW1hZ2VUb0RhdGFVUkwvZG93bnNjYWxlSW1hZ2VUb0RhdGFVUkxVc2luZ1dvcmtlci53b3JrZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG9iamVjdC1zaG9ydGhhbmQ6IFwib2ZmXCIgKi9cbi8qIGVzbGludCBwcmVmZXItZGVzdHJ1Y3R1cmluZzogXCJvZmZcIiAqL1xuLyogZXNsaW50IHByZWZlci1hcnJvdy1jYWxsYmFjazogXCJvZmZcIiAqL1xuXG4vLyBUaGlzIGZpbGUgaXMgdGhlIGVudHJ5cG9pbnQgb2YgV2ViIFdvcmtlciBhbmQgaXMgbWluaW1hbGx5IHRyYW5zcGlsZWQgdGhyb3VnaCBCYWJlbC5cbi8vIERvIG5vdCBpbmNsdWRlIGFueSBkZXBlbmRlbmNpZXMgaGVyZSBiZWNhdXNlIHRoZXkgd2lsbCBub3QgYmUgYnVuZGxlZC5cblxuLy8gVGhpcyBmaWxlIHdpbGwgYWxzbyBnZXQgbG9hZGVkIGJ5IElFMTEsIHBsZWFzZSBtYWtlIHN1cmUgeW91IGhhbmQtdHJhbnNwaWxlIGl0IGNvcnJlY3RseS5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBibG9iVG9EYXRhVVJMKGJsb2IpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgcmVqZWN0KGV2ZW50LmVycm9yIHx8IG5ldyBFcnJvcihldmVudC5tZXNzYWdlKSk7XG4gICAgICB9O1xuXG4gICAgICByZWFkZXIub25sb2FkZW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICAgICAgfTtcblxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoYmxvYik7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBrZWVwQXNwZWN0UmF0aW8od2lkdGgsIGhlaWdodCwgbWF4V2lkdGgsIG1heEhlaWdodCkge1xuICAgIGlmICh3aWR0aCA8IG1heFdpZHRoICYmIGhlaWdodCA8IG1heEhlaWdodCkge1xuICAgICAgLy8gUGhvdG8gaXMgc21hbGxlciB0aGFuIGJvdGggbWF4aW11bSBkaW1lbnNpb25zLCB0YWtlIGl0IGFzLWlzXG4gICAgICByZXR1cm4ge1xuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgd2lkdGg6IHdpZHRoXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGFzcGVjdFJhdGlvID0gd2lkdGggLyBoZWlnaHQ7XG5cbiAgICBpZiAoYXNwZWN0UmF0aW8gPiBtYXhXaWR0aCAvIG1heEhlaWdodCkge1xuICAgICAgLy8gUGhvdG8gaXMgd2lkZXIgdGhhbiBtYXhpbXVtIGRpbWVuc2lvbiwgZG93bnNjYWxlIGl0IGJhc2VkIG9uIG1heFdpZHRoLlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaGVpZ2h0OiBtYXhXaWR0aCAvIGFzcGVjdFJhdGlvLFxuICAgICAgICB3aWR0aDogbWF4V2lkdGhcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gUGhvdG8gaXMgdGFsbGVyIHRoYW4gbWF4aW11bSBkaW1lbnNpb24sIGRvd25zY2FsZSBpdCBiYXNlZCBvbiBtYXhIZWlnaHQuXG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodDogbWF4SGVpZ2h0LFxuICAgICAgd2lkdGg6IG1heEhlaWdodCAqIGFzcGVjdFJhdGlvXG4gICAgfTtcbiAgfVxuXG4gIG9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgIGNvbnN0IGRhdGEgPSBldmVudC5kYXRhO1xuICAgIGNvbnN0IGFycmF5QnVmZmVyID0gZGF0YS5hcnJheUJ1ZmZlcjtcbiAgICBjb25zdCBtYXhIZWlnaHQgPSBkYXRhLm1heEhlaWdodDtcbiAgICBjb25zdCBtYXhXaWR0aCA9IGRhdGEubWF4V2lkdGg7XG4gICAgY29uc3QgdHlwZSA9IGRhdGEudHlwZTtcbiAgICBjb25zdCBxdWFsaXR5ID0gZGF0YS5xdWFsaXR5O1xuICAgIGNvbnN0IHBvcnQgPSBldmVudC5wb3J0c1swXTtcblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAobmV3IEJsb2IoW2FycmF5QnVmZmVyXSksIHsgcmVzaXplUXVhbGl0eTogJ2hpZ2gnIH0pO1xuICAgICAgfSlcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChpbWFnZUJpdG1hcCkge1xuICAgICAgICBjb25zdCBkaW1lbnNpb24gPSBrZWVwQXNwZWN0UmF0aW8oaW1hZ2VCaXRtYXAud2lkdGgsIGltYWdlQml0bWFwLmhlaWdodCwgbWF4V2lkdGgsIG1heEhlaWdodCk7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGRpbWVuc2lvbi5oZWlnaHQ7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gZGltZW5zaW9uLndpZHRoO1xuICAgICAgICBjb25zdCBvZmZzY3JlZW5DYW52YXMgPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gb2Zmc2NyZWVuQ2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cbiAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2VCaXRtYXAsIDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgICAgIC8vIEZpcmVmb3ggcXVpcmtzOiA2OC4wLjEgY2FsbCBuYW1lZCBPZmZzY3JlZW5DYW52YXMuY29udmVydFRvQmxvYiBhcyBPZmZzY3JlZW5DYW52YXMudG9CbG9iLlxuICAgICAgICBjb25zdCBjb252ZXJ0VG9CbG9iID0gKG9mZnNjcmVlbkNhbnZhcy5jb252ZXJ0VG9CbG9iIHx8IG9mZnNjcmVlbkNhbnZhcy50b0Jsb2IpLmJpbmQob2Zmc2NyZWVuQ2FudmFzKTtcblxuICAgICAgICByZXR1cm4gY29udmVydFRvQmxvYih7IHR5cGU6IHR5cGUsIHF1YWxpdHk6IHF1YWxpdHkgfSk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKGJsb2IpIHtcbiAgICAgICAgcmV0dXJuIGJsb2JUb0RhdGFVUkwoYmxvYik7XG4gICAgICB9KVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKGRhdGFVUkwpIHtcbiAgICAgICAgcmV0dXJuIHBvcnQucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IGRhdGFVUkwgfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuXG4gICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgICAgIHN0YWNrOiBlcnIuc3RhY2tcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH07XG5cbiAgcG9zdE1lc3NhZ2UoJ3JlYWR5Jyk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVlLFNBQUFBLFNBQUEsRUFBWTtFQUN6QixTQUFTQyxhQUFhQSxDQUFDQyxJQUFJLEVBQUU7SUFDM0IsT0FBTyxJQUFJQyxPQUFPLENBQUMsVUFBVUMsT0FBTyxFQUFFQyxNQUFNLEVBQUU7TUFDNUMsTUFBTUMsTUFBTSxHQUFHLElBQUlDLFVBQVUsQ0FBQyxDQUFDO01BRS9CRCxNQUFNLENBQUNFLE9BQU8sR0FBRyxVQUFVQyxLQUFLLEVBQUU7UUFDaENKLE1BQU0sQ0FBQ0ksS0FBSyxDQUFDQyxLQUFLLElBQUksSUFBSUMsS0FBSyxDQUFDRixLQUFLLENBQUNHLE9BQU8sQ0FBQyxDQUFDO01BQ2pELENBQUM7TUFFRE4sTUFBTSxDQUFDTyxTQUFTLEdBQUcsWUFBWTtRQUM3QlQsT0FBTyxDQUFDRSxNQUFNLENBQUNRLE1BQU0sQ0FBQztNQUN4QixDQUFDO01BRURSLE1BQU0sQ0FBQ1MsYUFBYSxDQUFDYixJQUFJLENBQUM7SUFDNUIsQ0FBQyxDQUFDO0VBQ0o7RUFFQSxTQUFTYyxlQUFlQSxDQUFDQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxTQUFTLEVBQUU7SUFDM0QsSUFBSUgsS0FBSyxHQUFHRSxRQUFRLElBQUlELE1BQU0sR0FBR0UsU0FBUyxFQUFFO01BQzFDO01BQ0EsT0FBTztRQUNMRixNQUFNLEVBQUVBLE1BQU07UUFDZEQsS0FBSyxFQUFFQTtNQUNULENBQUM7SUFDSDtJQUVBLE1BQU1JLFdBQVcsR0FBR0osS0FB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
;