@ndla/safelink 2.0.9 → 2.1.2

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/es/SafeLink.js CHANGED
@@ -39,7 +39,7 @@ var LaunchIcon = /*#__PURE__*/_styled(Launch, {
39
39
  } : {
40
40
  name: "vum9tn",
41
41
  styles: "margin-left:6px;height:auto;width:auto;margin-top:1px;",
42
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNhZmVMaW5rLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQmlDIiwiZmlsZSI6IlNhZmVMaW5rLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LXByZXNlbnQsIE5ETEEuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMdjMgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuaW1wb3J0IFJlYWN0LCB7IEhUTUxBdHRyaWJ1dGVzLCBSZWFjdE5vZGUsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBMaW5rLCBMaW5rUHJvcHMgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IExhdW5jaCB9IGZyb20gJ0BuZGxhL2ljb25zL2NvbW1vbic7XG5pbXBvcnQgaXNTdHJpbmcgZnJvbSAnbG9kYXNoL2lzU3RyaW5nJztcbmltcG9ydCBNaXNzaW5nUm91dGVyQ29udGV4dCBmcm9tICcuL01pc3NpbmdSb3V0ZXJDb250ZXh0JztcblxuY29uc3QgaXNFeHRlcm5hbExpbmsgPSAodG8/OiBMaW5rUHJvcHNbJ3RvJ10pID0+XG4gIHRvICYmIGlzU3RyaW5nKHRvKSAmJiAodG8uc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSB8fCB0by5zdGFydHNXaXRoKCdodHRwOi8vJykpO1xuXG5leHBvcnQgY29uc3QgaXNPbGROZGxhTGluayA9ICh0bz86IExpbmtQcm9wc1sndG8nXSkgPT4gdG8gJiYgaXNTdHJpbmcodG8pICYmIHRvLm1hdGNoKC8oLiopXFwvP25vZGVcXC8oXFxkKykuKi8pICE9PSBudWxsO1xuXG5jb25zdCBMYXVuY2hJY29uID0gc3R5bGVkKExhdW5jaClgXG4gIG1hcmdpbi1sZWZ0OiA2cHg7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG4gIG1hcmdpbi10b3A6IDFweDtcbmA7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHNob3dOZXdXaW5kb3dJY29uPzogYm9vbGVhbjtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgdHlwZSBTYWZlTGlua1Byb3BzID0gUHJvcHMgJiBMaW5rUHJvcHMgJiBIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD47XG5cbi8vIEZhbGxiYWNrIHRvIG5vcm1hbCBsaW5rIGlmIGFwcCBpcyBtaXNzaW5nIFJvdXRlckNvbnRleHQsIGxpbmsgaXMgZXh0ZXJuYWwgb3IgaXMgb2xkIG5kbGEgbGlua1xuY29uc3QgU2FmZUxpbmsgPSAoeyB0bywgcmVwbGFjZSwgY2hpbGRyZW4sIHNob3dOZXdXaW5kb3dJY29uLCB0YWJJbmRleCwgLi4ucmVzdCB9OiBTYWZlTGlua1Byb3BzKSA9PiB7XG4gIGNvbnN0IGlzTWlzc2luZ1JvdXRlckNvbnRleHQgPSB1c2VDb250ZXh0KE1pc3NpbmdSb3V0ZXJDb250ZXh0KTtcblxuICBpZiAoaXNNaXNzaW5nUm91dGVyQ29udGV4dCB8fCBpc0V4dGVybmFsTGluayh0bykgfHwgaXNPbGROZGxhTGluayh0bykpIHtcbiAgICBjb25zdCBocmVmID0gdHlwZW9mIHRvID09PSAnc3RyaW5nJyA/IHRvIDogJyMnO1xuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8YSBocmVmPXtocmVmfSB7Li4ucmVzdH0+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIHtzaG93TmV3V2luZG93SWNvbiAmJiA8TGF1bmNoSWNvbiBzdHlsZT17eyB2ZXJ0aWNhbEFsaWduOiAndGV4dC10b3AnIH19IC8+fVxuICAgICAgICA8L2E+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICAvLyBSUjYgbGluayBpbW1lZGlhdGVseSBmYWlscyBpZiB0byBpcyBzb21laG93IHVuZGVmaW5lZCwgc28gd2UgcHJvdmlkZSBhbiBlbXB0eSBmYWxsYmFjayB0byByZWNvdmVyLlxuICAgIDxMaW5rIHRhYkluZGV4PXt0YWJJbmRleCA/PyAwfSB0bz17dG8gPz8gJyd9IHJlcGxhY2U9e3JlcGxhY2V9IHsuLi5yZXN0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIHtzaG93TmV3V2luZG93SWNvbiAmJiA8TGF1bmNoSWNvbiBzdHlsZT17eyB2ZXJ0aWNhbEFsaWduOiAndGV4dC10b3AnIH19IC8+fVxuICAgIDwvTGluaz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNhZmVMaW5rO1xuIl19 */",
42
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNhZmVMaW5rLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQmlDIiwiZmlsZSI6IlNhZmVMaW5rLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LXByZXNlbnQsIE5ETEEuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMdjMgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuaW1wb3J0IFJlYWN0LCB7IEhUTUxBdHRyaWJ1dGVzLCBNdXRhYmxlUmVmT2JqZWN0LCBSZWFjdE5vZGUsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBMaW5rLCBMaW5rUHJvcHMgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IExhdW5jaCB9IGZyb20gJ0BuZGxhL2ljb25zL2NvbW1vbic7XG5pbXBvcnQgaXNTdHJpbmcgZnJvbSAnbG9kYXNoL2lzU3RyaW5nJztcbmltcG9ydCBNaXNzaW5nUm91dGVyQ29udGV4dCBmcm9tICcuL01pc3NpbmdSb3V0ZXJDb250ZXh0JztcblxuY29uc3QgaXNFeHRlcm5hbExpbmsgPSAodG8/OiBMaW5rUHJvcHNbJ3RvJ10pID0+XG4gIHRvICYmIGlzU3RyaW5nKHRvKSAmJiAodG8uc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSB8fCB0by5zdGFydHNXaXRoKCdodHRwOi8vJykpO1xuXG5leHBvcnQgY29uc3QgaXNPbGROZGxhTGluayA9ICh0bz86IExpbmtQcm9wc1sndG8nXSkgPT4gdG8gJiYgaXNTdHJpbmcodG8pICYmIHRvLm1hdGNoKC8oLiopXFwvP25vZGVcXC8oXFxkKykuKi8pICE9PSBudWxsO1xuXG5jb25zdCBMYXVuY2hJY29uID0gc3R5bGVkKExhdW5jaClgXG4gIG1hcmdpbi1sZWZ0OiA2cHg7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG4gIG1hcmdpbi10b3A6IDFweDtcbmA7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHNob3dOZXdXaW5kb3dJY29uPzogYm9vbGVhbjtcbiAgcmVmPzogTXV0YWJsZVJlZk9iamVjdDxIVE1MQW5jaG9yRWxlbWVudCB8IG51bGw+O1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5cbmV4cG9ydCB0eXBlIFNhZmVMaW5rUHJvcHMgPSBQcm9wcyAmIExpbmtQcm9wcyAmIEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PjtcblxuLy8gRmFsbGJhY2sgdG8gbm9ybWFsIGxpbmsgaWYgYXBwIGlzIG1pc3NpbmcgUm91dGVyQ29udGV4dCwgbGluayBpcyBleHRlcm5hbCBvciBpcyBvbGQgbmRsYSBsaW5rXG5jb25zdCBTYWZlTGluayA9ICh7IHRvLCByZXBsYWNlLCBjaGlsZHJlbiwgc2hvd05ld1dpbmRvd0ljb24sIHRhYkluZGV4LCByZWYsIC4uLnJlc3QgfTogU2FmZUxpbmtQcm9wcykgPT4ge1xuICBjb25zdCBpc01pc3NpbmdSb3V0ZXJDb250ZXh0ID0gdXNlQ29udGV4dChNaXNzaW5nUm91dGVyQ29udGV4dCk7XG5cbiAgaWYgKGlzTWlzc2luZ1JvdXRlckNvbnRleHQgfHwgaXNFeHRlcm5hbExpbmsodG8pIHx8IGlzT2xkTmRsYUxpbmsodG8pKSB7XG4gICAgY29uc3QgaHJlZiA9IHR5cGVvZiB0byA9PT0gJ3N0cmluZycgPyB0byA6ICcjJztcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGEgaHJlZj17aHJlZn0gcmVmPXtyZWZ9IHsuLi5yZXN0fT5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAge3Nob3dOZXdXaW5kb3dJY29uICYmIDxMYXVuY2hJY29uIHN0eWxlPXt7IHZlcnRpY2FsQWxpZ246ICd0ZXh0LXRvcCcgfX0gLz59XG4gICAgICAgIDwvYT5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIC8vIFJSNiBsaW5rIGltbWVkaWF0ZWx5IGZhaWxzIGlmIHRvIGlzIHNvbWVob3cgdW5kZWZpbmVkLCBzbyB3ZSBwcm92aWRlIGFuIGVtcHR5IGZhbGxiYWNrIHRvIHJlY292ZXIuXG4gICAgPExpbmsgcmVmPXtyZWZ9IHRhYkluZGV4PXt0YWJJbmRleCA/PyAwfSB0bz17dG8gPz8gJyd9IHJlcGxhY2U9e3JlcGxhY2V9IHsuLi5yZXN0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIHtzaG93TmV3V2luZG93SWNvbiAmJiA8TGF1bmNoSWNvbiBzdHlsZT17eyB2ZXJ0aWNhbEFsaWduOiAndGV4dC10b3AnIH19IC8+fVxuICAgIDwvTGluaz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNhZmVMaW5rO1xuIl19 */",
43
43
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
44
44
  });
