botframework-webchat 4.15.10-main.20230908.de79e0e → 4.15.10-main.20230911.d62393e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/webchat-es5.js +1 -1
  2. package/dist/webchat-minimal.js +1 -1
  3. package/dist/webchat.js +1 -1
  4. package/lib/addVersion.js +1 -1
  5. package/lib/createFullStyleSet.d.ts +330 -32
  6. package/lib/createFullStyleSet.d.ts.map +1 -1
  7. package/lib/index.d.ts +1 -1
  8. package/lib/index.d.ts.map +1 -1
  9. package/lib/index.js +2 -2
  10. package/lib/markdown/markdownItPlugins/ariaLabel.d.ts +6 -0
  11. package/lib/markdown/markdownItPlugins/ariaLabel.d.ts.map +1 -0
  12. package/lib/markdown/markdownItPlugins/ariaLabel.js +64 -0
  13. package/lib/markdown/markdownItPlugins/betterLink.d.ts +22 -0
  14. package/lib/markdown/markdownItPlugins/betterLink.d.ts.map +1 -0
  15. package/lib/markdown/markdownItPlugins/betterLink.js +114 -0
  16. package/lib/markdown/markdownItPlugins/respectCRLF.d.ts +3 -0
  17. package/lib/markdown/markdownItPlugins/respectCRLF.d.ts.map +1 -0
  18. package/lib/markdown/markdownItPlugins/respectCRLF.js +19 -0
  19. package/lib/markdown/private/iterateLinkDefinitions.d.ts +3 -0
  20. package/lib/markdown/private/iterateLinkDefinitions.d.ts.map +1 -0
  21. package/lib/markdown/private/iterateLinkDefinitions.js +84 -0
  22. package/lib/markdown/renderMarkdown.d.ts +8 -0
  23. package/lib/markdown/renderMarkdown.d.ts.map +1 -0
  24. package/lib/markdown/renderMarkdown.js +119 -0
  25. package/lib/useComposerProps.js +2 -2
  26. package/package.json +9 -7
  27. package/src/__tests__/renderMarkdown.spec.js +3 -3
  28. package/src/index.ts +1 -1
  29. package/src/markdown/markdownItPlugins/ariaLabel.spec.ts +27 -0
  30. package/src/markdown/markdownItPlugins/ariaLabel.ts +52 -0
  31. package/src/markdown/markdownItPlugins/betterLink.spec.ts +80 -0
  32. package/src/markdown/markdownItPlugins/betterLink.ts +113 -0
  33. package/src/markdown/markdownItPlugins/respectCRLF.ts +7 -0
  34. package/src/markdown/private/iterateLinkDefinitions.ts +14 -0
  35. package/src/markdown/renderMarkdown.ts +146 -0
  36. package/src/useComposerProps.ts +1 -1
  37. package/lib/renderMarkdown.d.ts +0 -6
  38. package/lib/renderMarkdown.d.ts.map +0 -1
  39. package/lib/renderMarkdown.js +0 -115
  40. package/src/renderMarkdown.ts +0 -140
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _markdownItForInline = _interopRequireDefault(require("markdown-it-for-inline"));
15
+
16
+ var _markdownIt = _interopRequireDefault(require("markdown-it"));
17
+
18
+ // Put a transparent pixel instead of the "open in new window" icon, so developers can easily modify the icon in CSS.
19
+ var TRANSPARENT_GIF = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
20
+ // This is used for parsing Markdown for external links.
21
+ var internalMarkdownIt = new _markdownIt.default();
22
+
23
+ function setTokenAttribute(attrs, name, value) {
24
+ var index = attrs.findIndex(function (entry) {
25
+ return entry[0] === name;
26
+ });
27
+
28
+ if (value === false) {
29
+ ~index && attrs.splice(index, 1);
30
+ } else if (typeof value === 'string') {
31
+ if (~index) {
32
+ attrs[+index][1] = value;
33
+ } else {
34
+ attrs.push([name, value]);
35
+ }
36
+ } else if (typeof value === 'function') {
37
+ if (~index) {
38
+ attrs[+index][1] = value(attrs[+index][1]);
39
+ } else {
40
+ attrs.push([name, value()]);
41
+ }
42
+ }
43
+ }
44
+
45
+ var betterLink = function betterLink(markdown, decorate) {
46
+ return markdown.use(_markdownItForInline.default, 'url_new_win', 'link_open', function (tokens, index) {
47
+ var indexOfLinkCloseToken = tokens.indexOf(tokens.slice(index + 1).find(function (_ref) {
48
+ var type = _ref.type;
49
+ return type === 'link_close';
50
+ }));
51
+ var token = tokens[+index];
52
+
53
+ var _token$attrs$find = token.attrs.find(function (_ref2) {
54
+ var _ref3 = (0, _slicedToArray2.default)(_ref2, 1),
55
+ name = _ref3[0];
56
+
57
+ return name === 'href';
58
+ }),
59
+ _token$attrs$find2 = (0, _slicedToArray2.default)(_token$attrs$find, 2),
60
+ href = _token$attrs$find2[1];
61
+
62
+ var nodesInLink = tokens.slice(index + 1, indexOfLinkCloseToken);
63
+ var textContent = nodesInLink.filter(function (_ref4) {
64
+ var type = _ref4.type;
65
+ return type === 'text';
66
+ }).map(function (_ref5) {
67
+ var content = _ref5.content;
68
+ return content;
69
+ }).join(' ');
70
+ var decoration = decorate(href, textContent);
71
+
72
+ if (!decoration) {
73
+ return;
74
+ }
75
+
76
+ var ariaLabel = decoration.ariaLabel,
77
+ asButton = decoration.asButton,
78
+ className = decoration.className,
79
+ iconAlt = decoration.iconAlt,
80
+ iconClassName = decoration.iconClassName,
81
+ rel = decoration.rel,
82
+ target = decoration.target,
83
+ title = decoration.title;
84
+ setTokenAttribute(token.attrs, 'aria-label', ariaLabel);
85
+ setTokenAttribute(token.attrs, 'class', className);
86
+ setTokenAttribute(token.attrs, 'title', title);
87
+
88
+ if (iconClassName) {
89
+ var iconTokens = internalMarkdownIt.parseInline("![](".concat(TRANSPARENT_GIF, ")"))[0].children;
90
+ setTokenAttribute(iconTokens[0].attrs, 'class', iconClassName);
91
+ setTokenAttribute(iconTokens[0].attrs, 'title', iconAlt); // Add an icon before </a>.
92
+
93
+ ~indexOfLinkCloseToken && tokens.splice.apply(tokens, [indexOfLinkCloseToken, 0].concat((0, _toConsumableArray2.default)(iconTokens)));
94
+ }
95
+
96
+ if (asButton) {
97
+ setTokenAttribute(token.attrs, 'href', false);
98
+ token.tag = 'button';
99
+ setTokenAttribute(token.attrs, 'type', 'button');
100
+ setTokenAttribute(token.attrs, 'value', href);
101
+
102
+ if (~indexOfLinkCloseToken) {
103
+ tokens[+indexOfLinkCloseToken].tag = 'button';
104
+ }
105
+ } else {
106
+ setTokenAttribute(token.attrs, 'rel', rel);
107
+ setTokenAttribute(token.attrs, 'target', target);
108
+ }
109
+ });
110
+ };
111
+
112
+ var _default = betterLink;
113
+ exports.default = _default;
114
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUUkFOU1BBUkVOVF9HSUYiLCJpbnRlcm5hbE1hcmtkb3duSXQiLCJNYXJrZG93bkl0Iiwic2V0VG9rZW5BdHRyaWJ1dGUiLCJhdHRycyIsIm5hbWUiLCJ2YWx1ZSIsImluZGV4IiwiZmluZEluZGV4IiwiZW50cnkiLCJzcGxpY2UiLCJwdXNoIiwiYmV0dGVyTGluayIsIm1hcmtkb3duIiwiZGVjb3JhdGUiLCJ1c2UiLCJpdGVyYXRvciIsInRva2VucyIsImluZGV4T2ZMaW5rQ2xvc2VUb2tlbiIsImluZGV4T2YiLCJzbGljZSIsImZpbmQiLCJ0eXBlIiwidG9rZW4iLCJocmVmIiwibm9kZXNJbkxpbmsiLCJ0ZXh0Q29udGVudCIsImZpbHRlciIsIm1hcCIsImNvbnRlbnQiLCJqb2luIiwiZGVjb3JhdGlvbiIsImFyaWFMYWJlbCIsImFzQnV0dG9uIiwiY2xhc3NOYW1lIiwiaWNvbkFsdCIsImljb25DbGFzc05hbWUiLCJyZWwiLCJ0YXJnZXQiLCJ0aXRsZSIsImljb25Ub2tlbnMiLCJwYXJzZUlubGluZSIsImNoaWxkcmVuIiwidGFnIl0sInNvdXJjZVJvb3QiOiJidW5kbGU6Ly8vIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFya2Rvd24vbWFya2Rvd25JdFBsdWdpbnMvYmV0dGVyTGluay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXRlcmF0b3IgZnJvbSAnbWFya2Rvd24taXQtZm9yLWlubGluZSc7XG5pbXBvcnQgTWFya2Rvd25JdCBmcm9tICdtYXJrZG93bi1pdCc7XG5cbi8vIFB1dCBhIHRyYW5zcGFyZW50IHBpeGVsIGluc3RlYWQgb2YgdGhlIFwib3BlbiBpbiBuZXcgd2luZG93XCIgaWNvbiwgc28gZGV2ZWxvcGVycyBjYW4gZWFzaWx5IG1vZGlmeSB0aGUgaWNvbiBpbiBDU1MuXG5jb25zdCBUUkFOU1BBUkVOVF9HSUYgPSAnZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFJQUFBQUFBQVAvLy95SDVCQUVBQUFBQUxBQUFBQUFCQUFFQUFBSUJSQUE3JztcblxudHlwZSBBdHRyaWJ1dGVTZXR0ZXIgPSBmYWxzZSB8IHN0cmluZyB8ICgodmFsdWU/OiBzdHJpbmcpID0+IHN0cmluZyk7XG5cbnR5cGUgRGVjb3JhdGlvbiA9IHtcbiAgLyoqIFZhbHVlIG9mIFwiYXJpYS1sYWJlbFwiIGF0dHJpYnV0ZSBvZiB0aGUgbGluay4gSWYgc2V0IHRvIGBmYWxzZWAsIHJlbW92ZSBleGlzdGluZyBhdHRyaWJ1dGUuICovXG4gIGFyaWFMYWJlbD86IEF0dHJpYnV0ZVNldHRlcjtcblxuICAvKiogVHVybnMgdGhpcyBsaW5rIGludG8gYSA8YnV0dG9uPiB3aXRoIFwidmFsdWVcIiBhdHRyaWJ1dGUgaW5zdGVhZCBvZiBcImhyZWZcIi4gKi9cbiAgYXNCdXR0b24/OiBib29sZWFuO1xuXG4gIC8qKiBWYWx1ZSBvZiBcImNsYXNzXCIgYXR0cmlidXRlIG9mIHRoZSBsaW5rLiBJZiBzZXQgdG8gYGZhbHNlYCwgcmVtb3ZlIGV4aXN0aW5nIGF0dHJpYnV0ZS4gKi9cbiAgY2xhc3NOYW1lPzogQXR0cmlidXRlU2V0dGVyO1xuXG4gIC8qKiBBbHRlcm5hdGUgdGV4dCBvZiB0aGUgaW1hZ2UgaWNvbiBhcHBlbmRlZCB0byB0aGUgbGluay4gKi9cbiAgaWNvbkFsdD86IHN0cmluZztcblxuICAvKiogQ2xhc3MgbmFtZSBvZiB0aGUgaW1hZ2UgaWNvbiBhcHBlbmRlZCB0byB0aGUgbGluay4gKi9cbiAgaWNvbkNsYXNzTmFtZT86IHN0cmluZztcblxuICAvKiogVmFsdWUgb2YgXCJyZWxcIiBhdHRyaWJ1dGUgb2YgdGhlIGxpbmsuIElmIHNldCB0byBgZmFsc2VgLCByZW1vdmUgZXhpc3RpbmcgYXR0cmlidXRlLiAqL1xuICByZWw/OiBBdHRyaWJ1dGVTZXR0ZXI7XG5cbiAgLyoqIFZhbHVlIG9mIFwidGFyZ2V0XCIgYXR0cmlidXRlIG9mIHRoZSBsaW5rLiBJZiBzZXQgdG8gYGZhbHNlYCwgcmVtb3ZlIGV4aXN0aW5nIGF0dHJpYnV0ZS4gKi9cbiAgdGFyZ2V0PzogQXR0cmlidXRlU2V0dGVyO1xuXG4gIC8qKiBWYWx1ZSBvZiBcInRpdGxlXCIgYXR0cmlidXRlIG9mIHRoZSBsaW5rLiBJZiBzZXQgdG8gYGZhbHNlYCwgcmVtb3ZlIGV4aXN0aW5nIGF0dHJpYnV0ZS4gKi9cbiAgdGl0bGU/OiBBdHRyaWJ1dGVTZXR0ZXI7XG59O1xuXG4vLyBUaGlzIGlzIHVzZWQgZm9yIHBhcnNpbmcgTWFya2Rvd24gZm9yIGV4dGVybmFsIGxpbmtzLlxuY29uc3QgaW50ZXJuYWxNYXJrZG93bkl0ID0gbmV3IE1hcmtkb3duSXQoKTtcblxuZnVuY3Rpb24gc2V0VG9rZW5BdHRyaWJ1dGUoYXR0cnM6IEFycmF5PFtzdHJpbmcsIHN0cmluZ10+LCBuYW1lOiBzdHJpbmcsIHZhbHVlPzogQXR0cmlidXRlU2V0dGVyKSB7XG4gIGNvbnN0IGluZGV4ID0gYXR0cnMuZmluZEluZGV4KGVudHJ5ID0+IGVudHJ5WzBdID09PSBuYW1lKTtcblxuICBpZiAodmFsdWUgPT09IGZhbHNlKSB7XG4gICAgfmluZGV4ICYmIGF0dHJzLnNwbGljZShpbmRleCwgMSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIGlmICh+aW5kZXgpIHtcbiAgICAgIGF0dHJzWytpbmRleF1bMV0gPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXR0cnMucHVzaChbbmFtZSwgdmFsdWVdKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKH5pbmRleCkge1xuICAgICAgYXR0cnNbK2luZGV4XVsxXSA9IHZhbHVlKGF0dHJzWytpbmRleF1bMV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhdHRycy5wdXNoKFtuYW1lLCB2YWx1ZSgpXSk7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGJldHRlckxpbmsgPSAoXG4gIG1hcmtkb3duOiB0eXBlb2YgTWFya2Rvd25JdCxcbiAgZGVjb3JhdGU6IChocmVmOiBzdHJpbmcsIHRleHRDb250ZW50OiBzdHJpbmcpID0+IERlY29yYXRpb24gfCB1bmRlZmluZWRcbik6IHR5cGVvZiBNYXJrZG93bkl0ID0+XG4gIG1hcmtkb3duLnVzZShpdGVyYXRvciwgJ3VybF9uZXdfd2luJywgJ2xpbmtfb3BlbicsICh0b2tlbnMsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5kZXhPZkxpbmtDbG9zZVRva2VuID0gdG9rZW5zLmluZGV4T2YodG9rZW5zLnNsaWNlKGluZGV4ICsgMSkuZmluZCgoeyB0eXBlIH0pID0+IHR5cGUgPT09ICdsaW5rX2Nsb3NlJykpO1xuICAgIGNvbnN0IHRva2VuID0gdG9rZW5zWytpbmRleF07XG5cbiAgICBjb25zdCBbLCBocmVmXSA9IHRva2VuLmF0dHJzLmZpbmQoKFtuYW1lXSkgPT4gbmFtZSA9PT0gJ2hyZWYnKTtcbiAgICBjb25zdCBub2Rlc0luTGluayA9IHRva2Vucy5zbGljZShpbmRleCArIDEsIGluZGV4T2ZMaW5rQ2xvc2VUb2tlbik7XG5cbiAgICBjb25zdCB0ZXh0Q29udGVudCA9IG5vZGVzSW5MaW5rXG4gICAgICAuZmlsdGVyKCh7IHR5cGUgfSkgPT4gdHlwZSA9PT0gJ3RleHQnKVxuICAgICAgLm1hcCgoeyBjb250ZW50IH0pID0+IGNvbnRlbnQpXG4gICAgICAuam9pbignICcpO1xuXG4gICAgY29uc3QgZGVjb3JhdGlvbiA9IGRlY29yYXRlKGhyZWYsIHRleHRDb250ZW50KTtcblxuICAgIGlmICghZGVjb3JhdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgYXJpYUxhYmVsLCBhc0J1dHRvbiwgY2xhc3NOYW1lLCBpY29uQWx0LCBpY29uQ2xhc3NOYW1lLCByZWwsIHRhcmdldCwgdGl0bGUgfSA9IGRlY29yYXRpb247XG5cbiAgICBzZXRUb2tlbkF0dHJpYnV0ZSh0b2tlbi5hdHRycywgJ2FyaWEtbGFiZWwnLCBhcmlhTGFiZWwpO1xuICAgIHNldFRva2VuQXR0cmlidXRlKHRva2VuLmF0dHJzLCAnY2xhc3MnLCBjbGFzc05hbWUpO1xuICAgIHNldFRva2VuQXR0cmlidXRlKHRva2VuLmF0dHJzLCAndGl0bGUnLCB0aXRsZSk7XG5cbiAgICBpZiAoaWNvbkNsYXNzTmFtZSkge1xuICAgICAgY29uc3QgaWNvblRva2VucyA9IGludGVybmFsTWFya2Rvd25JdC5wYXJzZUlubGluZShgIVtdKCR7VFJBTlNQQVJFTlRfR0lGfSlgKVswXS5jaGlsZHJlbjtcblxuICAgICAgc2V0VG9rZW5BdHRyaWJ1dGUoaWNvblRva2Vuc1swXS5hdHRycywgJ2NsYXNzJywgaWNvbkNsYXNzTmFtZSk7XG4gICAgICBzZXRUb2tlbkF0dHJpYnV0ZShpY29uVG9rZW5zWzBdLmF0dHJzLCAndGl0bGUnLCBpY29uQWx0KTtcblxuICAgICAgLy8gQWRkIGFuIGljb24gYmVmb3JlIDwvYT4uXG4gICAgICB+aW5kZXhPZkxpbmtDbG9zZVRva2VuICYmIHRva2Vucy5zcGxpY2UoaW5kZXhPZkxpbmtDbG9zZVRva2VuLCAwLCAuLi5pY29uVG9rZW5zKTtcbiAgICB9XG5cbiAgICBpZiAoYXNCdXR0b24pIHtcbiAgICAgIHNldFRva2VuQXR0cmlidXRlKHRva2VuLmF0dHJzLCAnaHJlZicsIGZhbHNlKTtcblxuICAgICAgdG9rZW4udGFnID0gJ2J1dHRvbic7XG5cbiAgICAgIHNldFRva2VuQXR0cmlidXRlKHRva2VuLmF0dHJzLCAndHlwZScsICdidXR0b24nKTtcbiAgICAgIHNldFRva2VuQXR0cmlidXRlKHRva2VuLmF0dHJzLCAndmFsdWUnLCBocmVmKTtcblxuICAgICAgaWYgKH5pbmRleE9mTGlua0Nsb3NlVG9rZW4pIHtcbiAgICAgICAgdG9rZW5zWytpbmRleE9mTGlua0Nsb3NlVG9rZW5dLnRhZyA9ICdidXR0b24nO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRUb2tlbkF0dHJpYnV0ZSh0b2tlbi5hdHRycywgJ3JlbCcsIHJlbCk7XG4gICAgICBzZXRUb2tlbkF0dHJpYnV0ZSh0b2tlbi5hdHRycywgJ3RhcmdldCcsIHRhcmdldCk7XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgYmV0dGVyTGluaztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBO0FBQ0EsSUFBTUEsZUFBZSxHQUFHLGdGQUF4QjtBQThCQTtBQUNBLElBQU1DLGtCQUFrQixHQUFHLElBQUlDLG1CQUFKLEVBQTNCOztBQUVBLFNBQVNDLGlCQUFULENBQTJCQyxLQUEzQixFQUEyREMsSUFBM0QsRUFBeUVDLEtBQXpFLEVBQWtHO0VBQ2hHLElBQU1DLEtBQUssR0FBR0gsS0FBSyxDQUFDSSxTQUFOLENBQWdCLFVBQUFDLEtBQUs7SUFBQSxPQUFJQSxLQUFLLENBQUMsQ0FBRCxDQUFMLEtBQWFKLElBQWpCO0VBQUEsQ0FBckIsQ0FBZDs7RUFFQSxJQUFJQyxLQUFLLEtBQUssS0FBZCxFQUFxQjtJQUNuQixDQUFDQyxLQUFELElBQVVILEtBQUssQ0FBQ00sTUFBTixDQUFhSCxLQUFiLEVBQW9CLENBQXBCLENBQVY7RUFDRCxDQUZELE1BRU8sSUFBSSxPQUFPRCxLQUFQLEtBQWlCLFFBQXJCLEVBQStCO0lBQ3BDLElBQUksQ0FBQ0MsS0FBTCxFQUFZO01BQ1ZILEtBQUssQ0FBQyxDQUFDRyxLQUFGLENBQUwsQ0FBYyxDQUFkLElBQW1CRCxLQUFuQjtJQUNELENBRkQsTUFFTztNQUNMRixLQUFLLENBQUNPLElBQU4sQ0FBVyxDQUFDTixJQUFELEVBQU9DLEtBQVAsQ0FBWDtJQUNEO0VBQ0YsQ0FOTSxNQU1BLElBQUksT0FBT0EsS0FBUCxLQUFpQixVQUFyQixFQUFpQztJQUN0QyxJQUFJLENBQUNDLEtBQUwsRUFBWTtNQUNWSCxLQUFLLENBQUMsQ0FBQ0csS0FBRixDQUFMLENBQWMsQ0FBZCxJQUFtQkQsS0FBSyxDQUFDRixLQUFLLENBQUMsQ0FBQ0csS0FBRixDQUFMLENBQWMsQ0FBZCxDQUFELENBQXhCO0lBQ0QsQ0FGRCxNQUVPO01BQ0xILEtBQUssQ0FBQ08sSUFBTixDQUFX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
@@ -0,0 +1,3 @@
1
+ declare const pre: (markdown: string) => string;
2
+ export { pre };
3
+ //# sourceMappingURL=respectCRLF.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"respectCRLF.d.ts","sourceRoot":"","sources":["../../../src/markdown/markdownItPlugins/respectCRLF.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,GAAG,aAAc,MAAM,KAAG,MAGiE,CAAC;AAElG,OAAO,EAAE,GAAG,EAAE,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.pre = void 0;
7
+
8
+ // TODO: We should find some other ways to do this.
9
+ var pre = function pre(markdown) {
10
+ return (// IE11 does not support "u" flag and Babel could not remove it. We intentionally omitting the "u" flag here.
11
+ // eslint-disable-next-line require-unicode-regexp
12
+ markdown.replace(/\n\r|\r\n/g, function (carriageReturn) {
13
+ return carriageReturn === '\n\r' ? '\r\n' : '\n\r';
14
+ })
15
+ );
16
+ };
17
+
18
+ exports.pre = pre;
19
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcmUiLCJtYXJrZG93biIsInJlcGxhY2UiLCJjYXJyaWFnZVJldHVybiJdLCJzb3VyY2VSb290IjoiYnVuZGxlOi8vLyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21hcmtkb3duL21hcmtkb3duSXRQbHVnaW5zL3Jlc3BlY3RDUkxGLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE86IFdlIHNob3VsZCBmaW5kIHNvbWUgb3RoZXIgd2F5cyB0byBkbyB0aGlzLlxuY29uc3QgcHJlID0gKG1hcmtkb3duOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgLy8gSUUxMSBkb2VzIG5vdCBzdXBwb3J0IFwidVwiIGZsYWcgYW5kIEJhYmVsIGNvdWxkIG5vdCByZW1vdmUgaXQuIFdlIGludGVudGlvbmFsbHkgb21pdHRpbmcgdGhlIFwidVwiIGZsYWcgaGVyZS5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtdW5pY29kZS1yZWdleHBcbiAgbWFya2Rvd24ucmVwbGFjZSgvXFxuXFxyfFxcclxcbi9nLCBjYXJyaWFnZVJldHVybiA9PiAoY2FycmlhZ2VSZXR1cm4gPT09ICdcXG5cXHInID8gJ1xcclxcbicgOiAnXFxuXFxyJykpO1xuXG5leHBvcnQgeyBwcmUgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0EsSUFBTUEsR0FBRyxHQUFHLFNBQU5BLEdBQU0sQ0FBQ0MsUUFBRDtFQUFBLE9BQ1Y7SUFDQTtJQUNBQSxRQUFRLENBQUNDLE9BQVQsQ0FBaUIsWUFBakIsRUFBK0IsVUFBQUMsY0FBYztNQUFBLE9BQUtBLGNBQWMsS0FBSyxNQUFuQixHQUE0QixNQUE1QixHQUFxQyxNQUExQztJQUFBLENBQTdDO0VBSFU7QUFBQSxDQUFaIn0=
@@ -0,0 +1,3 @@
1
+ import { type Definition } from 'mdast';
2
+ export default function iterateLinkDefinitions(markdown: string): Generator<Definition, void, void>;
3
+ //# sourceMappingURL=iterateLinkDefinitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iterateLinkDefinitions.d.ts","sourceRoot":"","sources":["../../../src/markdown/private/iterateLinkDefinitions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,OAAO,CAAC;AAMnD,MAAM,CAAC,OAAO,UAAW,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAMnG"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ var _regeneratorRuntime2 = require("@babel/runtime/regenerator");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = iterateLinkDefinitions;
11
+
12
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
+
14
+ var _mdastUtilFromMarkdown = require("mdast-util-from-markdown");
15
+
16
+ var _marked = /*#__PURE__*/_regeneratorRuntime2.mark(iterateLinkDefinitions);
17
+
18
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
19
+
20
+ 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); }
21
+
22
+ 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; }
23
+
24
+ function isDefinition(node) {
25
+ return node.type === 'definition';
26
+ }
27
+
28
+ function iterateLinkDefinitions(markdown) {
29
+ var _iterator, _step, topLevelNode;
30
+
31
+ return _regenerator.default.wrap(function iterateLinkDefinitions$(_context) {
32
+ while (1) {
33
+ switch (_context.prev = _context.next) {
34
+ case 0:
35
+ _iterator = _createForOfIteratorHelper((0, _mdastUtilFromMarkdown.fromMarkdown)(markdown).children);
36
+ _context.prev = 1;
37
+
38
+ _iterator.s();
39
+
40
+ case 3:
41
+ if ((_step = _iterator.n()).done) {
42
+ _context.next = 10;
43
+ break;
44
+ }
45
+
46
+ topLevelNode = _step.value;
47
+
48
+ if (!isDefinition(topLevelNode)) {
49
+ _context.next = 8;
50
+ break;
51
+ }
52
+
53
+ _context.next = 8;
54
+ return topLevelNode;
55
+
56
+ case 8:
57
+ _context.next = 3;
58
+ break;
59
+
60
+ case 10:
61
+ _context.next = 15;
62
+ break;
63
+
64
+ case 12:
65
+ _context.prev = 12;
66
+ _context.t0 = _context["catch"](1);
67
+
68
+ _iterator.e(_context.t0);
69
+
70
+ case 15:
71
+ _context.prev = 15;
72
+
73
+ _iterator.f();
74
+
75
+ return _context.finish(15);
76
+
77
+ case 18:
78
+ case "end":
79
+ return _context.stop();
80
+ }
81
+ }
82
+ }, _marked, null, [[1, 12, 15, 18]]);
83
+ }
84
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpdGVyYXRlTGlua0RlZmluaXRpb25zIiwiaXNEZWZpbml0aW9uIiwibm9kZSIsInR5cGUiLCJtYXJrZG93biIsImZyb21NYXJrZG93biIsImNoaWxkcmVuIiwidG9wTGV2ZWxOb2RlIl0sInNvdXJjZVJvb3QiOiJidW5kbGU6Ly8vIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFya2Rvd24vcHJpdmF0ZS9pdGVyYXRlTGlua0RlZmluaXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21NYXJrZG93biB9IGZyb20gJ21kYXN0LXV0aWwtZnJvbS1tYXJrZG93bic7XG5pbXBvcnQgeyB0eXBlIERlZmluaXRpb24sIHR5cGUgTm9kZSB9IGZyb20gJ21kYXN0JztcblxuZnVuY3Rpb24gaXNEZWZpbml0aW9uKG5vZGU6IE5vZGUpOiBub2RlIGlzIERlZmluaXRpb24ge1xuICByZXR1cm4gbm9kZS50eXBlID09PSAnZGVmaW5pdGlvbic7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKiBpdGVyYXRlTGlua0RlZmluaXRpb25zKG1hcmtkb3duOiBzdHJpbmcpOiBHZW5lcmF0b3I8RGVmaW5pdGlvbiwgdm9pZCwgdm9pZD4ge1xuICBmb3IgKGNvbnN0IHRvcExldmVsTm9kZSBvZiBmcm9tTWFya2Rvd24obWFya2Rvd24pLmNoaWxkcmVuKSB7XG4gICAgaWYgKGlzRGVmaW5pdGlvbih0b3BMZXZlbE5vZGUpKSB7XG4gICAgICB5aWVsZCB0b3BMZXZlbE5vZGU7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7cURBT3lCQSxzQjs7Ozs7Ozs7QUFKekIsU0FBU0MsWUFBVCxDQUFzQkMsSUFBdEIsRUFBc0Q7RUFDcEQsT0FBT0EsSUFBSSxDQUFDQyxJQUFMLEtBQWMsWUFBckI7QUFDRDs7QUFFYyxTQUFVSCxzQkFBVixDQUFpQ0ksUUFBakM7RUFBQTs7RUFBQTtJQUFBO01BQUE7UUFBQTtVQUFBLHVDQUNjLElBQUFDLG1DQUFBLEVBQWFELFFBQWIsRUFBdUJFLFFBRHJDO1VBQUE7O1VBQUE7O1FBQUE7VUFBQTtZQUFBO1lBQUE7VUFBQTs7VUFDRkMsWUFERTs7VUFBQSxLQUVQTixZQUFZLENBQUNNLFlBQUQsQ0FGTDtZQUFBO1lBQUE7VUFBQTs7VUFBQTtVQUdULE9BQU1BLFlBQU47O1FBSFM7VUFBQTtVQUFBOztRQUFBO1VBQUE7VUFBQTs7UUFBQTtVQUFBO1VBQUE7O1VBQUE7O1FBQUE7VUFBQTs7VUFBQTs7VUFBQTs7UUFBQTtRQUFBO1VBQUE7TUFBQTtJQUFBO0VBQUE7QUFBQSJ9
@@ -0,0 +1,8 @@
1
+ type RenderInit = {
2
+ externalLinkAlt?: string;
3
+ };
4
+ export default function render(markdown: string, { markdownRespectCRLF }: Readonly<{
5
+ markdownRespectCRLF: boolean;
6
+ }>, { externalLinkAlt }?: Readonly<RenderInit>): string;
7
+ export {};
8
+ //# sourceMappingURL=renderMarkdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderMarkdown.d.ts","sourceRoot":"","sources":["../../src/markdown/renderMarkdown.ts"],"names":[],"mappings":"AAmEA,KAAK,UAAU,GAAG;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/C,MAAM,CAAC,OAAO,UAAU,MAAM,CAC5B,QAAQ,EAAE,MAAM,EAChB,EAAE,mBAAmB,EAAE,EAAE,QAAQ,CAAC;IAAE,mBAAmB,EAAE,OAAO,CAAA;CAAE,CAAC,EACnE,EAAE,eAAoB,EAAE,GAAE,QAAQ,CAAC,UAAU,CAAqB,GACjE,MAAM,CAwER"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = render;
11
+
12
+ var _botframeworkWebchatCore = require("botframework-webchat-core");
13
+
14
+ var _markdownIt = _interopRequireDefault(require("markdown-it"));
15
+
16
+ var _sanitizeHtml = _interopRequireDefault(require("sanitize-html"));
17
+
18
+ var _respectCRLF = require("./markdownItPlugins/respectCRLF");
19
+
20
+ var _ariaLabel = _interopRequireWildcard(require("./markdownItPlugins/ariaLabel"));
21
+
22
+ var _betterLink = _interopRequireDefault(require("./markdownItPlugins/betterLink"));
23
+
24
+ var _iterateLinkDefinitions = _interopRequireDefault(require("./private/iterateLinkDefinitions"));
25
+
26
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
+
28
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
+
30
+ var SANITIZE_HTML_OPTIONS = Object.freeze({
31
+ allowedAttributes: {
32
+ a: ['aria-label', 'class', 'href', 'name', 'rel', 'target'],
33
+ button: ['aria-label', 'class', 'type', 'value'],
34
+ img: ['alt', 'class', 'src', 'title'],
35
+ span: ['aria-label']
36
+ },
37
+ allowedSchemes: ['data', 'http', 'https', 'ftp', 'mailto', 'sip', 'tel'],
38
+ allowedTags: ['a', 'b', 'blockquote', 'br', 'button', 'caption', 'code', 'del', 'div', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'ins', 'li', 'nl', 'ol', 'p', 'pre', 's', 'span', 'strike', 'strong', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'ul']
39
+ });
40
+ var MARKDOWN_IT_INIT = Object.freeze({
41
+ breaks: false,
42
+ html: false,
43
+ linkify: true,
44
+ typographer: true,
45
+ xhtmlOut: true
46
+ });
47
+
48
+ function render(markdown, _ref) {
49
+ var markdownRespectCRLF = _ref.markdownRespectCRLF;
50
+
51
+ var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Object.freeze({}),
52
+ _ref2$externalLinkAlt = _ref2.externalLinkAlt,
53
+ externalLinkAlt = _ref2$externalLinkAlt === void 0 ? '' : _ref2$externalLinkAlt;
54
+
55
+ var linkDefinitions = Array.from((0, _iterateLinkDefinitions.default)(markdown));
56
+
57
+ if (markdownRespectCRLF) {
58
+ markdown = (0, _respectCRLF.pre)(markdown);
59
+ }
60
+
61
+ markdown = (0, _ariaLabel.pre)(markdown);
62
+ var markdownIt = new _markdownIt.default(MARKDOWN_IT_INIT).use(_ariaLabel.default).use(_betterLink.default, function (href, textContent) {
63
+ var decoration = {
64
+ rel: 'noopener noreferrer',
65
+ target: '_blank'
66
+ };
67
+ var ariaLabelSegments = [textContent];
68
+ var classes = new Set();
69
+ var linkDefinition = linkDefinitions.find(function (_ref3) {
70
+ var url = _ref3.url;
71
+ return url === href;
72
+ });
73
+ var protocol = (0, _botframeworkWebchatCore.onErrorResumeNext)(function () {
74
+ return new URL(href).protocol;
75
+ });
76
+
77
+ if (linkDefinition) {
78
+ ariaLabelSegments.push(linkDefinition.title || (0, _botframeworkWebchatCore.onErrorResumeNext)(function () {
79
+ return new URL(linkDefinition.url).host;
80
+ }) || linkDefinition.url);
81
+ linkDefinition.identifier === textContent && classes.add('webchat__render-markdown__pure-identifier');
82
+ }
83
+
84
+ if (protocol === 'cite:') {
85
+ decoration.asButton = true;
86
+ classes.add('webchat__render-markdown__citation');
87
+ } else if (protocol === 'http:' || protocol === 'https:') {
88
+ decoration.iconAlt = externalLinkAlt;
89
+ decoration.iconClassName = 'webchat__render-markdown__external-link-icon';
90
+ ariaLabelSegments.push(externalLinkAlt);
91
+ } // The first segment is textContent. Putting textContent is aria-label is useless.
92
+
93
+
94
+ if (ariaLabelSegments.length > 1) {
95
+ // If "aria-label" is already applied, do not overwrite it.
96
+ decoration.ariaLabel = function (value) {
97
+ return value || ariaLabelSegments.join(' ');
98
+ };
99
+ }
100
+
101
+ decoration.className = Array.from(classes).join(' '); // By default, Markdown-It will set "title" to the link title in link definition.
102
+ // However, "title" may be narrated by screen reader:
103
+ // - Edge
104
+ // - <a> will narrate "aria-label" but not "title"
105
+ // - <button> will narrate both "aria-label" and "title"
106
+ // - NVDA
107
+ // - <a> will narrate both "aria-label" and "title"
108
+ // - <button> will narrate both "aria-label" and "title"
109
+ // Title makes it very difficult to control narrations by the screen reader. Thus, we are disabling it in favor of "aria-label".
110
+ // This will not affect our accessibility compliance but UX. We could use a non-native tooltip or other forms of visual hint.
111
+
112
+ decoration.title = false;
113
+ return decoration;
114
+ });
115
+ var html = markdownIt.render(markdown);
116
+ html = (0, _ariaLabel.post)(html);
117
+ return (0, _sanitizeHtml.default)(html, SANITIZE_HTML_OPTIONS);
118
+ }
119
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTQU5JVElaRV9IVE1MX09QVElPTlMiLCJPYmplY3QiLCJmcmVlemUiLCJhbGxvd2VkQXR0cmlidXRlcyIsImEiLCJidXR0b24iLCJpbWciLCJzcGFuIiwiYWxsb3dlZFNjaGVtZXMiLCJhbGxvd2VkVGFncyIsIk1BUktET1dOX0lUX0lOSVQiLCJicmVha3MiLCJodG1sIiwibGlua2lmeSIsInR5cG9ncmFwaGVyIiwieGh0bWxPdXQiLCJyZW5kZXIiLCJtYXJrZG93biIsIm1hcmtkb3duUmVzcGVjdENSTEYiLCJleHRlcm5hbExpbmtBbHQiLCJsaW5rRGVmaW5pdGlvbnMiLCJBcnJheSIsImZyb20iLCJpdGVyYXRlTGlua0RlZmluaXRpb25zIiwicmVzcGVjdENSTEZQcmUiLCJhcmlhTGFiZWxQcmUiLCJtYXJrZG93bkl0IiwiTWFya2Rvd25JdCIsInVzZSIsImFyaWFMYWJlbCIsImJldHRlckxpbmsiLCJocmVmIiwidGV4dENvbnRlbnQiLCJkZWNvcmF0aW9uIiwicmVsIiwidGFyZ2V0IiwiYXJpYUxhYmVsU2VnbWVudHMiLCJjbGFzc2VzIiwiU2V0IiwibGlua0RlZmluaXRpb24iLCJmaW5kIiwidXJsIiwicHJvdG9jb2wiLCJvbkVycm9yUmVzdW1lTmV4dCIsIlVSTCIsInB1c2giLCJ0aXRsZSIsImhvc3QiLCJpZGVudGlmaWVyIiwiYWRkIiwiYXNCdXR0b24iLCJpY29uQWx0IiwiaWNvbkNsYXNzTmFtZSIsImxlbmd0aCIsInZhbHVlIiwiam9pbiIsImNsYXNzTmFtZSIsImFyaWFMYWJlbFBvc3QiLCJzYW5pdGl6ZUhUTUwiXSwic291cmNlUm9vdCI6ImJ1bmRsZTovLy8iLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXJrZG93bi9yZW5kZXJNYXJrZG93bi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvbkVycm9yUmVzdW1lTmV4dCB9IGZyb20gJ2JvdGZyYW1ld29yay13ZWJjaGF0LWNvcmUnO1xuaW1wb3J0IE1hcmtkb3duSXQgZnJvbSAnbWFya2Rvd24taXQnO1xuaW1wb3J0IHNhbml0aXplSFRNTCBmcm9tICdzYW5pdGl6ZS1odG1sJztcblxuaW1wb3J0IHsgcHJlIGFzIHJlc3BlY3RDUkxGUHJlIH0gZnJvbSAnLi9tYXJrZG93bkl0UGx1Z2lucy9yZXNwZWN0Q1JMRic7XG5pbXBvcnQgYXJpYUxhYmVsLCB7IHBvc3QgYXMgYXJpYUxhYmVsUG9zdCwgcHJlIGFzIGFyaWFMYWJlbFByZSB9IGZyb20gJy4vbWFya2Rvd25JdFBsdWdpbnMvYXJpYUxhYmVsJztcbmltcG9ydCBiZXR0ZXJMaW5rIGZyb20gJy4vbWFya2Rvd25JdFBsdWdpbnMvYmV0dGVyTGluayc7XG5pbXBvcnQgaXRlcmF0ZUxpbmtEZWZpbml0aW9ucyBmcm9tICcuL3ByaXZhdGUvaXRlcmF0ZUxpbmtEZWZpbml0aW9ucyc7XG5cbmNvbnN0IFNBTklUSVpFX0hUTUxfT1BUSU9OUyA9IE9iamVjdC5mcmVlemUoe1xuICBhbGxvd2VkQXR0cmlidXRlczoge1xuICAgIGE6IFsnYXJpYS1sYWJlbCcsICdjbGFzcycsICdocmVmJywgJ25hbWUnLCAncmVsJywgJ3RhcmdldCddLFxuICAgIGJ1dHRvbjogWydhcmlhLWxhYmVsJywgJ2NsYXNzJywgJ3R5cGUnLCAndmFsdWUnXSxcbiAgICBpbWc6IFsnYWx0JywgJ2NsYXNzJywgJ3NyYycsICd0aXRsZSddLFxuICAgIHNwYW46IFsnYXJpYS1sYWJlbCddXG4gIH0sXG4gIGFsbG93ZWRTY2hlbWVzOiBbJ2RhdGEnLCAnaHR0cCcsICdodHRwcycsICdmdHAnLCAnbWFpbHRvJywgJ3NpcCcsICd0ZWwnXSxcbiAgYWxsb3dlZFRhZ3M6IFtcbiAgICAnYScsXG4gICAgJ2InLFxuICAgICdibG9ja3F1b3RlJyxcbiAgICAnYnInLFxuICAgICdidXR0b24nLFxuICAgICdjYXB0aW9uJyxcbiAgICAnY29kZScsXG4gICAgJ2RlbCcsXG4gICAgJ2RpdicsXG4gICAgJ2VtJyxcbiAgICAnaDEnLFxuICAgICdoMicsXG4gICAgJ2gzJyxcbiAgICAnaDQnLFxuICAgICdoNScsXG4gICAgJ2g2JyxcbiAgICAnaHInLFxuICAgICdpJyxcbiAgICAnaW1nJyxcbiAgICAnaW5zJyxcbiAgICAnbGknLFxuICAgICdubCcsXG4gICAgJ29sJyxcbiAgICAncCcsXG4gICAgJ3ByZScsXG4gICAgJ3MnLFxuICAgICdzcGFuJyxcbiAgICAnc3RyaWtlJyxcbiAgICAnc3Ryb25nJyxcbiAgICAndGFibGUnLFxuICAgICd0Ym9keScsXG4gICAgJ3RkJyxcbiAgICAndGZvb3QnLFxuICAgICd0aCcsXG4gICAgJ3RoZWFkJyxcbiAgICAndHInLFxuICAgICd1bCdcbiAgXVxufSk7XG5cbmNvbnN0IE1BUktET1dOX0lUX0lOSVQgPSBPYmplY3QuZnJlZXplKHtcbiAgYnJlYWtzOiBmYWxzZSxcbiAgaHRtbDogZmFsc2UsXG4gIGxpbmtpZnk6IHRydWUsXG4gIHR5cG9ncmFwaGVyOiB0cnVlLFxuICB4aHRtbE91dDogdHJ1ZVxufSk7XG5cbnR5cGUgQmV0dGVyTGlua0RlY29yYXRpb24gPSBFeGNsdWRlPFJldHVyblR5cGU8UGFyYW1ldGVyczx0eXBlb2YgYmV0dGVyTGluaz5bMV0+LCB1bmRlZmluZWQ+O1xudHlwZSBSZW5kZXJJbml0ID0geyBleHRlcm5hbExpbmtBbHQ/OiBzdHJpbmcgfTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVuZGVyKFxuICBtYXJrZG93bjogc3RyaW5nLFxuICB7IG1hcmtkb3duUmVzcGVjdENSTEYgfTogUmVhZG9ubHk8eyBtYXJrZG93blJlc3BlY3RDUkxGOiBib29sZWFuIH0+LFxuICB7IGV4dGVybmFsTGlua0FsdCA9ICcnIH06IFJlYWRvbmx5PFJlbmRlckluaXQ+ID0gT2JqZWN0LmZyZWV6ZSh7fSlcbik6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmtEZWZpbml0aW9ucyA9IEFycmF5LmZyb20oaXRlcmF0ZUxpbmtEZWZpbml0aW9ucyhtYXJrZG93bikpO1xuXG4gIGlmIChtYXJrZG93blJlc3BlY3RDUkxGKSB7XG4gICAgbWFya2Rvd24gPSByZXNwZWN0Q1JMRlByZShtYXJrZG93bik7XG4gIH1cblxuICBtYXJrZG93biA9IGFyaWFMYWJlbFByZShtYXJrZG93bik7XG5cbiAgY29uc3QgbWFya2Rvd25JdCA9IG5ldyBNYXJrZG93bkl0KE1BUktET1dOX0lUX0lOSVQpXG4gICAgLnVzZShhcmlhTGFiZWwpXG4gICAgLnVzZShiZXR0ZXJMaW5rLCAoaHJlZjogc3RyaW5nLCB0ZXh0Q29udGVudDogc3RyaW5nKTogQmV0dGVyTGlua0RlY29yYXRpb24gfCB1bmRlZmluZWQgPT4ge1xuICAgICAgY29uc3QgZGVjb3JhdGlvbjogQmV0dGVyTGlua0RlY29yYXRpb24gPSB7XG4gICAgICAgIHJlbDogJ25vb3BlbmVyIG5vcmVmZXJyZXInLFxuICAgICAgICB0YXJnZXQ6ICdfYmxhbmsnXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBhcmlhTGFiZWxTZWdtZW50czogc3RyaW5nW10gPSBbdGV4dENvbnRlbnRdO1xuICAgICAgY29uc3QgY2xhc3NlczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG4gICAgICBjb25zdCBsaW5rRGVmaW5pdGlvbiA9IGxpbmtEZWZpbml0aW9ucy5maW5kKCh7IHVybCB9KSA9PiB1cmwgPT09IGhyZWYpO1xuICAgICAgY29uc3QgcHJvdG9jb2wgPSBvbkVycm9yUmVzdW1lTmV4dCgoKSA9PiBuZXcgVVJMKGhyZWYpLnByb3RvY29sKTtcblxuICAgICAgaWYgKGxpbmtEZWZpbml0aW9uKSB7XG4gICAgICAgIGFyaWFMYWJlbFNlZ21lbnRzLnB1c2goXG4gICAgICAgICAgbGlua0RlZmluaXRpb24udGl0bGUgfHwgb25FcnJvclJlc3VtZU5leHQoKCkgPT4gbmV3IFVSTChsaW5rRGVmaW5pdGlvbi51cmwpLmhvc3QpIHx8IGxpbmtEZWZpbml0aW9uLnVybFxuICAgICAgICApO1xuXG4gICAgICAgIGxpbmtEZWZpbml0aW9uLmlkZW50aWZpZXIgPT09IHRleHRDb250ZW50ICYmIGNsYXNzZXMuYWRkKCd3ZWJjaGF0X19yZW5kZXItbWFya2Rvd25fX3B1cmUtaWRlbnRpZmllcicpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvdG9jb2wgPT09ICdjaXRlOicpIHtcbiAgICAgICAgZGVjb3JhdGlvbi5hc0J1dHRvbiA9IHRydWU7XG5cbiAgICAgICAgY2xhc3Nlcy5hZGQoJ3dlYmNoYXRfX3JlbmRlci1tYXJrZG93bl9fY2l0YXRpb24nKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvdG9jb2wgPT09ICdodHRwOicgfHwgcHJvdG9jb2wgPT09ICdodHRwczonKSB7XG4gICAgICAgIGRlY29yYXRpb24uaWNvbkFsdCA9IGV4dGVybmFsTGlua0FsdDtcbiAgICAgICAgZGVjb3JhdGlvbi5pY29uQ2xhc3NOYW1lID0gJ3dlYmNoYXRfX3JlbmRlci1tYXJrZG93bl9fZXh0ZXJuYWwtbGluay1pY29uJztcblxuICAgICAgICBhcmlhTGFiZWxTZWdtZW50cy5wdXNoKGV4dGVybmFsTGlua0FsdCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBmaXJzdCBzZWdtZW50IGlzIHRleHRDb250ZW50LiBQdXR0aW5nIHRleHRDb250ZW50IGlzIGFyaWEtbGFiZWwgaXMgdXNlbGVzcy5cbiAgICAgIGlmIChhcmlhTGFiZWxTZWdtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIC8vIElmIFwiYXJpYS1sYWJlbFwiIGlzIGFscmVhZHkgYXBwbGllZCwgZG8gbm90IG92ZXJ3cml0ZSBpdC5cbiAgICAgICAgZGVjb3JhdGlvbi5hcmlhTGFiZWwgPSAodmFsdWU6IHN0cmluZykgPT4gdmFsdWUgfHwgYXJpYUxhYmVsU2VnbWVudHMuam9pbignICcpO1xuICAgICAgfVxuXG4gICAgICBkZWNvcmF0aW9uLmNsYXNzTmFtZSA9IEFycmF5LmZyb20oY2xhc3Nlcykuam9pbignICcpO1xuXG4gICAgICAvLyBCeSBkZWZhdWx0LCBNYXJrZG93bi1JdCB3aWxsIHNldCBcInRpdGxlXCIgdG8gdGhlIGxpbmsgdGl0bGUgaW4gbGluayBkZWZpbml0aW9uLlxuXG4gICAgICAvLyBIb3dldmVyLCBcInRpdGxlXCIgbWF5IGJlIG5hcnJhdGVkIGJ5IHNjcmVlbiByZWFkZXI6XG4gICAgICAvLyAtIEVkZ2VcbiAgICAgIC8vICAgLSA8YT4gd2lsbCBuYXJyYXRlIFwiYXJpYS1sYWJlbFwiIGJ1dCBub3QgXCJ0aXRsZVwiXG4gICAgICAvLyAgIC0gPGJ1dHRvbj4gd2lsbCBuYXJyYXRlIGJvdGggXCJhcmlhLWxhYmVsXCIgYW5kIFwidGl0bGVcIlxuICAgICAgLy8gLSBOVkRBXG4gICAgICAvLyAgIC0gPGE+IHdpbGwgbmFycmF0ZSBib3RoIFwiYXJpYS1sYWJlbFwiIGFuZCBcInRpdGxlXCJcbiAgICAgIC8vICAgLSA8YnV0dG9uPiB3aWxsIG5hcnJhdGUgYm90aCBcImFyaWEtbGFiZWxcIiBhbmQgXCJ0aXRsZVwiXG5cbiAgICAgIC8vIFRpdGxlIG1ha2VzIGl0IHZlcnkgZGlmZmljdWx0IHRvIGNvbnRyb2wgbmFycmF0aW9ucyBieSB0aGUgc2NyZWVuIHJlYWRlci4gVGh1cywgd2UgYXJlIGRpc2FibGluZyBpdCBpbiBmYXZvciBvZiBcImFyaWEtbGFiZWxcIi5cbiAgICAgIC8vIFRoaXMgd2lsbCBub3QgYWZmZWN0IG91ciBhY2Nlc3NpYmlsaXR5IGNvbXBsaWFuY2UgYnV0IFVYLiBXZSBjb3VsZCB1c2UgYSBub24tbmF0aXZlIHRvb2x0aXAgb3Igb3RoZXIgZm9ybXMgb2YgdmlzdWFsIGhpbnQuXG5cbiAgICAgIGRlY29yYXRpb24udGl0bGUgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIGRlY29yYXRpb247XG4gICAgfSk7XG5cbiAgbGV0IGh0bWwgPSBtYXJrZG93bkl0LnJlbmRlcihtYXJrZG93bik7XG5cbiAgaHRtbCA9IGFyaWFMYWJlbFBvc3QoaHRtbCk7XG5cbiAgcmV0dXJuIHNhbml0aXplSFRNTChodG1sLCBTQU5JVElaRV9IVE1MX09QVElPTlMpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQSxJQUFNQSxxQkFBcUIsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWM7RUFDMUNDLGlCQUFpQixFQUFFO0lBQ2pCQyxDQUFDLEVBQUUsQ0FBQyxZQUFELEVBQWUsT0FBZixFQUF3QixNQUF4QixFQUFnQyxNQUFoQyxFQUF3QyxLQUF4QyxFQUErQyxRQUEvQyxDQURjO0lBRWpCQyxNQUFNLEVBQUUsQ0FBQyxZQUFELEVBQWUsT0FBZixFQUF3QixNQUF4QixFQUFnQyxPQUFoQyxDQUZTO0lBR2pCQyxHQUFHLEVBQUUsQ0FBQyxLQUFELEVBQVEsT0FBUixFQUFpQixLQUFqQixFQUF3QixPQUF4QixDQUhZO0lBSWpCQyxJQUFJLEVBQUUsQ0FBQyxZQUFEO0VBSlcsQ0FEdUI7RUFPMUNDLGNBQWMsRUFBRSxDQUFDLE1BQUQsRUFBUyxNQUFULEVBQWlCLE9BQWpCLEVBQTBCLEtBQTFCLEVBQWlDLFFBQWpDLEVBQTJDLEtBQTNDLEVBQWtELEtBQWxELENBUDBCO0VBUTFDQyxXQUFXLEVBQUUsQ0FDWCxHQURXLEVBRVgsR0FGVyxFQUdYLFlBSFcsRUFJWCxJQUpXLEVBS1gsUUFMVyxFQU1YLFNBTlcsRUFPWCxNQVBXLEVBUVgsS0FSVyxFQVNYLEtBVFcsRUFVWCxJQVZXLEVBV1gsSUFYVyxFQVlYLElBWlcsRUFhWCxJQWJXLEVBY1gsSUFkVyxFQWVYLElBZlcsRUFnQlgsSUFoQlcsRUFpQlgsSUFqQlcsRUFrQlgsR0FsQlcsRUFtQlgsS0FuQlcsRUFvQlgsS0FwQlcsRUFxQlgsSUFyQlcsRUFzQlgsSUF0QlcsRUF1QlgsSUF2QlcsRUF3QlgsR0F4QlcsRUF5QlgsS0F6QlcsRUEwQlgsR0ExQlcsRUEyQlgsTUEzQlcsRUE0QlgsUUE1QlcsRUE2QlgsUUE3QlcsRUE4QlgsT0E5QlcsRUErQlgsT0EvQlcsRUFnQ1gsSUFoQ1csRUFpQ1gsT0FqQ1csRUFrQ1gsSUFsQ1csRUFtQ1gsT0FuQ1csRUFvQ1gsSUFwQ1csRUFxQ1gsSUFyQ1c7QUFSNkIsQ0FBZCxDQUE5QjtBQWlEQSxJQUFNQyxnQkFBZ0IsR0FBR1QsTUFBTSxDQUFDQyxNQUFQLENBQWM7RUFDckNTLE1BQU0sRUFBRSxLQUQ2QjtFQUVyQ0MsSUFBSSxFQUFFLEtBRitCO0VBR3JDQyxPQUFPLEVBQUUsSUFINEI7RUFJckNDLFdBQVcsRUFBRSxJQUp3QjtFQUtyQ0MsUUFBUSxFQUFFO0FBTDJCLENBQWQsQ0FBekI7O0FBV2UsU0FBU0MsTUFBVCxDQUNiQyxRQURhLFFBSUw7RUFBQSxJQUZOQyxtQkFFTSxRQUZOQSxtQkFFTTs7RUFBQSxnRkFEeUNqQixNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLENBQ3pDO0VBQUEsa0NBRE5pQixlQUNNO0VBQUEsSUFETkEsZUFDTSxzQ0FEWSxFQUNaOztFQUNSLElBQU1DLGVBQWUsR0FBR0MsS0FBSyxDQUFDQyxJQUFOLENBQVcsSUFBQUMsK0JBQUEsRUFBdUJOLFFBQXZCLENBQVgsQ0FBeEI7O0VBRUEsSUFBSUMsbUJBQUosRUFBeUI7SUFDdkJELFFBQVEsR0FBRyxJQUFBTyxnQkFBQSxFQUFlUCxRQUFmLENBQVg7RUFDRDs7RUFFREEsUUFBUSxHQUFHLElBQUFRLGNBQUEsRUFBYVIsUUFBYixDQUFYO0VBRUEsSUFBTVMsVUFBVSxHQUFHLElBQUlDLG1CQUFKLENBQWVqQixnQkFBZixFQUNoQmtCLEdBRGdCLENBQ1pDLGtCQURZLEVBRWhCRCxHQUZnQixDQUVaRSxtQkFGWSxFQUVBLFVBQUNDLElBQUQsRUFBZUMsV0FBZixFQUF5RTtJQUN4RixJQUFNQyxVQUFnQyxHQUFHO01BQ3ZDQyxHQUFHLEVBQUUscUJBRGtDO01BRXZDQyxNQUFNLEVBQUU7SUFGK0IsQ0FBekM7SUFLQSxJQUFNQyxpQkFBMkIsR0FBRyxDQUFDSixXQUFELENBQXBDO0lBQ0EsSUFBTUssT0FBb0IsR0FBRyxJQUFJQyxHQUFKLEVBQTdCO0lBQ0EsSUFBTUMsY0FBYyxHQUFHbkIsZUFBZSxDQUFDb0IsSUFBaEIsQ0FBcUI7TUFBQSxJQUFHQyxHQUFILFNBQUdBLEdBQUg7TUFBQSxPQUFhQSxHQUFHLEtBQUtWLElBQXJCO0lBQUEsQ0FBckIsQ0FBdkI7SUFDQSxJQUFNVyxRQUFRLEdBQUcsSUFBQUMsMENBQUEsRUFBa0I7TUFBQSxPQUFNLElBQUlDLEdBQUosQ0FBUWIsSUFBUixFQUFjVyxRQUFwQjtJQUFBLENBQWxCLENBQWpCOztJQUVBLElBQUlILGNBQUosRUFBb0I7TUFDbEJILGlCQUFpQixDQUFDUyxJQUFsQixDQUNFTixjQUFjLENBQUNPLEtBQWYsSUFBd0IsSUFBQUgsMENBQUEsRUFBa0I7UUFBQSxPQUFNLElBQUlDLEdBQUosQ0FBUUwsY0FBYyxDQUFDRSxHQUF2QixFQUE0Qk0sSUFBbEM7TUFBQSxDQUFsQixDQUF4QixJQUFxRlIsY0FBYyxDQUFDRSxHQUR0RztNQUlBRixjQUFjLENBQUNTLFVBQWYsS0FBOEJoQixXQUE5QixJQUE2Q0ssT0FBTyxDQUFDWSxHQUFSLENBQVksMkNBQVosQ0FBN0M7SUFDRDs7SUFFRCxJQUFJUCxRQUFRLEtBQUssT0FBakIsRUFBMEI7TUFDeEJULFVBQVUsQ0FBQ2lCLFFBQVgsR0FBc0IsSUFBdEI7TUFFQWIsT0FBTyxDQUFDWSxHQUFSLENBQVksb0NBQVo7SUFDRCxDQUpELE1BSU8sSUFBSVAsUUFBUSxLQUFLLE9BQWIsSUFBd0JBLFFBQVEsS0FBSyxRQUF6QyxFQUFtRDtNQUN4RFQsVUFBVSxDQUFDa0IsT0FBWCxHQUFxQmhDLGVBQXJCO01BQ0FjLFVBQVUsQ0FBQ21CLGFBQVgsR0FBMkIsOENBQTNCO01BRUFoQixpQkFBaUIsQ0FBQ1MsSUFBbEIsQ0FBdUIxQixlQUF2QjtJQUNELENBNUJ1RixDQThCeEY7OztJQUNBLElBQUlpQixpQkFBaUIsQ0FBQ2lCLE1BQWxCLEdBQTJCLENBQS9CLEVBQWtDO01BQ2hDO01BQ0FwQixVQUFVLENBQUNKLFNBQVgsR0FBdUIsVUFBQ3lCLEtBQUQ7UUFBQSxPQUFtQkEsS0FBSyxJQUFJbEIsaUJBQWlCLENBQUNtQixJQUFsQixDQUF1QixHQUF2QixDQUE1QjtNQUFBLENBQXZCO0lBQ0Q7O0lBRUR0QixVQUFVLENBQUN1QixTQUFYLEdBQXVCbkMsS0FBSyxDQUFDQyxJQUFOLENBQVdlLE9BQVgsRUFBb0JrQixJQUFwQixDQUF5QixHQUF6QixDQUF2QixDQXBDd0YsQ0FzQ3hGO0lBRUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFQTtJQUNBOztJQUVBdEIsVUFBVSxDQUFDYSxLQUFYLEdBQW1CLEtBQW5CO0lBRUEsT0FBT2IsVUFBUDtFQUNELENBeERnQixDQUFuQjtFQTBEQSxJQUFJckIsSUFBSSxHQUFHYyxVQUFVLENBQUNWLE1BQVgsQ0FBa0JDLFFBQWxCLENBQVg7RUFFQUwsSUFBSSxHQUFHLElBQUE2QyxlQUFBLEVBQWM3QyxJQUFkLENBQVA7RUFFQSxPQUFPLElBQUE4QyxxQkFBQSxFQUFhOUMsSUFBYixFQUFtQloscUJBQW5CLENBQVA7QUFDRCJ9
@@ -17,7 +17,7 @@ var _createAdaptiveCardsAttachmentMiddleware = _interopRequireDefault(require(".
17
17
 
18
18
  var _createAdaptiveCardsStyleSet = _interopRequireDefault(require("./adaptiveCards/Styles/createAdaptiveCardsStyleSet"));
19
19
 
20
- var _renderMarkdown = _interopRequireDefault(require("./renderMarkdown"));
20
+ var _renderMarkdown = _interopRequireDefault(require("./markdown/renderMarkdown"));
21
21
 
22
22
  function useComposerProps(_ref) {
23
23
  var attachmentForScreenReaderMiddleware = _ref.attachmentForScreenReaderMiddleware,
@@ -45,4 +45,4 @@ function useComposerProps(_ref) {
45
45
  renderMarkdown: patchedRenderMarkdown
46
46
  };
47
47
  }
48
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDb21wb3NlclByb3BzIiwiYXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUiLCJhdHRhY2htZW50TWlkZGxld2FyZSIsInJlbmRlck1hcmtkb3duIiwic3R5bGVPcHRpb25zIiwic3R5bGVTZXQiLCJwYXRjaGVkQXR0YWNobWVudE1pZGRsZXdhcmUiLCJ1c2VNZW1vIiwiY3JlYXRlQWRhcHRpdmVDYXJkc0F0dGFjaG1lbnRNaWRkbGV3YXJlIiwicGF0Y2hlZEF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlIiwiY3JlYXRlQWRhcHRpdmVDYXJkc0F0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlIiwiZXh0cmFTdHlsZVNldCIsInVuZGVmaW5lZCIsImNyZWF0ZUFkYXB0aXZlQ2FyZHNTdHlsZVNldCIsInBhdGNoZWRSZW5kZXJNYXJrZG93biIsImRlZmF1bHRSZW5kZXJNYXJrZG93biJdLCJzb3VyY2VSb290IjoiYnVuZGxlOi8vLyIsInNvdXJjZXMiOlsiLi4vc3JjL3VzZUNvbXBvc2VyUHJvcHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUsIEF0dGFjaG1lbnRNaWRkbGV3YXJlIH0gZnJvbSAnYm90ZnJhbWV3b3JrLXdlYmNoYXQtYXBpJztcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBjcmVhdGVBZGFwdGl2ZUNhcmRzQXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUgZnJvbSAnLi9hZGFwdGl2ZUNhcmRzL2NyZWF0ZUFkYXB0aXZlQ2FyZHNBdHRhY2htZW50Rm9yU2NyZWVuUmVhZGVyTWlkZGxld2FyZSc7XG5pbXBvcnQgY3JlYXRlQWRhcHRpdmVDYXJkc0F0dGFjaG1lbnRNaWRkbGV3YXJlIGZyb20gJy4vYWRhcHRpdmVDYXJkcy9jcmVhdGVBZGFwdGl2ZUNhcmRzQXR0YWNobWVudE1pZGRsZXdhcmUnO1xuaW1wb3J0IGNyZWF0ZUFkYXB0aXZlQ2FyZHNTdHlsZVNldCBmcm9tICcuL2FkYXB0aXZlQ2FyZHMvU3R5bGVzL2NyZWF0ZUFkYXB0aXZlQ2FyZHNTdHlsZVNldCc7XG5pbXBvcnQgZGVmYXVsdFJlbmRlck1hcmtkb3duIGZyb20gJy4vcmVuZGVyTWFya2Rvd24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VDb21wb3NlclByb3BzKHtcbiAgYXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUsXG4gIGF0dGFjaG1lbnRNaWRkbGV3YXJlLFxuICByZW5kZXJNYXJrZG93bixcbiAgc3R5bGVPcHRpb25zLFxuICBzdHlsZVNldFxufToge1xuICBhdHRhY2htZW50Rm9yU2NyZWVuUmVhZGVyTWlkZGxld2FyZTogQXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmVbXTtcbiAgYXR0YWNobWVudE1pZGRsZXdhcmU6IEF0dGFjaG1lbnRNaWRkbGV3YXJlW107XG4gIHJlbmRlck1hcmtkb3duPzogKFxuICAgIG1hcmtkb3duOiBzdHJpbmcsXG4gICAgbmV3TGluZU9wdGlvbnM6IHsgbWFya2Rvd25SZXNwZWN0Q1JMRjogYm9vbGVhbiB9LFxuICAgIGxpbmtPcHRpb25zOiB7IGV4dGVybmFsTGlua0FsdDogc3RyaW5nIH1cbiAgKSA9PiBzdHJpbmc7XG4gIHN0eWxlT3B0aW9uczogYW55O1xuICBzdHlsZVNldDogYW55O1xufSk6IHtcbiAgYXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmU6IEF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlW107XG4gIGF0dGFjaG1lbnRNaWRkbGV3YXJlOiBBdHRhY2htZW50TWlkZGxld2FyZVtdO1xuICByZW5kZXJNYXJrZG93bjogKFxuICAgIG1hcmtkb3duOiBzdHJpbmcsXG4gICAgbmV3TGluZU9wdGlvbnM6IHsgbWFya2Rvd25SZXNwZWN0Q1JMRjogYm9vbGVhbiB9LFxuICAgIGxpbmtPcHRpb25zOiB7IGV4dGVybmFsTGlua0FsdDogc3RyaW5nIH1cbiAgKSA9PiBzdHJpbmc7XG4gIGV4dHJhU3R5bGVTZXQ6IGFueTtcbn0ge1xuICBjb25zdCBwYXRjaGVkQXR0YWNobWVudE1pZGRsZXdhcmUgPSB1c2VNZW1vKFxuICAgICgpID0+IFsuLi5hdHRhY2htZW50TWlkZGxld2FyZSwgY3JlYXRlQWRhcHRpdmVDYXJkc0F0dGFjaG1lbnRNaWRkbGV3YXJlKCldLFxuICAgIFthdHRhY2htZW50TWlkZGxld2FyZV1cbiAgKTtcblxuICBjb25zdCBwYXRjaGVkQXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUgPSB1c2VNZW1vKFxuICAgICgpID0+IFsuLi5hdHRhY2htZW50Rm9yU2NyZWVuUmVhZGVyTWlkZGxld2FyZSwgY3JlYXRlQWRhcHRpdmVDYXJkc0F0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlKCldLFxuICAgIFthdHRhY2htZW50Rm9yU2NyZWVuUmVhZGVyTWlkZGxld2FyZV1cbiAgKTtcblxuICAvLyBXaGVuIHN0eWxlU2V0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBzdHlsZU9wdGlvbnMgd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSBBZGFwdGl2ZSBDYXJkcyBzdHlsZVNldCBhbmQgbWVyZ2VkIGludG8gdXNlU3R5bGVTZXQuXG4gIGNvbnN0IGV4dHJhU3R5bGVTZXQgPSB1c2VNZW1vKFxuICAgICgpID0+IChzdHlsZVNldCA/IHVuZGVmaW5lZCA6IGNyZWF0ZUFkYXB0aXZlQ2FyZHNTdHlsZVNldChzdHlsZU9wdGlvbnMpKSxcbiAgICBbc3R5bGVPcHRpb25zLCBzdHlsZVNldF1cbiAgKTtcblxuICBjb25zdCBwYXRjaGVkUmVuZGVyTWFya2Rvd24gPSB1c2VNZW1vKFxuICAgICgpID0+ICh0eXBlb2YgcmVuZGVyTWFya2Rvd24gPT09ICd1bmRlZmluZWQnID8gZGVmYXVsdFJlbmRlck1hcmtkb3duIDogcmVuZGVyTWFya2Rvd24pLFxuICAgIFtyZW5kZXJNYXJrZG93bl1cbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlOiBwYXRjaGVkQXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUsXG4gICAgYXR0YWNobWVudE1pZGRsZXdhcmU6IHBhdGNoZWRBdHRhY2htZW50TWlkZGxld2FyZSxcbiAgICBleHRyYVN0eWxlU2V0LFxuICAgIHJlbmRlck1hcmtkb3duOiBwYXRjaGVkUmVuZGVyTWFya2Rvd25cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFZSxTQUFTQSxnQkFBVCxPQXlCYjtFQUFBLElBeEJBQyxtQ0F3QkEsUUF4QkFBLG1DQXdCQTtFQUFBLElBdkJBQyxvQkF1QkEsUUF2QkFBLG9CQXVCQTtFQUFBLElBdEJBQyxjQXNCQSxRQXRCQUEsY0FzQkE7RUFBQSxJQXJCQUMsWUFxQkEsUUFyQkFBLFlBcUJBO0VBQUEsSUFwQkFDLFFBb0JBLFFBcEJBQSxRQW9CQTtFQUNBLElBQU1DLDJCQUEyQixHQUFHLElBQUFDLGNBQUEsRUFDbEM7SUFBQSxrREFBVUwsb0JBQVYsSUFBZ0MsSUFBQU0sZ0RBQUEsR0FBaEM7RUFBQSxDQURrQyxFQUVsQyxDQUFDTixvQkFBRCxDQUZrQyxDQUFwQztFQUtBLElBQU1PLDBDQUEwQyxHQUFHLElBQUFGLGNBQUEsRUFDakQ7SUFBQSxrREFBVU4sbUNBQVYsSUFBK0MsSUFBQVMsK0RBQUEsR0FBL0M7RUFBQSxDQURpRCxFQUVqRCxDQUFDVCxtQ0FBRCxDQUZpRCxDQUFuRCxDQU5BLENBV0E7O0VBQ0EsSUFBTVUsYUFBYSxHQUFHLElBQUFKLGNBQUEsRUFDcEI7SUFBQSxPQUFPRixRQUFRLEdBQUdPLFNBQUgsR0FBZSxJQUFBQyxvQ0FBQSxFQUE0QlQsWUFBNUIsQ0FBOUI7RUFBQSxDQURvQixFQUVwQixDQUFDQSxZQUFELEVBQWVDLFFBQWYsQ0FGb0IsQ0FBdEI7RUFLQSxJQUFNUyxxQkFBcUIsR0FBRyxJQUFBUCxjQUFBLEVBQzVCO0lBQUEsT0FBTyxPQUFPSixjQUFQLEtBQTBCLFdBQTFCLEdBQXdDWSx1QkFBeEMsR0FBZ0VaLGNBQXZFO0VBQUEsQ0FENEIsRUFFNUIsQ0FBQ0EsY0FBRCxDQUY0QixDQUE5QjtFQUtBLE9BQU87SUFDTEYsbUNBQW1DLEVBQUVRLDBDQURoQztJQUVMUCxvQkFBb0IsRUFBRUksMkJBRmpCO0lBR0xLLGFBQWEsRUFBYkEsYUFISztJQUlMUixjQUFjLEVBQUVXO0VBSlgsQ0FBUDtBQU1EIn0=
48
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDb21wb3NlclByb3BzIiwiYXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUiLCJhdHRhY2htZW50TWlkZGxld2FyZSIsInJlbmRlck1hcmtkb3duIiwic3R5bGVPcHRpb25zIiwic3R5bGVTZXQiLCJwYXRjaGVkQXR0YWNobWVudE1pZGRsZXdhcmUiLCJ1c2VNZW1vIiwiY3JlYXRlQWRhcHRpdmVDYXJkc0F0dGFjaG1lbnRNaWRkbGV3YXJlIiwicGF0Y2hlZEF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlIiwiY3JlYXRlQWRhcHRpdmVDYXJkc0F0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlIiwiZXh0cmFTdHlsZVNldCIsInVuZGVmaW5lZCIsImNyZWF0ZUFkYXB0aXZlQ2FyZHNTdHlsZVNldCIsInBhdGNoZWRSZW5kZXJNYXJrZG93biIsImRlZmF1bHRSZW5kZXJNYXJrZG93biJdLCJzb3VyY2VSb290IjoiYnVuZGxlOi8vLyIsInNvdXJjZXMiOlsiLi4vc3JjL3VzZUNvbXBvc2VyUHJvcHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUsIEF0dGFjaG1lbnRNaWRkbGV3YXJlIH0gZnJvbSAnYm90ZnJhbWV3b3JrLXdlYmNoYXQtYXBpJztcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBjcmVhdGVBZGFwdGl2ZUNhcmRzQXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUgZnJvbSAnLi9hZGFwdGl2ZUNhcmRzL2NyZWF0ZUFkYXB0aXZlQ2FyZHNBdHRhY2htZW50Rm9yU2NyZWVuUmVhZGVyTWlkZGxld2FyZSc7XG5pbXBvcnQgY3JlYXRlQWRhcHRpdmVDYXJkc0F0dGFjaG1lbnRNaWRkbGV3YXJlIGZyb20gJy4vYWRhcHRpdmVDYXJkcy9jcmVhdGVBZGFwdGl2ZUNhcmRzQXR0YWNobWVudE1pZGRsZXdhcmUnO1xuaW1wb3J0IGNyZWF0ZUFkYXB0aXZlQ2FyZHNTdHlsZVNldCBmcm9tICcuL2FkYXB0aXZlQ2FyZHMvU3R5bGVzL2NyZWF0ZUFkYXB0aXZlQ2FyZHNTdHlsZVNldCc7XG5pbXBvcnQgZGVmYXVsdFJlbmRlck1hcmtkb3duIGZyb20gJy4vbWFya2Rvd24vcmVuZGVyTWFya2Rvd24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VDb21wb3NlclByb3BzKHtcbiAgYXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUsXG4gIGF0dGFjaG1lbnRNaWRkbGV3YXJlLFxuICByZW5kZXJNYXJrZG93bixcbiAgc3R5bGVPcHRpb25zLFxuICBzdHlsZVNldFxufToge1xuICBhdHRhY2htZW50Rm9yU2NyZWVuUmVhZGVyTWlkZGxld2FyZTogQXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmVbXTtcbiAgYXR0YWNobWVudE1pZGRsZXdhcmU6IEF0dGFjaG1lbnRNaWRkbGV3YXJlW107XG4gIHJlbmRlck1hcmtkb3duPzogKFxuICAgIG1hcmtkb3duOiBzdHJpbmcsXG4gICAgbmV3TGluZU9wdGlvbnM6IHsgbWFya2Rvd25SZXNwZWN0Q1JMRjogYm9vbGVhbiB9LFxuICAgIGxpbmtPcHRpb25zOiB7IGV4dGVybmFsTGlua0FsdDogc3RyaW5nIH1cbiAgKSA9PiBzdHJpbmc7XG4gIHN0eWxlT3B0aW9uczogYW55O1xuICBzdHlsZVNldDogYW55O1xufSk6IHtcbiAgYXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmU6IEF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlW107XG4gIGF0dGFjaG1lbnRNaWRkbGV3YXJlOiBBdHRhY2htZW50TWlkZGxld2FyZVtdO1xuICByZW5kZXJNYXJrZG93bjogKFxuICAgIG1hcmtkb3duOiBzdHJpbmcsXG4gICAgbmV3TGluZU9wdGlvbnM6IHsgbWFya2Rvd25SZXNwZWN0Q1JMRjogYm9vbGVhbiB9LFxuICAgIGxpbmtPcHRpb25zOiB7IGV4dGVybmFsTGlua0FsdDogc3RyaW5nIH1cbiAgKSA9PiBzdHJpbmc7XG4gIGV4dHJhU3R5bGVTZXQ6IGFueTtcbn0ge1xuICBjb25zdCBwYXRjaGVkQXR0YWNobWVudE1pZGRsZXdhcmUgPSB1c2VNZW1vKFxuICAgICgpID0+IFsuLi5hdHRhY2htZW50TWlkZGxld2FyZSwgY3JlYXRlQWRhcHRpdmVDYXJkc0F0dGFjaG1lbnRNaWRkbGV3YXJlKCldLFxuICAgIFthdHRhY2htZW50TWlkZGxld2FyZV1cbiAgKTtcblxuICBjb25zdCBwYXRjaGVkQXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUgPSB1c2VNZW1vKFxuICAgICgpID0+IFsuLi5hdHRhY2htZW50Rm9yU2NyZWVuUmVhZGVyTWlkZGxld2FyZSwgY3JlYXRlQWRhcHRpdmVDYXJkc0F0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlKCldLFxuICAgIFthdHRhY2htZW50Rm9yU2NyZWVuUmVhZGVyTWlkZGxld2FyZV1cbiAgKTtcblxuICAvLyBXaGVuIHN0eWxlU2V0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBzdHlsZU9wdGlvbnMgd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSBBZGFwdGl2ZSBDYXJkcyBzdHlsZVNldCBhbmQgbWVyZ2VkIGludG8gdXNlU3R5bGVTZXQuXG4gIGNvbnN0IGV4dHJhU3R5bGVTZXQgPSB1c2VNZW1vKFxuICAgICgpID0+IChzdHlsZVNldCA/IHVuZGVmaW5lZCA6IGNyZWF0ZUFkYXB0aXZlQ2FyZHNTdHlsZVNldChzdHlsZU9wdGlvbnMpKSxcbiAgICBbc3R5bGVPcHRpb25zLCBzdHlsZVNldF1cbiAgKTtcblxuICBjb25zdCBwYXRjaGVkUmVuZGVyTWFya2Rvd24gPSB1c2VNZW1vKFxuICAgICgpID0+ICh0eXBlb2YgcmVuZGVyTWFya2Rvd24gPT09ICd1bmRlZmluZWQnID8gZGVmYXVsdFJlbmRlck1hcmtkb3duIDogcmVuZGVyTWFya2Rvd24pLFxuICAgIFtyZW5kZXJNYXJrZG93bl1cbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGFjaG1lbnRGb3JTY3JlZW5SZWFkZXJNaWRkbGV3YXJlOiBwYXRjaGVkQXR0YWNobWVudEZvclNjcmVlblJlYWRlck1pZGRsZXdhcmUsXG4gICAgYXR0YWNobWVudE1pZGRsZXdhcmU6IHBhdGNoZWRBdHRhY2htZW50TWlkZGxld2FyZSxcbiAgICBleHRyYVN0eWxlU2V0LFxuICAgIHJlbmRlck1hcmtkb3duOiBwYXRjaGVkUmVuZGVyTWFya2Rvd25cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFZSxTQUFTQSxnQkFBVCxPQXlCYjtFQUFBLElBeEJBQyxtQ0F3QkEsUUF4QkFBLG1DQXdCQTtFQUFBLElBdkJBQyxvQkF1QkEsUUF2QkFBLG9CQXVCQTtFQUFBLElBdEJBQyxjQXNCQSxRQXRCQUEsY0FzQkE7RUFBQSxJQXJCQUMsWUFxQkEsUUFyQkFBLFlBcUJBO0VBQUEsSUFwQkFDLFFBb0JBLFFBcEJBQSxRQW9CQTtFQUNBLElBQU1DLDJCQUEyQixHQUFHLElBQUFDLGNBQUEsRUFDbEM7SUFBQSxrREFBVUwsb0JBQVYsSUFBZ0MsSUFBQU0sZ0RBQUEsR0FBaEM7RUFBQSxDQURrQyxFQUVsQyxDQUFDTixvQkFBRCxDQUZrQyxDQUFwQztFQUtBLElBQU1PLDBDQUEwQyxHQUFHLElBQUFGLGNBQUEsRUFDakQ7SUFBQSxrREFBVU4sbUNBQVYsSUFBK0MsSUFBQVMsK0RBQUEsR0FBL0M7RUFBQSxDQURpRCxFQUVqRCxDQUFDVCxtQ0FBRCxDQUZpRCxDQUFuRCxDQU5BLENBV0E7O0VBQ0EsSUFBTVUsYUFBYSxHQUFHLElBQUFKLGNBQUEsRUFDcEI7SUFBQSxPQUFPRixRQUFRLEdBQUdPLFNBQUgsR0FBZSxJQUFBQyxvQ0FBQSxFQUE0QlQsWUFBNUIsQ0FBOUI7RUFBQSxDQURvQixFQUVwQixDQUFDQSxZQUFELEVBQWVDLFFBQWYsQ0FGb0IsQ0FBdEI7RUFLQSxJQUFNUyxxQkFBcUIsR0FBRyxJQUFBUCxjQUFBLEVBQzVCO0lBQUEsT0FBTyxPQUFPSixjQUFQLEtBQTBCLFdBQTFCLEdBQXdDWSx1QkFBeEMsR0FBZ0VaLGNBQXZFO0VBQUEsQ0FENEIsRUFFNUIsQ0FBQ0EsY0FBRCxDQUY0QixDQUE5QjtFQUtBLE9BQU87SUFDTEYsbUNBQW1DLEVBQUVRLDBDQURoQztJQUVMUCxvQkFBb0IsRUFBRUksMkJBRmpCO0lBR0xLLGFBQWEsRUFBYkEsYUFISztJQUlMUixjQUFjLEVBQUVXO0VBSlgsQ0FBUDtBQU1EIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "botframework-webchat",
3
- "version": "4.15.10-main.20230908.de79e0e",
3
+ "version": "4.15.10-main.20230911.d62393e",
4
4
  "description": "A highly-customizable web-based chat client for Azure Bot Services.",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -92,10 +92,10 @@
92
92
  "@babel/runtime": "7.19.0",
93
93
  "adaptivecards": "2.11.1",
94
94
  "botframework-directlinejs": "0.15.4",
95
- "botframework-directlinespeech-sdk": "4.15.10-main.20230908.de79e0e",
96
- "botframework-webchat-api": "4.15.10-main.20230908.de79e0e",
97
- "botframework-webchat-component": "4.15.10-main.20230908.de79e0e",
98
- "botframework-webchat-core": "4.15.10-main.20230908.de79e0e",
95
+ "botframework-directlinespeech-sdk": "4.15.10-main.20230911.d62393e",
96
+ "botframework-webchat-api": "4.15.10-main.20230911.d62393e",
97
+ "botframework-webchat-component": "4.15.10-main.20230911.d62393e",
98
+ "botframework-webchat-core": "4.15.10-main.20230911.d62393e",
99
99
  "classnames": "2.3.2",
100
100
  "core-js": "3.28.0",
101
101
  "markdown-it": "13.0.1",
@@ -103,6 +103,8 @@
103
103
  "markdown-it-attrs-es5": "2.0.2",
104
104
  "markdown-it-for-inline": "0.1.1",
105
105
  "math-random": "2.0.1",
106
+ "mdast": "3.0.0",
107
+ "mdast-util-from-markdown": "2.0.0",
106
108
  "memoize-one": "6.0.0",
107
109
  "microsoft-cognitiveservices-speech-sdk": "1.17.0",
108
110
  "prop-types": "15.8.1",
@@ -126,8 +128,8 @@
126
128
  "babel-plugin-transform-inline-environment-variables": "^0.4.4",
127
129
  "concurrently": "^7.6.0",
128
130
  "esbuild": "^0.17.10",
129
- "isomorphic-react": "4.15.10-main.20230908.de79e0e",
130
- "isomorphic-react-dom": "4.15.10-main.20230908.de79e0e",
131
+ "isomorphic-react": "4.15.10-main.20230911.d62393e",
132
+ "isomorphic-react-dom": "4.15.10-main.20230911.d62393e",
131
133
  "source-map-loader": "^4.0.1",
132
134
  "terser-webpack-plugin": "^5.3.6",
133
135
  "typescript": "^4.9.5",
@@ -1,6 +1,6 @@
1
1
  /* eslint no-magic-numbers: ["error", { "ignore": [2] }] */
2
2
 
3
- import renderMarkdown from '../renderMarkdown';
3
+ import renderMarkdown from '../markdown/renderMarkdown';
4
4
 
5
5
  describe('renderMarkdown', () => {
6
6
  it('should render markdown', () => {
@@ -54,7 +54,7 @@ describe('renderMarkdown', () => {
54
54
 
55
55
  expect(renderMarkdown('[example](https://sample.com){aria-label="Sample label"}', styleOptions))
56
56
  .toMatchInlineSnapshot(`
57
- "<p><a href=\\"https://sample.com\\" aria-label=\\"Sample label\\" rel=\\"noopener noreferrer\\" target=\\"_blank\\">example<img src=\\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\\" alt class=\\"webchat__markdown__external-link-icon\\" /></a></p>
57
+ "<p><a href=\\"https://sample.com\\" aria-label=\\"Sample label\\" rel=\\"noopener noreferrer\\" target=\\"_blank\\">example<img src=\\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\\" alt class=\\"webchat__render-markdown__external-link-icon\\" title /></a></p>
58
58
  "
59
59
  `);
60
60
  });
@@ -65,7 +65,7 @@ describe('renderMarkdown', () => {
65
65
 
66
66
  expect(renderMarkdown('[example](https://sample.com){aria-label="Sample label"}', styleOptions, options))
67
67
  .toMatchInlineSnapshot(`
68
- "<p><a href=\\"https://sample.com\\" aria-label=\\"Sample label\\" rel=\\"noopener noreferrer\\" target=\\"_blank\\" title=\\"Opens in a new window, external.\\">example<img src=\\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\\" alt=\\"Opens in a new window, external.\\" class=\\"webchat__markdown__external-link-icon\\" /></a></p>
68
+ "<p><a href=\\"https://sample.com\\" aria-label=\\"Sample label\\" rel=\\"noopener noreferrer\\" target=\\"_blank\\">example<img src=\\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\\" alt class=\\"webchat__render-markdown__external-link-icon\\" title=\\"Opens in a new window, external.\\" /></a></p>
69
69
  "
70
70
  `);
71
71
  });
package/src/index.ts CHANGED
@@ -22,7 +22,7 @@ import HeroCardContent from './adaptiveCards/Attachment/HeroCardContent';
22
22
  import OAuthCardContent from './adaptiveCards/Attachment/OAuthCardContent';
23
23
  import ReactWebChat from './FullReactWebChat';
24
24
  import ReceiptCardContent from './adaptiveCards/Attachment/ReceiptCardContent';
25
- import renderMarkdown from './renderMarkdown';
25
+ import renderMarkdown from './markdown/renderMarkdown';
26
26
  import SignInCardContent from './adaptiveCards/Attachment/SignInCardContent';
27
27
  import ThumbnailCardContent from './adaptiveCards/Attachment/ThumbnailCardContent';
28
28
  import useAdaptiveCardsHostConfig from './adaptiveCards/hooks/useAdaptiveCardsHostConfig';
@@ -0,0 +1,27 @@
1
+ import MarkdownIt from 'markdown-it';
2
+
3
+ import ariaLabel, { pre, post } from './ariaLabel';
4
+
5
+ test('should render {aria-label="Bing search"}', () => {
6
+ const markdown = 'Visit [Bing](https://bing.com/){aria-label="Bing search"} to start.';
7
+
8
+ const html = post(new MarkdownIt().use(ariaLabel).render(pre(markdown)));
9
+
10
+ expect(html).toBe('<p>Visit <a href="https://bing.com/" aria-label="Bing search">Bing</a> to start.</p>\n');
11
+ });
12
+
13
+ test('should render {1} as-is', () => {
14
+ const markdown = 'This is number {1}.';
15
+
16
+ const html = post(new MarkdownIt().use(ariaLabel).render(pre(markdown)));
17
+
18
+ expect(html).toBe('<p>This is number {1}.</p>\n');
19
+ });
20
+
21
+ test('should render {title="abc"} as-is', () => {
22
+ const markdown = 'Visit [Bing](https://bing.com/){title="abc"} to start.';
23
+
24
+ const html = post(new MarkdownIt().use(ariaLabel).render(pre(markdown)));
25
+
26
+ expect(html).toBe('<p>Visit <a href="https://bing.com/">Bing</a>{title=&quot;abc&quot;} to start.</p>\n');
27
+ });
@@ -0,0 +1,52 @@
1
+ import MarkdownIt from 'markdown-it';
2
+ import markdownItAttrs from 'markdown-it-attrs-es5';
3
+
4
+ const MARKDOWN_ATTRS_LEFT_DELIMITER = '⟬';
5
+ // Make sure the delimiter is free from any RegExp characters, such as *, ?, etc.
6
+ // IE11 does not support "u" flag and Babel could not remove it. We intentionally omitting the "u" flag here.
7
+ // eslint-disable-next-line require-unicode-regexp
8
+ const MARKDOWN_ATTRS_LEFT_DELIMITER_PATTERN = new RegExp(MARKDOWN_ATTRS_LEFT_DELIMITER, 'g');
9
+
10
+ const MARKDOWN_ATTRS_RIGHT_DELIMITER = '⟭';
11
+ // Make sure the delimiter is free from any RegExp characters, such as *, ?, etc.
12
+ // IE11 does not support "u" flag and Babel could not remove it. We intentionally omitting the "u" flag here.
13
+ // eslint-disable-next-line require-unicode-regexp
14
+ const MARKDOWN_ATTRS_RIGHT_DELIMITER_PATTERN = new RegExp(MARKDOWN_ATTRS_RIGHT_DELIMITER, 'g');
15
+
16
+ const ariaLabel = (markdown: typeof MarkdownIt): typeof MarkdownIt =>
17
+ markdown.use(markdownItAttrs, {
18
+ // `markdown-it-attrs` is added for accessibility and allow bot developers to specify `aria-label`.
19
+ // We are allowlisting `aria-label` only as it is allowlisted in `sanitize-html`.
20
+ // Other `aria-*` will be sanitized even we allowlisted here.
21
+ allowedAttributes: ['aria-label'],
22
+ leftDelimiter: MARKDOWN_ATTRS_LEFT_DELIMITER,
23
+ rightDelimiter: MARKDOWN_ATTRS_RIGHT_DELIMITER
24
+ });
25
+
26
+ // TODO: We should fold pre/post back into the plugin.
27
+ const pre = (markdown: string): string =>
28
+ // Related to #3165.
29
+ // We only support attributes "aria-label" and should leave other attributes as-is.
30
+ // However, `markdown-it-attrs` remove unrecognized attributes, such as {hello}.
31
+ // Before passing to `markdown-it-attrs`, we will convert known attributes from {aria-label="..."} into ⟬aria-label="..."⟭ (using white tortoise shell brackets).
32
+ // Then, we ask `markdown-it-attrs` to only process the new brackets, so it should only try to process things that we allowlisted.
33
+ // Lastly, we revert tortoise shell brackets back to curly brackets, for unprocessed attributes.
34
+ markdown
35
+ // IE11 does not support "u" flag and Babel could not remove it. We intentionally omitting the "u" flag here.
36
+ // eslint-disable-next-line require-unicode-regexp
37
+ .replace(/\{\s*aria-label()\s*\}/gi, `${MARKDOWN_ATTRS_LEFT_DELIMITER}aria-label${MARKDOWN_ATTRS_RIGHT_DELIMITER}`)
38
+ .replace(
39
+ // IE11 does not support "u" flag and Babel could not remove it. We intentionally omitting the "u" flag here.
40
+ // eslint-disable-next-line require-unicode-regexp
41
+ /\{\s*aria-label=("[^"]*"|[^\s}]*)\s*\}/gi,
42
+ (_, valueInsideQuotes) =>
43
+ `${MARKDOWN_ATTRS_LEFT_DELIMITER}aria-label=${valueInsideQuotes}${MARKDOWN_ATTRS_RIGHT_DELIMITER}`
44
+ );
45
+
46
+ const post = (html: string): string =>
47
+ // Restore attributes not processed by `markdown-it-attrs`.
48
+ // TODO: [P2] #2511 After we fixed our polyfill story, we should use "String.prototype.replaceAll" instead of RegExp for replace all occurrences.
49
+ html.replace(MARKDOWN_ATTRS_LEFT_DELIMITER_PATTERN, '{').replace(MARKDOWN_ATTRS_RIGHT_DELIMITER_PATTERN, '}');
50
+
51
+ export default ariaLabel;
52
+ export { pre, post };