@learncard/react 2.8.10 → 2.8.12

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 (41) hide show
  1. package/dist/cjs/{CertificateDisplayCard-081fb157.js → CertificateDisplayCard-355bb9db.js} +2 -2
  2. package/dist/cjs/{CertificateDisplayCard-081fb157.js.map → CertificateDisplayCard-355bb9db.js.map} +1 -1
  3. package/dist/cjs/Lightbox-d7b749fd.js +175 -0
  4. package/dist/cjs/Lightbox-d7b749fd.js.map +1 -0
  5. package/dist/cjs/{MeritBadgeDisplayCard-3f8eb0fc.js → MeritBadgeDisplayCard-cdb59ca4.js} +2 -2
  6. package/dist/cjs/{MeritBadgeDisplayCard-3f8eb0fc.js.map → MeritBadgeDisplayCard-cdb59ca4.js.map} +1 -1
  7. package/dist/cjs/{VCCard-d4b60ae8.js → VCCard-41ec5401.js} +2 -2
  8. package/dist/cjs/{VCCard-d4b60ae8.js.map → VCCard-41ec5401.js.map} +1 -1
  9. package/dist/cjs/{VCDisplayCard2-0bf59253.js → VCDisplayCard2-896291d9.js} +4 -4
  10. package/dist/cjs/{VCDisplayCard2-0bf59253.js.map → VCDisplayCard2-896291d9.js.map} +1 -1
  11. package/dist/cjs/index.js +5 -5
  12. package/dist/cjs/index13.js +5 -5
  13. package/dist/cjs/index19.js +1 -1
  14. package/dist/cjs/index21.js +2 -2
  15. package/dist/cjs/index37.js +5 -5
  16. package/dist/cjs/index40.js +4 -4
  17. package/dist/cjs/index6.js +2 -2
  18. package/dist/esm/{CertificateDisplayCard-98ec793a.js → CertificateDisplayCard-3ff759b1.js} +2 -2
  19. package/dist/esm/{CertificateDisplayCard-98ec793a.js.map → CertificateDisplayCard-3ff759b1.js.map} +1 -1
  20. package/dist/esm/Lightbox-f02b5b4f.js +169 -0
  21. package/dist/esm/Lightbox-f02b5b4f.js.map +1 -0
  22. package/dist/esm/{MeritBadgeDisplayCard-3a5d50b0.js → MeritBadgeDisplayCard-a3e1cac5.js} +2 -2
  23. package/dist/esm/{MeritBadgeDisplayCard-3a5d50b0.js.map → MeritBadgeDisplayCard-a3e1cac5.js.map} +1 -1
  24. package/dist/esm/{VCCard-d252e48a.js → VCCard-ec7b123f.js} +2 -2
  25. package/dist/esm/{VCCard-d252e48a.js.map → VCCard-ec7b123f.js.map} +1 -1
  26. package/dist/esm/{VCDisplayCard2-e7ea7aaa.js → VCDisplayCard2-a4144508.js} +4 -4
  27. package/dist/esm/{VCDisplayCard2-e7ea7aaa.js.map → VCDisplayCard2-a4144508.js.map} +1 -1
  28. package/dist/esm/index.js +5 -5
  29. package/dist/esm/index13.js +5 -5
  30. package/dist/esm/index19.js +1 -1
  31. package/dist/esm/index21.js +2 -2
  32. package/dist/esm/index37.js +5 -5
  33. package/dist/esm/index40.js +4 -4
  34. package/dist/esm/index6.js +2 -2
  35. package/dist/main.css +1 -1
  36. package/dist/main.js +1 -1
  37. package/package.json +2 -2
  38. package/dist/cjs/Lightbox-880f4672.js +0 -81
  39. package/dist/cjs/Lightbox-880f4672.js.map +0 -1
  40. package/dist/esm/Lightbox-883afe8f.js +0 -75
  41. package/dist/esm/Lightbox-883afe8f.js.map +0 -1
