@ndla/ui 34.6.1 → 34.6.3

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 (153) hide show
  1. package/es/Article/Article.js +11 -6
  2. package/es/Aside/Aside.js +5 -2
  3. package/es/CopyParagraphButton/CopyParagraphButtonV2.js +85 -0
  4. package/es/CopyParagraphButton/index.js +2 -1
  5. package/es/Embed/AudioEmbed.js +254 -0
  6. package/es/Embed/BrightcoveEmbed.js +250 -0
  7. package/es/Embed/ConceptEmbed.js +358 -0
  8. package/es/Embed/ConceptListEmbed.js +71 -0
  9. package/es/Embed/ContentLinkEmbed.js +42 -0
  10. package/es/Embed/ExternalEmbed.js +91 -0
  11. package/es/Embed/FootnoteEmbed.js +32 -0
  12. package/es/Embed/H5pEmbed.js +87 -0
  13. package/es/Embed/IframeEmbed.js +83 -0
  14. package/es/Embed/ImageEmbed.js +322 -0
  15. package/es/Embed/RelatedContentEmbed.js +58 -0
  16. package/es/Embed/UnknownEmbed.js +27 -0
  17. package/es/Embed/conceptComponents.js +282 -0
  18. package/es/Embed/index.js +21 -0
  19. package/es/FactBox/FactBoxV2.js +90 -0
  20. package/es/FactBox/index.js +1 -0
  21. package/es/Figure/Figure.js +8 -5
  22. package/es/Figure/FigureLicenseDialogContent.js +72 -0
  23. package/es/FileList/FileListV2.js +47 -0
  24. package/es/FileList/FileV2.js +34 -0
  25. package/es/FileList/PdfFile.js +25 -0
  26. package/es/FileList/index.js +3 -0
  27. package/es/Notion/Notion.js +5 -5
  28. package/es/Notion/NotionVisualElement.js +2 -2
  29. package/es/RelatedArticleList/RelatedArticleV2.js +101 -0
  30. package/es/RelatedArticleList/index.js +2 -1
  31. package/es/Table/Table.js +95 -8
  32. package/es/all.css +1 -1
  33. package/es/index.js +5 -4
  34. package/es/locale/messages-en.js +11 -1
  35. package/es/locale/messages-nb.js +11 -1
  36. package/es/locale/messages-nn.js +11 -1
  37. package/es/locale/messages-se.js +11 -1
  38. package/es/locale/messages-sma.js +11 -1
  39. package/lib/Article/Article.d.ts +2 -1
  40. package/lib/Article/Article.js +11 -6
  41. package/lib/Aside/Aside.d.ts +2 -1
  42. package/lib/Aside/Aside.js +5 -2
  43. package/lib/CopyParagraphButton/CopyParagraphButtonV2.d.ts +14 -0
  44. package/lib/CopyParagraphButton/CopyParagraphButtonV2.js +84 -0
  45. package/lib/CopyParagraphButton/index.d.ts +2 -1
  46. package/lib/CopyParagraphButton/index.js +7 -0
  47. package/lib/Embed/AudioEmbed.d.ts +20 -0
  48. package/lib/Embed/AudioEmbed.js +252 -0
  49. package/lib/Embed/BrightcoveEmbed.d.ts +16 -0
  50. package/lib/Embed/BrightcoveEmbed.js +250 -0
  51. package/lib/Embed/ConceptEmbed.d.ts +19 -0
  52. package/lib/Embed/ConceptEmbed.js +358 -0
  53. package/lib/Embed/ConceptListEmbed.d.ts +13 -0
  54. package/lib/Embed/ConceptListEmbed.js +70 -0
  55. package/lib/Embed/ContentLinkEmbed.d.ts +14 -0
  56. package/lib/Embed/ContentLinkEmbed.js +50 -0
  57. package/lib/Embed/ExternalEmbed.d.ts +14 -0
  58. package/lib/Embed/ExternalEmbed.js +90 -0
  59. package/lib/Embed/FootnoteEmbed.d.ts +13 -0
  60. package/lib/Embed/FootnoteEmbed.js +39 -0
  61. package/lib/Embed/H5pEmbed.d.ts +14 -0
  62. package/lib/Embed/H5pEmbed.js +86 -0
  63. package/lib/Embed/IframeEmbed.d.ts +14 -0
  64. package/lib/Embed/IframeEmbed.js +91 -0
  65. package/lib/Embed/ImageEmbed.d.ts +37 -0
  66. package/lib/Embed/ImageEmbed.js +326 -0
  67. package/lib/Embed/RelatedContentEmbed.d.ts +16 -0
  68. package/lib/Embed/RelatedContentEmbed.js +64 -0
  69. package/lib/Embed/UnknownEmbed.d.ts +13 -0
  70. package/lib/Embed/UnknownEmbed.js +35 -0
  71. package/lib/Embed/conceptComponents.d.ts +32 -0
  72. package/lib/Embed/conceptComponents.js +280 -0
  73. package/lib/Embed/index.d.ts +20 -0
  74. package/lib/Embed/index.js +97 -0
  75. package/lib/FactBox/FactBoxV2.d.ts +13 -0
  76. package/lib/FactBox/FactBoxV2.js +92 -0
  77. package/lib/FactBox/index.d.ts +1 -0
  78. package/lib/FactBox/index.js +7 -0
  79. package/lib/Figure/Figure.d.ts +5 -2
  80. package/lib/Figure/Figure.js +8 -5
  81. package/lib/Figure/FigureLicenseDialogContent.d.ts +22 -0
  82. package/lib/Figure/FigureLicenseDialogContent.js +71 -0
  83. package/lib/FileList/FileListV2.d.ts +13 -0
  84. package/lib/FileList/FileListV2.js +46 -0
  85. package/lib/FileList/FileV2.d.ts +16 -0
  86. package/lib/FileList/FileV2.js +42 -0
  87. package/lib/FileList/PdfFile.d.ts +13 -0
  88. package/lib/FileList/PdfFile.js +31 -0
  89. package/lib/FileList/index.d.ts +3 -0
  90. package/lib/FileList/index.js +21 -0
  91. package/lib/Notion/Notion.js +5 -5
  92. package/lib/Notion/NotionVisualElement.d.ts +1 -1
  93. package/lib/Notion/NotionVisualElement.js +2 -2
  94. package/lib/RelatedArticleList/RelatedArticleV2.d.ts +25 -0
  95. package/lib/RelatedArticleList/RelatedArticleV2.js +101 -0
  96. package/lib/RelatedArticleList/index.d.ts +2 -1
  97. package/lib/RelatedArticleList/index.js +7 -0
  98. package/lib/Table/Table.js +98 -8
  99. package/lib/all.css +1 -1
  100. package/lib/index.d.ts +5 -4
  101. package/lib/index.js +117 -2
  102. package/lib/locale/messages-en.d.ts +10 -0
  103. package/lib/locale/messages-en.js +11 -1
  104. package/lib/locale/messages-nb.d.ts +10 -0
  105. package/lib/locale/messages-nb.js +11 -1
  106. package/lib/locale/messages-nn.d.ts +10 -0
  107. package/lib/locale/messages-nn.js +11 -1
  108. package/lib/locale/messages-se.d.ts +10 -0
  109. package/lib/locale/messages-se.js +11 -1
  110. package/lib/locale/messages-sma.d.ts +10 -0
  111. package/lib/locale/messages-sma.js +11 -1
  112. package/lib/types.d.ts +1 -1
  113. package/package.json +16 -12
  114. package/src/Article/Article.tsx +8 -3
  115. package/src/Aside/Aside.tsx +9 -1
  116. package/src/Aside/component.aside.scss +3 -0
  117. package/src/CopyParagraphButton/CopyParagraphButtonV2.tsx +84 -0
  118. package/src/CopyParagraphButton/index.tsx +2 -1
  119. package/src/Embed/AudioEmbed.tsx +249 -0
  120. package/src/Embed/BrightcoveEmbed.tsx +203 -0
  121. package/src/Embed/ConceptEmbed.tsx +408 -0
  122. package/src/Embed/ConceptListEmbed.tsx +64 -0
  123. package/src/Embed/ContentLinkEmbed.tsx +41 -0
  124. package/src/Embed/ExternalEmbed.tsx +80 -0
  125. package/src/Embed/FootnoteEmbed.tsx +30 -0
  126. package/src/Embed/H5pEmbed.tsx +74 -0
  127. package/src/Embed/IframeEmbed.tsx +84 -0
  128. package/src/Embed/ImageEmbed.tsx +314 -0
  129. package/src/Embed/RelatedContentEmbed.tsx +62 -0
  130. package/src/Embed/UnknownEmbed.tsx +27 -0
  131. package/src/Embed/conceptComponents.tsx +393 -0
  132. package/src/Embed/index.ts +21 -0
  133. package/src/FactBox/FactBoxV2.tsx +56 -0
  134. package/src/FactBox/index.ts +2 -0
  135. package/src/Figure/Figure.tsx +28 -15
  136. package/src/Figure/FigureLicenseDialogContent.tsx +80 -0
  137. package/src/Figure/component.figure.scss +0 -1
  138. package/src/FileList/FileListV2.tsx +58 -0
  139. package/src/FileList/FileV2.tsx +35 -0
  140. package/src/FileList/PdfFile.tsx +25 -0
  141. package/src/FileList/index.ts +3 -0
  142. package/src/Notion/Notion.tsx +0 -1
  143. package/src/Notion/NotionVisualElement.tsx +1 -1
  144. package/src/RelatedArticleList/RelatedArticleV2.tsx +84 -0
  145. package/src/RelatedArticleList/index.ts +2 -1
  146. package/src/Table/Table.tsx +77 -4
  147. package/src/index.ts +19 -4
  148. package/src/locale/messages-en.ts +10 -0
  149. package/src/locale/messages-nb.ts +10 -0
  150. package/src/locale/messages-nn.ts +10 -0
  151. package/src/locale/messages-se.ts +10 -1
  152. package/src/locale/messages-sma.ts +10 -0
  153. package/src/types.ts +1 -1
