botframework-webchat-component
Version:
React component of botframework-webchat
103 lines (88 loc) • 11.7 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9VdGlscy9kb3duc2NhbGVJbWFnZVRvRGF0YVVSTC9kb3duc2NhbGVJbWFnZVRvRGF0YVVSTFVzaW5nV29ya2VyLndvcmtlci5qcyJdLCJuYW1lcyI6WyJibG9iVG9EYXRhVVJMIiwiYmxvYiIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVhZGVyIiwiRmlsZVJlYWRlciIsIm9uZXJyb3IiLCJldmVudCIsImVycm9yIiwiRXJyb3IiLCJtZXNzYWdlIiwib25sb2FkZW5kIiwicmVzdWx0IiwicmVhZEFzRGF0YVVSTCIsImtlZXBBc3BlY3RSYXRpbyIsIndpZHRoIiwiaGVpZ2h0IiwibWF4V2lkdGgiLCJtYXhIZWlnaHQiLCJhc3BlY3RSYXRpbyIsIm9ubWVzc2FnZSIsImRhdGEiLCJhcnJheUJ1ZmZlciIsInR5cGUiLCJxdWFsaXR5IiwicG9ydCIsInBvcnRzIiwidGhlbiIsImNyZWF0ZUltYWdlQml0bWFwIiwiQmxvYiIsInJlc2l6ZVF1YWxpdHkiLCJpbWFnZUJpdG1hcCIsImRpbWVuc2lvbiIsIm9mZnNjcmVlbkNhbnZhcyIsIk9mZnNjcmVlbkNhbnZhcyIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwiZHJhd0ltYWdlIiwiY29udmVydFRvQmxvYiIsInRvQmxvYiIsImJpbmQiLCJkYXRhVVJMIiwicG9zdE1lc3NhZ2UiLCJjYXRjaCIsImVyciIsImNvbnNvbGUiLCJzdGFjayJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRWUsb0JBQVk7QUFDekIsV0FBU0EsYUFBVCxDQUF1QkMsSUFBdkIsRUFBNkI7QUFDM0IsV0FBTyxJQUFJQyxPQUFKLENBQVksVUFBVUMsT0FBVixFQUFtQkMsTUFBbkIsRUFBMkI7QUFDNUMsWUFBTUMsTUFBTSxHQUFHLElBQUlDLFVBQUosRUFBZjs7QUFFQUQsTUFBQUEsTUFBTSxDQUFDRSxPQUFQLEdBQWlCLFVBQVVDLEtBQVYsRUFBaUI7QUFDaENKLFFBQUFBLE1BQU0sQ0FBQ0ksS0FBSyxDQUFDQyxLQUFOLElBQWUsSUFBSUMsS0FBSixDQUFVRixLQUFLLENBQUNHLE9BQWhCLENBQWhCLENBQU47QUFDRCxPQUZEOztBQUlBTixNQUFBQSxNQUFNLENBQUNPLFNBQVAsR0FBbUIsWUFBWTtBQUM3QlQsUUFBQUEsT0FBTyxDQUFDRSxNQUFNLENBQUNRLE1BQVIsQ0FBUDtBQUNELE9BRkQ7O0FBSUFSLE1BQUFBLE1BQU0sQ0FBQ1MsYUFBUCxDQUFxQmIsSUFBckI7QUFDRCxLQVpNLENBQVA7QUFhRDs7QUFFRCxXQUFTYyxlQUFULENBQXlCQyxLQUF6QixFQUFnQ0MsTUFBaEMsRUFBd0NDLFFBQXhDLEVBQWtEQyxTQUFsRCxFQUE2RDtBQUMzRCxRQUFJSCxLQUFLLEdBQUdFLFFBQVIsSUFBb0JELE1BQU0sR0FBR0UsU0FBakMsRUFBNEM7QUFDMUM7QUFDQSxhQUFPO0FBQ0xGLFFBQUFBLE1BQU0sRUFBRUEsTUFESDtBQUVMRCxRQUFBQSxLQUFLLEVBQUVBO0FBRkYsT0FBUDtBQUlEOztBQUVELFVBQU1JLFdBQVcsR0FBR0osS0FBSyxHQUFHQyxNQUE1Qjs7QUFFQSxRQUFJRyxXQUFXLEdBQUdGLFFBQVEsR0FBR0MsU0FBN0IsRUFBd0M7QUFDdEM7QUFDQSxhQUFPO0FBQ0xGLFFBQUFBLE1BQU0sRUFBRUMsUUFBUSxHQUFHRSxXQURkO0FBRUxKLFFBQUFBLEtBQUssRUFBRUU7QUFGRixPQUFQO0FBSUQsS0FqQjBELENBbUIzRDs7O0FBQ0EsV0FBTztBQUNMRCxNQUFBQSxNQUFNLEVBQUVFLFNBREg7QUFFTEgsTUFBQUEsS0FBSyxFQUFFRyxTQUFTLEdBQUdDO0FBRmQsS0FBUDtBQUlEOztBQUVEQyxFQUFBQSxTQUFTLEdBQUcsVUFBVWIsS0FBVixFQUFpQjtBQUMzQixVQUFNYyxJQUFJLEdBQUdkLEtBQUssQ0FBQ2MsSUFBbkI7QUFDQSxVQUFNQyxXQUFXLEdBQUdELElBQUksQ0FBQ0MsV0FBekI7QUFDQSxVQUFNSixTQUFTLEdBQUdHLElBQUksQ0FBQ0gsU0FBdkI7QUFDQSxVQUFNRCxRQUFRLEdBQUdJLElBQUksQ0FBQ0osUUFBdEI7QUFDQSxVQUFNTSxJQUFJLEdBQUdGLElBQUksQ0FBQ0UsSUFBbEI7QUFDQSxVQUFNQyxPQUFPLEdBQUdILElBQUksQ0FBQ0csT0FBckI7QUFDQSxVQUFNQyxJQUFJLEdBQUdsQixLQUFLLENBQUNtQixLQUFOLENBQVksQ0FBWixDQUFiO0FBRUEsV0FBT3pCLE9BQU8sQ0FBQ0MsT0FBUixHQUNKeUIsSUFESSxDQUNDLFlBQVk7QUFDaEIsYUFBT0MsaUJBQWlCLENBQUMsSUFBSUMsSUFBSixDQUFTLENBQUNQLFdBQUQsQ0FBVCxFQUF3QjtBQUFFUSxRQUFBQSxhQUFhLEVBQUU7QUFBakIsT0FBeEIsQ0FBRCxDQUF4QjtBQUNELEtBSEksRUFJSkgsSUFKSSxDQUlDLFVBQVVJLFdBQVYsRUFBdUI7QUFDM0IsWUFBTUMsU0FBUyxHQUFHbEIsZUFBZSxDQUFDaUIsV0FBVyxDQUFDaEIsS0FBYixFQUFvQmdCLFdBQVcsQ0FBQ2YsTUFBaEMsRUFBd0NDLFFBQXhDLEVBQWtEQyxTQUFsRCxDQUFqQztBQUNBLFlBQU1GLE1BQU0sR0FBR2dCLFNBQVMsQ0FBQ2hCLE1BQXpCO0FBQ0EsWUFBTUQsS0FBSyxHQUFHaUIsU0FBUyxDQUFDakIsS0FBeEI7QUFDQSxZQUFNa0IsZUFBZSxHQUFHLElBQUlDLGVBQUosQ0FBb0JuQixLQUFwQixFQUEyQkMsTUFBM0IsQ0FBeEI7QUFDQSxZQUFNbUIsT0FBTyxHQUFHRixlQUFlLENBQUNHLFVBQWhCLENBQTJCLElBQTNCLENBQWhCO0FBRUFELE1BQUFBLE9BQU8sQ0FBQ0UsU0FBUixDQUFrQk4sV0FBbEIsRUFBK0IsQ0FBL0IsRUFBa0MsQ0FBbEMsRUFBcUNoQixLQUFyQyxFQUE0Q0MsTUFBNUMsRUFQMkIsQ0FTM0I7O0FBQ0EsWUFBTXNCLGFBQWEsR0FBRyxDQUFDTCxlQUFlLENBQUNLLGFBQWhCLElBQWlDTCxlQUFlLENBQUNNLE1BQWxELEVBQTBEQyxJQUExRCxDQUErRFAsZUFBL0QsQ0FBdEI7QUFFQSxhQUFPSyxhQUFhLENBQUM7QUFBRWYsUUFBQUEsSUFBSSxFQUFFQSxJQUFSO0FBQWNDLFFBQUFBLE9BQU8sRUFBRUE7QUFBdkIsT0FBRCxDQUFwQjtBQUNELEtBakJJLEVBa0JKRyxJQWxCSSxDQWtCQyxVQUFVM0IsSUFBVixFQUFnQjtBQUNwQixhQUFPRCxhQUFhLENBQUNDLElBQUQsQ0FBcEI7QUFDRCxLQXBCSSxFQXFCSjJCLElBckJJLENBcUJDLFVBQVVjLE9BQVYsRUFBbUI7QUFDdkIsYUFBT2hCLElBQUksQ0FBQ2lCLFdBQUwsQ0FBaUI7QUFBRTlCLFFBQUFBLE1BQU0sRUFBRTZCO0FBQVYsT0FBakIsQ0FBUDtBQUNELEtBdkJJLEVBd0JKRSxLQXhCSSxDQXdCRSxVQUFVQyxHQUFWLEVBQWU7QUFDcEJDLE1BQUFBLE9BQU8sQ0FBQ3JDLEtBQVIsQ0FBY29DLEdBQWQ7QUFFQW5CLE1BQUFBLElBQUksQ0FBQ2lCLFdBQUwsQ0FBaUI7QUFDZmxDLFFBQUFBLEtBQUssRUFBRTtBQUNMRSxVQUFBQSxPQUFPLEVBQUVrQyxHQUFHLENBQUNsQyxPQURSO0FBRUxvQyxVQUFBQSxLQUFLLEVBQUVGLEdBQUcsQ0FBQ0U7QUFGTjtBQURRLE9BQWpCO0FBTUQsS0FqQ0ksQ0FBUDtBQWtDRCxHQTNDRDs7QUE2Q0FKLEVBQUFBLFdBQVcsQ0FBQyxPQUFELENBQVg7QUFDRCIsInNvdXJjZVJvb3QiOiJjb21wb25lbnQ6Ly8vIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG9iamVjdC1zaG9ydGhhbmQ6IFwib2ZmXCIgKi9cbi8qIGVzbGludCBwcmVmZXItZGVzdHJ1Y3R1cmluZzogXCJvZmZcIiAqL1xuLyogZXNsaW50IHByZWZlci1hcnJvdy1jYWxsYmFjazogXCJvZmZcIiAqL1xuXG4vLyBUaGlzIGZpbGUgaXMgdGhlIGVudHJ5cG9pbnQgb2YgV2ViIFdvcmtlciBhbmQgaXMgbWluaW1hbGx5IHRyYW5zcGlsZWQgdGhyb3VnaCBCYWJlbC5cbi8vIERvIG5vdCBpbmNsdWRlIGFueSBkZXBlbmRlbmNpZXMgaGVyZSBiZWNhdXNlIHRoZXkgd2lsbCBub3QgYmUgYnVuZGxlZC5cblxuLy8gVGhpcyBmaWxlIHdpbGwgYWxzbyBnZXQgbG9hZGVkIGJ5IElFMTEsIHBsZWFzZSBtYWtlIHN1cmUgeW91IGhhbmQtdHJhbnNwaWxlIGl0IGNvcnJlY3RseS5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBibG9iVG9EYXRhVVJMKGJsb2IpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgcmVqZWN0KGV2ZW50LmVycm9yIHx8IG5ldyBFcnJvcihldmVudC5tZXNzYWdlKSk7XG4gICAgICB9O1xuXG4gICAgICByZWFkZXIub25sb2FkZW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICAgICAgfTtcblxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoYmxvYik7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBrZWVwQXNwZWN0UmF0aW8od2lkdGgsIGhlaWdodCwgbWF4V2lkdGgsIG1heEhlaWdodCkge1xuICAgIGlmICh3aWR0aCA8IG1heFdpZHRoICYmIGhlaWdodCA8IG1heEhlaWdodCkge1xuICAgICAgLy8gUGhvdG8gaXMgc21hbGxlciB0aGFuIGJvdGggbWF4aW11bSBkaW1lbnNpb25zLCB0YWtlIGl0IGFzLWlzXG4gICAgICByZXR1cm4ge1xuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgd2lkdGg6IHdpZHRoXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGFzcGVjdFJhdGlvID0gd2lkdGggLyBoZWlnaHQ7XG5cbiAgICBpZiAoYXNwZWN0UmF0aW8gPiBtYXhXaWR0aCAvIG1heEhlaWdodCkge1xuICAgICAgLy8gUGhvdG8gaXMgd2lkZXIgdGhhbiBtYXhpbXVtIGRpbWVuc2lvbiwgZG93bnNjYWxlIGl0IGJhc2VkIG9uIG1heFdpZHRoLlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaGVpZ2h0OiBtYXhXaWR0aCAvIGFzcGVjdFJhdGlvLFxuICAgICAgICB3aWR0aDogbWF4V2lkdGhcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gUGhvdG8gaXMgdGFsbGVyIHRoYW4gbWF4aW11bSBkaW1lbnNpb24sIGRvd25zY2FsZSBpdCBiYXNlZCBvbiBtYXhIZWlnaHQuXG4gICAgcmV0dXJuIHtcbiAgICAgIGhlaWdodDogbWF4SGVpZ2h0LFxuICAgICAgd2lkdGg6IG1heEhlaWdodCAqIGFzcGVjdFJhdGlvXG4gICAgfTtcbiAgfVxuXG4gIG9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgIGNvbnN0IGRhdGEgPSBldmVudC5kYXRhO1xuICAgIGNvbnN0IGFycmF5QnVmZmVyID0gZGF0YS5hcnJheUJ1ZmZlcjtcbiAgICBjb25zdCBtYXhIZWlnaHQgPSBkYXRhLm1heEhlaWdodDtcbiAgICBjb25zdCBtYXhXaWR0aCA9IGRhdGEubWF4V2lkdGg7XG4gICAgY29uc3QgdHlwZSA9IGRhdGEudHlwZTtcbiAgICBjb25zdCBxdWFsaXR5ID0gZGF0YS5xdWFsaXR5O1xuICAgIGNvbnN0IHBvcnQgPSBldmVudC5wb3J0c1swXTtcblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAobmV3IEJsb2IoW2FycmF5QnVmZmVyXSwgeyByZXNpemVRdWFsaXR5OiAnaGlnaCcgfSkpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKGZ1bmN0aW9uIChpbWFnZUJpdG1hcCkge1xuICAgICAgICBjb25zdCBkaW1lbnNpb24gPSBrZWVwQXNwZWN0UmF0aW8oaW1hZ2VCaXRtYXAud2lkdGgsIGltYWdlQml0bWFwLmhlaWdodCwgbWF4V2lkdGgsIG1heEhlaWdodCk7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGRpbWVuc2lvbi5oZWlnaHQ7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gZGltZW5zaW9uLndpZHRoO1xuICAgICAgICBjb25zdCBvZmZzY3JlZW5DYW52YXMgPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gb2Zmc2NyZWVuQ2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cbiAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2VCaXRtYXAsIDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgICAgIC8vIEZpcmVmb3ggcXVpcmtzOiA2OC4wLjEgY2FsbCBuYW1lZCBPZmZzY3JlZW5DYW52YXMuY29udmVydFRvQmxvYiBhcyBPZmZzY3JlZW5DYW52YXMudG9CbG9iLlxuICAgICAgICBjb25zdCBjb252ZXJ0VG9CbG9iID0gKG9mZnNjcmVlbkNhbnZhcy5jb252ZXJ0VG9CbG9iIHx8IG9mZnNjcmVlbkNhbnZhcy50b0Jsb2IpLmJpbmQob2Zmc2NyZWVuQ2FudmFzKTtcblxuICAgICAgICByZXR1cm4gY29udmVydFRvQmxvYih7IHR5cGU6IHR5cGUsIHF1YWxpdHk6IHF1YWxpdHkgfSk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKGJsb2IpIHtcbiAgICAgICAgcmV0dXJuIGJsb2JUb0RhdGFVUkwoYmxvYik7XG4gICAgICB9KVxuICAgICAgLnRoZW4oZnVuY3Rpb24gKGRhdGFVUkwpIHtcbiAgICAgICAgcmV0dXJuIHBvcnQucG9zdE1lc3NhZ2UoeyByZXN1bHQ6IGRhdGFVUkwgfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuXG4gICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgICAgIHN0YWNrOiBlcnIuc3RhY2tcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH07XG5cbiAgcG9zdE1lc3NhZ2UoJ3JlYWR5Jyk7XG59XG4iXX0=
;