@learncard/react 2.11.0 → 2.12.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.
- package/dist/base.css +1 -1
- package/dist/base.js +1 -1
- package/dist/cjs/{BoostGenericCard-feaf99bd.js → BoostGenericCard-71899305.js} +22 -3
- package/dist/cjs/BoostGenericCard-71899305.js.map +1 -0
- package/dist/cjs/{CertificateDisplayCard-de7d7318.js → CertificateDisplayCard-f10b46b1.js} +5 -5
- package/dist/cjs/{CertificateDisplayCard-de7d7318.js.map → CertificateDisplayCard-f10b46b1.js.map} +1 -1
- package/dist/cjs/{Lightbox-d72e19ba.js → Lightbox-e2996736.js} +100 -2
- package/dist/cjs/Lightbox-e2996736.js.map +1 -0
- package/dist/cjs/{MeritBadgeDisplayCard-6edd0a69.js → MeritBadgeDisplayCard-d50cfb5e.js} +5 -5
- package/dist/cjs/{MeritBadgeDisplayCard-6edd0a69.js.map → MeritBadgeDisplayCard-d50cfb5e.js.map} +1 -1
- package/dist/cjs/{MeritBadgeSkillsCount-7ac48ce3.js → MeritBadgeSkillsCount-e46503f5.js} +2 -2
- package/dist/cjs/{MeritBadgeSkillsCount-7ac48ce3.js.map → MeritBadgeSkillsCount-e46503f5.js.map} +1 -1
- package/dist/cjs/{SchoolIDCard-10796199.js → SchoolIDCard-2d3cbb2c.js} +3 -1184
- package/dist/cjs/SchoolIDCard-2d3cbb2c.js.map +1 -0
- package/dist/cjs/{VCCard-0b85bc7d.js → VCCard-42479c97.js} +3 -3
- package/dist/cjs/{VCCard-0b85bc7d.js.map → VCCard-42479c97.js.map} +1 -1
- package/dist/cjs/{VCDisplayBackFace-45a8d94f.js → VCDisplayBackFace-d1cf9f73.js} +3 -3
- package/dist/cjs/{VCDisplayBackFace-45a8d94f.js.map → VCDisplayBackFace-d1cf9f73.js.map} +1 -1
- package/dist/cjs/{VCDisplayCard-9e43c7db.js → VCDisplayCard-cf46c224.js} +3 -3
- package/dist/cjs/{VCDisplayCard-9e43c7db.js.map → VCDisplayCard-cf46c224.js.map} +1 -1
- package/dist/cjs/{VCDisplayCard2-81d04ca4.js → VCDisplayCard2-4a201a8a.js} +93 -68
- package/dist/cjs/VCDisplayCard2-4a201a8a.js.map +1 -0
- package/dist/cjs/{VCVerificationPill-9416f420.js → VCVerificationPill-6c9dcf80.js} +2 -2
- package/dist/cjs/{VCVerificationPill-9416f420.js.map → VCVerificationPill-6c9dcf80.js.map} +1 -1
- package/dist/cjs/{VerifierStateBadgeAndText-54065ad8.js → VerifierStateBadgeAndText-934239ab.js} +13 -4
- package/dist/{esm/VerifierStateBadgeAndText-2859597e.js.map → cjs/VerifierStateBadgeAndText-934239ab.js.map} +1 -1
- package/dist/cjs/{credential.helpers-cf5b7e3c.js → credential.helpers-17a10601.js} +2 -2
- package/dist/cjs/{credential.helpers-cf5b7e3c.js.map → credential.helpers-17a10601.js.map} +1 -1
- package/dist/cjs/index-47efbf5b.js +1186 -0
- package/dist/cjs/index-47efbf5b.js.map +1 -0
- package/dist/cjs/index.js +24 -16
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index14.js +17 -14
- package/dist/cjs/index14.js.map +1 -1
- package/dist/cjs/index20.js +2 -1
- package/dist/cjs/index20.js.map +1 -1
- package/dist/cjs/index22.js +6 -6
- package/dist/cjs/index31.js +2 -1
- package/dist/cjs/index31.js.map +1 -1
- package/dist/cjs/index39.js +12 -11
- package/dist/cjs/index39.js.map +1 -1
- package/dist/cjs/index4.js +3 -3
- package/dist/cjs/index40.js +4 -4
- package/dist/cjs/index41.js +5 -5
- package/dist/cjs/index42.js +9 -7
- package/dist/cjs/index42.js.map +1 -1
- package/dist/cjs/index43.js +1 -1
- package/dist/cjs/index46.js +2 -2
- package/dist/cjs/index7.js +5 -5
- package/dist/cjs/{types.esm-e775534b.js → types.esm-73624b33.js} +12 -3
- package/dist/cjs/types.esm-73624b33.js.map +1 -0
- package/dist/esm/{BoostGenericCard-f0c9952c.js → BoostGenericCard-3b3ff784.js} +22 -3
- package/dist/esm/BoostGenericCard-3b3ff784.js.map +1 -0
- package/dist/esm/{CertificateDisplayCard-34e0b6a8.js → CertificateDisplayCard-f26ef278.js} +5 -5
- package/dist/esm/{CertificateDisplayCard-34e0b6a8.js.map → CertificateDisplayCard-f26ef278.js.map} +1 -1
- package/dist/esm/{Lightbox-f0338a0c.js → Lightbox-11f4888d.js} +95 -3
- package/dist/esm/Lightbox-11f4888d.js.map +1 -0
- package/dist/esm/{MeritBadgeDisplayCard-c6f65ac6.js → MeritBadgeDisplayCard-0d0b28c7.js} +5 -5
- package/dist/esm/{MeritBadgeDisplayCard-c6f65ac6.js.map → MeritBadgeDisplayCard-0d0b28c7.js.map} +1 -1
- package/dist/esm/{MeritBadgeSkillsCount-c51c5111.js → MeritBadgeSkillsCount-09e211fc.js} +2 -2
- package/dist/esm/{MeritBadgeSkillsCount-c51c5111.js.map → MeritBadgeSkillsCount-09e211fc.js.map} +1 -1
- package/dist/esm/{SchoolIDCard-f82e40bc.js → SchoolIDCard-fbd1cf6c.js} +2 -1183
- package/dist/esm/SchoolIDCard-fbd1cf6c.js.map +1 -0
- package/dist/esm/{VCCard-6c85ef2e.js → VCCard-7e5e00d7.js} +3 -3
- package/dist/esm/{VCCard-6c85ef2e.js.map → VCCard-7e5e00d7.js.map} +1 -1
- package/dist/esm/{VCDisplayBackFace-211f4bfb.js → VCDisplayBackFace-ae74476d.js} +3 -3
- package/dist/esm/{VCDisplayBackFace-211f4bfb.js.map → VCDisplayBackFace-ae74476d.js.map} +1 -1
- package/dist/esm/{VCDisplayCard-04660178.js → VCDisplayCard-ac1f367a.js} +3 -3
- package/dist/esm/{VCDisplayCard-04660178.js.map → VCDisplayCard-ac1f367a.js.map} +1 -1
- package/dist/esm/{VCDisplayCard2-d4594742.js → VCDisplayCard2-7011596e.js} +94 -70
- package/dist/esm/VCDisplayCard2-7011596e.js.map +1 -0
- package/dist/esm/{VCVerificationPill-eafbb82e.js → VCVerificationPill-04ffdf56.js} +2 -2
- package/dist/esm/{VCVerificationPill-eafbb82e.js.map → VCVerificationPill-04ffdf56.js.map} +1 -1
- package/dist/esm/{VerifierStateBadgeAndText-2859597e.js → VerifierStateBadgeAndText-750a6c24.js} +13 -4
- package/dist/{cjs/VerifierStateBadgeAndText-54065ad8.js.map → esm/VerifierStateBadgeAndText-750a6c24.js.map} +1 -1
- package/dist/esm/{credential.helpers-845e8c09.js → credential.helpers-4fbdd8e8.js} +2 -2
- package/dist/esm/{credential.helpers-845e8c09.js.map → credential.helpers-4fbdd8e8.js.map} +1 -1
- package/dist/esm/index-cbd2e9db.js +1184 -0
- package/dist/esm/index-cbd2e9db.js.map +1 -0
- package/dist/esm/index.js +16 -15
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index14.js +15 -14
- package/dist/esm/index14.js.map +1 -1
- package/dist/esm/index20.js +1 -1
- package/dist/esm/index22.js +6 -6
- package/dist/esm/index31.js +2 -1
- package/dist/esm/index31.js.map +1 -1
- package/dist/esm/index39.js +12 -11
- package/dist/esm/index39.js.map +1 -1
- package/dist/esm/index4.js +3 -3
- package/dist/esm/index40.js +4 -4
- package/dist/esm/index41.js +5 -5
- package/dist/esm/index42.js +8 -7
- package/dist/esm/index42.js.map +1 -1
- package/dist/esm/index43.js +1 -1
- package/dist/esm/index46.js +2 -2
- package/dist/esm/index7.js +5 -5
- package/dist/esm/{types.esm-5b5092be.js → types.esm-5f75bd4a.js} +12 -3
- package/dist/esm/types.esm-5f75bd4a.js.map +1 -0
- package/dist/index.d.ts +81 -9
- package/dist/main.css +1 -1
- package/dist/main.js +1 -1
- package/package.json +3 -3
- package/src/assets/styles/main.css +10 -0
- package/src/components/BoostGenericCard/BoostGenericCard.tsx +9 -2
- package/src/components/BoostGenericCard/__tests__/BoostGenericCard.thumb.test.tsx +59 -0
- package/src/components/Lightbox/ExternalVideoFallback.tsx +53 -0
- package/src/components/Lightbox/Lightbox.tsx +23 -9
- package/src/components/Lightbox/__tests__/Lightbox.video.test.tsx +139 -0
- package/src/components/Lightbox/index.ts +1 -0
- package/src/components/VCDisplayCard2/FitText.tsx +75 -46
- package/src/components/VCDisplayCard2/VCDisplayCard2.tsx +59 -19
- package/src/components/VCDisplayCard2/__tests__/FitText.test.tsx +140 -0
- package/src/components/VCDisplayCard2/__tests__/VCDisplayCard2Variant.test.ts +31 -0
- package/src/helpers/externalUrl.helpers.ts +51 -0
- package/src/helpers/video.helpers.ts +41 -0
- package/src/index.ts +5 -0
- package/dist/cjs/BoostGenericCard-feaf99bd.js.map +0 -1
- package/dist/cjs/Lightbox-d72e19ba.js.map +0 -1
- package/dist/cjs/SchoolIDCard-10796199.js.map +0 -1
- package/dist/cjs/VCDisplayCard2-81d04ca4.js.map +0 -1
- package/dist/cjs/types.esm-e775534b.js.map +0 -1
- package/dist/esm/BoostGenericCard-f0c9952c.js.map +0 -1
- package/dist/esm/Lightbox-f0338a0c.js.map +0 -1
- package/dist/esm/SchoolIDCard-f82e40bc.js.map +0 -1
- package/dist/esm/VCDisplayCard2-d4594742.js.map +0 -1
- package/dist/esm/types.esm-5b5092be.js.map +0 -1
|
@@ -40,6 +40,78 @@ const X = ({ className = "", strokeWidth = "2" }) => {
|
|
|
40
40
|
);
|
|
41
41
|
};
|
|
42
42
|
|
|
43
|
+
var __async$2 = (__this, __arguments, generator) => {
|
|
44
|
+
return new Promise((resolve, reject) => {
|
|
45
|
+
var fulfilled = (value) => {
|
|
46
|
+
try {
|
|
47
|
+
step(generator.next(value));
|
|
48
|
+
} catch (e) {
|
|
49
|
+
reject(e);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
var rejected = (value) => {
|
|
53
|
+
try {
|
|
54
|
+
step(generator.throw(value));
|
|
55
|
+
} catch (e) {
|
|
56
|
+
reject(e);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
60
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
const isOpenableUrl = (url) => {
|
|
64
|
+
var _a;
|
|
65
|
+
try {
|
|
66
|
+
const base = typeof window === "undefined" ? void 0 : (_a = window.location) == null ? void 0 : _a.href;
|
|
67
|
+
const { protocol } = new URL(url, base);
|
|
68
|
+
return protocol === "https:" || protocol === "http:";
|
|
69
|
+
} catch (e) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
const defaultOpener = (url) => {
|
|
74
|
+
if (typeof window === "undefined") return;
|
|
75
|
+
window.open(url, "_blank", "noopener,noreferrer");
|
|
76
|
+
};
|
|
77
|
+
let opener = defaultOpener;
|
|
78
|
+
const setExternalUrlOpener = (fn) => {
|
|
79
|
+
opener = fn != null ? fn : defaultOpener;
|
|
80
|
+
};
|
|
81
|
+
const openExternalUrl = (url) => __async$2(null, null, function* () {
|
|
82
|
+
if (!url || !isOpenableUrl(url)) return;
|
|
83
|
+
yield opener(url);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
const ExternalVideoFallback = ({
|
|
87
|
+
url,
|
|
88
|
+
thumbnailUrl,
|
|
89
|
+
label = "Watch on YouTube",
|
|
90
|
+
className = ""
|
|
91
|
+
}) => /* @__PURE__ */ React__default["default"].createElement(
|
|
92
|
+
"button",
|
|
93
|
+
{
|
|
94
|
+
type: "button",
|
|
95
|
+
onClick: (e) => {
|
|
96
|
+
e.stopPropagation();
|
|
97
|
+
openExternalUrl(url);
|
|
98
|
+
},
|
|
99
|
+
"aria-label": label,
|
|
100
|
+
className: `relative w-full h-full flex flex-col items-center justify-center gap-[16px] overflow-hidden rounded-md bg-black ${className}`
|
|
101
|
+
},
|
|
102
|
+
thumbnailUrl && /* @__PURE__ */ React__default["default"].createElement(
|
|
103
|
+
"img",
|
|
104
|
+
{
|
|
105
|
+
src: thumbnailUrl,
|
|
106
|
+
alt: "",
|
|
107
|
+
"aria-hidden": "true",
|
|
108
|
+
className: "absolute inset-0 w-full h-full object-cover opacity-60"
|
|
109
|
+
}
|
|
110
|
+
),
|
|
111
|
+
/* @__PURE__ */ React__default["default"].createElement("div", { className: "relative w-[64px] h-[64px] rounded-full bg-white/95 flex items-center justify-center" }, /* @__PURE__ */ React__default["default"].createElement("svg", { viewBox: "0 0 24 24", className: "w-[28px] h-[28px] ml-[4px]", "aria-hidden": "true" }, /* @__PURE__ */ React__default["default"].createElement("path", { d: "M8 5v14l11-7z", fill: "#000" }))),
|
|
112
|
+
/* @__PURE__ */ React__default["default"].createElement("span", { className: "relative text-white text-base font-semibold" }, label)
|
|
113
|
+
);
|
|
114
|
+
|
|
43
115
|
var __async$1 = (__this, __arguments, generator) => {
|
|
44
116
|
return new Promise((resolve, reject) => {
|
|
45
117
|
var fulfilled = (value) => {
|
|
@@ -60,6 +132,19 @@ var __async$1 = (__this, __arguments, generator) => {
|
|
|
60
132
|
step((generator = generator.apply(__this, __arguments)).next());
|
|
61
133
|
});
|
|
62
134
|
};
|
|
135
|
+
const canEmbedVideoIframe = (platform) => {
|
|
136
|
+
var _a;
|
|
137
|
+
if (platform && platform !== "youtube") return true;
|
|
138
|
+
if (typeof window === "undefined") return true;
|
|
139
|
+
const protocol = (_a = window.location) == null ? void 0 : _a.protocol;
|
|
140
|
+
return protocol === "https:" || protocol === "http:";
|
|
141
|
+
};
|
|
142
|
+
const getExternalVideoUrl = (metadata, fallbackUrl) => {
|
|
143
|
+
if ((metadata == null ? void 0 : metadata.type) === "youtube" && metadata.videoId) {
|
|
144
|
+
return `https://www.youtube.com/watch?v=${metadata.videoId}`;
|
|
145
|
+
}
|
|
146
|
+
return fallbackUrl;
|
|
147
|
+
};
|
|
63
148
|
const getVideoMetadata = (url) => __async$1(null, null, function* () {
|
|
64
149
|
var _a, _b, _c;
|
|
65
150
|
try {
|
|
@@ -256,7 +341,7 @@ const Lightbox = ({
|
|
|
256
341
|
alt: ""
|
|
257
342
|
}
|
|
258
343
|
),
|
|
259
|
-
currentItem.type === "video" && (videoMetadata == null ? void 0 : videoMetadata.embedUrl) && /* @__PURE__ */ React__default["default"].createElement("div", { className: "relative w-[90vw] max-w-[800px] aspect-video" }, /* @__PURE__ */ React__default["default"].createElement(
|
|
344
|
+
currentItem.type === "video" && (videoMetadata == null ? void 0 : videoMetadata.embedUrl) && /* @__PURE__ */ React__default["default"].createElement("div", { className: "relative w-[90vw] max-w-[800px] aspect-video" }, canEmbedVideoIframe(videoMetadata.type) ? /* @__PURE__ */ React__default["default"].createElement(
|
|
260
345
|
"iframe",
|
|
261
346
|
{
|
|
262
347
|
src: videoMetadata.embedUrl,
|
|
@@ -266,12 +351,25 @@ const Lightbox = ({
|
|
|
266
351
|
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
|
|
267
352
|
allowFullScreen: true
|
|
268
353
|
}
|
|
354
|
+
) : /* @__PURE__ */ React__default["default"].createElement(
|
|
355
|
+
ExternalVideoFallback,
|
|
356
|
+
{
|
|
357
|
+
url: getExternalVideoUrl(videoMetadata, currentItem.url),
|
|
358
|
+
thumbnailUrl: videoMetadata.thumbnailUrl,
|
|
359
|
+
className: "absolute top-0 left-0"
|
|
360
|
+
}
|
|
269
361
|
))
|
|
270
362
|
),
|
|
271
363
|
document.body
|
|
272
364
|
);
|
|
273
365
|
};
|
|
274
366
|
|
|
367
|
+
exports.ExternalVideoFallback = ExternalVideoFallback;
|
|
275
368
|
exports.Lightbox = Lightbox;
|
|
276
369
|
exports.X = X;
|
|
277
|
-
|
|
370
|
+
exports.canEmbedVideoIframe = canEmbedVideoIframe;
|
|
371
|
+
exports.getExternalVideoUrl = getExternalVideoUrl;
|
|
372
|
+
exports.getVideoMetadata = getVideoMetadata;
|
|
373
|
+
exports.openExternalUrl = openExternalUrl;
|
|
374
|
+
exports.setExternalUrlOpener = setExternalUrlOpener;
|
|
375
|
+
//# sourceMappingURL=Lightbox-e2996736.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Lightbox-e2996736.js","sources":["../../src/components/svgs/X.tsx","../../src/helpers/externalUrl.helpers.ts","../../src/components/Lightbox/ExternalVideoFallback.tsx","../../src/helpers/video.helpers.ts","../../src/components/Lightbox/Lightbox.tsx"],"sourcesContent":["import React from 'react';\n\ntype XProps = {\n className?: string;\n strokeWidth?: string;\n};\n\nconst X: React.FC<XProps> = ({ className = '', strokeWidth = '2' }) => {\n return (\n <svg\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n aria-label=\"X\"\n >\n <path\n d=\"M25 7L7 25\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M25 25L7 7\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n};\n\nexport default X;\n","export type ExternalUrlOpener = (url: string) => void | Promise<void>;\n\n/**\n * Attachment URLs come from credentials issued by arbitrary third parties, so\n * they are untrusted input. Handing a `javascript:` (or `data:`) URL to\n * `window.open` can execute script in the app's own origin — `noopener` does\n * not prevent that. Only ever open real web URLs.\n */\nconst isOpenableUrl = (url: string): boolean => {\n try {\n const base = typeof window === 'undefined' ? undefined : window.location?.href;\n const { protocol } = new URL(url, base);\n\n return protocol === 'https:' || protocol === 'http:';\n } catch {\n return false;\n }\n};\n\nconst defaultOpener: ExternalUrlOpener = url => {\n if (typeof window === 'undefined') return;\n\n window.open(url, '_blank', 'noopener,noreferrer');\n};\n\nlet opener: ExternalUrlOpener = defaultOpener;\n\n/**\n * Register a platform-specific way to open external URLs.\n *\n * This package has no native dependencies, so `window.open` is the default. Hosts\n * running inside a native shell should register their own opener at startup —\n * `learn-card-base` registers Capacitor's `Browser.open`, which presents the URL\n * in an in-app browser instead of kicking the user out to Safari.\n *\n * Pass `undefined` to restore the default.\n */\nexport const setExternalUrlOpener = (fn: ExternalUrlOpener | undefined): void => {\n opener = fn ?? defaultOpener;\n};\n\n/**\n * Open a URL outside of the current document, using the registered opener.\n *\n * Non-web schemes are dropped rather than forwarded — see `isOpenableUrl`.\n */\nexport const openExternalUrl = async (url: string): Promise<void> => {\n if (!url || !isOpenableUrl(url)) return;\n\n await opener(url);\n};\n","import React from 'react';\n\nimport { openExternalUrl } from '../../helpers/externalUrl.helpers';\n\nexport type ExternalVideoFallbackProps = {\n /** Public `watch` URL opened when the user taps play. */\n url: string;\n /** Poster frame, when we managed to resolve one. */\n thumbnailUrl?: string | null;\n label?: string;\n className?: string;\n};\n\n/**\n * Stand-in for a video `<iframe>` in documents where third-party embeds cannot\n * play — see `canEmbedVideoIframe`. Renders the poster frame with a play button\n * that hands playback off to an external browser.\n */\nexport const ExternalVideoFallback: React.FC<ExternalVideoFallbackProps> = ({\n url,\n thumbnailUrl,\n label = 'Watch on YouTube',\n className = '',\n}) => (\n <button\n type=\"button\"\n onClick={e => {\n e.stopPropagation();\n openExternalUrl(url);\n }}\n aria-label={label}\n className={`relative w-full h-full flex flex-col items-center justify-center gap-[16px] overflow-hidden rounded-md bg-black ${className}`}\n >\n {thumbnailUrl && (\n <img\n src={thumbnailUrl}\n alt=\"\"\n aria-hidden=\"true\"\n className=\"absolute inset-0 w-full h-full object-cover opacity-60\"\n />\n )}\n\n <div className=\"relative w-[64px] h-[64px] rounded-full bg-white/95 flex items-center justify-center\">\n <svg viewBox=\"0 0 24 24\" className=\"w-[28px] h-[28px] ml-[4px]\" aria-hidden=\"true\">\n <path d=\"M8 5v14l11-7z\" fill=\"#000\" />\n </svg>\n </div>\n\n <span className=\"relative text-white text-base font-semibold\">{label}</span>\n </button>\n);\n\nexport default ExternalVideoFallback;\n","export type VideoPlatform = 'youtube' | 'vimeo' | 'drive' | 'loom' | 'unknown';\n\nexport type VideoMetadata = {\n type: VideoPlatform;\n videoId: string | null;\n embedUrl: string | null;\n thumbnailUrl: string | null;\n};\n\n/**\n * Whether a third-party video `<iframe>` embed can be expected to work in the\n * current document.\n *\n * YouTube's embed endpoint validates the `Referer` header and returns an\n * unplayable player (\"Error 153: Video player configuration error\") when it is\n * missing or not `http(s)`. Capacitor's iOS WebView serves the app from\n * `capacitor://localhost`, and WKWebView will not send a custom-scheme URL as a\n * referrer, so every YouTube embed fails inside the native iOS app.\n *\n * Android is unaffected (Capacitor serves it from `https://localhost`), as is\n * the web app. Rather than sniffing for Capacitor — which would drag a native\n * dependency into this package — we test the actual condition YouTube cares\n * about: is this document served over `http(s)`?\n *\n * Pass `platform` where it is known. Only YouTube rejects embeds this way —\n * Vimeo, Google Drive and Loom serve their players regardless of referrer — so\n * without the hint we stay conservative and treat any video as at risk.\n */\nexport const canEmbedVideoIframe = (platform?: VideoPlatform): boolean => {\n if (platform && platform !== 'youtube') return true;\n\n if (typeof window === 'undefined') return true;\n\n const protocol = window.location?.protocol;\n\n return protocol === 'https:' || protocol === 'http:';\n};\n\n/** Public `watch` URL for a video, used when we have to hand playback off to an external browser. */\nexport const getExternalVideoUrl = (\n metadata: VideoMetadata | null | undefined,\n fallbackUrl: string\n): string => {\n if (metadata?.type === 'youtube' && metadata.videoId) {\n return `https://www.youtube.com/watch?v=${metadata.videoId}`;\n }\n\n return fallbackUrl;\n};\n\nexport const getVideoMetadata = async (url: string): Promise<VideoMetadata> => {\n try {\n const parsed = new URL(url);\n const host = parsed.hostname.replace(/^www\\./, '');\n let id: string | null = null;\n\n // YouTube\n if (host === 'youtu.be' || host.includes('youtube.com')) {\n if (host === 'youtu.be') {\n id = parsed.pathname.slice(1);\n } else {\n id =\n parsed.searchParams.get('v') ||\n parsed.pathname.split('/').filter(Boolean).pop() ||\n null;\n }\n if (id) {\n let thumb = `https://img.youtube.com/vi/${id}/maxresdefault.jpg`;\n try {\n const res = await fetch(thumb, { method: 'HEAD' });\n if (!res.ok) thumb = `https://img.youtube.com/vi/${id}/hqdefault.jpg`;\n } catch {\n thumb = `https://img.youtube.com/vi/${id}/hqdefault.jpg`;\n }\n return {\n type: 'youtube',\n videoId: id,\n embedUrl: `https://www.youtube.com/embed/${id}`,\n thumbnailUrl: thumb,\n };\n }\n }\n\n // Vimeo\n if (host.includes('vimeo.com')) {\n const match = url.match(/vimeo\\.com\\/(\\d+)/);\n id = match?.[1] ?? null;\n if (id) {\n try {\n const oembed = `https://vimeo.com/api/oembed.json?url=${encodeURIComponent(\n url\n )}`;\n const data = await fetch(oembed).then(r => r.json());\n return {\n type: 'vimeo',\n videoId: id,\n embedUrl: `https://player.vimeo.com/video/${id}`,\n thumbnailUrl: data.thumbnail_url,\n };\n } catch (e) {\n // Fallback if oEmbed fails\n return {\n type: 'vimeo',\n videoId: id,\n embedUrl: `https://player.vimeo.com/video/${id}`,\n thumbnailUrl: null,\n };\n }\n }\n }\n\n // Google Drive\n if (host === 'drive.google.com' || host === 'docs.google.com') {\n const match = parsed.pathname.match(/\\/d\\/([^/]+)/);\n id = match?.[1] ?? parsed.searchParams.get('id');\n if (id) {\n return {\n type: 'drive',\n videoId: id,\n embedUrl: `https://drive.google.com/file/d/${id}/preview`,\n thumbnailUrl: `https://drive.google.com/thumbnail?sz=w320-h320&id=${id}`,\n };\n }\n }\n\n // Loom\n if (host === 'loom.com') {\n const match = parsed.pathname.match(/\\/(?:share|embed|watch)\\/([A-Za-z0-9]+)/);\n id = match?.[1] ?? null;\n if (id) {\n const embedUrl = `https://www.loom.com/embed/${id}`;\n try {\n const oembedUrl = `https://www.loom.com/api/oembed?url=${encodeURIComponent(\n url\n )}`;\n const response = await fetch(oembedUrl);\n if (!response.ok) {\n throw new Error(`oEmbed API returned ${response.status}`);\n }\n const data = await response.json();\n return {\n type: 'loom',\n videoId: id,\n embedUrl,\n thumbnailUrl: data.thumbnail_url,\n };\n } catch (e) {\n // Fallback if oEmbed fails\n console.warn('Loom oEmbed fetch failed:', e);\n return {\n type: 'loom',\n videoId: id,\n embedUrl,\n thumbnailUrl: null,\n };\n }\n }\n }\n\n // Fallback\n return { type: 'unknown', videoId: null, embedUrl: null, thumbnailUrl: null };\n } catch (e) {\n console.error('getVideoMetadata error:', e);\n return { type: 'unknown', videoId: null, embedUrl: null, thumbnailUrl: null };\n }\n};\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport X from '../svgs/X';\n\nimport {\n canEmbedVideoIframe,\n getExternalVideoUrl,\n getVideoMetadata,\n VideoMetadata,\n} from '../../helpers/video.helpers';\nimport ExternalVideoFallback from './ExternalVideoFallback';\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 showCloseButton?: boolean;\n enableImageClick?: boolean;\n};\n\nexport const Lightbox: React.FC<LightboxProps> = ({\n items,\n currentUrl,\n setCurrentUrl,\n showCloseButton = true,\n enableImageClick = false,\n}) => {\n const currentItem = items.find(item => item.url === currentUrl);\n const innerRef = useRef<HTMLImageElement>(null);\n const [videoMetadata, setVideoMetadata] = useState<VideoMetadata | null>(null);\n\n const goToNextItem = useCallback(() => {\n const currentIndex = items.findIndex(item => item.url === currentUrl);\n const nextItem = items.at((currentIndex + 1) % items.length);\n if (nextItem) setCurrentUrl(nextItem.url);\n }, [currentUrl, items, setCurrentUrl]);\n\n const goToPreviousItem = useCallback(() => {\n const currentIndex = items.findIndex(item => item.url === currentUrl);\n const previousItem = items.at((currentIndex - 1 + items.length) % items.length);\n if (previousItem) setCurrentUrl(previousItem.url);\n }, [currentUrl, items, setCurrentUrl]);\n\n useEffect(() => {\n const keydownListener = (e: KeyboardEvent) => {\n if (!currentUrl || !currentItem) return;\n\n if (e.key === 'Escape') {\n e.preventDefault();\n setCurrentUrl(undefined);\n }\n\n if (e.key === 'ArrowRight') {\n e.preventDefault();\n goToNextItem();\n }\n\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n goToPreviousItem();\n }\n };\n\n window.addEventListener('keydown', keydownListener);\n return () => window.removeEventListener('keydown', keydownListener);\n }, [currentUrl, currentItem, goToNextItem, goToPreviousItem, setCurrentUrl]);\n\n useEffect(() => {\n const fetchMetadata = async () => {\n if (currentItem?.type === 'video') {\n const metadata = await getVideoMetadata(currentItem.url);\n setVideoMetadata(metadata);\n } else {\n setVideoMetadata(null);\n }\n };\n\n fetchMetadata();\n }, [currentItem]);\n\n if (!currentUrl || !currentItem) return null;\n\n return 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 {showCloseButton && (\n <button onClick={() => setCurrentUrl(undefined)}>\n <X className=\"absolute w-[30px] h-[30px] top-[20px] right-[20px] cursor-pointer text-white z-[999999]\" />\n </button>\n )}\n {currentItem.type === 'photo' && (\n <img\n className=\"cursor-pointer max-w-[90vw] max-h-[90vh]\"\n src={currentUrl}\n onClick={() => enableImageClick && window.open(currentUrl, '_blank')}\n ref={innerRef}\n alt=\"\"\n />\n )}\n\n {currentItem.type === 'video' && videoMetadata?.embedUrl && (\n <div className=\"relative w-[90vw] max-w-[800px] aspect-video\">\n {canEmbedVideoIframe(videoMetadata.type) ? (\n <iframe\n src={videoMetadata.embedUrl}\n className=\"absolute top-0 left-0 w-full h-full rounded-md\"\n title=\"Video player\"\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n />\n ) : (\n <ExternalVideoFallback\n url={getExternalVideoUrl(videoMetadata, currentItem.url)}\n thumbnailUrl={videoMetadata.thumbnailUrl}\n className=\"absolute top-0 left-0\"\n />\n )}\n </div>\n )}\n </div>,\n document.body\n );\n};\n"],"names":["React","__async","useRef","useState","useCallback","useEffect","createPortal"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
|
-
var VerifierStateBadgeAndText = require('./VerifierStateBadgeAndText-
|
|
5
|
-
var credential_helpers = require('./credential.helpers-
|
|
4
|
+
var VerifierStateBadgeAndText = require('./VerifierStateBadgeAndText-934239ab.js');
|
|
5
|
+
var credential_helpers = require('./credential.helpers-17a10601.js');
|
|
6
6
|
var UserProfilePicture = require('./UserProfilePicture-80675455.js');
|
|
7
7
|
var index = require('./index-5488badc.js');
|
|
8
|
-
var types_esm = require('./types.esm-
|
|
9
|
-
var Lightbox = require('./Lightbox-
|
|
8
|
+
var types_esm = require('./types.esm-73624b33.js');
|
|
9
|
+
var Lightbox = require('./Lightbox-e2996736.js');
|
|
10
10
|
var ThreeDots = require('./DotsThreeOutline.svg');
|
|
11
11
|
|
|
12
12
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -1019,4 +1019,4 @@ const MeritBadgeDisplayCard = ({
|
|
|
1019
1019
|
exports.MeritBadgeBackFace = MeritBadgeBackFace;
|
|
1020
1020
|
exports.MeritBadgeDisplayCard = MeritBadgeDisplayCard;
|
|
1021
1021
|
exports.MeritBadgeFrontFace = MeritBadgeFrontFace;
|
|
1022
|
-
//# sourceMappingURL=MeritBadgeDisplayCard-
|
|
1022
|
+
//# sourceMappingURL=MeritBadgeDisplayCard-d50cfb5e.js.map
|