@ndla/ui 36.0.2 → 37.0.1

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 (174) hide show
  1. package/es/Article/Article.js +7 -13
  2. package/es/Article/ArticleByline.js +79 -123
  3. package/es/Article/ArticleFootNotes.js +16 -11
  4. package/es/AudioPlayer/AudioPlayer.js +33 -35
  5. package/es/AudioPlayer/initAudioPlayers.js +6 -1
  6. package/es/ContentTypeBadge/ContentTypeBadge.js +27 -6
  7. package/es/Embed/AudioEmbed.js +44 -188
  8. package/es/Embed/BrightcoveEmbed.js +32 -127
  9. package/es/Embed/ConceptEmbed.js +53 -75
  10. package/es/Embed/EmbedErrorPlaceholder.js +41 -0
  11. package/es/Embed/ExternalEmbed.js +5 -12
  12. package/es/Embed/H5pEmbed.js +5 -15
  13. package/es/Embed/IframeEmbed.js +4 -4
  14. package/es/Embed/ImageEmbed.js +41 -153
  15. package/es/Embed/RelatedContentEmbed.js +3 -3
  16. package/es/Embed/conceptComponents.js +62 -228
  17. package/es/Embed/types.js +1 -0
  18. package/es/KeyFigure/KeyFigure.js +57 -0
  19. package/es/{KeyPerformanceIndicator → KeyFigure}/index.js +1 -1
  20. package/es/LicenseByline/EmbedByline.js +33 -8
  21. package/es/LicenseByline/LicenseDescription.js +16 -14
  22. package/es/List/OrderedList.js +48 -0
  23. package/es/List/UnOrderedList.js +36 -0
  24. package/es/List/index.js +10 -0
  25. package/es/Navigation/NavigationBox.js +41 -48
  26. package/es/Navigation/NavigationHeading.js +18 -29
  27. package/es/Notion/Notion.js +5 -5
  28. package/es/Resource/ListResource.js +9 -9
  29. package/es/Resource/resourceComponents.js +12 -11
  30. package/es/Typography/Heading.js +38 -0
  31. package/es/Typography/index.js +9 -0
  32. package/es/all.css +1 -1
  33. package/es/index.js +4 -2
  34. package/es/locale/messages-en.js +6 -2
  35. package/es/locale/messages-nb.js +6 -2
  36. package/es/locale/messages-nn.js +6 -2
  37. package/es/locale/messages-se.js +6 -2
  38. package/es/locale/messages-sma.js +6 -2
  39. package/es/model/ContentType.js +7 -1
  40. package/lib/Article/Article.d.ts +1 -3
  41. package/lib/Article/Article.js +7 -13
  42. package/lib/Article/ArticleByline.d.ts +3 -5
  43. package/lib/Article/ArticleByline.js +83 -126
  44. package/lib/Article/ArticleFootNotes.js +16 -11
  45. package/lib/AudioPlayer/AudioPlayer.d.ts +1 -2
  46. package/lib/AudioPlayer/AudioPlayer.js +33 -36
  47. package/lib/AudioPlayer/initAudioPlayers.d.ts +1 -0
  48. package/lib/AudioPlayer/initAudioPlayers.js +9 -3
  49. package/lib/ContentTypeBadge/ContentTypeBadge.js +27 -6
  50. package/lib/Embed/AudioEmbed.d.ts +3 -2
  51. package/lib/Embed/AudioEmbed.js +53 -192
  52. package/lib/Embed/BrightcoveEmbed.d.ts +3 -1
  53. package/lib/Embed/BrightcoveEmbed.js +32 -126
  54. package/lib/Embed/ConceptEmbed.d.ts +7 -2
  55. package/lib/Embed/ConceptEmbed.js +51 -73
  56. package/lib/Embed/EmbedErrorPlaceholder.d.ts +17 -0
  57. package/lib/Embed/EmbedErrorPlaceholder.js +48 -0
  58. package/lib/Embed/ExternalEmbed.js +5 -11
  59. package/lib/Embed/H5pEmbed.js +5 -14
  60. package/lib/Embed/IframeEmbed.d.ts +2 -2
  61. package/lib/Embed/IframeEmbed.js +4 -4
  62. package/lib/Embed/ImageEmbed.d.ts +3 -10
  63. package/lib/Embed/ImageEmbed.js +48 -161
  64. package/lib/Embed/RelatedContentEmbed.js +3 -3
  65. package/lib/Embed/conceptComponents.d.ts +4 -2
  66. package/lib/Embed/conceptComponents.js +67 -231
  67. package/lib/Embed/index.d.ts +1 -0
  68. package/lib/Embed/types.d.ts +14 -0
  69. package/lib/Embed/types.js +5 -0
  70. package/lib/KeyFigure/KeyFigure.d.ts +10 -0
  71. package/lib/KeyFigure/KeyFigure.js +62 -0
  72. package/lib/KeyFigure/index.d.ts +1 -0
  73. package/lib/KeyFigure/index.js +13 -0
  74. package/lib/LicenseByline/EmbedByline.d.ts +10 -2
  75. package/lib/LicenseByline/EmbedByline.js +32 -7
  76. package/lib/LicenseByline/LicenseDescription.d.ts +3 -1
  77. package/lib/LicenseByline/LicenseDescription.js +14 -13
  78. package/lib/List/OrderedList.d.ts +15 -0
  79. package/lib/List/OrderedList.js +56 -0
  80. package/lib/List/UnOrderedList.d.ts +10 -0
  81. package/lib/List/UnOrderedList.js +43 -0
  82. package/lib/List/index.d.ts +9 -0
  83. package/lib/List/index.js +20 -0
  84. package/lib/Navigation/NavigationBox.js +40 -47
  85. package/lib/Navigation/NavigationHeading.js +17 -28
  86. package/lib/Notion/Notion.js +5 -5
  87. package/lib/Resource/ListResource.js +8 -8
  88. package/lib/Resource/resourceComponents.js +12 -11
  89. package/lib/Typography/Heading.d.ts +26 -0
  90. package/lib/Typography/Heading.js +45 -0
  91. package/lib/Typography/index.d.ts +8 -0
  92. package/lib/Typography/index.js +13 -0
  93. package/lib/all.css +1 -1
  94. package/lib/index.d.ts +4 -1
  95. package/lib/index.js +23 -3
  96. package/lib/locale/messages-en.d.ts +4 -0
  97. package/lib/locale/messages-en.js +6 -2
  98. package/lib/locale/messages-nb.d.ts +4 -0
  99. package/lib/locale/messages-nb.js +6 -2
  100. package/lib/locale/messages-nn.d.ts +4 -0
  101. package/lib/locale/messages-nn.js +6 -2
  102. package/lib/locale/messages-se.d.ts +4 -0
  103. package/lib/locale/messages-se.js +6 -2
  104. package/lib/locale/messages-sma.d.ts +4 -0
  105. package/lib/locale/messages-sma.js +6 -2
  106. package/lib/model/ContentType.d.ts +1 -0
  107. package/lib/model/ContentType.js +9 -2
  108. package/package.json +15 -15
  109. package/src/Article/Article.tsx +1 -8
  110. package/src/Article/ArticleByline.tsx +78 -127
  111. package/src/Article/ArticleFootNotes.tsx +33 -10
  112. package/src/Article/component.article.scss +1 -52
  113. package/src/Article/component.footnotes.scss +2 -2
  114. package/src/Aside/component.aside.scss +3 -3
  115. package/src/AudioPlayer/AudioPlayer.tsx +11 -24
  116. package/src/AudioPlayer/initAudioPlayers.tsx +7 -2
  117. package/src/ContentTypeBadge/ContentTypeBadge.tsx +29 -6
  118. package/src/ContentTypeBadge/component.content-type-badge.scss +9 -3
  119. package/src/Dialog/component.dialog.scss +4 -5
  120. package/src/Embed/AudioEmbed.stories.tsx +5 -3
  121. package/src/Embed/AudioEmbed.tsx +45 -192
  122. package/src/Embed/BrightcoveEmbed.stories.tsx +5 -1
  123. package/src/Embed/BrightcoveEmbed.tsx +24 -98
  124. package/src/Embed/ConceptEmbed.stories.tsx +5 -0
  125. package/src/Embed/ConceptEmbed.tsx +43 -54
  126. package/src/Embed/EmbedErrorPlaceholder.tsx +59 -0
  127. package/src/Embed/ExternalEmbed.stories.tsx +86 -0
  128. package/src/Embed/ExternalEmbed.tsx +3 -8
  129. package/src/Embed/H5pEmbed.stories.tsx +92 -0
  130. package/src/Embed/H5pEmbed.tsx +3 -11
  131. package/src/Embed/IframeEmbed.stories.tsx +130 -0
  132. package/src/Embed/IframeEmbed.tsx +3 -3
  133. package/src/Embed/ImageEmbed.stories.tsx +3 -1
  134. package/src/Embed/ImageEmbed.tsx +21 -116
  135. package/src/Embed/RelatedContentEmbed.tsx +3 -1
  136. package/src/Embed/conceptComponents.tsx +67 -257
  137. package/src/Embed/index.ts +1 -0
  138. package/src/Embed/types.ts +12 -0
  139. package/src/FactBox/component.factbox.scss +3 -3
  140. package/src/Figure/component.figure-license.scss +4 -4
  141. package/src/Figure/component.figure.scss +1 -1
  142. package/src/KeyFigure/KeyFigure.stories.tsx +36 -0
  143. package/src/{KeyPerformanceIndicator/KeyPerformanceIndicator.tsx → KeyFigure/KeyFigure.tsx} +9 -7
  144. package/src/{KeyPerformanceIndicator → KeyFigure}/index.ts +1 -1
  145. package/src/LicenseByline/EmbedByline.stories.tsx +1 -0
  146. package/src/LicenseByline/EmbedByline.tsx +57 -9
  147. package/src/LicenseByline/LicenseDescription.tsx +9 -3
  148. package/src/List/OrderedList.tsx +115 -0
  149. package/src/List/UnOrderedList.tsx +49 -0
  150. package/src/List/index.ts +10 -0
  151. package/src/MediaList/component.medialist.scss +2 -2
  152. package/src/Navigation/NavigationBox.tsx +10 -14
  153. package/src/Navigation/NavigationHeading.tsx +15 -24
  154. package/src/Notion/Notion.tsx +1 -1
  155. package/src/RelatedArticleList/component.related-articles.scss +3 -13
  156. package/src/Resource/ListResource.tsx +6 -2
  157. package/src/Resource/resourceComponents.tsx +4 -2
  158. package/src/Table/component.tables.scss +0 -46
  159. package/src/Translation/component.translation.scss +3 -5
  160. package/src/Typography/Heading.tsx +96 -0
  161. package/src/Typography/index.ts +9 -0
  162. package/src/index.ts +5 -1
  163. package/src/locale/messages-en.ts +4 -0
  164. package/src/locale/messages-nb.ts +4 -0
  165. package/src/locale/messages-nn.ts +4 -0
  166. package/src/locale/messages-se.ts +4 -0
  167. package/src/locale/messages-sma.ts +4 -0
  168. package/src/model/ContentType.ts +7 -0
  169. package/es/KeyPerformanceIndicator/KeyPerformanceIndicator.js +0 -57
  170. package/lib/KeyPerformanceIndicator/KeyPerformanceIndicator.d.ts +0 -8
  171. package/lib/KeyPerformanceIndicator/KeyPerformanceIndicator.js +0 -62
  172. package/lib/KeyPerformanceIndicator/index.d.ts +0 -1
  173. package/lib/KeyPerformanceIndicator/index.js +0 -13
  174. package/src/KeyPerformanceIndicator/KeyPerformanceIndicator.stories.tsx +0 -79
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright (c) 2023-present, NDLA.
3
+ *
4
+ * This source code is licensed under the GPLv3 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ import { ReactNode } from 'react';
9
+ import { FigureType } from '../Figure';
10
+ import { EmbedBylineErrorProps } from '../LicenseByline/EmbedByline';
11
+ interface Props {
12
+ type: EmbedBylineErrorProps['type'];
13
+ figureType?: FigureType;
14
+ children?: ReactNode;
15
+ }
16
+ declare const EmbedErrorPlaceholder: ({ type, children, figureType }: Props) => import("@emotion/react/jsx-runtime").JSX.Element;
17
+ export default EmbedErrorPlaceholder;
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _base = _interopRequireDefault(require("@emotion/styled/base"));
8
+ var _common = require("@ndla/icons/common");
9
+ var _core = require("@ndla/core");
10
+ var _Figure = require("../Figure");
11
+ var _LicenseByline = require("../LicenseByline");
12
+ var _jsxRuntime = require("@emotion/react/jsx-runtime");
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
14
+ /**
15
+ * Copyright (c) 2023-present, NDLA.
16
+ *
17
+ * This source code is licensed under the GPLv3 license found in the
18
+ * LICENSE file in the root directory of this source tree.
19
+ *
20
+ */
21
+
22
+ var ErrorPlaceholder = /*#__PURE__*/(0, _base["default"])("div", {
23
+ target: "etnx1j51",
24
+ label: "ErrorPlaceholder"
25
+ })("display:flex;align-items:center;justify-content:center;background-color:", _core.colors.brand.greyLighter, ";height:330px;svg{fill:", _core.colors.text.light, ";height:90%;width:90%;}&[data-embed-type='audio']{height:150px;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVtYmVkRXJyb3JQbGFjZWhvbGRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0JtQyIsImZpbGUiOiJFbWJlZEVycm9yUGxhY2Vob2xkZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMtcHJlc2VudCwgTkRMQS5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBHUEx2MyBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG5pbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBXYXJuaW5nT3V0bGluZSB9IGZyb20gJ0BuZGxhL2ljb25zL2NvbW1vbic7XG5pbXBvcnQgeyBjb2xvcnMsIHNwYWNpbmcgfSBmcm9tICdAbmRsYS9jb3JlJztcbmltcG9ydCB7IEZpZ3VyZSwgRmlndXJlVHlwZSB9IGZyb20gJy4uL0ZpZ3VyZSc7XG5pbXBvcnQgeyBFbWJlZEJ5bGluZSB9IGZyb20gJy4uL0xpY2Vuc2VCeWxpbmUnO1xuaW1wb3J0IHsgRW1iZWRCeWxpbmVFcnJvclByb3BzIH0gZnJvbSAnLi4vTGljZW5zZUJ5bGluZS9FbWJlZEJ5bGluZSc7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIHR5cGU6IEVtYmVkQnlsaW5lRXJyb3JQcm9wc1sndHlwZSddO1xuICBmaWd1cmVUeXBlPzogRmlndXJlVHlwZTtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59XG5cbmNvbnN0IEVycm9yUGxhY2Vob2xkZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcnMuYnJhbmQuZ3JleUxpZ2h0ZXJ9O1xuICBoZWlnaHQ6IDMzMHB4O1xuXG4gIHN2ZyB7XG4gICAgZmlsbDogJHtjb2xvcnMudGV4dC5saWdodH07XG4gICAgaGVpZ2h0OiA5MCU7XG4gICAgd2lkdGg6IDkwJTtcbiAgfVxuICAmW2RhdGEtZW1iZWQtdHlwZT0nYXVkaW8nXSB7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkRmlndXJlID0gc3R5bGVkKEZpZ3VyZSlgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogJHtzcGFjaW5nLnhzbWFsbH07XG5gO1xuXG5jb25zdCBFbWJlZEVycm9yUGxhY2Vob2xkZXIgPSAoeyB0eXBlLCBjaGlsZHJlbiwgZmlndXJlVHlwZSB9OiBQcm9wcykgPT4ge1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRGaWd1cmUgdHlwZT17ZmlndXJlVHlwZX0+XG4gICAgICB7Y2hpbGRyZW4gPz8gKFxuICAgICAgICA8RXJyb3JQbGFjZWhvbGRlciBkYXRhLWVtYmVkLXR5cGU9e3R5cGV9PlxuICAgICAgICAgIDxXYXJuaW5nT3V0bGluZSAvPlxuICAgICAgICA8L0Vycm9yUGxhY2Vob2xkZXI+XG4gICAgICApfVxuICAgICAgPEVtYmVkQnlsaW5lIGVycm9yIHR5cGU9e3R5cGV9IHRvcFJvdW5kZWQgYm90dG9tUm91bmRlZCAvPlxuICAgIDwvU3R5bGVkRmlndXJlPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRW1iZWRFcnJvclBsYWNlaG9sZGVyO1xuIl19 */"));
26
+ var StyledFigure = /*#__PURE__*/(0, _base["default"])(_Figure.Figure, {
27
+ target: "etnx1j50",
28
+ label: "StyledFigure"
29
+ })("display:flex;flex-direction:column;gap:", _core.spacing.xsmall, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVtYmVkRXJyb3JQbGFjZWhvbGRlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUNtQyIsImZpbGUiOiJFbWJlZEVycm9yUGxhY2Vob2xkZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMtcHJlc2VudCwgTkRMQS5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBHUEx2MyBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICpcbiAqL1xuXG5pbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBXYXJuaW5nT3V0bGluZSB9IGZyb20gJ0BuZGxhL2ljb25zL2NvbW1vbic7XG5pbXBvcnQgeyBjb2xvcnMsIHNwYWNpbmcgfSBmcm9tICdAbmRsYS9jb3JlJztcbmltcG9ydCB7IEZpZ3VyZSwgRmlndXJlVHlwZSB9IGZyb20gJy4uL0ZpZ3VyZSc7XG5pbXBvcnQgeyBFbWJlZEJ5bGluZSB9IGZyb20gJy4uL0xpY2Vuc2VCeWxpbmUnO1xuaW1wb3J0IHsgRW1iZWRCeWxpbmVFcnJvclByb3BzIH0gZnJvbSAnLi4vTGljZW5zZUJ5bGluZS9FbWJlZEJ5bGluZSc7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIHR5cGU6IEVtYmVkQnlsaW5lRXJyb3JQcm9wc1sndHlwZSddO1xuICBmaWd1cmVUeXBlPzogRmlndXJlVHlwZTtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59XG5cbmNvbnN0IEVycm9yUGxhY2Vob2xkZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvcnMuYnJhbmQuZ3JleUxpZ2h0ZXJ9O1xuICBoZWlnaHQ6IDMzMHB4O1xuXG4gIHN2ZyB7XG4gICAgZmlsbDogJHtjb2xvcnMudGV4dC5saWdodH07XG4gICAgaGVpZ2h0OiA5MCU7XG4gICAgd2lkdGg6IDkwJTtcbiAgfVxuICAmW2RhdGEtZW1iZWQtdHlwZT0nYXVkaW8nXSB7XG4gICAgaGVpZ2h0OiAxNTBweDtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkRmlndXJlID0gc3R5bGVkKEZpZ3VyZSlgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogJHtzcGFjaW5nLnhzbWFsbH07XG5gO1xuXG5jb25zdCBFbWJlZEVycm9yUGxhY2Vob2xkZXIgPSAoeyB0eXBlLCBjaGlsZHJlbiwgZmlndXJlVHlwZSB9OiBQcm9wcykgPT4ge1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRGaWd1cmUgdHlwZT17ZmlndXJlVHlwZX0+XG4gICAgICB7Y2hpbGRyZW4gPz8gKFxuICAgICAgICA8RXJyb3JQbGFjZWhvbGRlciBkYXRhLWVtYmVkLXR5cGU9e3R5cGV9PlxuICAgICAgICAgIDxXYXJuaW5nT3V0bGluZSAvPlxuICAgICAgICA8L0Vycm9yUGxhY2Vob2xkZXI+XG4gICAgICApfVxuICAgICAgPEVtYmVkQnlsaW5lIGVycm9yIHR5cGU9e3R5cGV9IHRvcFJvdW5kZWQgYm90dG9tUm91bmRlZCAvPlxuICAgIDwvU3R5bGVkRmlndXJlPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRW1iZWRFcnJvclBsYWNlaG9sZGVyO1xuIl19 */"));
30
+ var EmbedErrorPlaceholder = function EmbedErrorPlaceholder(_ref) {
31
+ var type = _ref.type,
32
+ children = _ref.children,
33
+ figureType = _ref.figureType;
34
+ return (0, _jsxRuntime.jsxs)(StyledFigure, {
35
+ type: figureType,
36
+ children: [children !== null && children !== void 0 ? children : (0, _jsxRuntime.jsx)(ErrorPlaceholder, {
37
+ "data-embed-type": type,
38
+ children: (0, _jsxRuntime.jsx)(_common.WarningOutline, {})
39
+ }), (0, _jsxRuntime.jsx)(_LicenseByline.EmbedByline, {
40
+ error: true,
41
+ type: type,
42
+ topRounded: true,
43
+ bottomRounded: true
44
+ })]
45
+ });
46
+ };
47
+ var _default = EmbedErrorPlaceholder;
48
+ exports["default"] = _default;
@@ -9,7 +9,7 @@ var _react = require("react");
9
9
  var _reactI18next = require("react-i18next");
10
10
  var _Figure = require("../Figure");
11
11
  var _ResourceBox = require("../ResourceBox");
12
- var _ImageEmbed = require("./ImageEmbed");
12
+ var _EmbedErrorPlaceholder = _interopRequireDefault(require("./EmbedErrorPlaceholder"));
13
13
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
15
  function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } /**
@@ -28,7 +28,7 @@ var StyledFigure = /*#__PURE__*/(0, _base["default"])("figure", {
28
28
  } : {
29
29
  name: "9y4sui",
30
30
  styles: "iframe{height:auto;}",
31
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkV4dGVybmFsRW1iZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFCa0MiLCJmaWxlIjoiRXh0ZXJuYWxFbWJlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMy1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IE9lbWJlZE1ldGFEYXRhIH0gZnJvbSAnQG5kbGEvdHlwZXMtZW1iZWQnO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IHsgRmlndXJlIH0gZnJvbSAnLi4vRmlndXJlJztcbmltcG9ydCB7IFJlc291cmNlQm94IH0gZnJvbSAnLi4vUmVzb3VyY2VCb3gnO1xuaW1wb3J0IHsgZXJyb3JTdmdTcmMgfSBmcm9tICcuL0ltYWdlRW1iZWQnO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICBlbWJlZDogT2VtYmVkTWV0YURhdGE7XG4gIGlzQ29uY2VwdD86IGJvb2xlYW47XG59XG5cbmNvbnN0IFN0eWxlZEZpZ3VyZSA9IHN0eWxlZC5maWd1cmVgXG4gIGlmcmFtZSB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG5gO1xuXG5jb25zdCBFeHRlcm5hbEVtYmVkID0gKHsgZW1iZWQsIGlzQ29uY2VwdCB9OiBQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGZpZ1JlZiA9IHVzZVJlZjxIVE1MRWxlbWVudD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpZnJhbWUgPSBmaWdSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcihgaWZyYW1lYCk7XG4gICAgaWYgKGlmcmFtZSkge1xuICAgICAgY29uc3QgW3dpZHRoLCBoZWlnaHRdID0gW3BhcnNlSW50KGlmcmFtZS53aWR0aCksIHBhcnNlSW50KGlmcmFtZS5oZWlnaHQpXTtcbiAgICAgIGlmcmFtZS5zdHlsZS5hc3BlY3RSYXRpbyA9IGAke3dpZHRoID8gd2lkdGggOiAxNn0vJHtoZWlnaHQgPyBoZWlnaHQgOiA5fWA7XG4gICAgICBpZnJhbWUud2lkdGggPSAnJztcbiAgICAgIGlmcmFtZS5oZWlnaHQgPSAnJztcbiAgICB9XG4gIH0sIFtdKTtcbiAgaWYgKGVtYmVkLnN0YXR1cyA9PT0gJ2Vycm9yJykge1xuICAgIHJldHVybiAoXG4gICAgICA8ZmlndXJlIGNsYXNzTmFtZT17aXNDb25jZXB0ID8gJycgOiAnYy1maWd1cmUnfT5cbiAgICAgICAgPGltZyBhbHQ9e3QoJ2V4dGVybmFsLmVycm9yJyl9IHNyYz17ZXJyb3JTdmdTcmN9IC8+XG4gICAgICAgIDxmaWdjYXB0aW9uPnt0KCdleHRlcm5hbC5lcnJvcicpfTwvZmlnY2FwdGlvbj5cbiAgICAgIDwvZmlndXJlPlxuICAgICk7XG4gIH1cblxuICBjb25zdCB7IGVtYmVkRGF0YSwgZGF0YSB9ID0gZW1iZWQ7XG5cbiAgaWYgKGVtYmVkRGF0YS50eXBlID09PSAnZnVsbHNjcmVlbicpIHtcbiAgICBjb25zdCBpbWFnZSA9IHsgc3JjOiBkYXRhLmlmcmFtZUltYWdlPy5pbWFnZVVybCA/PyAnJywgYWx0OiBkYXRhLmlmcmFtZUltYWdlPy5hbHR0ZXh0Py5hbHR0ZXh0ID8/ICcnIH07XG4gICAgcmV0dXJuIChcbiAgICAgIDxGaWd1cmUgdHlwZT1cImZ1bGxcIj5cbiAgICAgICAgPFJlc291cmNlQm94XG4gICAgICAgICAgaW1hZ2U9e2ltYWdlfVxuICAgICAgICAgIHRpdGxlPXtlbWJlZERhdGEudGl0bGUgPz8gJyd9XG4gICAgICAgICAgdXJsPXtlbWJlZERhdGEudXJsfVxuICAgICAgICAgIGNhcHRpb249e2VtYmVkRGF0YS5jYXB0aW9uID8/ICcnfVxuICAgICAgICAgIGJ1dHRvblRleHQ9e3QoJ2xpY2Vuc2Uub3RoZXIuaXRlbUltYWdlLmFyaWFMYWJlbCcpfVxuICAgICAgICAvPlxuICAgICAgPC9GaWd1cmU+XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGZ1bGxDb2x1bW5DbGFzcyA9IGlzQ29uY2VwdCA/ICdjLWZpZ3VyZS0tZnVsbC1jb2x1bW4nIDogJyc7XG4gIGNvbnN0IGNsYXNzZXMgPSBgYy1maWd1cmUgJHtmdWxsQ29sdW1uQ2xhc3N9IGMtZmlndXJlLS1yZXNpemVgO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEZpZ3VyZVxuICAgICAgcmVmPXtmaWdSZWZ9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzZXN9XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby11bmtub3duLXByb3BlcnR5XG4gICAgICByZXNpemVpZnJhbWU9XCJ0cnVlXCJcbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogZGF0YS5vZW1iZWQuaHRtbCA/PyAnJyB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRlcm5hbEVtYmVkO1xuIl19 */",
31
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkV4dGVybmFsRW1iZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFCa0MiLCJmaWxlIjoiRXh0ZXJuYWxFbWJlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMy1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IE9lbWJlZE1ldGFEYXRhIH0gZnJvbSAnQG5kbGEvdHlwZXMtZW1iZWQnO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IHsgRmlndXJlIH0gZnJvbSAnLi4vRmlndXJlJztcbmltcG9ydCB7IFJlc291cmNlQm94IH0gZnJvbSAnLi4vUmVzb3VyY2VCb3gnO1xuaW1wb3J0IEVtYmVkRXJyb3JQbGFjZWhvbGRlciBmcm9tICcuL0VtYmVkRXJyb3JQbGFjZWhvbGRlcic7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGVtYmVkOiBPZW1iZWRNZXRhRGF0YTtcbiAgaXNDb25jZXB0PzogYm9vbGVhbjtcbn1cblxuY29uc3QgU3R5bGVkRmlndXJlID0gc3R5bGVkLmZpZ3VyZWBcbiAgaWZyYW1lIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbmA7XG5cbmNvbnN0IEV4dGVybmFsRW1iZWQgPSAoeyBlbWJlZCwgaXNDb25jZXB0IH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZmlnUmVmID0gdXNlUmVmPEhUTUxFbGVtZW50PihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGlmcmFtZSA9IGZpZ1JlZi5jdXJyZW50Py5xdWVyeVNlbGVjdG9yKGBpZnJhbWVgKTtcbiAgICBpZiAoaWZyYW1lKSB7XG4gICAgICBjb25zdCBbd2lkdGgsIGhlaWdodF0gPSBbcGFyc2VJbnQoaWZyYW1lLndpZHRoKSwgcGFyc2VJbnQoaWZyYW1lLmhlaWdodCldO1xuICAgICAgaWZyYW1lLnN0eWxlLmFzcGVjdFJhdGlvID0gYCR7d2lkdGggPyB3aWR0aCA6IDE2fS8ke2hlaWdodCA/IGhlaWdodCA6IDl9YDtcbiAgICAgIGlmcmFtZS53aWR0aCA9ICcnO1xuICAgICAgaWZyYW1lLmhlaWdodCA9ICcnO1xuICAgIH1cbiAgfSwgW10pO1xuICBpZiAoZW1iZWQuc3RhdHVzID09PSAnZXJyb3InKSB7XG4gICAgcmV0dXJuIDxFbWJlZEVycm9yUGxhY2Vob2xkZXIgdHlwZT1cImV4dGVybmFsXCIgLz47XG4gIH1cblxuICBjb25zdCB7IGVtYmVkRGF0YSwgZGF0YSB9ID0gZW1iZWQ7XG5cbiAgaWYgKGVtYmVkRGF0YS50eXBlID09PSAnZnVsbHNjcmVlbicpIHtcbiAgICBjb25zdCBpbWFnZSA9IHsgc3JjOiBkYXRhLmlmcmFtZUltYWdlPy5pbWFnZS5pbWFnZVVybCA/PyAnJywgYWx0OiBkYXRhLmlmcmFtZUltYWdlPy5hbHR0ZXh0Py5hbHR0ZXh0ID8/ICcnIH07XG4gICAgcmV0dXJuIChcbiAgICAgIDxGaWd1cmUgdHlwZT1cImZ1bGxcIj5cbiAgICAgICAgPFJlc291cmNlQm94XG4gICAgICAgICAgaW1hZ2U9e2ltYWdlfVxuICAgICAgICAgIHRpdGxlPXtlbWJlZERhdGEudGl0bGUgPz8gJyd9XG4gICAgICAgICAgdXJsPXtlbWJlZERhdGEudXJsfVxuICAgICAgICAgIGNhcHRpb249e2VtYmVkRGF0YS5jYXB0aW9uID8/ICcnfVxuICAgICAgICAgIGJ1dHRvblRleHQ9e3QoJ2xpY2Vuc2Uub3RoZXIuaXRlbUltYWdlLmFyaWFMYWJlbCcpfVxuICAgICAgICAvPlxuICAgICAgPC9GaWd1cmU+XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGZ1bGxDb2x1bW5DbGFzcyA9IGlzQ29uY2VwdCA/ICdjLWZpZ3VyZS0tZnVsbC1jb2x1bW4nIDogJyc7XG4gIGNvbnN0IGNsYXNzZXMgPSBgYy1maWd1cmUgJHtmdWxsQ29sdW1uQ2xhc3N9IGMtZmlndXJlLS1yZXNpemVgO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEZpZ3VyZVxuICAgICAgcmVmPXtmaWdSZWZ9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzZXN9XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby11bmtub3duLXByb3BlcnR5XG4gICAgICByZXNpemVpZnJhbWU9XCJ0cnVlXCJcbiAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogZGF0YS5vZW1iZWQuaHRtbCA/PyAnJyB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRlcm5hbEVtYmVkO1xuIl19 */",
32
32
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
33
33
  });
