@ndla/ui 49.0.6 → 49.0.7

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.
@@ -6,12 +6,13 @@
6
6
  *
7
7
  */
8
8
  import { ImageEmbedData, ImageMetaData } from '@ndla/types-embed';
9
- import { HeartButtonType, RenderContext } from './types';
9
+ import { CanonicalUrlFuncs, HeartButtonType, RenderContext } from './types';
10
10
  interface Props {
11
11
  embed: ImageMetaData;
12
12
  previewAlt?: boolean;
13
13
  path?: string;
14
14
  heartButton?: HeartButtonType;
15
+ canonicalUrl?: CanonicalUrlFuncs['image'];
15
16
  inGrid?: boolean;
16
17
  lang?: string;
17
18
  renderContext?: RenderContext;
@@ -40,5 +41,5 @@ export declare const getCrop: (data: ImageEmbedData) => {
40
41
  endX: number;
41
42
  endY: number;
42
43
  } | undefined;
43
- declare const ImageEmbed: ({ embed, previewAlt, heartButton: HeartButton, inGrid, path, lang, renderContext, }: Props) => import("@emotion/react/jsx-runtime").JSX.Element;
44
+ declare const ImageEmbed: ({ embed, previewAlt, heartButton: HeartButton, inGrid, path, lang, canonicalUrl, renderContext, }: Props) => import("@emotion/react/jsx-runtime").JSX.Element;
44
45
  export default ImageEmbed;
@@ -112,6 +112,7 @@ var ImageEmbed = function ImageEmbed(_ref) {
112
112
  inGrid = _ref.inGrid,
113
113
  path = _ref.path,
114
114
  lang = _ref.lang,
115
+ canonicalUrl = _ref.canonicalUrl,
115
116
  _ref$renderContext = _ref.renderContext,
116
117
  renderContext = _ref$renderContext === void 0 ? 'article' : _ref$renderContext;
117
118
  var _useState = (0, _react.useState)(hideByline(embed.embedData.size)),
@@ -151,7 +152,7 @@ var ImageEmbed = function ImageEmbed(_ref) {
151
152
  type: imageSizes ? undefined : figureType,
152
153
  className: imageSizes ? "c-figure--".concat(embedData.align, " expanded") : '',
153
154
  children: [(0, _jsxRuntime.jsx)(ImageWrapper, {
154
- src: !isCopyrighted ? embedData.pageUrl || data.image.imageUrl : undefined,
155
+ src: !isCopyrighted ? canonicalUrl === null || canonicalUrl === void 0 ? void 0 : canonicalUrl(data) : undefined,
155
156
  crop: crop,
156
157
  size: embedData.size,
157
158
  pagePath: path,
@@ -196,7 +197,7 @@ var ImageEmbed = function ImageEmbed(_ref) {
196
197
  var HiddenSpan = /*#__PURE__*/(0, _base.default)("span", {
197
198
  target: "ened8ka0",
198
199
  label: "HiddenSpan"
199
- })(_core.utils.visuallyHidden, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkltYWdlRW1iZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlNOEIiLCJmaWxlIjoiSW1hZ2VFbWJlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMy1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCB7IEltYWdlRW1iZWREYXRhLCBJbWFnZU1ldGFEYXRhIH0gZnJvbSAnQG5kbGEvdHlwZXMtZW1iZWQnO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCB7IE1vdXNlRXZlbnRIYW5kbGVyLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBwYXJzZSBmcm9tICdodG1sLXJlYWN0LXBhcnNlcic7XG5pbXBvcnQgeyBFeHBhbmRUd29BcnJvd3MgfSBmcm9tICdAbmRsYS9pY29ucy9hY3Rpb24nO1xuaW1wb3J0IHsgQ09QWVJJR0hURUQgfSBmcm9tICdAbmRsYS9saWNlbnNlcyc7XG5pbXBvcnQgeyBBcnJvd0NvbGxhcHNlLCBDaGV2cm9uRG93biwgQ2hldnJvblVwIH0gZnJvbSAnQG5kbGEvaWNvbnMvY29tbW9uJztcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSAnQG5kbGEvY29yZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBGaWd1cmUsIEZpZ3VyZVR5cGUgfSBmcm9tICcuLi9GaWd1cmUnO1xuaW1wb3J0IEltYWdlLCB7IEltYWdlTGluayB9IGZyb20gJy4uL0ltYWdlJztcbmltcG9ydCB7IEVtYmVkQnlsaW5lIH0gZnJvbSAnLi4vTGljZW5zZUJ5bGluZSc7XG5pbXBvcnQgRW1iZWRFcnJvclBsYWNlaG9sZGVyIGZyb20gJy4vRW1iZWRFcnJvclBsYWNlaG9sZGVyJztcbmltcG9ydCB7IEhlYXJ0QnV0dG9uVHlwZSwgUmVuZGVyQ29udGV4dCB9IGZyb20gJy4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICBlbWJlZDogSW1hZ2VNZXRhRGF0YTtcbiAgcHJldmlld0FsdD86IGJvb2xlYW47XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGhlYXJ0QnV0dG9uPzogSGVhcnRCdXR0b25UeXBlO1xuICBpbkdyaWQ/OiBib29sZWFuO1xuICBsYW5nPzogc3RyaW5nO1xuICByZW5kZXJDb250ZXh0PzogUmVuZGVyQ29udGV4dDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRob3Ige1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGdldExpY2Vuc2VDcmVkaXRzID0gKGNvcHlyaWdodD86IHtcbiAgY3JlYXRvcnM/OiBBdXRob3JbXTtcbiAgcmlnaHRzaG9sZGVycz86IEF1dGhvcltdO1xuICBwcm9jZXNzb3JzPzogQXV0aG9yW107XG59KSA9PiB7XG4gIHJldHVybiB7XG4gICAgY3JlYXRvcnM6IGNvcHlyaWdodD8uY3JlYXRvcnMgPz8gW10sXG4gICAgcmlnaHRzaG9sZGVyczogY29weXJpZ2h0Py5yaWdodHNob2xkZXJzID8/IFtdLFxuICAgIHByb2Nlc3NvcnM6IGNvcHlyaWdodD8ucHJvY2Vzc29ycyA/PyBbXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBlcnJvclN2Z1NyYyA9IGBkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VVEYtOCwlM0NzdmcgZmlsbD0nJTIzOEE4ODg4JyBoZWlnaHQ9JzQwMCcgdmlld0JveD0nMCAwIDI0IDEyJyB3aWR0aD0nMTAwJTI1JyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiAlMjNFRkYwRjInJTNFJTNDcGF0aCBkPSdNMCAwaDI0djI0SDBWMHonIGZpbGw9J25vbmUnLyUzRSUzQ3BhdGggdHJhbnNmb3JtPSdzY2FsZSgwLjMpIHRyYW5zbGF0ZSgyOCwgOC41KScgZD0nTTExIDE1aDJ2MmgtMnptMC04aDJ2NmgtMnptLjk5LTVDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHonLyUzRSUzQy9zdmclM0VgO1xuY29uc3QgaXNTbWFsbCA9IChzaXplPzogc3RyaW5nKTogc2l6ZSBpcyAneHNtYWxsJyB8ICdzbWFsbCcgPT4gc2l6ZSA9PT0gJ3hzbWFsbCcgfHwgc2l6ZSA9PT0gJ3NtYWxsJztcblxuY29uc3QgaXNBbGlnbiA9IChhbGlnbj86IHN0cmluZyk6IGFsaWduIGlzICdsZWZ0JyB8ICdyaWdodCcgPT4gYWxpZ24gPT09ICdsZWZ0JyB8fCBhbGlnbiA9PT0gJ3JpZ2h0JztcblxuY29uc3QgZ2V0RmlndXJlVHlwZSA9IChzaXplPzogc3RyaW5nLCBhbGlnbj86IHN0cmluZyk6IEZpZ3VyZVR5cGUgPT4ge1xuICBpZiAoc2l6ZSAmJiBpc1NtYWxsKHNpemUpICYmIGFsaWduICYmIGlzQWxpZ24oYWxpZ24pKSB7XG4gICAgcmV0dXJuIGAke3NpemV9LSR7YWxpZ259YDtcbiAgfVxuICBpZiAoc2l6ZSAmJiBpc1NtYWxsKHNpemUpICYmICFhbGlnbikge1xuICAgIHJldHVybiBzaXplIGFzIEZpZ3VyZVR5cGU7XG4gIH1cbiAgaWYgKGFsaWduICYmIGlzQWxpZ24oYWxpZ24pKSB7XG4gICAgcmV0dXJuIGFsaWduO1xuICB9XG4gIHJldHVybiAnZnVsbCc7XG59O1xuXG5jb25zdCBnZXRTaXplcyA9IChzaXplPzogc3RyaW5nLCBhbGlnbj86IHN0cmluZykgPT4ge1xuICBpZiAoYWxpZ24gJiYgc2l6ZSA9PT0gJ2Z1bGwnKSB7XG4gICAgcmV0dXJuICcobWluLXdpZHRoOiAxMDI0cHgpIDUxMnB4LCAobWluLXdpZHRoOiA3NjhweCkgMzUwcHgsIDEwMHZ3JztcbiAgfVxuICBpZiAoYWxpZ24gJiYgc2l6ZSA9PT0gJ3NtYWxsJykge1xuICAgIHJldHVybiAnKG1pbi13aWR0aDogMTAyNHB4KSAzNTBweCwgKG1pbi13aWR0aDogNzY4cHgpIDE4MHB4LCAxMDB2dyc7XG4gIH1cbiAgaWYgKGFsaWduICYmIHNpemUgPT09ICd4c21hbGwnKSB7XG4gICAgcmV0dXJuICcobWluLXdpZHRoOiAxMDI0cHgpIDE4MHB4LCAobWluLXdpZHRoOiA3NjhweCkgMTgwcHgsIDEwMHZ3JztcbiAgfVxuICByZXR1cm4gJyhtaW4td2lkdGg6IDEwMjRweCkgMTAyNHB4LCAxMDB2dyc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9jYWxQb2ludCA9IChkYXRhOiBJbWFnZUVtYmVkRGF0YSkgPT4ge1xuICBjb25zdCBmb2NhbFggPSBwYXJzZUZsb2F0KGRhdGEuZm9jYWxYID8/ICcnKTtcbiAgY29uc3QgZm9jYWxZID0gcGFyc2VGbG9hdChkYXRhLmZvY2FsWSA/PyAnJyk7XG4gIGlmICghIWZvY2FsWCAmJiAhIWZvY2FsWSkge1xuICAgIHJldHVybiB7IHg6IGZvY2FsWCwgeTogZm9jYWxZIH07XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDcm9wID0gKGRhdGE6IEltYWdlRW1iZWREYXRhKSA9PiB7XG4gIGNvbnN0IGxvd2VyUmlnaHRYID0gcGFyc2VGbG9hdChkYXRhLmxvd2VyUmlnaHRYID8/ICcnKTtcbiAgY29uc3QgbG93ZXJSaWdodFkgPSBwYXJzZUZsb2F0KGRhdGEubG93ZXJSaWdodFkgPz8gJycpO1xuICBjb25zdCB1cHBlckxlZnRYID0gcGFyc2VGbG9hdChkYXRhLnVwcGVyTGVmdFggPz8gJycpO1xuICBjb25zdCB1cHBlckxlZnRZID0gcGFyc2VGbG9hdChkYXRhLnVwcGVyTGVmdFkgPz8gJycpO1xuICBpZiAoISFsb3dlclJpZ2h0WCAmJiAhIWxvd2VyUmlnaHRZICYmICEhdXBwZXJMZWZ0WCAmJiAhIXVwcGVyTGVmdFkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnRYOiBsb3dlclJpZ2h0WCxcbiAgICAgIHN0YXJ0WTogbG93ZXJSaWdodFksXG4gICAgICBlbmRYOiB1cHBlckxlZnRYLFxuICAgICAgZW5kWTogdXBwZXJMZWZ0WSxcbiAgICB9O1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBleHBhbmRlZFNpemVzID0gJyhtaW4td2lkdGg6IDEwMjRweCkgMTAyNHB4LCAxMDB2dyc7XG5cbmNvbnN0IEltYWdlRW1iZWQgPSAoe1xuICBlbWJlZCxcbiAgcHJldmlld0FsdCxcbiAgaGVhcnRCdXR0b246IEhlYXJ0QnV0dG9uLFxuICBpbkdyaWQsXG4gIHBhdGgsXG4gIGxhbmcsXG4gIHJlbmRlckNvbnRleHQgPSAnYXJ0aWNsZScsXG59OiBQcm9wcykgPT4ge1xuICBjb25zdCBbaXNCeWxpbmVIaWRkZW4sIHNldElzQnlsaW5lSGlkZGVuXSA9IHVzZVN0YXRlKGhpZGVCeWxpbmUoZW1iZWQuZW1iZWREYXRhLnNpemUpKTtcbiAgY29uc3QgW2ltYWdlU2l6ZXMsIHNldEltYWdlU2l6ZXNdID0gdXNlU3RhdGU8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIGNvbnN0IHBhcnNlZERlc2NyaXB0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGVtYmVkLmVtYmVkRGF0YS5jYXB0aW9uIHx8IHJlbmRlckNvbnRleHQgPT09ICdhcnRpY2xlJykge1xuICAgICAgcmV0dXJuIGVtYmVkLmVtYmVkRGF0YS5jYXB0aW9uID8gcGFyc2UoZW1iZWQuZW1iZWREYXRhLmNhcHRpb24pIDogdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAoZW1iZWQuc3RhdHVzID09PSAnc3VjY2VzcycgJiYgZW1iZWQuZGF0YS5jYXB0aW9uLmNhcHRpb24pIHtcbiAgICAgIHJldHVybiBwYXJzZShlbWJlZC5kYXRhLmNhcHRpb24uY2FwdGlvbik7XG4gICAgfVxuICB9LCBbZW1iZWQsIHJlbmRlckNvbnRleHRdKTtcblxuICBpZiAoZW1iZWQuc3RhdHVzID09PSAnZXJyb3InKSB7XG4gICAgY29uc3QgeyBhbGlnbiwgc2l6ZSB9ID0gZW1iZWQuZW1iZWREYXRhO1xuICAgIGNvbnN0IGZpZ3VyZVR5cGUgPSBnZXRGaWd1cmVUeXBlKHNpemUsIGFsaWduKTtcbiAgICByZXR1cm4gPEVtYmVkRXJyb3JQbGFjZWhvbGRlciB0eXBlPXsnaW1hZ2UnfSBmaWd1cmVUeXBlPXtmaWd1cmVUeXBlfSAvPjtcbiAgfVxuXG4gIGNvbnN0IHsgZGF0YSwgZW1iZWREYXRhIH0gPSBlbWJlZDtcblxuICBjb25zdCBhbHRUZXh0ID0gZW1iZWREYXRhLmFsdCB8fCAnJztcblxuICBjb25zdCBmaWd1cmVUeXBlID0gZ2V0RmlndXJlVHlwZShlbWJlZERhdGEuc2l6ZSwgZW1iZWREYXRhLmFsaWduKTtcbiAgY29uc3Qgc2l6ZXMgPSBnZXRTaXplcyhlbWJlZERhdGEuc2l6ZSwgZW1iZWREYXRhLmFsaWduKTtcblxuICBjb25zdCBmb2NhbFBvaW50ID0gZ2V0Rm9jYWxQb2ludChlbWJlZERhdGEpO1xuICBjb25zdCBjcm9wID0gZ2V0Q3JvcChlbWJlZERhdGEpO1xuXG4gIGNvbnN0IGlzQ29weXJpZ2h0ZWQgPSBkYXRhLmNvcHlyaWdodC5saWNlbnNlLmxpY2Vuc2UudG9Mb3dlckNhc2UoKSA9PT0gQ09QWVJJR0hURUQ7XG5cbiAgcmV0dXJuIChcbiAgICA8RmlndXJlXG4gICAgICB0eXBlPXtpbWFnZVNpemVzID8gdW5kZWZpbmVkIDogZmlndXJlVHlwZX1cbiAgICAgIGNsYXNzTmFtZT17aW1hZ2VTaXplcyA/IGBjLWZpZ3VyZS0tJHtlbWJlZERhdGEuYWxpZ259IGV4cGFuZGVkYCA6ICcnfVxuICAgID5cbiAgICAgIDxJbWFnZVdyYXBwZXJcbiAgICAgICAgc3JjPXshaXNDb3B5cmlnaHRlZCA/IGVtYmVkRGF0YS5wYWdlVXJsIHx8IGRhdGEuaW1hZ2UuaW1hZ2VVcmwgOiB1bmRlZmluZWR9XG4gICAgICAgIGNyb3A9e2Nyb3B9XG4gICAgICAgIHNpemU9e2VtYmVkRGF0YS5zaXplfVxuICAgICAgICBwYWdlUGF0aD17cGF0aH1cbiAgICAgID5cbiAgICAgICAgPEltYWdlXG4gICAgICAgICAgZm9jYWxQb2ludD17Zm9jYWxQb2ludH1cbiAgICAgICAgICBjb250ZW50VHlwZT17ZGF0YS5pbWFnZS5jb250ZW50VHlwZX1cbiAgICAgICAgICBjcm9wPXtjcm9wfVxuICAgICAgICAgIHNpemVzPXtpbWFnZVNpemVzID8/IHNpemVzfVxuICAgICAgICAgIGFsdD17YWx0VGV4dH1cbiAgICAgICAgICBzcmM9e2RhdGEuaW1hZ2UuaW1hZ2VVcmx9XG4gICAgICAgICAgYm9yZGVyPXtlbWJlZERhdGEuYm9yZGVyfVxuICAgICAgICAgIGV4cGFuZEJ1dHRvbj17XG4gICAgICAgICAgICA8RXhwYW5kQnV0dG9uXG4gICAgICAgICAgICAgIHNpemU9e2VtYmVkRGF0YS5zaXplfVxuICAgICAgICAgICAgICBleHBhbmRlZD17ISFpbWFnZVNpemVzfVxuICAgICAgICAgICAgICBieWxpbmVIaWRkZW49e2lzQnlsaW5lSGlkZGVufVxuICAgICAgICAgICAgICBvbkV4cGFuZD17KCkgPT4gc2V0SW1hZ2VTaXplcygocCkgPT4gKHAgPyB1bmRlZmluZWQgOiBleHBhbmRlZFNpemVzKSl9XG4gICAgICAgICAgICAgIG9uSGlkZUJ5bGluZT17KCkgPT4gc2V0SXNCeWxpbmVIaWRkZW4oKHApID0+ICFwKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhbmc9e2xhbmd9XG4gICAgICAgIC8+XG4gICAgICA8L0ltYWdlV3JhcHBlcj5cbiAgICAgIHtpc0J5bGluZUhpZGRlbiB8fCAoaXNTbWFsbChlbWJlZERhdGEuc2l6ZSkgJiYgIWltYWdlU2l6ZXMpID8gbnVsbCA6IChcbiAgICAgICAgPEVtYmVkQnlsaW5lXG4gICAgICAgICAgdHlwZT1cImltYWdlXCJcbiAgICAgICAgICBjb3B5cmlnaHQ9e2RhdGEuY29weXJpZ2h0fVxuICAgICAgICAgIGRlc2NyaXB0aW9uPXtwYXJzZWREZXNjcmlwdGlvbn1cbiAgICAgICAgICBib3R0b21Sb3VuZGVkXG4gICAgICAgICAgdmlzaWJsZUFsdD17cHJldmlld0FsdCA/IGVtYmVkLmVtYmVkRGF0YS5hbHQgOiAnJ31cbiAgICAgICAgICBpbkdyaWQ9e2luR3JpZH1cbiAgICAgICAgPlxuICAgICAgICAgIHtIZWFydEJ1dHRvbiAmJiAhaXNDb3B5cmlnaHRlZCAmJiA8SGVhcnRCdXR0b24gZW1iZWQ9e2VtYmVkfSAvPn1cbiAgICAgICAgPC9FbWJlZEJ5bGluZT5cbiAgICAgICl9XG4gICAgPC9GaWd1cmU+XG4gICk7XG59O1xuXG5jb25zdCBIaWRkZW5TcGFuID0gc3R5bGVkLnNwYW5gXG4gICR7dXRpbHMudmlzdWFsbHlIaWRkZW59O1xuYDtcblxuaW50ZXJmYWNlIEltYWdlV3JhcHBlclByb3BzIHtcbiAgc3JjPzogc3RyaW5nO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICBwYWdlUGF0aD86IHN0cmluZztcbiAgY3JvcD86IHtcbiAgICBzdGFydFg6IG51bWJlcjtcbiAgICBzdGFydFk6IG51bWJlcjtcbiAgICBlbmRYOiBudW1iZXI7XG4gICAgZW5kWTogbnVtYmVyO1xuICB9O1xuICBzaXplPzogc3RyaW5nO1xufVxuY29uc3QgaGlkZUJ5bGluZSA9IChzaXplPzogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiAhIXNpemUgJiYgc2l6ZS5lbmRzV2l0aCgnLWhpZGUtYnlsaW5lJyk7XG59O1xuXG5jb25zdCBJbWFnZVdyYXBwZXIgPSAoeyBzcmMsIGNyb3AsIHNpemUsIGNoaWxkcmVuLCBwYWdlUGF0aCB9OiBJbWFnZVdyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGlmIChpc1NtYWxsKHNpemUpIHx8IGhpZGVCeWxpbmUoc2l6ZSkgfHwgIXNyYyB8fCAocGFnZVBhdGggJiYgc3JjLmVuZHNXaXRoKHBhZ2VQYXRoKSkpIHtcbiAgICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8SW1hZ2VMaW5rIHNyYz17c3JjfSBjcm9wPXtjcm9wfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDxIaWRkZW5TcGFuPnt0KCdsaWNlbnNlLmltYWdlcy5pdGVtSW1hZ2UuYXJpYUxhYmVsJyl9PC9IaWRkZW5TcGFuPlxuICAgIDwvSW1hZ2VMaW5rPlxuICApO1xufTtcblxuaW50ZXJmYWNlIEV4cGFuZEJ1dHRvblByb3BzIHtcbiAgc2l6ZT86IHN0cmluZztcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XG4gIGJ5bGluZUhpZGRlbjogYm9vbGVhbjtcbiAgb25FeHBhbmQ6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgb25IaWRlQnlsaW5lOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MQnV0dG9uRWxlbWVudD47XG59XG5cbmNvbnN0IEV4cGFuZEJ1dHRvbiA9ICh7IHNpemUsIGV4cGFuZGVkLCBieWxpbmVIaWRkZW4sIG9uRXhwYW5kLCBvbkhpZGVCeWxpbmUgfTogRXhwYW5kQnV0dG9uUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBpZiAoaXNTbWFsbChzaXplKSkge1xuICAgIHJldHVybiAoXG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9XCJjLWZpZ3VyZV9fZnVsbHNjcmVlbi1idG5cIlxuICAgICAgICBhcmlhLWxhYmVsPXt0KGBsaWNlbnNlLmltYWdlcy5pdGVtSW1hZ2Uuem9vbSR7ZXhwYW5kZWQgPyAnT3V0JyA6ICcnfUltYWdlQnV0dG9uTGFiZWxgKX1cbiAgICAgICAgb25DbGljaz17b25FeHBhbmR9XG4gICAgICA+XG4gICAgICAgIHtleHBhbmRlZCA/IDxBcnJvd0NvbGxhcHNlIC8+IDogPEV4cGFuZFR3b0Fycm93cyAvPn1cbiAgICAgIDwvYnV0dG9uPlxuICAgICk7XG4gIH0gZWxzZSBpZiAoaGlkZUJ5bGluZShzaXplKSkge1xuICAgIHJldHVybiAoXG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9XCJjLWZpZ3VyZV9fc2hvdy1ieWxpbmUtYnRuXCJcbiAgICAgICAgYXJpYS1sYWJlbD17dChgbGljZW5zZS5pbWFnZXMuaXRlbUltYWdlLiR7YnlsaW5lSGlkZGVuID8gJ2V4cGFuZEJ5bGluZScgOiAnbWluaW1pemVCeWxpbmUnfWApfVxuICAgICAgICBvbkNsaWNrPXtvbkhpZGVCeWxpbmV9XG4gICAgICA+XG4gICAgICAgIHtieWxpbmVIaWRkZW4gPyA8Q2hldnJvbkRvd24gLz4gOiA8Q2hldnJvblVwIC8+fVxuICAgICAgPC9idXR0b24+XG4gICAgKTtcbiAgfSBlbHNlIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSW1hZ2VFbWJlZDtcbiJdfQ== */"));
200
+ })(_core.utils.visuallyHidden, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkltYWdlRW1iZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1NOEIiLCJmaWxlIjoiSW1hZ2VFbWJlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMy1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCB7IEltYWdlRW1iZWREYXRhLCBJbWFnZU1ldGFEYXRhIH0gZnJvbSAnQG5kbGEvdHlwZXMtZW1iZWQnO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCB7IE1vdXNlRXZlbnRIYW5kbGVyLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBwYXJzZSBmcm9tICdodG1sLXJlYWN0LXBhcnNlcic7XG5pbXBvcnQgeyBFeHBhbmRUd29BcnJvd3MgfSBmcm9tICdAbmRsYS9pY29ucy9hY3Rpb24nO1xuaW1wb3J0IHsgQ09QWVJJR0hURUQgfSBmcm9tICdAbmRsYS9saWNlbnNlcyc7XG5pbXBvcnQgeyBBcnJvd0NvbGxhcHNlLCBDaGV2cm9uRG93biwgQ2hldnJvblVwIH0gZnJvbSAnQG5kbGEvaWNvbnMvY29tbW9uJztcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSAnQG5kbGEvY29yZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBGaWd1cmUsIEZpZ3VyZVR5cGUgfSBmcm9tICcuLi9GaWd1cmUnO1xuaW1wb3J0IEltYWdlLCB7IEltYWdlTGluayB9IGZyb20gJy4uL0ltYWdlJztcbmltcG9ydCB7IEVtYmVkQnlsaW5lIH0gZnJvbSAnLi4vTGljZW5zZUJ5bGluZSc7XG5pbXBvcnQgRW1iZWRFcnJvclBsYWNlaG9sZGVyIGZyb20gJy4vRW1iZWRFcnJvclBsYWNlaG9sZGVyJztcbmltcG9ydCB7IENhbm9uaWNhbFVybEZ1bmNzLCBIZWFydEJ1dHRvblR5cGUsIFJlbmRlckNvbnRleHQgfSBmcm9tICcuL3R5cGVzJztcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgZW1iZWQ6IEltYWdlTWV0YURhdGE7XG4gIHByZXZpZXdBbHQ/OiBib29sZWFuO1xuICBwYXRoPzogc3RyaW5nO1xuICBoZWFydEJ1dHRvbj86IEhlYXJ0QnV0dG9uVHlwZTtcbiAgY2Fub25pY2FsVXJsPzogQ2Fub25pY2FsVXJsRnVuY3NbJ2ltYWdlJ107XG4gIGluR3JpZD86IGJvb2xlYW47XG4gIGxhbmc/OiBzdHJpbmc7XG4gIHJlbmRlckNvbnRleHQ/OiBSZW5kZXJDb250ZXh0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhvciB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0TGljZW5zZUNyZWRpdHMgPSAoY29weXJpZ2h0Pzoge1xuICBjcmVhdG9ycz86IEF1dGhvcltdO1xuICByaWdodHNob2xkZXJzPzogQXV0aG9yW107XG4gIHByb2Nlc3NvcnM/OiBBdXRob3JbXTtcbn0pID0+IHtcbiAgcmV0dXJuIHtcbiAgICBjcmVhdG9yczogY29weXJpZ2h0Py5jcmVhdG9ycyA/PyBbXSxcbiAgICByaWdodHNob2xkZXJzOiBjb3B5cmlnaHQ/LnJpZ2h0c2hvbGRlcnMgPz8gW10sXG4gICAgcHJvY2Vzc29yczogY29weXJpZ2h0Py5wcm9jZXNzb3JzID8/IFtdLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGVycm9yU3ZnU3JjID0gYGRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVURi04LCUzQ3N2ZyBmaWxsPSclMjM4QTg4ODgnIGhlaWdodD0nNDAwJyB2aWV3Qm94PScwIDAgMjQgMTInIHdpZHRoPScxMDAlMjUnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6ICUyM0VGRjBGMiclM0UlM0NwYXRoIGQ9J00wIDBoMjR2MjRIMFYweicgZmlsbD0nbm9uZScvJTNFJTNDcGF0aCB0cmFuc2Zvcm09J3NjYWxlKDAuMykgdHJhbnNsYXRlKDI4LCA4LjUpJyBkPSdNMTEgMTVoMnYyaC0yem0wLThoMnY2aC0yem0uOTktNUM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4eicvJTNFJTNDL3N2ZyUzRWA7XG5jb25zdCBpc1NtYWxsID0gKHNpemU/OiBzdHJpbmcpOiBzaXplIGlzICd4c21hbGwnIHwgJ3NtYWxsJyA9PiBzaXplID09PSAneHNtYWxsJyB8fCBzaXplID09PSAnc21hbGwnO1xuXG5jb25zdCBpc0FsaWduID0gKGFsaWduPzogc3RyaW5nKTogYWxpZ24gaXMgJ2xlZnQnIHwgJ3JpZ2h0JyA9PiBhbGlnbiA9PT0gJ2xlZnQnIHx8IGFsaWduID09PSAncmlnaHQnO1xuXG5jb25zdCBnZXRGaWd1cmVUeXBlID0gKHNpemU/OiBzdHJpbmcsIGFsaWduPzogc3RyaW5nKTogRmlndXJlVHlwZSA9PiB7XG4gIGlmIChzaXplICYmIGlzU21hbGwoc2l6ZSkgJiYgYWxpZ24gJiYgaXNBbGlnbihhbGlnbikpIHtcbiAgICByZXR1cm4gYCR7c2l6ZX0tJHthbGlnbn1gO1xuICB9XG4gIGlmIChzaXplICYmIGlzU21hbGwoc2l6ZSkgJiYgIWFsaWduKSB7XG4gICAgcmV0dXJuIHNpemUgYXMgRmlndXJlVHlwZTtcbiAgfVxuICBpZiAoYWxpZ24gJiYgaXNBbGlnbihhbGlnbikpIHtcbiAgICByZXR1cm4gYWxpZ247XG4gIH1cbiAgcmV0dXJuICdmdWxsJztcbn07XG5cbmNvbnN0IGdldFNpemVzID0gKHNpemU/OiBzdHJpbmcsIGFsaWduPzogc3RyaW5nKSA9PiB7XG4gIGlmIChhbGlnbiAmJiBzaXplID09PSAnZnVsbCcpIHtcbiAgICByZXR1cm4gJyhtaW4td2lkdGg6IDEwMjRweCkgNTEycHgsIChtaW4td2lkdGg6IDc2OHB4KSAzNTBweCwgMTAwdncnO1xuICB9XG4gIGlmIChhbGlnbiAmJiBzaXplID09PSAnc21hbGwnKSB7XG4gICAgcmV0dXJuICcobWluLXdpZHRoOiAxMDI0cHgpIDM1MHB4LCAobWluLXdpZHRoOiA3NjhweCkgMTgwcHgsIDEwMHZ3JztcbiAgfVxuICBpZiAoYWxpZ24gJiYgc2l6ZSA9PT0gJ3hzbWFsbCcpIHtcbiAgICByZXR1cm4gJyhtaW4td2lkdGg6IDEwMjRweCkgMTgwcHgsIChtaW4td2lkdGg6IDc2OHB4KSAxODBweCwgMTAwdncnO1xuICB9XG4gIHJldHVybiAnKG1pbi13aWR0aDogMTAyNHB4KSAxMDI0cHgsIDEwMHZ3Jztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb2NhbFBvaW50ID0gKGRhdGE6IEltYWdlRW1iZWREYXRhKSA9PiB7XG4gIGNvbnN0IGZvY2FsWCA9IHBhcnNlRmxvYXQoZGF0YS5mb2NhbFggPz8gJycpO1xuICBjb25zdCBmb2NhbFkgPSBwYXJzZUZsb2F0KGRhdGEuZm9jYWxZID8/ICcnKTtcbiAgaWYgKCEhZm9jYWxYICYmICEhZm9jYWxZKSB7XG4gICAgcmV0dXJuIHsgeDogZm9jYWxYLCB5OiBmb2NhbFkgfTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENyb3AgPSAoZGF0YTogSW1hZ2VFbWJlZERhdGEpID0+IHtcbiAgY29uc3QgbG93ZXJSaWdodFggPSBwYXJzZUZsb2F0KGRhdGEubG93ZXJSaWdodFggPz8gJycpO1xuICBjb25zdCBsb3dlclJpZ2h0WSA9IHBhcnNlRmxvYXQoZGF0YS5sb3dlclJpZ2h0WSA/PyAnJyk7XG4gIGNvbnN0IHVwcGVyTGVmdFggPSBwYXJzZUZsb2F0KGRhdGEudXBwZXJMZWZ0WCA/PyAnJyk7XG4gIGNvbnN0IHVwcGVyTGVmdFkgPSBwYXJzZUZsb2F0KGRhdGEudXBwZXJMZWZ0WSA/PyAnJyk7XG4gIGlmICghIWxvd2VyUmlnaHRYICYmICEhbG93ZXJSaWdodFkgJiYgISF1cHBlckxlZnRYICYmICEhdXBwZXJMZWZ0WSkge1xuICAgIHJldHVybiB7XG4gICAgICBzdGFydFg6IGxvd2VyUmlnaHRYLFxuICAgICAgc3RhcnRZOiBsb3dlclJpZ2h0WSxcbiAgICAgIGVuZFg6IHVwcGVyTGVmdFgsXG4gICAgICBlbmRZOiB1cHBlckxlZnRZLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGV4cGFuZGVkU2l6ZXMgPSAnKG1pbi13aWR0aDogMTAyNHB4KSAxMDI0cHgsIDEwMHZ3JztcblxuY29uc3QgSW1hZ2VFbWJlZCA9ICh7XG4gIGVtYmVkLFxuICBwcmV2aWV3QWx0LFxuICBoZWFydEJ1dHRvbjogSGVhcnRCdXR0b24sXG4gIGluR3JpZCxcbiAgcGF0aCxcbiAgbGFuZyxcbiAgY2Fub25pY2FsVXJsLFxuICByZW5kZXJDb250ZXh0ID0gJ2FydGljbGUnLFxufTogUHJvcHMpID0+IHtcbiAgY29uc3QgW2lzQnlsaW5lSGlkZGVuLCBzZXRJc0J5bGluZUhpZGRlbl0gPSB1c2VTdGF0ZShoaWRlQnlsaW5lKGVtYmVkLmVtYmVkRGF0YS5zaXplKSk7XG4gIGNvbnN0IFtpbWFnZVNpemVzLCBzZXRJbWFnZVNpemVzXSA9IHVzZVN0YXRlPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBjb25zdCBwYXJzZWREZXNjcmlwdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChlbWJlZC5lbWJlZERhdGEuY2FwdGlvbiB8fCByZW5kZXJDb250ZXh0ID09PSAnYXJ0aWNsZScpIHtcbiAgICAgIHJldHVybiBlbWJlZC5lbWJlZERhdGEuY2FwdGlvbiA/IHBhcnNlKGVtYmVkLmVtYmVkRGF0YS5jYXB0aW9uKSA6IHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKGVtYmVkLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnICYmIGVtYmVkLmRhdGEuY2FwdGlvbi5jYXB0aW9uKSB7XG4gICAgICByZXR1cm4gcGFyc2UoZW1iZWQuZGF0YS5jYXB0aW9uLmNhcHRpb24pO1xuICAgIH1cbiAgfSwgW2VtYmVkLCByZW5kZXJDb250ZXh0XSk7XG5cbiAgaWYgKGVtYmVkLnN0YXR1cyA9PT0gJ2Vycm9yJykge1xuICAgIGNvbnN0IHsgYWxpZ24sIHNpemUgfSA9IGVtYmVkLmVtYmVkRGF0YTtcbiAgICBjb25zdCBmaWd1cmVUeXBlID0gZ2V0RmlndXJlVHlwZShzaXplLCBhbGlnbik7XG4gICAgcmV0dXJuIDxFbWJlZEVycm9yUGxhY2Vob2xkZXIgdHlwZT17J2ltYWdlJ30gZmlndXJlVHlwZT17ZmlndXJlVHlwZX0gLz47XG4gIH1cblxuICBjb25zdCB7IGRhdGEsIGVtYmVkRGF0YSB9ID0gZW1iZWQ7XG5cbiAgY29uc3QgYWx0VGV4dCA9IGVtYmVkRGF0YS5hbHQgfHwgJyc7XG5cbiAgY29uc3QgZmlndXJlVHlwZSA9IGdldEZpZ3VyZVR5cGUoZW1iZWREYXRhLnNpemUsIGVtYmVkRGF0YS5hbGlnbik7XG4gIGNvbnN0IHNpemVzID0gZ2V0U2l6ZXMoZW1iZWREYXRhLnNpemUsIGVtYmVkRGF0YS5hbGlnbik7XG5cbiAgY29uc3QgZm9jYWxQb2ludCA9IGdldEZvY2FsUG9pbnQoZW1iZWREYXRhKTtcbiAgY29uc3QgY3JvcCA9IGdldENyb3AoZW1iZWREYXRhKTtcblxuICBjb25zdCBpc0NvcHlyaWdodGVkID0gZGF0YS5jb3B5cmlnaHQubGljZW5zZS5saWNlbnNlLnRvTG93ZXJDYXNlKCkgPT09IENPUFlSSUdIVEVEO1xuXG4gIHJldHVybiAoXG4gICAgPEZpZ3VyZVxuICAgICAgdHlwZT17aW1hZ2VTaXplcyA/IHVuZGVmaW5lZCA6IGZpZ3VyZVR5cGV9XG4gICAgICBjbGFzc05hbWU9e2ltYWdlU2l6ZXMgPyBgYy1maWd1cmUtLSR7ZW1iZWREYXRhLmFsaWdufSBleHBhbmRlZGAgOiAnJ31cbiAgICA+XG4gICAgICA8SW1hZ2VXcmFwcGVyXG4gICAgICAgIHNyYz17IWlzQ29weXJpZ2h0ZWQgPyBjYW5vbmljYWxVcmw/LihkYXRhKSA6IHVuZGVmaW5lZH1cbiAgICAgICAgY3JvcD17Y3JvcH1cbiAgICAgICAgc2l6ZT17ZW1iZWREYXRhLnNpemV9XG4gICAgICAgIHBhZ2VQYXRoPXtwYXRofVxuICAgICAgPlxuICAgICAgICA8SW1hZ2VcbiAgICAgICAgICBmb2NhbFBvaW50PXtmb2NhbFBvaW50fVxuICAgICAgICAgIGNvbnRlbnRUeXBlPXtkYXRhLmltYWdlLmNvbnRlbnRUeXBlfVxuICAgICAgICAgIGNyb3A9e2Nyb3B9XG4gICAgICAgICAgc2l6ZXM9e2ltYWdlU2l6ZXMgPz8gc2l6ZXN9XG4gICAgICAgICAgYWx0PXthbHRUZXh0fVxuICAgICAgICAgIHNyYz17ZGF0YS5pbWFnZS5pbWFnZVVybH1cbiAgICAgICAgICBib3JkZXI9e2VtYmVkRGF0YS5ib3JkZXJ9XG4gICAgICAgICAgZXhwYW5kQnV0dG9uPXtcbiAgICAgICAgICAgIDxFeHBhbmRCdXR0b25cbiAgICAgICAgICAgICAgc2l6ZT17ZW1iZWREYXRhLnNpemV9XG4gICAgICAgICAgICAgIGV4cGFuZGVkPXshIWltYWdlU2l6ZXN9XG4gICAgICAgICAgICAgIGJ5bGluZUhpZGRlbj17aXNCeWxpbmVIaWRkZW59XG4gICAgICAgICAgICAgIG9uRXhwYW5kPXsoKSA9PiBzZXRJbWFnZVNpemVzKChwKSA9PiAocCA/IHVuZGVmaW5lZCA6IGV4cGFuZGVkU2l6ZXMpKX1cbiAgICAgICAgICAgICAgb25IaWRlQnlsaW5lPXsoKSA9PiBzZXRJc0J5bGluZUhpZGRlbigocCkgPT4gIXApfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFuZz17bGFuZ31cbiAgICAgICAgLz5cbiAgICAgIDwvSW1hZ2VXcmFwcGVyPlxuICAgICAge2lzQnlsaW5lSGlkZGVuIHx8IChpc1NtYWxsKGVtYmVkRGF0YS5zaXplKSAmJiAhaW1hZ2VTaXplcykgPyBudWxsIDogKFxuICAgICAgICA8RW1iZWRCeWxpbmVcbiAgICAgICAgICB0eXBlPVwiaW1hZ2VcIlxuICAgICAgICAgIGNvcHlyaWdodD17ZGF0YS5jb3B5cmlnaHR9XG4gICAgICAgICAgZGVzY3JpcHRpb249e3BhcnNlZERlc2NyaXB0aW9ufVxuICAgICAgICAgIGJvdHRvbVJvdW5kZWRcbiAgICAgICAgICB2aXNpYmxlQWx0PXtwcmV2aWV3QWx0ID8gZW1iZWQuZW1iZWREYXRhLmFsdCA6ICcnfVxuICAgICAgICAgIGluR3JpZD17aW5HcmlkfVxuICAgICAgICA+XG4gICAgICAgICAge0hlYXJ0QnV0dG9uICYmICFpc0NvcHlyaWdodGVkICYmIDxIZWFydEJ1dHRvbiBlbWJlZD17ZW1iZWR9IC8+fVxuICAgICAgICA8L0VtYmVkQnlsaW5lPlxuICAgICAgKX1cbiAgICA8L0ZpZ3VyZT5cbiAgKTtcbn07XG5cbmNvbnN0IEhpZGRlblNwYW4gPSBzdHlsZWQuc3BhbmBcbiAgJHt1dGlscy52aXN1YWxseUhpZGRlbn07XG5gO1xuXG5pbnRlcmZhY2UgSW1hZ2VXcmFwcGVyUHJvcHMge1xuICBzcmM/OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIHBhZ2VQYXRoPzogc3RyaW5nO1xuICBjcm9wPzoge1xuICAgIHN0YXJ0WDogbnVtYmVyO1xuICAgIHN0YXJ0WTogbnVtYmVyO1xuICAgIGVuZFg6IG51bWJlcjtcbiAgICBlbmRZOiBudW1iZXI7XG4gIH07XG4gIHNpemU/OiBzdHJpbmc7XG59XG5jb25zdCBoaWRlQnlsaW5lID0gKHNpemU/OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuICEhc2l6ZSAmJiBzaXplLmVuZHNXaXRoKCctaGlkZS1ieWxpbmUnKTtcbn07XG5cbmNvbnN0IEltYWdlV3JhcHBlciA9ICh7IHNyYywgY3JvcCwgc2l6ZSwgY2hpbGRyZW4sIHBhZ2VQYXRoIH06IEltYWdlV3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgaWYgKGlzU21hbGwoc2l6ZSkgfHwgaGlkZUJ5bGluZShzaXplKSB8fCAhc3JjIHx8IChwYWdlUGF0aCAmJiBzcmMuZW5kc1dpdGgocGFnZVBhdGgpKSkge1xuICAgIHJldHVybiA8PntjaGlsZHJlbn08Lz47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxJbWFnZUxpbmsgc3JjPXtzcmN9IGNyb3A9e2Nyb3B9PlxuICAgICAge2NoaWxkcmVufVxuICAgICAgPEhpZGRlblNwYW4+e3QoJ2xpY2Vuc2UuaW1hZ2VzLml0ZW1JbWFnZS5hcmlhTGFiZWwnKX08L0hpZGRlblNwYW4+XG4gICAgPC9JbWFnZUxpbms+XG4gICk7XG59O1xuXG5pbnRlcmZhY2UgRXhwYW5kQnV0dG9uUHJvcHMge1xuICBzaXplPzogc3RyaW5nO1xuICBleHBhbmRlZDogYm9vbGVhbjtcbiAgYnlsaW5lSGlkZGVuOiBib29sZWFuO1xuICBvbkV4cGFuZDogTW91c2VFdmVudEhhbmRsZXI8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBvbkhpZGVCeWxpbmU6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxCdXR0b25FbGVtZW50Pjtcbn1cblxuY29uc3QgRXhwYW5kQnV0dG9uID0gKHsgc2l6ZSwgZXhwYW5kZWQsIGJ5bGluZUhpZGRlbiwgb25FeHBhbmQsIG9uSGlkZUJ5bGluZSB9OiBFeHBhbmRCdXR0b25Qcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGlmIChpc1NtYWxsKHNpemUpKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT1cImMtZmlndXJlX19mdWxsc2NyZWVuLWJ0blwiXG4gICAgICAgIGFyaWEtbGFiZWw9e3QoYGxpY2Vuc2UuaW1hZ2VzLml0ZW1JbWFnZS56b29tJHtleHBhbmRlZCA/ICdPdXQnIDogJyd9SW1hZ2VCdXR0b25MYWJlbGApfVxuICAgICAgICBvbkNsaWNrPXtvbkV4cGFuZH1cbiAgICAgID5cbiAgICAgICAge2V4cGFuZGVkID8gPEFycm93Q29sbGFwc2UgLz4gOiA8RXhwYW5kVHdvQXJyb3dzIC8+fVxuICAgICAgPC9idXR0b24+XG4gICAgKTtcbiAgfSBlbHNlIGlmIChoaWRlQnlsaW5lKHNpemUpKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT1cImMtZmlndXJlX19zaG93LWJ5bGluZS1idG5cIlxuICAgICAgICBhcmlhLWxhYmVsPXt0KGBsaWNlbnNlLmltYWdlcy5pdGVtSW1hZ2UuJHtieWxpbmVIaWRkZW4gPyAnZXhwYW5kQnlsaW5lJyA6ICdtaW5pbWl6ZUJ5bGluZSd9YCl9XG4gICAgICAgIG9uQ2xpY2s9e29uSGlkZUJ5bGluZX1cbiAgICAgID5cbiAgICAgICAge2J5bGluZUhpZGRlbiA/IDxDaGV2cm9uRG93biAvPiA6IDxDaGV2cm9uVXAgLz59XG4gICAgICA8L2J1dHRvbj5cbiAgICApO1xuICB9IGVsc2UgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbWFnZUVtYmVkO1xuIl19 */"));
200
201
  var hideByline = function hideByline(size) {
201
202
  return !!size && size.endsWith('-hide-byline');
202
203
  };
@@ -19,4 +19,4 @@ export { ConceptNotionV2 } from './conceptComponents';
19
19
  export { default as ConceptListEmbed } from './ConceptListEmbed';
20
20
  export { default as UnknownEmbed } from './UnknownEmbed';
21
21
  export { InlineConcept, BlockConcept } from './ConceptEmbed';
22
- export type { HeartButtonType, RenderContext } from './types';
22
+ export type { HeartButtonType, CanonicalUrlFuncs, RenderContext } from './types';
@@ -7,9 +7,17 @@
7
7
  */
8
8
  import { ElementType } from 'react';
9
9
  import { EmbedMetaData } from '@ndla/types-embed';
10
+ import { IImageMetaInformationV3 } from '@ndla/types-backend/image-api';
10
11
  export type HeartButtonType = ElementType<{
11
12
  embed: Extract<EmbedMetaData, {
12
13
  status: 'success';
13
14
  }>;
14
15
  }>;
16
+ export type EmbedParameter<T extends EmbedMetaData['resource']> = Partial<Extract<EmbedMetaData, {
17
+ status: 'success';
18
+ resource: T;
19
+ }>>;
20
+ export type CanonicalUrlFuncs = {
21
+ image?: (image: IImageMetaInformationV3) => string;
22
+ };
15
23
  export type RenderContext = 'article' | 'embed';
package/lib/index.d.ts CHANGED
@@ -84,7 +84,7 @@ export { BlogPostV2 } from './BlogPost';
84
84
  export { ProgrammeCard } from './ProgrammeCard';
85
85
  export { KeyFigure } from './KeyFigure';
86
86
  export { default as ContactBlock } from './ContactBlock';
87
- export type { HeartButtonType, RenderContext } from './Embed';
87
+ export type { HeartButtonType, CanonicalUrlFuncs, RenderContext } from './Embed';
88
88
  export { CampaignBlock } from './CampaignBlock';
89
89
  export { Grid, GridParallaxItem } from './Grid';
90
90
  export type { GridType } from './Grid';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ndla/ui",
3
- "version": "49.0.6",
3
+ "version": "49.0.7",
4
4
  "description": "UI component library for NDLA.",
5
5
  "license": "GPL-3.0",
6
6
  "main": "lib/index.js",
@@ -31,23 +31,23 @@
31
31
  "types"
32
32
  ],
33
33
  "dependencies": {
34
- "@ndla/accordion": "^3.0.3",
35
- "@ndla/button": "^12.0.9",
36
- "@ndla/carousel": "^4.0.11",
37
- "@ndla/core": "^4.2.5",
38
- "@ndla/dropdown-menu": "^1.0.14",
39
- "@ndla/forms": "^5.0.11",
34
+ "@ndla/accordion": "^3.0.4",
35
+ "@ndla/button": "^12.0.10",
36
+ "@ndla/carousel": "^4.0.12",
37
+ "@ndla/core": "^4.2.6",
38
+ "@ndla/dropdown-menu": "^1.0.15",
39
+ "@ndla/forms": "^5.0.12",
40
40
  "@ndla/hooks": "^2.1.1",
41
- "@ndla/icons": "^4.1.6",
41
+ "@ndla/icons": "^4.1.7",
42
42
  "@ndla/licenses": "^7.2.2",
43
- "@ndla/modal": "^5.0.8",
44
- "@ndla/notion": "^6.0.11",
45
- "@ndla/safelink": "^4.1.34",
46
- "@ndla/select": "^3.1.6",
47
- "@ndla/switch": "^1.1.20",
48
- "@ndla/tabs": "^3.2.0",
49
- "@ndla/tooltip": "^6.0.2",
50
- "@ndla/typography": "^0.2.7",
43
+ "@ndla/modal": "^5.0.9",
44
+ "@ndla/notion": "^6.0.12",
45
+ "@ndla/safelink": "^4.1.35",
46
+ "@ndla/select": "^3.1.7",
47
+ "@ndla/switch": "^1.1.21",
48
+ "@ndla/tabs": "^3.2.1",
49
+ "@ndla/tooltip": "^6.0.3",
50
+ "@ndla/typography": "^0.3.0",
51
51
  "@ndla/util": "^4.0.0",
52
52
  "@radix-ui/react-popover": "^1.0.7",
53
53
  "@radix-ui/react-radio-group": "^1.1.3",
@@ -80,5 +80,5 @@
80
80
  "publishConfig": {
81
81
  "access": "public"
82
82
  },
83
- "gitHead": "780199a967ead3bcb024102e21fea869e3aec2ba"
83
+ "gitHead": "5b6502dbc509b761ddea72112df15ee4fe633255"
84
84
  }
@@ -6,6 +6,7 @@
6
6
  *
7
7
  */
8
8
 
9
+ import { ReactNode } from 'react';
9
10
  import { useTranslation } from 'react-i18next';
10
11
  import concat from 'lodash/concat';
11
12
  import { css } from '@emotion/react';
@@ -13,10 +14,11 @@ import styled from '@emotion/styled';
13
14
  import { IImageMetaInformationV3 } from '@ndla/types-backend/image-api';
14
15
  import { spacing, fonts, colors, mq, breakpoints, misc } from '@ndla/core';
15
16
  import { BlobPointy, BlobRound } from '@ndla/icons/common';
16
- import { getLicenseByAbbreviation } from '@ndla/licenses';
17
+ import { COPYRIGHTED, getLicenseByAbbreviation } from '@ndla/licenses';
17
18
  import { errorSvgSrc } from '../Embed/ImageEmbed';
18
- import Image from '../Image';
19
+ import Image, { ImageLink } from '../Image';
19
20
  import LicenseLink from '../LicenseByline/LicenseLink';
21
+ import { CanonicalUrlFuncs } from '../Embed';
20
22
 
21
23
  const BLOB_WIDTH = 90;
22
24
 
@@ -31,6 +33,7 @@ interface Props {
31
33
  email: string;
32
34
  embedAlt?: string;
33
35
  lang?: string;
36
+ imageCanonicalUrl?: CanonicalUrlFuncs['image'];
34
37
  }
35
38
  const BlockWrapper = styled.div`
36
39
  display: flex;
@@ -130,6 +133,18 @@ const StyledImage = styled(Image)`
130
133
  object-fit: cover;
131
134
  `;
132
135
 
136
+ interface LinkWrapperProps {
137
+ src?: string;
138
+ children: ReactNode;
139
+ }
140
+
141
+ const LinkWrapper = ({ src, children }: LinkWrapperProps) => {
142
+ if (src) {
143
+ return <ImageLink src={src}>{children}</ImageLink>;
144
+ }
145
+ return children;
146
+ };
147
+
133
148
  const ContactBlock = ({
134
149
  image,
135
150
  jobTitle,
@@ -139,6 +154,7 @@ const ContactBlock = ({
139
154
  embedAlt,
140
155
  blobColor = 'green',
141
156
  blob = 'pointy',
157
+ imageCanonicalUrl,
142
158
  lang,
143
159
  }: Props) => {
144
160
  const { t, i18n } = useTranslation();
@@ -149,16 +165,20 @@ const ContactBlock = ({
149
165
  ? getLicenseByAbbreviation(image.copyright.license.license, i18n.language)
150
166
  : undefined;
151
167
 
168
+ const isCopyrighted = image?.copyright.license.license.toLowerCase() === COPYRIGHTED;
169
+
152
170
  return (
153
171
  <BlockWrapper>
154
172
  <ImageWrapper>
155
173
  {image ? (
156
174
  <>
157
- <StyledImage
158
- alt={embedAlt !== undefined ? embedAlt : image.alttext.alttext}
159
- src={image.image.imageUrl}
160
- sizes={`(min-width: ${breakpoints.tablet}) 240px, (max-width: ${breakpoints.tablet}) 500px`}
161
- />
175
+ <LinkWrapper src={!isCopyrighted && image ? imageCanonicalUrl?.(image) : undefined}>
176
+ <StyledImage
177
+ alt={embedAlt !== undefined ? embedAlt : image.alttext.alttext}
178
+ src={image.image.imageUrl}
179
+ sizes={`(min-width: ${breakpoints.tablet}) 240px, (max-width: ${breakpoints.tablet}) 500px`}
180
+ />
181
+ </LinkWrapper>
162
182
  <span>
163
183
  {`${t('photo')}: ${authors.reduce((acc, name) => (acc = `${acc} ${name?.name}`), '')} `}
164
184
  {!!license && <LicenseLink license={license} asLink={!!license.url.length} />}
@@ -19,13 +19,14 @@ import { Figure, FigureType } from '../Figure';
19
19
  import Image, { ImageLink } from '../Image';
20
20
  import { EmbedByline } from '../LicenseByline';
21
21
  import EmbedErrorPlaceholder from './EmbedErrorPlaceholder';
22
- import { HeartButtonType, RenderContext } from './types';
22
+ import { CanonicalUrlFuncs, HeartButtonType, RenderContext } from './types';
23
23
 
24
24
  interface Props {
25
25
  embed: ImageMetaData;
26
26
  previewAlt?: boolean;
27
27
  path?: string;
28
28
  heartButton?: HeartButtonType;
29
+ canonicalUrl?: CanonicalUrlFuncs['image'];
29
30
  inGrid?: boolean;
30
31
  lang?: string;
31
32
  renderContext?: RenderContext;
@@ -113,6 +114,7 @@ const ImageEmbed = ({
113
114
  inGrid,
114
115
  path,
115
116
  lang,
117
+ canonicalUrl,
116
118
  renderContext = 'article',
117
119
  }: Props) => {
118
120
  const [isBylineHidden, setIsBylineHidden] = useState(hideByline(embed.embedData.size));
@@ -150,7 +152,7 @@ const ImageEmbed = ({
150
152
  className={imageSizes ? `c-figure--${embedData.align} expanded` : ''}
151
153
  >
152
154
  <ImageWrapper
153
- src={!isCopyrighted ? embedData.pageUrl || data.image.imageUrl : undefined}
155
+ src={!isCopyrighted ? canonicalUrl?.(data) : undefined}
154
156
  crop={crop}
155
157
  size={embedData.size}
156
158
  pagePath={path}
@@ -20,4 +20,4 @@ export { ConceptNotionV2 } from './conceptComponents';
20
20
  export { default as ConceptListEmbed } from './ConceptListEmbed';
21
21
  export { default as UnknownEmbed } from './UnknownEmbed';
22
22
  export { InlineConcept, BlockConcept } from './ConceptEmbed';
23
- export type { HeartButtonType, RenderContext } from './types';
23
+ export type { HeartButtonType, CanonicalUrlFuncs, RenderContext } from './types';
@@ -8,7 +8,16 @@
8
8
 
9
9
  import { ElementType } from 'react';
10
10
  import { EmbedMetaData } from '@ndla/types-embed';
11
+ import { IImageMetaInformationV3 } from '@ndla/types-backend/image-api';
11
12
 
12
13
  export type HeartButtonType = ElementType<{ embed: Extract<EmbedMetaData, { status: 'success' }> }>;
13
14
 
15
+ export type EmbedParameter<T extends EmbedMetaData['resource']> = Partial<
16
+ Extract<EmbedMetaData, { status: 'success'; resource: T }>
17
+ >;
18
+
19
+ export type CanonicalUrlFuncs = {
20
+ image?: (image: IImageMetaInformationV3) => string;
21
+ };
22
+
14
23
  export type RenderContext = 'article' | 'embed';
package/src/index.ts CHANGED
@@ -213,7 +213,7 @@ export { BlogPostV2 } from './BlogPost';
213
213
  export { ProgrammeCard } from './ProgrammeCard';
214
214
  export { KeyFigure } from './KeyFigure';
215
215
  export { default as ContactBlock } from './ContactBlock';
216
- export type { HeartButtonType, RenderContext } from './Embed';
216
+ export type { HeartButtonType, CanonicalUrlFuncs, RenderContext } from './Embed';
217
217
  export { CampaignBlock } from './CampaignBlock';
218
218
  export { Grid, GridParallaxItem } from './Grid';
219
219
  export type { GridType } from './Grid';