45
45
 
@@ -50,14 +50,16 @@ var SafeLink = function SafeLink(_ref) {
50
50
  children = _ref.children,
51
51
  showNewWindowIcon = _ref.showNewWindowIcon,
52
52
  tabIndex = _ref.tabIndex,
53
- rest = _objectWithoutProperties(_ref, ["to", "replace", "children", "showNewWindowIcon", "tabIndex"]);
53
+ ref = _ref.ref,
54
+ rest = _objectWithoutProperties(_ref, ["to", "replace", "children", "showNewWindowIcon", "tabIndex", "ref"]);
54
55
 
55
56
  var isMissingRouterContext = useContext(MissingRouterContext);
56
57
 
57
58
  if (isMissingRouterContext || isExternalLink(to) || isOldNdlaLink(to)) {
58
59
  var href = typeof to === 'string' ? to : '#';
59
60
  return ___EmotionJSX(React.Fragment, null, ___EmotionJSX("a", _extends({
60
- href: href
61
+ href: href,
62
+ ref: ref
61
63
  }, rest), children, showNewWindowIcon && ___EmotionJSX(LaunchIcon, {
62
64
  style: {
63
65
  verticalAlign: 'text-top'
@@ -67,6 +69,7 @@ var SafeLink = function SafeLink(_ref) {
67
69
 
68
70
  return (// RR6 link immediately fails if to is somehow undefined, so we provide an empty fallback to recover.
69
71
  ___EmotionJSX(Link, _extends({
72
+ ref: ref,
70
73
  tabIndex: tabIndex !== null && tabIndex !== void 0 ? tabIndex : 0,
71
74
  to: to !== null && to !== void 0 ? to : '',
72
75
  replace: replace
package/lib/SafeLink.d.ts CHANGED
@@ -5,13 +5,14 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  */
8
- import { HTMLAttributes, ReactNode } from 'react';
8
+ import { HTMLAttributes, MutableRefObject, ReactNode } from 'react';
9
9
  import { LinkProps } from 'react-router-dom';
10
10
  export declare const isOldNdlaLink: (to?: string | Partial<import("history").Path> | undefined) => boolean | "" | undefined;
11
11
  declare type Props = {
12
12
  showNewWindowIcon?: boolean;
13
+ ref?: MutableRefObject<HTMLAnchorElement | null>;
13
14
  children?: ReactNode;
14
15
  };
15
16
  export declare type SafeLinkProps = Props & LinkProps & HTMLAttributes<HTMLElement>;
16
- declare const SafeLink: ({ to, replace, children, showNewWindowIcon, tabIndex, ...rest }: SafeLinkProps) => JSX.Element;
17
+ declare const SafeLink: ({ to, replace, children, showNewWindowIcon, tabIndex, ref, ...rest }: SafeLinkProps) => JSX.Element;
17
18
  export default SafeLink;
package/lib/SafeLink.js CHANGED
@@ -53,7 +53,7 @@ var LaunchIcon = ( /*#__PURE__*/0, _styledBase["default"])(_common.Launch, {
53
53
  } : {
54
54
  name: "vum9tn",
55
55
  styles: "margin-left:6px;height:auto;width:auto;margin-top:1px;",
56
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNhZmVMaW5rLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQmlDIiwiZmlsZSI6IlNhZmVMaW5rLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LXByZXNlbnQsIE5ETEEuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMdjMgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuaW1wb3J0IFJlYWN0LCB7IEhUTUxBdHRyaWJ1dGVzLCBSZWFjdE5vZGUsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBMaW5rLCBMaW5rUHJvcHMgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IExhdW5jaCB9IGZyb20gJ0BuZGxhL2ljb25zL2NvbW1vbic7XG5pbXBvcnQgaXNTdHJpbmcgZnJvbSAnbG9kYXNoL2lzU3RyaW5nJztcbmltcG9ydCBNaXNzaW5nUm91dGVyQ29udGV4dCBmcm9tICcuL01pc3NpbmdSb3V0ZXJDb250ZXh0JztcblxuY29uc3QgaXNFeHRlcm5hbExpbmsgPSAodG8/OiBMaW5rUHJvcHNbJ3RvJ10pID0+XG4gIHRvICYmIGlzU3RyaW5nKHRvKSAmJiAodG8uc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSB8fCB0by5zdGFydHNXaXRoKCdodHRwOi8vJykpO1xuXG5leHBvcnQgY29uc3QgaXNPbGROZGxhTGluayA9ICh0bz86IExpbmtQcm9wc1sndG8nXSkgPT4gdG8gJiYgaXNTdHJpbmcodG8pICYmIHRvLm1hdGNoKC8oLiopXFwvP25vZGVcXC8oXFxkKykuKi8pICE9PSBudWxsO1xuXG5jb25zdCBMYXVuY2hJY29uID0gc3R5bGVkKExhdW5jaClgXG4gIG1hcmdpbi1sZWZ0OiA2cHg7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG4gIG1hcmdpbi10b3A6IDFweDtcbmA7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHNob3dOZXdXaW5kb3dJY29uPzogYm9vbGVhbjtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgdHlwZSBTYWZlTGlua1Byb3BzID0gUHJvcHMgJiBMaW5rUHJvcHMgJiBIVE1MQXR0cmlidXRlczxIVE1MRWxlbWVudD47XG5cbi8vIEZhbGxiYWNrIHRvIG5vcm1hbCBsaW5rIGlmIGFwcCBpcyBtaXNzaW5nIFJvdXRlckNvbnRleHQsIGxpbmsgaXMgZXh0ZXJuYWwgb3IgaXMgb2xkIG5kbGEgbGlua1xuY29uc3QgU2FmZUxpbmsgPSAoeyB0bywgcmVwbGFjZSwgY2hpbGRyZW4sIHNob3dOZXdXaW5kb3dJY29uLCB0YWJJbmRleCwgLi4ucmVzdCB9OiBTYWZlTGlua1Byb3BzKSA9PiB7XG4gIGNvbnN0IGlzTWlzc2luZ1JvdXRlckNvbnRleHQgPSB1c2VDb250ZXh0KE1pc3NpbmdSb3V0ZXJDb250ZXh0KTtcblxuICBpZiAoaXNNaXNzaW5nUm91dGVyQ29udGV4dCB8fCBpc0V4dGVybmFsTGluayh0bykgfHwgaXNPbGROZGxhTGluayh0bykpIHtcbiAgICBjb25zdCBocmVmID0gdHlwZW9mIHRvID09PSAnc3RyaW5nJyA/IHRvIDogJyMnO1xuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8YSBocmVmPXtocmVmfSB7Li4ucmVzdH0+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIHtzaG93TmV3V2luZG93SWNvbiAmJiA8TGF1bmNoSWNvbiBzdHlsZT17eyB2ZXJ0aWNhbEFsaWduOiAndGV4dC10b3AnIH19IC8+fVxuICAgICAgICA8L2E+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICAvLyBSUjYgbGluayBpbW1lZGlhdGVseSBmYWlscyBpZiB0byBpcyBzb21laG93IHVuZGVmaW5lZCwgc28gd2UgcHJvdmlkZSBhbiBlbXB0eSBmYWxsYmFjayB0byByZWNvdmVyLlxuICAgIDxMaW5rIHRhYkluZGV4PXt0YWJJbmRleCA/PyAwfSB0bz17dG8gPz8gJyd9IHJlcGxhY2U9e3JlcGxhY2V9IHsuLi5yZXN0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIHtzaG93TmV3V2luZG93SWNvbiAmJiA8TGF1bmNoSWNvbiBzdHlsZT17eyB2ZXJ0aWNhbEFsaWduOiAndGV4dC10b3AnIH19IC8+fVxuICAgIDwvTGluaz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNhZmVMaW5rO1xuIl19 */",
56
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNhZmVMaW5rLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQmlDIiwiZmlsZSI6IlNhZmVMaW5rLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LXByZXNlbnQsIE5ETEEuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMdjMgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuaW1wb3J0IFJlYWN0LCB7IEhUTUxBdHRyaWJ1dGVzLCBNdXRhYmxlUmVmT2JqZWN0LCBSZWFjdE5vZGUsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBMaW5rLCBMaW5rUHJvcHMgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IExhdW5jaCB9IGZyb20gJ0BuZGxhL2ljb25zL2NvbW1vbic7XG5pbXBvcnQgaXNTdHJpbmcgZnJvbSAnbG9kYXNoL2lzU3RyaW5nJztcbmltcG9ydCBNaXNzaW5nUm91dGVyQ29udGV4dCBmcm9tICcuL01pc3NpbmdSb3V0ZXJDb250ZXh0JztcblxuY29uc3QgaXNFeHRlcm5hbExpbmsgPSAodG8/OiBMaW5rUHJvcHNbJ3RvJ10pID0+XG4gIHRvICYmIGlzU3RyaW5nKHRvKSAmJiAodG8uc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSB8fCB0by5zdGFydHNXaXRoKCdodHRwOi8vJykpO1xuXG5leHBvcnQgY29uc3QgaXNPbGROZGxhTGluayA9ICh0bz86IExpbmtQcm9wc1sndG8nXSkgPT4gdG8gJiYgaXNTdHJpbmcodG8pICYmIHRvLm1hdGNoKC8oLiopXFwvP25vZGVcXC8oXFxkKykuKi8pICE9PSBudWxsO1xuXG5jb25zdCBMYXVuY2hJY29uID0gc3R5bGVkKExhdW5jaClgXG4gIG1hcmdpbi1sZWZ0OiA2cHg7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG4gIG1hcmdpbi10b3A6IDFweDtcbmA7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHNob3dOZXdXaW5kb3dJY29uPzogYm9vbGVhbjtcbiAgcmVmPzogTXV0YWJsZVJlZk9iamVjdDxIVE1MQW5jaG9yRWxlbWVudCB8IG51bGw+O1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5cbmV4cG9ydCB0eXBlIFNhZmVMaW5rUHJvcHMgPSBQcm9wcyAmIExpbmtQcm9wcyAmIEhUTUxBdHRyaWJ1dGVzPEhUTUxFbGVtZW50PjtcblxuLy8gRmFsbGJhY2sgdG8gbm9ybWFsIGxpbmsgaWYgYXBwIGlzIG1pc3NpbmcgUm91dGVyQ29udGV4dCwgbGluayBpcyBleHRlcm5hbCBvciBpcyBvbGQgbmRsYSBsaW5rXG5jb25zdCBTYWZlTGluayA9ICh7IHRvLCByZXBsYWNlLCBjaGlsZHJlbiwgc2hvd05ld1dpbmRvd0ljb24sIHRhYkluZGV4LCByZWYsIC4uLnJlc3QgfTogU2FmZUxpbmtQcm9wcykgPT4ge1xuICBjb25zdCBpc01pc3NpbmdSb3V0ZXJDb250ZXh0ID0gdXNlQ29udGV4dChNaXNzaW5nUm91dGVyQ29udGV4dCk7XG5cbiAgaWYgKGlzTWlzc2luZ1JvdXRlckNvbnRleHQgfHwgaXNFeHRlcm5hbExpbmsodG8pIHx8IGlzT2xkTmRsYUxpbmsodG8pKSB7XG4gICAgY29uc3QgaHJlZiA9IHR5cGVvZiB0byA9PT0gJ3N0cmluZycgPyB0byA6ICcjJztcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPGEgaHJlZj17aHJlZn0gcmVmPXtyZWZ9IHsuLi5yZXN0fT5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAge3Nob3dOZXdXaW5kb3dJY29uICYmIDxMYXVuY2hJY29uIHN0eWxlPXt7IHZlcnRpY2FsQWxpZ246ICd0ZXh0LXRvcCcgfX0gLz59XG4gICAgICAgIDwvYT5cbiAgICAgIDwvPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIC8vIFJSNiBsaW5rIGltbWVkaWF0ZWx5IGZhaWxzIGlmIHRvIGlzIHNvbWVob3cgdW5kZWZpbmVkLCBzbyB3ZSBwcm92aWRlIGFuIGVtcHR5IGZhbGxiYWNrIHRvIHJlY292ZXIuXG4gICAgPExpbmsgcmVmPXtyZWZ9IHRhYkluZGV4PXt0YWJJbmRleCA/PyAwfSB0bz17dG8gPz8gJyd9IHJlcGxhY2U9e3JlcGxhY2V9IHsuLi5yZXN0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIHtzaG93TmV3V2luZG93SWNvbiAmJiA8TGF1bmNoSWNvbiBzdHlsZT17eyB2ZXJ0aWNhbEFsaWduOiAndGV4dC10b3AnIH19IC8+fVxuICAgIDwvTGluaz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNhZmVMaW5rO1xuIl19 */",
57
57
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
58
58
  });
59
59
 
@@ -64,14 +64,16 @@ var SafeLink = function SafeLink(_ref) {
64
64
  children = _ref.children,
65
65
  showNewWindowIcon = _ref.showNewWindowIcon,
66
66
  tabIndex = _ref.tabIndex,
67
- rest = _objectWithoutProperties(_ref, ["to", "replace", "children", "showNewWindowIcon", "tabIndex"]);
67
+ ref = _ref.ref,
68
+ rest = _objectWithoutProperties(_ref, ["to", "replace", "children", "showNewWindowIcon", "tabIndex", "ref"]);
68
69
 
69
70
  var isMissingRouterContext = (0, _react.useContext)(_MissingRouterContext["default"]);
70
71
 
71
72
  if (isMissingRouterContext || isExternalLink(to) || isOldNdlaLink(to)) {
72
73
  var href = typeof to === 'string' ? to : '#';
73
74
  return (0, _core.jsx)(_react["default"].Fragment, null, (0, _core.jsx)("a", _extends({
74
- href: href
75
+ href: href,
76
+ ref: ref
75
77
  }, rest), children, showNewWindowIcon && (0, _core.jsx)(LaunchIcon, {
76
78
  style: {
77
79
  verticalAlign: 'text-top'
@@ -81,6 +83,7 @@ var SafeLink = function SafeLink(_ref) {
81
83
 
82
84
  return (// RR6 link immediately fails if to is somehow undefined, so we provide an empty fallback to recover.
83
85
  (0, _core.jsx)(_reactRouterDom.Link, _extends({
86
+ ref: ref,
84
87
  tabIndex: tabIndex !== null && tabIndex !== void 0 ? tabIndex : 0,
85
88
  to: to !== null && to !== void 0 ? to : '',
86
89
  replace: replace
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ndla/safelink",
3
- "version": "2.0.9",
3
+ "version": "2.1.2",
4
4
  "description": "SafeLink component for NDLA",
5
5
  "license": "GPL-3.0",
6
6
  "main": "lib/index.js",
@@ -26,7 +26,7 @@
26
26
  "es"
27
27
  ],
28
28
  "dependencies": {
29
- "@ndla/button": "^3.0.0",
29
+ "@ndla/button": "^3.1.1",
30
30
  "@ndla/icons": "^1.10.0"
31
31
  },
32
32
  "peerDependencies": {
@@ -38,5 +38,5 @@
38
38
  "publishConfig": {
39
39
  "access": "public"
40
40
  },
41
- "gitHead": "ae09299c27fc3f48f1b8f77ebe37c7aac511b2ad"
41
+ "gitHead": "38b047f42fcb12c9b44d18246479c51f22d8bf63"
42
42
  }