@ndla/ui 3.0.13 → 3.1.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 (35) hide show
  1. package/es/Article/ArticleContent.js +2 -0
  2. package/es/CopyParagraphButton/CopyParagraphButton.js +107 -0
  3. package/es/CopyParagraphButton/index.js +11 -0
  4. package/es/CopyParagraphButton/initCopyParagraphButtons.js +30 -0
  5. package/es/ResourceGroup/ResourceItem.js +13 -13
  6. package/es/index.js +2 -1
  7. package/es/locale/messages-en.js +1 -0
  8. package/es/locale/messages-nb.js +1 -0
  9. package/es/locale/messages-nn.js +1 -0
  10. package/lib/Article/ArticleContent.js +3 -0
  11. package/lib/CopyParagraphButton/CopyParagraphButton.d.ts +12 -0
  12. package/lib/CopyParagraphButton/CopyParagraphButton.js +119 -0
  13. package/lib/CopyParagraphButton/index.d.ts +11 -0
  14. package/lib/CopyParagraphButton/index.js +34 -0
  15. package/lib/CopyParagraphButton/initCopyParagraphButtons.d.ts +2 -0
  16. package/lib/CopyParagraphButton/initCopyParagraphButtons.js +44 -0
  17. package/lib/ResourceGroup/ResourceItem.js +14 -14
  18. package/lib/index.d.ts +1 -0
  19. package/lib/index.js +10 -1
  20. package/lib/locale/messages-en.d.ts +1 -0
  21. package/lib/locale/messages-en.js +1 -0
  22. package/lib/locale/messages-nb.d.ts +1 -0
  23. package/lib/locale/messages-nb.js +1 -0
  24. package/lib/locale/messages-nn.d.ts +1 -0
  25. package/lib/locale/messages-nn.js +1 -0
  26. package/package.json +3 -3
  27. package/src/Article/ArticleContent.tsx +2 -0
  28. package/src/CopyParagraphButton/CopyParagraphButton.tsx +89 -0
  29. package/src/CopyParagraphButton/index.tsx +13 -0
  30. package/src/CopyParagraphButton/initCopyParagraphButtons.tsx +26 -0
  31. package/src/ResourceGroup/ResourceItem.tsx +2 -2
  32. package/src/index.ts +2 -0
  33. package/src/locale/messages-en.ts +1 -0
  34. package/src/locale/messages-nb.ts +1 -0
  35. package/src/locale/messages-nn.ts +1 -0
@@ -15,6 +15,7 @@ import React, { useEffect } from 'react';
15
15
  import { initArticleScripts, removeEventListenerForResize // @ts-ignore
16
16
  } from '@ndla/article-scripts';
17
17
  import { initAudioPlayers } from '../AudioPlayer';
18
+ import { initCopyParagraphButtons } from '../CopyParagraphButton';
18
19
  import { jsx as ___EmotionJSX } from "@emotion/core";
19
20
 
