@ndla/ui 55.0.12-alpha.0 → 55.0.13-alpha.0

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 (192) hide show
  1. package/dist/all-aout.js +0 -0
  2. package/dist/all.css +1 -0
  3. package/dist/panda.buildinfo.json +170 -0
  4. package/dist/styles.css +686 -0
  5. package/es/Article/Article.js +3 -4
  6. package/es/Article/ArticleByline.js +9 -9
  7. package/es/Article/ArticleFootNotes.js +4 -4
  8. package/es/AudioPlayer/AudioPlayer.js +142 -163
  9. package/es/AudioPlayer/Controls.js +187 -203
  10. package/es/AudioPlayer/SpeechControl.js +13 -11
  11. package/es/BlogPost/BlogPost.js +85 -23
  12. package/es/CampaignBlock/CampaignBlock.js +3 -4
  13. package/es/CodeBlock/CodeBlock.js +88 -96
  14. package/es/ContactBlock/ContactBlock.js +54 -40
  15. package/es/ContentLoader/index.js +7 -7
  16. package/es/CopyParagraphButton/CopyParagraphButton.js +4 -4
  17. package/es/Embed/AudioEmbed.js +5 -9
  18. package/es/Embed/BrightcoveEmbed.js +12 -15
  19. package/es/Embed/CodeEmbed.js +58 -10
  20. package/es/Embed/ConceptEmbed.js +15 -20
  21. package/es/Embed/ContentLinkEmbed.js +1 -1
  22. package/es/Embed/EmbedErrorPlaceholder.js +32 -17
  23. package/es/Embed/ExternalEmbed.js +7 -10
  24. package/es/Embed/FootnoteEmbed.js +3 -3
  25. package/es/Embed/H5pEmbed.js +1 -2
  26. package/es/Embed/IframeEmbed.js +8 -9
  27. package/es/Embed/ImageEmbed.js +167 -122
  28. package/es/Embed/RelatedContentEmbed.js +8 -10
  29. package/es/Embed/UuDisclaimerEmbed.js +2 -2
  30. package/es/Embed/conceptComponents.js +9 -9
  31. package/es/ErrorMessage/ErrorMessage.js +1 -1
  32. package/es/FactBox/FactBox.js +2 -2
  33. package/es/FileList/File.js +1 -1
  34. package/es/FileList/Format.js +3 -3
  35. package/es/FrontpageArticle/FrontpageArticle.js +1 -1
  36. package/es/Gloss/Gloss.js +9 -11
  37. package/es/Gloss/GlossExample.js +3 -4
  38. package/es/Grid/Grid.js +1 -1
  39. package/es/Image/Image.js +7 -8
  40. package/es/Image/ImageLink.js +1 -1
  41. package/es/KeyFigure/KeyFigure.js +2 -2
  42. package/es/LanguageSelector/LanguageSelector.js +2 -2
  43. package/es/LetterFilter/LetterFilter.js +1 -1
  44. package/es/LicenseByline/EmbedByline.js +5 -6
  45. package/es/LicenseByline/LicenseDescription.js +1 -1
  46. package/es/LicenseByline/LicenseLink.js +1 -2
  47. package/es/Messages/MessageBox.js +1 -1
  48. package/es/Notion/Notion.js +2 -2
  49. package/es/Notion/NotionImage.js +12 -57
  50. package/es/RelatedArticleList/RelatedArticleList.js +3 -3
  51. package/es/ResourceBox/ResourceBox.js +12 -17
  52. package/es/Search/ActiveFilters.js +1 -1
  53. package/es/Search/ContentTypeResult.js +9 -6
  54. package/es/Search/ContentTypeResultStyles.js +1 -1
  55. package/es/Search/IsPathToHighlight.js +1 -1
  56. package/es/Search/SearchField.js +6 -8
  57. package/es/Search/SearchResult.js +14 -19
  58. package/es/Search/SearchResultSleeve.js +14 -16
  59. package/es/SnackBar/SnackbarProvider.js +8 -11
  60. package/es/TagSelector/TagSelector.js +1 -1
  61. package/es/TagSelector/ariaMessages.js +6 -6
  62. package/es/TreeStructure/AddFolderButton.js +4 -6
  63. package/es/TreeStructure/ComboboxButton.js +4 -7
  64. package/es/TreeStructure/FolderItem.js +12 -15
  65. package/es/TreeStructure/FolderItems.js +3 -3
  66. package/es/TreeStructure/TreeStructure.js +9 -12
  67. package/es/TreeStructure/helperFunctions.js +1 -1
  68. package/es/ZendeskButton/ZendeskButton.js +55 -0
  69. package/es/i18n/formatNestedMessages.js +1 -1
  70. package/es/index.js +2 -1
  71. package/es/locale/messages-en.js +9 -8
  72. package/es/locale/messages-nb.js +9 -8
  73. package/es/locale/messages-nn.js +9 -8
  74. package/es/locale/messages-se.js +9 -8
  75. package/es/locale/messages-sma.js +9 -8
  76. package/es/styles.css +686 -0
  77. package/es/utils/relativeUrl.js +3 -3
  78. package/lib/Article/Article.js +3 -4
  79. package/lib/Article/ArticleByline.js +9 -9
  80. package/lib/Article/ArticleFootNotes.js +4 -4
  81. package/lib/AudioPlayer/AudioPlayer.d.ts +1 -2
  82. package/lib/AudioPlayer/AudioPlayer.js +142 -162
  83. package/lib/AudioPlayer/Controls.js +190 -205
  84. package/lib/AudioPlayer/SpeechControl.js +13 -11
  85. package/lib/BlogPost/BlogPost.d.ts +2 -2
  86. package/lib/BlogPost/BlogPost.js +85 -24
  87. package/lib/CampaignBlock/CampaignBlock.js +3 -4
  88. package/lib/CodeBlock/CodeBlock.d.ts +5 -8
  89. package/lib/CodeBlock/CodeBlock.js +88 -96
  90. package/lib/ContactBlock/ContactBlock.js +55 -43
  91. package/lib/ContentLoader/index.js +7 -7
  92. package/lib/CopyParagraphButton/CopyParagraphButton.js +4 -4
  93. package/lib/Embed/AudioEmbed.js +5 -9
  94. package/lib/Embed/BrightcoveEmbed.js +12 -15
  95. package/lib/Embed/CodeEmbed.js +56 -8
  96. package/lib/Embed/ConceptEmbed.js +15 -20
  97. package/lib/Embed/ContentLinkEmbed.js +1 -1
  98. package/lib/Embed/EmbedErrorPlaceholder.d.ts +4 -3
  99. package/lib/Embed/EmbedErrorPlaceholder.js +32 -18
  100. package/lib/Embed/ExternalEmbed.js +7 -10
  101. package/lib/Embed/FootnoteEmbed.js +3 -3
  102. package/lib/Embed/H5pEmbed.js +1 -2
  103. package/lib/Embed/IframeEmbed.js +8 -9
  104. package/lib/Embed/ImageEmbed.d.ts +1 -2
  105. package/lib/Embed/ImageEmbed.js +167 -123
  106. package/lib/Embed/RelatedContentEmbed.js +8 -10
  107. package/lib/Embed/UuDisclaimerEmbed.js +2 -2
  108. package/lib/Embed/conceptComponents.js +9 -9
  109. package/lib/ErrorMessage/ErrorMessage.js +1 -1
  110. package/lib/FactBox/FactBox.js +2 -2
  111. package/lib/FileList/File.js +1 -1
  112. package/lib/FileList/Format.js +3 -3
  113. package/lib/FrontpageArticle/FrontpageArticle.js +1 -1
  114. package/lib/Gloss/Gloss.js +9 -11
  115. package/lib/Gloss/GlossExample.js +3 -4
  116. package/lib/Grid/Grid.js +1 -1
  117. package/lib/Image/Image.js +7 -8
  118. package/lib/Image/ImageLink.js +1 -1
  119. package/lib/KeyFigure/KeyFigure.js +2 -2
  120. package/lib/LanguageSelector/LanguageSelector.js +2 -2
  121. package/lib/LetterFilter/LetterFilter.js +1 -1
  122. package/lib/LicenseByline/EmbedByline.js +5 -6
  123. package/lib/LicenseByline/LicenseDescription.js +1 -1
  124. package/lib/LicenseByline/LicenseLink.js +1 -2
  125. package/lib/Messages/MessageBox.js +1 -1
  126. package/lib/Notion/Notion.js +2 -2
  127. package/lib/Notion/NotionImage.d.ts +1 -11
  128. package/lib/Notion/NotionImage.js +12 -59
  129. package/lib/RelatedArticleList/RelatedArticleList.js +3 -3
  130. package/lib/ResourceBox/ResourceBox.js +13 -18
  131. package/lib/Search/ActiveFilters.js +1 -1
  132. package/lib/Search/ContentTypeResult.js +9 -6
  133. package/lib/Search/ContentTypeResultStyles.js +1 -1
  134. package/lib/Search/IsPathToHighlight.js +1 -1
  135. package/lib/Search/SearchField.js +6 -8
  136. package/lib/Search/SearchResult.js +14 -19
  137. package/lib/Search/SearchResultSleeve.js +14 -16
  138. package/lib/SnackBar/SnackbarProvider.js +8 -11
  139. package/lib/TagSelector/TagSelector.js +1 -1
  140. package/lib/TagSelector/ariaMessages.js +6 -6
  141. package/lib/TreeStructure/AddFolderButton.js +4 -6
  142. package/lib/TreeStructure/ComboboxButton.js +4 -7
  143. package/lib/TreeStructure/FolderItem.js +12 -15
  144. package/lib/TreeStructure/FolderItems.js +3 -3
  145. package/lib/TreeStructure/TreeStructure.js +9 -12
  146. package/lib/TreeStructure/helperFunctions.js +1 -1
  147. package/lib/ZendeskButton/ZendeskButton.d.ts +19 -0
  148. package/lib/ZendeskButton/ZendeskButton.js +61 -0
  149. package/lib/i18n/formatNestedMessages.js +1 -1
  150. package/lib/index.d.ts +2 -0
  151. package/lib/index.js +7 -0
  152. package/lib/locale/messages-en.d.ts +1 -0
  153. package/lib/locale/messages-en.js +9 -8
  154. package/lib/locale/messages-nb.d.ts +1 -0
  155. package/lib/locale/messages-nb.js +9 -8
  156. package/lib/locale/messages-nn.d.ts +1 -0
  157. package/lib/locale/messages-nn.js +9 -8
  158. package/lib/locale/messages-se.d.ts +1 -0
  159. package/lib/locale/messages-se.js +9 -8
  160. package/lib/locale/messages-sma.d.ts +1 -0
  161. package/lib/locale/messages-sma.js +9 -8
  162. package/lib/styles.css +686 -0
  163. package/lib/types.d.ts +1 -0
  164. package/lib/utils/relativeUrl.js +3 -3
  165. package/package.json +17 -12
  166. package/src/AudioPlayer/AudioPlayer.tsx +139 -176
  167. package/src/AudioPlayer/Controls.tsx +210 -250
  168. package/src/AudioPlayer/SpeechControl.tsx +9 -7
  169. package/src/BlogPost/BlogPost.tsx +82 -58
  170. package/src/CodeBlock/CodeBlock.stories.tsx +0 -43
  171. package/src/CodeBlock/CodeBlock.tsx +91 -202
  172. package/src/ContactBlock/ContactBlock.tsx +10 -2
  173. package/src/Embed/CodeEmbed.stories.tsx +95 -0
  174. package/src/Embed/CodeEmbed.tsx +62 -7
  175. package/src/Embed/ConceptEmbed.tsx +1 -9
  176. package/src/Embed/EmbedErrorPlaceholder.tsx +31 -28
  177. package/src/Embed/ImageEmbed.stories.tsx +53 -11
  178. package/src/Embed/ImageEmbed.tsx +162 -166
  179. package/src/Notion/NotionImage.tsx +4 -54
  180. package/src/ResourceBox/ResourceBox.tsx +3 -15
  181. package/src/Search/ContentTypeResult.tsx +9 -3
  182. package/src/Search/SearchResultSleeve.tsx +5 -2
  183. package/src/ZendeskButton/ZendeskButton.tsx +58 -0
  184. package/src/index.ts +4 -0
  185. package/src/locale/messages-en.ts +1 -0
  186. package/src/locale/messages-nb.ts +1 -0
  187. package/src/locale/messages-nn.ts +1 -0
  188. package/src/locale/messages-se.ts +1 -0
  189. package/src/locale/messages-sma.ts +1 -0
  190. package/src/types.ts +2 -0
  191. package/src/Image/__tests__/Image-test.tsx +0 -66
  192. package/src/Image/__tests__/__snapshots__/Image-test.tsx.snap +0 -194
@@ -1,4 +1,3 @@
1
- import _styled from "@emotion/styled/base";
2
1
  /**
3
2
  * Copyright (c) 2023-present, NDLA.
4
3
  *
@@ -7,41 +6,32 @@ import _styled from "@emotion/styled/base";
7
6
  *
8
7
  */
9
8
 
10
- /** @jsxImportSource @emotion/react */
11
9
  import parse from "html-react-parser";
12
10
  import { useMemo, useState } from "react";
13
11
  import { useTranslation } from "react-i18next";
14
- import { colors, misc, spacing } from "@ndla/core";
15
12
  import { Plus } from "@ndla/icons/action";
16
13
  import { ChevronDown, ChevronUp } from "@ndla/icons/common";
17
- import { COPYRIGHTED } from "@ndla/licenses";
14
+ import { Figure, Image } from "@ndla/primitives";
15
+ import { styled } from "@ndla/styled-system/jsx";
18
16
  import EmbedErrorPlaceholder from "./EmbedErrorPlaceholder";
19
- import { Figure } from "../Figure";
20
- import Image from "../Image";
21
17
  import { EmbedByline } from "../LicenseByline";
22
18
  import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
23
19
  export const getLicenseCredits = copyright => {
24
- var _copyright$creators, _copyright$rightshold, _copyright$processors;
25
20
  return {
26
- creators: (_copyright$creators = copyright === null || copyright === void 0 ? void 0 : copyright.creators) !== null && _copyright$creators !== void 0 ? _copyright$creators : [],
27
- rightsholders: (_copyright$rightshold = copyright === null || copyright === void 0 ? void 0 : copyright.rightsholders) !== null && _copyright$rightshold !== void 0 ? _copyright$rightshold : [],
28
- processors: (_copyright$processors = copyright === null || copyright === void 0 ? void 0 : copyright.processors) !== null && _copyright$processors !== void 0 ? _copyright$processors : []
21
+ creators: copyright?.creators ?? [],
22
+ rightsholders: copyright?.rightsholders ?? [],
23
+ processors: copyright?.processors ?? []
29
24
  };
30
25
  };
