/* Video bài học: giữ controls gốc YouTube hoạt động như learn-superapp. */ (function () { function isInternal(src) { return /^\/agent\/api\/lesson-video/.test(src || ""); } function isYoutube(src) { return /youtube(?:-nocookie)?\.com\/embed\//.test(src || ""); } function playerSrc(src) { if (!isYoutube(src)) return src; try { const u = new URL(src, location.href); u.searchParams.set("controls", "1"); u.searchParams.set("rel", "0"); u.searchParams.set("modestbranding", "1"); u.searchParams.set("playsinline", "1"); return u.toString(); } catch (e) { return src; } } function tokenized(src, tokenGetter) { const t = (tokenGetter && tokenGetter()) || ""; return src + "?t=" + encodeURIComponent(t); } function fullscreen(root, isIOS, fallback) { const media = root && root.querySelector(".dcp-video__frame"); if (!media) return; const isVid = media.tagName === "VIDEO"; const target = media.tagName === "IFRAME" ? root : media; if (isIOS && isVid && media.webkitEnterFullscreen) { try { media.webkitEnterFullscreen(); } catch (e) {} return; } const fn = target.requestFullscreen || target.webkitRequestFullscreen || target.msRequestFullscreen; if (!fn) { if (media.tagName === "IFRAME" && fallback) fallback(media.src); return; } try { const out = fn.call(target); if (out && out.catch) out.catch(function () { if (media.tagName === "IFRAME" && fallback) fallback(media.src); }); } catch (e) { if (media.tagName === "IFRAME" && fallback) fallback(media.src); } } function replay(root, toast) { const video = root && root.querySelector("video"); const frame = root && root.querySelector("iframe"); if (video) { video.currentTime = 0; try { video.play(); } catch (e) {} } else if (frame) { try { const u = new URL(frame.src, location.href); if (isYoutube(u.href)) { u.searchParams.set("start", "0"); u.searchParams.set("autoplay", "1"); u.searchParams.set("_replay", String(Date.now())); frame.src = u.toString(); } else { const src = frame.src; frame.src = ""; frame.src = src; } } catch (e) { const src = frame.src; frame.src = ""; frame.src = src; } } if (toast) toast("Phát lại từ đầu…"); } function LessonVideoPlayer(props) { const l = props.lesson; const local = isInternal(l.video); const rootRef = React.useRef(null); const cls = "dcp-video dcp-video-muc dcp-lesson-video" + (local ? " secure-video" : "") + (props.orientation === "portrait" && local ? " is-portrait" : ""); const fsIcon = props.icon ? props.icon("Fullscreen", 15) : "⛶"; return (