@transferwise/components 0.0.0-experimental-09aa826 → 0.0.0-experimental-4f94282

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.
package/build/index.js CHANGED
@@ -21,12 +21,11 @@ var reactPopper = require('react-popper');
21
21
  var throttle = require('lodash.throttle');
22
22
  var reactDom = require('react-dom');
23
23
  var neptuneValidation = require('@transferwise/neptune-validation');
24
+ var commonmark = require('commonmark');
24
25
  var art = require('@wise/art');
25
26
  var clamp$2 = require('lodash.clamp');
26
27
  var debounce = require('lodash.debounce');
27
28
  var requiredIf = require('react-required-if');
28
- var commonmark = require('commonmark');
29
- var difference = require('lodash.difference');
30
29
  var toPairs = require('lodash.topairs');
31
30
  var web = require('@react-spring/web');
32
31
 
@@ -56,11 +55,10 @@ var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
56
55
  var mergeProps__default = /*#__PURE__*/_interopDefault(mergeProps);
57
56
  var mergeRefs__default = /*#__PURE__*/_interopDefault(mergeRefs);
58
57
  var throttle__default = /*#__PURE__*/_interopDefault(throttle);
58
+ var commonmark__default = /*#__PURE__*/_interopDefault(commonmark);
59
59
  var clamp__default = /*#__PURE__*/_interopDefault(clamp$2);
60
60
  var debounce__default = /*#__PURE__*/_interopDefault(debounce);
61
61
  var requiredIf__default = /*#__PURE__*/_interopDefault(requiredIf);
62
- var commonmark__default = /*#__PURE__*/_interopDefault(commonmark);
63
- var difference__default = /*#__PURE__*/_interopDefault(difference);
64
62
  var toPairs__default = /*#__PURE__*/_interopDefault(toPairs);
65
63
 