34
34
  var ExternalEmbed = function ExternalEmbed(_ref) {
@@ -51,14 +51,8 @@ var ExternalEmbed = function ExternalEmbed(_ref) {
51
51
  }
52
52
  }, []);
53
53
  if (embed.status === 'error') {
54
- return (0, _jsxRuntime.jsxs)("figure", {
55
- className: isConcept ? '' : 'c-figure',
56
- children: [(0, _jsxRuntime.jsx)("img", {
57
- alt: t('external.error'),
58
- src: _ImageEmbed.errorSvgSrc
59
- }), (0, _jsxRuntime.jsx)("figcaption", {
60
- children: t('external.error')
61
- })]
54
+ return (0, _jsxRuntime.jsx)(_EmbedErrorPlaceholder["default"], {
55
+ type: "external"
62
56
  });
63
57
  }
64
58
  var embedData = embed.embedData,
@@ -66,7 +60,7 @@ var ExternalEmbed = function ExternalEmbed(_ref) {
66
60
  if (embedData.type === 'fullscreen') {
67
61
  var _data$iframeImage$ima, _data$iframeImage, _data$iframeImage$alt, _data$iframeImage2, _data$iframeImage2$al, _embedData$title, _embedData$caption;
68
62
  var image = {
69
- src: (_data$iframeImage$ima = (_data$iframeImage = data.iframeImage) === null || _data$iframeImage === void 0 ? void 0 : _data$iframeImage.imageUrl) !== null && _data$iframeImage$ima !== void 0 ? _data$iframeImage$ima : '',
63
+ src: (_data$iframeImage$ima = (_data$iframeImage = data.iframeImage) === null || _data$iframeImage === void 0 ? void 0 : _data$iframeImage.image.imageUrl) !== null && _data$iframeImage$ima !== void 0 ? _data$iframeImage$ima : '',
70
64
  alt: (_data$iframeImage$alt = (_data$iframeImage2 = data.iframeImage) === null || _data$iframeImage2 === void 0 ? void 0 : (_data$iframeImage2$al = _data$iframeImage2.alttext) === null || _data$iframeImage2$al === void 0 ? void 0 : _data$iframeImage2$al.alttext) !== null && _data$iframeImage$alt !== void 0 ? _data$iframeImage$alt : ''
71
65
  };
72
66
  return (0, _jsxRuntime.jsx)(_Figure.Figure, {
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports["default"] = void 0;
7
7
  var _base = _interopRequireDefault(require("@emotion/styled/base"));
8
8
  var _react = _interopRequireDefault(require("react"));
9
- var _reactI18next = require("react-i18next");
10
- var _ImageEmbed = require("./ImageEmbed");
9
+ var _EmbedErrorPlaceholder = _interopRequireDefault(require("./EmbedErrorPlaceholder"));
11
10
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
12
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
12
  function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } /**
@@ -26,30 +25,22 @@ var StyledFigure = /*#__PURE__*/(0, _base["default"])("figure", {
26
25
  } : {
27
26
  name: "9y4sui",
28
27
  styles: "iframe{height:auto;}",
29
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkg1cEVtYmVkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQmtDIiwiZmlsZSI6Ikg1cEVtYmVkLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLXByZXNlbnQsIE5ETEEuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMdjMgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgSDVwTWV0YURhdGEgfSBmcm9tICdAbmRsYS90eXBlcy1lbWJlZCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCB7IGVycm9yU3ZnU3JjIH0gZnJvbSAnLi9JbWFnZUVtYmVkJztcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgZW1iZWQ6IEg1cE1ldGFEYXRhO1xuICBpc0NvbmNlcHQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBTdHlsZWRGaWd1cmUgPSBzdHlsZWQuZmlndXJlYFxuICBpZnJhbWUge1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxuYDtcblxuY29uc3QgSDVwRW1iZWQgPSAoeyBlbWJlZCwgaXNDb25jZXB0IH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBpZiAoZW1iZWQuc3RhdHVzID09PSAnZXJyb3InKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxmaWd1cmUgY2xhc3NOYW1lPXtpc0NvbmNlcHQgPyAnJyA6ICdjLWZpZ3VyZSd9PlxuICAgICAgICA8aW1nIGFsdD17dCgnaDVwLmVycm9yJyl9IHNyYz17ZXJyb3JTdmdTcmN9IC8+XG4gICAgICAgIDxmaWdjYXB0aW9uPnt0KCdoNXAuZXJyb3InKX08L2ZpZ2NhcHRpb24+XG4gICAgICA8L2ZpZ3VyZT5cbiAgICApO1xuICB9XG4gIGNvbnN0IGZ1bGxDb2x1bW5DbGFzcyA9IGlzQ29uY2VwdCA/ICdjLWZpZ3VyZS0tZnVsbC1jb2x1bW4nIDogJyc7XG4gIGNvbnN0IGNsYXNzZXMgPSBgYy1maWd1cmUgJHtmdWxsQ29sdW1uQ2xhc3N9IGMtZmlndXJlLS1yZXNpemVgO1xuXG4gIGlmIChlbWJlZC5kYXRhLm9lbWJlZCkge1xuICAgIHJldHVybiA8U3R5bGVkRmlndXJlIGNsYXNzTmFtZT17Y2xhc3Nlc30gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiBlbWJlZC5kYXRhLm9lbWJlZC5odG1sID8/ICcnIH19IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRmlndXJlIGNsYXNzTmFtZT17Y2xhc3Nlc30+XG4gICAgICA8aWZyYW1lIHRpdGxlPXtlbWJlZC5lbWJlZERhdGEudXJsfSBhcmlhLWxhYmVsPXtlbWJlZC5lbWJlZERhdGEudXJsfSBzcmM9e2VtYmVkLmVtYmVkRGF0YS51cmx9IC8+XG4gICAgPC9TdHlsZWRGaWd1cmU+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBINXBFbWJlZDtcbiJdfQ== */",
28
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkg1cEVtYmVkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQmtDIiwiZmlsZSI6Ikg1cEVtYmVkLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLXByZXNlbnQsIE5ETEEuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMdjMgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgSDVwTWV0YURhdGEgfSBmcm9tICdAbmRsYS90eXBlcy1lbWJlZCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IEVtYmVkRXJyb3JQbGFjZWhvbGRlciBmcm9tICcuL0VtYmVkRXJyb3JQbGFjZWhvbGRlcic7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGVtYmVkOiBINXBNZXRhRGF0YTtcbiAgaXNDb25jZXB0PzogYm9vbGVhbjtcbn1cblxuY29uc3QgU3R5bGVkRmlndXJlID0gc3R5bGVkLmZpZ3VyZWBcbiAgaWZyYW1lIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbmA7XG5cbmNvbnN0IEg1cEVtYmVkID0gKHsgZW1iZWQsIGlzQ29uY2VwdCB9OiBQcm9wcykgPT4ge1xuICBpZiAoZW1iZWQuc3RhdHVzID09PSAnZXJyb3InKSB7XG4gICAgcmV0dXJuIDxFbWJlZEVycm9yUGxhY2Vob2xkZXIgdHlwZT1cImg1cFwiIC8+O1xuICB9XG4gIGNvbnN0IGZ1bGxDb2x1bW5DbGFzcyA9IGlzQ29uY2VwdCA/ICdjLWZpZ3VyZS0tZnVsbC1jb2x1bW4nIDogJyc7XG4gIGNvbnN0IGNsYXNzZXMgPSBgYy1maWd1cmUgJHtmdWxsQ29sdW1uQ2xhc3N9IGMtZmlndXJlLS1yZXNpemVgO1xuXG4gIGlmIChlbWJlZC5kYXRhLm9lbWJlZCkge1xuICAgIHJldHVybiA8ZmlndXJlIGNsYXNzTmFtZT17Y2xhc3Nlc30gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiBlbWJlZC5kYXRhLm9lbWJlZC5odG1sID8/ICcnIH19IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRmlndXJlIGNsYXNzTmFtZT17Y2xhc3Nlc30+XG4gICAgICA8aWZyYW1lIHRpdGxlPXtlbWJlZC5lbWJlZERhdGEudXJsfSBhcmlhLWxhYmVsPXtlbWJlZC5lbWJlZERhdGEudXJsfSBzcmM9e2VtYmVkLmVtYmVkRGF0YS51cmx9IC8+XG4gICAgPC9TdHlsZWRGaWd1cmU+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBINXBFbWJlZDtcbiJdfQ== */",
30
29
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
31
30
  });
32
31
  var H5pEmbed = function H5pEmbed(_ref) {
33
32
  var embed = _ref.embed,
34
33
  isConcept = _ref.isConcept;
35
- var _useTranslation = (0, _reactI18next.useTranslation)(),
36
- t = _useTranslation.t;
37
34
  if (embed.status === 'error') {
38
- return (0, _jsxRuntime.jsxs)("figure", {
39
- className: isConcept ? '' : 'c-figure',
40
- children: [(0, _jsxRuntime.jsx)("img", {
41
- alt: t('h5p.error'),
42
- src: _ImageEmbed.errorSvgSrc
43
- }), (0, _jsxRuntime.jsx)("figcaption", {
44
- children: t('h5p.error')
45
- })]
35
+ return (0, _jsxRuntime.jsx)(_EmbedErrorPlaceholder["default"], {
36
+ type: "h5p"
46
37
  });
47
38
  }
48
39
  var fullColumnClass = isConcept ? 'c-figure--full-column' : '';
49
40
  var classes = "c-figure ".concat(fullColumnClass, " c-figure--resize");
50
41
  if (embed.data.oembed) {
51
42
  var _embed$data$oembed$ht;
52
- return (0, _jsxRuntime.jsx)(StyledFigure, {
43
+ return (0, _jsxRuntime.jsx)("figure", {
53
44
  className: classes,
54
45
  dangerouslySetInnerHTML: {
55
46
  __html: (_embed$data$oembed$ht = embed.data.oembed.html) !== null && _embed$data$oembed$ht !== void 0 ? _embed$data$oembed$ht : ''
@@ -10,5 +10,5 @@ interface Props {
10
10
  embed: IframeMetaData;
11
11
  isConcept?: boolean;
12
12
  }
13
- declare const ExternalEmbed: ({ embed, isConcept }: Props) => import("@emotion/react/jsx-runtime").JSX.Element;
14
- export default ExternalEmbed;
13
+ declare const IframeEmbed: ({ embed, isConcept }: Props) => import("@emotion/react/jsx-runtime").JSX.Element;
14
+ export default IframeEmbed;
@@ -19,7 +19,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
19
19
  *
20
20
  */
21
21
 
22
- var ExternalEmbed = function ExternalEmbed(_ref) {
22
+ var IframeEmbed = function IframeEmbed(_ref) {
23
23
  var embed = _ref.embed,
24
24
  isConcept = _ref.isConcept;
25
25
  var _useTranslation = (0, _reactI18next.useTranslation)(),
@@ -38,10 +38,10 @@ var ExternalEmbed = function ExternalEmbed(_ref) {
38
38
  }
39
39
  }, []);
40
40
  if (embedData.type === 'fullscreen') {
41
- var _iframeImage$imageUrl, _iframeImage$alttext$, _iframeImage$alttext, _embedData$title, _embedData$caption;
41
+ var _iframeImage$image$im, _iframeImage$alttext$, _iframeImage$alttext, _embedData$title, _embedData$caption;
42
42
  var iframeImage = embed.status === 'success' ? embed.data.iframeImage : undefined;
43
43
  var image = {
44
- src: (_iframeImage$imageUrl = iframeImage === null || iframeImage === void 0 ? void 0 : iframeImage.imageUrl) !== null && _iframeImage$imageUrl !== void 0 ? _iframeImage$imageUrl : '',
44
+ src: (_iframeImage$image$im = iframeImage === null || iframeImage === void 0 ? void 0 : iframeImage.image.imageUrl) !== null && _iframeImage$image$im !== void 0 ? _iframeImage$image$im : '',
45
45
  alt: (_iframeImage$alttext$ = iframeImage === null || iframeImage === void 0 ? void 0 : (_iframeImage$alttext = iframeImage.alttext) === null || _iframeImage$alttext === void 0 ? void 0 : _iframeImage$alttext.alttext) !== null && _iframeImage$alttext$ !== void 0 ? _iframeImage$alttext$ : ''
46
46
  };
47
47
  return (0, _jsxRuntime.jsx)(_Figure.Figure, {
@@ -89,5 +89,5 @@ var ExternalEmbed = function ExternalEmbed(_ref) {
89
89
  })
90
90
  );
91
91
  };
92
- var _default = ExternalEmbed;
92
+ var _default = IframeEmbed;
93
93
  exports["default"] = _default;
@@ -6,11 +6,11 @@
6
6
  *
7
7
  */
8
8
  import { ImageMetaData } from '@ndla/types-embed';
9
- import { Copyright } from '../types';
9
+ import { HeartButtonType } from './types';
10
10
  interface Props {
11
11
  embed: ImageMetaData;
12
- articlePath?: string;
13
12
  previewAlt?: boolean;
13
+ heartButton?: HeartButtonType;
14
14
  }
15
15
  export interface Author {
16
16
  name: string;
@@ -26,12 +26,5 @@ export declare const getLicenseCredits: (copyright?: {
26
26
  processors: Author[];
27
27
  };
28
28
  export declare 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";
29
- declare const ImageEmbed: ({ embed, articlePath, previewAlt }: Props) => import("@emotion/react/jsx-runtime").JSX.Element;
30
- interface ImageLicenseButtonsProps {
31
- imageUrl: string;
32
- title?: string;
33
- articlePath?: string;
34
- copyright?: Partial<Copyright>;
35
- }
36
- export declare const ImageLicenseButtons: ({ imageUrl, title, articlePath, copyright }: ImageLicenseButtonsProps) => import("@emotion/react/jsx-runtime").JSX.Element | null;
29
+ declare const ImageEmbed: ({ embed, previewAlt, heartButton: HeartButton }: Props) => import("@emotion/react/jsx-runtime").JSX.Element;
37
30
  export default ImageEmbed;
@@ -4,41 +4,32 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.getLicenseCredits = exports.errorSvgSrc = exports["default"] = exports.ImageLicenseButtons = void 0;
8
- var _base = _interopRequireDefault(require("@emotion/styled/base"));
7
+ exports.getLicenseCredits = exports.errorSvgSrc = exports["default"] = void 0;
9
8
  var _isNumber = _interopRequireDefault(require("lodash/isNumber"));
10
- var _licenses = require("@ndla/licenses");
11
9
  var _reactI18next = require("react-i18next");
12
- var _modal = require("@ndla/modal");
13
- var _safelink = require("@ndla/safelink");
14
10
  var _react = require("react");
15
- var _button = require("@ndla/button");
16
11
  var _action = require("@ndla/icons/action");
17
12
  var _common = require("@ndla/icons/common");
18
13
  var _Figure = require("../Figure");
19
14
  var _Image = _interopRequireWildcard(require("../Image"));
20
- var _FigureLicenseDialogContent = require("../Figure/FigureLicenseDialogContent");
15
+ var _LicenseByline = require("../LicenseByline");
16
+ var _EmbedErrorPlaceholder = _interopRequireDefault(require("./EmbedErrorPlaceholder"));
21
17
  var _jsxRuntime = require("@emotion/react/jsx-runtime");
22
18
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
19
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
25
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
26
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
27
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
28
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
29
21
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
30
22
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
31
23
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
32
24
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
33
25
  function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
34
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
35
- function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; } /**
36
- * Copyright (c) 2023-present, NDLA.
37
- *
38
- * This source code is licensed under the GPLv3 license found in the
39
- * LICENSE file in the root directory of this source tree.
40
- *
41
- */
26
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /**
27
+ * Copyright (c) 2023-present, NDLA.
28
+ *
29
+ * This source code is licensed under the GPLv3 license found in the
30
+ * LICENSE file in the root directory of this source tree.
31
+ *
32
+ */
42
33
  var getLicenseCredits = function getLicenseCredits(copyright) {
43
34
  var _copyright$creators, _copyright$rightshold, _copyright$processors;
44
35
  return {
@@ -100,93 +91,54 @@ var getCrop = function getCrop(data) {
100
91
  }
101
92
  return undefined;
102
93
  };
103
- var StyledSpan = /*#__PURE__*/(0, _base["default"])("span", {
104
- target: "ened8ka0",
105
- label: "StyledSpan"
106
- })(process.env.NODE_ENV === "production" ? {
107
- name: "1t01il3",
108
- styles: "font-style:italic;color:grey"
109
- } : {
110
- name: "1t01il3",
111
- styles: "font-style:italic;color:grey",
112
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkltYWdlRW1iZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNHOEIiLCJmaWxlIjoiSW1hZ2VFbWJlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMy1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCBpc051bWJlciBmcm9tICdsb2Rhc2gvaXNOdW1iZXInO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgZmlndXJlQXBhN0NvcHlTdHJpbmcsIGdldEdyb3VwZWRDb250cmlidXRvckRlc2NyaXB0aW9uTGlzdCwgZ2V0TGljZW5zZUJ5QWJicmV2aWF0aW9uIH0gZnJvbSAnQG5kbGEvbGljZW5zZXMnO1xuaW1wb3J0IHsgSW1hZ2VFbWJlZERhdGEsIEltYWdlTWV0YURhdGEgfSBmcm9tICdAbmRsYS90eXBlcy1lbWJlZCc7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IHsgTW9kYWxWMiB9IGZyb20gJ0BuZGxhL21vZGFsJztcbmltcG9ydCB7IFNhZmVMaW5rQnV0dG9uIH0gZnJvbSAnQG5kbGEvc2FmZWxpbmsnO1xuaW1wb3J0IHsgTW91c2VFdmVudEhhbmRsZXIsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQnV0dG9uVjIsIENvcHlCdXR0b24gfSBmcm9tICdAbmRsYS9idXR0b24nO1xuaW1wb3J0IHsgRXhwYW5kVHdvQXJyb3dzIH0gZnJvbSAnQG5kbGEvaWNvbnMvYWN0aW9uJztcbmltcG9ydCB7IEFycm93Q29sbGFwc2UsIENoZXZyb25Eb3duLCBDaGV2cm9uVXAgfSBmcm9tICdAbmRsYS9pY29ucy9jb21tb24nO1xuaW1wb3J0IHsgRmlndXJlLCBGaWd1cmVDYXB0aW9uLCBGaWd1cmVUeXBlIH0gZnJvbSAnLi4vRmlndXJlJztcbmltcG9ydCBJbWFnZSwgeyBJbWFnZUxpbmsgfSBmcm9tICcuLi9JbWFnZSc7XG5pbXBvcnQgeyBGaWd1cmVMaWNlbnNlRGlhbG9nQ29udGVudCB9IGZyb20gJy4uL0ZpZ3VyZS9GaWd1cmVMaWNlbnNlRGlhbG9nQ29udGVudCc7XG5pbXBvcnQgeyBDb3B5cmlnaHQgfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGVtYmVkOiBJbWFnZU1ldGFEYXRhO1xuICBhcnRpY2xlUGF0aD86IHN0cmluZztcbiAgcHJldmlld0FsdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRMaWNlbnNlQ3JlZGl0cyA9IChjb3B5cmlnaHQ/OiB7XG4gIGNyZWF0b3JzPzogQXV0aG9yW107XG4gIHJpZ2h0c2hvbGRlcnM/OiBBdXRob3JbXTtcbiAgcHJvY2Vzc29ycz86IEF1dGhvcltdO1xufSkgPT4ge1xuICByZXR1cm4ge1xuICAgIGNyZWF0b3JzOiBjb3B5cmlnaHQ/LmNyZWF0b3JzID8/IFtdLFxuICAgIHJpZ2h0c2hvbGRlcnM6IGNvcHlyaWdodD8ucmlnaHRzaG9sZGVycyA/PyBbXSxcbiAgICBwcm9jZXNzb3JzOiBjb3B5cmlnaHQ/LnByb2Nlc3NvcnMgPz8gW10sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZXJyb3JTdmdTcmMgPSBgZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsJTNDc3ZnIGZpbGw9JyUyMzhBODg4OCcgaGVpZ2h0PSc0MDAnIHZpZXdCb3g9JzAgMCAyNCAxMicgd2lkdGg9JzEwMCUyNScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjogJTIzRUZGMEYyJyUzRSUzQ3BhdGggZD0nTTAgMGgyNHYyNEgwVjB6JyBmaWxsPSdub25lJy8lM0UlM0NwYXRoIHRyYW5zZm9ybT0nc2NhbGUoMC4zKSB0cmFuc2xhdGUoMjgsIDguNSknIGQ9J00xMSAxNWgydjJoLTJ6bTAtOGgydjZoLTJ6bS45OS01QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6Jy8lM0UlM0Mvc3ZnJTNFYDtcbmNvbnN0IGlzU21hbGwgPSAoc2l6ZT86IHN0cmluZyk6IHNpemUgaXMgJ3hzbWFsbCcgfCAnc21hbGwnID0+IHNpemUgPT09ICd4c21hbGwnIHx8IHNpemUgPT09ICdzbWFsbCc7XG5cbmNvbnN0IGlzQWxpZ24gPSAoYWxpZ24/OiBzdHJpbmcpOiBhbGlnbiBpcyAnbGVmdCcgfCAncmlnaHQnID0+IGFsaWduID09PSAnbGVmdCcgfHwgYWxpZ24gPT09ICdyaWdodCc7XG5cbmNvbnN0IGdldEZpZ3VyZVR5cGUgPSAoc2l6ZT86IHN0cmluZywgYWxpZ24/OiBzdHJpbmcpOiBGaWd1cmVUeXBlID0+IHtcbiAgaWYgKHNpemUgJiYgaXNTbWFsbChzaXplKSAmJiBhbGlnbiAmJiBpc0FsaWduKGFsaWduKSkge1xuICAgIHJldHVybiBgJHtzaXplfS0ke2FsaWdufWA7XG4gIH1cbiAgaWYgKHNpemUgJiYgaXNTbWFsbChzaXplKSAmJiAhYWxpZ24pIHtcbiAgICByZXR1cm4gc2l6ZSBhcyBGaWd1cmVUeXBlO1xuICB9XG4gIGlmIChhbGlnbiAmJiBpc0FsaWduKGFsaWduKSkge1xuICAgIHJldHVybiBhbGlnbjtcbiAgfVxuICByZXR1cm4gJ2Z1bGwnO1xufTtcblxuY29uc3QgZ2V0U2l6ZXMgPSAoc2l6ZT86IHN0cmluZywgYWxpZ24/OiBzdHJpbmcpID0+IHtcbiAgaWYgKGFsaWduICYmIHNpemUgPT09ICdmdWxsJykge1xuICAgIHJldHVybiAnKG1pbi13aWR0aDogMTAyNHB4KSA1MTJweCwgKG1pbi13aWR0aDogNzY4cHgpIDM1MHB4LCAxMDB2dyc7XG4gIH1cbiAgaWYgKGFsaWduICYmIHNpemUgPT09ICdzbWFsbCcpIHtcbiAgICByZXR1cm4gJyhtaW4td2lkdGg6IDEwMjRweCkgMzUwcHgsIChtaW4td2lkdGg6IDc2OHB4KSAxODBweCwgMTAwdncnO1xuICB9XG4gIGlmIChhbGlnbiAmJiBzaXplID09PSAneHNtYWxsJykge1xuICAgIHJldHVybiAnKG1pbi13aWR0aDogMTAyNHB4KSAxODBweCwgKG1pbi13aWR0aDogNzY4cHgpIDE4MHB4LCAxMDB2dyc7XG4gIH1cbiAgcmV0dXJuICcobWluLXdpZHRoOiAxMDI0cHgpIDEwMjRweCwgMTAwdncnO1xufTtcblxuY29uc3QgZ2V0Rm9jYWxQb2ludCA9IChkYXRhOiBJbWFnZUVtYmVkRGF0YSkgPT4ge1xuICBpZiAoaXNOdW1iZXIoZGF0YS5mb2NhbFgpICYmIGlzTnVtYmVyKGRhdGEuZm9jYWxZKSkge1xuICAgIHJldHVybiB7IHg6IGRhdGEuZm9jYWxYLCB5OiBkYXRhLmZvY2FsWSB9O1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBnZXRDcm9wID0gKGRhdGE6IEltYWdlRW1iZWREYXRhKSA9PiB7XG4gIGlmIChcbiAgICBpc051bWJlcihkYXRhLmxvd2VyUmlnaHRYKSAmJlxuICAgIGlzTnVtYmVyKGRhdGEubG93ZXJSaWdodFkpICYmXG4gICAgaXNOdW1iZXIoZGF0YS51cHBlckxlZnRYKSAmJlxuICAgIGlzTnVtYmVyKGRhdGEudXBwZXJMZWZ0WSlcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0WDogZGF0YS5sb3dlclJpZ2h0WCxcbiAgICAgIHN0YXJ0WTogZGF0YS5sb3dlclJpZ2h0WSxcbiAgICAgIGVuZFg6IGRhdGEudXBwZXJMZWZ0WCxcbiAgICAgIGVuZFk6IGRhdGEudXBwZXJMZWZ0WSxcbiAgICB9O1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBTdHlsZWRTcGFuID0gc3R5bGVkLnNwYW5gXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgY29sb3I6IGdyZXk7XG5gO1xuXG5jb25zdCBleHBhbmRlZFNpemVzID0gJyhtaW4td2lkdGg6IDEwMjRweCkgMTAyNHB4LCAxMDB2dyc7XG5cbmNvbnN0IEltYWdlRW1iZWQgPSAoeyBlbWJlZCwgYXJ0aWNsZVBhdGgsIHByZXZpZXdBbHQgfTogUHJvcHMpID0+IHtcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzQnlsaW5lSGlkZGVuLCBzZXRJc0J5bGluZUhpZGRlbl0gPSB1c2VTdGF0ZShoaWRlQnlsaW5lKGVtYmVkLmVtYmVkRGF0YS5zaXplKSk7XG4gIGNvbnN0IFtpbWFnZVNpemVzLCBzZXRJbWFnZVNpemVzXSA9IHVzZVN0YXRlPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBpZiAoZW1iZWQuc3RhdHVzID09PSAnZXJyb3InKSB7XG4gICAgY29uc3QgeyBhbGlnbiwgc2l6ZSB9ID0gZW1iZWQuZW1iZWREYXRhO1xuICAgIGNvbnN0IGZpZ3VyZVR5cGUgPSBnZXRGaWd1cmVUeXBlKHNpemUsIGFsaWduKTtcbiAgICByZXR1cm4gKFxuICAgICAgPEZpZ3VyZSB0eXBlPXtmaWd1cmVUeXBlfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjLWZpZ3VyZV9faW1nXCI+XG4gICAgICAgICAgPGltZyBhbHQ9e3QoJ2ltYWdlLmVycm9yLnVybCcpfSBzcmM9e2Vycm9yU3ZnU3JjfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZpZ2NhcHRpb24+e3QoJ2ltYWdlLmVycm9yLmNhcHRpb24nKX08L2ZpZ2NhcHRpb24+XG4gICAgICA8L0ZpZ3VyZT5cbiAgICApO1xuICB9XG5cbiAgY29uc3QgeyBkYXRhLCBlbWJlZERhdGEsIHNlcSB9ID0gZW1iZWQ7XG5cbiAgY29uc3QgYXV0aG9ycyA9IGdldExpY2Vuc2VDcmVkaXRzKGRhdGEuY29weXJpZ2h0KTtcblxuICBjb25zdCBhbHRUZXh0ID0gZW1iZWREYXRhLmFsdCB8fCAnJztcbiAgY29uc3QgY2FwdGlvbiA9IGVtYmVkRGF0YS5jYXB0aW9uIHx8ICcnO1xuICBjb25zdCBsaWNlbnNlID0gZ2V0TGljZW5zZUJ5QWJicmV2aWF0aW9uKGRhdGEuY29weXJpZ2h0LmxpY2Vuc2UubGljZW5zZSwgaTE4bi5sYW5ndWFnZSk7XG5cbiAgY29uc3QgZmlndXJlVHlwZSA9IGdldEZpZ3VyZVR5cGUoZW1iZWREYXRhLnNpemUsIGVtYmVkRGF0YS5hbGlnbik7XG4gIGNvbnN0IHNpemVzID0gZ2V0U2l6ZXMoZW1iZWREYXRhLnNpemUsIGVtYmVkRGF0YS5hbGlnbik7XG5cbiAgY29uc3QgZm9jYWxQb2ludCA9IGdldEZvY2FsUG9pbnQoZW1iZWREYXRhKTtcbiAgY29uc3QgY3JvcCA9IGdldENyb3AoZW1iZWREYXRhKTtcblxuICBjb25zdCBjb250cmlidXRvcnMgPSBnZXRHcm91cGVkQ29udHJpYnV0b3JEZXNjcmlwdGlvbkxpc3QoZGF0YS5jb3B5cmlnaHQsIGkxOG4ubGFuZ3VhZ2UpLm1hcCgoaXRlbSkgPT4gKHtcbiAgICBuYW1lOiBpdGVtLmRlc2NyaXB0aW9uLFxuICAgIHR5cGU6IGl0ZW0ubGFiZWwsXG4gIH0pKTtcblxuICBjb25zdCBmaWd1cmVJZCA9IGBmaWd1cmUtJHtzZXF9LSR7ZGF0YS5pZH1gO1xuXG4gIGNvbnN0IHsgY3JlYXRvcnMsIHJpZ2h0c2hvbGRlcnMsIHByb2Nlc3NvcnMgfSA9IGF1dGhvcnM7XG4gIGNvbnN0IGNhcHRpb25BdXRob3JzID0gY3JlYXRvcnMubGVuZ3RoIHx8IHJpZ2h0c2hvbGRlcnMubGVuZ3RoID8gWy4uLmNyZWF0b3JzLCAuLi5yaWdodHNob2xkZXJzXSA6IHByb2Nlc3NvcnM7XG4gIHJldHVybiAoXG4gICAgPEZpZ3VyZVxuICAgICAgaWQ9e2ZpZ3VyZUlkfVxuICAgICAgdHlwZT17aW1hZ2VTaXplcyA/IHVuZGVmaW5lZCA6IGZpZ3VyZVR5cGV9XG4gICAgICBjbGFzc05hbWU9e2ltYWdlU2l6ZXMgPyAnYy1maWd1cmUtLXJpZ2h0IGV4cGFuZGVkJyA6ICcnfVxuICAgID5cbiAgICAgIDxJbWFnZVdyYXBwZXIgc3JjPXtkYXRhLmltYWdlVXJsfSBjcm9wPXtjcm9wfSBzaXplPXtlbWJlZERhdGEuc2l6ZX0+XG4gICAgICAgIDxJbWFnZVxuICAgICAgICAgIGZvY2FsUG9pbnQ9e2ZvY2FsUG9pbnR9XG4gICAgICAgICAgY29udGVudFR5cGU9e2RhdGEuY29udGVudFR5cGV9XG4gICAgICAgICAgY3JvcD17Y3JvcH1cbiAgICAgICAgICBzaXplcz17aW1hZ2VTaXplcyA/PyBzaXplc31cbiAgICAgICAgICBhbHQ9e2FsdFRleHR9XG4gICAgICAgICAgc3JjPXtkYXRhLmltYWdlVXJsfVxuICAgICAgICAgIGV4cGFuZEJ1dHRvbj17XG4gICAgICAgICAgICA8RXhwYW5kQnV0dG9uXG4gICAgICAgICAgICAgIHNpemU9e2VtYmVkRGF0YS5zaXplfVxuICAgICAgICAgICAgICBleHBhbmRlZD17ISFpbWFnZVNpemVzfVxuICAgICAgICAgICAgICBieWxpbmVIaWRkZW49e2lzQnlsaW5lSGlkZGVufVxuICAgICAgICAgICAgICBvbkV4cGFuZD17KCkgPT4gc2V0SW1hZ2VTaXplcygocCkgPT4gKHAgPyB1bmRlZmluZWQgOiBleHBhbmRlZFNpemVzKSl9XG4gICAgICAgICAgICAgIG9uSGlkZUJ5bGluZT17KCkgPT4gc2V0SXNCeWxpbmVIaWRkZW4oKHApID0+ICFwKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgPC9JbWFnZVdyYXBwZXI+XG4gICAgICB7cHJldmlld0FsdCA/IDxTdHlsZWRTcGFuPntgQWx0OiAke2VtYmVkRGF0YS5hbHR9YH08L1N0eWxlZFNwYW4+IDogbnVsbH1cbiAgICAgIDxGaWd1cmVDYXB0aW9uXG4gICAgICAgIGhpZGVGaWdjYXB0aW9uPXtpc1NtYWxsKGVtYmVkRGF0YS5zaXplKSB8fCBpc0J5bGluZUhpZGRlbn1cbiAgICAgICAgZmlndXJlSWQ9e2ZpZ3VyZUlkfVxuICAgICAgICBpZD17ZmlndXJlSWR9XG4gICAgICAgIGNhcHRpb249e2NhcHRpb259XG4gICAgICAgIHJldXNlTGFiZWw9e3QoJ2ltYWdlLnJldXNlJyl9XG4gICAgICAgIG1vZGFsQnV0dG9uPXtcbiAgICAgICAgICA8QnV0dG9uVjIgc2hhcGU9XCJwaWxsXCIgdmFyaWFudD1cIm91dGxpbmVcIiBzaXplPVwic21hbGxcIiBvbkNsaWNrPXsoKSA9PiBzZXRJc09wZW4odHJ1ZSl9PlxuICAgICAgICAgICAge3QoJ2ltYWdlLnJldXNlJyl9XG4gICAgICAgICAgPC9CdXR0b25WMj5cbiAgICAgICAgfVxuICAgICAgICBsaWNlbnNlUmlnaHRzPXtsaWNlbnNlLnJpZ2h0c31cbiAgICAgICAgYXV0aG9ycz17Y2FwdGlvbkF1dGhvcnN9XG4gICAgICAgIGxvY2FsZT17aTE4bi5sYW5ndWFnZX1cbiAgICAgID5cbiAgICAgICAgPE1vZGFsVjIgY29udHJvbGxlZCBpc09wZW49e2lzT3Blbn0gb25DbG9zZT17KCkgPT4gc2V0SXNPcGVuKGZhbHNlKX0gbGFiZWxsZWRCeT1cImxpY2Vuc2UtZGlhbG9nLXJ1bGVzLWhlYWRpbmdcIj5cbiAgICAgICAgICB7KGNsb3NlKSA9PiAoXG4gICAgICAgICAgICA8RmlndXJlTGljZW5zZURpYWxvZ0NvbnRlbnRcbiAgICAgICAgICAgICAgdGl0bGU9e2RhdGEudGl0bGUudGl0bGV9XG4gICAgICAgICAgICAgIGxpY2Vuc2U9e2xpY2Vuc2V9XG4gICAgICAgICAgICAgIG9uQ2xvc2U9e2Nsb3NlfVxuICAgICAgICAgICAgICBhdXRob3JzPXtjb250cmlidXRvcnN9XG4gICAgICAgICAgICAgIG9yaWdpbj17ZGF0YS5jb3B5cmlnaHQub3JpZ2lufVxuICAgICAgICAgICAgICBsb2NhbGU9e2kxOG4ubGFuZ3VhZ2V9XG4gICAgICAgICAgICAgIHR5cGU9XCJpbWFnZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxJbWFnZUxpY2Vuc2VCdXR0b25zXG4gICAgICAgICAgICAgICAgYXJ0aWNsZVBhdGg9e2FydGljbGVQYXRofVxuICAgICAgICAgICAgICAgIHRpdGxlPXtkYXRhLnRpdGxlLnRpdGxlfVxuICAgICAgICAgICAgICAgIGltYWdlVXJsPXtkYXRhLmltYWdlVXJsfVxuICAgICAgICAgICAgICAgIGNvcHlyaWdodD17ZGF0YS5jb3B5cmlnaHR9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0ZpZ3VyZUxpY2Vuc2VEaWFsb2dDb250ZW50PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvTW9kYWxWMj5cbiAgICAgIDwvRmlndXJlQ2FwdGlvbj5cbiAgICA8L0ZpZ3VyZT5cbiAgKTtcbn07XG5cbmludGVyZmFjZSBJbWFnZVdyYXBwZXJQcm9wcyB7XG4gIHNyYzogc3RyaW5nO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICBjcm9wPzoge1xuICAgIHN0YXJ0WDogbnVtYmVyO1xuICAgIHN0YXJ0WTogbnVtYmVyO1xuICAgIGVuZFg6IG51bWJlcjtcbiAgICBlbmRZOiBudW1iZXI7XG4gIH07XG4gIHNpemU/OiBzdHJpbmc7XG59XG5jb25zdCBoaWRlQnlsaW5lID0gKHNpemU/OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuICEhc2l6ZSAmJiBzaXplLmVuZHNXaXRoKCctaGlkZS1ieWxpbmUnKTtcbn07XG5cbmludGVyZmFjZSBJbWFnZUxpY2Vuc2VCdXR0b25zUHJvcHMge1xuICBpbWFnZVVybDogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgYXJ0aWNsZVBhdGg/OiBzdHJpbmc7XG4gIGNvcHlyaWdodD86IFBhcnRpYWw8Q29weXJpZ2h0Pjtcbn1cblxuZXhwb3J0IGNvbnN0IEltYWdlTGljZW5zZUJ1dHRvbnMgPSAoeyBpbWFnZVVybCwgdGl0bGUsIGFydGljbGVQYXRoLCBjb3B5cmlnaHQgfTogSW1hZ2VMaWNlbnNlQnV0dG9uc1Byb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCwgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgaWYgKCFjb3B5cmlnaHQ/LmxpY2Vuc2U/LmxpY2Vuc2UgfHwgY29weXJpZ2h0Py5saWNlbnNlPy5saWNlbnNlID09PSAnQ09QWVJJR0hURUQnKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBjb3B5U3RyaW5nID0gZmlndXJlQXBhN0NvcHlTdHJpbmcoXG4gICAgdGl0bGUsXG4gICAgdW5kZWZpbmVkLFxuICAgIGltYWdlVXJsLFxuICAgIGFydGljbGVQYXRoLFxuICAgIGNvcHlyaWdodCxcbiAgICBjb3B5cmlnaHQ/LmxpY2Vuc2U/LmxpY2Vuc2UsXG4gICAgJycsXG4gICAgdCxcbiAgICBpMThuLmxhbmd1YWdlLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxDb3B5QnV0dG9uXG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lXCJcbiAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29weVN0cmluZyl9XG4gICAgICAgIGNvcHlOb2RlPXt0KCdsaWNlbnNlLmhhc0NvcGllZFRpdGxlJyl9XG4gICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiXG4gICAgICA+XG4gICAgICAgIHt0KCdsaWNlbnNlLmNvcHlUaXRsZScpfVxuICAgICAgPC9Db3B5QnV0dG9uPlxuICAgICAgPFNhZmVMaW5rQnV0dG9uIHRvPXtgJHtpbWFnZVVybH0/ZG93bmxvYWQ9dHJ1ZWB9IGRvd25sb2FkIHZhcmlhbnQ9XCJvdXRsaW5lXCI+XG4gICAgICAgIHt0KCdpbWFnZS5kb3dubG9hZCcpfVxuICAgICAgPC9TYWZlTGlua0J1dHRvbj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmNvbnN0IEltYWdlV3JhcHBlciA9ICh7IHNyYywgY3JvcCwgc2l6ZSwgY2hpbGRyZW4gfTogSW1hZ2VXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBpZiAoaXNTbWFsbChzaXplKSB8fCBoaWRlQnlsaW5lKHNpemUpKSB7XG4gICAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPjtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEltYWdlTGluayBzcmM9e3NyY30gY3JvcD17Y3JvcH0gYXJpYS1sYWJlbD17dCgnbGljZW5zZS5pbWFnZXMuaXRlbUltYWdlLmFyaWFMYWJlbCcpfT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0ltYWdlTGluaz5cbiAgKTtcbn07XG5cbmludGVyZmFjZSBFeHBhbmRCdXR0b25Qcm9wcyB7XG4gIHNpemU/OiBzdHJpbmc7XG4gIGV4cGFuZGVkOiBib29sZWFuO1xuICBieWxpbmVIaWRkZW46IGJvb2xlYW47XG4gIG9uRXhwYW5kOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIG9uSGlkZUJ5bGluZTogTW91c2VFdmVudEhhbmRsZXI8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xufVxuXG5jb25zdCBFeHBhbmRCdXR0b24gPSAoeyBzaXplLCBleHBhbmRlZCwgYnlsaW5lSGlkZGVuLCBvbkV4cGFuZCwgb25IaWRlQnlsaW5lIH06IEV4cGFuZEJ1dHRvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgaWYgKGlzU21hbGwoc2l6ZSkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPVwiYy1maWd1cmVfX2Z1bGxzY3JlZW4tYnRuXCJcbiAgICAgICAgYXJpYS1sYWJlbD17dChgbGljZW5zZS5pbWFnZXMuaXRlbUltYWdlLnpvb20ke2V4cGFuZGVkID8gJ091dCcgOiAnJ31JbWFnZUJ1dHRvbkxhYmVsYCl9XG4gICAgICAgIG9uQ2xpY2s9e29uRXhwYW5kfVxuICAgICAgPlxuICAgICAgICB7ZXhwYW5kZWQgPyA8QXJyb3dDb2xsYXBzZSAvPiA6IDxFeHBhbmRUd29BcnJvd3MgLz59XG4gICAgICA8L2J1dHRvbj5cbiAgICApO1xuICB9IGVsc2UgaWYgKGhpZGVCeWxpbmUoc2l6ZSkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPVwiYy1maWd1cmVfX3Nob3ctYnlsaW5lLWJ0blwiXG4gICAgICAgIGFyaWEtbGFiZWw9e3QoYGxpY2Vuc2UuaW1hZ2VzLml0ZW1JbWFnZS4ke2J5bGluZUhpZGRlbiA/ICdleHBhbmRCeWxpbmUnIDogJ21pbmltaXplQnlsaW5lJ31gKX1cbiAgICAgICAgb25DbGljaz17b25IaWRlQnlsaW5lfVxuICAgICAgPlxuICAgICAgICB7YnlsaW5lSGlkZGVuID8gPENoZXZyb25Eb3duIC8+IDogPENoZXZyb25VcCAvPn1cbiAgICAgIDwvYnV0dG9uPlxuICAgICk7XG4gIH0gZWxzZSByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEltYWdlRW1iZWQ7XG4iXX0= */",
113
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
114
- });
115
94
  var expandedSizes = '(min-width: 1024px) 1024px, 100vw';
116
95
  var ImageEmbed = function ImageEmbed(_ref) {
96
+ var _embedData$caption;
117
97
  var embed = _ref.embed,
118
- articlePath = _ref.articlePath,
119
- previewAlt = _ref.previewAlt;
120
- var _useState = (0, _react.useState)(false),
98
+ previewAlt = _ref.previewAlt,
99
+ HeartButton = _ref.heartButton;
100
+ var _useState = (0, _react.useState)(hideByline(embed.embedData.size)),
121
101
  _useState2 = _slicedToArray(_useState, 2),
122
- isOpen = _useState2[0],
123
- setIsOpen = _useState2[1];
124
- var _useState3 = (0, _react.useState)(hideByline(embed.embedData.size)),
102
+ isBylineHidden = _useState2[0],
103
+ setIsBylineHidden = _useState2[1];
104
+ var _useState3 = (0, _react.useState)(undefined),
125
105
  _useState4 = _slicedToArray(_useState3, 2),
126
- isBylineHidden = _useState4[0],
127
- setIsBylineHidden = _useState4[1];
128
- var _useState5 = (0, _react.useState)(undefined),
129
- _useState6 = _slicedToArray(_useState5, 2),
130
- imageSizes = _useState6[0],
131
- setImageSizes = _useState6[1];
132
- var _useTranslation = (0, _reactI18next.useTranslation)(),
133
- t = _useTranslation.t,
134
- i18n = _useTranslation.i18n;
106
+ imageSizes = _useState4[0],
107
+ setImageSizes = _useState4[1];
135
108
  if (embed.status === 'error') {
136
109
  var _embed$embedData = embed.embedData,
137
110
  align = _embed$embedData.align,
138
111
  size = _embed$embedData.size;
139
112
  var _figureType = getFigureType(size, align);
140
- return (0, _jsxRuntime.jsxs)(_Figure.Figure, {
141
- type: _figureType,
142
- children: [(0, _jsxRuntime.jsx)("div", {
143
- className: "c-figure__img",
144
- children: (0, _jsxRuntime.jsx)("img", {
145
- alt: t('image.error.url'),
146
- src: errorSvgSrc
147
- })
148
- }), (0, _jsxRuntime.jsx)("figcaption", {
149
- children: t('image.error.caption')
150
- })]
113
+ return (0, _jsxRuntime.jsx)(_EmbedErrorPlaceholder["default"], {
114
+ type: 'image',
115
+ figureType: _figureType
151
116
  });
152
117
  }
153
118
  var data = embed.data,
154
119
  embedData = embed.embedData,
155
120
  seq = embed.seq;
156
- var authors = getLicenseCredits(data.copyright);
157
121
  var altText = embedData.alt || '';
158
- var caption = embedData.caption || '';
159
- var license = (0, _licenses.getLicenseByAbbreviation)(data.copyright.license.license, i18n.language);
160
122
  var figureType = getFigureType(embedData.size, embedData.align);
161
123
  var sizes = getSizes(embedData.size, embedData.align);
162
124
  var focalPoint = getFocalPoint(embedData);
163
125
  var crop = getCrop(embedData);
164
- var contributors = (0, _licenses.getGroupedContributorDescriptionList)(data.copyright, i18n.language).map(function (item) {
165
- return {
166
- name: item.description,
167
- type: item.label
168
- };
169
- });
170
126
  var figureId = "figure-".concat(seq, "-").concat(data.id);
171
- var creators = authors.creators,
172
- rightsholders = authors.rightsholders,
173
- processors = authors.processors;
174
- var captionAuthors = creators.length || rightsholders.length ? [].concat(_toConsumableArray(creators), _toConsumableArray(rightsholders)) : processors;
175
127
  return (0, _jsxRuntime.jsxs)(_Figure.Figure, {
176
128
  id: figureId,
177
129
  type: imageSizes ? undefined : figureType,
178
130
  className: imageSizes ? 'c-figure--right expanded' : '',
179
131
  children: [(0, _jsxRuntime.jsx)(ImageWrapper, {
180
- src: data.imageUrl,
132
+ src: data.image.imageUrl,
181
133
  crop: crop,
182
134
  size: embedData.size,
183
135
  children: (0, _jsxRuntime.jsx)(_Image["default"], {
184
136
  focalPoint: focalPoint,
185
- contentType: data.contentType,
137
+ contentType: data.image.contentType,
186
138
  crop: crop,
187
139
  sizes: imageSizes !== null && imageSizes !== void 0 ? imageSizes : sizes,
188
140
  alt: altText,
189
- src: data.imageUrl,
141
+ src: data.image.imageUrl,
190
142
  expandButton: (0, _jsxRuntime.jsx)(ExpandButton, {
191
143
  size: embedData.size,
192
144
  expanded: !!imageSizes,
@@ -203,50 +155,14 @@ var ImageEmbed = function ImageEmbed(_ref) {
203
155
  }
204
156
  })
205
157
  })
206
- }), previewAlt ? (0, _jsxRuntime.jsx)(StyledSpan, {
207
- children: "Alt: ".concat(embedData.alt)
208
- }) : null, (0, _jsxRuntime.jsx)(_Figure.FigureCaption, {
209
- hideFigcaption: isSmall(embedData.size) || isBylineHidden,
210
- figureId: figureId,
211
- id: figureId,
212
- caption: caption,
213
- reuseLabel: t('image.reuse'),
214
- modalButton: (0, _jsxRuntime.jsx)(_button.ButtonV2, {
215
- shape: "pill",
216
- variant: "outline",
217
- size: "small",
218
- onClick: function onClick() {
219
- return setIsOpen(true);
220
- },
221
- children: t('image.reuse')
222
- }),
223
- licenseRights: license.rights,
224
- authors: captionAuthors,
225
- locale: i18n.language,
226
- children: (0, _jsxRuntime.jsx)(_modal.ModalV2, {
227
- controlled: true,
228
- isOpen: isOpen,
229
- onClose: function onClose() {
230
- return setIsOpen(false);
231
- },
232
- labelledBy: "license-dialog-rules-heading",
233
- children: function children(close) {
234
- return (0, _jsxRuntime.jsx)(_FigureLicenseDialogContent.FigureLicenseDialogContent, {
235
- title: data.title.title,
236
- license: license,
237
- onClose: close,
238
- authors: contributors,
239
- origin: data.copyright.origin,
240
- locale: i18n.language,
241
- type: "image",
242
- children: (0, _jsxRuntime.jsx)(ImageLicenseButtons, {
243
- articlePath: articlePath,
244
- title: data.title.title,
245
- imageUrl: data.imageUrl,
246
- copyright: data.copyright
247
- })
248
- });
249
- }
158
+ }), isBylineHidden || isSmall(embedData.size) && !imageSizes ? null : (0, _jsxRuntime.jsx)(_LicenseByline.EmbedByline, {
159
+ type: "image",
160
+ copyright: data.copyright,
161
+ description: (_embedData$caption = embedData.caption) !== null && _embedData$caption !== void 0 ? _embedData$caption : data.caption.caption,
162
+ bottomRounded: true,
163
+ visibleAlt: previewAlt ? embed.embedData.alt : '',
164
+ children: HeartButton && (0, _jsxRuntime.jsx)(HeartButton, {
165
+ embed: embed
250
166
  })
251
167
  })]
252
168
  });
@@ -254,42 +170,13 @@ var ImageEmbed = function ImageEmbed(_ref) {
254
170
  var hideByline = function hideByline(size) {
255
171
  return !!size && size.endsWith('-hide-byline');
256
172
  };
257
- var ImageLicenseButtons = function ImageLicenseButtons(_ref2) {
258
- var _copyright$license, _copyright$license2, _copyright$license3;
259
- var imageUrl = _ref2.imageUrl,
260
- title = _ref2.title,
261
- articlePath = _ref2.articlePath,
262
- copyright = _ref2.copyright;
263
- var _useTranslation2 = (0, _reactI18next.useTranslation)(),
264
- t = _useTranslation2.t,
265
- i18n = _useTranslation2.i18n;
266
- if (!(copyright !== null && copyright !== void 0 && (_copyright$license = copyright.license) !== null && _copyright$license !== void 0 && _copyright$license.license) || (copyright === null || copyright === void 0 ? void 0 : (_copyright$license2 = copyright.license) === null || _copyright$license2 === void 0 ? void 0 : _copyright$license2.license) === 'COPYRIGHTED') return null;
267
- var copyString = (0, _licenses.figureApa7CopyString)(title, undefined, imageUrl, articlePath, copyright, copyright === null || copyright === void 0 ? void 0 : (_copyright$license3 = copyright.license) === null || _copyright$license3 === void 0 ? void 0 : _copyright$license3.license, '', t, i18n.language);
268
- return (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
269
- children: [(0, _jsxRuntime.jsx)(_button.CopyButton, {
270
- variant: "outline",
271
- onClick: function onClick() {
272
- return navigator.clipboard.writeText(copyString);
273
- },
274
- copyNode: t('license.hasCopiedTitle'),
275
- "aria-live": "assertive",
276
- children: t('license.copyTitle')
277
- }), (0, _jsxRuntime.jsx)(_safelink.SafeLinkButton, {
278
- to: "".concat(imageUrl, "?download=true"),
279
- download: true,
280
- variant: "outline",
281
- children: t('image.download')
282
- })]
283
- });
284
- };
285
- exports.ImageLicenseButtons = ImageLicenseButtons;
286
- var ImageWrapper = function ImageWrapper(_ref3) {
287
- var src = _ref3.src,
288
- crop = _ref3.crop,
289
- size = _ref3.size,
290
- children = _ref3.children;
291
- var _useTranslation3 = (0, _reactI18next.useTranslation)(),
292
- t = _useTranslation3.t;
173
+ var ImageWrapper = function ImageWrapper(_ref2) {
174
+ var src = _ref2.src,
175
+ crop = _ref2.crop,
176
+ size = _ref2.size,
177
+ children = _ref2.children;
178
+ var _useTranslation = (0, _reactI18next.useTranslation)(),
179
+ t = _useTranslation.t;
293
180
  if (isSmall(size) || hideByline(size)) {
294
181
  return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
295
182
  children: children
@@ -302,14 +189,14 @@ var ImageWrapper = function ImageWrapper(_ref3) {
302
189
  children: children
303
190
  });
304
191
  };
305
- var ExpandButton = function ExpandButton(_ref4) {
306
- var size = _ref4.size,
307
- expanded = _ref4.expanded,
308
- bylineHidden = _ref4.bylineHidden,
309
- onExpand = _ref4.onExpand,
310
- onHideByline = _ref4.onHideByline;
311
- var _useTranslation4 = (0, _reactI18next.useTranslation)(),
312
- t = _useTranslation4.t;
192
+ var ExpandButton = function ExpandButton(_ref3) {
193
+ var size = _ref3.size,
194
+ expanded = _ref3.expanded,
195
+ bylineHidden = _ref3.bylineHidden,
196
+ onExpand = _ref3.onExpand,
197
+ onHideByline = _ref3.onHideByline;
198
+ var _useTranslation2 = (0, _reactI18next.useTranslation)(),
199
+ t = _useTranslation2.t;
313
200
  if (isSmall(size)) {
314
201
  return (0, _jsxRuntime.jsx)("button", {
315
202
  type: "button",
@@ -29,14 +29,14 @@ var RelatedContentEmbed = function RelatedContentEmbed(_ref) {
29
29
  var data = embed.data,
30
30
  embedData = embed.embedData;
31
31
  if (embedData.articleId && data) {
32
- var _data$resource, _data$resource$resour, _data$resource$paths$, _data$resource2, _data$resource3, _data$article$title$t, _data$article$title, _data$article$metaDes, _data$article$metaDes2;
32
+ var _data$resource, _data$resource$resour, _ref2, _data$resource$paths$, _data$resource2, _data$resource3, _data$article$title$t, _data$article$title, _data$article$metaDes, _data$article$metaDes2;
33
33
  var typeId = (_data$resource = data.resource) === null || _data$resource === void 0 ? void 0 : (_data$resource$resour = _data$resource.resourceTypes.find(function (rt) {
34
34
  return _ContentType.contentTypeMapping[rt.id];
35
35
  })) === null || _data$resource$resour === void 0 ? void 0 : _data$resource$resour.id;
36
36
  var type = typeId ? _ContentType.contentTypeMapping[typeId] : undefined;
37
- var path = (_data$resource$paths$ = (_data$resource2 = data.resource) === null || _data$resource2 === void 0 ? void 0 : _data$resource2.paths.find(function (p) {
37
+ var path = (_ref2 = (_data$resource$paths$ = (_data$resource2 = data.resource) === null || _data$resource2 === void 0 ? void 0 : _data$resource2.paths.find(function (p) {
38
38
  return p.split('/')[1] === (subject === null || subject === void 0 ? void 0 : subject.replace('urn:', ''));
39
- })) !== null && _data$resource$paths$ !== void 0 ? _data$resource$paths$ : (_data$resource3 = data.resource) === null || _data$resource3 === void 0 ? void 0 : _data$resource3.path;
39
+ })) !== 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);
40
40
  return (0, _jsxRuntime.jsx)(_RelatedArticleV.RelatedArticleV2, {
41
41
  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 : '',
42
42
  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 : '',
@@ -8,10 +8,10 @@
8
8
  import { ReactNode, RefAttributes } from 'react';
9
9
  import { ConceptVisualElementMeta } from '@ndla/types-embed';
10
10
  import { Copyright } from '../types';
11
+ import { HeartButtonType } from '.';
11
12
  export interface ConceptNotionData {
12
13
  title: string;
13
14
  content?: string;
14
- articlePath?: string;
15
15
  metaImage?: {
16
16
  url?: string;
17
17
  alt?: string;
@@ -27,6 +27,8 @@ interface ConceptNotionProps extends RefAttributes<HTMLDivElement>, ConceptNotio
27
27
  inPopover?: boolean;
28
28
  tags?: string[];
29
29
  subjects?: string[];
30
+ heartButton?: HeartButtonType;
31
+ conceptHeartButton?: ReactNode;
30
32
  }
31
- export declare const ConceptNotionV2: import("react").ForwardRefExoticComponent<Pick<ConceptNotionProps, "content" | "source" | "title" | "key" | "className" | "tags" | "articlePath" | "previewAlt" | "copyright" | "visualElement" | "closeButton" | "inPopover" | "subjects" | "metaImage"> & RefAttributes<HTMLDivElement>>;
33
+ export declare const ConceptNotionV2: import("react").ForwardRefExoticComponent<Pick<ConceptNotionProps, "content" | "source" | "title" | "key" | "className" | "tags" | "copyright" | "previewAlt" | "heartButton" | "visualElement" | "closeButton" | "inPopover" | "subjects" | "conceptHeartButton" | "metaImage"> & RefAttributes<HTMLDivElement>>;
32
34
  export {};