botframework-webchat-component
Version:
React component of botframework-webchat
120 lines (119 loc) • 19.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _botframeworkWebchatApi = require("botframework-webchat-api");
var _classnames = _interopRequireDefault(require("classnames"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireDefault(require("react"));
var _DownloadIcon = _interopRequireDefault(require("./Assets/DownloadIcon"));
var _useStyleSet3 = _interopRequireDefault(require("../hooks/useStyleSet"));
var _useStyleToEmotionObject = _interopRequireDefault(require("../hooks/internal/useStyleToEmotionObject"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var useByteFormatter = _botframeworkWebchatApi.hooks.useByteFormatter,
useDirection = _botframeworkWebchatApi.hooks.useDirection,
useLocalizer = _botframeworkWebchatApi.hooks.useLocalizer;
var ROOT_STYLE = {
display: 'flex',
'& .webchat__fileContent__buttonLink': {
display: 'flex',
flex: 1
},
'& .webchat__fileContent__badge': {
display: 'flex',
flex: 1,
flexDirection: 'column'
}
};
var ALLOWED_PROTOCOLS = ['blob:', 'data:', 'http:', 'https:'];
function isAllowedProtocol(url) {
try {
return ALLOWED_PROTOCOLS.includes(new URL(url).protocol);
} catch (err) {
return false;
}
}
var FileContentBadge = function FileContentBadge(_ref) {
var downloadIcon = _ref.downloadIcon,
fileName = _ref.fileName,
size = _ref.size;
var _useDirection = useDirection(),
_useDirection2 = _slicedToArray(_useDirection, 1),
direction = _useDirection2[0];
var formatByte = useByteFormatter();
var localizedSize = typeof size === 'number' && formatByte(size);
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
"aria-hidden": true,
className: "webchat__fileContent__badge"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "webchat__fileContent__fileName"
}, fileName), !!localizedSize && /*#__PURE__*/_react.default.createElement("div", {
className: "webchat__fileContent__size"
}, localizedSize)), downloadIcon && /*#__PURE__*/_react.default.createElement(_DownloadIcon.default, {
className: (0, _classnames.default)('webchat__fileContent__downloadIcon', direction === 'rtl' && 'webchat__fileContent__downloadIcon--rtl'),
size: 1.5
}));
};
FileContentBadge.defaultProps = {
downloadIcon: false,
size: undefined
};
FileContentBadge.propTypes = {
downloadIcon: _propTypes.default.bool,
fileName: _propTypes.default.string.isRequired,
size: _propTypes.default.number
};
var FileContent = function FileContent(_ref2) {
var className = _ref2.className,
href = _ref2.href,
fileName = _ref2.fileName,
size = _ref2.size;
var _useStyleSet = (0, _useStyleSet3.default)(),
_useStyleSet2 = _slicedToArray(_useStyleSet, 1),
fileContentStyleSet = _useStyleSet2[0].fileContent;
var localize = useLocalizer();
var localizeBytes = useByteFormatter();
var rootClassName = (0, _useStyleToEmotionObject.default)()(ROOT_STYLE) + '';
var localizedSize = typeof size === 'number' && localizeBytes(size);
href = href && isAllowedProtocol(href) ? href : undefined;
var alt = localize(href ? localizedSize ? 'FILE_CONTENT_DOWNLOADABLE_WITH_SIZE_ALT' : 'FILE_CONTENT_DOWNLOADABLE_ALT' : localizedSize ? 'FILE_CONTENT_WITH_SIZE_ALT' : 'FILE_CONTENT_ALT', fileName, localizedSize);
return /*#__PURE__*/_react.default.createElement("div", {
className: (0, _classnames.default)('webchat__fileContent', rootClassName, fileContentStyleSet + '', (className || '') + '')
}, href ? /*#__PURE__*/_react.default.createElement("a", {
"aria-label": alt,
className: "webchat__fileContent__buttonLink",
download: fileName,
href: href,
rel: "noopener noreferrer",
target: "_blank"
}, /*#__PURE__*/_react.default.createElement(FileContentBadge, {
downloadIcon: true,
fileName: fileName,
size: size
})) : /*#__PURE__*/_react.default.createElement(FileContentBadge, {
downloadIcon: false,
fileName: fileName,
size: size
}));
};
FileContent.defaultProps = {
className: '',
href: undefined,
size: undefined
};
FileContent.propTypes = {
className: _propTypes.default.string,
fileName: _propTypes.default.string.isRequired,
href: _propTypes.default.string,
size: _propTypes.default.number
};
var _default = FileContent;
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYm90ZnJhbWV3b3JrV2ViY2hhdEFwaSIsInJlcXVpcmUiLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcHJvcFR5cGVzIiwiX3JlYWN0IiwiX0Rvd25sb2FkSWNvbiIsIl91c2VTdHlsZVNldDMiLCJfdXNlU3R5bGVUb0Vtb3Rpb25PYmplY3QiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiaSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJvIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwibGVuZ3RoIiwiYXJyMiIsIl9pIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJfYXJyIiwiX24iLCJfZCIsIl9zIiwiX2UiLCJuZXh0IiwiZG9uZSIsInB1c2giLCJ2YWx1ZSIsImVyciIsImlzQXJyYXkiLCJ1c2VCeXRlRm9ybWF0dGVyIiwiaG9va3MiLCJ1c2VEaXJlY3Rpb24iLCJ1c2VMb2NhbGl6ZXIiLCJST09UX1NUWUxFIiwiZGlzcGxheSIsImZsZXgiLCJmbGV4RGlyZWN0aW9uIiwiQUxMT1dFRF9QUk9UT0NPTFMiLCJpc0FsbG93ZWRQcm90b2NvbCIsInVybCIsImluY2x1ZGVzIiwiVVJMIiwicHJvdG9jb2wiLCJGaWxlQ29udGVudEJhZGdlIiwiX3JlZiIsImRvd25sb2FkSWNvbiIsImZpbGVOYW1lIiwic2l6ZSIsIl91c2VEaXJlY3Rpb24iLCJfdXNlRGlyZWN0aW9uMiIsImRpcmVjdGlvbiIsImZvcm1hdEJ5dGUiLCJsb2NhbGl6ZWRTaXplIiwiY3JlYXRlRWxlbWVudCIsIkZyYWdtZW50IiwiY2xhc3NOYW1lIiwiY2xhc3NOYW1lcyIsImRlZmF1bHRQcm9wcyIsInVuZGVmaW5lZCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwibnVtYmVyIiwiRmlsZUNvbnRlbnQiLCJfcmVmMiIsImhyZWYiLCJfdXNlU3R5bGVTZXQiLCJ1c2VTdHlsZVNldCIsIl91c2VTdHlsZVNldDIiLCJmaWxlQ29udGVudFN0eWxlU2V0IiwiZmlsZUNvbnRlbnQiLCJsb2NhbGl6ZSIsImxvY2FsaXplQnl0ZXMiLCJyb290Q2xhc3NOYW1lIiwidXNlU3R5bGVUb0Vtb3Rpb25PYmplY3QiLCJhbHQiLCJkb3dubG9hZCIsInJlbCIsInRhcmdldCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiY29tcG9uZW50Oi8vLyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0F0dGFjaG1lbnQvRmlsZUNvbnRlbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhvb2tzIH0gZnJvbSAnYm90ZnJhbWV3b3JrLXdlYmNoYXQtYXBpJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyBGQyB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IERvd25sb2FkSWNvbiBmcm9tICcuL0Fzc2V0cy9Eb3dubG9hZEljb24nO1xuaW1wb3J0IHVzZVN0eWxlU2V0IGZyb20gJy4uL2hvb2tzL3VzZVN0eWxlU2V0JztcbmltcG9ydCB1c2VTdHlsZVRvRW1vdGlvbk9iamVjdCBmcm9tICcuLi9ob29rcy9pbnRlcm5hbC91c2VTdHlsZVRvRW1vdGlvbk9iamVjdCc7XG5cbmNvbnN0IHsgdXNlQnl0ZUZvcm1hdHRlciwgdXNlRGlyZWN0aW9uLCB1c2VMb2NhbGl6ZXIgfSA9IGhvb2tzO1xuXG5jb25zdCBST09UX1NUWUxFID0ge1xuICBkaXNwbGF5OiAnZmxleCcsXG5cbiAgJyYgLndlYmNoYXRfX2ZpbGVDb250ZW50X19idXR0b25MaW5rJzoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4OiAxXG4gIH0sXG5cbiAgJyYgLndlYmNoYXRfX2ZpbGVDb250ZW50X19iYWRnZSc6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleDogMSxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJ1xuICB9XG59O1xuXG5jb25zdCBBTExPV0VEX1BST1RPQ09MUyA9IFsnYmxvYjonLCAnZGF0YTonLCAnaHR0cDonLCAnaHR0cHM6J107XG5cbmZ1bmN0aW9uIGlzQWxsb3dlZFByb3RvY29sKHVybCkge1xuICB0cnkge1xuICAgIHJldHVybiBBTExPV0VEX1BST1RPQ09MUy5pbmNsdWRlcyhuZXcgVVJMKHVybCkucHJvdG9jb2wpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuY29uc3QgRmlsZUNvbnRlbnRCYWRnZSA9ICh7IGRvd25sb2FkSWNvbiwgZmlsZU5hbWUsIHNpemUgfSkgPT4ge1xuICBjb25zdCBbZGlyZWN0aW9uXSA9IHVzZURpcmVjdGlvbigpO1xuICBjb25zdCBmb3JtYXRCeXRlID0gdXNlQnl0ZUZvcm1hdHRlcigpO1xuXG4gIGNvbnN0IGxvY2FsaXplZFNpemUgPSB0eXBlb2Ygc2l6ZSA9PT0gJ251bWJlcicgJiYgZm9ybWF0Qnl0ZShzaXplKTtcblxuICByZXR1cm4gKFxuICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgIDxkaXYgYXJpYS1oaWRkZW49e3RydWV9IGNsYXNzTmFtZT1cIndlYmNoYXRfX2ZpbGVDb250ZW50X19iYWRnZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndlYmNoYXRfX2ZpbGVDb250ZW50X19maWxlTmFtZVwiPntmaWxlTmFtZX08L2Rpdj5cbiAgICAgICAgeyEhbG9jYWxpemVkU2l6ZSAmJiA8ZGl2IGNsYXNzTmFtZT1cIndlYmNoYXRfX2ZpbGVDb250ZW50X19zaXplXCI+e2xvY2FsaXplZFNpemV9PC9kaXY+fVxuICAgICAgPC9kaXY+XG4gICAgICB7ZG93bmxvYWRJY29uICYmIChcbiAgICAgICAgPERvd25sb2FkSWNvblxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcbiAgICAgICAgICAgICd3ZWJjaGF0X19maWxlQ29udGVudF9fZG93bmxvYWRJY29uJyxcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9PT0gJ3J0bCcgJiYgJ3dlYmNoYXRfX2ZpbGVDb250ZW50X19kb3dubG9hZEljb24tLXJ0bCdcbiAgICAgICAgICApfVxuICAgICAgICAgIHNpemU9ezEuNX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgKTtcbn07XG5cbkZpbGVDb250ZW50QmFkZ2UuZGVmYXVsdFByb3BzID0ge1xuICBkb3dubG9hZEljb246IGZhbHNlLFxuICBzaXplOiB1bmRlZmluZWRcbn07XG5cbkZpbGVDb250ZW50QmFkZ2UucHJvcFR5cGVzID0ge1xuICBkb3dubG9hZEljb246IFByb3BUeXBlcy5ib29sLFxuICBmaWxlTmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBzaXplOiBQcm9wVHlwZXMubnVtYmVyXG59O1xuXG50eXBlIEZpbGVDb250ZW50UHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgaHJlZj86IHN0cmluZztcbiAgc2l6ZT86IG51bWJlcjtcbn07XG5cbmNvbnN0IEZpbGVDb250ZW50OiBGQzxGaWxlQ29udGVudFByb3BzPiA9ICh7IGNsYXNzTmFtZSwgaHJlZiwgZmlsZU5hbWUsIHNpemUgfSkgPT4ge1xuICBjb25zdCBbeyBmaWxlQ29udGVudDogZmlsZUNvbnRlbnRTdHlsZVNldCB9XSA9IHVzZVN0eWxlU2V0KCk7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemVyKCk7XG4gIGNvbnN0IGxvY2FsaXplQnl0ZXMgPSB1c2VCeXRlRm9ybWF0dGVyKCk7XG4gIGNvbnN0IHJvb3RDbGFzc05hbWUgPSB1c2VTdHlsZVRvRW1vdGlvbk9iamVjdCgpKFJPT1RfU1RZTEUpICsgJyc7XG5cbiAgY29uc3QgbG9jYWxpemVkU2l6ZSA9IHR5cGVvZiBzaXplID09PSAnbnVtYmVyJyAmJiBsb2NhbGl6ZUJ5dGVzKHNpemUpO1xuXG4gIGhyZWYgPSBocmVmICYmIGlzQWxsb3dlZFByb3RvY29sKGhyZWYpID8gaHJlZiA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBhbHQgPSBsb2NhbGl6ZShcbiAgICBocmVmXG4gICAgICA/IGxvY2FsaXplZFNpemVcbiAgICAgICAgPyAnRklMRV9DT05URU5UX0RPV05MT0FEQUJMRV9XSVRIX1NJWkVfQUxUJ1xuICAgICAgICA6ICdGSUxFX0NPTlRFTlRfRE9XTkxPQURBQkxFX0FMVCdcbiAgICAgIDogbG9jYWxpemVkU2l6ZVxuICAgICAgICA/ICdGSUxFX0NPTlRFTlRfV0lUSF9TSVpFX0FMVCdcbiAgICAgICAgOiAnRklMRV9DT05URU5UX0FMVCcsXG4gICAgZmlsZU5hbWUsXG4gICAgbG9jYWxpemVkU2l6ZVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCd3ZWJjaGF0X19maWxlQ29udGVudCcsIHJvb3RDbGFzc05hbWUsIGZpbGVDb250ZW50U3R5bGVTZXQgKyAnJywgKGNsYXNzTmFtZSB8fCAnJykgKyAnJyl9XG4gICAgPlxuICAgICAge2hyZWYgPyAoXG4gICAgICAgIDxhXG4gICAgICAgICAgYXJpYS1sYWJlbD17YWx0fVxuICAgICAgICAgIGNsYXNzTmFtZT1cIndlYmNoYXRfX2ZpbGVDb250ZW50X19idXR0b25MaW5rXCJcbiAgICAgICAgICBkb3dubG9hZD17ZmlsZU5hbWV9XG4gICAgICAgICAgaHJlZj17aHJlZn1cbiAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICA+XG4gICAgICAgICAgPEZpbGVDb250ZW50QmFkZ2UgZG93bmxvYWRJY29uPXt0cnVlfSBmaWxlTmFtZT17ZmlsZU5hbWV9IHNpemU9e3NpemV9IC8+XG4gICAgICAgIDwvYT5cbiAgICAgICkgOiAoXG4gICAgICAgIDxGaWxlQ29udGVudEJhZGdlIGRvd25sb2FkSWNvbj17ZmFsc2V9IGZpbGVOYW1lPXtmaWxlTmFtZX0gc2l6ZT17c2l6ZX0gLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5GaWxlQ29udGVudC5kZWZhdWx0UHJvcHMgPSB7XG4gIGNsYXNzTmFtZTogJycsXG4gIGhyZWY6IHVuZGVmaW5lZCxcbiAgc2l6ZTogdW5kZWZpbmVkXG59O1xuXG5GaWxlQ29udGVudC5wcm9wVHlwZXMgPSB7XG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZmlsZU5hbWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaHJlZjogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2l6ZTogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsZUNvbnRlbnQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLHVCQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSyxhQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTyx3QkFBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQWdGLFNBQUFFLHVCQUFBTSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEs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