20
21
  var ArticleContent = function ArticleContent(_ref) {
@@ -26,6 +27,7 @@ var ArticleContent = function ArticleContent(_ref) {
26
27
  removeEventListenerForResize();
27
28
  initArticleScripts();
28
29
  initAudioPlayers(locale);
30
+ initCopyParagraphButtons();
29
31
  return function () {
30
32
  removeEventListenerForResize();
31
33
  };
@@ -0,0 +1,107 @@
1
+ import _styled from "@emotion/styled-base";
2
+
3
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4
+
5
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
6
+
7
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
+
9
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
10
+
11
+ function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
12
+
13
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
+
15
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
16
+
17
+ /**
18
+ * Copyright (c) 2021-present, NDLA.
19
+ *
20
+ * This source code is licensed under the GPLv3 license found in the
21
+ * LICENSE file in the root directory of this source tree.
22
+ *
23
+ */
24
+ import React, { useEffect, useState } from 'react';
25
+ import { Link } from '@ndla/icons/common';
26
+ import { useTranslation } from 'react-i18next'; // @ts-ignore
27
+
28
+ import Tooltip from '@ndla/tooltip';
29
+ import { copyTextToClipboard } from '@ndla/util';
30
+ import { jsx as ___EmotionJSX } from "@emotion/core";
31
+
32
+ var IconButton = _styled("button", {
33
+ target: "e18czas70",
34
+ label: "IconButton"
35
+ })(process.env.NODE_ENV === "production" ? {
36
+ name: "1eoah0f",
37
+ styles: "float:left;position:relative;left:-3em;top:0.1em;background:none;border:0;z-index:1;transition:0.2s;opacity:0;& svg{width:30px;height:30px;}"
38
+ } : {
39
+ name: "1eoah0f",
40
+ styles: "float:left;position:relative;left:-3em;top:0.1em;background:none;border:0;z-index:1;transition:0.2s;opacity:0;& svg{width:30px;height:30px;}",
41
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvcHlQYXJhZ3JhcGhCdXR0b24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCZ0MiLCJmaWxlIjoiQ29weVBhcmFncmFwaEJ1dHRvbi50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMS1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBMaW5rIH0gZnJvbSAnQG5kbGEvaWNvbnMvY29tbW9uJztcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgVG9vbHRpcCBmcm9tICdAbmRsYS90b29sdGlwJztcbmltcG9ydCB7IGNvcHlUZXh0VG9DbGlwYm9hcmQgfSBmcm9tICdAbmRsYS91dGlsJztcblxuY29uc3QgSWNvbkJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gIGZsb2F0OiBsZWZ0O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGxlZnQ6IC0zZW07XG4gIHRvcDogMC4xZW07XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgei1pbmRleDogMTtcbiAgdHJhbnNpdGlvbjogMC4ycztcbiAgb3BhY2l0eTogMDtcblxuICAmIHN2ZyB7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICB9XG5gO1xuXG5jb25zdCBDb250YWluZXJEaXYgPSBzdHlsZWQuZGl2YFxuICAmOmhvdmVyIGJ1dHRvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxuXG4gICYgaDIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiAtMmVtO1xuICB9XG5gO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICB0aXRsZT86IHN0cmluZyB8IG51bGw7XG59XG5cbmNvbnN0IENvcHlQYXJhZ3JhcGhCdXR0b24gPSAoeyB0aXRsZSB9OiBQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtoYXNDb3BpZWQsIHNldEhhc0NvcGllZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGhhc0NvcGllZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRIYXNDb3BpZWQoZmFsc2UpLCAzMDAwKTtcbiAgICB9XG4gIH0sIFtoYXNDb3BpZWRdKTtcblxuICBpZiAoIXRpdGxlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBvbkNvcHlDbGljayA9IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudCwgTW91c2VFdmVudD4pOiB2b2lkID0+IHtcbiAgICBzZXRIYXNDb3BpZWQodHJ1ZSk7XG4gICAgY29uc3QgY29weUlkID0gZXZlbnQuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGl0bGUnKTtcbiAgICBjb25zdCB7IGxvY2F0aW9uIH0gPSB3aW5kb3c7XG4gICAgY29uc3QgbmV3SGFzaCA9IGAjJHtjb3B5SWR9YDtcbiAgICBjb25zdCBwb3J0ID0gbG9jYXRpb24ucG9ydCA/IGA6JHtsb2NhdGlvbi5wb3J0fWAgOiAnJztcbiAgICBjb25zdCB1cmxUb0NvcHkgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdG5hbWV9JHtwb3J0fSR7bG9jYXRpb24ucGF0aG5hbWV9JHtsb2NhdGlvbi5zZWFyY2h9JHtuZXdIYXNofWA7XG5cbiAgICBjb3B5VGV4dFRvQ2xpcGJvYXJkKHVybFRvQ29weSk7XG4gIH07XG5cbiAgY29uc3Qgc2FuaXRpemVkVGl0bGUgPSBlbmNvZGVVUklDb21wb25lbnQodGl0bGUucmVwbGFjZSgvIC9nLCAnLScpKTtcbiAgY29uc3QgdG9vbHRpcCA9IGhhc0NvcGllZCA/IHQoJ2FydGljbGUuY29weVBhZ2VMaW5rQ29waWVkJykgOiB0KCdhcnRpY2xlLmNvcHlIZWFkZXJMaW5rJyk7XG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lckRpdiBkYXRhLWhlYWRlci1jb3B5LWNvbnRhaW5lciBkYXRhLXRpdGxlPXt0aXRsZX0+XG4gICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXtvbkNvcHlDbGlja30gZGF0YS10aXRsZT17c2FuaXRpemVkVGl0bGV9PlxuICAgICAgICA8VG9vbHRpcCB0b29sdGlwPXt0b29sdGlwfT5cbiAgICAgICAgICA8TGluayB0aXRsZT17Jyd9IC8+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIDxoMiBpZD17c2FuaXRpemVkVGl0bGV9IHRhYkluZGV4PXswfT5cbiAgICAgICAge3RpdGxlfVxuICAgICAgPC9oMj5cbiAgICA8L0NvbnRhaW5lckRpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvcHlQYXJhZ3JhcGhCdXR0b247XG4iXX0= */",
42
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
43
+ });
44
+
45
+ var ContainerDiv = _styled("div", {
46
+ target: "e18czas71",
47
+ label: "ContainerDiv"
48
+ })(process.env.NODE_ENV === "production" ? {
49
+ name: "25spe5",
50
+ styles: "&:hover button{cursor:pointer;opacity:0.5;}& h2{position:relative;left:-2em;}"
51
+ } : {
52
+ name: "25spe5",
53
+ styles: "&:hover button{cursor:pointer;opacity:0.5;}& h2{position:relative;left:-2em;}",
54
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvcHlQYXJhZ3JhcGhCdXR0b24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtDK0IiLCJmaWxlIjoiQ29weVBhcmFncmFwaEJ1dHRvbi50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyMS1wcmVzZW50LCBORExBLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdQTHYzIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKlxuICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBMaW5rIH0gZnJvbSAnQG5kbGEvaWNvbnMvY29tbW9uJztcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgVG9vbHRpcCBmcm9tICdAbmRsYS90b29sdGlwJztcbmltcG9ydCB7IGNvcHlUZXh0VG9DbGlwYm9hcmQgfSBmcm9tICdAbmRsYS91dGlsJztcblxuY29uc3QgSWNvbkJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gIGZsb2F0OiBsZWZ0O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGxlZnQ6IC0zZW07XG4gIHRvcDogMC4xZW07XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgei1pbmRleDogMTtcbiAgdHJhbnNpdGlvbjogMC4ycztcbiAgb3BhY2l0eTogMDtcblxuICAmIHN2ZyB7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICB9XG5gO1xuXG5jb25zdCBDb250YWluZXJEaXYgPSBzdHlsZWQuZGl2YFxuICAmOmhvdmVyIGJ1dHRvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxuXG4gICYgaDIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiAtMmVtO1xuICB9XG5gO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICB0aXRsZT86IHN0cmluZyB8IG51bGw7XG59XG5cbmNvbnN0IENvcHlQYXJhZ3JhcGhCdXR0b24gPSAoeyB0aXRsZSB9OiBQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtoYXNDb3BpZWQsIHNldEhhc0NvcGllZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGhhc0NvcGllZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiBzZXRIYXNDb3BpZWQoZmFsc2UpLCAzMDAwKTtcbiAgICB9XG4gIH0sIFtoYXNDb3BpZWRdKTtcblxuICBpZiAoIXRpdGxlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBvbkNvcHlDbGljayA9IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudCwgTW91c2VFdmVudD4pOiB2b2lkID0+IHtcbiAgICBzZXRIYXNDb3BpZWQodHJ1ZSk7XG4gICAgY29uc3QgY29weUlkID0gZXZlbnQuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGl0bGUnKTtcbiAgICBjb25zdCB7IGxvY2F0aW9uIH0gPSB3aW5kb3c7XG4gICAgY29uc3QgbmV3SGFzaCA9IGAjJHtjb3B5SWR9YDtcbiAgICBjb25zdCBwb3J0ID0gbG9jYXRpb24ucG9ydCA/IGA6JHtsb2NhdGlvbi5wb3J0fWAgOiAnJztcbiAgICBjb25zdCB1cmxUb0NvcHkgPSBgJHtsb2NhdGlvbi5wcm90b2NvbH0vLyR7bG9jYXRpb24uaG9zdG5hbWV9JHtwb3J0fSR7bG9jYXRpb24ucGF0aG5hbWV9JHtsb2NhdGlvbi5zZWFyY2h9JHtuZXdIYXNofWA7XG5cbiAgICBjb3B5VGV4dFRvQ2xpcGJvYXJkKHVybFRvQ29weSk7XG4gIH07XG5cbiAgY29uc3Qgc2FuaXRpemVkVGl0bGUgPSBlbmNvZGVVUklDb21wb25lbnQodGl0bGUucmVwbGFjZSgvIC9nLCAnLScpKTtcbiAgY29uc3QgdG9vbHRpcCA9IGhhc0NvcGllZCA/IHQoJ2FydGljbGUuY29weVBhZ2VMaW5rQ29waWVkJykgOiB0KCdhcnRpY2xlLmNvcHlIZWFkZXJMaW5rJyk7XG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lckRpdiBkYXRhLWhlYWRlci1jb3B5LWNvbnRhaW5lciBkYXRhLXRpdGxlPXt0aXRsZX0+XG4gICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXtvbkNvcHlDbGlja30gZGF0YS10aXRsZT17c2FuaXRpemVkVGl0bGV9PlxuICAgICAgICA8VG9vbHRpcCB0b29sdGlwPXt0b29sdGlwfT5cbiAgICAgICAgICA8TGluayB0aXRsZT17Jyd9IC8+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIDxoMiBpZD17c2FuaXRpemVkVGl0bGV9IHRhYkluZGV4PXswfT5cbiAgICAgICAge3RpdGxlfVxuICAgICAgPC9oMj5cbiAgICA8L0NvbnRhaW5lckRpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvcHlQYXJhZ3JhcGhCdXR0b247XG4iXX0= */",
55
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
56
+ });
57
+
58
+ var CopyParagraphButton = function CopyParagraphButton(_ref) {
59
+ var title = _ref.title;
60
+
61
+ var _useTranslation = useTranslation(),
62
+ t = _useTranslation.t;
63
+
64
+ var _useState = useState(false),
65
+ _useState2 = _slicedToArray(_useState, 2),
66
+ hasCopied = _useState2[0],
67
+ setHasCopied = _useState2[1];
68
+
69
+ useEffect(function () {
70
+ if (hasCopied) {
71
+ setTimeout(function () {
72
+ return setHasCopied(false);
73
+ }, 3000);
74
+ }
75
+ }, [hasCopied]);
76
+ if (!title) return null;
77
+
78
+ var onCopyClick = function onCopyClick(event) {
79
+ setHasCopied(true);
80
+ var copyId = event.currentTarget.getAttribute('data-title');
81
+ var _window = window,
82
+ location = _window.location;
83
+ var newHash = "#".concat(copyId);
84
+ var port = location.port ? ":".concat(location.port) : '';
85
+ var urlToCopy = "".concat(location.protocol, "//").concat(location.hostname).concat(port).concat(location.pathname).concat(location.search).concat(newHash);
86
+ copyTextToClipboard(urlToCopy);
87
+ };
88
+
89
+ var sanitizedTitle = encodeURIComponent(title.replace(/ /g, '-'));
90
+ var tooltip = hasCopied ? t('article.copyPageLinkCopied') : t('article.copyHeaderLink');
91
+ return ___EmotionJSX(ContainerDiv, {
92
+ "data-header-copy-container": true,
93
+ "data-title": title
94
+ }, ___EmotionJSX(IconButton, {
95
+ onClick: onCopyClick,
96
+ "data-title": sanitizedTitle
97
+ }, ___EmotionJSX(Tooltip, {
98
+ tooltip: tooltip
99
+ }, ___EmotionJSX(Link, {
100
+ title: ''
101
+ }))), ___EmotionJSX("h2", {
102
+ id: sanitizedTitle,
103
+ tabIndex: 0
104
+ }, title));
105
+ };
106
+
107
+ export default CopyParagraphButton;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) 2021-present, NDLA.
3
+ *
4
+ * This source code is licensed under the GPLv3 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ import CopyParagraphButton from './CopyParagraphButton';
9
+ import initCopyParagraphButtons from './initCopyParagraphButtons';
10
+ export { CopyParagraphButton, initCopyParagraphButtons };
11
+ export default CopyParagraphButton;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Copyright (c) 2021-present, NDLA.
3
+ *
4
+ * This source code is licensed under the GPLv3 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+ import React from 'react';
9
+ import ReactDOM from 'react-dom';
10
+ import CopyParagraphButton from './CopyParagraphButton';
11
+ import { jsx as ___EmotionJSX } from "@emotion/core";
12
+
13
+ var forEachElement = function forEachElement(selector, callback) {
14
+ var nodeList = document.querySelectorAll(selector);
15
+
16
+ for (var i = 0; i < nodeList.length; i += 1) {
17
+ callback(nodeList[i], i);
18
+ }
19
+ };
20
+
21
+ var initCopyParagraphButtons = function initCopyParagraphButtons() {
22
+ forEachElement('[data-header-copy-container]', function (el) {
23
+ var title = el.getAttribute('data-title');
24
+ ReactDOM.hydrate(___EmotionJSX(CopyParagraphButton, {
25
+ title: title
26
+ }), el);
27
+ });
28
+ };
29
+
30
+ export default initCopyParagraphButtons;