@ndla/ui 56.0.167-alpha.0 → 56.0.169-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +1 -11
  2. package/dist/panda.buildinfo.json +8 -9
  3. package/dist/styles.css +34 -36
  4. package/es/AnchorHeading/AnchorHeading.mjs +44 -0
  5. package/es/AnchorHeading/AnchorHeading.mjs.map +1 -0
  6. package/es/CodeBlock/codeLanguageOptions.mjs.map +1 -1
  7. package/es/ContactBlock/ContactBlock.mjs.map +1 -1
  8. package/es/ContentTypeBadge/ContentTypeBadge.mjs.map +1 -1
  9. package/es/Embed/ImageEmbed.mjs.map +1 -1
  10. package/es/_virtual/rolldown_runtime.mjs +2 -2
  11. package/es/index.mjs +2 -2
  12. package/es/locale/messages-en.mjs +1 -0
  13. package/es/locale/messages-en.mjs.map +1 -1
  14. package/es/locale/messages-nb.mjs +1 -0
  15. package/es/locale/messages-nb.mjs.map +1 -1
  16. package/es/locale/messages-nn.mjs +1 -0
  17. package/es/locale/messages-nn.mjs.map +1 -1
  18. package/es/locale/messages-se.mjs +1 -0
  19. package/es/locale/messages-se.mjs.map +1 -1
  20. package/es/model/ContentType.mjs.map +1 -1
  21. package/es/model/SubjectCategories.mjs +2 -2
  22. package/es/model/SubjectTypes.mjs +2 -2
  23. package/es/model/WordClass.mjs +2 -2
  24. package/lib/{CopyParagraphButton/CopyParagraphButton.d.ts → AnchorHeading/AnchorHeading.d.ts} +1 -1
  25. package/lib/AnchorHeading/AnchorHeading.js +45 -0
  26. package/lib/AnchorHeading/AnchorHeading.js.map +1 -0
  27. package/lib/Article/Article.js +14 -14
  28. package/lib/Article/Article.js.map +1 -1
  29. package/lib/Article/ArticleByline.js +13 -13
  30. package/lib/Article/ArticleByline.js.map +1 -1
  31. package/lib/Article/ArticleFootNotes.js +5 -5
  32. package/lib/Article/ArticleFootNotes.js.map +1 -1
  33. package/lib/Article/BadgesContainer.js +2 -2
  34. package/lib/Article/BadgesContainer.js.map +1 -1
  35. package/lib/AudioPlayer/AudioPlayer.js +16 -16
  36. package/lib/AudioPlayer/AudioPlayer.js.map +1 -1
  37. package/lib/AudioPlayer/Controls.js +35 -35
  38. package/lib/AudioPlayer/Controls.js.map +1 -1
  39. package/lib/AudioPlayer/SpeechControl.js +4 -4
  40. package/lib/AudioPlayer/SpeechControl.js.map +1 -1
  41. package/lib/Breadcrumb/Breadcrumb.js +2 -2
  42. package/lib/Breadcrumb/Breadcrumb.js.map +1 -1
  43. package/lib/Breadcrumb/BreadcrumbItem.js +2 -2
  44. package/lib/Breadcrumb/BreadcrumbItem.js.map +1 -1
  45. package/lib/Breadcrumb/HomeBreadcrumb.js +8 -8
  46. package/lib/Breadcrumb/HomeBreadcrumb.js.map +1 -1
  47. package/lib/CampaignBlock/CampaignBlock.js +12 -12
  48. package/lib/CampaignBlock/CampaignBlock.js.map +1 -1
  49. package/lib/CodeBlock/CodeBlock.js +4 -4
  50. package/lib/CodeBlock/CodeBlock.js.map +1 -1
  51. package/lib/CodeBlock/codeLanguageOptions.js.map +1 -1
  52. package/lib/Concept/Concept.js +4 -4
  53. package/lib/Concept/Concept.js.map +1 -1
  54. package/lib/ContactBlock/ContactBlock.js +12 -12
  55. package/lib/ContactBlock/ContactBlock.js.map +1 -1
  56. package/lib/ContentTypeBadge/ContentTypeBadge.js +2 -2
  57. package/lib/ContentTypeBadge/ContentTypeBadge.js.map +1 -1
  58. package/lib/Embed/AudioEmbed.js +3 -3
  59. package/lib/Embed/AudioEmbed.js.map +1 -1
  60. package/lib/Embed/BrightcoveEmbed.js +5 -5
  61. package/lib/Embed/BrightcoveEmbed.js.map +1 -1
  62. package/lib/Embed/CodeEmbed.js +7 -7
  63. package/lib/Embed/CodeEmbed.js.map +1 -1
  64. package/lib/Embed/ConceptEmbed.js +7 -7
  65. package/lib/Embed/ConceptEmbed.js.map +1 -1
  66. package/lib/Embed/ConceptInlineTriggerButton.js +2 -2
  67. package/lib/Embed/ConceptInlineTriggerButton.js.map +1 -1
  68. package/lib/Embed/ContentLinkEmbed.js +2 -2
  69. package/lib/Embed/CopyrightEmbed.js +2 -2
  70. package/lib/Embed/CopyrightEmbed.js.map +1 -1
  71. package/lib/Embed/EmbedErrorPlaceholder.js +6 -6
  72. package/lib/Embed/EmbedErrorPlaceholder.js.map +1 -1
  73. package/lib/Embed/EmbedWrapper.js +6 -6
  74. package/lib/Embed/EmbedWrapper.js.map +1 -1
  75. package/lib/Embed/ExternalEmbed.js +4 -4
  76. package/lib/Embed/ExternalEmbed.js.map +1 -1
  77. package/lib/Embed/FootnoteEmbed.js +2 -2
  78. package/lib/Embed/FootnoteEmbed.js.map +1 -1
  79. package/lib/Embed/GlossEmbed.js +9 -9
  80. package/lib/Embed/GlossEmbed.js.map +1 -1
  81. package/lib/Embed/H5pEmbed.js +4 -4
  82. package/lib/Embed/H5pEmbed.js.map +1 -1
  83. package/lib/Embed/IframeEmbed.js +4 -4
  84. package/lib/Embed/IframeEmbed.js.map +1 -1
  85. package/lib/Embed/ImageEmbed.js +8 -8
  86. package/lib/Embed/ImageEmbed.js.map +1 -1
  87. package/lib/Embed/InlineTriggerButton.js +4 -4
  88. package/lib/Embed/InlineTriggerButton.js.map +1 -1
  89. package/lib/Embed/UnknownEmbed.js +2 -2
  90. package/lib/Embed/UuDisclaimerEmbed.js +11 -11
  91. package/lib/Embed/UuDisclaimerEmbed.js.map +1 -1
  92. package/lib/FactBox/FactBox.js +7 -7
  93. package/lib/FactBox/FactBox.js.map +1 -1
  94. package/lib/FileList/File.js +13 -13
  95. package/lib/FileList/File.js.map +1 -1
  96. package/lib/FileList/FileList.js +4 -4
  97. package/lib/FileList/FileList.js.map +1 -1
  98. package/lib/FileList/PdfFile.js +6 -6
  99. package/lib/FileList/PdfFile.js.map +1 -1
  100. package/lib/Gloss/Gloss.js +19 -19
  101. package/lib/Gloss/Gloss.js.map +1 -1
  102. package/lib/Gloss/GlossExample.js +6 -6
  103. package/lib/Gloss/GlossExample.js.map +1 -1
  104. package/lib/Grid/Grid.js +3 -3
  105. package/lib/Grid/Grid.js.map +1 -1
  106. package/lib/KeyFigure/KeyFigure.js +5 -5
  107. package/lib/KeyFigure/KeyFigure.js.map +1 -1
  108. package/lib/LicenseByline/EmbedByline.js +15 -15
  109. package/lib/LicenseByline/EmbedByline.js.map +1 -1
  110. package/lib/LicenseByline/LicenseLink.js +3 -3
  111. package/lib/LicenseByline/LicenseLink.js.map +1 -1
  112. package/lib/LinkBlock/LinkBlock.js +10 -10
  113. package/lib/LinkBlock/LinkBlock.js.map +1 -1
  114. package/lib/LinkBlock/LinkBlockSection.js +2 -2
  115. package/lib/LinkBlock/LinkBlockSection.js.map +1 -1
  116. package/lib/Pitch/Pitch.js +10 -10
  117. package/lib/Pitch/Pitch.js.map +1 -1
  118. package/lib/RelatedArticleList/RelatedArticleList.js +19 -19
  119. package/lib/RelatedArticleList/RelatedArticleList.js.map +1 -1
  120. package/lib/ResourceBox/ResourceBox.js +13 -13
  121. package/lib/ResourceBox/ResourceBox.js.map +1 -1
  122. package/lib/TagSelector/TagSelector.js +22 -22
  123. package/lib/TagSelector/TagSelector.js.map +1 -1
  124. package/lib/ZendeskButton/ZendeskButton.js +2 -2
  125. package/lib/_virtual/rolldown_runtime.js +2 -2
  126. package/lib/index.d.ts +1 -1
  127. package/lib/index.js +6 -6
  128. package/lib/locale/messages-en.d.ts +1 -0
  129. package/lib/locale/messages-en.js +3 -2
  130. package/lib/locale/messages-en.js.map +1 -1
  131. package/lib/locale/messages-nb.d.ts +1 -0
  132. package/lib/locale/messages-nb.js +3 -2
  133. package/lib/locale/messages-nb.js.map +1 -1
  134. package/lib/locale/messages-nn.d.ts +1 -0
  135. package/lib/locale/messages-nn.js +3 -2
  136. package/lib/locale/messages-nn.js.map +1 -1
  137. package/lib/locale/messages-se.d.ts +1 -0
  138. package/lib/locale/messages-se.js +3 -2
  139. package/lib/locale/messages-se.js.map +1 -1
  140. package/lib/model/ContentType.js.map +1 -1
  141. package/lib/model/SubjectCategories.js +1 -1
  142. package/lib/model/SubjectTypes.js +1 -1
  143. package/lib/model/WordClass.js +1 -1
  144. package/lib/utils/licenseAttributes.js +2 -2
  145. package/lib/utils/licenseAttributes.js.map +1 -1
  146. package/package.json +10 -10
  147. package/src/AnchorHeading/AnchorHeading.tsx +61 -0
  148. package/src/Embed/UuDisclaimerEmbed.stories.tsx +8 -8
  149. package/src/index.ts +1 -1
  150. package/src/locale/messages-en.ts +1 -0
  151. package/src/locale/messages-nb.ts +1 -0
  152. package/src/locale/messages-nn.ts +1 -0
  153. package/src/locale/messages-se.ts +1 -0
  154. package/es/CopyParagraphButton/CopyParagraphButton.mjs +0 -69
  155. package/es/CopyParagraphButton/CopyParagraphButton.mjs.map +0 -1
  156. package/lib/CopyParagraphButton/CopyParagraphButton.js +0 -70
  157. package/lib/CopyParagraphButton/CopyParagraphButton.js.map +0 -1
  158. package/src/CopyParagraphButton/CopyParagraphButton.tsx +0 -87
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # ndla-ui
1
+ # @ndla/ui
2
2
 
3
3
  Main UI component library for NDLA.
4
4
 
@@ -31,16 +31,6 @@ See: [package.json](package.json) for version requirements.
31
31
 
32
32
  **N.B!** Optional dependencies are required if you use `import {...} from '@ndla/ui'`.
33
33
 
34
- ## Usage
35
-
36
- ### Styling
37
-
38
- ```scss
39
- /* Your project's main .scss import file */
40
- @import "~@ndla/ui/scss/main"; // with webpack and sass-loader
41
- @import "../path/to/node_modules/ndla-ui/scss/main"; // direct reference
42
- ```
43
-
44
34
  ### Component Usage
45
35
 