66
64
  class HistoryNavigator {
@@ -906,39 +904,32 @@ const writer = new commonmark__default.default.HtmlRenderer({
906
904
  safe: true
907
905
  });
908
906
  const NODE_TYPE_LIST = Object.values(exports.MarkdownNodeType);
909
- const Markdown = ({
910
- as: Element,
911
- children,
912
- className,
907
+ function Markdown({
908
+ as: Element = 'div',
913
909
  allowList,
914
910
  blockList,
915
- config
916
- }) => {
911
+ config,
912
+ className,
913
+ children
914
+ }) {
917
915
  if (!children) {
918
916
  return null;
919
917
  }
920
- if (allowList?.length && blockList?.length) {
918
+ const linkTarget = config?.link?.target ?? '_self';
919
+ if (allowList != null && blockList != null) {
921
920
  logActionRequired$2('Markdown supports only one of `allowList` or `blockList` to be used at a time. `blockList` will be ignored.');
922
921
  }
923
922
  const parser = nodes => {
924
923
  const parsed = reader.parse(nodes);
925
- if (allowList || blockList) {
926
- const toExclude = allowList ? difference__default.default(NODE_TYPE_LIST, allowList) : blockList;
927
- return stripNodes({
928
- parsed,
929
- blockList: toExclude
930
- });
931
- }
932
- return parsed;
924
+ const toExclude = allowList != null ? NODE_TYPE_LIST.filter(type => !allowList.includes(type)) : blockList;
925
+ return toExclude != null ? stripNodes({
926
+ parsed,
927
+ blockList: toExclude
928
+ }) : parsed;
933
929
  };
934
930
  const createMarkup = () => {
935
- const {
936
- link: {
937
- target
938
- }
939
- } = config;
940
931
  const parsed = parser(children);
941
- return writer.render(parsed).replace(/<a href="/g, `<a target="${target}" href="`);
932
+ return writer.render(parsed).replace(/<a href="/g, `<a target="${linkTarget}" href="`);
942
933
  };
943
934
  return /*#__PURE__*/jsxRuntime.jsx(Element, {
944
935
  className: className,
@@ -946,7 +937,7 @@ const Markdown = ({
946
937
  __html: createMarkup()
947
938
  }
948
939
  });
949
- };
940
+ }
950
941
  function stripNodes({
951
942
  blockList,
952
943
  parsed
@@ -955,51 +946,23 @@ function stripNodes({
955
946
  return parsed;
956
947
  }
957
948
  const walker = parsed.walker();
958
- let event = walker.next();
959
- while (event) {
949
+ for (let event = walker.next(); event != null; event = walker.next()) {
960
950
  const {
961
951
  node
962
952
  } = event;
963
- if (blockList.includes(node.type)) {
964
- if (!event.entering) {
965
- while (node.firstChild) {
966
- node.insertBefore(node.firstChild);
967
- }
968
- node.unlink();
953
+ if (blockList.includes(node.type) && !event.entering) {
954
+ while (node.firstChild != null) {
955
+ node.insertBefore(node.firstChild);
969
956
  }
957
+ node.unlink();
970
958
  }
971
- event = walker.next();
972
959
  }
973
- return walker.root;
960
+ return parsed;
974
961
  }
975
- Markdown.propTypes = {
976
- children: PropTypes__default.default.string.isRequired,
977
- as: PropTypes__default.default.string,
978
- className: PropTypes__default.default.string,
979
- allowList: PropTypes__default.default.arrayOf(PropTypes__default.default.oneOf(['block_quote', 'code_block', 'code', 'emph', 'heading', 'html_block', 'html_inline', 'image', 'item', 'linebreak', 'link', 'list', 'paragraph', 'softbreak', 'strong', 'thematic_break'])),
980
- blockList: PropTypes__default.default.arrayOf(PropTypes__default.default.oneOf(['block_quote', 'code_block', 'code', 'emph', 'heading', 'html_block', 'html_inline', 'image', 'item', 'linebreak', 'link', 'list', 'paragraph', 'softbreak', 'strong', 'thematic_break'])),
981
- config: PropTypes__default.default.shape({
982
- link: PropTypes__default.default.shape({
983
- target: PropTypes__default.default.oneOf(['_blank', '_self'])
984
- })
985
- })
986
- };
987
- Markdown.defaultProps = {
988
- as: 'div',
989
- className: undefined,
990
- allowList: null,
991
- blockList: null,
992
- config: {
993
- link: {
994
- target: '_self'
995
- }
996
- }
997
- };
998
- var Markdown$1 = Markdown;
999
962
 
1000
963
  const allowList = [exports.MarkdownNodeType.STRONG];
1001
964
  const InlineMarkdown = props => {
1002
- return /*#__PURE__*/jsxRuntime.jsx(Markdown$1, {
965
+ return /*#__PURE__*/jsxRuntime.jsx(Markdown, {
1003
966
  ...props,
1004
967
  as: "span",
1005
968
  allowList: allowList,
@@ -7791,7 +7754,6 @@ class MoneyInput extends React.Component {
7791
7754
  size,
7792
7755
  addon,
7793
7756
  id,
7794
- 'aria-labelledby': ariaLabelledBy,
7795
7757
  selectProps,
7796
7758
  maxLengthOverride
7797
7759
  } = this.props;
@@ -7815,7 +7777,6 @@ class MoneyInput extends React.Component {
7815
7777
  const isFixedCurrency = !this.state.searchQuery && hasSingleCurrency() || !onCurrencyChange;
7816
7778
  const disabled = !this.props.onAmountChange;
7817
7779
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
7818
- "aria-labelledby": ariaLabelledBy,
7819
7780
  className: classNames__default.default(this.style('tw-money-input'), this.style('input-group'), this.style(`input-group-${size}`)),
7820
7781
  children: [/*#__PURE__*/jsxRuntime.jsx(Input, {
7821
7782
  id: id,
@@ -15231,7 +15192,7 @@ exports.Link = Link;
15231
15192
  exports.ListItem = ListItem$1;
15232
15193
  exports.Loader = Loader$1;
15233
15194
  exports.Logo = Logo$1;
15234
- exports.Markdown = Markdown$1;
15195
+ exports.Markdown = Markdown;
15235
15196
  exports.Modal = Modal;
15236
15197
  exports.Money = Money$1;
15237
15198
  exports.MoneyInput = MoneyInput$1;