@@ -1,81 +0,0 @@
1
- 'use strict';
2
-
3
- var React = require('react');
4
- var reactDom = require('react-dom');
5
-
6
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
-
8
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
9
-
10
- const Lightbox = ({ items, currentUrl, setCurrentUrl }) => {
11
- const currentItem = items.find((item) => item.url === currentUrl);
12
- const goToNextItem = React.useCallback(() => {
13
- const currentIndex = items.findIndex((item) => item.url === currentUrl);
14
- const nextItem = items.at((currentIndex + 1) % items.length);
15
- if (nextItem) {
16
- setCurrentUrl(nextItem.url);
17
- }
18
- }, [currentUrl]);
19
- const goToPreviousItem = React.useCallback(() => {
20
- const currentIndex = items.findIndex((item) => item.url === currentUrl);
21
- const previousItem = items.at((currentIndex - 1) % items.length);
22
- if (previousItem) {
23
- setCurrentUrl(previousItem.url);
24
- }
25
- }, [currentUrl]);
26
- const innerRef = React.useRef(null);
27
- React.useEffect(() => {
28
- const keydownListener = (e) => {
29
- if (!currentUrl || !currentItem) {
30
- return;
31
- }
32
- if (e.key === "Escape") {
33
- e.preventDefault();
34
- e.stopPropagation();
35
- setCurrentUrl(void 0);
36
- }
37
- if (e.key === "ArrowRight") {
38
- e.preventDefault();
39
- e.stopPropagation();
40
- goToNextItem();
41
- }
42
- if (e.key === "ArrowLeft") {
43
- e.preventDefault();
44
- e.stopPropagation();
45
- goToPreviousItem();
46
- }
47
- };
48
- window.addEventListener("keydown", keydownListener);
49
- return () => {
50
- window.removeEventListener("keydown", keydownListener);
51
- };
52
- }, [currentUrl, currentItem]);
53
- if (!currentUrl || !currentItem) {
54
- return null;
55
- }
56
- return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, reactDom.createPortal(
57
- /* @__PURE__ */ React__default["default"].createElement("div", {
58
- className: "absolute top-0 left-0 w-screen h-screen bg-[rgba(0,0,0,0.9)] text-white flex justify-center items-center z-[999999]",
59
- onClick: (e) => {
60
- if (e.target !== innerRef.current) {
61
- setCurrentUrl(void 0);
62
- }
63
- }
64
- }, currentItem.type === "photo" && /* @__PURE__ */ React__default["default"].createElement("img", {
65
- className: "cursor-pointer max-w-[90vw] max-h-[90vh]",
66
- src: currentUrl,
67
- onClick: () => {
68
- window.open(currentUrl, "_blank");
69
- },
70
- ref: innerRef
71
- }), currentItem.type === "video" && new URL(currentUrl).hostname.replace("www.", "").startsWith("youtube.com") && /* @__PURE__ */ React__default["default"].createElement("iframe", {
72
- width: "560",
73
- height: "315",
74
- src: currentUrl.replace("watch?v=", "embed/")
75
- })),
76
- document.body
77
- ));
78
- };
79
-
80
- exports.Lightbox = Lightbox;
81
- //# sourceMappingURL=Lightbox-880f4672.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Lightbox-880f4672.js","sources":["../../src/components/Lightbox/Lightbox.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport type LightboxItemType = 'photo' | 'video';\n\nexport type LightboxItem = {\n url: string;\n type: LightboxItemType;\n};\n\nexport type LightboxImage = LightboxItem & {\n type: 'photo';\n alt?: string;\n};\n\nexport type LightboxVideo = LightboxItem & {\n type: 'video';\n};\n\nexport type LightboxProps = {\n items: LightboxItem[];\n currentUrl: string | undefined;\n setCurrentUrl: (url: string | undefined) => void;\n};\n\nexport const Lightbox: React.FC<LightboxProps> = ({ items, currentUrl, setCurrentUrl }) => {\n const currentItem = items.find(item => item.url === currentUrl);\n const goToNextItem = useCallback(() => {\n const currentIndex = items.findIndex(item => item.url === currentUrl);\n const nextItem = items.at((currentIndex + 1) % items.length);\n\n if (nextItem) {\n setCurrentUrl(nextItem.url);\n }\n }, [currentUrl]);\n const goToPreviousItem = useCallback(() => {\n const currentIndex = items.findIndex(item => item.url === currentUrl);\n const previousItem = items.at((currentIndex - 1) % items.length);\n\n if (previousItem) {\n setCurrentUrl(previousItem.url);\n }\n }, [currentUrl]);\n\n const innerRef = useRef<HTMLImageElement>(null);\n\n useEffect(() => {\n const keydownListener: (this: Window, e: KeyboardEvent) => any = e => {\n if (!currentUrl || !currentItem) {\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n\n setCurrentUrl(undefined);\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault();\n e.stopPropagation();\n\n goToNextItem();\n }\n\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n e.stopPropagation();\n\n goToPreviousItem();\n }\n };\n\n window.addEventListener('keydown', keydownListener);\n\n return () => {\n window.removeEventListener('keydown', keydownListener);\n };\n }, [currentUrl, currentItem]);\n\n if (!currentUrl || !currentItem) {\n return null;\n }\n\n return (\n <>\n {createPortal(\n <div\n className=\"absolute top-0 left-0 w-screen h-screen bg-[rgba(0,0,0,0.9)] text-white flex justify-center items-center z-[999999]\"\n onClick={e => {\n if (e.target !== innerRef.current) {\n setCurrentUrl(undefined);\n }\n }}\n >\n {currentItem.type === 'photo' && (\n <img\n className=\"cursor-pointer max-w-[90vw] max-h-[90vh]\"\n src={currentUrl}\n onClick={() => {\n window.open(currentUrl, '_blank');\n }}\n ref={innerRef}\n />\n )}\n {currentItem.type === 'video' &&\n new URL(currentUrl).hostname\n .replace('www.', '')\n .startsWith('youtube.com') && (\n <iframe\n width=\"560\"\n height=\"315\"\n src={currentUrl.replace('watch?v=', 'embed/')}\n />\n )}\n </div>,\n document.body\n )}\n </>\n );\n};\n"],"names":["useCallback","useRef","useEffect","React","createPortal"],"mappings":"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"}
@@ -1,75 +0,0 @@
1
- import React, { useCallback, useRef, useEffect } from 'react';
2
- import { createPortal } from 'react-dom';
3
-
4
- const Lightbox = ({ items, currentUrl, setCurrentUrl }) => {
5
- const currentItem = items.find((item) => item.url === currentUrl);
6
- const goToNextItem = useCallback(() => {
7
- const currentIndex = items.findIndex((item) => item.url === currentUrl);
8
- const nextItem = items.at((currentIndex + 1) % items.length);
9
- if (nextItem) {
10
- setCurrentUrl(nextItem.url);
11
- }
12
- }, [currentUrl]);
13
- const goToPreviousItem = useCallback(() => {
14
- const currentIndex = items.findIndex((item) => item.url === currentUrl);
15
- const previousItem = items.at((currentIndex - 1) % items.length);
16
- if (previousItem) {
17
- setCurrentUrl(previousItem.url);
18
- }
19
- }, [currentUrl]);
20
- const innerRef = useRef(null);
21
- useEffect(() => {
22
- const keydownListener = (e) => {
23
- if (!currentUrl || !currentItem) {
24
- return;
25
- }
26
- if (e.key === "Escape") {
27
- e.preventDefault();
28
- e.stopPropagation();
29
- setCurrentUrl(void 0);
30
- }
31
- if (e.key === "ArrowRight") {
32
- e.preventDefault();
33
- e.stopPropagation();
34
- goToNextItem();
35
- }
36
- if (e.key === "ArrowLeft") {
37
- e.preventDefault();
38
- e.stopPropagation();
39
- goToPreviousItem();
40
- }
41
- };
42
- window.addEventListener("keydown", keydownListener);
43
- return () => {
44
- window.removeEventListener("keydown", keydownListener);
45
- };
46
- }, [currentUrl, currentItem]);
47
- if (!currentUrl || !currentItem) {
48
- return null;
49
- }
50
- return /* @__PURE__ */ React.createElement(React.Fragment, null, createPortal(
51
- /* @__PURE__ */ React.createElement("div", {
52
- className: "absolute top-0 left-0 w-screen h-screen bg-[rgba(0,0,0,0.9)] text-white flex justify-center items-center z-[999999]",
53
- onClick: (e) => {
54
- if (e.target !== innerRef.current) {
55
- setCurrentUrl(void 0);
56
- }
57
- }
58
- }, currentItem.type === "photo" && /* @__PURE__ */ React.createElement("img", {
59
- className: "cursor-pointer max-w-[90vw] max-h-[90vh]",
60
- src: currentUrl,
61
- onClick: () => {
62
- window.open(currentUrl, "_blank");
63
- },
64
- ref: innerRef
65
- }), currentItem.type === "video" && new URL(currentUrl).hostname.replace("www.", "").startsWith("youtube.com") && /* @__PURE__ */ React.createElement("iframe", {
66
- width: "560",
67
- height: "315",
68
- src: currentUrl.replace("watch?v=", "embed/")
69
- })),
70
- document.body
71
- ));
72
- };
73
-
74
- export { Lightbox as L };
75
- //# sourceMappingURL=Lightbox-883afe8f.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Lightbox-883afe8f.js","sources":["../../src/components/Lightbox/Lightbox.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport type LightboxItemType = 'photo' | 'video';\n\nexport type LightboxItem = {\n url: string;\n type: LightboxItemType;\n};\n\nexport type LightboxImage = LightboxItem & {\n type: 'photo';\n alt?: string;\n};\n\nexport type LightboxVideo = LightboxItem & {\n type: 'video';\n};\n\nexport type LightboxProps = {\n items: LightboxItem[];\n currentUrl: string | undefined;\n setCurrentUrl: (url: string | undefined) => void;\n};\n\nexport const Lightbox: React.FC<LightboxProps> = ({ items, currentUrl, setCurrentUrl }) => {\n const currentItem = items.find(item => item.url === currentUrl);\n const goToNextItem = useCallback(() => {\n const currentIndex = items.findIndex(item => item.url === currentUrl);\n const nextItem = items.at((currentIndex + 1) % items.length);\n\n if (nextItem) {\n setCurrentUrl(nextItem.url);\n }\n }, [currentUrl]);\n const goToPreviousItem = useCallback(() => {\n const currentIndex = items.findIndex(item => item.url === currentUrl);\n const previousItem = items.at((currentIndex - 1) % items.length);\n\n if (previousItem) {\n setCurrentUrl(previousItem.url);\n }\n }, [currentUrl]);\n\n const innerRef = useRef<HTMLImageElement>(null);\n\n useEffect(() => {\n const keydownListener: (this: Window, e: KeyboardEvent) => any = e => {\n if (!currentUrl || !currentItem) {\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n\n setCurrentUrl(undefined);\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault();\n e.stopPropagation();\n\n goToNextItem();\n }\n\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n e.stopPropagation();\n\n goToPreviousItem();\n }\n };\n\n window.addEventListener('keydown', keydownListener);\n\n return () => {\n window.removeEventListener('keydown', keydownListener);\n };\n }, [currentUrl, currentItem]);\n\n if (!currentUrl || !currentItem) {\n return null;\n }\n\n return (\n <>\n {createPortal(\n <div\n className=\"absolute top-0 left-0 w-screen h-screen bg-[rgba(0,0,0,0.9)] text-white flex justify-center items-center z-[999999]\"\n onClick={e => {\n if (e.target !== innerRef.current) {\n setCurrentUrl(undefined);\n }\n }}\n >\n {currentItem.type === 'photo' && (\n <img\n className=\"cursor-pointer max-w-[90vw] max-h-[90vh]\"\n src={currentUrl}\n onClick={() => {\n window.open(currentUrl, '_blank');\n }}\n ref={innerRef}\n />\n )}\n {currentItem.type === 'video' &&\n new URL(currentUrl).hostname\n .replace('www.', '')\n .startsWith('youtube.com') && (\n <iframe\n width=\"560\"\n height=\"315\"\n src={currentUrl.replace('watch?v=', 'embed/')}\n />\n )}\n </div>,\n document.body\n )}\n </>\n );\n};\n"],"names":[],"mappings":"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"}