46
36
  ```jsx
@@ -2,6 +2,12 @@
2
2
  "schemaVersion": "1.7.0",
3
3
  "styles": {
4
4
  "atomic": [
5
+ "position]___[value:absolute]___[cond:_before",
6
+ "marginInlineStart]___[value:-0.75em]___[cond:_before",
7
+ "content]___[value:\"#\"]___[cond:_before",
8
+ "visibility]___[value:hidden]___[cond:_before",
9
+ "textDecoration]___[value:underline]___[cond:_hover",
10
+ "visibility]___[value:visible]___[cond:_hover<___>tablet<___>_before",
5
11
  "background]___[value:background.default",
6
12
  "display]___[value:flex",
7
13
  "flexDirection]___[value:column",
@@ -147,7 +153,6 @@
147
153
  "flexDirection]___[value:row]___[cond:tablet",
148
154
  "zIndex]___[value:base",
149
155
  "content]___[value:\"\"]___[cond:_before",
150
- "position]___[value:absolute]___[cond:_before",
151
156
  "top]___[value:-60px]___[cond:_before",
152
157
  "left]___[value:-50px]___[cond:_before",
153
158
  "right]___[value:0]___[cond:_before",
@@ -174,14 +179,6 @@
174
179
  "width]___[value:surface.xsmall",
175
180
  "height]___[value:surface.xsmall",
176
181
  "fontFamily]___[value:serif",
177
- "opacity]___[value:1]___[cond:_hover<___>& [data-copy-button]",
178
- "cursor]___[value:pointer]___[cond:_hover<___>& [data-copy-button]",
179
- "position]___[value:absolute",
180
- "left]___[value:-xxlarge",
181
- "top]___[value:-4xsmall",
182
- "opacity]___[value:0",
183
- "cursor]___[value:pointer",
184
- "opacity]___[value:1]___[cond:&:focus, &:focus-visible, &:active",
185
182
  "clear]___[value:both",
186
183
  "marginBlockStart]___[value:3xsmall",
187
184
  "border]___[value:0",
@@ -198,6 +195,7 @@
198
195
  "borderColor]___[value:stroke.hover",
199
196
  "paddingBlockStart]___[value:5xsmall",
200
197
  "width]___[value:fit-content",
198
+ "cursor]___[value:pointer",
201
199
  "borderColor]___[value:text.link]___[cond:_hover",
202
200
  "background]___[value:surface.actionSubtle.hover]___[cond:_hover",
203
201
  "borderColor]___[value:text.link]___[cond:_active",
@@ -228,6 +226,7 @@
228
226
  "background]___[value:background.default]___[cond:_hover<___>& [data-byline-button]",
229
227
  "transform]___[value:scale(1.2)]___[cond:_hover<___>& button[data-expanded]",
230
228
  "transform]___[value:rotate(-45deg)]___[cond:& button[data-expanded='true']<___>& svg",
229
+ "position]___[value:absolute",
231
230
  "padding]___[value:0",
232
231
  "top]___[value:xsmall",
233
232
  "right]___[value:xsmall",
package/dist/styles.css CHANGED
@@ -477,18 +477,6 @@
477
477
  font-family: var(--fonts-serif);
478
478
  }
479
479
 
480
- .pos_absolute {
481
- position: absolute;
482
- }
483
-
484
- .op_0 {
485
- opacity: 0;
486
- }
487
-
488
- .cursor_pointer {
489
- cursor: pointer;
490
- }
491
-
492
480
  .clear_both {
493
481
  clear: both;
494
482
  }
@@ -505,6 +493,10 @@
505
493
  padding-block-start: var(--spacing-5xsmall);
506
494
  }
507
495
 
496
+ .cursor_pointer {
497
+ cursor: pointer;
498
+ }
499
+
508
500
  .mbe_xsmall {
509
501
  margin-block-end: var(--spacing-xsmall);
510
502
  }
@@ -513,6 +505,10 @@
513
505
  z-index: var(--z-index-docked);
514
506
  }
515
507
 
508
+ .pos_absolute {
509
+ position: absolute;
510
+ }
511
+
516
512
  .trs-prop_transform\,_background-color\,_color {
517
513
  --transition-prop: transform, background-color, color;
518
514
  transition-property: transform, background-color, color;
@@ -719,14 +715,6 @@
719
715
  height: var(--sizes-surface-xsmall);
720
716
  }
721
717
 
722
- .left_-xxlarge {
723
- left: calc(var(--spacing-xxlarge) * -1);
724
- }
725
-
726
- .top_-4xsmall {
727
- top: calc(var(--spacing-4xsmall) * -1);
728
- }
729
-
730
718
  .h_auto {
731
719
  height: auto;
732
720
  }
@@ -811,6 +799,22 @@
811
799
  text-decoration: underline;
812
800
  }
813
801
 
802
+ .before\:pos_absolute::before {
803
+ position: absolute;
804
+ }
805
+
806
+ .before\:ms_-0\.75em::before {
807
+ margin-inline-start: -0.75em;
808
+ }
809
+
810
+ .before\:content_\"\#\"::before {
811
+ content: "#";
812
+ }
813
+
814
+ .before\:vis_hidden::before {
815
+ visibility: hidden;
816
+ }
817
+
814
818
  .\[\&_mjx-stretchy-v_\>_mjx-ext_\>_mjx-c\]\:trf_scaleY\(100\)_translateY\(0\.075em\) mjx-stretchy-v > mjx-ext > mjx-c {
815
819
  transform: scaleY(100) translateY(0.075em);
816
820
  }
@@ -863,10 +867,6 @@
863
867
  content: "";
864
868
  }
865
869
 
866
- .before\:pos_absolute::before {
867
- position: absolute;
868
- }
869
-
870
870
  .before\:trf_rotate\(-4deg\)::before {
871
871
  transform: rotate(-4deg);
872
872
  }
@@ -1091,14 +1091,14 @@
1091
1091
  border-radius: 0;
1092
1092
  }
1093
1093
 
1094
- .\[\&\:focus\,_\&\:focus-visible\,_\&\:active\]\:op_1:focus,.\[\&\:focus\,_\&\:focus-visible\,_\&\:active\]\:op_1:focus-visible,.\[\&\:focus\,_\&\:focus-visible\,_\&\:active\]\:op_1:active {
1095
- opacity: 1;
1096
- }
1097
-
1098
1094
  .hover\:bg_surface\.actionSubtle\.hover:is(:hover, [data-hover]) {
1099
1095
  background: var(--colors-surface-action-subtle-hover);
1100
1096
  }
1101
1097
 
1098
+ .hover\:td_underline:is(:hover, [data-hover]) {
1099
+ text-decoration: underline;
1100
+ }
1101
+
1102
1102
  .hover\:td_none:is(:hover, [data-hover]) {
1103
1103
  text-decoration: none;
1104
1104
  }
@@ -1183,14 +1183,6 @@
1183
1183
  text-decoration: none;
1184
1184
  }
1185
1185
 
1186
- .hover\:\[\&_\[data-copy-button\]\]\:op_1:is(:hover, [data-hover]) [data-copy-button] {
1187
- opacity: 1;
1188
- }
1189
-
1190
- .hover\:\[\&_\[data-copy-button\]\]\:cursor_pointer:is(:hover, [data-hover]) [data-copy-button] {
1191
- cursor: pointer;
1192
- }
1193
-
1194
1186
  .hover\:\[\&_button\[data-expanded\]\]\:trf_scale\(1\.2\):is(:hover, [data-hover]) button[data-expanded] {
1195
1187
  transform: scale(1.2);
1196
1188
  }
@@ -1277,6 +1269,12 @@
1277
1269
  .\[\&\[data-has-image\=\'true\'\]\]\:tablet\:px_medium[data-has-image='true'] {
1278
1270
  padding-inline: var(--spacing-medium);
1279
1271
  }
1272
+ }
1273
+
1274
+ @media screen and (min-width: 37.5625rem) {
1275
+ .hover\:tablet\:before\:vis_visible:is(:hover, [data-hover])::before {
1276
+ visibility: visible;
1277
+ }
1280
1278
  }
1281
1279
 
1282
1280
  @media screen and (min-width: 37.5625rem) and (max-width: 61.31rem) {
@@ -0,0 +1,44 @@
1
+ import { useMemo } from "react";
2
+ import { styled } from "@ndla/styled-system/jsx";
3
+ import { SafeLink } from "@ndla/safelink";
4
+ import { jsx } from "react/jsx-runtime";
5
+
6
+ //#region src/AnchorHeading/AnchorHeading.tsx
7
+ /**
8
+ * Copyright (c) 2021-present, NDLA.
9
+ *
10
+ * This source code is licensed under the GPLv3 license found in the
11
+ * LICENSE file in the root directory of this source tree.
12
+ *
13
+ */
14
+ const StyledAnchor = styled(SafeLink, { base: {
15
+ _before: {
16
+ position: "absolute",
17
+ marginInlineStart: "-0.75em",
18
+ content: "\"#\"",
19
+ visibility: "hidden"
20
+ },
21
+ _hover: {
22
+ textDecoration: "underline",
23
+ tablet: { _before: { visibility: "visible" } }
24
+ }
25
+ } });
26
+ function slugifyUnicode(input) {
27
+ return input.trim().toLowerCase().normalize("NFKC").replace(/[^\p{Letter}\p{Number}]+/gu, "_").replace(/^-+|-+$/g, "");
28
+ }
29
+ const AnchorHeading = ({ children, copyText, lang }) => {
30
+ const slug = useMemo(() => slugifyUnicode(copyText.replace(/ /g, "_")), [copyText]);
31
+ return /* @__PURE__ */ jsx("h2", {
32
+ id: slug,
33
+ lang,
34
+ tabIndex: -1,
35
+ children: /* @__PURE__ */ jsx(StyledAnchor, {
36
+ to: `#${encodeURIComponent(slug)}`,
37
+ children
38
+ })
39
+ });
40
+ };
41
+
42
+ //#endregion
43
+ export { AnchorHeading };
44
+ //# sourceMappingURL=AnchorHeading.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnchorHeading.mjs","names":[],"sources":["../../src/AnchorHeading/AnchorHeading.tsx"],"sourcesContent":["/**\n * Copyright (c) 2021-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { type ReactNode, useMemo } from \"react\";\nimport { SafeLink } from \"@ndla/safelink\";\nimport { styled } from \"@ndla/styled-system/jsx\";\n\nconst StyledAnchor = styled(SafeLink, {\n base: {\n _before: {\n position: \"absolute\",\n marginInlineStart: \"-0.75em\",\n content: '\"#\"',\n visibility: \"hidden\",\n },\n _hover: {\n textDecoration: \"underline\",\n tablet: {\n _before: {\n visibility: \"visible\",\n },\n },\n },\n },\n});\n\ninterface Props {\n // What to render within the h2\n children: ReactNode;\n copyText: string;\n lang?: string;\n}\n\nfunction slugifyUnicode(input: string) {\n return (\n input\n .trim()\n .toLowerCase()\n // Normalize to reduce weird Unicode equivalences\n .normalize(\"NFKC\")\n // Keep any Unicode letters/numbers; replace everything else with \"-\"\n .replace(/[^\\p{Letter}\\p{Number}]+/gu, \"_\")\n // Trim leading/trailing \"-\"\n .replace(/^-+|-+$/g, \"\")\n );\n}\n\nexport const AnchorHeading = ({ children, copyText, lang }: Props) => {\n const slug = useMemo(() => slugifyUnicode(copyText.replace(/ /g, \"_\")), [copyText]);\n\n return (\n <h2 id={slug} lang={lang} tabIndex={-1}>\n <StyledAnchor to={`#${encodeURIComponent(slug)}`}>{children}</StyledAnchor>\n </h2>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAYA,MAAM,eAAe,OAAO,UAAU,EACpC,MAAM;CACJ,SAAS;EACP,UAAU;EACV,mBAAmB;EACnB,SAAS;EACT,YAAY;EACb;CACD,QAAQ;EACN,gBAAgB;EAChB,QAAQ,EACN,SAAS,EACP,YAAY,WACb,EACF;EACF;CACF,EACF,CAAC;AASF,SAAS,eAAe,OAAe;AACrC,QACE,MACG,MAAM,CACN,aAAa,CAEb,UAAU,OAAO,CAEjB,QAAQ,8BAA8B,IAAI,CAE1C,QAAQ,YAAY,GAAG;;AAI9B,MAAa,iBAAiB,EAAE,UAAU,UAAU,WAAkB;CACpE,MAAM,OAAO,cAAc,eAAe,SAAS,QAAQ,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;AAEnF,QACE,oBAAC;EAAG,IAAI;EAAY;EAAM,UAAU;YAClC,oBAAC;GAAa,IAAI,IAAI,mBAAmB,KAAK;GAAK;IAAwB;GACxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"codeLanguageOptions.mjs","names":["codeLanguageOptions: Array<ICodeLangugeOption>"],"sources":["../../src/CodeBlock/codeLanguageOptions.ts"],"sourcesContent":["/**\n * Copyright (c) 2019-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nexport const codeLanguageOptions: Array<ICodeLangugeOption> = [\n {\n title: \"Bash\",\n format: \"bash\",\n },\n {\n title: \"C\",\n format: \"c\",\n },\n {\n title: \"CSharp\",\n format: \"csharp\",\n },\n {\n title: \"CSS\",\n format: \"css\",\n },\n {\n title: \"Diff\",\n format: \"diff\",\n },\n {\n title: \"HTML\",\n format: \"markup\",\n },\n {\n title: \"Ini\",\n format: \"ini\",\n },\n {\n title: \"Java\",\n format: \"java\",\n },\n {\n title: \"Javascript\",\n format: \"js\",\n },\n {\n title: \"JSON\",\n format: \"json\",\n },\n {\n title: \"JSX\",\n format: \"jsx\",\n },\n {\n title: \"Kotlin\",\n format: \"kotlin\",\n },\n {\n title: \"LUA\",\n format: \"lua\",\n },\n {\n title: \"Markdown\",\n format: \"markdown\",\n },\n {\n title: \"Matlab\",\n format: \"matlab\",\n },\n {\n title: \"NSIS\",\n format: \"nsis\",\n },\n {\n title: \"PHP\",\n format: \"php\",\n },\n {\n title: \"Powershell\",\n format: \"powershell\",\n },\n {\n title: \"Python\",\n format: \"python\",\n },\n {\n title: \"Ruby\",\n format: \"ruby\",\n },\n {\n title: \"Rust\",\n format: \"rust\",\n },\n {\n title: \"SQL\",\n format: \"sql\",\n },\n {\n title: \"Text\",\n format: \"text\",\n },\n {\n title: \"VHDL\",\n format: \"vhdl\",\n },\n {\n title: \"XML\",\n format: \"xml\",\n },\n];\n\nexport interface ICodeLangugeOption {\n title: string;\n format: string;\n}\n"],"mappings":";;;;;;;;AAQA,MAAaA,sBAAiD;CAC5D;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACF"}
1
+ {"version":3,"file":"codeLanguageOptions.mjs","names":[],"sources":["../../src/CodeBlock/codeLanguageOptions.ts"],"sourcesContent":["/**\n * Copyright (c) 2019-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nexport const codeLanguageOptions: Array<ICodeLangugeOption> = [\n {\n title: \"Bash\",\n format: \"bash\",\n },\n {\n title: \"C\",\n format: \"c\",\n },\n {\n title: \"CSharp\",\n format: \"csharp\",\n },\n {\n title: \"CSS\",\n format: \"css\",\n },\n {\n title: \"Diff\",\n format: \"diff\",\n },\n {\n title: \"HTML\",\n format: \"markup\",\n },\n {\n title: \"Ini\",\n format: \"ini\",\n },\n {\n title: \"Java\",\n format: \"java\",\n },\n {\n title: \"Javascript\",\n format: \"js\",\n },\n {\n title: \"JSON\",\n format: \"json\",\n },\n {\n title: \"JSX\",\n format: \"jsx\",\n },\n {\n title: \"Kotlin\",\n format: \"kotlin\",\n },\n {\n title: \"LUA\",\n format: \"lua\",\n },\n {\n title: \"Markdown\",\n format: \"markdown\",\n },\n {\n title: \"Matlab\",\n format: \"matlab\",\n },\n {\n title: \"NSIS\",\n format: \"nsis\",\n },\n {\n title: \"PHP\",\n format: \"php\",\n },\n {\n title: \"Powershell\",\n format: \"powershell\",\n },\n {\n title: \"Python\",\n format: \"python\",\n },\n {\n title: \"Ruby\",\n format: \"ruby\",\n },\n {\n title: \"Rust\",\n format: \"rust\",\n },\n {\n title: \"SQL\",\n format: \"sql\",\n },\n {\n title: \"Text\",\n format: \"text\",\n },\n {\n title: \"VHDL\",\n format: \"vhdl\",\n },\n {\n title: \"XML\",\n format: \"xml\",\n },\n];\n\nexport interface ICodeLangugeOption {\n title: string;\n format: string;\n}\n"],"mappings":";;;;;;;;AAQA,MAAa,sBAAiD;CAC5D;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACD;EACE,OAAO;EACP,QAAQ;EACT;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContactBlock.mjs","names":["BackgroundVariant: Record<ContactBlockBackground, SystemStyleObject>"],"sources":["../../src/ContactBlock/ContactBlock.tsx"],"sourcesContent":["/**\n * Copyright (c) 2024-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { useTranslation } from \"react-i18next\";\nimport { Text } from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { SystemStyleObject } from \"@ndla/styled-system/types\";\nimport type { ImageMetaInformationV3DTO } from \"@ndla/types-backend/image-api\";\nimport { LicenseContainerContent } from \"../LicenseByline/EmbedByline\";\n\nexport type ContactBlockBackground = \"strong\" | \"moderate\" | \"subtle\";\n\nconst BackgroundVariant: Record<ContactBlockBackground, SystemStyleObject> = {\n strong: { _before: { backgroundColor: \"surface.brand.3\" } },\n moderate: { _before: { backgroundColor: \"surface.brand.3.moderate\" } },\n subtle: { _before: { backgroundColor: \"surface.brand.3.subtle\" } },\n};\n\nexport const contactBlockBackgrounds = Object.keys(BackgroundVariant) as ContactBlockBackground[];\n\nconst StyledWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n minWidth: \"surface.xxsmall\",\n padding: \"medium\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n boxShadow: \"full\",\n border: \"1px solid\",\n gap: \"medium\",\n position: \"relative\",\n borderColor: \"stroke.default\",\n borderRadius: \"xsmall\",\n overflow: \"hidden\",\n background: \"surface.default\",\n flexDirection: \"column-reverse\",\n tablet: {\n alignItems: \"unset\",\n flexDirection: \"row\",\n },\n },\n});\n\nconst EmailLink = styled(\"a\", {\n base: {\n color: \"text.default\",\n textDecoration: \"underline\",\n _hover: { textDecoration: \"none\" },\n _focusVisible: { textDecoration: \"none\" },\n },\n});\n\nconst HeaderWrapper = styled(\"div\", {\n base: {\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"3xsmall\",\n zIndex: \"base\",\n _before: {\n content: '\"\"',\n position: \"absolute\",\n top: \"-60px\",\n left: \"-50px\",\n right: \"0\",\n bottom: \"0\",\n height: \"calc(100% + 50px)\",\n width: \"surface.3xlarge\",\n transform: \"rotate(-4deg)\",\n zIndex: \"hide\",\n },\n },\n variants: {\n variant: BackgroundVariant,\n imageExists: {\n true: {\n tabletDown: {\n _before: {\n display: \"none\",\n },\n },\n },\n },\n },\n});\n\nconst ImageWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n gap: \"xxsmall\",\n alignItems: \"flex-start\",\n justifyContent: \"flex-start\",\n flexDirection: \"column\",\n zIndex: \"base\",\n tabletDown: {\n _before: {\n content: '\"\"',\n position: \"absolute\",\n top: \"-50px\",\n left: \"-50px\",\n right: \"0\",\n bottom: \"0\",\n height: \"surface.xxsmall\",\n width: \"surface.3xlarge\",\n transform: \"rotate(-4deg)\",\n zIndex: \"hide\",\n },\n },\n },\n variants: {\n variant: BackgroundVariant,\n },\n});\n\nconst StyledImage = styled(\"img\", {\n base: {\n borderRadius: \"xsmall\",\n width: \"surface.xsmall\",\n height: \"surface.xsmall\",\n objectFit: \"cover\",\n },\n});\n\nconst ContentWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"medium\",\n flex: \"1\",\n width: \"100%\",\n },\n});\n\nconst StyledDescription = styled(Text, {\n base: {\n fontFamily: \"serif\",\n },\n});\n\ninterface Props {\n image?: ImageMetaInformationV3DTO;\n jobTitle: string;\n description: string;\n backgroundColor?: ContactBlockBackground;\n imageWidth?: number;\n name: string;\n email: string;\n embedAlt?: string;\n lang?: string;\n}\n\nexport const ContactBlock = ({\n image,\n jobTitle,\n description,\n name,\n email,\n embedAlt,\n lang,\n backgroundColor = \"strong\",\n}: Props) => {\n const { t } = useTranslation();\n return (\n <StyledWrapper data-embed-type=\"contact-block\">\n <ContentWrapper>\n <HeaderWrapper variant={backgroundColor} imageExists={!!image}>\n <Text lang={lang} fontWeight=\"bold\" textStyle=\"heading.small\">\n {name}\n </Text>\n <Text lang={lang}>{jobTitle}</Text>\n <Text>\n {`${t(\"email\")}: `}\n <EmailLink href={`mailto:${email}`}>{email}</EmailLink>\n </Text>\n </HeaderWrapper>\n <StyledDescription textStyle=\"body.large\">{description}</StyledDescription>\n </ContentWrapper>\n {!!image && (\n <ImageWrapper variant={backgroundColor}>\n <StyledImage\n alt={embedAlt !== undefined ? embedAlt : image.alttext.alttext}\n src={image.image.imageUrl}\n width={300}\n height={300}\n />\n <LicenseContainerContent type=\"image\" copyright={image.copyright} />\n </ImageWrapper>\n )}\n </StyledWrapper>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAMA,oBAAuE;CAC3E,QAAQ,EAAE,SAAS,EAAE,iBAAiB,mBAAmB,EAAE;CAC3D,UAAU,EAAE,SAAS,EAAE,iBAAiB,4BAA4B,EAAE;CACtE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,0BAA0B,EAAE;CACnE;AAED,MAAa,0BAA0B,OAAO,KAAK,kBAAkB;AAErE,MAAM,gBAAgB,OAAO,OAAO,EAClC,MAAM;CACJ,SAAS;CACT,UAAU;CACV,SAAS;CACT,YAAY;CACZ,gBAAgB;CAChB,WAAW;CACX,QAAQ;CACR,KAAK;CACL,UAAU;CACV,aAAa;CACb,cAAc;CACd,UAAU;CACV,YAAY;CACZ,eAAe;CACf,QAAQ;EACN,YAAY;EACZ,eAAe;EAChB;CACF,EACF,CAAC;AAEF,MAAM,YAAY,OAAO,KAAK,EAC5B,MAAM;CACJ,OAAO;CACP,gBAAgB;CAChB,QAAQ,EAAE,gBAAgB,QAAQ;CAClC,eAAe,EAAE,gBAAgB,QAAQ;CAC1C,EACF,CAAC;AAEF,MAAM,gBAAgB,OAAO,OAAO;CAClC,MAAM;EACJ,UAAU;EACV,SAAS;EACT,eAAe;EACf,KAAK;EACL,QAAQ;EACR,SAAS;GACP,SAAS;GACT,UAAU;GACV,KAAK;GACL,MAAM;GACN,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,OAAO;GACP,WAAW;GACX,QAAQ;GACT;EACF;CACD,UAAU;EACR,SAAS;EACT,aAAa,EACX,MAAM,EACJ,YAAY,EACV,SAAS,EACP,SAAS,QACV,EACF,EACF,EACF;EACF;CACF,CAAC;AAEF,MAAM,eAAe,OAAO,OAAO;CACjC,MAAM;EACJ,SAAS;EACT,KAAK;EACL,YAAY;EACZ,gBAAgB;EAChB,eAAe;EACf,QAAQ;EACR,YAAY,EACV,SAAS;GACP,SAAS;GACT,UAAU;GACV,KAAK;GACL,MAAM;GACN,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,OAAO;GACP,WAAW;GACX,QAAQ;GACT,EACF;EACF;CACD,UAAU,EACR,SAAS,mBACV;CACF,CAAC;AAEF,MAAM,cAAc,OAAO,OAAO,EAChC,MAAM;CACJ,cAAc;CACd,OAAO;CACP,QAAQ;CACR,WAAW;CACZ,EACF,CAAC;AAEF,MAAM,iBAAiB,OAAO,OAAO,EACnC,MAAM;CACJ,SAAS;CACT,eAAe;CACf,KAAK;CACL,MAAM;CACN,OAAO;CACR,EACF,CAAC;AAEF,MAAM,oBAAoB,OAAO,MAAM,EACrC,MAAM,EACJ,YAAY,SACb,EACF,CAAC;AAcF,MAAa,gBAAgB,EAC3B,OACA,UACA,aACA,MACA,OACA,UACA,MACA,kBAAkB,eACP;CACX,MAAM,EAAE,MAAM,gBAAgB;AAC9B,QACE,qBAAC;EAAc,mBAAgB;aAC7B,qBAAC,6BACC,qBAAC;GAAc,SAAS;GAAiB,aAAa,CAAC,CAAC;;IACtD,oBAAC;KAAW;KAAM,YAAW;KAAO,WAAU;eAC3C;MACI;IACP,oBAAC;KAAW;eAAO;MAAgB;IACnC,qBAAC,mBACE,GAAG,EAAE,QAAQ,CAAC,KACf,oBAAC;KAAU,MAAM,UAAU;eAAU;MAAkB,IAClD;;IACO,EAChB,oBAAC;GAAkB,WAAU;aAAc;IAAgC,IAC5D,EAChB,CAAC,CAAC,SACD,qBAAC;GAAa,SAAS;cACrB,oBAAC;IACC,KAAK,aAAa,SAAY,WAAW,MAAM,QAAQ;IACvD,KAAK,MAAM,MAAM;IACjB,OAAO;IACP,QAAQ;KACR,EACF,oBAAC;IAAwB,MAAK;IAAQ,WAAW,MAAM;KAAa;IACvD;GAEH"}
1
+ {"version":3,"file":"ContactBlock.mjs","names":[],"sources":["../../src/ContactBlock/ContactBlock.tsx"],"sourcesContent":["/**\n * Copyright (c) 2024-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { useTranslation } from \"react-i18next\";\nimport { Text } from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { SystemStyleObject } from \"@ndla/styled-system/types\";\nimport type { ImageMetaInformationV3DTO } from \"@ndla/types-backend/image-api\";\nimport { LicenseContainerContent } from \"../LicenseByline/EmbedByline\";\n\nexport type ContactBlockBackground = \"strong\" | \"moderate\" | \"subtle\";\n\nconst BackgroundVariant: Record<ContactBlockBackground, SystemStyleObject> = {\n strong: { _before: { backgroundColor: \"surface.brand.3\" } },\n moderate: { _before: { backgroundColor: \"surface.brand.3.moderate\" } },\n subtle: { _before: { backgroundColor: \"surface.brand.3.subtle\" } },\n};\n\nexport const contactBlockBackgrounds = Object.keys(BackgroundVariant) as ContactBlockBackground[];\n\nconst StyledWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n minWidth: \"surface.xxsmall\",\n padding: \"medium\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n boxShadow: \"full\",\n border: \"1px solid\",\n gap: \"medium\",\n position: \"relative\",\n borderColor: \"stroke.default\",\n borderRadius: \"xsmall\",\n overflow: \"hidden\",\n background: \"surface.default\",\n flexDirection: \"column-reverse\",\n tablet: {\n alignItems: \"unset\",\n flexDirection: \"row\",\n },\n },\n});\n\nconst EmailLink = styled(\"a\", {\n base: {\n color: \"text.default\",\n textDecoration: \"underline\",\n _hover: { textDecoration: \"none\" },\n _focusVisible: { textDecoration: \"none\" },\n },\n});\n\nconst HeaderWrapper = styled(\"div\", {\n base: {\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"3xsmall\",\n zIndex: \"base\",\n _before: {\n content: '\"\"',\n position: \"absolute\",\n top: \"-60px\",\n left: \"-50px\",\n right: \"0\",\n bottom: \"0\",\n height: \"calc(100% + 50px)\",\n width: \"surface.3xlarge\",\n transform: \"rotate(-4deg)\",\n zIndex: \"hide\",\n },\n },\n variants: {\n variant: BackgroundVariant,\n imageExists: {\n true: {\n tabletDown: {\n _before: {\n display: \"none\",\n },\n },\n },\n },\n },\n});\n\nconst ImageWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n gap: \"xxsmall\",\n alignItems: \"flex-start\",\n justifyContent: \"flex-start\",\n flexDirection: \"column\",\n zIndex: \"base\",\n tabletDown: {\n _before: {\n content: '\"\"',\n position: \"absolute\",\n top: \"-50px\",\n left: \"-50px\",\n right: \"0\",\n bottom: \"0\",\n height: \"surface.xxsmall\",\n width: \"surface.3xlarge\",\n transform: \"rotate(-4deg)\",\n zIndex: \"hide\",\n },\n },\n },\n variants: {\n variant: BackgroundVariant,\n },\n});\n\nconst StyledImage = styled(\"img\", {\n base: {\n borderRadius: \"xsmall\",\n width: \"surface.xsmall\",\n height: \"surface.xsmall\",\n objectFit: \"cover\",\n },\n});\n\nconst ContentWrapper = styled(\"div\", {\n base: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"medium\",\n flex: \"1\",\n width: \"100%\",\n },\n});\n\nconst StyledDescription = styled(Text, {\n base: {\n fontFamily: \"serif\",\n },\n});\n\ninterface Props {\n image?: ImageMetaInformationV3DTO;\n jobTitle: string;\n description: string;\n backgroundColor?: ContactBlockBackground;\n imageWidth?: number;\n name: string;\n email: string;\n embedAlt?: string;\n lang?: string;\n}\n\nexport const ContactBlock = ({\n image,\n jobTitle,\n description,\n name,\n email,\n embedAlt,\n lang,\n backgroundColor = \"strong\",\n}: Props) => {\n const { t } = useTranslation();\n return (\n <StyledWrapper data-embed-type=\"contact-block\">\n <ContentWrapper>\n <HeaderWrapper variant={backgroundColor} imageExists={!!image}>\n <Text lang={lang} fontWeight=\"bold\" textStyle=\"heading.small\">\n {name}\n </Text>\n <Text lang={lang}>{jobTitle}</Text>\n <Text>\n {`${t(\"email\")}: `}\n <EmailLink href={`mailto:${email}`}>{email}</EmailLink>\n </Text>\n </HeaderWrapper>\n <StyledDescription textStyle=\"body.large\">{description}</StyledDescription>\n </ContentWrapper>\n {!!image && (\n <ImageWrapper variant={backgroundColor}>\n <StyledImage\n alt={embedAlt !== undefined ? embedAlt : image.alttext.alttext}\n src={image.image.imageUrl}\n width={300}\n height={300}\n />\n <LicenseContainerContent type=\"image\" copyright={image.copyright} />\n </ImageWrapper>\n )}\n </StyledWrapper>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAM,oBAAuE;CAC3E,QAAQ,EAAE,SAAS,EAAE,iBAAiB,mBAAmB,EAAE;CAC3D,UAAU,EAAE,SAAS,EAAE,iBAAiB,4BAA4B,EAAE;CACtE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,0BAA0B,EAAE;CACnE;AAED,MAAa,0BAA0B,OAAO,KAAK,kBAAkB;AAErE,MAAM,gBAAgB,OAAO,OAAO,EAClC,MAAM;CACJ,SAAS;CACT,UAAU;CACV,SAAS;CACT,YAAY;CACZ,gBAAgB;CAChB,WAAW;CACX,QAAQ;CACR,KAAK;CACL,UAAU;CACV,aAAa;CACb,cAAc;CACd,UAAU;CACV,YAAY;CACZ,eAAe;CACf,QAAQ;EACN,YAAY;EACZ,eAAe;EAChB;CACF,EACF,CAAC;AAEF,MAAM,YAAY,OAAO,KAAK,EAC5B,MAAM;CACJ,OAAO;CACP,gBAAgB;CAChB,QAAQ,EAAE,gBAAgB,QAAQ;CAClC,eAAe,EAAE,gBAAgB,QAAQ;CAC1C,EACF,CAAC;AAEF,MAAM,gBAAgB,OAAO,OAAO;CAClC,MAAM;EACJ,UAAU;EACV,SAAS;EACT,eAAe;EACf,KAAK;EACL,QAAQ;EACR,SAAS;GACP,SAAS;GACT,UAAU;GACV,KAAK;GACL,MAAM;GACN,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,OAAO;GACP,WAAW;GACX,QAAQ;GACT;EACF;CACD,UAAU;EACR,SAAS;EACT,aAAa,EACX,MAAM,EACJ,YAAY,EACV,SAAS,EACP,SAAS,QACV,EACF,EACF,EACF;EACF;CACF,CAAC;AAEF,MAAM,eAAe,OAAO,OAAO;CACjC,MAAM;EACJ,SAAS;EACT,KAAK;EACL,YAAY;EACZ,gBAAgB;EAChB,eAAe;EACf,QAAQ;EACR,YAAY,EACV,SAAS;GACP,SAAS;GACT,UAAU;GACV,KAAK;GACL,MAAM;GACN,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,OAAO;GACP,WAAW;GACX,QAAQ;GACT,EACF;EACF;CACD,UAAU,EACR,SAAS,mBACV;CACF,CAAC;AAEF,MAAM,cAAc,OAAO,OAAO,EAChC,MAAM;CACJ,cAAc;CACd,OAAO;CACP,QAAQ;CACR,WAAW;CACZ,EACF,CAAC;AAEF,MAAM,iBAAiB,OAAO,OAAO,EACnC,MAAM;CACJ,SAAS;CACT,eAAe;CACf,KAAK;CACL,MAAM;CACN,OAAO;CACR,EACF,CAAC;AAEF,MAAM,oBAAoB,OAAO,MAAM,EACrC,MAAM,EACJ,YAAY,SACb,EACF,CAAC;AAcF,MAAa,gBAAgB,EAC3B,OACA,UACA,aACA,MACA,OACA,UACA,MACA,kBAAkB,eACP;CACX,MAAM,EAAE,MAAM,gBAAgB;AAC9B,QACE,qBAAC;EAAc,mBAAgB;aAC7B,qBAAC,6BACC,qBAAC;GAAc,SAAS;GAAiB,aAAa,CAAC,CAAC;;IACtD,oBAAC;KAAW;KAAM,YAAW;KAAO,WAAU;eAC3C;MACI;IACP,oBAAC;KAAW;eAAO;MAAgB;IACnC,qBAAC,mBACE,GAAG,EAAE,QAAQ,CAAC,KACf,oBAAC;KAAU,MAAM,UAAU;eAAU;MAAkB,IAClD;;IACO,EAChB,oBAAC;GAAkB,WAAU;aAAc;IAAgC,IAC5D,EAChB,CAAC,CAAC,SACD,qBAAC;GAAa,SAAS;cACrB,oBAAC;IACC,KAAK,aAAa,SAAY,WAAW,MAAM,QAAQ;IACvD,KAAK,MAAM,MAAM;IACjB,OAAO;IACP,QAAQ;KACR,EACF,oBAAC;IAAwB,MAAK;IAAQ,WAAW,MAAM;KAAa;IACvD;GAEH"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContentTypeBadge.mjs","names":["contentTypeToBadgeVariantMap: Record<ContentType, BadgeVariant>","contentTypes.SUBJECT_MATERIAL","contentTypes.TASKS_AND_ACTIVITIES","contentTypes.ASSESSMENT_RESOURCES","contentTypes.SUBJECT","contentTypes.SOURCE_MATERIAL","contentTypes.LEARNING_PATH","contentTypes.TOPIC","contentTypes.MULTIDISCIPLINARY","contentTypes.CONCEPT","contentTypes.EXTERNAL","contentTypes.IMAGE","contentTypes.AUDIO","contentTypes.PODCAST","contentTypes.VIDEO","contentTypes.MISSING","contentTypes.PODCAST_SERIES","contentTypes.GLOSS","contentTypes.PROGRAMME","contentTypes.FRONTPAGE_ARTICLE"],"sources":["../../src/ContentTypeBadge/ContentTypeBadge.tsx"],"sourcesContent":["/**\n * Copyright (c) 2024-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { forwardRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Badge, type BadgeProps, type BadgeVariant } from \"@ndla/primitives\";\nimport * as contentTypes from \"../model/ContentType\";\n\nexport interface ContentTypeBadgeProps extends Omit<BadgeProps, \"colorTheme\"> {\n contentType: ContentType | undefined;\n}\n\nexport type StrictContentType =\n | typeof contentTypes.SUBJECT_MATERIAL\n | typeof contentTypes.TASKS_AND_ACTIVITIES\n | typeof contentTypes.ASSESSMENT_RESOURCES\n | typeof contentTypes.SUBJECT\n | typeof contentTypes.SOURCE_MATERIAL\n | typeof contentTypes.LEARNING_PATH\n | typeof contentTypes.TOPIC\n | typeof contentTypes.MULTIDISCIPLINARY\n | typeof contentTypes.CONCEPT\n | typeof contentTypes.EXTERNAL\n | typeof contentTypes.IMAGE\n | typeof contentTypes.AUDIO\n | typeof contentTypes.VIDEO\n | typeof contentTypes.MISSING\n | typeof contentTypes.PODCAST\n | typeof contentTypes.GLOSS\n | typeof contentTypes.PROGRAMME\n | typeof contentTypes.PODCAST_SERIES\n | typeof contentTypes.FRONTPAGE_ARTICLE;\n\nexport type ContentType =\n | StrictContentType\n // This allows for us to fallback to string without getting a ts error, while still keeping intellisense\n | (string & {});\n\nexport const contentTypeToBadgeVariantMap: Record<ContentType, BadgeVariant> = {\n [contentTypes.SUBJECT_MATERIAL]: \"brand1\",\n [contentTypes.TASKS_AND_ACTIVITIES]: \"brand2\",\n [contentTypes.ASSESSMENT_RESOURCES]: \"brand2\",\n [contentTypes.SUBJECT]: \"neutral\",\n [contentTypes.SOURCE_MATERIAL]: \"brand1\",\n [contentTypes.LEARNING_PATH]: \"brand3\",\n [contentTypes.TOPIC]: \"neutral\",\n [contentTypes.MULTIDISCIPLINARY]: \"neutral\",\n [contentTypes.CONCEPT]: \"brand1\",\n [contentTypes.EXTERNAL]: \"brand2\",\n [contentTypes.IMAGE]: \"brand1\",\n [contentTypes.AUDIO]: \"brand1\",\n [contentTypes.PODCAST]: \"brand1\",\n [contentTypes.VIDEO]: \"brand1\",\n [contentTypes.MISSING]: \"neutral\",\n [contentTypes.PODCAST_SERIES]: \"brand1\",\n [contentTypes.GLOSS]: \"brand1\",\n [contentTypes.PROGRAMME]: \"neutral\",\n [contentTypes.FRONTPAGE_ARTICLE]: \"brand2\",\n};\n\nexport const ContentTypeBadge = forwardRef<HTMLDivElement, ContentTypeBadgeProps>(\n ({ contentType, children, ...props }, ref) => {\n const { t } = useTranslation();\n return (\n <Badge\n colorTheme={contentTypeToBadgeVariantMap[contentType ?? \"missing\"] ?? contentTypeToBadgeVariantMap[\"missing\"]}\n {...props}\n ref={ref}\n >\n {children ?? t(`contentTypes.${contentType}`)}\n </Badge>\n );\n },\n);\n"],"mappings":";;;;;;;;;;;;;;AA2CA,MAAaA,+BAAkE;EAC5EC,mBAAgC;EAChCC,uBAAoC;EACpCC,uBAAoC;EACpCC,UAAuB;EACvBC,kBAA+B;EAC/BC,gBAA6B;EAC7BC,QAAqB;EACrBC,oBAAiC;EACjCC,UAAuB;EACvBC,WAAwB;EACxBC,QAAqB;EACrBC,QAAqB;EACrBC,UAAuB;EACvBC,QAAqB;EACrBC,UAAuB;EACvBC,iBAA8B;EAC9BC,QAAqB;EACrBC,YAAyB;EACzBC,oBAAiC;CACnC;AAED,MAAa,mBAAmB,YAC7B,EAAE,aAAa,UAAU,GAAG,SAAS,QAAQ;CAC5C,MAAM,EAAE,MAAM,gBAAgB;AAC9B,QACE,oBAAC;EACC,YAAY,6BAA6B,eAAe,cAAc,6BAA6B;EACnG,GAAI;EACC;YAEJ,YAAY,EAAE,gBAAgB,cAAc;GACvC;EAGb"}
1
+ {"version":3,"file":"ContentTypeBadge.mjs","names":["contentTypes.SUBJECT_MATERIAL","contentTypes.TASKS_AND_ACTIVITIES","contentTypes.ASSESSMENT_RESOURCES","contentTypes.SUBJECT","contentTypes.SOURCE_MATERIAL","contentTypes.LEARNING_PATH","contentTypes.TOPIC","contentTypes.MULTIDISCIPLINARY","contentTypes.CONCEPT","contentTypes.EXTERNAL","contentTypes.IMAGE","contentTypes.AUDIO","contentTypes.PODCAST","contentTypes.VIDEO","contentTypes.MISSING","contentTypes.PODCAST_SERIES","contentTypes.GLOSS","contentTypes.PROGRAMME","contentTypes.FRONTPAGE_ARTICLE"],"sources":["../../src/ContentTypeBadge/ContentTypeBadge.tsx"],"sourcesContent":["/**\n * Copyright (c) 2024-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { forwardRef } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Badge, type BadgeProps, type BadgeVariant } from \"@ndla/primitives\";\nimport * as contentTypes from \"../model/ContentType\";\n\nexport interface ContentTypeBadgeProps extends Omit<BadgeProps, \"colorTheme\"> {\n contentType: ContentType | undefined;\n}\n\nexport type StrictContentType =\n | typeof contentTypes.SUBJECT_MATERIAL\n | typeof contentTypes.TASKS_AND_ACTIVITIES\n | typeof contentTypes.ASSESSMENT_RESOURCES\n | typeof contentTypes.SUBJECT\n | typeof contentTypes.SOURCE_MATERIAL\n | typeof contentTypes.LEARNING_PATH\n | typeof contentTypes.TOPIC\n | typeof contentTypes.MULTIDISCIPLINARY\n | typeof contentTypes.CONCEPT\n | typeof contentTypes.EXTERNAL\n | typeof contentTypes.IMAGE\n | typeof contentTypes.AUDIO\n | typeof contentTypes.VIDEO\n | typeof contentTypes.MISSING\n | typeof contentTypes.PODCAST\n | typeof contentTypes.GLOSS\n | typeof contentTypes.PROGRAMME\n | typeof contentTypes.PODCAST_SERIES\n | typeof contentTypes.FRONTPAGE_ARTICLE;\n\nexport type ContentType =\n | StrictContentType\n // This allows for us to fallback to string without getting a ts error, while still keeping intellisense\n | (string & {});\n\nexport const contentTypeToBadgeVariantMap: Record<ContentType, BadgeVariant> = {\n [contentTypes.SUBJECT_MATERIAL]: \"brand1\",\n [contentTypes.TASKS_AND_ACTIVITIES]: \"brand2\",\n [contentTypes.ASSESSMENT_RESOURCES]: \"brand2\",\n [contentTypes.SUBJECT]: \"neutral\",\n [contentTypes.SOURCE_MATERIAL]: \"brand1\",\n [contentTypes.LEARNING_PATH]: \"brand3\",\n [contentTypes.TOPIC]: \"neutral\",\n [contentTypes.MULTIDISCIPLINARY]: \"neutral\",\n [contentTypes.CONCEPT]: \"brand1\",\n [contentTypes.EXTERNAL]: \"brand2\",\n [contentTypes.IMAGE]: \"brand1\",\n [contentTypes.AUDIO]: \"brand1\",\n [contentTypes.PODCAST]: \"brand1\",\n [contentTypes.VIDEO]: \"brand1\",\n [contentTypes.MISSING]: \"neutral\",\n [contentTypes.PODCAST_SERIES]: \"brand1\",\n [contentTypes.GLOSS]: \"brand1\",\n [contentTypes.PROGRAMME]: \"neutral\",\n [contentTypes.FRONTPAGE_ARTICLE]: \"brand2\",\n};\n\nexport const ContentTypeBadge = forwardRef<HTMLDivElement, ContentTypeBadgeProps>(\n ({ contentType, children, ...props }, ref) => {\n const { t } = useTranslation();\n return (\n <Badge\n colorTheme={contentTypeToBadgeVariantMap[contentType ?? \"missing\"] ?? contentTypeToBadgeVariantMap[\"missing\"]}\n {...props}\n ref={ref}\n >\n {children ?? t(`contentTypes.${contentType}`)}\n </Badge>\n );\n },\n);\n"],"mappings":";;;;;;;;;;;;;;AA2CA,MAAa,+BAAkE;EAC5EA,mBAAgC;EAChCC,uBAAoC;EACpCC,uBAAoC;EACpCC,UAAuB;EACvBC,kBAA+B;EAC/BC,gBAA6B;EAC7BC,QAAqB;EACrBC,oBAAiC;EACjCC,UAAuB;EACvBC,WAAwB;EACxBC,QAAqB;EACrBC,QAAqB;EACrBC,UAAuB;EACvBC,QAAqB;EACrBC,UAAuB;EACvBC,iBAA8B;EAC9BC,QAAqB;EACrBC,YAAyB;EACzBC,oBAAiC;CACnC;AAED,MAAa,mBAAmB,YAC7B,EAAE,aAAa,UAAU,GAAG,SAAS,QAAQ;CAC5C,MAAM,EAAE,MAAM,gBAAgB;AAC9B,QACE,oBAAC;EACC,YAAY,6BAA6B,eAAe,cAAc,6BAA6B;EACnG,GAAI;EACC;YAEJ,YAAY,EAAE,gBAAgB,cAAc;GACvC;EAGb"}
@@ -1 +1 @@
1
- {"version":3,"file":"ImageEmbed.mjs","names":["actualSize: FigureSize"],"sources":["../../src/Embed/ImageEmbed.tsx"],"sourcesContent":["/**\n * Copyright (c) 2023-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport parse from \"html-react-parser\";\nimport { type ReactNode, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { AddLine } from \"@ndla/icons\";\nimport { Figure, type FigureSize, type FigureVariantProps, Image } from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { ImageEmbedData, ImageMetaData } from \"@ndla/types-embed\";\nimport { EmbedErrorPlaceholder } from \"./EmbedErrorPlaceholder\";\nimport type { RenderContext } from \"./types\";\nimport { EmbedByline } from \"../LicenseByline/EmbedByline\";\nimport { licenseAttributes } from \"../utils/licenseAttributes\";\n\ninterface Props {\n embed: ImageMetaData;\n previewAlt?: boolean;\n lang?: string;\n renderContext?: RenderContext;\n children?: ReactNode;\n}\n\nexport interface Author {\n name: string;\n type: string;\n}\n\nconst getFigureProps = (size?: string, float?: string): FigureVariantProps => {\n const actualFloat = float === \"left\" ? \"left\" : float === \"right\" ? \"right\" : undefined;\n const replacedSize = size?.replace(\"-hide-byline\", \"\") ?? \"full\";\n const actualSize: FigureSize = (replacedSize === \"fullwidth\" ? \"full\" : replacedSize) as FigureSize;\n return {\n float: actualFloat,\n // Figure expects you to set a size when floating. If you don't, the figure will simply take up the available width. Fallback to medium in those cases.\n size: actualSize === \"full\" && float ? \"medium\" : actualSize,\n };\n};\n\nconst getSizes = (size?: string, align?: string) => {\n if (align && size === \"full\") {\n return \"(min-width: 1024px) 512px, (min-width: 768px) 350px, 100vw\";\n }\n if (align && size === \"small\") {\n return \"(min-width: 1024px) 350px, (min-width: 768px) 180px, 100vw\";\n }\n if (align && size === \"xsmall\") {\n return \"(min-width: 1024px) 180px, (min-width: 768px) 180px, 100vw\";\n }\n return \"(min-width: 1024px) 1024px, 100vw\";\n};\n\nexport const getFocalPoint = (data: ImageEmbedData) => {\n const focalX = Number.parseFloat(data.focalX ?? \"\");\n const focalY = Number.parseFloat(data.focalY ?? \"\");\n if (!Number.isNaN(focalX) && !Number.isNaN(focalY)) {\n return { x: focalX, y: focalY };\n }\n return undefined;\n};\n\nexport const getCrop = (data: ImageEmbedData) => {\n const lowerRightX = Number.parseFloat(data.lowerRightX ?? \"\");\n const lowerRightY = Number.parseFloat(data.lowerRightY ?? \"\");\n const upperLeftX = Number.parseFloat(data.upperLeftX ?? \"\");\n const upperLeftY = Number.parseFloat(data.upperLeftY ?? \"\");\n if (\n !Number.isNaN(lowerRightX) &&\n !Number.isNaN(lowerRightY) &&\n !Number.isNaN(upperLeftX) &&\n !Number.isNaN(upperLeftY)\n ) {\n return {\n startX: lowerRightX,\n startY: lowerRightY,\n endX: upperLeftX,\n endY: upperLeftY,\n };\n }\n return undefined;\n};\n\nconst expandedSizes = \"(min-width: 1024px) 1024px, 100vw\";\n\nconst ImageWrapper = styled(\"div\", {\n base: {\n overflow: \"hidden\",\n position: \"relative\",\n width: \"100%\",\n \"& img\": {\n width: \"100%\",\n },\n },\n variants: {\n svg: {\n true: {\n display: \"flex\",\n justifyContent: \"center\",\n },\n false: {},\n },\n border: {\n true: {\n border: \"1px solid\",\n borderColor: \"stroke.subtle\",\n borderRadius: \"xsmall\",\n \"& img\": {\n borderRadius: \"0\",\n },\n },\n false: {},\n },\n expandable: {\n true: {\n cursor: \"pointer\",\n },\n false: {},\n },\n },\n});\n\nconst StyledFigure = styled(Figure, {\n base: {\n zIndex: \"docked\",\n _hover: {\n \"& [data-byline-button]\": {\n background: \"background.default\",\n },\n \"& button[data-expanded]\": {\n transform: \"scale(1.2)\",\n },\n },\n \"& button[data-expanded='true']\": {\n \"& svg\": {\n transform: \"rotate(-45deg)\",\n },\n },\n },\n});\n\nconst ExpandButton = styled(\n \"button\",\n {\n base: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n position: \"absolute\",\n padding: \"0\",\n top: \"xsmall\",\n right: \"xsmall\",\n width: \"medium\",\n height: \"medium\",\n border: \"2px solid\",\n borderColor: \"background.default\",\n transitionProperty: \"transform, background-color, color\",\n transitionDuration: \"normal\",\n transitionTimingFunction: \"ease-out\",\n color: \"background.default\",\n backgroundColor: \"surface.action\",\n borderRadius: \"large\",\n \"& svg\": {\n transitionProperty: \"transform\",\n transitionDuration: \"normal\",\n transitionTimingFunction: \"ease-out\",\n },\n tabletDown: {\n display: \"none\",\n },\n _print: {\n display: \"none\",\n },\n },\n },\n { defaultProps: { type: \"button\" } },\n);\n\nexport const ImageEmbed = ({ embed, previewAlt, lang, renderContext = \"article\", children }: Props) => {\n const [expanded, setExpanded] = useState(false);\n const figureProps = getFigureProps(embed.embedData.size, embed.embedData.align);\n const { t } = useTranslation();\n\n const parsedDescription = useMemo(() => {\n if (embed.embedData.caption || renderContext === \"article\") {\n return embed.embedData.caption ? parse(embed.embedData.caption) : undefined;\n }\n if (embed.status === \"success\" && embed.data.caption.caption) {\n return parse(embed.data.caption.caption);\n }\n }, [embed, renderContext]);\n\n if (embed.status === \"error\") {\n return <EmbedErrorPlaceholder type={\"image\"} figureType={figureProps?.size} float={figureProps?.float} />;\n }\n\n const { data, embedData } = embed;\n\n const altText = embedData.alt || \"\";\n\n const sizes = getSizes(embedData.size, embedData.align);\n\n const focalPoint = getFocalPoint(embedData);\n const crop = getCrop(embedData);\n\n const toggleImageSize = () => {\n setExpanded((prev) => !prev);\n };\n\n const licenseProps = licenseAttributes(data.copyright.license.license, lang, embedData.url);\n\n const figureSize = figureProps?.float ? (figureProps?.size ?? \"medium\") : \"full\";\n\n return (\n <StyledFigure\n float={figureProps?.float}\n size={expanded ? \"full\" : figureSize}\n data-embed-type=\"image\"\n {...licenseProps}\n >\n {children}\n <ImageWrapper border={embedData.border === \"true\"} expandable={!!figureProps?.float}>\n <Image\n focalPoint={focalPoint}\n contentType={data.image.contentType}\n crop={crop}\n sizes={expanded ? expandedSizes : sizes}\n alt={altText}\n src={data.image.imageUrl}\n variants={data.image.variants}\n lang={lang}\n onClick={figureProps?.float ? toggleImageSize : undefined}\n variant=\"rounded\"\n {...data.image.dimensions}\n />\n {(embedData.align === \"right\" || embedData.align === \"left\") && (\n <ExpandButton\n aria-label={t(`license.images.itemImage.zoom${expanded ? \"Out\" : \"\"}ImageButtonLabel`)}\n onClick={toggleImageSize}\n data-expanded={expanded}\n >\n <AddLine />\n </ExpandButton>\n )}\n </ImageWrapper>\n <EmbedByline\n type=\"image\"\n copyright={data.copyright}\n description={parsedDescription}\n hideDescription={embedData.hideCaption === \"true\"}\n hideCopyright={embedData.hideByline === \"true\"}\n visibleAlt={previewAlt ? embed.embedData.alt : \"\"}\n />\n </StyledFigure>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ImageEmbed.mjs","names":[],"sources":["../../src/Embed/ImageEmbed.tsx"],"sourcesContent":["/**\n * Copyright (c) 2023-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport parse from \"html-react-parser\";\nimport { type ReactNode, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { AddLine } from \"@ndla/icons\";\nimport { Figure, type FigureSize, type FigureVariantProps, Image } from \"@ndla/primitives\";\nimport { styled } from \"@ndla/styled-system/jsx\";\nimport type { ImageEmbedData, ImageMetaData } from \"@ndla/types-embed\";\nimport { EmbedErrorPlaceholder } from \"./EmbedErrorPlaceholder\";\nimport type { RenderContext } from \"./types\";\nimport { EmbedByline } from \"../LicenseByline/EmbedByline\";\nimport { licenseAttributes } from \"../utils/licenseAttributes\";\n\ninterface Props {\n embed: ImageMetaData;\n previewAlt?: boolean;\n lang?: string;\n renderContext?: RenderContext;\n children?: ReactNode;\n}\n\nexport interface Author {\n name: string;\n type: string;\n}\n\nconst getFigureProps = (size?: string, float?: string): FigureVariantProps => {\n const actualFloat = float === \"left\" ? \"left\" : float === \"right\" ? \"right\" : undefined;\n const replacedSize = size?.replace(\"-hide-byline\", \"\") ?? \"full\";\n const actualSize: FigureSize = (replacedSize === \"fullwidth\" ? \"full\" : replacedSize) as FigureSize;\n return {\n float: actualFloat,\n // Figure expects you to set a size when floating. If you don't, the figure will simply take up the available width. Fallback to medium in those cases.\n size: actualSize === \"full\" && float ? \"medium\" : actualSize,\n };\n};\n\nconst getSizes = (size?: string, align?: string) => {\n if (align && size === \"full\") {\n return \"(min-width: 1024px) 512px, (min-width: 768px) 350px, 100vw\";\n }\n if (align && size === \"small\") {\n return \"(min-width: 1024px) 350px, (min-width: 768px) 180px, 100vw\";\n }\n if (align && size === \"xsmall\") {\n return \"(min-width: 1024px) 180px, (min-width: 768px) 180px, 100vw\";\n }\n return \"(min-width: 1024px) 1024px, 100vw\";\n};\n\nexport const getFocalPoint = (data: ImageEmbedData) => {\n const focalX = Number.parseFloat(data.focalX ?? \"\");\n const focalY = Number.parseFloat(data.focalY ?? \"\");\n if (!Number.isNaN(focalX) && !Number.isNaN(focalY)) {\n return { x: focalX, y: focalY };\n }\n return undefined;\n};\n\nexport const getCrop = (data: ImageEmbedData) => {\n const lowerRightX = Number.parseFloat(data.lowerRightX ?? \"\");\n const lowerRightY = Number.parseFloat(data.lowerRightY ?? \"\");\n const upperLeftX = Number.parseFloat(data.upperLeftX ?? \"\");\n const upperLeftY = Number.parseFloat(data.upperLeftY ?? \"\");\n if (\n !Number.isNaN(lowerRightX) &&\n !Number.isNaN(lowerRightY) &&\n !Number.isNaN(upperLeftX) &&\n !Number.isNaN(upperLeftY)\n ) {\n return {\n startX: lowerRightX,\n startY: lowerRightY,\n endX: upperLeftX,\n endY: upperLeftY,\n };\n }\n return undefined;\n};\n\nconst expandedSizes = \"(min-width: 1024px) 1024px, 100vw\";\n\nconst ImageWrapper = styled(\"div\", {\n base: {\n overflow: \"hidden\",\n position: \"relative\",\n width: \"100%\",\n \"& img\": {\n width: \"100%\",\n },\n },\n variants: {\n svg: {\n true: {\n display: \"flex\",\n justifyContent: \"center\",\n },\n false: {},\n },\n border: {\n true: {\n border: \"1px solid\",\n borderColor: \"stroke.subtle\",\n borderRadius: \"xsmall\",\n \"& img\": {\n borderRadius: \"0\",\n },\n },\n false: {},\n },\n expandable: {\n true: {\n cursor: \"pointer\",\n },\n false: {},\n },\n },\n});\n\nconst StyledFigure = styled(Figure, {\n base: {\n zIndex: \"docked\",\n _hover: {\n \"& [data-byline-button]\": {\n background: \"background.default\",\n },\n \"& button[data-expanded]\": {\n transform: \"scale(1.2)\",\n },\n },\n \"& button[data-expanded='true']\": {\n \"& svg\": {\n transform: \"rotate(-45deg)\",\n },\n },\n },\n});\n\nconst ExpandButton = styled(\n \"button\",\n {\n base: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n position: \"absolute\",\n padding: \"0\",\n top: \"xsmall\",\n right: \"xsmall\",\n width: \"medium\",\n height: \"medium\",\n border: \"2px solid\",\n borderColor: \"background.default\",\n transitionProperty: \"transform, background-color, color\",\n transitionDuration: \"normal\",\n transitionTimingFunction: \"ease-out\",\n color: \"background.default\",\n backgroundColor: \"surface.action\",\n borderRadius: \"large\",\n \"& svg\": {\n transitionProperty: \"transform\",\n transitionDuration: \"normal\",\n transitionTimingFunction: \"ease-out\",\n },\n tabletDown: {\n display: \"none\",\n },\n _print: {\n display: \"none\",\n },\n },\n },\n { defaultProps: { type: \"button\" } },\n);\n\nexport const ImageEmbed = ({ embed, previewAlt, lang, renderContext = \"article\", children }: Props) => {\n const [expanded, setExpanded] = useState(false);\n const figureProps = getFigureProps(embed.embedData.size, embed.embedData.align);\n const { t } = useTranslation();\n\n const parsedDescription = useMemo(() => {\n if (embed.embedData.caption || renderContext === \"article\") {\n return embed.embedData.caption ? parse(embed.embedData.caption) : undefined;\n }\n if (embed.status === \"success\" && embed.data.caption.caption) {\n return parse(embed.data.caption.caption);\n }\n }, [embed, renderContext]);\n\n if (embed.status === \"error\") {\n return <EmbedErrorPlaceholder type={\"image\"} figureType={figureProps?.size} float={figureProps?.float} />;\n }\n\n const { data, embedData } = embed;\n\n const altText = embedData.alt || \"\";\n\n const sizes = getSizes(embedData.size, embedData.align);\n\n const focalPoint = getFocalPoint(embedData);\n const crop = getCrop(embedData);\n\n const toggleImageSize = () => {\n setExpanded((prev) => !prev);\n };\n\n const licenseProps = licenseAttributes(data.copyright.license.license, lang, embedData.url);\n\n const figureSize = figureProps?.float ? (figureProps?.size ?? \"medium\") : \"full\";\n\n return (\n <StyledFigure\n float={figureProps?.float}\n size={expanded ? \"full\" : figureSize}\n data-embed-type=\"image\"\n {...licenseProps}\n >\n {children}\n <ImageWrapper border={embedData.border === \"true\"} expandable={!!figureProps?.float}>\n <Image\n focalPoint={focalPoint}\n contentType={data.image.contentType}\n crop={crop}\n sizes={expanded ? expandedSizes : sizes}\n alt={altText}\n src={data.image.imageUrl}\n variants={data.image.variants}\n lang={lang}\n onClick={figureProps?.float ? toggleImageSize : undefined}\n variant=\"rounded\"\n {...data.image.dimensions}\n />\n {(embedData.align === \"right\" || embedData.align === \"left\") && (\n <ExpandButton\n aria-label={t(`license.images.itemImage.zoom${expanded ? \"Out\" : \"\"}ImageButtonLabel`)}\n onClick={toggleImageSize}\n data-expanded={expanded}\n >\n <AddLine />\n </ExpandButton>\n )}\n </ImageWrapper>\n <EmbedByline\n type=\"image\"\n copyright={data.copyright}\n description={parsedDescription}\n hideDescription={embedData.hideCaption === \"true\"}\n hideCopyright={embedData.hideByline === \"true\"}\n visibleAlt={previewAlt ? embed.embedData.alt : \"\"}\n />\n </StyledFigure>\n );\n};\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  //#region rolldown:runtime
2
2
  var __defProp = Object.defineProperty;
3
- var __export = (all, symbols) => {
3
+ var __exportAll = (all, symbols) => {
4
4
  let target = {};
5
5
  for (var name in all) {
6
6
  __defProp(target, name, {
@@ -15,4 +15,4 @@ var __export = (all, symbols) => {
15
15
  };
16
16
 
17
17
  //#endregion
18
- export { __export };
18
+ export { __exportAll };
package/es/index.mjs CHANGED
@@ -50,7 +50,7 @@ import { formatNestedMessages } from "./i18n/formatNestedMessages.mjs";
50
50
  import { TagSelectorClearTrigger, TagSelectorControl, TagSelectorInput, TagSelectorInputBase, TagSelectorItemInput, TagSelectorLabel, TagSelectorRoot, TagSelectorTrigger } from "./TagSelector/TagSelector.mjs";
51
51
  import { useAudioSearchTranslations, useComboboxTranslations, useDatePickerTranslations, useImageSearchTranslations, usePaginationTranslations, useTagSelectorTranslations, useTagsInputTranslations, useVideoSearchTranslations } from "./i18n/useComponentTranslations.mjs";
52
52
  import { ContentTypeBadge, contentTypeToBadgeVariantMap } from "./ContentTypeBadge/ContentTypeBadge.mjs";
53
- import { CopyParagraphButton } from "./CopyParagraphButton/CopyParagraphButton.mjs";
53
+ import { AnchorHeading } from "./AnchorHeading/AnchorHeading.mjs";
54
54
  import { Pitch } from "./Pitch/Pitch.mjs";
55
55
  import { KeyFigure } from "./KeyFigure/KeyFigure.mjs";
56
56
  import { ContactBlock, contactBlockBackgrounds } from "./ContactBlock/ContactBlock.mjs";
@@ -60,4 +60,4 @@ import { LinkBlock } from "./LinkBlock/LinkBlock.mjs";
60
60
  import { LinkBlockSection } from "./LinkBlock/LinkBlockSection.mjs";
61
61
  import { ZendeskButton } from "./ZendeskButton/ZendeskButton.mjs";
62
62
 
63
- export { Article, ArticleByline, ArticleBylineAccordionItem, ArticleContent, ArticleFootNotes, ArticleFooter, ArticleHGroup, ArticleHeader, ArticleTitle, ArticleWrapper, AudioEmbed, AudioPlayer, BadgesContainer, BlockConcept, Breadcrumb, BrightcoveEmbed, CampaignBlock, CodeBlock, CodeEmbed, Concept, ConceptEmbed, ConceptInlineTriggerButton, ContactBlock, ContentLinkEmbed, ContentTypeBadge, CopyParagraphButton, CopyrightEmbed, EmbedByline, EmbedWrapper, ExternalEmbed, FactBox, File, FileListElement, FileListEmbed, FileListItem, FileListWrapper, FootnoteEmbed, Gloss, GlossExample, Grid, GridItem, H5pEmbed, HomeBreadcrumb, IframeEmbed, ImageEmbed, InlineConcept, InlineTriggerButton, KeyFigure, LicenseLink, LinkBlock, LinkBlockSection, PdfFile, Pitch, RelatedArticle, RelatedArticleList, RelatedContentEmbed, ResourceBox, TagSelectorClearTrigger, TagSelectorControl, TagSelectorInput, TagSelectorInputBase, TagSelectorItemInput, TagSelectorLabel, TagSelectorRoot, TagSelectorTrigger, UnknownEmbed, UuDisclaimerEmbed, ZendeskButton, codeLanguageOptions, constants, contactBlockBackgrounds, contentTypeMapping, contentTypeToBadgeVariantMap, contentTypes, formatNestedMessages, getCrop, getFocalPoint, getPossiblyRelativeUrl, licenseAttributes, messages_en_default as messagesEN, messages_nb_default as messagesNB, messages_nn_default as messagesNN, messages_se_default as messagesSE, resourceEmbedTypeMapping, subjectCategories, subjectTypes, useAudioSearchTranslations, useComboboxTranslations, useDatePickerTranslations, useImageSearchTranslations, usePaginationTranslations, useTagSelectorTranslations, useTagsInputTranslations, useVideoSearchTranslations, wordClass };
63
+ export { AnchorHeading, Article, ArticleByline, ArticleBylineAccordionItem, ArticleContent, ArticleFootNotes, ArticleFooter, ArticleHGroup, ArticleHeader, ArticleTitle, ArticleWrapper, AudioEmbed, AudioPlayer, BadgesContainer, BlockConcept, Breadcrumb, BrightcoveEmbed, CampaignBlock, CodeBlock, CodeEmbed, Concept, ConceptEmbed, ConceptInlineTriggerButton, ContactBlock, ContentLinkEmbed, ContentTypeBadge, CopyrightEmbed, EmbedByline, EmbedWrapper, ExternalEmbed, FactBox, File, FileListElement, FileListEmbed, FileListItem, FileListWrapper, FootnoteEmbed, Gloss, GlossExample, Grid, GridItem, H5pEmbed, HomeBreadcrumb, IframeEmbed, ImageEmbed, InlineConcept, InlineTriggerButton, KeyFigure, LicenseLink, LinkBlock, LinkBlockSection, PdfFile, Pitch, RelatedArticle, RelatedArticleList, RelatedContentEmbed, ResourceBox, TagSelectorClearTrigger, TagSelectorControl, TagSelectorInput, TagSelectorInputBase, TagSelectorItemInput, TagSelectorLabel, TagSelectorRoot, TagSelectorTrigger, UnknownEmbed, UuDisclaimerEmbed, ZendeskButton, codeLanguageOptions, constants, contactBlockBackgrounds, contentTypeMapping, contentTypeToBadgeVariantMap, contentTypes, formatNestedMessages, getCrop, getFocalPoint, getPossiblyRelativeUrl, licenseAttributes, messages_en_default as messagesEN, messages_nb_default as messagesNB, messages_nn_default as messagesNN, messages_se_default as messagesSE, resourceEmbedTypeMapping, subjectCategories, subjectTypes, useAudioSearchTranslations, useComboboxTranslations, useDatePickerTranslations, useImageSearchTranslations, usePaginationTranslations, useTagSelectorTranslations, useTagsInputTranslations, useVideoSearchTranslations, wordClass };
@@ -200,6 +200,7 @@ const messages = {
200
200
  learningpath: "Learning path",
201
201
  "learning-path": "Learning path",
202
202
  "subject-material": "Subject material",
203
+ standard: "Subject material",
203
204
  "tasks-and-activities": "Task and activities",
204
205
  "source-material": "Source material",
205
206
  "assessment-resources": "Assessment resource",
@@ -1 +1 @@
1
- {"version":3,"file":"messages-en.mjs","names":[],"sources":["../../src/locale/messages-en.ts"],"sourcesContent":["/**\n * Copyright (c) 2018-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { contributorTypes } from \"@ndla/licenses\";\nimport { subjectCategories } from \"../model/SubjectCategories\";\nimport { subjectTypes } from \"../model/SubjectTypes\";\nimport { wordClass } from \"../model/WordClass\";\n\nconst messages = {\n ...Object.entries(contributorTypes).reduce<Record<string, string>>((acc, curr) => {\n acc[curr[0]] = curr[1].en;\n return acc;\n }, {}),\n askNDLA: \"Ask NDLA\",\n subjectCategories: {\n [subjectCategories.ACTIVE_SUBJECTS]: \"Active\",\n [subjectCategories.ARCHIVE_SUBJECTS]: \"Expired\",\n [subjectCategories.BETA_SUBJECTS]: \"Revised\",\n [subjectCategories.OTHER]: \"Other resources\",\n [subjectTypes.RESOURCE_COLLECTION]: \"Resource collections\",\n },\n subjectTypes: {\n [subjectTypes.ARCHIVE_SUBJECT]: \"Archive subject\",\n [subjectTypes.BETA_SUBJECT]: \"Beta subject\",\n [subjectTypes.RESOURCE_COLLECTION]: \"Resource collection\",\n [subjectTypes.SUBJECT]: \"Subject\",\n },\n meta: {\n description: \"Norwegian Digital Learning Arena, Open Educational Resources for upper secondary education.\",\n keywords: \"open educational resources,teaching,learning\",\n },\n logo: {\n altText: \"The Norwegian Digital Learning Arena\",\n },\n article: {\n lastUpdated: \"Last revised date\",\n useContent: \"Cite or reuse?\",\n authorsLabel_article: \"Written by\",\n authorsLabel_learningPath: \"Made by\",\n authorsLabel_external: \"This link is added by\",\n copyPageLinkCopied: \"Link copied\",\n copyHeaderLink: \"Copy link to header\",\n conjunction: \"and\",\n supplierLabel_one: \"Rightsholder:\",\n supplierLabel_other: \"Rightsholders:\",\n printPage: \"Print text\",\n access: {\n onlyTeacher: \"This resource is accessible only to teachers who are logged in with Feide.\",\n },\n footnotes: \"Footnotes\",\n },\n external: {\n lastUpdated: \"Last revised date\",\n },\n learningPath: {\n copiedFrom: \"This is a remix of a different learning path\",\n lastUpdated: \"Last revised date\",\n },\n license: {\n tabs: {\n text: \"Text\",\n images: \"Images\",\n audio: \"Audio\",\n video: \"Video\",\n h5p: \"H5P\",\n files: \"Files\",\n embedlink: \"Embedded link\",\n concept: \"Concepts\",\n gloss: \"Glosses\",\n podcast: \"Podcast\",\n other: \"Other content\",\n },\n embedlink: {\n heading: \"How to show the article in other content\",\n description: \"This url shows the article without menu and footer\",\n copyTitle: \"Copy link\",\n hasCopiedTitle: \"Link copied\",\n },\n image: {\n rules: \"Rules for use of image:\",\n },\n images: {\n heading: \"How to reuse images\",\n description: \"Remember to copy the text to be attached to the image where you use it.\",\n rules: \"Rules for use of image\",\n itemImage: {\n ariaLabel: \"Open image in new window\",\n zoomImageButtonLabel: \"Expand image\",\n zoomOutImageButtonLabel: \"Shrink image\",\n expandByline: \"Show byline\",\n minimizeByline: \"Hide byline\",\n },\n licenseText: \"This image has the license\",\n restrictedUseText: \"This image has\",\n },\n text: {\n heading: \"How to reuse the text\",\n description: \"Remember to refer to the source when reusing text.\",\n rules: \"Rules for use of text\",\n published: \"Published\",\n licenseText: \"This text has the license\",\n restrictedUseText: \"This text has\",\n },\n audio: {\n heading: \"How to reuse audio files\",\n description: \"Remember to copy the text to be attached to the audio where you use it.\",\n rules: \"Rules for use of audio file\",\n licenseText: \"This audio file has the license\",\n restrictedUseText: \"This audio file has\",\n },\n podcast: {\n heading: \"How to reuse podcasts\",\n description: \"Remember to copy the text to be attached to the podcast where you use it.\",\n rules: \"Rules for use of podcast\",\n licenseText: \"This podcast has the license\",\n restrictedUseText: \"This podcast has\",\n },\n video: {\n heading: \"How to reuse videos\",\n description: \"Remember to copy the text to be attached to the video where you use it.\",\n rules: \"Rules for use of video files\",\n itemImage: {\n ariaLabel: \"Open video in new window\",\n },\n licenseText: \"This video has the license\",\n restrictedUseText: \"This video has\",\n },\n other: {\n heading: \"How to reuse other content\",\n description: \"You will find guidelines for use of other content in the asset\",\n itemImage: {\n ariaLabel: \"Open in new window\",\n },\n },\n h5p: {\n heading: \"How to reuse H5P content\",\n description: \"You will find guidelines for use of H5P content in the asset\",\n rules: \"Rules for use of H5P\",\n licenseText: \"This interactive task (H5P) is licensed\",\n restrictedUseText: \"This interactive task (H5P) has\",\n },\n concept: {\n heading: \"How to reuse concept content\",\n description: \"Remember that built-in content might have a different license than the explanation text\",\n rules: \"Rules for use of concept\",\n embedlink: {\n heading: \"How to show the concept in other content\",\n description: \"This url shows the concept without menu and footer\",\n copyTitle: \"Copy embed link\",\n hasCopiedTitle: \"Embed link copied\",\n },\n licenseText: \"This concept has the license\",\n restrictedUseText: \"This concept has\",\n },\n gloss: {\n heading: \"How to reuse gloss content\",\n description: \"Remember that built-in content might have a different license than the gloss text\",\n rules: \"Rules for use of gloss\",\n showOrHideExamples: \"Show or hide examples\",\n embedlink: {\n heading: \"How to show the gloss in other content\",\n description: \"This url shows the gloss without menu and footer\",\n copyTitle: \"Copy embed link\",\n hasCopiedTitle: \"Embed link copied\",\n },\n licenseText: \"This gloss has the license\",\n restrictedUseText: \"This gloss has\",\n },\n files: {\n heading: \"How to reuse files\",\n description: \"Remember to copy the text to be attached to the file where you use it.\",\n rules: \"Rules for use of file\",\n itemImage: {\n ariaLabel: \"Open video in new window\",\n },\n },\n copyTitle: \"Copy source reference\",\n embed: \"Embed\",\n embedCopied: \"Copied embed code!\",\n copyText: {\n now: \"now\",\n podcast: \"podcast\",\n by: \"by\",\n internet: \"[Internet]. \",\n noTitle: \"No title\",\n downloadedFrom: \"Downloaded from: \",\n readDate: \"Read: \",\n },\n hasCopiedTitle: \"Copied!\",\n download: \"Download\",\n openLink: \"Open in new tab\",\n processed: \"The content has been processed\",\n },\n errorMessage: {\n title: \"Oops, something went wrong\",\n description: \"Sorry, an error occurred.\",\n back: \"Go back\",\n goToFrontPage: \"Go to frontpage\",\n },\n figure: {\n button: {\n alternative: \"Switch to visually interpreted video\",\n original: \"Switch to original video\",\n },\n },\n contentTypes: {\n all: \"All\",\n article: \"Article\",\n subject: \"Subject\",\n \"topic-article\": \"Topic article\",\n learningpath: \"Learning path\",\n \"learning-path\": \"Learning path\",\n \"subject-material\": \"Subject material\",\n \"tasks-and-activities\": \"Task and activities\",\n \"source-material\": \"Source material\",\n \"assessment-resources\": \"Assessment resource\",\n topic: \"Topic\",\n multidisciplinary: \"Multidisciplinary case\",\n image: \"Image\",\n concept: \"Concept\",\n audio: \"Audio\",\n podcast: \"Podcast\",\n h5p: \"H5P\",\n video: \"Video\",\n missing: \"Unknown\",\n external: \"External\",\n gloss: \"Gloss\",\n programme: \"Programme\",\n \"podcast-series\": \"Podcast series\",\n \"frontpage-article\": \"About NDLA article\",\n },\n languages: {\n nb: \"Norwegian Bokmål\",\n nn: \"Norwegian Nynorsk\",\n en: \"English\",\n fr: \"French\",\n de: \"German\",\n se: \"Northern Sami\",\n sma: \"Southern Sami\",\n es: \"Spanish\",\n zh: \"Chinese\",\n ukr: \"Ukranian\",\n unknown: \"Unknown\",\n prefixChangeLanguage: \"Choose language\",\n },\n breadcrumb: {\n toFrontpage: \"NDLA frontpage\",\n breadcrumb: \"Breadcrumb\",\n },\n codeBlock: {\n copiedCode: \"Copied code\",\n copyCode: \"Copy code\",\n },\n cancel: \"Cancel\",\n close: \"Close\",\n loading: \"Loading\",\n title: \"Title\",\n save: \"Save\",\n email: \"Email\",\n finished: \"Finished\",\n audio: {\n play: \"Play\",\n pause: \"Pause\",\n progressBar: \"Progress bar\",\n valueText: \"{{start}} of {{end}}\",\n controls: {\n forward15sec: \"Forward 15 seconds\",\n rewind15sec: \"Rewind 15 seconds\",\n selectSpeed: \"Choose speed\",\n adjustVolume: \"Adjust volume\",\n },\n textVersion: {\n heading: \"Text version\",\n close: \"Close text version\",\n },\n readMoreDescriptionLabel: \"Show more\",\n readLessDescriptionLabel: \"Show less\",\n },\n source: \"Source\",\n related: {\n title: \"Related content\",\n linkInfo: \"Web page at\",\n showMore: \"Show more related content\",\n showLess: \"Show less\",\n },\n download: \"Download file: \",\n factbox: {\n open: \"Open fact box\",\n close: \"Close fact box\",\n },\n embed: {\n linkError: \"Failed to show link.\",\n unsupported: `Embed {{type}} not supported.`,\n embedError: `An error occurred while loading the {{type}}. Try reloading the page.`,\n type: {\n image: \"Image\",\n video: \"Video\",\n audio: \"Audio\",\n podcast: \"Podcast\",\n concept: \"Concept\",\n h5p: \"H5P\",\n external: \"External resource\",\n gloss: \"Gloss\",\n copyright: \"Text\",\n code: \"Code block\",\n disclaimer: \"Accessibility warning\",\n },\n },\n uuDisclaimer: { title: \"Accessibility\" },\n gloss: {\n examples: \"Examples\",\n showExamples: \"Show examples\",\n wordClass: \"Word class\",\n play: \"Play gloss\",\n transcriptions: {\n traditional: \"Traditional spelling\",\n pinyin: \"Pinyin\",\n },\n },\n wordClass: {\n [wordClass.adjective]: \"Adjective\",\n [wordClass.adverb]: \"Adverb\",\n [wordClass.properNoun]: \"Proper Noun\",\n [wordClass.auxiliary]: \"Auxiliary\",\n [wordClass.complement]: \"Complement\",\n [wordClass.conjunction]: \"Conjunction\",\n [wordClass.coverb]: \"Coverb\",\n [wordClass.determiner]: \"Determiner\",\n [wordClass.interjection]: \"Interjection\",\n [wordClass.quantifier]: \"Quantifier\",\n [wordClass.marker]: \"Marker\",\n [wordClass.modalVerb]: \"Modal Verb\",\n [wordClass.measureWord]: \"Measure Word\",\n [wordClass.noun]: \"Noun\",\n [wordClass[\"noun-zh\"]]: \"Noun\",\n [wordClass.nounPhrase]: \"Noun Phrase\",\n [wordClass.onomatopoeia]: \"Onomatopoeia\",\n [wordClass.particle]: \"Particle\",\n [wordClass.demonstrative]: \"Demonstrative\",\n [wordClass.personalPronoun]: \"Personal Pronoun\",\n [wordClass.preposition]: \"Preposition\",\n [wordClass.pronoun]: \"Pronoun\",\n [wordClass.questionWord]: \"Question Word\",\n [wordClass.locationWord]: \"Location Word\",\n [wordClass.suffix]: \"Suffix\",\n [wordClass.numeral]: \"Numeral\",\n [wordClass.timeWord]: \"Time word\",\n [wordClass.timeExpression]: \"Time Expression\",\n [wordClass.stativeVerb]: \"Stative Verb\",\n [wordClass.subordinatingConjunction]: \"Subordinating Conjunction\",\n [wordClass.exclamationWord]: \"Exclamation Word\",\n [wordClass.expression]: \"Expression\",\n [wordClass.verb]: \"Verb\",\n [wordClass.verbComplement]: \"Verb-Complement\",\n [wordClass.verbObject]: \"Verb-Object\",\n },\n login: \"Log in\",\n component: {\n tagsInput: {\n clearTriggerLabel: \"Clear all tags\",\n deleteTagTriggerLabel: \"Remove tag {{tag}}\",\n tagAdded: \"Added tag {{tag}}\",\n tagsPasted: \"Pasted {{length}} tags\",\n tagEdited: \"Edited tag {{tag}}. Press enter to save, or escape to cancel.\",\n tagUpdated: \"Tag updated to {{tag}}\",\n tagDeleted: \"Tag {{tag}} deleted\",\n tagSelected: \"Tag {{tag}} selected. Press enter to edit. Press backspace or delete to delete.\",\n },\n combobox: {\n triggerLabel: \"Show suggestions\",\n clearTriggerLabel: \"Clear selection\",\n },\n pagination: {\n rootLabel: \"Pagination\",\n prevTriggerLabel: \"Previous page\",\n nextTriggerLabel: \"Next page\",\n lastPage: \"Last page, page {{page}}\",\n page: \"Page {{page}}\",\n },\n imageSearch: {\n searchPlaceholder: \"Search images\",\n searchButtonTitle: \"Search\",\n imagePreview: {\n creatorsLabel: \"Image\",\n license: \"License\",\n caption: \"Caption\",\n altText: \"Alt-text\",\n modelRelease: \"Model released\",\n tags: \"Tags\",\n checkboxLabel: \"Set as meta image\",\n close: \"Close\",\n useImageTitle: \"Use image\",\n },\n },\n audioSearch: {\n searchPlaceholder: \"Search in audio files\",\n searchButtonTitle: \"Search\",\n useAudio: \"Chose audio\",\n noResults: \"No audio files found\",\n },\n videoSearch: {\n searchPlaceholder: \"Search videos\",\n searchButtonTitle: \"Search\",\n loadMoreVideos: \"Load more videos\",\n noResults: \"No videos found\",\n addVideo: \"Use video\",\n previewVideo: \"Preview\",\n is360Video: \"VR video\",\n close: \"Lukk\",\n },\n datePicker: {\n dayCell: {\n unavailable: \"Unavailable date. {{date}}\",\n selected: \"Selected date. {{date}}\",\n select: \"Select date. {{date}}\",\n },\n nextTrigger: {\n day: \"Go to next month\",\n month: \"Go to next year\",\n year: \"Go to next decade\",\n },\n prevTrigger: {\n day: \"Go to previous month\",\n month: \"Go to previous year\",\n year: \"Go to previous decade\",\n },\n monthSelect: \"Select month\",\n yearSelect: \"Select year\",\n viewTrigger: {\n day: \"Switch to day view\",\n month: \"Switch to month view\",\n year: \"Switch to year view\",\n },\n presetTrigger: {\n single: \"Select {{date}}\",\n range: \"Select from {{start}} to {{end}}\",\n },\n clearTrigger: \"Clear selected dates\",\n trigger: {\n open: \"Open date picker\",\n close: \"Close date picker\",\n },\n content: \"Calendar\",\n },\n },\n richTextEditor: {\n tooltip: {\n bold: \"Bold ({{shortcut}})\",\n code: \"Code ({{shortcut}})\",\n sub: \"Subscript ({{shortcut}})\",\n sup: \"Superscript ({{shortcut}})\",\n underlined: \"Underlined ({{shortcut}})\",\n italic: \"Italic ({{shortcut}})\",\n \"numbered-list\": \"Numbered list ({{shortcut}})\",\n \"letter-list\": \"Alphabetical list ({{shortcut}})\",\n \"bulleted-list\": \"Bulleted list ({{shortcut}})\",\n heading: \"Heading {{level}} ({{shortcut}})\",\n paragraph: \"Paragraph ({{shortcut}})\",\n section: \"Section ({{shortcut}})\",\n link: \"Link ({{shortcut}})\",\n },\n },\n articleTraits: {\n VIDEO: \"Video\",\n AUDIO: \"Audio\",\n H5P: \"Interactive content\",\n PODCAST: \"Podcast\",\n },\n relevance: {\n core: \"Core content\",\n supplementary: \"Supplementary content\",\n },\n};\n\nexport default messages;\n"],"mappings":"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"}
1
+ {"version":3,"file":"messages-en.mjs","names":[],"sources":["../../src/locale/messages-en.ts"],"sourcesContent":["/**\n * Copyright (c) 2018-present, NDLA.\n *\n * This source code is licensed under the GPLv3 license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { contributorTypes } from \"@ndla/licenses\";\nimport { subjectCategories } from \"../model/SubjectCategories\";\nimport { subjectTypes } from \"../model/SubjectTypes\";\nimport { wordClass } from \"../model/WordClass\";\n\nconst messages = {\n ...Object.entries(contributorTypes).reduce<Record<string, string>>((acc, curr) => {\n acc[curr[0]] = curr[1].en;\n return acc;\n }, {}),\n askNDLA: \"Ask NDLA\",\n subjectCategories: {\n [subjectCategories.ACTIVE_SUBJECTS]: \"Active\",\n [subjectCategories.ARCHIVE_SUBJECTS]: \"Expired\",\n [subjectCategories.BETA_SUBJECTS]: \"Revised\",\n [subjectCategories.OTHER]: \"Other resources\",\n [subjectTypes.RESOURCE_COLLECTION]: \"Resource collections\",\n },\n subjectTypes: {\n [subjectTypes.ARCHIVE_SUBJECT]: \"Archive subject\",\n [subjectTypes.BETA_SUBJECT]: \"Beta subject\",\n [subjectTypes.RESOURCE_COLLECTION]: \"Resource collection\",\n [subjectTypes.SUBJECT]: \"Subject\",\n },\n meta: {\n description: \"Norwegian Digital Learning Arena, Open Educational Resources for upper secondary education.\",\n keywords: \"open educational resources,teaching,learning\",\n },\n logo: {\n altText: \"The Norwegian Digital Learning Arena\",\n },\n article: {\n lastUpdated: \"Last revised date\",\n useContent: \"Cite or reuse?\",\n authorsLabel_article: \"Written by\",\n authorsLabel_learningPath: \"Made by\",\n authorsLabel_external: \"This link is added by\",\n copyPageLinkCopied: \"Link copied\",\n copyHeaderLink: \"Copy link to header\",\n conjunction: \"and\",\n supplierLabel_one: \"Rightsholder:\",\n supplierLabel_other: \"Rightsholders:\",\n printPage: \"Print text\",\n access: {\n onlyTeacher: \"This resource is accessible only to teachers who are logged in with Feide.\",\n },\n footnotes: \"Footnotes\",\n },\n external: {\n lastUpdated: \"Last revised date\",\n },\n learningPath: {\n copiedFrom: \"This is a remix of a different learning path\",\n lastUpdated: \"Last revised date\",\n },\n license: {\n tabs: {\n text: \"Text\",\n images: \"Images\",\n audio: \"Audio\",\n video: \"Video\",\n h5p: \"H5P\",\n files: \"Files\",\n embedlink: \"Embedded link\",\n concept: \"Concepts\",\n gloss: \"Glosses\",\n podcast: \"Podcast\",\n other: \"Other content\",\n },\n embedlink: {\n heading: \"How to show the article in other content\",\n description: \"This url shows the article without menu and footer\",\n copyTitle: \"Copy link\",\n hasCopiedTitle: \"Link copied\",\n },\n image: {\n rules: \"Rules for use of image:\",\n },\n images: {\n heading: \"How to reuse images\",\n description: \"Remember to copy the text to be attached to the image where you use it.\",\n rules: \"Rules for use of image\",\n itemImage: {\n ariaLabel: \"Open image in new window\",\n zoomImageButtonLabel: \"Expand image\",\n zoomOutImageButtonLabel: \"Shrink image\",\n expandByline: \"Show byline\",\n minimizeByline: \"Hide byline\",\n },\n licenseText: \"This image has the license\",\n restrictedUseText: \"This image has\",\n },\n text: {\n heading: \"How to reuse the text\",\n description: \"Remember to refer to the source when reusing text.\",\n rules: \"Rules for use of text\",\n published: \"Published\",\n licenseText: \"This text has the license\",\n restrictedUseText: \"This text has\",\n },\n audio: {\n heading: \"How to reuse audio files\",\n description: \"Remember to copy the text to be attached to the audio where you use it.\",\n rules: \"Rules for use of audio file\",\n licenseText: \"This audio file has the license\",\n restrictedUseText: \"This audio file has\",\n },\n podcast: {\n heading: \"How to reuse podcasts\",\n description: \"Remember to copy the text to be attached to the podcast where you use it.\",\n rules: \"Rules for use of podcast\",\n licenseText: \"This podcast has the license\",\n restrictedUseText: \"This podcast has\",\n },\n video: {\n heading: \"How to reuse videos\",\n description: \"Remember to copy the text to be attached to the video where you use it.\",\n rules: \"Rules for use of video files\",\n itemImage: {\n ariaLabel: \"Open video in new window\",\n },\n licenseText: \"This video has the license\",\n restrictedUseText: \"This video has\",\n },\n other: {\n heading: \"How to reuse other content\",\n description: \"You will find guidelines for use of other content in the asset\",\n itemImage: {\n ariaLabel: \"Open in new window\",\n },\n },\n h5p: {\n heading: \"How to reuse H5P content\",\n description: \"You will find guidelines for use of H5P content in the asset\",\n rules: \"Rules for use of H5P\",\n licenseText: \"This interactive task (H5P) is licensed\",\n restrictedUseText: \"This interactive task (H5P) has\",\n },\n concept: {\n heading: \"How to reuse concept content\",\n description: \"Remember that built-in content might have a different license than the explanation text\",\n rules: \"Rules for use of concept\",\n embedlink: {\n heading: \"How to show the concept in other content\",\n description: \"This url shows the concept without menu and footer\",\n copyTitle: \"Copy embed link\",\n hasCopiedTitle: \"Embed link copied\",\n },\n licenseText: \"This concept has the license\",\n restrictedUseText: \"This concept has\",\n },\n gloss: {\n heading: \"How to reuse gloss content\",\n description: \"Remember that built-in content might have a different license than the gloss text\",\n rules: \"Rules for use of gloss\",\n showOrHideExamples: \"Show or hide examples\",\n embedlink: {\n heading: \"How to show the gloss in other content\",\n description: \"This url shows the gloss without menu and footer\",\n copyTitle: \"Copy embed link\",\n hasCopiedTitle: \"Embed link copied\",\n },\n licenseText: \"This gloss has the license\",\n restrictedUseText: \"This gloss has\",\n },\n files: {\n heading: \"How to reuse files\",\n description: \"Remember to copy the text to be attached to the file where you use it.\",\n rules: \"Rules for use of file\",\n itemImage: {\n ariaLabel: \"Open video in new window\",\n },\n },\n copyTitle: \"Copy source reference\",\n embed: \"Embed\",\n embedCopied: \"Copied embed code!\",\n copyText: {\n now: \"now\",\n podcast: \"podcast\",\n by: \"by\",\n internet: \"[Internet]. \",\n noTitle: \"No title\",\n downloadedFrom: \"Downloaded from: \",\n readDate: \"Read: \",\n },\n hasCopiedTitle: \"Copied!\",\n download: \"Download\",\n openLink: \"Open in new tab\",\n processed: \"The content has been processed\",\n },\n errorMessage: {\n title: \"Oops, something went wrong\",\n description: \"Sorry, an error occurred.\",\n back: \"Go back\",\n goToFrontPage: \"Go to frontpage\",\n },\n figure: {\n button: {\n alternative: \"Switch to visually interpreted video\",\n original: \"Switch to original video\",\n },\n },\n contentTypes: {\n all: \"All\",\n article: \"Article\",\n subject: \"Subject\",\n \"topic-article\": \"Topic article\",\n learningpath: \"Learning path\",\n \"learning-path\": \"Learning path\",\n \"subject-material\": \"Subject material\",\n standard: \"Subject material\",\n \"tasks-and-activities\": \"Task and activities\",\n \"source-material\": \"Source material\",\n \"assessment-resources\": \"Assessment resource\",\n topic: \"Topic\",\n multidisciplinary: \"Multidisciplinary case\",\n image: \"Image\",\n concept: \"Concept\",\n audio: \"Audio\",\n podcast: \"Podcast\",\n h5p: \"H5P\",\n video: \"Video\",\n missing: \"Unknown\",\n external: \"External\",\n gloss: \"Gloss\",\n programme: \"Programme\",\n \"podcast-series\": \"Podcast series\",\n \"frontpage-article\": \"About NDLA article\",\n },\n languages: {\n nb: \"Norwegian Bokmål\",\n nn: \"Norwegian Nynorsk\",\n en: \"English\",\n fr: \"French\",\n de: \"German\",\n se: \"Northern Sami\",\n sma: \"Southern Sami\",\n es: \"Spanish\",\n zh: \"Chinese\",\n ukr: \"Ukranian\",\n unknown: \"Unknown\",\n prefixChangeLanguage: \"Choose language\",\n },\n breadcrumb: {\n toFrontpage: \"NDLA frontpage\",\n breadcrumb: \"Breadcrumb\",\n },\n codeBlock: {\n copiedCode: \"Copied code\",\n copyCode: \"Copy code\",\n },\n cancel: \"Cancel\",\n close: \"Close\",\n loading: \"Loading\",\n title: \"Title\",\n save: \"Save\",\n email: \"Email\",\n finished: \"Finished\",\n audio: {\n play: \"Play\",\n pause: \"Pause\",\n progressBar: \"Progress bar\",\n valueText: \"{{start}} of {{end}}\",\n controls: {\n forward15sec: \"Forward 15 seconds\",\n rewind15sec: \"Rewind 15 seconds\",\n selectSpeed: \"Choose speed\",\n adjustVolume: \"Adjust volume\",\n },\n textVersion: {\n heading: \"Text version\",\n close: \"Close text version\",\n },\n readMoreDescriptionLabel: \"Show more\",\n readLessDescriptionLabel: \"Show less\",\n },\n source: \"Source\",\n related: {\n title: \"Related content\",\n linkInfo: \"Web page at\",\n showMore: \"Show more related content\",\n showLess: \"Show less\",\n },\n download: \"Download file: \",\n factbox: {\n open: \"Open fact box\",\n close: \"Close fact box\",\n },\n embed: {\n linkError: \"Failed to show link.\",\n unsupported: `Embed {{type}} not supported.`,\n embedError: `An error occurred while loading the {{type}}. Try reloading the page.`,\n type: {\n image: \"Image\",\n video: \"Video\",\n audio: \"Audio\",\n podcast: \"Podcast\",\n concept: \"Concept\",\n h5p: \"H5P\",\n external: \"External resource\",\n gloss: \"Gloss\",\n copyright: \"Text\",\n code: \"Code block\",\n disclaimer: \"Accessibility warning\",\n },\n },\n uuDisclaimer: { title: \"Accessibility\" },\n gloss: {\n examples: \"Examples\",\n showExamples: \"Show examples\",\n wordClass: \"Word class\",\n play: \"Play gloss\",\n transcriptions: {\n traditional: \"Traditional spelling\",\n pinyin: \"Pinyin\",\n },\n },\n wordClass: {\n [wordClass.adjective]: \"Adjective\",\n [wordClass.adverb]: \"Adverb\",\n [wordClass.properNoun]: \"Proper Noun\",\n [wordClass.auxiliary]: \"Auxiliary\",\n [wordClass.complement]: \"Complement\",\n [wordClass.conjunction]: \"Conjunction\",\n [wordClass.coverb]: \"Coverb\",\n [wordClass.determiner]: \"Determiner\",\n [wordClass.interjection]: \"Interjection\",\n [wordClass.quantifier]: \"Quantifier\",\n [wordClass.marker]: \"Marker\",\n [wordClass.modalVerb]: \"Modal Verb\",\n [wordClass.measureWord]: \"Measure Word\",\n [wordClass.noun]: \"Noun\",\n [wordClass[\"noun-zh\"]]: \"Noun\",\n [wordClass.nounPhrase]: \"Noun Phrase\",\n [wordClass.onomatopoeia]: \"Onomatopoeia\",\n [wordClass.particle]: \"Particle\",\n [wordClass.demonstrative]: \"Demonstrative\",\n [wordClass.personalPronoun]: \"Personal Pronoun\",\n [wordClass.preposition]: \"Preposition\",\n [wordClass.pronoun]: \"Pronoun\",\n [wordClass.questionWord]: \"Question Word\",\n [wordClass.locationWord]: \"Location Word\",\n [wordClass.suffix]: \"Suffix\",\n [wordClass.numeral]: \"Numeral\",\n [wordClass.timeWord]: \"Time word\",\n [wordClass.timeExpression]: \"Time Expression\",\n [wordClass.stativeVerb]: \"Stative Verb\",\n [wordClass.subordinatingConjunction]: \"Subordinating Conjunction\",\n [wordClass.exclamationWord]: \"Exclamation Word\",\n [wordClass.expression]: \"Expression\",\n [wordClass.verb]: \"Verb\",\n [wordClass.verbComplement]: \"Verb-Complement\",\n [wordClass.verbObject]: \"Verb-Object\",\n },\n login: \"Log in\",\n component: {\n tagsInput: {\n clearTriggerLabel: \"Clear all tags\",\n deleteTagTriggerLabel: \"Remove tag {{tag}}\",\n tagAdded: \"Added tag {{tag}}\",\n tagsPasted: \"Pasted {{length}} tags\",\n tagEdited: \"Edited tag {{tag}}. Press enter to save, or escape to cancel.\",\n tagUpdated: \"Tag updated to {{tag}}\",\n tagDeleted: \"Tag {{tag}} deleted\",\n tagSelected: \"Tag {{tag}} selected. Press enter to edit. Press backspace or delete to delete.\",\n },\n combobox: {\n triggerLabel: \"Show suggestions\",\n clearTriggerLabel: \"Clear selection\",\n },\n pagination: {\n rootLabel: \"Pagination\",\n prevTriggerLabel: \"Previous page\",\n nextTriggerLabel: \"Next page\",\n lastPage: \"Last page, page {{page}}\",\n page: \"Page {{page}}\",\n },\n imageSearch: {\n searchPlaceholder: \"Search images\",\n searchButtonTitle: \"Search\",\n imagePreview: {\n creatorsLabel: \"Image\",\n license: \"License\",\n caption: \"Caption\",\n altText: \"Alt-text\",\n modelRelease: \"Model released\",\n tags: \"Tags\",\n checkboxLabel: \"Set as meta image\",\n close: \"Close\",\n useImageTitle: \"Use image\",\n },\n },\n audioSearch: {\n searchPlaceholder: \"Search in audio files\",\n searchButtonTitle: \"Search\",\n useAudio: \"Chose audio\",\n noResults: \"No audio files found\",\n },\n videoSearch: {\n searchPlaceholder: \"Search videos\",\n searchButtonTitle: \"Search\",\n loadMoreVideos: \"Load more videos\",\n noResults: \"No videos found\",\n addVideo: \"Use video\",\n previewVideo: \"Preview\",\n is360Video: \"VR video\",\n close: \"Lukk\",\n },\n datePicker: {\n dayCell: {\n unavailable: \"Unavailable date. {{date}}\",\n selected: \"Selected date. {{date}}\",\n select: \"Select date. {{date}}\",\n },\n nextTrigger: {\n day: \"Go to next month\",\n month: \"Go to next year\",\n year: \"Go to next decade\",\n },\n prevTrigger: {\n day: \"Go to previous month\",\n month: \"Go to previous year\",\n year: \"Go to previous decade\",\n },\n monthSelect: \"Select month\",\n yearSelect: \"Select year\",\n viewTrigger: {\n day: \"Switch to day view\",\n month: \"Switch to month view\",\n year: \"Switch to year view\",\n },\n presetTrigger: {\n single: \"Select {{date}}\",\n range: \"Select from {{start}} to {{end}}\",\n },\n clearTrigger: \"Clear selected dates\",\n trigger: {\n open: \"Open date picker\",\n close: \"Close date picker\",\n },\n content: \"Calendar\",\n },\n },\n richTextEditor: {\n tooltip: {\n bold: \"Bold ({{shortcut}})\",\n code: \"Code ({{shortcut}})\",\n sub: \"Subscript ({{shortcut}})\",\n sup: \"Superscript ({{shortcut}})\",\n underlined: \"Underlined ({{shortcut}})\",\n italic: \"Italic ({{shortcut}})\",\n \"numbered-list\": \"Numbered list ({{shortcut}})\",\n \"letter-list\": \"Alphabetical list ({{shortcut}})\",\n \"bulleted-list\": \"Bulleted list ({{shortcut}})\",\n heading: \"Heading {{level}} ({{shortcut}})\",\n paragraph: \"Paragraph ({{shortcut}})\",\n section: \"Section ({{shortcut}})\",\n link: \"Link ({{shortcut}})\",\n },\n },\n articleTraits: {\n VIDEO: \"Video\",\n AUDIO: \"Audio\",\n H5P: \"Interactive content\",\n PODCAST: \"Podcast\",\n },\n relevance: {\n core: \"Core content\",\n supplementary: \"Supplementary content\",\n },\n};\n\nexport default messages;\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAM,WAAW;CACf,GAAG,OAAO,QAAQ,iBAAiB,CAAC,QAAgC,KAAK,SAAS;AAChF,MAAI,KAAK,MAAM,KAAK,GAAG;AACvB,SAAO;IACN,EAAE,CAAC;CACN,SAAS;CACT,mBAAmB;GAChB,kBAAkB,kBAAkB;GACpC,kBAAkB,mBAAmB;GACrC,kBAAkB,gBAAgB;GAClC,kBAAkB,QAAQ;GAC1B,aAAa,sBAAsB;EACrC;CACD,cAAc;GACX,aAAa,kBAAkB;GAC/B,aAAa,eAAe;GAC5B,aAAa,sBAAsB;GACnC,aAAa,UAAU;EACzB;CACD,MAAM;EACJ,aAAa;EACb,UAAU;EACX;CACD,MAAM,EACJ,SAAS,wCACV;CACD,SAAS;EACP,aAAa;EACb,YAAY;EACZ,sBAAsB;EACtB,2BAA2B;EAC3B,uBAAuB;EACvB,oBAAoB;EACpB,gBAAgB;EAChB,aAAa;EACb,mBAAmB;EACnB,qBAAqB;EACrB,WAAW;EACX,QAAQ,EACN,aAAa,8EACd;EACD,WAAW;EACZ;CACD,UAAU,EACR,aAAa,qBACd;CACD,cAAc;EACZ,YAAY;EACZ,aAAa;EACd;CACD,SAAS;EACP,MAAM;GACJ,MAAM;GACN,QAAQ;GACR,OAAO;GACP,OAAO;GACP,KAAK;GACL,OAAO;GACP,WAAW;GACX,SAAS;GACT,OAAO;GACP,SAAS;GACT,OAAO;GACR;EACD,WAAW;GACT,SAAS;GACT,aAAa;GACb,WAAW;GACX,gBAAgB;GACjB;EACD,OAAO,EACL,OAAO,2BACR;EACD,QAAQ;GACN,SAAS;GACT,aAAa;GACb,OAAO;GACP,WAAW;IACT,WAAW;IACX,sBAAsB;IACtB,yBAAyB;IACzB,cAAc;IACd,gBAAgB;IACjB;GACD,aAAa;GACb,mBAAmB;GACpB;EACD,MAAM;GACJ,SAAS;GACT,aAAa;GACb,OAAO;GACP,WAAW;GACX,aAAa;GACb,mBAAmB;GACpB;EACD,OAAO;GACL,SAAS;GACT,aAAa;GACb,OAAO;GACP,aAAa;GACb,mBAAmB;GACpB;EACD,SAAS;GACP,SAAS;GACT,aAAa;GACb,OAAO;GACP,aAAa;GACb,mBAAmB;GACpB;EACD,OAAO;GACL,SAAS;GACT,aAAa;GACb,OAAO;GACP,WAAW,EACT,WAAW,4BACZ;GACD,aAAa;GACb,mBAAmB;GACpB;EACD,OAAO;GACL,SAAS;GACT,aAAa;GACb,WAAW,EACT,WAAW,sBACZ;GACF;EACD,KAAK;GACH,SAAS;GACT,aAAa;GACb,OAAO;GACP,aAAa;GACb,mBAAmB;GACpB;EACD,SAAS;GACP,SAAS;GACT,aAAa;GACb,OAAO;GACP,WAAW;IACT,SAAS;IACT,aAAa;IACb,WAAW;IACX,gBAAgB;IACjB;GACD,aAAa;GACb,mBAAmB;GACpB;EACD,OAAO;GACL,SAAS;GACT,aAAa;GACb,OAAO;GACP,oBAAoB;GACpB,WAAW;IACT,SAAS;IACT,aAAa;IACb,WAAW;IACX,gBAAgB;IACjB;GACD,aAAa;GACb,mBAAmB;GACpB;EACD,OAAO;GACL,SAAS;GACT,aAAa;GACb,OAAO;GACP,WAAW,EACT,WAAW,4BACZ;GACF;EACD,WAAW;EACX,OAAO;EACP,aAAa;EACb,UAAU;GACR,KAAK;GACL,SAAS;GACT,IAAI;GACJ,UAAU;GACV,SAAS;GACT,gBAAgB;GAChB,UAAU;GACX;EACD,gBAAgB;EAChB,UAAU;EACV,UAAU;EACV,WAAW;EACZ;CACD,cAAc;EACZ,OAAO;EACP,aAAa;EACb,MAAM;EACN,eAAe;EAChB;CACD,QAAQ,EACN,QAAQ;EACN,aAAa;EACb,UAAU;EACX,EACF;CACD,cAAc;EACZ,KAAK;EACL,SAAS;EACT,SAAS;EACT,iBAAiB;EACjB,cAAc;EACd,iBAAiB;EACjB,oBAAoB;EACpB,UAAU;EACV,wBAAwB;EACxB,mBAAmB;EACnB,wBAAwB;EACxB,OAAO;EACP,mBAAmB;EACnB,OAAO;EACP,SAAS;EACT,OAAO;EACP,SAAS;EACT,KAAK;EACL,OAAO;EACP,SAAS;EACT,UAAU;EACV,OAAO;EACP,WAAW;EACX,kBAAkB;EAClB,qBAAqB;EACtB;CACD,WAAW;EACT,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAA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"}
@@ -200,6 +200,7 @@ const messages = {
200
200
  learningpath: "Læringssti",
201
201
  "learning-path": "Læringssti",
202
202
  "subject-material": "Fagstoff",
203
+ standard: "Fagstoff",
203
204
  "tasks-and-activities": "Oppgaver og aktiviteter",
204
205
  "source-material": "Kildemateriale",
205
206
  "assessment-resources": "Vurderingsressurs",