botframework-webchat-component
Version:
React component of botframework-webchat
79 lines (75 loc) • 15.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = activityAltText;
var _textFormatToContentType = _interopRequireDefault(require("./textFormatToContentType"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread 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 _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
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 walk(document, walker) {
var nodes = [].slice.call(document.childNodes);
var results = [];
while (nodes.length) {
var _node = nodes.shift();
var childNodes = _node.childNodes;
results.push.apply(results, _toConsumableArray(walker(_node) || []));
nodes.unshift.apply(nodes, _toConsumableArray([].slice.call(childNodes)));
}
return results;
}
// From https://developer.mozilla.org/en-US/docs/Web/HTML/Inline_elements
var HTML_INLINE_TAGS = ['A', 'ABBR', 'ACRONYM', 'AUDIO', 'B', 'BDI', 'BDO', 'BIG', 'BR', 'BUTTON', 'CANVAS', 'CITE', 'CODE', 'DATA', 'DATALIST', 'DEL', 'DFN', 'EM', 'EMBED', 'I', 'IFRAME', 'IMG', 'INPUT', 'INS', 'KBD', 'LABEL', 'MAP', 'MARK', 'METER', 'NOSCRIPT', 'OBJECT', 'OUTPUT', 'PICTURE', 'PROGRESS', 'Q', 'RUBY', 'S', 'SAMP', 'SCRIPT', 'SELECT', 'SLOT', 'SMALL', 'SPAN', 'STRONG', 'SUB', 'SUP', 'SVG', 'TEMPLATE', 'TEXTAREA', 'TIME', 'U', 'TT', 'VAR', 'VIDEO', 'WBR'];
/**
* Computes all text from a given HTML document as flattened array. This is best-effort.
*
* @param {Document} document - HTML document to computes texts from.
*/
function htmlTextAlternatives(document) {
// TODO: [P2] #3923 Revisit this logic with W3C standard, we could do a better text alternatives computation.
// For example, <abbr title="..."> is not computed.
// https://www.w3.org/TR/accname-1.1/#mapping_additional_nd_name
return walk(document, function (node) {
var nodeType = node.nodeType,
tagName = node.tagName,
textContent = node.textContent;
if (nodeType === Node.TEXT_NODE) {
return [textContent];
} else if (tagName === 'IMG') {
return [node.getAttribute('alt')];
} else if (!HTML_INLINE_TAGS.includes(tagName)) {
return ['\n'];
}
});
}
/**
* Returns the text alternatives for a message activity.
*
* @param {object} activity - Activity to compute the text alternatives.
* @param {function} renderMarkdownAsHTML - Callback function to render Markdown as HTML string.
*/
function activityAltText(activity, renderMarkdownAsHTML) {
var _activity$channelData, _activity$channelData2, _activity$channelData3;
if (activity.type !== 'message') {
return false;
}
var fallbackText = activity === null || activity === void 0 ? void 0 : (_activity$channelData = activity.channelData) === null || _activity$channelData === void 0 ? void 0 : _activity$channelData['webchat:fallback-text'];
if (typeof fallbackText === 'string') {
// If `fallbackText` is an empty string, we will treat the activity as presentational and skip narrating it (return false).
return fallbackText || false;
}
var text = (activity === null || activity === void 0 ? void 0 : (_activity$channelData2 = activity.channelData) === null || _activity$channelData2 === void 0 ? void 0 : (_activity$channelData3 = _activity$channelData2.messageBack) === null || _activity$channelData3 === void 0 ? void 0 : _activity$channelData3.displayText) || activity.text;
if (!text) {
// We will continue to narrate the activity, as empty.
return '';
}
if (renderMarkdownAsHTML && (0, _textFormatToContentType.default)(activity.textFormat) === 'text/markdown') {
return htmlTextAlternatives(new DOMParser().parseFromString(renderMarkdownAsHTML(text), 'text/html')).join('').replace(/\n{2,}/g, '\n').trim();
}
return text;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGV4dEZvcm1hdFRvQ29udGVudFR5cGUiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIm8iLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJpdGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJpc0FycmF5IiwibGVuIiwibGVuZ3RoIiwiaSIsImFycjIiLCJ3YWxrIiwiZG9jdW1lbnQiLCJ3YWxrZXIiLCJub2RlcyIsImNoaWxkTm9kZXMiLCJyZXN1bHRzIiwibm9kZSIsInNoaWZ0IiwicHVzaCIsImFwcGx5IiwidW5zaGlmdCIsIkhUTUxfSU5MSU5FX1RBR1MiLCJodG1sVGV4dEFsdGVybmF0aXZlcyIsIm5vZGVUeXBlIiwidGFnTmFtZSIsInRleHRDb250ZW50IiwiTm9kZSIsIlRFWFRfTk9ERSIsImdldEF0dHJpYnV0ZSIsImluY2x1ZGVzIiwiYWN0aXZpdHlBbHRUZXh0IiwiYWN0aXZpdHkiLCJyZW5kZXJNYXJrZG93bkFzSFRNTCIsIl9hY3Rpdml0eSRjaGFubmVsRGF0YSIsIl9hY3Rpdml0eSRjaGFubmVsRGF0YTIiLCJfYWN0aXZpdHkkY2hhbm5lbERhdGEzIiwidHlwZSIsImZhbGxiYWNrVGV4dCIsImNoYW5uZWxEYXRhIiwidGV4dCIsIm1lc3NhZ2VCYWNrIiwiZGlzcGxheVRleHQiLCJ0ZXh0Rm9ybWF0VG9Db250ZW50VHlwZSIsInRleHRGb3JtYXQiLCJET01QYXJzZXIiLCJwYXJzZUZyb21TdHJpbmciLCJqb2luIiwicmVwbGFjZSIsInRyaW0iXSwic291cmNlUm9vdCI6ImNvbXBvbmVudDovLy8iLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9VdGlscy9hY3Rpdml0eUFsdFRleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRleHRGb3JtYXRUb0NvbnRlbnRUeXBlIGZyb20gJy4vdGV4dEZvcm1hdFRvQ29udGVudFR5cGUnO1xuXG5mdW5jdGlvbiB3YWxrPFQgZXh0ZW5kcyBOb2RlPihkb2N1bWVudDogRG9jdW1lbnQsIHdhbGtlcjogKG5vZGU6IFQpID0+IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICBjb25zdCBub2RlczogVFtdID0gW10uc2xpY2UuY2FsbChkb2N1bWVudC5jaGlsZE5vZGVzKTtcbiAgY29uc3QgcmVzdWx0czogc3RyaW5nW10gPSBbXTtcblxuICB3aGlsZSAobm9kZXMubGVuZ3RoKSB7XG4gICAgY29uc3Qgbm9kZSA9IG5vZGVzLnNoaWZ0KCk7XG4gICAgY29uc3QgeyBjaGlsZE5vZGVzIH0gPSBub2RlO1xuXG4gICAgcmVzdWx0cy5wdXNoKC4uLih3YWxrZXIobm9kZSkgfHwgW10pKTtcbiAgICBub2Rlcy51bnNoaWZ0KC4uLltdLnNsaWNlLmNhbGwoY2hpbGROb2RlcykpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbi8vIEZyb20gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9JbmxpbmVfZWxlbWVudHNcbmNvbnN0IEhUTUxfSU5MSU5FX1RBR1MgPSBbXG4gICdBJyxcbiAgJ0FCQlInLFxuICAnQUNST05ZTScsXG4gICdBVURJTycsXG4gICdCJyxcbiAgJ0JESScsXG4gICdCRE8nLFxuICAnQklHJyxcbiAgJ0JSJyxcbiAgJ0JVVFRPTicsXG4gICdDQU5WQVMnLFxuICAnQ0lURScsXG4gICdDT0RFJyxcbiAgJ0RBVEEnLFxuICAnREFUQUxJU1QnLFxuICAnREVMJyxcbiAgJ0RGTicsXG4gICdFTScsXG4gICdFTUJFRCcsXG4gICdJJyxcbiAgJ0lGUkFNRScsXG4gICdJTUcnLFxuICAnSU5QVVQnLFxuICAnSU5TJyxcbiAgJ0tCRCcsXG4gICdMQUJFTCcsXG4gICdNQVAnLFxuICAnTUFSSycsXG4gICdNRVRFUicsXG4gICdOT1NDUklQVCcsXG4gICdPQkpFQ1QnLFxuICAnT1VUUFVUJyxcbiAgJ1BJQ1RVUkUnLFxuICAnUFJPR1JFU1MnLFxuICAnUScsXG4gICdSVUJZJyxcbiAgJ1MnLFxuICAnU0FNUCcsXG4gICdTQ1JJUFQnLFxuICAnU0VMRUNUJyxcbiAgJ1NMT1QnLFxuICAnU01BTEwnLFxuICAnU1BBTicsXG4gICdTVFJPTkcnLFxuICAnU1VCJyxcbiAgJ1NVUCcsXG4gICdTVkcnLFxuICAnVEVNUExBVEUnLFxuICAnVEVYVEFSRUEnLFxuICAnVElNRScsXG4gICdVJyxcbiAgJ1RUJyxcbiAgJ1ZBUicsXG4gICdWSURFTycsXG4gICdXQlInXG5dO1xuXG4vKipcbiAqIENvbXB1dGVzIGFsbCB0ZXh0IGZyb20gYSBnaXZlbiBIVE1MIGRvY3VtZW50IGFzIGZsYXR0ZW5lZCBhcnJheS4gVGhpcyBpcyBiZXN0LWVmZm9ydC5cbiAqXG4gKiBAcGFyYW0ge0RvY3VtZW50fSBkb2N1bWVudCAtIEhUTUwgZG9jdW1lbnQgdG8gY29tcHV0ZXMgdGV4dHMgZnJvbS5cbiAqL1xuZnVuY3Rpb24gaHRtbFRleHRBbHRlcm5hdGl2ZXMoZG9jdW1lbnQ6IERvY3VtZW50KTogc3RyaW5nW10ge1xuICAvLyBUT0RPOiBbUDJdICMzOTIzIFJldmlzaXQgdGhpcyBsb2dpYyB3aXRoIFczQyBzdGFuZGFyZCwgd2UgY291bGQgZG8gYSBiZXR0ZXIgdGV4dCBhbHRlcm5hdGl2ZXMgY29tcHV0YXRpb24uXG4gIC8vICAgICAgIEZvciBleGFtcGxlLCA8YWJiciB0aXRsZT1cIi4uLlwiPiBpcyBub3QgY29tcHV0ZWQuXG4gIC8vICAgICAgIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9hY2NuYW1lLTEuMS8jbWFwcGluZ19hZGRpdGlvbmFsX25kX25hbWVcbiAgcmV0dXJuIHdhbGs8SFRNTEVsZW1lbnQ+KGRvY3VtZW50LCBub2RlID0+IHtcbiAgICBjb25zdCB7IG5vZGVUeXBlLCB0YWdOYW1lLCB0ZXh0Q29udGVudCB9ID0gbm9kZTtcblxuICAgIGlmIChub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgIHJldHVybiBbdGV4dENvbnRlbnRdO1xuICAgIH0gZWxzZSBpZiAodGFnTmFtZSA9PT0gJ0lNRycpIHtcbiAgICAgIHJldHVybiBbbm9kZS5nZXRBdHRyaWJ1dGUoJ2FsdCcpXTtcbiAgICB9IGVsc2UgaWYgKCFIVE1MX0lOTElORV9UQUdTLmluY2x1ZGVzKHRhZ05hbWUpKSB7XG4gICAgICByZXR1cm4gWydcXG4nXTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRleHQgYWx0ZXJuYXRpdmVzIGZvciBhIG1lc3NhZ2UgYWN0aXZpdHkuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGFjdGl2aXR5IC0gQWN0aXZpdHkgdG8gY29tcHV0ZSB0aGUgdGV4dCBhbHRlcm5hdGl2ZXMuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSByZW5kZXJNYXJrZG93bkFzSFRNTCAtIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHJlbmRlciBNYXJrZG93biBhcyBIVE1MIHN0cmluZy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWN0aXZpdHlBbHRUZXh0KFxuICBhY3Rpdml0eTogYW55LFxuICByZW5kZXJNYXJrZG93bkFzSFRNTD86IChtYXJrZG93bjogc3RyaW5nKSA9PiBzdHJpbmdcbik6IGZhbHNlIHwgc3RyaW5nIHtcbiAgaWYgKGFjdGl2aXR5LnR5cGUgIT09ICdtZXNzYWdlJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGZhbGxiYWNrVGV4dCA9IGFjdGl2aXR5Py5jaGFubmVsRGF0YT8uWyd3ZWJjaGF0OmZhbGxiYWNrLXRleHQnXTtcblxuICBpZiAodHlwZW9mIGZhbGxiYWNrVGV4dCA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBJZiBgZmFsbGJhY2tUZXh0YCBpcyBhbiBlbXB0eSBzdHJpbmcsIHdlIHdpbGwgdHJlYXQgdGhlIGFjdGl2aXR5IGFzIHByZXNlbnRhdGlvbmFsIGFuZCBza2lwIG5hcnJhdGluZyBpdCAocmV0dXJuIGZhbHNlKS5cbiAgICByZXR1cm4gZmFsbGJhY2tUZXh0IHx8IGZhbHNlO1xuICB9XG5cbiAgY29uc3QgdGV4dCA9IGFjdGl2aXR5Py5jaGFubmVsRGF0YT8ubWVzc2FnZUJhY2s/LmRpc3BsYXlUZXh0IHx8IGFjdGl2aXR5LnRleHQ7XG5cbiAgaWYgKCF0ZXh0KSB7XG4gICAgLy8gV2Ugd2lsbCBjb250aW51ZSB0byBuYXJyYXRlIHRoZSBhY3Rpdml0eSwgYXMgZW1wdHkuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgaWYgKHJlbmRlck1hcmtkb3duQXNIVE1MICYmIHRleHRGb3JtYXRUb0NvbnRlbnRUeXBlKGFjdGl2aXR5LnRleHRGb3JtYXQpID09PSAndGV4dC9tYXJrZG93bicpIHtcbiAgICByZXR1cm4gaHRtbFRleHRBbHRlcm5hdGl2ZXMobmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhyZW5kZXJNYXJrZG93bkFzSFRNTCh0ZXh0KSwgJ3RleHQvaHRtbCcpKVxuICAgICAgLmpvaW4oJycpXG4gICAgICAucmVwbGFjZSgvXFxuezIsfS9ndSwgJ1xcbicpXG4gICAgICAudHJpbSgpO1xuICB9XG5cbiAgcmV0dXJuIHRleHQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLHdCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBZ0UsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFBQSxTQUFBRyxtQkFBQUMsR0FBQSxXQUFBQyxrQkFBQSxDQUFBRCxHQUFBLEtBQUFFLGdC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