31
- export const errorSvgSrc = "data:image/svg+xml;charset=UTF-8,%3Csvg fill='%238A8888' height='400' viewBox='0 0 24 12' width='100%25' xmlns='http://www.w3.org/2000/svg' style='background-color: %23EFF0F2'%3E%3Cpath d='M0 0h24v24H0V0z' fill='none'/%3E%3Cpath transform='scale(0.3) translate(28, 8.5)' d='M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z'/%3E%3C/svg%3E";
32
- const isSmall = size => size === "xsmall" || size === "small";
33
- const isAlign = align => align === "left" || align === "right";
34
- const getFigureType = (size, align) => {
35
- if (size && isSmall(size) && align && isAlign(align)) {
36
- return "".concat(size, "-").concat(align);
37
- }
38
- if (size && isSmall(size) && !align) {
39
- return size;
40
- }
41
- if (align && isAlign(align)) {
42
- return align;
43
- }
44
- return "full";
26
+ export const errorSvgSrc = `data:image/svg+xml;charset=UTF-8,%3Csvg fill='%238A8888' height='400' viewBox='0 0 24 12' width='100%25' xmlns='http://www.w3.org/2000/svg' style='background-color: %23EFF0F2'%3E%3Cpath d='M0 0h24v24H0V0z' fill='none'/%3E%3Cpath transform='scale(0.3) translate(28, 8.5)' d='M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z'/%3E%3C/svg%3E`;
27
+ const getFigureProps = (size, float) => {
28
+ const actualFloat = float === "left" ? "left" : float === "right" ? "right" : undefined;
29
+ const replacedSize = size?.replace("-hide-byline", "") ?? "full";
30
+ return {
31
+ float: actualFloat,
32
+ // Figure expects you to set a size when floating. If you don't, the figure will simply take up the available width. Fallback to medium in those cases.
33
+ size: replacedSize === "full" && float ? "medium" : replacedSize
34
+ };
45
35
  };
46
36
  const getSizes = (size, align) => {
47
37
  if (align && size === "full") {
@@ -56,9 +46,8 @@ const getSizes = (size, align) => {
56
46
  return "(min-width: 1024px) 1024px, 100vw";
57
47
  };
58
48
  export const getFocalPoint = data => {
59
- var _data$focalX, _data$focalY;
60
- const focalX = Number.parseFloat((_data$focalX = data.focalX) !== null && _data$focalX !== void 0 ? _data$focalX : "");
61
- const focalY = Number.parseFloat((_data$focalY = data.focalY) !== null && _data$focalY !== void 0 ? _data$focalY : "");
49
+ const focalX = Number.parseFloat(data.focalX ?? "");
50
+ const focalY = Number.parseFloat(data.focalY ?? "");
62
51
  if (!Number.isNaN(focalX) && !Number.isNaN(focalY)) {
63
52
  return {
64
53
  x: focalX,
@@ -68,11 +57,10 @@ export const getFocalPoint = data => {
68
57
  return undefined;
69
58
  };
70
59
  export const getCrop = data => {
71
- var _data$lowerRightX, _data$lowerRightY, _data$upperLeftX, _data$upperLeftY;
72
- const lowerRightX = Number.parseFloat((_data$lowerRightX = data.lowerRightX) !== null && _data$lowerRightX !== void 0 ? _data$lowerRightX : "");
73
- const lowerRightY = Number.parseFloat((_data$lowerRightY = data.lowerRightY) !== null && _data$lowerRightY !== void 0 ? _data$lowerRightY : "");
74
- const upperLeftX = Number.parseFloat((_data$upperLeftX = data.upperLeftX) !== null && _data$upperLeftX !== void 0 ? _data$upperLeftX : "");
75
- const upperLeftY = Number.parseFloat((_data$upperLeftY = data.upperLeftY) !== null && _data$upperLeftY !== void 0 ? _data$upperLeftY : "");
60
+ const lowerRightX = Number.parseFloat(data.lowerRightX ?? "");
61
+ const lowerRightY = Number.parseFloat(data.lowerRightY ?? "");
62
+ const upperLeftX = Number.parseFloat(data.upperLeftX ?? "");
63
+ const upperLeftY = Number.parseFloat(data.upperLeftY ?? "");
76
64
  if (!Number.isNaN(lowerRightX) && !Number.isNaN(lowerRightY) && !Number.isNaN(upperLeftX) && !Number.isNaN(upperLeftY)) {
77
65
  return {
78
66
  startX: lowerRightX,
@@ -84,26 +72,133 @@ export const getCrop = data => {
84
72
  return undefined;
85
73
  };
86
74
  const expandedSizes = "(min-width: 1024px) 1024px, 100vw";
87
- const StyledFigure = /*#__PURE__*/_styled(Figure, {
88
- target: "ened8ka2",
89
- label: "StyledFigure"
90
- })("&:hover{[data-byline-button]{background:", colors.white, ";}button[data-expanded]{transform:scale(1.2);}}button[data-expanded=\"true\"]{svg{transform:rotate(-45deg);}}&[data-float=\"right\"]{float:right;}&[data-float=\"left\"]{float:left;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkltYWdlRW1iZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlIbUMiLCJmaWxlIjoiSW1hZ2VFbWJlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMy1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbi8qKiBAanN4SW1wb3J0U291cmNlIEBlbW90aW9uL3JlYWN0ICovXG5pbXBvcnQgcGFyc2UgZnJvbSBcImh0bWwtcmVhY3QtcGFyc2VyXCI7XG5pbXBvcnQgeyBNb3VzZUV2ZW50SGFuZGxlciwgUmVhY3ROb2RlLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBjb2xvcnMsIG1pc2MsIHNwYWNpbmcgfSBmcm9tIFwiQG5kbGEvY29yZVwiO1xuaW1wb3J0IHsgUGx1cyB9IGZyb20gXCJAbmRsYS9pY29ucy9hY3Rpb25cIjtcbmltcG9ydCB7IENoZXZyb25Eb3duLCBDaGV2cm9uVXAgfSBmcm9tIFwiQG5kbGEvaWNvbnMvY29tbW9uXCI7XG5pbXBvcnQgeyBDT1BZUklHSFRFRCB9IGZyb20gXCJAbmRsYS9saWNlbnNlc1wiO1xuaW1wb3J0IHsgSW1hZ2VFbWJlZERhdGEsIEltYWdlTWV0YURhdGEgfSBmcm9tIFwiQG5kbGEvdHlwZXMtZW1iZWRcIjtcbmltcG9ydCBFbWJlZEVycm9yUGxhY2Vob2xkZXIgZnJvbSBcIi4vRW1iZWRFcnJvclBsYWNlaG9sZGVyXCI7XG5pbXBvcnQgeyBSZW5kZXJDb250ZXh0IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IEZpZ3VyZSwgRmlndXJlVHlwZSB9IGZyb20gXCIuLi9GaWd1cmVcIjtcbmltcG9ydCBJbWFnZSBmcm9tIFwiLi4vSW1hZ2VcIjtcbmltcG9ydCB7IEVtYmVkQnlsaW5lIH0gZnJvbSBcIi4uL0xpY2Vuc2VCeWxpbmVcIjtcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgZW1iZWQ6IEltYWdlTWV0YURhdGE7XG4gIHByZXZpZXdBbHQ/OiBib29sZWFuO1xuICBpbkdyaWQ/OiBib29sZWFuO1xuICBsYW5nPzogc3RyaW5nO1xuICByZW5kZXJDb250ZXh0PzogUmVuZGVyQ29udGV4dDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMaWNlbnNlQ3JlZGl0cyA9IChjb3B5cmlnaHQ/OiB7XG4gIGNyZWF0b3JzPzogQXV0aG9yW107XG4gIHJpZ2h0c2hvbGRlcnM/OiBBdXRob3JbXTtcbiAgcHJvY2Vzc29ycz86IEF1dGhvcltdO1xufSkgPT4ge1xuICByZXR1cm4ge1xuICAgIGNyZWF0b3JzOiBjb3B5cmlnaHQ/LmNyZWF0b3JzID8/IFtdLFxuICAgIHJpZ2h0c2hvbGRlcnM6IGNvcHlyaWdodD8ucmlnaHRzaG9sZGVycyA/PyBbXSxcbiAgICBwcm9jZXNzb3JzOiBjb3B5cmlnaHQ/LnByb2Nlc3NvcnMgPz8gW10sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZXJyb3JTdmdTcmMgPSBgZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnIGZpbGw9JyUyMzhBODg4OCcgaGVpZ2h0PSc0MDAnIHZpZXdCb3g9JzAgMCAyNCAxMicgd2lkdGg9JzEwMCUyNScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogJTIzRUZGMEYyJyUzRSUzQ3BhdGggZD0nTTAgMGgyNHYyNEgwVjB6JyBmaWxsPSdub25lJy8lM0UlM0NwYXRoIHRyYW5zZm9ybT0nc2NhbGUoMC4zKSB0cmFuc2xhdGUoMjgsIDguNSknIGQ9J00xMSAxNWgydjJoLTJ6bTAtOGgydjZoLTJ6bS45OS01QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6Jy8lM0UlM0Mvc3ZnJTNFYDtcbmNvbnN0IGlzU21hbGwgPSAoc2l6ZT86IHN0cmluZyk6IHNpemUgaXMgXCJ4c21hbGxcIiB8IFwic21hbGxcIiA9PiBzaXplID09PSBcInhzbWFsbFwiIHx8IHNpemUgPT09IFwic21hbGxcIjtcblxuY29uc3QgaXNBbGlnbiA9IChhbGlnbj86IHN0cmluZyk6IGFsaWduIGlzIFwibGVmdFwiIHwgXCJyaWdodFwiID0+IGFsaWduID09PSBcImxlZnRcIiB8fCBhbGlnbiA9PT0gXCJyaWdodFwiO1xuXG5jb25zdCBnZXRGaWd1cmVUeXBlID0gKHNpemU/OiBzdHJpbmcsIGFsaWduPzogc3RyaW5nKTogRmlndXJlVHlwZSA9PiB7XG4gIGlmIChzaXplICYmIGlzU21hbGwoc2l6ZSkgJiYgYWxpZ24gJiYgaXNBbGlnbihhbGlnbikpIHtcbiAgICByZXR1cm4gYCR7c2l6ZX0tJHthbGlnbn1gO1xuICB9XG4gIGlmIChzaXplICYmIGlzU21hbGwoc2l6ZSkgJiYgIWFsaWduKSB7XG4gICAgcmV0dXJuIHNpemUgYXMgRmlndXJlVHlwZTtcbiAgfVxuICBpZiAoYWxpZ24gJiYgaXNBbGlnbihhbGlnbikpIHtcbiAgICByZXR1cm4gYWxpZ247XG4gIH1cbiAgcmV0dXJuIFwiZnVsbFwiO1xufTtcblxuY29uc3QgZ2V0U2l6ZXMgPSAoc2l6ZT86IHN0cmluZywgYWxpZ24/OiBzdHJpbmcpID0+IHtcbiAgaWYgKGFsaWduICYmIHNpemUgPT09IFwiZnVsbFwiKSB7XG4gICAgcmV0dXJuIFwiKG1pbi13aWR0aDogMTAyNHB4KSA1MTJweCwgKG1pbi13aWR0aDogNzY4cHgpIDM1MHB4LCAxMDB2d1wiO1xuICB9XG4gIGlmIChhbGlnbiAmJiBzaXplID09PSBcInNtYWxsXCIpIHtcbiAgICByZXR1cm4gXCIobWluLXdpZHRoOiAxMDI0cHgpIDM1MHB4LCAobWluLXdpZHRoOiA3NjhweCkgMTgwcHgsIDEwMHZ3XCI7XG4gIH1cbiAgaWYgKGFsaWduICYmIHNpemUgPT09IFwieHNtYWxsXCIpIHtcbiAgICByZXR1cm4gXCIobWluLXdpZHRoOiAxMDI0cHgpIDE4MHB4LCAobWluLXdpZHRoOiA3NjhweCkgMTgwcHgsIDEwMHZ3XCI7XG4gIH1cbiAgcmV0dXJuIFwiKG1pbi13aWR0aDogMTAyNHB4KSAxMDI0cHgsIDEwMHZ3XCI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9jYWxQb2ludCA9IChkYXRhOiBJbWFnZUVtYmVkRGF0YSkgPT4ge1xuICBjb25zdCBmb2NhbFggPSBOdW1iZXIucGFyc2VGbG9hdChkYXRhLmZvY2FsWCA/PyBcIlwiKTtcbiAgY29uc3QgZm9jYWxZID0gTnVtYmVyLnBhcnNlRmxvYXQoZGF0YS5mb2NhbFkgPz8gXCJcIik7XG4gIGlmICghTnVtYmVyLmlzTmFOKGZvY2FsWCkgJiYgIU51bWJlci5pc05hTihmb2NhbFkpKSB7XG4gICAgcmV0dXJuIHsgeDogZm9jYWxYLCB5OiBmb2NhbFkgfTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENyb3AgPSAoZGF0YTogSW1hZ2VFbWJlZERhdGEpID0+IHtcbiAgY29uc3QgbG93ZXJSaWdodFggPSBOdW1iZXIucGFyc2VGbG9hdChkYXRhLmxvd2VyUmlnaHRYID8/IFwiXCIpO1xuICBjb25zdCBsb3dlclJpZ2h0WSA9IE51bWJlci5wYXJzZUZsb2F0KGRhdGEubG93ZXJSaWdodFkgPz8gXCJcIik7XG4gIGNvbnN0IHVwcGVyTGVmdFggPSBOdW1iZXIucGFyc2VGbG9hdChkYXRhLnVwcGVyTGVmdFggPz8gXCJcIik7XG4gIGNvbnN0IHVwcGVyTGVmdFkgPSBOdW1iZXIucGFyc2VGbG9hdChkYXRhLnVwcGVyTGVmdFkgPz8gXCJcIik7XG4gIGlmIChcbiAgICAhTnVtYmVyLmlzTmFOKGxvd2VyUmlnaHRYKSAmJlxuICAgICFOdW1iZXIuaXNOYU4obG93ZXJSaWdodFkpICYmXG4gICAgIU51bWJlci5pc05hTih1cHBlckxlZnRYKSAmJlxuICAgICFOdW1iZXIuaXNOYU4odXBwZXJMZWZ0WSlcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0WDogbG93ZXJSaWdodFgsXG4gICAgICBzdGFydFk6IGxvd2VyUmlnaHRZLFxuICAgICAgZW5kWDogdXBwZXJMZWZ0WCxcbiAgICAgIGVuZFk6IHVwcGVyTGVmdFksXG4gICAgfTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZXhwYW5kZWRTaXplcyA9IFwiKG1pbi13aWR0aDogMTAyNHB4KSAxMDI0cHgsIDEwMHZ3XCI7XG5cbmNvbnN0IFN0eWxlZEZpZ3VyZSA9IHN0eWxlZChGaWd1cmUpYFxuICAmOmhvdmVyIHtcbiAgICBbZGF0YS1ieWxpbmUtYnV0dG9uXSB7XG4gICAgICBiYWNrZ3JvdW5kOiAke2NvbG9ycy53aGl0ZX07XG4gICAgfVxuICAgIGJ1dHRvbltkYXRhLWV4cGFuZGVkXSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7XG4gICAgfVxuICB9XG4gIGJ1dHRvbltkYXRhLWV4cGFuZGVkPVwidHJ1ZVwiXSB7XG4gICAgc3ZnIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG4gICAgfVxuICB9XG4gICZbZGF0YS1mbG9hdD1cInJpZ2h0XCJdIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gIH1cbiAgJltkYXRhLWZsb2F0PVwibGVmdFwiXSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cbmA7XG5cbmNvbnN0IEltYWdlRW1iZWQgPSAoeyBlbWJlZCwgcHJldmlld0FsdCwgaW5HcmlkLCBsYW5nLCByZW5kZXJDb250ZXh0ID0gXCJhcnRpY2xlXCIsIGNoaWxkcmVuIH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IFtpc0J5bGluZUhpZGRlbiwgc2V0SXNCeWxpbmVIaWRkZW5dID0gdXNlU3RhdGUoaGlkZUJ5bGluZShlbWJlZC5lbWJlZERhdGEpKTtcbiAgY29uc3QgW2ltYWdlU2l6ZXMsIHNldEltYWdlU2l6ZXNdID0gdXNlU3RhdGU8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAvLyBGdWxsLXNpemUgZmlndXJlcyBhdXRvbWF0aWNhbGx5IGdldCBhIG1hcmdpbiBvZiB7c3BhY2luZy5ub3JtYWx9IG9uIGl0cyB5LWF4aXMgaWYgYSBmbG9hdCBpcyBub3Qgc2V0IChvciBpZiBmbG9hdCBpcyBhbiBlbXB0eSBzdHJpbmcpLlxuICAvLyBUaGlzIGFkZHMgc29tZSBtYXJnaW4gdG8gbm9ybWFsIGZpZ3VyZXMgd2l0aGluIGFuIGFydGljbGUsIGJ1dCBzaG91bGQgbm90IGhhcHBlbiBmb3IgZmlndXJlcyBpbiBhIGdyaWQuXG4gIGNvbnN0IFtmbG9hdEF0dHIsIHNldEZsb2F0QXR0cl0gPSB1c2VTdGF0ZTx7IFwiZGF0YS1mbG9hdFwiPzogc3RyaW5nIH0+KCgpID0+XG4gICAgaW5HcmlkICYmICFlbWJlZC5lbWJlZERhdGEuYWxpZ24gPyB7fSA6IHsgXCJkYXRhLWZsb2F0XCI6IGVtYmVkLmVtYmVkRGF0YS5hbGlnbiB9LFxuICApO1xuXG4gIGNvbnN0IHBhcnNlZERlc2NyaXB0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGVtYmVkLmVtYmVkRGF0YS5jYXB0aW9uIHx8IHJlbmRlckNvbnRleHQgPT09IFwiYXJ0aWNsZVwiKSB7XG4gICAgICByZXR1cm4gZW1iZWQuZW1iZWREYXRhLmNhcHRpb24gPyBwYXJzZShlbWJlZC5lbWJlZERhdGEuY2FwdGlvbikgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChlbWJlZC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiICYmIGVtYmVkLmRhdGEuY2FwdGlvbi5jYXB0aW9uKSB7XG4gICAgICByZXR1cm4gcGFyc2UoZW1iZWQuZGF0YS5jYXB0aW9uLmNhcHRpb24pO1xuICAgIH1cbiAgfSwgW2VtYmVkLCByZW5kZXJDb250ZXh0XSk7XG5cbiAgaWYgKGVtYmVkLnN0YXR1cyA9PT0gXCJlcnJvclwiKSB7XG4gICAgY29uc3QgeyBhbGlnbiwgc2l6ZSB9ID0gZW1iZWQuZW1iZWREYXRhO1xuICAgIGNvbnN0IGZpZ3VyZVR5cGUgPSBnZXRGaWd1cmVUeXBlKHNpemUsIGFsaWduKTtcbiAgICByZXR1cm4gPEVtYmVkRXJyb3JQbGFjZWhvbGRlciB0eXBlPXtcImltYWdlXCJ9IGZpZ3VyZVR5cGU9e2ZpZ3VyZVR5cGV9IC8+O1xuICB9XG5cbiAgY29uc3QgeyBkYXRhLCBlbWJlZERhdGEgfSA9IGVtYmVkO1xuXG4gIGNvbnN0IGFsdFRleHQgPSBlbWJlZERhdGEuYWx0IHx8IFwiXCI7XG5cbiAgY29uc3QgZmlndXJlVHlwZSA9IGdldEZpZ3VyZVR5cGUoZW1iZWREYXRhLnNpemUsIGVtYmVkRGF0YS5hbGlnbik7XG4gIGNvbnN0IHNpemVzID0gZ2V0U2l6ZXMoZW1iZWREYXRhLnNpemUsIGVtYmVkRGF0YS5hbGlnbik7XG5cbiAgY29uc3QgZm9jYWxQb2ludCA9IGdldEZvY2FsUG9pbnQoZW1iZWREYXRhKTtcbiAgY29uc3QgY3JvcCA9IGdldENyb3AoZW1iZWREYXRhKTtcblxuICBjb25zdCBpc0NvcHlyaWdodGVkID0gZGF0YS5jb3B5cmlnaHQubGljZW5zZS5saWNlbnNlLnRvTG93ZXJDYXNlKCkgPT09IENPUFlSSUdIVEVEO1xuXG4gIGNvbnN0IHRvZ2dsZUltYWdlU2l6ZSA9ICgpID0+IHtcbiAgICBpZiAoIWltYWdlU2l6ZXMpIHtcbiAgICAgIHNldEltYWdlU2l6ZXMoZXhwYW5kZWRTaXplcyk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0RmxvYXRBdHRyKHt9KTtcbiAgICAgIH0sIDQwMCk7IC8vUmVtb3ZpbmcgdGhlIGZsb2F0IHBhcmFtZXRlciB0b28gcXVpY2tseSBjYXVzZXMgdGhlIGltYWdlIHRvIGJlIHJlc2l6ZWQgZnJvbSBsZWZ0IHJlZ2FyZGxlc3NcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SW1hZ2VTaXplcyh1bmRlZmluZWQpO1xuICAgICAgc2V0RmxvYXRBdHRyKHsgXCJkYXRhLWZsb2F0XCI6IGVtYmVkRGF0YS5hbGlnbiB9KTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRmlndXJlIHR5cGU9e2ltYWdlU2l6ZXMgPyB1bmRlZmluZWQgOiBmaWd1cmVUeXBlfSB7Li4uZmxvYXRBdHRyfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDxJbWFnZVxuICAgICAgICBmb2NhbFBvaW50PXtmb2NhbFBvaW50fVxuICAgICAgICBjb250ZW50VHlwZT17ZGF0YS5pbWFnZS5jb250ZW50VHlwZX1cbiAgICAgICAgY3JvcD17Y3JvcH1cbiAgICAgICAgc2l6ZXM9e2ltYWdlU2l6ZXMgPz8gc2l6ZXN9XG4gICAgICAgIGFsdD17YWx0VGV4dH1cbiAgICAgICAgc3JjPXtkYXRhLmltYWdlLmltYWdlVXJsfVxuICAgICAgICBib3JkZXI9e2VtYmVkRGF0YS5ib3JkZXJ9XG4gICAgICAgIG9uRXhwYW5kPXtpc0FsaWduKGVtYmVkRGF0YS5hbGlnbikgPyB0b2dnbGVJbWFnZVNpemUgOiB1bmRlZmluZWR9XG4gICAgICAgIGV4cGFuZGVkPXshIWltYWdlU2l6ZXN9XG4gICAgICAgIGV4cGFuZEJ1dHRvbj17XG4gICAgICAgICAgPEV4cGFuZEJ1dHRvblxuICAgICAgICAgICAgZW1iZWREYXRhPXtlbWJlZERhdGF9XG4gICAgICAgICAgICBleHBhbmRlZD17ISFpbWFnZVNpemVzfVxuICAgICAgICAgICAgYWxpZ249e2VtYmVkRGF0YS5hbGlnbn1cbiAgICAgICAgICAgIGJ5bGluZUhpZGRlbj17aXNCeWxpbmVIaWRkZW59XG4gICAgICAgICAgICBvbkV4cGFuZD17dG9nZ2xlSW1hZ2VTaXplfVxuICAgICAgICAgICAgb25IaWRlQnlsaW5lPXsoKSA9PiBzZXRJc0J5bGluZUhpZGRlbigocCkgPT4gIXApfVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgbGFuZz17bGFuZ31cbiAgICAgIC8+XG4gICAgICB7aXNCeWxpbmVIaWRkZW4gPyBudWxsIDogKFxuICAgICAgICA8RW1iZWRCeWxpbmVcbiAgICAgICAgICB0eXBlPVwiaW1hZ2VcIlxuICAgICAgICAgIGNvcHlyaWdodD17ZGF0YS5jb3B5cmlnaHR9XG4gICAgICAgICAgZGVzY3JpcHRpb249e3BhcnNlZERlc2NyaXB0aW9ufVxuICAgICAgICAgIHZpc2libGVBbHQ9e3ByZXZpZXdBbHQgPyBlbWJlZC5lbWJlZERhdGEuYWx0IDogXCJcIn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9TdHlsZWRGaWd1cmU+XG4gICk7XG59O1xuXG5jb25zdCBoaWRlQnlsaW5lID0gKGVtYmVkOiBJbWFnZUVtYmVkRGF0YSk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gKCEhZW1iZWQuc2l6ZSAmJiBlbWJlZC5zaXplLmVuZHNXaXRoKFwiLWhpZGUtYnlsaW5lXCIpKSB8fCBlbWJlZC5oaWRlQnlsaW5lID09PSBcInRydWVcIjtcbn07XG5cbmludGVyZmFjZSBFeHBhbmRCdXR0b25Qcm9wcyB7XG4gIGVtYmVkRGF0YTogSW1hZ2VFbWJlZERhdGE7XG4gIGFsaWduPzogc3RyaW5nO1xuICBleHBhbmRlZDogYm9vbGVhbjtcbiAgYnlsaW5lSGlkZGVuOiBib29sZWFuO1xuICBvbkV4cGFuZDogTW91c2VFdmVudEhhbmRsZXI8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBvbkhpZGVCeWxpbmU6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxCdXR0b25FbGVtZW50Pjtcbn1cblxuY29uc3QgQnlsaW5lQnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDE7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIHBhZGRpbmc6ICR7c3BhY2luZy5zbWFsbH07XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0O1xuICBiYWNrZ3JvdW5kOiAke2NvbG9ycy5iYWNrZ3JvdW5kLmRlZmF1bHR9MjA7XG4gIGJvcmRlcjogMDtcblxuICBzdmcge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGVhc2Utb3V0O1xuICAgIHdpZHRoOiAke3NwYWNpbmcubm9ybWFsfTtcbiAgICBoZWlnaHQ6ICR7c3BhY2luZy5ub3JtYWx9O1xuICAgIGZpbGw6ICR7Y29sb3JzLmJyYW5kLnByaW1hcnl9O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRCdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBhZGRpbmc6IDA7XG4gIHRvcDogJHtzcGFjaW5nLnNtYWxsfTtcbiAgcmlnaHQ6ICR7c3BhY2luZy5zbWFsbH07XG4gIHdpZHRoOiAke3NwYWNpbmcubm9ybWFsfTtcbiAgaGVpZ2h0OiAke3NwYWNpbmcubm9ybWFsfTtcbiAgYm9yZGVyOiAycHggc29saWQgJHtjb2xvcnMud2hpdGV9O1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dDtcbiAgY29sb3I6ICR7Y29sb3JzLndoaXRlfTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcnMuYnJhbmQucHJpbWFyeX07XG4gIGJvcmRlci1yYWRpdXM6ICR7bWlzYy5ib3JkZXJSYWRpdXNMYXJnZX07XG4gIHN2ZyB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgZWFzZS1vdXQ7XG4gICAgaGVpZ2h0OiAke3NwYWNpbmcubnNtYWxsfTtcbiAgICB3aWR0aDogJHtzcGFjaW5nLm5zbWFsbH07XG4gIH1cbmA7XG5cbmNvbnN0IEV4cGFuZEJ1dHRvbiA9ICh7IGFsaWduLCBlbWJlZERhdGEsIGV4cGFuZGVkLCBieWxpbmVIaWRkZW4sIG9uRXhwYW5kLCBvbkhpZGVCeWxpbmUgfTogRXhwYW5kQnV0dG9uUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBpZiAoaXNBbGlnbihhbGlnbikpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgYXJpYS1sYWJlbD17dChgbGljZW5zZS5pbWFnZXMuaXRlbUltYWdlLnpvb20ke2V4cGFuZGVkID8gXCJPdXRcIiA6IFwiXCJ9SW1hZ2VCdXR0b25MYWJlbGApfVxuICAgICAgICBvbkNsaWNrPXtvbkV4cGFuZH1cbiAgICAgICAgZGF0YS1leHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICA+XG4gICAgICAgIDxQbHVzIC8+XG4gICAgICA8L1N0eWxlZEJ1dHRvbj5cbiAgICApO1xuICB9XG4gIGlmIChoaWRlQnlsaW5lKGVtYmVkRGF0YSkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ5bGluZUJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgZGF0YS1ieWxpbmUtYnV0dG9uPVwiXCJcbiAgICAgICAgYXJpYS1sYWJlbD17dChgbGljZW5zZS5pbWFnZXMuaXRlbUltYWdlLiR7YnlsaW5lSGlkZGVuID8gXCJleHBhbmRCeWxpbmVcIiA6IFwibWluaW1pemVCeWxpbmVcIn1gKX1cbiAgICAgICAgb25DbGljaz17b25IaWRlQnlsaW5lfVxuICAgICAgPlxuICAgICAgICB7YnlsaW5lSGlkZGVuID8gPENoZXZyb25Eb3duIC8+IDogPENoZXZyb25VcCAvPn1cbiAgICAgIDwvQnlsaW5lQnV0dG9uPlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbWFnZUVtYmVkO1xuIl19 */"));
75
+ const ImageWrapper = styled("div", {
76
+ base: {
77
+ overflow: "hidden",
78
+ position: "relative",
79
+ width: "100%",
80
+ "& img": {
81
+ width: "100%"
82
+ }
83
+ },
84
+ variants: {
85
+ svg: {
86
+ true: {
87
+ display: "flex",
88
+ justifyContent: "center"
89
+ },
90
+ false: {}
91
+ },
92
+ border: {
93
+ true: {
94
+ border: "1px solid",
95
+ // TODO: Not sure if we want this color.
96
+ borderColor: "surface.brand.1.strong",
97
+ borderBottom: "0",
98
+ borderRadius: "xsmall",
99
+ borderBottomLeftRadius: "0",
100
+ borderBottomRightRadius: "0"
101
+ },
102
+ false: {}
103
+ },
104
+ expandable: {
105
+ true: {
106
+ cursor: "pointer"
107
+ },
108
+ false: {}
109
+ }
110
+ }
111
+ });
112
+ const StyledFigure = styled(Figure, {
113
+ base: {
114
+ _hover: {
115
+ "& [data-byline-button]": {
116
+ background: "background.default"
117
+ },
118
+ "& button[data-expanded]": {
119
+ transform: "scale(1.2)"
120
+ }
121
+ },
122
+ "& button[data-expanded='true']": {
123
+ "& svg": {
124
+ transform: "rotate(-45deg)"
125
+ }
126
+ }
127
+ }
128
+ });
129
+
130
+ // TODO: Ask about BylineButton styling. Not included in design
131
+ const BylineButton = styled("button", {
132
+ base: {
133
+ cursor: "pointer",
134
+ position: "absolute",
135
+ zIndex: "base",
136
+ bottom: "0",
137
+ right: "0",
138
+ paddingBlock: "xsmall",
139
+ paddingInline: "xsmall",
140
+ transitionProperty: "transform, background-color, color",
141
+ transitionDuration: "normal",
142
+ transitionTimingFunction: "ease-out",
143
+ background: "background.default/20",
144
+ border: "0",
145
+ "& svg": {
146
+ transitionProperty: "transform",
147
+ transitionDuration: "normal",
148
+ transitionTimingFunction: "ease-out",
149
+ fill: "primary"
150
+ }
151
+ }
152
+ }, {
153
+ defaultProps: {
154
+ type: "button"
155
+ }
156
+ });
157
+ const ExpandButton = styled("button", {
158
+ base: {
159
+ display: "flex",
160
+ alignItems: "center",
161
+ justifyContent: "center",
162
+ cursor: "pointer",
163
+ position: "absolute",
164
+ padding: "0",
165
+ top: "xsmall",
166
+ right: "xsmall",
167
+ width: "medium",
168
+ height: "medium",
169
+ border: "2px solid",
170
+ borderColor: "background.default",
171
+ transitionProperty: "transform, background-color, color",
172
+ transitionDuration: "normal",
173
+ transitionTimingFunction: "ease-out",
174
+ color: "background.default",
175
+ backgroundColor: "surface.action",
176
+ borderRadius: "large",
177
+ "& svg": {
178
+ transitionProperty: "transform",
179
+ transitionDuration: "normal",
180
+ transitionTimingFunction: "ease-out"
181
+ }
182
+ }
183
+ }, {
184
+ defaultProps: {
185
+ type: "button"
186
+ }
187
+ });
91
188
  const ImageEmbed = _ref => {
92
189
  let {
93
190
  embed,
94
191
  previewAlt,
95
- inGrid,
96
192
  lang,
97
193
  renderContext = "article",
98
194
  children
99
195
  } = _ref;
100
196
  const [isBylineHidden, setIsBylineHidden] = useState(hideByline(embed.embedData));
101
197
  const [imageSizes, setImageSizes] = useState(undefined);
102
- // Full-size figures automatically get a margin of {spacing.normal} on its y-axis if a float is not set (or if float is an empty string).
103
- // This adds some margin to normal figures within an article, but should not happen for figures in a grid.
104
- const [floatAttr, setFloatAttr] = useState(() => inGrid && !embed.embedData.align ? {} : {
105
- "data-float": embed.embedData.align
106
- });
198
+ const figureProps = getFigureProps(embed.embedData.size, embed.embedData.align);
199
+ const {
200
+ t
201
+ } = useTranslation();
107
202
  const parsedDescription = useMemo(() => {
108
203
  if (embed.embedData.caption || renderContext === "article") {
109
204
  return embed.embedData.caption ? parse(embed.embedData.caption) : undefined;
@@ -113,14 +208,10 @@ const ImageEmbed = _ref => {
113
208
  }
114
209
  }, [embed, renderContext]);
115
210
  if (embed.status === "error") {
116
- const {
117
- align,
118
- size
119
- } = embed.embedData;
120
- const figureType = getFigureType(size, align);
121
211
  return _jsx(EmbedErrorPlaceholder, {
122
212
  type: "image",
123
- figureType: figureType
213
+ figureType: figureProps?.size,
214
+ float: figureProps?.float
124
215
  });
125
216
  }
126
217
  const {
@@ -128,46 +219,40 @@ const ImageEmbed = _ref => {
128
219
  embedData
129
220
  } = embed;
130
221
  const altText = embedData.alt || "";
131
- const figureType = getFigureType(embedData.size, embedData.align);
132
222
  const sizes = getSizes(embedData.size, embedData.align);
133
223
  const focalPoint = getFocalPoint(embedData);
134
224
  const crop = getCrop(embedData);
135
- const isCopyrighted = data.copyright.license.license.toLowerCase() === COPYRIGHTED;
136
225
  const toggleImageSize = () => {
137
- if (!imageSizes) {
138
- setImageSizes(expandedSizes);
139
- setTimeout(() => {
140
- setFloatAttr({});
141
- }, 400); //Removing the float parameter too quickly causes the image to be resized from left regardless
142
- } else {
143
- setImageSizes(undefined);
144
- setFloatAttr({
145
- "data-float": embedData.align
146
- });
147
- }
226
+ setImageSizes(sizes => !sizes ? expandedSizes : undefined);
148
227
  };
228
+
229
+ // TODO: Check how this works with `children`. Will only be important for ED
149
230
  return _jsxs(StyledFigure, {
150
- type: imageSizes ? undefined : figureType,
151
- ...floatAttr,
152
- children: [children, _jsx(Image, {
153
- focalPoint: focalPoint,
154
- contentType: data.image.contentType,
155
- crop: crop,
156
- sizes: imageSizes !== null && imageSizes !== void 0 ? imageSizes : sizes,
157
- alt: altText,
158
- src: data.image.imageUrl,
159
- border: embedData.border,
160
- onExpand: isAlign(embedData.align) ? toggleImageSize : undefined,
161
- expanded: !!imageSizes,
162
- expandButton: _jsx(ExpandButton, {
163
- embedData: embedData,
164
- expanded: !!imageSizes,
165
- align: embedData.align,
166
- bylineHidden: isBylineHidden,
167
- onExpand: toggleImageSize,
168
- onHideByline: () => setIsBylineHidden(p => !p)
169
- }),
170
- lang: lang
231
+ float: figureProps?.float,
232
+ size: imageSizes ? "full" : figureProps?.size ?? "medium",
233
+ children: [children, _jsxs(ImageWrapper, {
234
+ border: embedData.border === "true",
235
+ expandable: !!figureProps?.float,
236
+ children: [_jsx(Image, {
237
+ focalPoint: focalPoint,
238
+ contentType: data.image.contentType,
239
+ crop: crop,
240
+ sizes: imageSizes ?? sizes,
241
+ alt: altText,
242
+ src: data.image.imageUrl,
243
+ lang: lang,
244
+ onClick: figureProps?.float ? toggleImageSize : undefined
245
+ }), !!embedData.align && _jsx(ExpandButton, {
246
+ "aria-label": t(`license.images.itemImage.zoom${imageSizes ? "Out" : ""}ImageButtonLabel`),
247
+ onClick: toggleImageSize,
248
+ "data-expanded": !!imageSizes,
249
+ children: _jsx(Plus, {})
250
+ }), (embedData.size?.endsWith("-hide-byline") || embedData.hideByline === "true") && _jsx(BylineButton, {
251
+ "data-byline-button": "",
252
+ "aria-label": t(`license.images.itemImage.${isBylineHidden ? "expandByline" : "minimizeByline"}`),
253
+ onClick: () => setIsBylineHidden(p => !p),
254
+ children: isBylineHidden ? _jsx(ChevronDown, {}) : _jsx(ChevronUp, {})
255
+ })]
171
256
  }), isBylineHidden ? null : _jsx(EmbedByline, {
172
257
  type: "image",
173
258
  copyright: data.copyright,
@@ -179,44 +264,4 @@ const ImageEmbed = _ref => {
179
264
  const hideByline = embed => {
180
265
  return !!embed.size && embed.size.endsWith("-hide-byline") || embed.hideByline === "true";
181
266
  };
182
- const BylineButton = /*#__PURE__*/_styled("button", {
183
- target: "ened8ka1",
184
- label: "BylineButton"
185
- })("cursor:pointer;position:absolute;z-index:1;bottom:0;right:0;padding:", spacing.small, ";transition:all 0.3s ease-out;background:", colors.background.default, "20;border:0;svg{transition:transform 0.4s ease-out;width:", spacing.normal, ";height:", spacing.normal, ";fill:", colors.brand.primary, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkltYWdlRW1iZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlPa0MiLCJmaWxlIjoiSW1hZ2VFbWJlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMy1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbi8qKiBAanN4SW1wb3J0U291cmNlIEBlbW90aW9uL3JlYWN0ICovXG5pbXBvcnQgcGFyc2UgZnJvbSBcImh0bWwtcmVhY3QtcGFyc2VyXCI7XG5pbXBvcnQgeyBNb3VzZUV2ZW50SGFuZGxlciwgUmVhY3ROb2RlLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBjb2xvcnMsIG1pc2MsIHNwYWNpbmcgfSBmcm9tIFwiQG5kbGEvY29yZVwiO1xuaW1wb3J0IHsgUGx1cyB9IGZyb20gXCJAbmRsYS9pY29ucy9hY3Rpb25cIjtcbmltcG9ydCB7IENoZXZyb25Eb3duLCBDaGV2cm9uVXAgfSBmcm9tIFwiQG5kbGEvaWNvbnMvY29tbW9uXCI7XG5pbXBvcnQgeyBDT1BZUklHSFRFRCB9IGZyb20gXCJAbmRsYS9saWNlbnNlc1wiO1xuaW1wb3J0IHsgSW1hZ2VFbWJlZERhdGEsIEltYWdlTWV0YURhdGEgfSBmcm9tIFwiQG5kbGEvdHlwZXMtZW1iZWRcIjtcbmltcG9ydCBFbWJlZEVycm9yUGxhY2Vob2xkZXIgZnJvbSBcIi4vRW1iZWRFcnJvclBsYWNlaG9sZGVyXCI7XG5pbXBvcnQgeyBSZW5kZXJDb250ZXh0IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IEZpZ3VyZSwgRmlndXJlVHlwZSB9IGZyb20gXCIuLi9GaWd1cmVcIjtcbmltcG9ydCBJbWFnZSBmcm9tIFwiLi4vSW1hZ2VcIjtcbmltcG9ydCB7IEVtYmVkQnlsaW5lIH0gZnJvbSBcIi4uL0xpY2Vuc2VCeWxpbmVcIjtcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgZW1iZWQ6IEltYWdlTWV0YURhdGE7XG4gIHByZXZpZXdBbHQ/OiBib29sZWFuO1xuICBpbkdyaWQ/OiBib29sZWFuO1xuICBsYW5nPzogc3RyaW5nO1xuICByZW5kZXJDb250ZXh0PzogUmVuZGVyQ29udGV4dDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMaWNlbnNlQ3JlZGl0cyA9IChjb3B5cmlnaHQ/OiB7XG4gIGNyZWF0b3JzPzogQXV0aG9yW107XG4gIHJpZ2h0c2hvbGRlcnM/OiBBdXRob3JbXTtcbiAgcHJvY2Vzc29ycz86IEF1dGhvcltdO1xufSkgPT4ge1xuICByZXR1cm4ge1xuICAgIGNyZWF0b3JzOiBjb3B5cmlnaHQ/LmNyZWF0b3JzID8/IFtdLFxuICAgIHJpZ2h0c2hvbGRlcnM6IGNvcHlyaWdodD8ucmlnaHRzaG9sZGVycyA/PyBbXSxcbiAgICBwcm9jZXNzb3JzOiBjb3B5cmlnaHQ/LnByb2Nlc3NvcnMgPz8gW10sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZXJyb3JTdmdTcmMgPSBgZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnIGZpbGw9JyUyMzhBODg4OCcgaGVpZ2h0PSc0MDAnIHZpZXdCb3g9JzAgMCAyNCAxMicgd2lkdGg9JzEwMCUyNScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogJTIzRUZGMEYyJyUzRSUzQ3BhdGggZD0nTTAgMGgyNHYyNEgwVjB6JyBmaWxsPSdub25lJy8lM0UlM0NwYXRoIHRyYW5zZm9ybT0nc2NhbGUoMC4zKSB0cmFuc2xhdGUoMjgsIDguNSknIGQ9J00xMSAxNWgydjJoLTJ6bTAtOGgydjZoLTJ6bS45OS01QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6Jy8lM0UlM0Mvc3ZnJTNFYDtcbmNvbnN0IGlzU21hbGwgPSAoc2l6ZT86IHN0cmluZyk6IHNpemUgaXMgXCJ4c21hbGxcIiB8IFwic21hbGxcIiA9PiBzaXplID09PSBcInhzbWFsbFwiIHx8IHNpemUgPT09IFwic21hbGxcIjtcblxuY29uc3QgaXNBbGlnbiA9IChhbGlnbj86IHN0cmluZyk6IGFsaWduIGlzIFwibGVmdFwiIHwgXCJyaWdodFwiID0+IGFsaWduID09PSBcImxlZnRcIiB8fCBhbGlnbiA9PT0gXCJyaWdodFwiO1xuXG5jb25zdCBnZXRGaWd1cmVUeXBlID0gKHNpemU/OiBzdHJpbmcsIGFsaWduPzogc3RyaW5nKTogRmlndXJlVHlwZSA9PiB7XG4gIGlmIChzaXplICYmIGlzU21hbGwoc2l6ZSkgJiYgYWxpZ24gJiYgaXNBbGlnbihhbGlnbikpIHtcbiAgICByZXR1cm4gYCR7c2l6ZX0tJHthbGlnbn1gO1xuICB9XG4gIGlmIChzaXplICYmIGlzU21hbGwoc2l6ZSkgJiYgIWFsaWduKSB7XG4gICAgcmV0dXJuIHNpemUgYXMgRmlndXJlVHlwZTtcbiAgfVxuICBpZiAoYWxpZ24gJiYgaXNBbGlnbihhbGlnbikpIHtcbiAgICByZXR1cm4gYWxpZ247XG4gIH1cbiAgcmV0dXJuIFwiZnVsbFwiO1xufTtcblxuY29uc3QgZ2V0U2l6ZXMgPSAoc2l6ZT86IHN0cmluZywgYWxpZ24/OiBzdHJpbmcpID0+IHtcbiAgaWYgKGFsaWduICYmIHNpemUgPT09IFwiZnVsbFwiKSB7XG4gICAgcmV0dXJuIFwiKG1pbi13aWR0aDogMTAyNHB4KSA1MTJweCwgKG1pbi13aWR0aDogNzY4cHgpIDM1MHB4LCAxMDB2d1wiO1xuICB9XG4gIGlmIChhbGlnbiAmJiBzaXplID09PSBcInNtYWxsXCIpIHtcbiAgICByZXR1cm4gXCIobWluLXdpZHRoOiAxMDI0cHgpIDM1MHB4LCAobWluLXdpZHRoOiA3NjhweCkgMTgwcHgsIDEwMHZ3XCI7XG4gIH1cbiAgaWYgKGFsaWduICYmIHNpemUgPT09IFwieHNtYWxsXCIpIHtcbiAgICByZXR1cm4gXCIobWluLXdpZHRoOiAxMDI0cHgpIDE4MHB4LCAobWluLXdpZHRoOiA3NjhweCkgMTgwcHgsIDEwMHZ3XCI7XG4gIH1cbiAgcmV0dXJuIFwiKG1pbi13aWR0aDogMTAyNHB4KSAxMDI0cHgsIDEwMHZ3XCI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9jYWxQb2ludCA9IChkYXRhOiBJbWFnZUVtYmVkRGF0YSkgPT4ge1xuICBjb25zdCBmb2NhbFggPSBOdW1iZXIucGFyc2VGbG9hdChkYXRhLmZvY2FsWCA/PyBcIlwiKTtcbiAgY29uc3QgZm9jYWxZID0gTnVtYmVyLnBhcnNlRmxvYXQoZGF0YS5mb2NhbFkgPz8gXCJcIik7XG4gIGlmICghTnVtYmVyLmlzTmFOKGZvY2FsWCkgJiYgIU51bWJlci5pc05hTihmb2NhbFkpKSB7XG4gICAgcmV0dXJuIHsgeDogZm9jYWxYLCB5OiBmb2NhbFkgfTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENyb3AgPSAoZGF0YTogSW1hZ2VFbWJlZERhdGEpID0+IHtcbiAgY29uc3QgbG93ZXJSaWdodFggPSBOdW1iZXIucGFyc2VGbG9hdChkYXRhLmxvd2VyUmlnaHRYID8/IFwiXCIpO1xuICBjb25zdCBsb3dlclJpZ2h0WSA9IE51bWJlci5wYXJzZUZsb2F0KGRhdGEubG93ZXJSaWdodFkgPz8gXCJcIik7XG4gIGNvbnN0IHVwcGVyTGVmdFggPSBOdW1iZXIucGFyc2VGbG9hdChkYXRhLnVwcGVyTGVmdFggPz8gXCJcIik7XG4gIGNvbnN0IHVwcGVyTGVmdFkgPSBOdW1iZXIucGFyc2VGbG9hdChkYXRhLnVwcGVyTGVmdFkgPz8gXCJcIik7XG4gIGlmIChcbiAgICAhTnVtYmVyLmlzTmFOKGxvd2VyUmlnaHRYKSAmJlxuICAgICFOdW1iZXIuaXNOYU4obG93ZXJSaWdodFkpICYmXG4gICAgIU51bWJlci5pc05hTih1cHBlckxlZnRYKSAmJlxuICAgICFOdW1iZXIuaXNOYU4odXBwZXJMZWZ0WSlcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0WDogbG93ZXJSaWdodFgsXG4gICAgICBzdGFydFk6IGxvd2VyUmlnaHRZLFxuICAgICAgZW5kWDogdXBwZXJMZWZ0WCxcbiAgICAgIGVuZFk6IHVwcGVyTGVmdFksXG4gICAgfTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZXhwYW5kZWRTaXplcyA9IFwiKG1pbi13aWR0aDogMTAyNHB4KSAxMDI0cHgsIDEwMHZ3XCI7XG5cbmNvbnN0IFN0eWxlZEZpZ3VyZSA9IHN0eWxlZChGaWd1cmUpYFxuICAmOmhvdmVyIHtcbiAgICBbZGF0YS1ieWxpbmUtYnV0dG9uXSB7XG4gICAgICBiYWNrZ3JvdW5kOiAke2NvbG9ycy53aGl0ZX07XG4gICAgfVxuICAgIGJ1dHRvbltkYXRhLWV4cGFuZGVkXSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7XG4gICAgfVxuICB9XG4gIGJ1dHRvbltkYXRhLWV4cGFuZGVkPVwidHJ1ZVwiXSB7XG4gICAgc3ZnIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG4gICAgfVxuICB9XG4gICZbZGF0YS1mbG9hdD1cInJpZ2h0XCJdIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gIH1cbiAgJltkYXRhLWZsb2F0PVwibGVmdFwiXSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cbmA7XG5cbmNvbnN0IEltYWdlRW1iZWQgPSAoeyBlbWJlZCwgcHJldmlld0FsdCwgaW5HcmlkLCBsYW5nLCByZW5kZXJDb250ZXh0ID0gXCJhcnRpY2xlXCIsIGNoaWxkcmVuIH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IFtpc0J5bGluZUhpZGRlbiwgc2V0SXNCeWxpbmVIaWRkZW5dID0gdXNlU3RhdGUoaGlkZUJ5bGluZShlbWJlZC5lbWJlZERhdGEpKTtcbiAgY29uc3QgW2ltYWdlU2l6ZXMsIHNldEltYWdlU2l6ZXNdID0gdXNlU3RhdGU8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAvLyBGdWxsLXNpemUgZmlndXJlcyBhdXRvbWF0aWNhbGx5IGdldCBhIG1hcmdpbiBvZiB7c3BhY2luZy5ub3JtYWx9IG9uIGl0cyB5LWF4aXMgaWYgYSBmbG9hdCBpcyBub3Qgc2V0IChvciBpZiBmbG9hdCBpcyBhbiBlbXB0eSBzdHJpbmcpLlxuICAvLyBUaGlzIGFkZHMgc29tZSBtYXJnaW4gdG8gbm9ybWFsIGZpZ3VyZXMgd2l0aGluIGFuIGFydGljbGUsIGJ1dCBzaG91bGQgbm90IGhhcHBlbiBmb3IgZmlndXJlcyBpbiBhIGdyaWQuXG4gIGNvbnN0IFtmbG9hdEF0dHIsIHNldEZsb2F0QXR0cl0gPSB1c2VTdGF0ZTx7IFwiZGF0YS1mbG9hdFwiPzogc3RyaW5nIH0+KCgpID0+XG4gICAgaW5HcmlkICYmICFlbWJlZC5lbWJlZERhdGEuYWxpZ24gPyB7fSA6IHsgXCJkYXRhLWZsb2F0XCI6IGVtYmVkLmVtYmVkRGF0YS5hbGlnbiB9LFxuICApO1xuXG4gIGNvbnN0IHBhcnNlZERlc2NyaXB0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGVtYmVkLmVtYmVkRGF0YS5jYXB0aW9uIHx8IHJlbmRlckNvbnRleHQgPT09IFwiYXJ0aWNsZVwiKSB7XG4gICAgICByZXR1cm4gZW1iZWQuZW1iZWREYXRhLmNhcHRpb24gPyBwYXJzZShlbWJlZC5lbWJlZERhdGEuY2FwdGlvbikgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChlbWJlZC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiICYmIGVtYmVkLmRhdGEuY2FwdGlvbi5jYXB0aW9uKSB7XG4gICAgICByZXR1cm4gcGFyc2UoZW1iZWQuZGF0YS5jYXB0aW9uLmNhcHRpb24pO1xuICAgIH1cbiAgfSwgW2VtYmVkLCByZW5kZXJDb250ZXh0XSk7XG5cbiAgaWYgKGVtYmVkLnN0YXR1cyA9PT0gXCJlcnJvclwiKSB7XG4gICAgY29uc3QgeyBhbGlnbiwgc2l6ZSB9ID0gZW1iZWQuZW1iZWREYXRhO1xuICAgIGNvbnN0IGZpZ3VyZVR5cGUgPSBnZXRGaWd1cmVUeXBlKHNpemUsIGFsaWduKTtcbiAgICByZXR1cm4gPEVtYmVkRXJyb3JQbGFjZWhvbGRlciB0eXBlPXtcImltYWdlXCJ9IGZpZ3VyZVR5cGU9e2ZpZ3VyZVR5cGV9IC8+O1xuICB9XG5cbiAgY29uc3QgeyBkYXRhLCBlbWJlZERhdGEgfSA9IGVtYmVkO1xuXG4gIGNvbnN0IGFsdFRleHQgPSBlbWJlZERhdGEuYWx0IHx8IFwiXCI7XG5cbiAgY29uc3QgZmlndXJlVHlwZSA9IGdldEZpZ3VyZVR5cGUoZW1iZWREYXRhLnNpemUsIGVtYmVkRGF0YS5hbGlnbik7XG4gIGNvbnN0IHNpemVzID0gZ2V0U2l6ZXMoZW1iZWREYXRhLnNpemUsIGVtYmVkRGF0YS5hbGlnbik7XG5cbiAgY29uc3QgZm9jYWxQb2ludCA9IGdldEZvY2FsUG9pbnQoZW1iZWREYXRhKTtcbiAgY29uc3QgY3JvcCA9IGdldENyb3AoZW1iZWREYXRhKTtcblxuICBjb25zdCBpc0NvcHlyaWdodGVkID0gZGF0YS5jb3B5cmlnaHQubGljZW5zZS5saWNlbnNlLnRvTG93ZXJDYXNlKCkgPT09IENPUFlSSUdIVEVEO1xuXG4gIGNvbnN0IHRvZ2dsZUltYWdlU2l6ZSA9ICgpID0+IHtcbiAgICBpZiAoIWltYWdlU2l6ZXMpIHtcbiAgICAgIHNldEltYWdlU2l6ZXMoZXhwYW5kZWRTaXplcyk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0RmxvYXRBdHRyKHt9KTtcbiAgICAgIH0sIDQwMCk7IC8vUmVtb3ZpbmcgdGhlIGZsb2F0IHBhcmFtZXRlciB0b28gcXVpY2tseSBjYXVzZXMgdGhlIGltYWdlIHRvIGJlIHJlc2l6ZWQgZnJvbSBsZWZ0IHJlZ2FyZGxlc3NcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SW1hZ2VTaXplcyh1bmRlZmluZWQpO1xuICAgICAgc2V0RmxvYXRBdHRyKHsgXCJkYXRhLWZsb2F0XCI6IGVtYmVkRGF0YS5hbGlnbiB9KTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRmlndXJlIHR5cGU9e2ltYWdlU2l6ZXMgPyB1bmRlZmluZWQgOiBmaWd1cmVUeXBlfSB7Li4uZmxvYXRBdHRyfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDxJbWFnZVxuICAgICAgICBmb2NhbFBvaW50PXtmb2NhbFBvaW50fVxuICAgICAgICBjb250ZW50VHlwZT17ZGF0YS5pbWFnZS5jb250ZW50VHlwZX1cbiAgICAgICAgY3JvcD17Y3JvcH1cbiAgICAgICAgc2l6ZXM9e2ltYWdlU2l6ZXMgPz8gc2l6ZXN9XG4gICAgICAgIGFsdD17YWx0VGV4dH1cbiAgICAgICAgc3JjPXtkYXRhLmltYWdlLmltYWdlVXJsfVxuICAgICAgICBib3JkZXI9e2VtYmVkRGF0YS5ib3JkZXJ9XG4gICAgICAgIG9uRXhwYW5kPXtpc0FsaWduKGVtYmVkRGF0YS5hbGlnbikgPyB0b2dnbGVJbWFnZVNpemUgOiB1bmRlZmluZWR9XG4gICAgICAgIGV4cGFuZGVkPXshIWltYWdlU2l6ZXN9XG4gICAgICAgIGV4cGFuZEJ1dHRvbj17XG4gICAgICAgICAgPEV4cGFuZEJ1dHRvblxuICAgICAgICAgICAgZW1iZWREYXRhPXtlbWJlZERhdGF9XG4gICAgICAgICAgICBleHBhbmRlZD17ISFpbWFnZVNpemVzfVxuICAgICAgICAgICAgYWxpZ249e2VtYmVkRGF0YS5hbGlnbn1cbiAgICAgICAgICAgIGJ5bGluZUhpZGRlbj17aXNCeWxpbmVIaWRkZW59XG4gICAgICAgICAgICBvbkV4cGFuZD17dG9nZ2xlSW1hZ2VTaXplfVxuICAgICAgICAgICAgb25IaWRlQnlsaW5lPXsoKSA9PiBzZXRJc0J5bGluZUhpZGRlbigocCkgPT4gIXApfVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgbGFuZz17bGFuZ31cbiAgICAgIC8+XG4gICAgICB7aXNCeWxpbmVIaWRkZW4gPyBudWxsIDogKFxuICAgICAgICA8RW1iZWRCeWxpbmVcbiAgICAgICAgICB0eXBlPVwiaW1hZ2VcIlxuICAgICAgICAgIGNvcHlyaWdodD17ZGF0YS5jb3B5cmlnaHR9XG4gICAgICAgICAgZGVzY3JpcHRpb249e3BhcnNlZERlc2NyaXB0aW9ufVxuICAgICAgICAgIHZpc2libGVBbHQ9e3ByZXZpZXdBbHQgPyBlbWJlZC5lbWJlZERhdGEuYWx0IDogXCJcIn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9TdHlsZWRGaWd1cmU+XG4gICk7XG59O1xuXG5jb25zdCBoaWRlQnlsaW5lID0gKGVtYmVkOiBJbWFnZUVtYmVkRGF0YSk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gKCEhZW1iZWQuc2l6ZSAmJiBlbWJlZC5zaXplLmVuZHNXaXRoKFwiLWhpZGUtYnlsaW5lXCIpKSB8fCBlbWJlZC5oaWRlQnlsaW5lID09PSBcInRydWVcIjtcbn07XG5cbmludGVyZmFjZSBFeHBhbmRCdXR0b25Qcm9wcyB7XG4gIGVtYmVkRGF0YTogSW1hZ2VFbWJlZERhdGE7XG4gIGFsaWduPzogc3RyaW5nO1xuICBleHBhbmRlZDogYm9vbGVhbjtcbiAgYnlsaW5lSGlkZGVuOiBib29sZWFuO1xuICBvbkV4cGFuZDogTW91c2VFdmVudEhhbmRsZXI8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBvbkhpZGVCeWxpbmU6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxCdXR0b25FbGVtZW50Pjtcbn1cblxuY29uc3QgQnlsaW5lQnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDE7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIHBhZGRpbmc6ICR7c3BhY2luZy5zbWFsbH07XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0O1xuICBiYWNrZ3JvdW5kOiAke2NvbG9ycy5iYWNrZ3JvdW5kLmRlZmF1bHR9MjA7XG4gIGJvcmRlcjogMDtcblxuICBzdmcge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGVhc2Utb3V0O1xuICAgIHdpZHRoOiAke3NwYWNpbmcubm9ybWFsfTtcbiAgICBoZWlnaHQ6ICR7c3BhY2luZy5ub3JtYWx9O1xuICAgIGZpbGw6ICR7Y29sb3JzLmJyYW5kLnByaW1hcnl9O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRCdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBhZGRpbmc6IDA7XG4gIHRvcDogJHtzcGFjaW5nLnNtYWxsfTtcbiAgcmlnaHQ6ICR7c3BhY2luZy5zbWFsbH07XG4gIHdpZHRoOiAke3NwYWNpbmcubm9ybWFsfTtcbiAgaGVpZ2h0OiAke3NwYWNpbmcubm9ybWFsfTtcbiAgYm9yZGVyOiAycHggc29saWQgJHtjb2xvcnMud2hpdGV9O1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dDtcbiAgY29sb3I6ICR7Y29sb3JzLndoaXRlfTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcnMuYnJhbmQucHJpbWFyeX07XG4gIGJvcmRlci1yYWRpdXM6ICR7bWlzYy5ib3JkZXJSYWRpdXNMYXJnZX07XG4gIHN2ZyB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgZWFzZS1vdXQ7XG4gICAgaGVpZ2h0OiAke3NwYWNpbmcubnNtYWxsfTtcbiAgICB3aWR0aDogJHtzcGFjaW5nLm5zbWFsbH07XG4gIH1cbmA7XG5cbmNvbnN0IEV4cGFuZEJ1dHRvbiA9ICh7IGFsaWduLCBlbWJlZERhdGEsIGV4cGFuZGVkLCBieWxpbmVIaWRkZW4sIG9uRXhwYW5kLCBvbkhpZGVCeWxpbmUgfTogRXhwYW5kQnV0dG9uUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBpZiAoaXNBbGlnbihhbGlnbikpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgYXJpYS1sYWJlbD17dChgbGljZW5zZS5pbWFnZXMuaXRlbUltYWdlLnpvb20ke2V4cGFuZGVkID8gXCJPdXRcIiA6IFwiXCJ9SW1hZ2VCdXR0b25MYWJlbGApfVxuICAgICAgICBvbkNsaWNrPXtvbkV4cGFuZH1cbiAgICAgICAgZGF0YS1leHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICA+XG4gICAgICAgIDxQbHVzIC8+XG4gICAgICA8L1N0eWxlZEJ1dHRvbj5cbiAgICApO1xuICB9XG4gIGlmIChoaWRlQnlsaW5lKGVtYmVkRGF0YSkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ5bGluZUJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgZGF0YS1ieWxpbmUtYnV0dG9uPVwiXCJcbiAgICAgICAgYXJpYS1sYWJlbD17dChgbGljZW5zZS5pbWFnZXMuaXRlbUltYWdlLiR7YnlsaW5lSGlkZGVuID8gXCJleHBhbmRCeWxpbmVcIiA6IFwibWluaW1pemVCeWxpbmVcIn1gKX1cbiAgICAgICAgb25DbGljaz17b25IaWRlQnlsaW5lfVxuICAgICAgPlxuICAgICAgICB7YnlsaW5lSGlkZGVuID8gPENoZXZyb25Eb3duIC8+IDogPENoZXZyb25VcCAvPn1cbiAgICAgIDwvQnlsaW5lQnV0dG9uPlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbWFnZUVtYmVkO1xuIl19 */"));
186
- const StyledButton = /*#__PURE__*/_styled("button", {
187
- target: "ened8ka0",
188
- label: "StyledButton"
189
- })("display:flex;align-items:center;justify-content:center;cursor:pointer;position:absolute;padding:0;top:", spacing.small, ";right:", spacing.small, ";width:", spacing.normal, ";height:", spacing.normal, ";border:2px solid ", colors.white, ";transition:all 0.3s ease-out;color:", colors.white, ";background-color:", colors.brand.primary, ";border-radius:", misc.borderRadiusLarge, ";svg{transition:transform 0.4s ease-out;height:", spacing.nsmall, ";width:", spacing.nsmall, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkltYWdlRW1iZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRQa0MiLCJmaWxlIjoiSW1hZ2VFbWJlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMy1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbi8qKiBAanN4SW1wb3J0U291cmNlIEBlbW90aW9uL3JlYWN0ICovXG5pbXBvcnQgcGFyc2UgZnJvbSBcImh0bWwtcmVhY3QtcGFyc2VyXCI7XG5pbXBvcnQgeyBNb3VzZUV2ZW50SGFuZGxlciwgUmVhY3ROb2RlLCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgeyBjb2xvcnMsIG1pc2MsIHNwYWNpbmcgfSBmcm9tIFwiQG5kbGEvY29yZVwiO1xuaW1wb3J0IHsgUGx1cyB9IGZyb20gXCJAbmRsYS9pY29ucy9hY3Rpb25cIjtcbmltcG9ydCB7IENoZXZyb25Eb3duLCBDaGV2cm9uVXAgfSBmcm9tIFwiQG5kbGEvaWNvbnMvY29tbW9uXCI7XG5pbXBvcnQgeyBDT1BZUklHSFRFRCB9IGZyb20gXCJAbmRsYS9saWNlbnNlc1wiO1xuaW1wb3J0IHsgSW1hZ2VFbWJlZERhdGEsIEltYWdlTWV0YURhdGEgfSBmcm9tIFwiQG5kbGEvdHlwZXMtZW1iZWRcIjtcbmltcG9ydCBFbWJlZEVycm9yUGxhY2Vob2xkZXIgZnJvbSBcIi4vRW1iZWRFcnJvclBsYWNlaG9sZGVyXCI7XG5pbXBvcnQgeyBSZW5kZXJDb250ZXh0IH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IEZpZ3VyZSwgRmlndXJlVHlwZSB9IGZyb20gXCIuLi9GaWd1cmVcIjtcbmltcG9ydCBJbWFnZSBmcm9tIFwiLi4vSW1hZ2VcIjtcbmltcG9ydCB7IEVtYmVkQnlsaW5lIH0gZnJvbSBcIi4uL0xpY2Vuc2VCeWxpbmVcIjtcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgZW1iZWQ6IEltYWdlTWV0YURhdGE7XG4gIHByZXZpZXdBbHQ/OiBib29sZWFuO1xuICBpbkdyaWQ/OiBib29sZWFuO1xuICBsYW5nPzogc3RyaW5nO1xuICByZW5kZXJDb250ZXh0PzogUmVuZGVyQ29udGV4dDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMaWNlbnNlQ3JlZGl0cyA9IChjb3B5cmlnaHQ/OiB7XG4gIGNyZWF0b3JzPzogQXV0aG9yW107XG4gIHJpZ2h0c2hvbGRlcnM/OiBBdXRob3JbXTtcbiAgcHJvY2Vzc29ycz86IEF1dGhvcltdO1xufSkgPT4ge1xuICByZXR1cm4ge1xuICAgIGNyZWF0b3JzOiBjb3B5cmlnaHQ/LmNyZWF0b3JzID8/IFtdLFxuICAgIHJpZ2h0c2hvbGRlcnM6IGNvcHlyaWdodD8ucmlnaHRzaG9sZGVycyA/PyBbXSxcbiAgICBwcm9jZXNzb3JzOiBjb3B5cmlnaHQ/LnByb2Nlc3NvcnMgPz8gW10sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZXJyb3JTdmdTcmMgPSBgZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnIGZpbGw9JyUyMzhBODg4OCcgaGVpZ2h0PSc0MDAnIHZpZXdCb3g9JzAgMCAyNCAxMicgd2lkdGg9JzEwMCUyNScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogJTIzRUZGMEYyJyUzRSUzQ3BhdGggZD0nTTAgMGgyNHYyNEgwVjB6JyBmaWxsPSdub25lJy8lM0UlM0NwYXRoIHRyYW5zZm9ybT0nc2NhbGUoMC4zKSB0cmFuc2xhdGUoMjgsIDguNSknIGQ9J00xMSAxNWgydjJoLTJ6bTAtOGgydjZoLTJ6bS45OS01QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6Jy8lM0UlM0Mvc3ZnJTNFYDtcbmNvbnN0IGlzU21hbGwgPSAoc2l6ZT86IHN0cmluZyk6IHNpemUgaXMgXCJ4c21hbGxcIiB8IFwic21hbGxcIiA9PiBzaXplID09PSBcInhzbWFsbFwiIHx8IHNpemUgPT09IFwic21hbGxcIjtcblxuY29uc3QgaXNBbGlnbiA9IChhbGlnbj86IHN0cmluZyk6IGFsaWduIGlzIFwibGVmdFwiIHwgXCJyaWdodFwiID0+IGFsaWduID09PSBcImxlZnRcIiB8fCBhbGlnbiA9PT0gXCJyaWdodFwiO1xuXG5jb25zdCBnZXRGaWd1cmVUeXBlID0gKHNpemU/OiBzdHJpbmcsIGFsaWduPzogc3RyaW5nKTogRmlndXJlVHlwZSA9PiB7XG4gIGlmIChzaXplICYmIGlzU21hbGwoc2l6ZSkgJiYgYWxpZ24gJiYgaXNBbGlnbihhbGlnbikpIHtcbiAgICByZXR1cm4gYCR7c2l6ZX0tJHthbGlnbn1gO1xuICB9XG4gIGlmIChzaXplICYmIGlzU21hbGwoc2l6ZSkgJiYgIWFsaWduKSB7XG4gICAgcmV0dXJuIHNpemUgYXMgRmlndXJlVHlwZTtcbiAgfVxuICBpZiAoYWxpZ24gJiYgaXNBbGlnbihhbGlnbikpIHtcbiAgICByZXR1cm4gYWxpZ247XG4gIH1cbiAgcmV0dXJuIFwiZnVsbFwiO1xufTtcblxuY29uc3QgZ2V0U2l6ZXMgPSAoc2l6ZT86IHN0cmluZywgYWxpZ24/OiBzdHJpbmcpID0+IHtcbiAgaWYgKGFsaWduICYmIHNpemUgPT09IFwiZnVsbFwiKSB7XG4gICAgcmV0dXJuIFwiKG1pbi13aWR0aDogMTAyNHB4KSA1MTJweCwgKG1pbi13aWR0aDogNzY4cHgpIDM1MHB4LCAxMDB2d1wiO1xuICB9XG4gIGlmIChhbGlnbiAmJiBzaXplID09PSBcInNtYWxsXCIpIHtcbiAgICByZXR1cm4gXCIobWluLXdpZHRoOiAxMDI0cHgpIDM1MHB4LCAobWluLXdpZHRoOiA3NjhweCkgMTgwcHgsIDEwMHZ3XCI7XG4gIH1cbiAgaWYgKGFsaWduICYmIHNpemUgPT09IFwieHNtYWxsXCIpIHtcbiAgICByZXR1cm4gXCIobWluLXdpZHRoOiAxMDI0cHgpIDE4MHB4LCAobWluLXdpZHRoOiA3NjhweCkgMTgwcHgsIDEwMHZ3XCI7XG4gIH1cbiAgcmV0dXJuIFwiKG1pbi13aWR0aDogMTAyNHB4KSAxMDI0cHgsIDEwMHZ3XCI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9jYWxQb2ludCA9IChkYXRhOiBJbWFnZUVtYmVkRGF0YSkgPT4ge1xuICBjb25zdCBmb2NhbFggPSBOdW1iZXIucGFyc2VGbG9hdChkYXRhLmZvY2FsWCA/PyBcIlwiKTtcbiAgY29uc3QgZm9jYWxZID0gTnVtYmVyLnBhcnNlRmxvYXQoZGF0YS5mb2NhbFkgPz8gXCJcIik7XG4gIGlmICghTnVtYmVyLmlzTmFOKGZvY2FsWCkgJiYgIU51bWJlci5pc05hTihmb2NhbFkpKSB7XG4gICAgcmV0dXJuIHsgeDogZm9jYWxYLCB5OiBmb2NhbFkgfTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENyb3AgPSAoZGF0YTogSW1hZ2VFbWJlZERhdGEpID0+IHtcbiAgY29uc3QgbG93ZXJSaWdodFggPSBOdW1iZXIucGFyc2VGbG9hdChkYXRhLmxvd2VyUmlnaHRYID8/IFwiXCIpO1xuICBjb25zdCBsb3dlclJpZ2h0WSA9IE51bWJlci5wYXJzZUZsb2F0KGRhdGEubG93ZXJSaWdodFkgPz8gXCJcIik7XG4gIGNvbnN0IHVwcGVyTGVmdFggPSBOdW1iZXIucGFyc2VGbG9hdChkYXRhLnVwcGVyTGVmdFggPz8gXCJcIik7XG4gIGNvbnN0IHVwcGVyTGVmdFkgPSBOdW1iZXIucGFyc2VGbG9hdChkYXRhLnVwcGVyTGVmdFkgPz8gXCJcIik7XG4gIGlmIChcbiAgICAhTnVtYmVyLmlzTmFOKGxvd2VyUmlnaHRYKSAmJlxuICAgICFOdW1iZXIuaXNOYU4obG93ZXJSaWdodFkpICYmXG4gICAgIU51bWJlci5pc05hTih1cHBlckxlZnRYKSAmJlxuICAgICFOdW1iZXIuaXNOYU4odXBwZXJMZWZ0WSlcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0WDogbG93ZXJSaWdodFgsXG4gICAgICBzdGFydFk6IGxvd2VyUmlnaHRZLFxuICAgICAgZW5kWDogdXBwZXJMZWZ0WCxcbiAgICAgIGVuZFk6IHVwcGVyTGVmdFksXG4gICAgfTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZXhwYW5kZWRTaXplcyA9IFwiKG1pbi13aWR0aDogMTAyNHB4KSAxMDI0cHgsIDEwMHZ3XCI7XG5cbmNvbnN0IFN0eWxlZEZpZ3VyZSA9IHN0eWxlZChGaWd1cmUpYFxuICAmOmhvdmVyIHtcbiAgICBbZGF0YS1ieWxpbmUtYnV0dG9uXSB7XG4gICAgICBiYWNrZ3JvdW5kOiAke2NvbG9ycy53aGl0ZX07XG4gICAgfVxuICAgIGJ1dHRvbltkYXRhLWV4cGFuZGVkXSB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7XG4gICAgfVxuICB9XG4gIGJ1dHRvbltkYXRhLWV4cGFuZGVkPVwidHJ1ZVwiXSB7XG4gICAgc3ZnIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG4gICAgfVxuICB9XG4gICZbZGF0YS1mbG9hdD1cInJpZ2h0XCJdIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gIH1cbiAgJltkYXRhLWZsb2F0PVwibGVmdFwiXSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cbmA7XG5cbmNvbnN0IEltYWdlRW1iZWQgPSAoeyBlbWJlZCwgcHJldmlld0FsdCwgaW5HcmlkLCBsYW5nLCByZW5kZXJDb250ZXh0ID0gXCJhcnRpY2xlXCIsIGNoaWxkcmVuIH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IFtpc0J5bGluZUhpZGRlbiwgc2V0SXNCeWxpbmVIaWRkZW5dID0gdXNlU3RhdGUoaGlkZUJ5bGluZShlbWJlZC5lbWJlZERhdGEpKTtcbiAgY29uc3QgW2ltYWdlU2l6ZXMsIHNldEltYWdlU2l6ZXNdID0gdXNlU3RhdGU8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAvLyBGdWxsLXNpemUgZmlndXJlcyBhdXRvbWF0aWNhbGx5IGdldCBhIG1hcmdpbiBvZiB7c3BhY2luZy5ub3JtYWx9IG9uIGl0cyB5LWF4aXMgaWYgYSBmbG9hdCBpcyBub3Qgc2V0IChvciBpZiBmbG9hdCBpcyBhbiBlbXB0eSBzdHJpbmcpLlxuICAvLyBUaGlzIGFkZHMgc29tZSBtYXJnaW4gdG8gbm9ybWFsIGZpZ3VyZXMgd2l0aGluIGFuIGFydGljbGUsIGJ1dCBzaG91bGQgbm90IGhhcHBlbiBmb3IgZmlndXJlcyBpbiBhIGdyaWQuXG4gIGNvbnN0IFtmbG9hdEF0dHIsIHNldEZsb2F0QXR0cl0gPSB1c2VTdGF0ZTx7IFwiZGF0YS1mbG9hdFwiPzogc3RyaW5nIH0+KCgpID0+XG4gICAgaW5HcmlkICYmICFlbWJlZC5lbWJlZERhdGEuYWxpZ24gPyB7fSA6IHsgXCJkYXRhLWZsb2F0XCI6IGVtYmVkLmVtYmVkRGF0YS5hbGlnbiB9LFxuICApO1xuXG4gIGNvbnN0IHBhcnNlZERlc2NyaXB0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGVtYmVkLmVtYmVkRGF0YS5jYXB0aW9uIHx8IHJlbmRlckNvbnRleHQgPT09IFwiYXJ0aWNsZVwiKSB7XG4gICAgICByZXR1cm4gZW1iZWQuZW1iZWREYXRhLmNhcHRpb24gPyBwYXJzZShlbWJlZC5lbWJlZERhdGEuY2FwdGlvbikgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChlbWJlZC5zdGF0dXMgPT09IFwic3VjY2Vzc1wiICYmIGVtYmVkLmRhdGEuY2FwdGlvbi5jYXB0aW9uKSB7XG4gICAgICByZXR1cm4gcGFyc2UoZW1iZWQuZGF0YS5jYXB0aW9uLmNhcHRpb24pO1xuICAgIH1cbiAgfSwgW2VtYmVkLCByZW5kZXJDb250ZXh0XSk7XG5cbiAgaWYgKGVtYmVkLnN0YXR1cyA9PT0gXCJlcnJvclwiKSB7XG4gICAgY29uc3QgeyBhbGlnbiwgc2l6ZSB9ID0gZW1iZWQuZW1iZWREYXRhO1xuICAgIGNvbnN0IGZpZ3VyZVR5cGUgPSBnZXRGaWd1cmVUeXBlKHNpemUsIGFsaWduKTtcbiAgICByZXR1cm4gPEVtYmVkRXJyb3JQbGFjZWhvbGRlciB0eXBlPXtcImltYWdlXCJ9IGZpZ3VyZVR5cGU9e2ZpZ3VyZVR5cGV9IC8+O1xuICB9XG5cbiAgY29uc3QgeyBkYXRhLCBlbWJlZERhdGEgfSA9IGVtYmVkO1xuXG4gIGNvbnN0IGFsdFRleHQgPSBlbWJlZERhdGEuYWx0IHx8IFwiXCI7XG5cbiAgY29uc3QgZmlndXJlVHlwZSA9IGdldEZpZ3VyZVR5cGUoZW1iZWREYXRhLnNpemUsIGVtYmVkRGF0YS5hbGlnbik7XG4gIGNvbnN0IHNpemVzID0gZ2V0U2l6ZXMoZW1iZWREYXRhLnNpemUsIGVtYmVkRGF0YS5hbGlnbik7XG5cbiAgY29uc3QgZm9jYWxQb2ludCA9IGdldEZvY2FsUG9pbnQoZW1iZWREYXRhKTtcbiAgY29uc3QgY3JvcCA9IGdldENyb3AoZW1iZWREYXRhKTtcblxuICBjb25zdCBpc0NvcHlyaWdodGVkID0gZGF0YS5jb3B5cmlnaHQubGljZW5zZS5saWNlbnNlLnRvTG93ZXJDYXNlKCkgPT09IENPUFlSSUdIVEVEO1xuXG4gIGNvbnN0IHRvZ2dsZUltYWdlU2l6ZSA9ICgpID0+IHtcbiAgICBpZiAoIWltYWdlU2l6ZXMpIHtcbiAgICAgIHNldEltYWdlU2l6ZXMoZXhwYW5kZWRTaXplcyk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0RmxvYXRBdHRyKHt9KTtcbiAgICAgIH0sIDQwMCk7IC8vUmVtb3ZpbmcgdGhlIGZsb2F0IHBhcmFtZXRlciB0b28gcXVpY2tseSBjYXVzZXMgdGhlIGltYWdlIHRvIGJlIHJlc2l6ZWQgZnJvbSBsZWZ0IHJlZ2FyZGxlc3NcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SW1hZ2VTaXplcyh1bmRlZmluZWQpO1xuICAgICAgc2V0RmxvYXRBdHRyKHsgXCJkYXRhLWZsb2F0XCI6IGVtYmVkRGF0YS5hbGlnbiB9KTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRmlndXJlIHR5cGU9e2ltYWdlU2l6ZXMgPyB1bmRlZmluZWQgOiBmaWd1cmVUeXBlfSB7Li4uZmxvYXRBdHRyfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDxJbWFnZVxuICAgICAgICBmb2NhbFBvaW50PXtmb2NhbFBvaW50fVxuICAgICAgICBjb250ZW50VHlwZT17ZGF0YS5pbWFnZS5jb250ZW50VHlwZX1cbiAgICAgICAgY3JvcD17Y3JvcH1cbiAgICAgICAgc2l6ZXM9e2ltYWdlU2l6ZXMgPz8gc2l6ZXN9XG4gICAgICAgIGFsdD17YWx0VGV4dH1cbiAgICAgICAgc3JjPXtkYXRhLmltYWdlLmltYWdlVXJsfVxuICAgICAgICBib3JkZXI9e2VtYmVkRGF0YS5ib3JkZXJ9XG4gICAgICAgIG9uRXhwYW5kPXtpc0FsaWduKGVtYmVkRGF0YS5hbGlnbikgPyB0b2dnbGVJbWFnZVNpemUgOiB1bmRlZmluZWR9XG4gICAgICAgIGV4cGFuZGVkPXshIWltYWdlU2l6ZXN9XG4gICAgICAgIGV4cGFuZEJ1dHRvbj17XG4gICAgICAgICAgPEV4cGFuZEJ1dHRvblxuICAgICAgICAgICAgZW1iZWREYXRhPXtlbWJlZERhdGF9XG4gICAgICAgICAgICBleHBhbmRlZD17ISFpbWFnZVNpemVzfVxuICAgICAgICAgICAgYWxpZ249e2VtYmVkRGF0YS5hbGlnbn1cbiAgICAgICAgICAgIGJ5bGluZUhpZGRlbj17aXNCeWxpbmVIaWRkZW59XG4gICAgICAgICAgICBvbkV4cGFuZD17dG9nZ2xlSW1hZ2VTaXplfVxuICAgICAgICAgICAgb25IaWRlQnlsaW5lPXsoKSA9PiBzZXRJc0J5bGluZUhpZGRlbigocCkgPT4gIXApfVxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgICAgbGFuZz17bGFuZ31cbiAgICAgIC8+XG4gICAgICB7aXNCeWxpbmVIaWRkZW4gPyBudWxsIDogKFxuICAgICAgICA8RW1iZWRCeWxpbmVcbiAgICAgICAgICB0eXBlPVwiaW1hZ2VcIlxuICAgICAgICAgIGNvcHlyaWdodD17ZGF0YS5jb3B5cmlnaHR9XG4gICAgICAgICAgZGVzY3JpcHRpb249e3BhcnNlZERlc2NyaXB0aW9ufVxuICAgICAgICAgIHZpc2libGVBbHQ9e3ByZXZpZXdBbHQgPyBlbWJlZC5lbWJlZERhdGEuYWx0IDogXCJcIn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9TdHlsZWRGaWd1cmU+XG4gICk7XG59O1xuXG5jb25zdCBoaWRlQnlsaW5lID0gKGVtYmVkOiBJbWFnZUVtYmVkRGF0YSk6IGJvb2xlYW4gPT4ge1xuICByZXR1cm4gKCEhZW1iZWQuc2l6ZSAmJiBlbWJlZC5zaXplLmVuZHNXaXRoKFwiLWhpZGUtYnlsaW5lXCIpKSB8fCBlbWJlZC5oaWRlQnlsaW5lID09PSBcInRydWVcIjtcbn07XG5cbmludGVyZmFjZSBFeHBhbmRCdXR0b25Qcm9wcyB7XG4gIGVtYmVkRGF0YTogSW1hZ2VFbWJlZERhdGE7XG4gIGFsaWduPzogc3RyaW5nO1xuICBleHBhbmRlZDogYm9vbGVhbjtcbiAgYnlsaW5lSGlkZGVuOiBib29sZWFuO1xuICBvbkV4cGFuZDogTW91c2VFdmVudEhhbmRsZXI8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBvbkhpZGVCeWxpbmU6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxCdXR0b25FbGVtZW50Pjtcbn1cblxuY29uc3QgQnlsaW5lQnV0dG9uID0gc3R5bGVkLmJ1dHRvbmBcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDE7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIHBhZGRpbmc6ICR7c3BhY2luZy5zbWFsbH07XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2Utb3V0O1xuICBiYWNrZ3JvdW5kOiAke2NvbG9ycy5iYWNrZ3JvdW5kLmRlZmF1bHR9MjA7XG4gIGJvcmRlcjogMDtcblxuICBzdmcge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGVhc2Utb3V0O1xuICAgIHdpZHRoOiAke3NwYWNpbmcubm9ybWFsfTtcbiAgICBoZWlnaHQ6ICR7c3BhY2luZy5ub3JtYWx9O1xuICAgIGZpbGw6ICR7Y29sb3JzLmJyYW5kLnByaW1hcnl9O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRCdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHBhZGRpbmc6IDA7XG4gIHRvcDogJHtzcGFjaW5nLnNtYWxsfTtcbiAgcmlnaHQ6ICR7c3BhY2luZy5zbWFsbH07XG4gIHdpZHRoOiAke3NwYWNpbmcubm9ybWFsfTtcbiAgaGVpZ2h0OiAke3NwYWNpbmcubm9ybWFsfTtcbiAgYm9yZGVyOiAycHggc29saWQgJHtjb2xvcnMud2hpdGV9O1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLW91dDtcbiAgY29sb3I6ICR7Y29sb3JzLndoaXRlfTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcnMuYnJhbmQucHJpbWFyeX07XG4gIGJvcmRlci1yYWRpdXM6ICR7bWlzYy5ib3JkZXJSYWRpdXNMYXJnZX07XG4gIHN2ZyB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgZWFzZS1vdXQ7XG4gICAgaGVpZ2h0OiAke3NwYWNpbmcubnNtYWxsfTtcbiAgICB3aWR0aDogJHtzcGFjaW5nLm5zbWFsbH07XG4gIH1cbmA7XG5cbmNvbnN0IEV4cGFuZEJ1dHRvbiA9ICh7IGFsaWduLCBlbWJlZERhdGEsIGV4cGFuZGVkLCBieWxpbmVIaWRkZW4sIG9uRXhwYW5kLCBvbkhpZGVCeWxpbmUgfTogRXhwYW5kQnV0dG9uUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBpZiAoaXNBbGlnbihhbGlnbikpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgYXJpYS1sYWJlbD17dChgbGljZW5zZS5pbWFnZXMuaXRlbUltYWdlLnpvb20ke2V4cGFuZGVkID8gXCJPdXRcIiA6IFwiXCJ9SW1hZ2VCdXR0b25MYWJlbGApfVxuICAgICAgICBvbkNsaWNrPXtvbkV4cGFuZH1cbiAgICAgICAgZGF0YS1leHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICA+XG4gICAgICAgIDxQbHVzIC8+XG4gICAgICA8L1N0eWxlZEJ1dHRvbj5cbiAgICApO1xuICB9XG4gIGlmIChoaWRlQnlsaW5lKGVtYmVkRGF0YSkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ5bGluZUJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgZGF0YS1ieWxpbmUtYnV0dG9uPVwiXCJcbiAgICAgICAgYXJpYS1sYWJlbD17dChgbGljZW5zZS5pbWFnZXMuaXRlbUltYWdlLiR7YnlsaW5lSGlkZGVuID8gXCJleHBhbmRCeWxpbmVcIiA6IFwibWluaW1pemVCeWxpbmVcIn1gKX1cbiAgICAgICAgb25DbGljaz17b25IaWRlQnlsaW5lfVxuICAgICAgPlxuICAgICAgICB7YnlsaW5lSGlkZGVuID8gPENoZXZyb25Eb3duIC8+IDogPENoZXZyb25VcCAvPn1cbiAgICAgIDwvQnlsaW5lQnV0dG9uPlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbWFnZUVtYmVkO1xuIl19 */"));
190
- const ExpandButton = _ref2 => {
191
- let {
192
- align,
193
- embedData,
194
- expanded,
195
- bylineHidden,
196
- onExpand,
197
- onHideByline
198
- } = _ref2;
199
- const {
200
- t
201
- } = useTranslation();
202
- if (isAlign(align)) {
203
- return _jsx(StyledButton, {
204
- type: "button",
205
- "aria-label": t("license.images.itemImage.zoom".concat(expanded ? "Out" : "", "ImageButtonLabel")),
206
- onClick: onExpand,
207
- "data-expanded": expanded,
208
- children: _jsx(Plus, {})
209
- });
210
- }
211
- if (hideByline(embedData)) {
212
- return _jsx(BylineButton, {
213
- type: "button",
214
- "data-byline-button": "",
215
- "aria-label": t("license.images.itemImage.".concat(bylineHidden ? "expandByline" : "minimizeByline")),
216
- onClick: onHideByline,
217
- children: bylineHidden ? _jsx(ChevronDown, {}) : _jsx(ChevronUp, {})
218
- });
219
- }
220
- return null;
221
- };
222
267
  export default ImageEmbed;
@@ -29,29 +29,27 @@ const RelatedContentEmbed = _ref => {
29
29
  embedData
30
30
  } = embed;
31
31
  if (embedData.articleId && data) {
32
- var _data$resource, _ref2, _data$resource$paths$, _data$resource2, _data$resource3, _data$article$title$t, _data$article$title, _data$article$metaDes, _data$article$metaDes2;
33
- const typeId = (_data$resource = data.resource) === null || _data$resource === void 0 || (_data$resource = _data$resource.resourceTypes.find(rt => contentTypeMapping[rt.id])) === null || _data$resource === void 0 ? void 0 : _data$resource.id;
32
+ const typeId = data.resource?.resourceTypes.find(rt => contentTypeMapping[rt.id])?.id;
34
33
  const type = typeId ? contentTypeMapping[typeId] : undefined;
35
- const path = (_ref2 = (_data$resource$paths$ = (_data$resource2 = data.resource) === null || _data$resource2 === void 0 ? void 0 : _data$resource2.paths.find(p => p.split("/")[1] === (subject === null || subject === void 0 ? void 0 : subject.replace("urn:", "")))) !== null && _data$resource$paths$ !== void 0 ? _data$resource$paths$ : (_data$resource3 = data.resource) === null || _data$resource3 === void 0 ? void 0 : _data$resource3.path) !== null && _ref2 !== void 0 ? _ref2 : "/article/".concat(embedData.articleId);
34
+ const path = data.resource?.paths.find(p => p.split("/")[1] === subject?.replace("urn:", "")) ?? data.resource?.path ?? `/article/${embedData.articleId}`;
36
35
  return _jsx(RelatedArticle, {
37
- title: (_data$article$title$t = (_data$article$title = data.article.title) === null || _data$article$title === void 0 ? void 0 : _data$article$title.title) !== null && _data$article$title$t !== void 0 ? _data$article$title$t : "",
38
- introduction: (_data$article$metaDes = (_data$article$metaDes2 = data.article.metaDescription) === null || _data$article$metaDes2 === void 0 ? void 0 : _data$article$metaDes2.metaDescription) !== null && _data$article$metaDes !== void 0 ? _data$article$metaDes : "",
36
+ title: data.article.title?.title ?? "",
37
+ introduction: data.article.metaDescription?.metaDescription ?? "",
39
38
  target: isOembed ? "_blank" : undefined,
40
- to: "".concat(ndlaFrontendDomain !== null && ndlaFrontendDomain !== void 0 ? ndlaFrontendDomain : "").concat(path !== null && path !== void 0 ? path : ""),
39
+ to: `${ndlaFrontendDomain ?? ""}${path ?? ""}`,
41
40
  type: type
42
41
  });
43
42
  }
44
43
  if (typeof embedData.url === "string") {
45
- var _embedData$title, _embedData$url$match;
46
44
  return _jsx(RelatedArticle, {
47
- title: (_embedData$title = embedData.title) !== null && _embedData$title !== void 0 ? _embedData$title : "",
45
+ title: embedData.title ?? "",
48
46
  introduction: "",
49
47
  to: embedData.url,
50
48
  target: "_blank",
51
49
  type: "external",
52
- linkInfo: "".concat(t("related.linkInfo"), " ").concat(
50
+ linkInfo: `${t("related.linkInfo")} ${
53
51
  // Get domain name only from url
54
- punycode.toUnicode(((_embedData$url$match = embedData.url.match(/^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:/\n]+)/im)) === null || _embedData$url$match === void 0 ? void 0 : _embedData$url$match[1]) || embedData.url))
52
+ punycode.toUnicode(embedData.url.match(/^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:/\n]+)/im)?.[1] || embedData.url)}`
55
53
  });
56
54
  }
57
55
  return _jsx(_Fragment, {});
@@ -49,8 +49,8 @@ const UuDisclaimerEmbed = _ref => {
49
49
  embedData,
50
50
  data
51
51
  } = embed;
52
- const disclaimerLink = data !== null && data !== void 0 && data.disclaimerLink ? _jsxs(_Fragment, {
53
- children: [" ".concat(t("uuDisclaimer.alternative"), " "), _jsx(SafeLink, {
52
+ const disclaimerLink = data?.disclaimerLink ? _jsxs(_Fragment, {
53
+ children: [` ${t("uuDisclaimer.alternative")} `, _jsx(SafeLink, {
54
54
  to: data.disclaimerLink.href,
55
55
  target: "_blank",
56
56
  rel: "noopener noreferrer",
@@ -100,36 +100,36 @@ export const ConceptNotionV2 = /*#__PURE__*/forwardRef((_ref, ref) => {
100
100
  children: [showTitle && _jsxs("h1", {
101
101
  children: [isConcept && title.title, _jsx("small", {
102
102
  "data-is-concept": isConcept,
103
- children: t("searchPage.resultType.".concat(conceptType))
103
+ children: t(`searchPage.resultType.${conceptType}`)
104
104
  })]
105
105
  }), _jsxs(ButtonWrapper, {
106
106
  children: [headerButtons, closeButton]
107
107
  })]
108
108
  }), isConcept ? _jsxs(_Fragment, {
109
109
  children: [_jsxs(StyledNotionDialogContent, {
110
- children: [(visualElement === null || visualElement === void 0 ? void 0 : visualElement.resource) === "image" ? _jsx(ImageEmbed, {
110
+ children: [visualElement?.resource === "image" ? _jsx(ImageEmbed, {
111
111
  embed: visualElement,
112
112
  lang: lang
113
- }) : (visualElement === null || visualElement === void 0 ? void 0 : visualElement.resource) === "brightcove" ? _jsx(BrightcoveEmbed, {
113
+ }) : visualElement?.resource === "brightcove" ? _jsx(BrightcoveEmbed, {
114
114
  embed: visualElement
115
- }) : (visualElement === null || visualElement === void 0 ? void 0 : visualElement.resource) === "h5p" ? _jsx(H5pEmbed, {
115
+ }) : visualElement?.resource === "h5p" ? _jsx(H5pEmbed, {
116
116
  embed: visualElement
117
- }) : (visualElement === null || visualElement === void 0 ? void 0 : visualElement.resource) === "iframe" ? _jsx(IframeEmbed, {
117
+ }) : visualElement?.resource === "iframe" ? _jsx(IframeEmbed, {
118
118
  embed: visualElement
119
- }) : (visualElement === null || visualElement === void 0 ? void 0 : visualElement.resource) === "external" ? _jsx(ExternalEmbed, {
119
+ }) : visualElement?.resource === "external" ? _jsx(ExternalEmbed, {
120
120
  embed: visualElement
121
121
  }) : null, content && _jsx(NotionDialogText, {
122
122
  lang: lang,
123
123
  children: content
124
124
  })]
125
125
  }), tags && _jsxs(ListWrapper, {
126
- children: ["".concat(t("notions.tags"), ":"), _jsx(StyledList, {
126
+ children: [`${t("notions.tags")}:`, _jsx(StyledList, {
127
127
  children: tags.map((tag, index) => _jsx("li", {
128
128
  children: tag
129
129
  }, index))
130
130
  })]
131
131
  }), subjects && _jsxs(ListWrapper, {
132
- children: ["".concat(t("notions.usedIn"), ":"), _jsx(StyledList, {
132
+ children: [`${t("notions.usedIn")}:`, _jsx(StyledList, {
133
133
  children: subjects.map((subject, index) => _jsx("li", {
134
134
  children: subject
135
135
  }, index))
@@ -138,7 +138,7 @@ export const ConceptNotionV2 = /*#__PURE__*/forwardRef((_ref, ref) => {
138
138
  }) : _jsx(Gloss, {
139
139
  title: title,
140
140
  glossData: glossData,
141
- audio: (visualElement === null || visualElement === void 0 ? void 0 : visualElement.status) === "success" && visualElement.resource === "audio" ? {
141
+ audio: visualElement?.status === "success" && visualElement.resource === "audio" ? {
142
142
  src: visualElement.data.audioFile.url,
143
143
  title: visualElement.data.title.title
144
144
  } : undefined,
@@ -55,7 +55,7 @@ export const ErrorMessage = _ref => {
55
55
  }), messages.linksTitle && _jsx("h2", {
56
56
  children: messages.linksTitle
57
57
  }), messages.back && _jsx(SafeLink, {
58
- to: "/#".concat(encodeURI(messages.back)),
58
+ to: `/#${encodeURI(messages.back)}`,
59
59
  onClick: () => window.history.back(),
60
60
  children: messages.back
61
61
  }), messages.goToFrontPage && _jsx(MessageWrapper, {
@@ -62,7 +62,7 @@ const FactBox = /*#__PURE__*/forwardRef((_ref, ref) => {
62
62
  const onClick = useCallback(() => {
63
63
  const newOpen = !isOpen;
64
64
  setIsOpen(newOpen);
65
- onOpenChange === null || onOpenChange === void 0 || onOpenChange(newOpen);
65
+ onOpenChange?.(newOpen);
66
66
  }, [isOpen, onOpenChange]);
67
67
  return _jsxs(StyledAside, {
68
68
  ...rest,
@@ -73,7 +73,7 @@ const FactBox = /*#__PURE__*/forwardRef((_ref, ref) => {
73
73
  children: children
74
74
  }), _jsx(StyledIconButton, {
75
75
  onClick: onClick,
76
- "aria-label": t("factbox.".concat(isOpen ? "close" : "open")),
76
+ "aria-label": t(`factbox.${isOpen ? "close" : "open"}`),
77
77
  children: isOpen ? _jsx(ChevronUp, {}) : _jsx(ChevronDown, {})
78
78
  })]
79
79
  });
@@ -27,7 +27,7 @@ const File = _ref => {
27
27
  const {
28
28
  t
29
29
  } = useTranslation();
30
- const tooltip = "".concat(t("download"), " ").concat(url.split("/").pop());
30
+ const tooltip = `${t("download")} ${url.split("/").pop()}`;
31
31
  return _jsx(StyledFileItem, {
32
32
  children: _jsx(Format, {
33
33
  format: {
@@ -64,14 +64,14 @@ const Format = _ref => {
64
64
  isPrimary,
65
65
  isDeadLink
66
66
  } = _ref;
67
- const titleWithFormat = "".concat(title, " (").concat(format.fileType.toUpperCase(), ")");
67
+ const titleWithFormat = `${title} (${format.fileType.toUpperCase()})`;
68
68
  if (isDeadLink) {
69
69
  return _jsxs(StyledDeadLinkWrapper, {
70
70
  children: [_jsx(StyledDownload, {}), _jsx(StyledDeadLinkText, {
71
71
  element: "span",
72
72
  textStyle: "label-small",
73
73
  margin: "none",
74
- children: isPrimary ? titleWithFormat : "(".concat(format.fileType.toUpperCase(), ")")
74
+ children: isPrimary ? titleWithFormat : `(${format.fileType.toUpperCase()})`
75
75
  })]
76
76
  }, format.url);
77
77
  }
@@ -85,7 +85,7 @@ const Format = _ref => {
85
85
  element: "span",
86
86
  textStyle: "label-small",
87
87
  margin: "none",
88
- children: isPrimary ? titleWithFormat : "(".concat(format.fileType.toUpperCase(), ")")
88
+ children: isPrimary ? titleWithFormat : `(${format.fileType.toUpperCase()})`
89
89
  })
90
90
  })]
91
91
  }, format.url);