@@ -0,0 +1,71 @@
1
+ import _styled from "@emotion/styled/base";
2
+ 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)."; }
3
+ /**
4
+ * Copyright (c) 2023-present, NDLA.
5
+ *
6
+ * This source code is licensed under the GPLv3 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ *
9
+ */
10
+
11
+ import { useTranslation } from 'react-i18next';
12
+ import { colors } from '@ndla/core';
13
+ import { Figure } from '../Figure';
14
+ import { BlockConcept } from './ConceptEmbed';
15
+ import { jsx as _jsx } from "@emotion/react/jsx-runtime";
16
+ import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
17
+ var ConceptList = /*#__PURE__*/_styled("div", {
18
+ target: "e1g5p4xu1",
19
+ label: "ConceptList"
20
+ })(process.env.NODE_ENV === "production" ? {
21
+ name: "1m0jptr",
22
+ styles: "&>figure:first-of-type{margin-top:32px;}& li{display:block;}"
23
+ } : {
24
+ name: "1m0jptr",
25
+ styles: "&>figure:first-of-type{margin-top:32px;}& li{display:block;}",
26
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbmNlcHRMaXN0RW1iZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1COEIiLCJmaWxlIjoiQ29uY2VwdExpc3RFbWJlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMy1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tICdAbmRsYS9jb3JlJztcbmltcG9ydCB7IENvbmNlcHRMaXN0TWV0YURhdGEgfSBmcm9tICdAbmRsYS90eXBlcy1lbWJlZCc7XG5pbXBvcnQgeyBGaWd1cmUgfSBmcm9tICcuLi9GaWd1cmUnO1xuaW1wb3J0IHsgQmxvY2tDb25jZXB0IH0gZnJvbSAnLi9Db25jZXB0RW1iZWQnO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICBlbWJlZDogQ29uY2VwdExpc3RNZXRhRGF0YTtcbn1cblxuY29uc3QgQ29uY2VwdExpc3QgPSBzdHlsZWQuZGl2YFxuICAmID4gZmlndXJlOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDMycHg7XG4gIH1cbiAgJiBsaSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFNwYW4gPSBzdHlsZWQuc3BhbmBcbiAgY29sb3I6ICR7Y29sb3JzLnN1cHBvcnQucmVkfTtcbmA7XG5cbmNvbnN0IENvbmNlcHRMaXN0RW1iZWQgPSAoeyBlbWJlZCB9OiBQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGlmIChlbWJlZC5zdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICByZXR1cm4gPFN0eWxlZFNwYW4+e3QoJ2VtYmVkLmNvbmNlcHRMaXN0RXJyb3InKX08L1N0eWxlZFNwYW4+O1xuICB9XG4gIGNvbnN0IHsgZW1iZWREYXRhLCBkYXRhIH0gPSBlbWJlZDtcbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAgPEZpZ3VyZSB0eXBlPVwiZnVsbFwiIHJlc2l6ZUlmcmFtZT5cbiAgICAgICAge2VtYmVkRGF0YS50aXRsZSAmJiA8aDI+e2VtYmVkRGF0YS50aXRsZX08L2gyPn1cbiAgICAgICAgPENvbmNlcHRMaXN0PlxuICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgIHtkYXRhLmNvbmNlcHRzLm1hcCgoeyBjb25jZXB0LCB2aXN1YWxFbGVtZW50IH0pID0+IChcbiAgICAgICAgICAgICAgPGxpIGtleT17Y29uY2VwdC5pZH0+XG4gICAgICAgICAgICAgICAgPEJsb2NrQ29uY2VwdFxuICAgICAgICAgICAgICAgICAgdGl0bGU9e2NvbmNlcHQudGl0bGUudGl0bGV9XG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb25jZXB0LmNvbnRlbnQuY29udGVudH1cbiAgICAgICAgICAgICAgICAgIG1ldGFJbWFnZT17Y29uY2VwdC5tZXRhSW1hZ2V9XG4gICAgICAgICAgICAgICAgICBjb3B5cmlnaHQ9e2NvbmNlcHQuY29weXJpZ2h0fVxuICAgICAgICAgICAgICAgICAgc291cmNlPXtjb25jZXB0LnNvdXJjZX1cbiAgICAgICAgICAgICAgICAgIHZpc3VhbEVsZW1lbnQ9e3Zpc3VhbEVsZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvQ29uY2VwdExpc3Q+XG4gICAgICA8L0ZpZ3VyZT5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbmNlcHRMaXN0RW1iZWQ7XG4iXX0= */",
27
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
28
+ });
29
+ var StyledSpan = /*#__PURE__*/_styled("span", {
30
+ target: "e1g5p4xu0",
31
+ label: "StyledSpan"
32
+ })("color:", colors.support.red, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbmNlcHRMaXN0RW1iZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRCOEIiLCJmaWxlIjoiQ29uY2VwdExpc3RFbWJlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMy1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tICdAbmRsYS9jb3JlJztcbmltcG9ydCB7IENvbmNlcHRMaXN0TWV0YURhdGEgfSBmcm9tICdAbmRsYS90eXBlcy1lbWJlZCc7XG5pbXBvcnQgeyBGaWd1cmUgfSBmcm9tICcuLi9GaWd1cmUnO1xuaW1wb3J0IHsgQmxvY2tDb25jZXB0IH0gZnJvbSAnLi9Db25jZXB0RW1iZWQnO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICBlbWJlZDogQ29uY2VwdExpc3RNZXRhRGF0YTtcbn1cblxuY29uc3QgQ29uY2VwdExpc3QgPSBzdHlsZWQuZGl2YFxuICAmID4gZmlndXJlOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDMycHg7XG4gIH1cbiAgJiBsaSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFNwYW4gPSBzdHlsZWQuc3BhbmBcbiAgY29sb3I6ICR7Y29sb3JzLnN1cHBvcnQucmVkfTtcbmA7XG5cbmNvbnN0IENvbmNlcHRMaXN0RW1iZWQgPSAoeyBlbWJlZCB9OiBQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGlmIChlbWJlZC5zdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICByZXR1cm4gPFN0eWxlZFNwYW4+e3QoJ2VtYmVkLmNvbmNlcHRMaXN0RXJyb3InKX08L1N0eWxlZFNwYW4+O1xuICB9XG4gIGNvbnN0IHsgZW1iZWREYXRhLCBkYXRhIH0gPSBlbWJlZDtcbiAgcmV0dXJuIChcbiAgICA8ZGl2PlxuICAgICAgPEZpZ3VyZSB0eXBlPVwiZnVsbFwiIHJlc2l6ZUlmcmFtZT5cbiAgICAgICAge2VtYmVkRGF0YS50aXRsZSAmJiA8aDI+e2VtYmVkRGF0YS50aXRsZX08L2gyPn1cbiAgICAgICAgPENvbmNlcHRMaXN0PlxuICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgIHtkYXRhLmNvbmNlcHRzLm1hcCgoeyBjb25jZXB0LCB2aXN1YWxFbGVtZW50IH0pID0+IChcbiAgICAgICAgICAgICAgPGxpIGtleT17Y29uY2VwdC5pZH0+XG4gICAgICAgICAgICAgICAgPEJsb2NrQ29uY2VwdFxuICAgICAgICAgICAgICAgICAgdGl0bGU9e2NvbmNlcHQudGl0bGUudGl0bGV9XG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb25jZXB0LmNvbnRlbnQuY29udGVudH1cbiAgICAgICAgICAgICAgICAgIG1ldGFJbWFnZT17Y29uY2VwdC5tZXRhSW1hZ2V9XG4gICAgICAgICAgICAgICAgICBjb3B5cmlnaHQ9e2NvbmNlcHQuY29weXJpZ2h0fVxuICAgICAgICAgICAgICAgICAgc291cmNlPXtjb25jZXB0LnNvdXJjZX1cbiAgICAgICAgICAgICAgICAgIHZpc3VhbEVsZW1lbnQ9e3Zpc3VhbEVsZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvQ29uY2VwdExpc3Q+XG4gICAgICA8L0ZpZ3VyZT5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbmNlcHRMaXN0RW1iZWQ7XG4iXX0= */"));
33
+ var ConceptListEmbed = function ConceptListEmbed(_ref) {
34
+ var embed = _ref.embed;
35
+ var _useTranslation = useTranslation(),
36
+ t = _useTranslation.t;
37
+ if (embed.status === 'error') {
38
+ return _jsx(StyledSpan, {
39
+ children: t('embed.conceptListError')
40
+ });
41
+ }
42
+ var embedData = embed.embedData,
43
+ data = embed.data;
44
+ return _jsx("div", {
45
+ children: _jsxs(Figure, {
46
+ type: "full",
47
+ resizeIframe: true,
48
+ children: [embedData.title && _jsx("h2", {
49
+ children: embedData.title
50
+ }), _jsx(ConceptList, {
51
+ children: _jsx("ul", {
52
+ children: data.concepts.map(function (_ref2) {
53
+ var concept = _ref2.concept,
54
+ visualElement = _ref2.visualElement;
55
+ return _jsx("li", {
56
+ children: _jsx(BlockConcept, {
57
+ title: concept.title.title,
58
+ content: concept.content.content,
59
+ metaImage: concept.metaImage,
60
+ copyright: concept.copyright,
61
+ source: concept.source,
62
+ visualElement: visualElement
63
+ })
64
+ }, concept.id);
65
+ })
66
+ })
67
+ })]
68
+ })
69
+ });
70
+ };
71
+ export default ConceptListEmbed;
@@ -0,0 +1,42 @@
1
+ import _styled from "@emotion/styled/base";
2
+ /**
3
+ * Copyright (c) 2023-present, NDLA.
4
+ *
5
+ * This source code is licensed under the GPLv3 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ *
8
+ */
9
+
10
+ import { useTranslation } from 'react-i18next';
11
+ import { colors } from '@ndla/core';
12
+ import { jsx as _jsx } from "@emotion/react/jsx-runtime";
13
+ var StyledSpan = /*#__PURE__*/_styled("span", {
14
+ target: "e1s10cki0",
15
+ label: "StyledSpan"
16
+ })("color:", colors.support.red, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbnRlbnRMaW5rRW1iZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCOEIiLCJmaWxlIjoiQ29udGVudExpbmtFbWJlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMy1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tICdAbmRsYS9jb3JlJztcbmltcG9ydCB7IENvbnRlbnRMaW5rTWV0YURhdGEgfSBmcm9tICdAbmRsYS90eXBlcy1lbWJlZCc7XG5pbnRlcmZhY2UgUHJvcHMge1xuICBlbWJlZDogQ29udGVudExpbmtNZXRhRGF0YTtcbiAgaXNPZW1iZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBTdHlsZWRTcGFuID0gc3R5bGVkLnNwYW5gXG4gIGNvbG9yOiAke2NvbG9ycy5zdXBwb3J0LnJlZH07XG5gO1xuXG5jb25zdCBDb250ZW50TGlua0VtYmVkID0gKHsgZW1iZWQsIGlzT2VtYmVkIH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgaWYgKGVtYmVkLnN0YXR1cyA9PT0gJ2Vycm9yJykge1xuICAgIHJldHVybiA8U3R5bGVkU3Bhbj57YCR7dCgnZW1iZWQubGlua0Vycm9yJyl9OiAke2VtYmVkLmVtYmVkRGF0YS5saW5rVGV4dH1gfTwvU3R5bGVkU3Bhbj47XG4gIH1cblxuICBjb25zdCB7IGVtYmVkRGF0YSwgZGF0YSB9ID0gZW1iZWQ7XG5cbiAgaWYgKGVtYmVkRGF0YS5vcGVuSW4gPT09ICduZXctY29udGV4dCcgfHwgaXNPZW1iZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGEgaHJlZj17ZW1iZWQuZGF0YS5wYXRofSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIHtlbWJlZERhdGEubGlua1RleHR9XG4gICAgICA8L2E+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiA8YSBocmVmPXtkYXRhLnBhdGh9PntlbWJlZERhdGEubGlua1RleHR9PC9hPjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbnRlbnRMaW5rRW1iZWQ7XG4iXX0= */"));
17
+ var ContentLinkEmbed = function ContentLinkEmbed(_ref) {
18
+ var embed = _ref.embed,
19
+ isOembed = _ref.isOembed;
20
+ var _useTranslation = useTranslation(),
21
+ t = _useTranslation.t;
22
+ if (embed.status === 'error') {
23
+ return _jsx(StyledSpan, {
24
+ children: "".concat(t('embed.linkError'), ": ").concat(embed.embedData.linkText)
25
+ });
26
+ }
27
+ var embedData = embed.embedData,
28
+ data = embed.data;
29
+ if (embedData.openIn === 'new-context' || isOembed) {
30
+ return _jsx("a", {
31
+ href: embed.data.path,
32
+ target: "_blank",
33
+ rel: "noopener noreferrer",
34
+ children: embedData.linkText
35
+ });
36
+ }
37
+ return _jsx("a", {
38
+ href: data.path,
39
+ children: embedData.linkText
40
+ });
41
+ };
42
+ export default ContentLinkEmbed;
@@ -0,0 +1,91 @@
1
+ import _styled from "@emotion/styled/base";
2
+ 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)."; }
3
+ /**
4
+ * Copyright (c) 2023-present, NDLA.
5
+ *
6
+ * This source code is licensed under the GPLv3 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ *
9
+ */
10
+
11
+ import { useEffect, useRef } from 'react';
12
+ import { useTranslation } from 'react-i18next';
13
+ import { Figure } from '../Figure';
14
+ import { ResourceBox } from '../ResourceBox';
15
+ import { errorSvgSrc } from './ImageEmbed';
16
+ import { jsx as _jsx } from "@emotion/react/jsx-runtime";
17
+ import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
18
+ var StyledFigure = /*#__PURE__*/_styled("figure", {
19
+ target: "e13ppouw0",
20
+ label: "StyledFigure"
21
+ })(process.env.NODE_ENV === "production" ? {
22
+ name: "9y4sui",
23
+ styles: "iframe{height:auto;}"
24
+ } : {
25
+ name: "9y4sui",
26
+ styles: "iframe{height:auto;}",
27
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkV4dGVybmFsRW1iZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFCa0MiLCJmaWxlIjoiRXh0ZXJuYWxFbWJlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMy1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IE9lbWJlZE1ldGFEYXRhIH0gZnJvbSAnQG5kbGEvdHlwZXMtZW1iZWQnO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IHsgRmlndXJlIH0gZnJvbSAnLi4vRmlndXJlJztcbmltcG9ydCB7IFJlc291cmNlQm94IH0gZnJvbSAnLi4vUmVzb3VyY2VCb3gnO1xuaW1wb3J0IHsgZXJyb3JTdmdTcmMgfSBmcm9tICcuL0ltYWdlRW1iZWQnO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICBlbWJlZDogT2VtYmVkTWV0YURhdGE7XG4gIGlzQ29uY2VwdD86IGJvb2xlYW47XG59XG5cbmNvbnN0IFN0eWxlZEZpZ3VyZSA9IHN0eWxlZC5maWd1cmVgXG4gIGlmcmFtZSB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG5gO1xuXG5jb25zdCBFeHRlcm5hbEVtYmVkID0gKHsgZW1iZWQsIGlzQ29uY2VwdCB9OiBQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGZpZ1JlZiA9IHVzZVJlZjxIVE1MRWxlbWVudD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpZnJhbWUgPSBmaWdSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcihgaWZyYW1lYCk7XG4gICAgaWYgKGlmcmFtZSkge1xuICAgICAgY29uc3QgW3dpZHRoLCBoZWlnaHRdID0gW3BhcnNlSW50KGlmcmFtZS53aWR0aCksIHBhcnNlSW50KGlmcmFtZS5oZWlnaHQpXTtcbiAgICAgIGlmcmFtZS5zdHlsZS5hc3BlY3RSYXRpbyA9IGAke3dpZHRoID8gd2lkdGggOiAxNn0vJHtoZWlnaHQgPyBoZWlnaHQgOiA5fWA7XG4gICAgfVxuICB9LCBbXSk7XG4gIGlmIChlbWJlZC5zdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGZpZ3VyZSBjbGFzc05hbWU9e2lzQ29uY2VwdCA/ICcnIDogJ2MtZmlndXJlJ30+XG4gICAgICAgIDxpbWcgYWx0PXt0KCdleHRlcm5hbC5lcnJvcicpfSBzcmM9e2Vycm9yU3ZnU3JjfSAvPlxuICAgICAgICA8ZmlnY2FwdGlvbj57dCgnZXh0ZXJuYWwuZXJyb3InKX08L2ZpZ2NhcHRpb24+XG4gICAgICA8L2ZpZ3VyZT5cbiAgICApO1xuICB9XG5cbiAgY29uc3QgeyBlbWJlZERhdGEsIGRhdGEgfSA9IGVtYmVkO1xuXG4gIGlmIChlbWJlZERhdGEudHlwZSA9PT0gJ2Z1bGxzY3JlZW4nKSB7XG4gICAgY29uc3QgaW1hZ2UgPSB7IHNyYzogZGF0YS5pZnJhbWVJbWFnZT8uaW1hZ2VVcmwgPz8gJycsIGFsdDogZGF0YS5pZnJhbWVJbWFnZT8uYWx0dGV4dD8uYWx0dGV4dCA/PyAnJyB9O1xuICAgIHJldHVybiAoXG4gICAgICA8RmlndXJlIHR5cGU9XCJmdWxsXCI+XG4gICAgICAgIDxSZXNvdXJjZUJveFxuICAgICAgICAgIGltYWdlPXtpbWFnZX1cbiAgICAgICAgICB0aXRsZT17ZW1iZWREYXRhLnRpdGxlID8/ICcnfVxuICAgICAgICAgIHVybD17ZW1iZWREYXRhLnVybH1cbiAgICAgICAgICBjYXB0aW9uPXtlbWJlZERhdGEuY2FwdGlvbiA/PyAnJ31cbiAgICAgICAgICBidXR0b25UZXh0PXt0KCdsaWNlbnNlLm90aGVyLml0ZW1JbWFnZS5hcmlhTGFiZWwnKX1cbiAgICAgICAgLz5cbiAgICAgIDwvRmlndXJlPlxuICAgICk7XG4gIH1cblxuICBjb25zdCBmdWxsQ29sdW1uQ2xhc3MgPSBpc0NvbmNlcHQgPyAnYy1maWd1cmUtLWZ1bGwtY29sdW1uJyA6ICcnO1xuICBjb25zdCBjbGFzc2VzID0gYGMtZmlndXJlICR7ZnVsbENvbHVtbkNsYXNzfSBjLWZpZ3VyZS0tcmVzaXplYDtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRGaWd1cmVcbiAgICAgIHJlZj17ZmlnUmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzfVxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tdW5rbm93bi1wcm9wZXJ0eVxuICAgICAgcmVzaXplaWZyYW1lPVwidHJ1ZVwiXG4gICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGRhdGEub2VtYmVkLmh0bWwgPz8gJycgfX1cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0ZXJuYWxFbWJlZDtcbiJdfQ== */",
28
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
29
+ });
30
+ var ExternalEmbed = function ExternalEmbed(_ref) {
31
+ var _data$oembed$html;
32
+ var embed = _ref.embed,
33
+ isConcept = _ref.isConcept;
34
+ var _useTranslation = useTranslation(),
35
+ t = _useTranslation.t;
36
+ var figRef = useRef(null);
37
+ useEffect(function () {
38
+ var _figRef$current;
39
+ var iframe = (_figRef$current = figRef.current) === null || _figRef$current === void 0 ? void 0 : _figRef$current.querySelector("iframe");
40
+ if (iframe) {
41
+ var _ref2 = [parseInt(iframe.width), parseInt(iframe.height)],
42
+ width = _ref2[0],
43
+ height = _ref2[1];
44
+ iframe.style.aspectRatio = "".concat(width ? width : 16, "/").concat(height ? height : 9);
45
+ }
46
+ }, []);
47
+ if (embed.status === 'error') {
48
+ return _jsxs("figure", {
49
+ className: isConcept ? '' : 'c-figure',
50
+ children: [_jsx("img", {
51
+ alt: t('external.error'),
52
+ src: errorSvgSrc
53
+ }), _jsx("figcaption", {
54
+ children: t('external.error')
55
+ })]
56
+ });
57
+ }
58
+ var embedData = embed.embedData,
59
+ data = embed.data;
60
+ if (embedData.type === 'fullscreen') {
61
+ var _data$iframeImage$ima, _data$iframeImage, _data$iframeImage$alt, _data$iframeImage2, _data$iframeImage2$al, _embedData$title, _embedData$caption;
62
+ var image = {
63
+ 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 : '',
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 : ''
65
+ };
66
+ return _jsx(Figure, {
67
+ type: "full",
68
+ children: _jsx(ResourceBox, {
69
+ image: image,
70
+ title: (_embedData$title = embedData.title) !== null && _embedData$title !== void 0 ? _embedData$title : '',
71
+ url: embedData.url,
72
+ caption: (_embedData$caption = embedData.caption) !== null && _embedData$caption !== void 0 ? _embedData$caption : '',
73
+ buttonText: t('license.other.itemImage.ariaLabel')
74
+ })
75
+ });
76
+ }
77
+ var fullColumnClass = isConcept ? 'c-figure--full-column' : '';
78
+ var classes = "c-figure ".concat(fullColumnClass, " c-figure--resize");
79
+ return _jsx(StyledFigure, {
80
+ ref: figRef,
81
+ className: classes
82
+ //@ts-ignore
83
+ // eslint-disable-next-line react/no-unknown-property
84
+ ,
85
+ resizeiframe: "true",
86
+ dangerouslySetInnerHTML: {
87
+ __html: (_data$oembed$html = data.oembed.html) !== null && _data$oembed$html !== void 0 ? _data$oembed$html : ''
88
+ }
89
+ });
90
+ };
91
+ export default ExternalEmbed;
@@ -0,0 +1,32 @@
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
+
9
+ import { useTranslation } from 'react-i18next';
10
+ import { jsx as _jsx } from "@emotion/react/jsx-runtime";
11
+ var FootnoteEmbed = function FootnoteEmbed(_ref) {
12
+ var embed = _ref.embed;
13
+ var _useTranslation = useTranslation(),
14
+ t = _useTranslation.t;
15
+ if (embed.status === 'error') {
16
+ return _jsx("div", {
17
+ children: t('error')
18
+ });
19
+ }
20
+ return _jsx("span", {
21
+ id: "ref".concat(embed.data.entryNum),
22
+ className: "c-footnotes__ref",
23
+ children: _jsx("sup", {
24
+ children: _jsx("a", {
25
+ href: "#note".concat(embed.data.entryNum),
26
+ target: "_self",
27
+ children: "[".concat(embed.data.entryNum, "]")
28
+ })
29
+ })
30
+ });
31
+ };
32
+ export default FootnoteEmbed;
@@ -0,0 +1,87 @@
1
+ import _styled from "@emotion/styled/base";
2
+ 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)."; }
3
+ /**
4
+ * Copyright (c) 2023-present, NDLA.
5
+ *
6
+ * This source code is licensed under the GPLv3 license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ *
9
+ */
10
+
11
+ import { useEffect, useRef } from 'react';
12
+ import { useTranslation } from 'react-i18next';
13
+ import { errorSvgSrc } from './ImageEmbed';
14
+ import { jsx as _jsx } from "@emotion/react/jsx-runtime";
15
+ import { jsxs as _jsxs } from "@emotion/react/jsx-runtime";
16
+ var StyledFigure = /*#__PURE__*/_styled("figure", {
17
+ target: "etjdel10",
18
+ label: "StyledFigure"
19
+ })(process.env.NODE_ENV === "production" ? {
20
+ name: "9y4sui",
21
+ styles: "iframe{height:auto;}"
22
+ } : {
23
+ name: "9y4sui",
24
+ styles: "iframe{height:auto;}",
25
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkg1cEVtYmVkLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQmtDIiwiZmlsZSI6Ikg1cEVtYmVkLnRzeCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLXByZXNlbnQsIE5ETEEuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR1BMdjMgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqXG4gKi9cblxuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgSDVwTWV0YURhdGEgfSBmcm9tICdAbmRsYS90eXBlcy1lbWJlZCc7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG5pbXBvcnQgeyBlcnJvclN2Z1NyYyB9IGZyb20gJy4vSW1hZ2VFbWJlZCc7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGVtYmVkOiBINXBNZXRhRGF0YTtcbiAgaXNDb25jZXB0PzogYm9vbGVhbjtcbn1cblxuY29uc3QgU3R5bGVkRmlndXJlID0gc3R5bGVkLmZpZ3VyZWBcbiAgaWZyYW1lIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbmA7XG5cbmNvbnN0IEg1cEVtYmVkID0gKHsgZW1iZWQsIGlzQ29uY2VwdCB9OiBQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgaWZyYW1lUmVmID0gdXNlUmVmPEhUTUxJRnJhbWVFbGVtZW50PihudWxsKTtcbiAgY29uc3QgZmlnUmVmID0gdXNlUmVmPEhUTUxFbGVtZW50PihudWxsKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGlmcmFtZSA9XG4gICAgICBlbWJlZC5zdGF0dXMgPT09ICdzdWNjZXNzJyAmJiBlbWJlZC5kYXRhLm9lbWJlZCA/IGZpZ1JlZi5jdXJyZW50Py5xdWVyeVNlbGVjdG9yKCdpZnJhbWUnKSA6IGlmcmFtZVJlZi5jdXJyZW50O1xuICAgIGlmIChpZnJhbWUpIHtcbiAgICAgIGNvbnN0IFt3aWR0aCwgaGVpZ2h0XSA9IFtwYXJzZUludChpZnJhbWUud2lkdGgpLCBwYXJzZUludChpZnJhbWUuaGVpZ2h0KV07XG4gICAgICBpZnJhbWUuc3R5bGUuYXNwZWN0UmF0aW8gPSBgJHt3aWR0aCA/IHdpZHRoIDogMTZ9LyR7aGVpZ2h0ID8gaGVpZ2h0IDogOX1gO1xuICAgIH1cbiAgfSwgW2VtYmVkXSk7XG5cbiAgaWYgKGVtYmVkLnN0YXR1cyA9PT0gJ2Vycm9yJykge1xuICAgIHJldHVybiAoXG4gICAgICA8ZmlndXJlIGNsYXNzTmFtZT17aXNDb25jZXB0ID8gJycgOiAnYy1maWd1cmUnfT5cbiAgICAgICAgPGltZyBhbHQ9e3QoJ2g1cC5lcnJvcicpfSBzcmM9e2Vycm9yU3ZnU3JjfSAvPlxuICAgICAgICA8ZmlnY2FwdGlvbj57dCgnaDVwLmVycm9yJyl9PC9maWdjYXB0aW9uPlxuICAgICAgPC9maWd1cmU+XG4gICAgKTtcbiAgfVxuICBjb25zdCBmdWxsQ29sdW1uQ2xhc3MgPSBpc0NvbmNlcHQgPyAnYy1maWd1cmUtLWZ1bGwtY29sdW1uJyA6ICcnO1xuICBjb25zdCBjbGFzc2VzID0gYGMtZmlndXJlICR7ZnVsbENvbHVtbkNsYXNzfSBjLWZpZ3VyZS0tcmVzaXplYDtcblxuICBpZiAoZW1iZWQuZGF0YS5vZW1iZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFN0eWxlZEZpZ3VyZVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXN9XG4gICAgICAgIHJlZj17ZmlnUmVmfVxuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLXVua25vd24tcHJvcGVydHlcbiAgICAgICAgcmVzaXplaWZyYW1lPVwidHJ1ZVwiXG4gICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogZW1iZWQuZGF0YS5vZW1iZWQuaHRtbCA/PyAnJyB9fVxuICAgICAgLz5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICAvL0B0cy1pZ25vcmVcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tdW5rbm93bi1wcm9wZXJ0eVxuICAgIDxTdHlsZWRGaWd1cmUgY2xhc3NOYW1lPXtjbGFzc2VzfSByZXNpemVpZnJhbWU9XCJ0cnVlXCI+XG4gICAgICA8aWZyYW1lIHRpdGxlPXtlbWJlZC5lbWJlZERhdGEudXJsfSByZWY9e2lmcmFtZVJlZn0gYXJpYS1sYWJlbD17ZW1iZWQuZW1iZWREYXRhLnVybH0gc3JjPXtlbWJlZC5lbWJlZERhdGEudXJsfSAvPlxuICAgIDwvU3R5bGVkRmlndXJlPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSDVwRW1iZWQ7XG4iXX0= */",
26
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
27
+ });
28
+ var H5pEmbed = function H5pEmbed(_ref) {
29
+ var embed = _ref.embed,
30
+ isConcept = _ref.isConcept;
31
+ var _useTranslation = useTranslation(),
32
+ t = _useTranslation.t;
33
+ var iframeRef = useRef(null);
34
+ var figRef = useRef(null);
35
+ useEffect(function () {
36
+ var _figRef$current;
37
+ var iframe = embed.status === 'success' && embed.data.oembed ? (_figRef$current = figRef.current) === null || _figRef$current === void 0 ? void 0 : _figRef$current.querySelector('iframe') : iframeRef.current;
38
+ if (iframe) {
39
+ var _ref2 = [parseInt(iframe.width), parseInt(iframe.height)],
40
+ width = _ref2[0],
41
+ height = _ref2[1];
42
+ iframe.style.aspectRatio = "".concat(width ? width : 16, "/").concat(height ? height : 9);
43
+ }
44
+ }, [embed]);
45
+ if (embed.status === 'error') {
46
+ return _jsxs("figure", {
47
+ className: isConcept ? '' : 'c-figure',
48
+ children: [_jsx("img", {
49
+ alt: t('h5p.error'),
50
+ src: errorSvgSrc
51
+ }), _jsx("figcaption", {
52
+ children: t('h5p.error')
53
+ })]
54
+ });
55
+ }
56
+ var fullColumnClass = isConcept ? 'c-figure--full-column' : '';
57
+ var classes = "c-figure ".concat(fullColumnClass, " c-figure--resize");
58
+ if (embed.data.oembed) {
59
+ var _embed$data$oembed$ht;
60
+ return _jsx(StyledFigure, {
61
+ className: classes,
62
+ ref: figRef
63
+ //@ts-ignore
64
+ // eslint-disable-next-line react/no-unknown-property
65
+ ,
66
+ resizeiframe: "true",
67
+ dangerouslySetInnerHTML: {
68
+ __html: (_embed$data$oembed$ht = embed.data.oembed.html) !== null && _embed$data$oembed$ht !== void 0 ? _embed$data$oembed$ht : ''
69
+ }
70
+ });
71
+ }
72
+ return (
73
+ //@ts-ignore
74
+ // eslint-disable-next-line react/no-unknown-property
75
+ _jsx(StyledFigure, {
76
+ className: classes,
77
+ resizeiframe: "true",
78
+ children: _jsx("iframe", {
79
+ title: embed.embedData.url,
80
+ ref: iframeRef,
81
+ "aria-label": embed.embedData.url,
82
+ src: embed.embedData.url
83
+ })
84
+ })
85
+ );
86
+ };
87
+ export default H5pEmbed;
@@ -0,0 +1,83 @@
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
+
9
+ import isNumber from 'lodash/isNumber';
10
+ import { useEffect, useRef } from 'react';
11
+ import { useTranslation } from 'react-i18next';
12
+ import { Figure } from '../Figure';
13
+ import { ResourceBox } from '../ResourceBox';
14
+ import { jsx as _jsx } from "@emotion/react/jsx-runtime";
15
+ var ExternalEmbed = function ExternalEmbed(_ref) {
16
+ var embed = _ref.embed,
17
+ isConcept = _ref.isConcept;
18
+ var _useTranslation = useTranslation(),
19
+ t = _useTranslation.t;
20
+ var iframeRef = useRef(null);
21
+ var embedData = embed.embedData;
22
+ useEffect(function () {
23
+ var iframe = iframeRef.current;
24
+ if (iframe) {
25
+ var _ref2 = [parseInt(iframe.width), parseInt(iframe.height)],
26
+ _width = _ref2[0],
27
+ _height = _ref2[1];
28
+ iframe.style.aspectRatio = "".concat(_width ? _width : 16, "/").concat(_height ? _height : 9);
29
+ }
30
+ }, []);
31
+ if (embedData.type === 'fullscreen') {
32
+ var _iframeImage$imageUrl, _iframeImage$alttext$, _iframeImage$alttext, _embedData$title, _embedData$caption;
33
+ var iframeImage = embed.status === 'success' ? embed.data.iframeImage : undefined;
34
+ var image = {
35
+ src: (_iframeImage$imageUrl = iframeImage === null || iframeImage === void 0 ? void 0 : iframeImage.imageUrl) !== null && _iframeImage$imageUrl !== void 0 ? _iframeImage$imageUrl : '',
36
+ 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$ : ''
37
+ };
38
+ return _jsx(Figure, {
39
+ type: "full",
40
+ children: _jsx(ResourceBox, {
41
+ image: image,
42
+ title: (_embedData$title = embedData.title) !== null && _embedData$title !== void 0 ? _embedData$title : '',
43
+ url: embedData.url,
44
+ caption: (_embedData$caption = embedData.caption) !== null && _embedData$caption !== void 0 ? _embedData$caption : '',
45
+ buttonText: t('license.other.itemImage.ariaLabel')
46
+ })
47
+ });
48
+ }
49
+ var resize = !embedData.url.includes('trinket.io');
50
+ var fullColumnClass = isConcept ? 'c-figure--full-column' : '';
51
+ var resizeClass = resize ? 'c-figure--resize' : '';
52
+ var classes = "c-figure ".concat(fullColumnClass, " ").concat(resizeClass);
53
+ var width = embedData.width,
54
+ height = embedData.height,
55
+ title = embedData.title,
56
+ url = embedData.url;
57
+ var strippedWidth = isNumber(width) ? width : width === null || width === void 0 ? void 0 : width.replace(/\s*px/, '');
58
+ var strippedHeight = isNumber(height) ? height : height === null || height === void 0 ? void 0 : height.replace(/\s*px/, '');
59
+ var urlOrTitle = title || url;
60
+ return (
61
+ //@ts-ignore
62
+ // eslint-disable-next-line react/no-unknown-property
63
+ _jsx("figure", {
64
+ className: classes,
65
+ resizeiframe: "".concat(resize),
66
+ children: _jsx("iframe", {
67
+ ref: iframeRef,
68
+ title: urlOrTitle,
69
+ "aria-label": urlOrTitle,
70
+ src: url,
71
+ width: strippedWidth,
72
+ height: strippedHeight
73
+ // eslint-disable-next-line react/no-unknown-property
74
+ ,
75
+ allowFullScreen: true,
76
+ scrolling: "no",
77
+ frameBorder: "0",
78
+ loading: "lazy"
79
+ })
80
+ })
81
+ );
82
+ };
83
+ export default ExternalEmbed;