markdown-flow-ui 0.2.3-dev.2 → 0.2.3-dev.3
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/components/ContentRender/SandboxApp.cjs.js +2 -2
- package/dist/components/ContentRender/SandboxApp.cjs.js.map +1 -1
- package/dist/components/ContentRender/SandboxApp.es.js +106 -95
- package/dist/components/ContentRender/SandboxApp.es.js.map +1 -1
- package/dist/components/ContentRender/utils/link-targets.cjs.js +2 -0
- package/dist/components/ContentRender/utils/link-targets.cjs.js.map +1 -0
- package/dist/components/ContentRender/utils/link-targets.d.ts +6 -0
- package/dist/components/ContentRender/utils/link-targets.es.js +26 -0
- package/dist/components/ContentRender/utils/link-targets.es.js.map +1 -0
- package/dist/components/ContentRender/utils/link-targets.test.d.ts +1 -0
- package/dist/components/Slide/Slide.cjs.js +1 -1
- package/dist/components/Slide/Slide.cjs.js.map +1 -1
- package/dist/components/Slide/Slide.es.js +798 -712
- package/dist/components/Slide/Slide.es.js.map +1 -1
- package/dist/components/Slide/Slide.stories.d.ts +4 -4
- package/dist/components/Slide/constants.cjs.js +2 -0
- package/dist/components/Slide/constants.cjs.js.map +1 -0
- package/dist/components/Slide/constants.d.ts +1 -0
- package/dist/components/Slide/constants.es.js +5 -0
- package/dist/components/Slide/constants.es.js.map +1 -0
- package/dist/components/Slide/utils/imageOnlyStepVisualReady.cjs.js +2 -0
- package/dist/components/Slide/utils/imageOnlyStepVisualReady.cjs.js.map +1 -0
- package/dist/components/Slide/utils/imageOnlyStepVisualReady.d.ts +13 -0
- package/dist/components/Slide/utils/imageOnlyStepVisualReady.es.js +12 -0
- package/dist/components/Slide/utils/imageOnlyStepVisualReady.es.js.map +1 -0
- package/dist/components/Slide/utils/silentStepAutoAdvance.cjs.js +2 -0
- package/dist/components/Slide/utils/silentStepAutoAdvance.cjs.js.map +1 -0
- package/dist/components/Slide/utils/silentStepAutoAdvance.d.ts +14 -0
- package/dist/components/Slide/utils/silentStepAutoAdvance.es.js +37 -0
- package/dist/components/Slide/utils/silentStepAutoAdvance.es.js.map +1 -0
- package/dist/components/Slide/utils/silentStepAutoAdvance.test.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const s = (e) => {
|
|
2
|
+
const t = e?.trim().toLowerCase() ?? "";
|
|
3
|
+
return !(!t || t.startsWith("#") || t.startsWith("javascript:") || t.startsWith("data:") || t.startsWith("mailto:") || t.startsWith("tel:"));
|
|
4
|
+
}, n = (e) => e?.tagName?.toLowerCase() === "a", a = (e) => {
|
|
5
|
+
const t = e;
|
|
6
|
+
if (!t)
|
|
7
|
+
return null;
|
|
8
|
+
if (typeof t.closest == "function") {
|
|
9
|
+
const o = t.closest("a[href]");
|
|
10
|
+
return n(o) ? o : null;
|
|
11
|
+
}
|
|
12
|
+
const r = t.parentElement?.closest("a[href]");
|
|
13
|
+
return n(r) ? r : null;
|
|
14
|
+
}, l = (e) => {
|
|
15
|
+
const t = new Set(
|
|
16
|
+
(e ?? "").split(/\s+/).map((r) => r.trim()).filter(Boolean)
|
|
17
|
+
);
|
|
18
|
+
return t.add("noopener"), t.add("noreferrer"), Array.from(t).join(" ");
|
|
19
|
+
};
|
|
20
|
+
export {
|
|
21
|
+
n as isAnchorElement,
|
|
22
|
+
l as mergeAnchorRelValue,
|
|
23
|
+
a as resolveClosestAnchor,
|
|
24
|
+
s as shouldForceAnchorHrefToNewTab
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=link-targets.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-targets.es.js","sources":["../../../../src/components/ContentRender/utils/link-targets.ts"],"sourcesContent":["export const shouldForceAnchorHrefToNewTab = (href: string | null) => {\n const normalizedHref = href?.trim().toLowerCase() ?? \"\";\n\n if (!normalizedHref) {\n return false;\n }\n\n if (\n normalizedHref.startsWith(\"#\") ||\n normalizedHref.startsWith(\"javascript:\") ||\n normalizedHref.startsWith(\"data:\") ||\n normalizedHref.startsWith(\"mailto:\") ||\n normalizedHref.startsWith(\"tel:\")\n ) {\n return false;\n }\n\n return true;\n};\n\nexport const isAnchorElement = (\n node: { tagName?: string | null } | null | undefined\n): node is HTMLAnchorElement => node?.tagName?.toLowerCase() === \"a\";\n\nexport const resolveClosestAnchor = (target: EventTarget | null) => {\n const candidate = target as {\n closest?: (selector: string) => Element | null;\n parentElement?: Element | null;\n } | null;\n\n if (!candidate) {\n return null;\n }\n\n if (typeof candidate.closest === \"function\") {\n const anchor = candidate.closest(\"a[href]\");\n return isAnchorElement(anchor) ? anchor : null;\n }\n\n const anchor = candidate.parentElement?.closest(\"a[href]\");\n return isAnchorElement(anchor) ? anchor : null;\n};\n\nexport const mergeAnchorRelValue = (rel: string | null) => {\n const tokens = new Set(\n (rel ?? \"\")\n .split(/\\s+/)\n .map((token) => token.trim())\n .filter(Boolean)\n );\n\n tokens.add(\"noopener\");\n tokens.add(\"noreferrer\");\n\n return Array.from(tokens).join(\" \");\n};\n"],"names":["shouldForceAnchorHrefToNewTab","href","normalizedHref","isAnchorElement","node","resolveClosestAnchor","target","candidate","anchor","mergeAnchorRelValue","rel","tokens","token"],"mappings":"AAAO,MAAMA,IAAgC,CAACC,MAAwB;AACpE,QAAMC,IAAiBD,GAAM,KAAA,EAAO,iBAAiB;AAMrD,SAJI,GAACC,KAKHA,EAAe,WAAW,GAAG,KAC7BA,EAAe,WAAW,aAAa,KACvCA,EAAe,WAAW,OAAO,KACjCA,EAAe,WAAW,SAAS,KACnCA,EAAe,WAAW,MAAM;AAMpC,GAEaC,IAAkB,CAC7BC,MAC8BA,GAAM,SAAS,kBAAkB,KAEpDC,IAAuB,CAACC,MAA+B;AAClE,QAAMC,IAAYD;AAKlB,MAAI,CAACC;AACH,WAAO;AAGT,MAAI,OAAOA,EAAU,WAAY,YAAY;AAC3C,UAAMC,IAASD,EAAU,QAAQ,SAAS;AAC1C,WAAOJ,EAAgBK,CAAM,IAAIA,IAAS;AAAA,EAC5C;AAEA,QAAMA,IAASD,EAAU,eAAe,QAAQ,SAAS;AACzD,SAAOJ,EAAgBK,CAAM,IAAIA,IAAS;AAC5C,GAEaC,IAAsB,CAACC,MAAuB;AACzD,QAAMC,IAAS,IAAI;AAAA,KAChBD,KAAO,IACL,MAAM,KAAK,EACX,IAAI,CAACE,MAAUA,EAAM,MAAM,EAC3B,OAAO,OAAO;AAAA,EAAA;AAGnB,SAAAD,EAAO,IAAI,UAAU,GACrBA,EAAO,IAAI,YAAY,GAEhB,MAAM,KAAKA,CAAM,EAAE,KAAK,GAAG;AACpC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("../../_virtual/jsx-runtime.cjs.js"),t=require("react"),Qn=require("../../lib/sandboxInteraction.cjs.js"),oe=require("../../lib/utils.cjs.js"),Zn=require("../ui/loading-overlay-card.cjs.js"),er=require("../ContentRender/ContentRender.cjs.js"),Jt=require("../ContentRender/IframeSandbox.cjs.js");require("../ui/inputGroup/input-group.cjs.js");require("../ContentRender/contentRenderI18n.cjs.js");const Fe=require("../../lib/mobileDevice.cjs.js"),tr=require("./Player.cjs.js"),nr=require("./MarkdownSlideScaling.cjs.js"),rr=require("./SubtitleOverlay.cjs.js"),sr=require("./useSlide.cjs.js"),or=require("./useWakePlayerFromIframe.cjs.js"),lr=require("./utils/playerKeyboardShortcutContext.cjs.js"),ur=require("./utils/playerKeyboardShortcuts.cjs.js"),Ee=require("./utils/mobileScreenMode.cjs.js"),Gt=require("./utils/interactionPlayback.cjs.js"),ir=require("./utils/markdownScaling.cjs.js"),rt=require("./utils/playerNavigationContext.cjs.js"),ar=require("./utils/appendedMarkerAdvance.cjs.js"),zt=require("./utils/playbackSequence.cjs.js"),st=require("./utils/subtitleJumpNavigation.cjs.js"),Yt=require("./utils/playerCustomActions.cjs.js"),cr=require("./utils/playbackTimeStore.cjs.js"),dr=require("./utils/interactionResolution.cjs.js"),fr=require("./utils/playerToggleMode.cjs.js"),mr=require("./utils/playerVisibility.cjs.js"),Qt=require("./slideI18n.cjs.js");;/* empty css */const pr=require("../../node_modules/lucide-react/dist/esm/icons/chevron-left.cjs.js"),hr=2e3,br=300,xr=160,yr=16,$t=3e3,Sr=["button","input","textarea",'[contenteditable=""]','[contenteditable="true"]','[contenteditable="plaintext-only"]'].join(", "),lt="waitingForAudio",Er=(l,c)=>typeof l=="string"?l:l[c]??l[lt]??Qt.DEFAULT_SLIDE_BUFFERING_TEXTS[c],vr=(l,c)=>typeof l=="string"?l:{...c,...l},gr=(l,c)=>c?l!=="loadingAudio":!1,Zt=t.memo(({content:l,title:c,locale:O,defaultButtonText:le,defaultInputText:B,defaultSelectedValues:L,confirmButtonText:W,copyButtonText:J,copiedButtonText:ve,onSend:qe,readonly:G=!1})=>s.jsxRuntimeExports.jsxs("div",{className:"slide-player__interaction-card",children:[s.jsxRuntimeExports.jsx("div",{className:"slide-player__interaction-header",children:s.jsxRuntimeExports.jsx("p",{className:"slide-player__interaction-title",children:c})}),s.jsxRuntimeExports.jsx("div",{className:"slide-player__interaction-body",children:s.jsxRuntimeExports.jsx(er.default,{content:l,locale:O,defaultButtonText:le,defaultInputText:B,defaultSelectedValues:L,confirmButtonText:W,copyButtonText:J,copiedButtonText:ve,onSend:qe,readonly:G,sandboxMode:"content"})})]}));Zt.displayName="InteractionOverlayCard";const Ir=(l,c)=>l.length===c.length&&l.every((O,le)=>{const B=c[le];return O.sequence_number===B?.sequence_number&&O.type===B?.type&&O.content===B?.content}),Cr=['input:not([type="button"]):not([type="checkbox"]):not([type="radio"]):not([type="submit"])',"textarea",'[contenteditable=""]','[contenteditable="true"]','[contenteditable="plaintext-only"]'].join(", "),Xt=l=>l instanceof HTMLElement&&l.matches(Cr),ot=l=>l instanceof HTMLElement&&l.matches(Sr),Rr=({elementList:l=[],locale:c,playerEnabled:O,playerControlsVisibility:le,playerClassName:B,fullscreenHeader:L,playerCustomActions:W,playerCustomActionPauseOnActive:J=!0,bufferingText:ve,interactionTitle:qe,interactionTexts:G,playerTexts:en,playerAutoHideDelay:Ne=3e3,markerAutoAdvanceDelay:ut=hr,interactionDefaultValueOptions:it,onSend:at,onPlayerVisibilityChange:Oe,onMobileViewModeChange:ct,onStepChange:dt,enableKeyboardShortcuts:z=!0,enableIframeScaling:tn=!0,enableMarkdownScaling:nn=!0,disableLoadingOverlay:C=!1,className:rn,onPointerDown:ft,onFocusCapture:mt,...sn})=>{const V=t.useMemo(()=>Qt.getSlideLocaleTexts(c),[c]),on=t.useMemo(()=>vr(ve,V.bufferingText),[ve,V.bufferingText]),{playerEnabled:ln,playerControlsVisibility:F}=mr.resolveSlidePlayerVisibility({playerEnabled:O,playerControlsVisibility:le}),ge=t.useId(),ue=t.useRef(null),pt=t.useRef(null),Be=t.useRef(null),ht=t.useRef(null),Y=t.useRef(null),Ie=t.useRef(!1),ie=t.useRef(null),D=t.useRef(null),ae=t.useRef(null),Le=t.useRef(null),bt=t.useRef([]),ce=t.useRef(!1),K=t.useRef(null),de=t.useRef(null),xt=t.useRef(0),yt=t.useRef(null),St=t.useRef({markerCount:0,currentIndex:-1,canGoNext:!1}),Ve=t.useRef(!1),{currentElementList:_,stepElementLists:Et,slideElementList:E,currentIndex:o,audioList:h,audioSlideIndexes:Ce,currentAudioSequenceIndexes:Re,currentStepHasSpeakableElement:v,currentInteractionElement:d,canGoPrev:un,canGoNext:g,handlePrev:vt,handleNext:R,handleGoTo:gt}=sr.default(l),fe=t.useMemo(()=>{if(!(o<0))return E[o]},[o,E]),an=E.filter(e=>e.is_renderable!==!1).length===1,f=ln&&(E.length>0||h.length>0||!!d),cn=t.useMemo(()=>({enabled:z,ownerId:ge}),[z,ge]),q=t.useCallback(()=>{!z||!f||ur.activatePlayerKeyboardShortcutOwner(ge)},[z,ge,f]),A=t.useMemo(()=>Re.map(e=>h[e]?.audioKey).filter(e=>!!e),[h,Re]),[dn,me]=t.useState(!0),[Ae,$]=t.useState(!1),[De,It]=t.useState(!0),[pe,Ct]=t.useState(!0),[x,N]=t.useState(null),[fn,Rt]=t.useState(null),[mn,b]=t.useState(!1),[pn,Ke]=t.useState(lt),[k,Ue]=t.useState(!1),[hn,ke]=t.useState(!1),[At,bn]=t.useState(!0),[He,We]=t.useState(!1),[m,Je]=t.useState(),[X,Te]=t.useState(!1),[xn,Ge]=t.useState(!1),[kt,we]=t.useState(!1),[yn,he]=t.useState(0),[Tt,Sn]=t.useState(!1),P=t.useMemo(()=>Fe.isMobileDevice(),[]),[Me,ze]=t.useState(Ee.DEFAULT_MOBILE_VIEW_MODE),[wt,Ye]=t.useState(!1),[En,Mt]=t.useState(()=>P?Fe.isLandscapeViewport():!1),Q=t.useMemo(()=>cr.createPlaybackTimeStore(),[]),{effectiveMobileViewMode:Z,isImmersiveMobileFullscreen:ee,isNativeMobileFullscreen:_t,shouldRotateFullscreenViewport:vn}=t.useMemo(()=>Ee.resolveMobileViewModeState({hasManualMobileViewMode:wt,isMobileDevice:P,mobileViewMode:Me}),[wt,P,En,Me]),gn=t.useRef(Z),y=f&&F!=="hidden"&&(F==="visible"||dn),In=ee&&y,Cn=ee&&y,Rn=ee||_t,Pt=Tt&&!P,An=t.useCallback(e=>{Ye(!0),ze(e)},[]),jt=t.useCallback(()=>{Ye(!1),ze(Ee.DEFAULT_MOBILE_VIEW_MODE)},[]),kn=t.useCallback(()=>{jt(),L?.onBack?.()},[L,jt]),Ft=t.useCallback(e=>{We(e)},[]),qt=t.useCallback(()=>{We(e=>!e)},[]),{mountedStepStates:Tn,currentMountedStateIndex:wn}=t.useMemo(()=>{const e=[],n=new Map;return Et.forEach((u,i)=>{const a=e.findIndex(r=>Ir(r.elementList,u));if(a>=0){e[a]?.sourceStepIndexes.push(i),n.set(i,a);return}e.push({elementList:u,sourceStepIndexes:[i]}),n.set(i,e.length-1)}),{mountedStepStates:e,currentMountedStateIndex:o>=0?n.get(o)??-1:-1}},[o,Et]),Nt=t.useMemo(()=>String(o),[o]),S=t.useMemo(()=>x?h.findIndex(e=>(e.audioKey??"")===x):-1,[h,x]),$e=t.useMemo(()=>S>=0?h[S]:void 0,[h,S]),Mn=$e?.element?.subtitle_cues??[],_e=t.useMemo(()=>A[0]??"none",[A]),Xe=t.useMemo(()=>({currentElement:Yt.resolvePlayerCustomActionElement({currentAudioIndex:S,currentAudioSequenceIndexes:Re,audioList:h,currentInteractionElement:m,currentStepElement:fe}),currentIndex:o,currentStepElement:fe,isActive:He,setActive:Ft,toggleActive:qt}),[m,h,S,Re,o,fe,He,Ft,qt]),Qe=t.useMemo(()=>Yt.getPlayerCustomActionCount(W,Xe),[Xe,W]),_n=t.useMemo(()=>({"--slide-player-custom-action-count":String(Qe),"--slide-player-mobile-control-count":String(Qe+4)}),[Qe]),Ot=A.length>0,Bt=t.useMemo(()=>d?`${d.sequence_number??"none"}:${String(d.content??"")}`:"none",[d]),be=t.useMemo(()=>[Nt,Bt].join("|"),[Bt,Nt]),Pn=t.useMemo(()=>[be,$e?.audioKey??"none",String(S)].join("|"),[S,$e?.audioKey,be]),Lt=!!t.useMemo(()=>!_e||_e==="none"?"":h.find(n=>n.audioKey===_e)?.audioUrl?.trim()??"",[h,_e]),U=J&&!!W&&He,xe=t.useMemo(()=>fr.shouldUseAutoAdvanceToggle({canGoNext:g,currentAudioIndex:S,currentStepHasSpeakableElement:v,hasInteraction:!!d}),[g,S,d,v]),j=t.useCallback(()=>{Y.current!==null&&(window.clearTimeout(Y.current),Y.current=null)},[]),T=t.useCallback(()=>{D.current!==null&&(window.clearTimeout(D.current),D.current=null)},[]),w=t.useCallback(()=>{ae.current!==null&&(window.clearTimeout(ae.current),ae.current=null)},[]),te=t.useCallback(()=>{ie.current!==null&&(window.clearTimeout(ie.current),ie.current=null)},[]),M=t.useCallback((e={})=>{te(),T(),w(),N(null),Q.reset(),b(!1),Ke(lt),Ue(!1),ke(!1),Rt(null),e.preservePendingSubtitleJump||(de.current=null),Je(void 0),Te(!1),he(0)},[te,T,w,Q]),Pe=t.useCallback(e=>{xt.current+=1,Rt({...e,id:xt.current})},[]),ne=t.useCallback(()=>{const e=A[0];return e?(N(e),!0):!1},[A]),ye=t.useCallback(()=>{T(),w(),Te(!1),he(0),!ne()&&g&&R()},[g,T,w,R,ne]),Vt=t.useCallback(e=>{if(w(),!e)return;const n=()=>{ae.current=null,he(xr),Te(!0),K.current=null};ae.current=window.setTimeout(n,br)},[w]),Ze=t.useCallback(()=>Ie.current||!!ue.current?.querySelector(".slide-player__controls:hover"),[]),p=t.useCallback((e=Ae)=>{!f||F==="hidden"||(me(!0),j(),!(F==="visible"||!e||Ne<=0||Ze())&&(Y.current=window.setTimeout(()=>{if(Ze()){Y.current=null;return}me(!1),Y.current=null},Ne)))},[j,Ae,Ze,Ne,F,f]),Se=!!st.hasResolvedInteractionElement(d),H=!!d&&!Se,jn=t.useCallback(e=>{It(e)},[]),re=t.useCallback(e=>{e&&It(e.shouldContinuePlayback)},[]);t.useEffect(()=>{Ct(De)},[o,De,J]),t.useEffect(()=>{J&&We(!1)},[o,J]),t.useEffect(()=>()=>{te(),j(),T(),w()},[te,T,w,j]),t.useEffect(()=>(Oe?.(y),()=>{Oe?.(!1)}),[Oe,y]),t.useEffect(()=>{y||(Ie.current=!1)},[y]),t.useEffect(()=>{P||Me===Ee.DEFAULT_MOBILE_VIEW_MODE||(Ye(!1),ze(Ee.DEFAULT_MOBILE_VIEW_MODE))},[P,Me]),t.useEffect(()=>{if(!P){Mt(!1);return}const e=()=>{Mt(Fe.isLandscapeViewport())};return e(),Fe.subscribeMobileDeviceChange(e)},[P]),t.useEffect(()=>{ct?.(Z)},[Z,ct]),t.useEffect(()=>{gn.current=Z},[Z]),t.useEffect(()=>{dt?.(fe,o)},[o,fe,dt]),t.useEffect(()=>{const e=St.current,n=ar.shouldAutoAdvanceIntoAppendedMarker({previousMarkerCount:e.markerCount,nextMarkerCount:E.length,previousIndex:e.currentIndex,previousCanGoNext:e.canGoNext,nextCanGoNext:g,currentAudioKey:x,hasCompletedCurrentStepAudio:k,hasResolvedCurrentInteraction:Se,currentStepHasSpeakableElement:v,currentInteractionElement:d,isAutoAdvanceEnabled:pe,shouldUseSilentStepAutoAdvanceToggle:xe});St.current={markerCount:E.length,currentIndex:o,canGoNext:g},n&&R()},[g,x,o,d,v,R,k,Se,pe,xe,E.length]),t.useEffect(()=>{if(!f||F==="hidden"){j(),me(!1);return}if(F==="visible"){j(),me(!0);return}Ae||p(!0)},[j,Ae,F,f,p]),t.useEffect(()=>{if(typeof window>"u")return;const e=n=>{n.origin===window.location.origin&&Qn.isSandboxInteractionMessage(n.data)&&n.data.eventType==="click"&&f&&(q(),$(!0),p(!0))};return window.addEventListener("message",e),()=>{window.removeEventListener("message",e)}},[q,f,p]),or.default({sectionRef:ue,enabled:f,keyboardShortcutsEnabled:z,onKeyboardShortcut:q,onWake:()=>{q(),$(!0),p(!0)}}),t.useEffect(()=>{if(!f){M();return}const{hasPlaybackContextChanged:e,shouldInitializeAudioSequence:n}=zt.getPlaybackSequenceTransition({previousResetKey:yt.current,nextResetKey:be,currentAudioKey:x,hasCompletedCurrentStepAudio:k});yt.current=be;const u=K.current===o&&!!d,i=Gt.shouldPresentInteractionOverlay({hasInteraction:!!d,shouldBlockPlaybackForInteraction:H,shouldOpenInteractionOverlayAfterAudio:u,hasPlaybackContextChanged:e,hasResolvedCurrentInteraction:Se,currentStepHasSpeakableElement:v}),a=de.current,r=a?.slideIndex===o;if(e&&M({preservePendingSubtitleJump:r}),!(_.length===0&&!d)&&!U){if(a?.slideIndex===o&&st.canReachSubtitleJumpTarget({currentIndex:o,resolvedCurrentInteractionElement:m,slideElementList:E,targetSlideIndex:a.slideIndex})){de.current=null,Ve.current=!0,N(a.audioKey),Pe({audioIndex:a.audioIndex,timeMs:a.timeMs});return}if(d&&Je(d),i){Vt(d);return}if(w(),K.current=null,!!n&&!ne()){if(v){if(C){b(!1);return}b(!0);return}if(g&&!(xe&&!pe))return ie.current=window.setTimeout(()=>{ie.current=null,R()},ut),()=>{te()}}}},[m,g,te,_.length,o,d,x,be,v,ut,R,k,C,pe,Se,H,w,M,Pe,Vt,f,E,ne,U,xe]),t.useEffect(()=>{if(C||U||!v||H){b(!1);return}if(k){b(!1);return}if(Ot){b(!1);return}Ke("waitingForAudio"),b(!0)},[Ot,v,k,C,U,H]),t.useEffect(()=>{const e=Ve.current;Ve.current=!1,zt.shouldStartDefaultAudioSequence({currentAudioKey:x,currentAudioSequenceLength:A.length,currentStepHasSpeakableElement:v,hasCompletedCurrentStepAudio:k,shouldBlockPlaybackForInteraction:H,shouldPausePlaybackForCustomAction:U,shouldSkipDefaultAudioStart:e})&&ne()},[x,A,v,k,U,H,ne]),t.useEffect(()=>{!x||S>=0||N(null)},[S,x]),t.useEffect(()=>{S>=0||Q.reset()},[S,Q]),t.useEffect(()=>{ke(!1)},[Pn]);const{interactionDefaults:Dt,interactionDefaultSelectedValues:Fn,hasResolvedInteractionInput:et,isInteractionReadonly:Kt,shouldAutoContinueInteraction:Ut}=t.useMemo(()=>dr.resolveSlideInteractionState(m,{interactionDefaultValueOptions:it}),[m,it]),tt=Gt.shouldRenderInteractionOverlay({hasActiveInteraction:!!m,isInteractionOverlayOpen:X,shouldBlockPlaybackForInteraction:H&&!Kt&&!et,playerControlsVisible:y,shouldMountPlayer:f,hasFocusedTextInput:xn}),qn=t.useCallback(e=>{const u=[...e.selectedValues??[],e.inputText?.trim()??"",e.buttonText?.trim()??""].filter(Boolean).join(", ");Je(i=>!i||!u?i:{...i,user_input:u}),at?.(e,m),ye()},[m,ye,at]);t.useEffect(()=>{const e=()=>{Sn(document.fullscreenElement===ue.current)};return e(),document.addEventListener("fullscreenchange",e),()=>{document.removeEventListener("fullscreenchange",e)}},[]),t.useEffect(()=>{m&&X||(Ge(!1),we(!1))},[m,X]),t.useEffect(()=>{if(!tt){he(0);return}const e=Le.current;if(!e)return;const n=()=>{const i=Math.ceil(e.getBoundingClientRect().height);he(i+yr)};if(n(),typeof ResizeObserver>"u")return;const u=new ResizeObserver(()=>{n()});return u.observe(e),()=>{u.disconnect()}},[tt]),t.useEffect(()=>{if(T(),!!X){if(Ut)return D.current=window.setTimeout(()=>{D.current=null,ye()},$t),()=>{T()};if(!(kt||!et))return D.current=window.setTimeout(()=>{D.current=null,ye()},$t),()=>{T()}}},[T,ye,kt,et,X,Ut]);const Nn=(e,n={})=>e?e.type==="slot"?s.jsxRuntimeExports.jsx(s.jsxRuntimeExports.Fragment,{children:e.content}):e.type==="html"?s.jsxRuntimeExports.jsx(Jt.default,{className:"content-render-iframe",disableLoadingOverlay:C,hideFullScreen:!0,locale:c,mode:"blackboard",replaceRootScreenHeightWithFull:n.replaceRootScreenHeightWithFull,type:"sandbox",content:e.content,enableScaling:tn}):s.jsxRuntimeExports.jsx(Jt.default,{className:"content-render-iframe",disableLoadingOverlay:C,hideFullScreen:!0,locale:c,mode:"blackboard",type:"markdown",content:e.content}):null,On=(e=[],n=!1)=>{if(e.length===0)return null;const u=e.filter(r=>r.is_renderable!==!1).length,i=n&&nn?ir.resolveMarkdownScalingMode(e):"disabled",a=e.reduce((r,I,se)=>I.is_renderable!==!1?se:r,-1);return s.jsxRuntimeExports.jsx(nr.default,{className:"slide-stage__content flex w-full flex-col gap-4",mode:i,children:e.map((r,I)=>{const se=r.type==="html"&&r.is_renderable===!1;return s.jsxRuntimeExports.jsx("div",{ref:n&&I===a?ht:null,"aria-hidden":se||void 0,className:oe.cn("w-full shrink-0",u===1&&r.is_renderable!==!1&&"slide-element--single",se?"pointer-events-none fixed left-[-200vw] top-0 -z-10 h-[100dvh] w-[100vw] overflow-hidden opacity-0":r.is_renderable===!1&&"hidden"),children:Nn(r,{replaceRootScreenHeightWithFull:u===1&&r.type==="html"&&r.is_renderable!==!1})},r.sequence_number??`${r.type}-${I}`)})})},Bn=t.useCallback(()=>{const e=ue.current;if(e){if(document.fullscreenElement===e){document.exitFullscreen().catch(()=>{});return}e.requestFullscreen?.().catch(()=>{})}},[]),Ht=t.useCallback(()=>{const e=Be.current;e&&e.scrollTo({top:e.scrollHeight,behavior:"smooth"})},[]),nt=t.useCallback(e=>st.canReachSubtitleJumpTarget({currentIndex:o,resolvedCurrentInteractionElement:m,slideElementList:E,targetSlideIndex:Ce[e.audioIndex]}),[m,Ce,o,E]),Ln=t.useCallback((e,n)=>{const i=h[e.audioIndex]?.audioKey,a=Ce[e.audioIndex];return!i||a==null||!nt(e)?!1:(re(n),K.current=null,b(!1),Ue(!1),ke(!1),rt.shouldWakePlayerControlsAfterNavigation(n)&&($(!0),p(!0)),a===o?(de.current=null,M(),N(i),Pe(e),!0):(ce.current=!0,M(),de.current={audioIndex:e.audioIndex,audioKey:i,slideIndex:a,timeMs:e.timeMs},gt(a),!0))},[h,Ce,nt,o,gt,Pe,M,p,re]),Vn=t.useCallback(e=>{re(e),ce.current=!0,K.current=null,b(!1),rt.shouldWakePlayerControlsAfterNavigation(e)&&($(!0),p(!0)),M(),vt()},[vt,M,p,re]),Dn=t.useCallback(e=>{re(e),ce.current=!0,K.current=null,b(!1),rt.shouldWakePlayerControlsAfterNavigation(e)&&($(!0),p(!0)),M(),R()},[R,M,p,re]),Kn=t.useCallback(({loading:e,reason:n})=>{if(C){b(!1);return}if(!v||k){b(!1);return}e&&n&&Ke(n),b(gr(n,e))},[v,k,C]);t.useEffect(()=>{C&&b(!1)},[C]);const Un=t.useCallback(e=>{const n=h[e]?.audioKey;if(!n||!x||n!==x)return;const u=A.findIndex(r=>r===n);if(u<0){N(null);return}const i=u+1,a=A[i];if(a){N(a);return}if(N(null),Ue(!0),b(!1),g){const r=o+1,I=E[r];Lt&&I?.type==="interaction"&&(K.current=r),R();return}},[h,g,o,x,A,R,Lt,E]),Hn=t.useCallback(()=>{m&&Te(e=>!e)},[m]),Wn=t.useCallback(()=>{Ie.current=!0,j(),f&&me(!0)},[j,f]),Jn=t.useCallback(()=>{Ie.current=!1,p(!0)},[p]),Wt=t.useCallback(e=>{e.stopPropagation(),y&&p(!0)},[y,p]),Gn=t.useCallback(e=>{q(),ft?.(e)},[q,ft]),zn=t.useCallback(e=>{q(),mt?.(e)},[q,mt]),Yn=t.useCallback(()=>{$(!0),p(!0)},[p]),je=t.useMemo(()=>_.map((e,n)=>`${e.sequence_number??`${e.type}-${n}`}:${String(e.is_new??"")}`),[_]);return t.useEffect(()=>{const e=bt.current,i=(e.length>0&&e.length<je.length&&e.every((r,I)=>r===je[I])?_.slice(e.length):[]).some(r=>r.is_new===!1);if(bt.current=je,!i)return;const a=window.requestAnimationFrame(()=>{const r=Be.current,I=ht.current;if(!r||!I)return;const se=r.getBoundingClientRect(),$n=I.getBoundingClientRect(),Xn=r.scrollTop+($n.top-se.top);r.scrollTo({top:Math.max(Xn,0),behavior:"smooth"})});return()=>{window.cancelAnimationFrame(a)}},[_,je]),t.useEffect(()=>{if(!ce.current||(ce.current=!1,_.length===0))return;const e=window.requestAnimationFrame(()=>{Ht()});return()=>{window.cancelAnimationFrame(e)}},[_,Ht]),s.jsxRuntimeExports.jsxs("section",{ref:ue,className:oe.cn("relative h-full w-full",P&&"slide--mobile-device",Pt&&"slide--browser-fullscreen",ee&&"slide--mobile-landscape",_t&&"slide--mobile-landscape-native",rn),onClick:Yn,onFocusCapture:zn,onPointerDown:Gn,...sn,children:[Rn?s.jsxRuntimeExports.jsx("div",{"aria-hidden":"true",className:"pointer-events-none fixed left-0 top-0 z-[9999] h-[100vh] max-h-[100vh] w-[100vw]"}):null,s.jsxRuntimeExports.jsxs("div",{ref:pt,className:oe.cn("slide__viewport relative h-full min-h-0 w-full",ee&&"slide__viewport--mobile-landscape",ee&&!vn&&"slide__viewport--mobile-landscape-native"),children:[In?s.jsxRuntimeExports.jsxs("div",{className:"slide-landscape-header",children:[s.jsxRuntimeExports.jsx("button",{"aria-label":L?.backAriaLabel??V.fullscreenBackAriaLabel,className:"slide-landscape-header__back",onClick:kn,type:"button",children:s.jsxRuntimeExports.jsx(pr.default,{className:"slide-landscape-header__icon h-6 w-6",strokeWidth:2.25})}),L?.content?s.jsxRuntimeExports.jsx("div",{className:"min-w-0 flex-1 overflow-hidden",children:L.content}):null]}):null,s.jsxRuntimeExports.jsx("div",{className:oe.cn("h-full min-h-0 w-full",Cn&&"slide__viewport-content--with-header",an?"slide-content--single":"grid gap-4"),children:_.length>0?s.jsxRuntimeExports.jsx("div",{className:"slide-stage",children:s.jsxRuntimeExports.jsx("div",{ref:Be,className:"slide-stage__layer w-full",children:Tn.map((e,n)=>{const u=n===wn;return s.jsxRuntimeExports.jsx("div",{"aria-hidden":!u||void 0,className:"w-full h-full",style:{display:u?void 0:"none"},children:On(e.elementList,u)},e.sourceStepIndexes[0]??n)})})}):null}),mn?s.jsxRuntimeExports.jsx(Zn.default,{message:Er(on,pn),className:"absolute left-1/2 top-1/2 z-[3] -translate-x-1/2 -translate-y-1/2"}):null,s.jsxRuntimeExports.jsx(rr.default,{extraBottomOffset:yn,hasPlayerGap:y,isEnabled:At&&hn,isPlayerHidden:f&&!y,playbackTimeStore:Q,subtitleCues:Mn}),tt?s.jsxRuntimeExports.jsx("div",{ref:Le,"data-player-keyboard-shortcuts-ignore":"true",className:oe.cn("slide-interaction-overlay",y&&f?"slide-interaction-overlay--with-player":"slide-interaction-overlay--standalone"),onClick:Wt,onPointerDown:Wt,onFocusCapture:e=>{Xt(e.target)&&Ge(!0),ot(e.target)&&we(!0)},onBlurCapture:e=>{if(!Xt(e.target))return;const n=e.relatedTarget;n instanceof HTMLElement&&Le.current?.contains(n)||Ge(!1)},onPointerDownCapture:e=>{ot(e.target)&&we(!0)},onInputCapture:e=>{ot(e.target)&&we(!0)},style:_n,children:s.jsxRuntimeExports.jsx(Zt,{content:String(m?.content??""),locale:c,defaultButtonText:Dt.buttonText??"",defaultInputText:Dt.inputText??"",defaultSelectedValues:Fn,confirmButtonText:G?.confirmButtonText??V.interactionTexts.confirmButtonText,copyButtonText:G?.copyButtonText??V.interactionTexts.copyButtonText,copiedButtonText:G?.copiedButtonText??V.interactionTexts.copiedButtonText,onSend:qn,readonly:Kt,title:G?.title??qe??V.interactionTexts.title})}):null,f?s.jsxRuntimeExports.jsx(lr.PlayerKeyboardShortcutContext.Provider,{value:cn,children:s.jsxRuntimeExports.jsx(tr.default,{audioList:h,className:oe.cn("absolute left-1/2 z-[2] -translate-x-1/2",Pt?"bottom-3":"-bottom-3",B,!y&&"pointer-events-none opacity-0"),currentAudioIndex:S,defaultPlaying:De,enableKeyboardShortcuts:z,isPlaybackPaused:U,isAutoAdvanceEnabled:pe,locale:c,hasInteraction:!!m,isInteractionOpen:X,isSubtitleEnabled:At,onAutoAdvanceToggle:Ct,onLoadingChange:Kn,onPlaybackStarted:()=>{ke(!0)},onPlaybackPreferenceChange:jn,onPlaybackTimeChange:Q.setTime,onSubtitleToggle:()=>{bn(e=>!e)},nextDisabled:!g,onEnded:Un,onFullscreen:Bn,isFullscreen:Tt,mobileViewMode:Z,settingsPortalContainer:pt.current,onMobileViewModeChange:An,onControlsPointerEnter:Wn,onControlsPointerLeave:Jn,onInteractionToggle:Hn,onNext:Dn,onPrev:Vn,onSubtitleJump:Ln,canJumpToSubtitleTarget:nt,prevDisabled:!un,showControls:y,subtitleSeekRequest:fn,texts:en,customActionContext:Xe,customActions:W,useAutoAdvanceToggle:xe})}):null]})]})};exports.default=Rr;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("../../_virtual/jsx-runtime.cjs.js"),t=require("react"),mr=require("../../lib/sandboxInteraction.cjs.js"),ce=require("../../lib/utils.cjs.js"),pr=require("../ui/loading-overlay-card.cjs.js"),yr=require("../ContentRender/ContentRender.cjs.js"),on=require("../ContentRender/IframeSandbox.cjs.js");require("../ui/inputGroup/input-group.cjs.js");require("../ContentRender/contentRenderI18n.cjs.js");const Ue=require("../../lib/mobileDevice.cjs.js"),hr=require("./Player.cjs.js"),Sr=require("./MarkdownSlideScaling.cjs.js"),br=require("./SubtitleOverlay.cjs.js"),xr=require("./useSlide.cjs.js"),vr=require("./useWakePlayerFromIframe.cjs.js"),Er=require("./utils/playerKeyboardShortcutContext.cjs.js"),gr=require("./utils/playerKeyboardShortcuts.cjs.js"),Te=require("./utils/mobileScreenMode.cjs.js"),ln=require("./utils/interactionPlayback.cjs.js"),Ir=require("./utils/markdownScaling.cjs.js"),mt=require("./utils/playerNavigationContext.cjs.js"),Ar=require("./utils/appendedMarkerAdvance.cjs.js"),un=require("./utils/playbackSequence.cjs.js"),pt=require("./utils/subtitleJumpNavigation.cjs.js"),an=require("./utils/playerCustomActions.cjs.js"),Rr=require("./utils/playbackTimeStore.cjs.js"),Cr=require("./utils/interactionResolution.cjs.js"),Tr=require("./utils/playerToggleMode.cjs.js"),cn=require("./utils/imageOnlyStepVisualReady.cjs.js"),kr=require("./utils/silentStepAutoAdvance.cjs.js"),wr=require("./utils/playerVisibility.cjs.js"),mn=require("./slideI18n.cjs.js");;/* empty css */const Mr=require("../../node_modules/lucide-react/dist/esm/icons/chevron-left.cjs.js"),_r=2e3,Pr=300,qr=160,Fr=16,dn=3e3,Or=["button","input","textarea",'[contenteditable=""]','[contenteditable="true"]','[contenteditable="plaintext-only"]'].join(", "),ht="waitingForAudio",jr=(i,d)=>typeof i=="string"?i:i[d]??i[ht]??mn.DEFAULT_SLIDE_BUFFERING_TEXTS[d],Br=(i,d)=>typeof i=="string"?i:{...d,...i},Lr=(i,d)=>d?i!=="loadingAudio":!1,pn=t.memo(({content:i,title:d,locale:N,defaultButtonText:de,defaultInputText:V,defaultSelectedValues:D,confirmButtonText:z,copyButtonText:$,copiedButtonText:ke,onSend:He,readonly:X=!1})=>o.jsxRuntimeExports.jsxs("div",{className:"slide-player__interaction-card",children:[o.jsxRuntimeExports.jsx("div",{className:"slide-player__interaction-header",children:o.jsxRuntimeExports.jsx("p",{className:"slide-player__interaction-title",children:d})}),o.jsxRuntimeExports.jsx("div",{className:"slide-player__interaction-body",children:o.jsxRuntimeExports.jsx(yr.default,{content:i,locale:N,defaultButtonText:de,defaultInputText:V,defaultSelectedValues:D,confirmButtonText:z,copyButtonText:$,copiedButtonText:ke,onSend:He,readonly:X,sandboxMode:"content"})})]}));pn.displayName="InteractionOverlayCard";const Nr=(i,d)=>i.length===d.length&&i.every((N,de)=>{const V=d[de];return N.sequence_number===V?.sequence_number&&N.type===V?.type&&N.content===V?.content}),yt=i=>i instanceof HTMLElement&&i.matches(Or),Vr=['input:not([type="button"]):not([type="checkbox"]):not([type="radio"]):not([type="submit"])',"textarea",'[contenteditable=""]','[contenteditable="true"]','[contenteditable="plaintext-only"]'].join(", "),fn=i=>i instanceof HTMLElement&&i.matches(Vr),Dr=({elementList:i=[],locale:d,playerEnabled:N,playerControlsVisibility:de,playerClassName:V,fullscreenHeader:D,playerCustomActions:z,playerCustomActionPauseOnActive:$=!0,bufferingText:ke,interactionTitle:He,interactionTexts:X,playerTexts:yn,playerAutoHideDelay:We=3e3,markerAutoAdvanceDelay:St=_r,interactionDefaultValueOptions:bt,onSend:xt,onPlayerVisibilityChange:Ge,onMobileViewModeChange:vt,onStepChange:Et,enableKeyboardShortcuts:Q=!0,enableIframeScaling:hn=!0,enableMarkdownScaling:Sn=!0,disableLoadingOverlay:R=!1,className:bn,onPointerDown:gt,onFocusCapture:It,...xn})=>{const K=t.useMemo(()=>mn.getSlideLocaleTexts(d),[d]),vn=t.useMemo(()=>Br(ke,K.bufferingText),[ke,K.bufferingText]),{playerEnabled:En,playerControlsVisibility:O}=wr.resolveSlidePlayerVisibility({playerEnabled:N,playerControlsVisibility:de}),we=t.useId(),fe=t.useRef(null),At=t.useRef(null),Me=t.useRef(null),Rt=t.useRef(null),Z=t.useRef(null),_e=t.useRef(!1),me=t.useRef(null),Pe=t.useRef(null),U=t.useRef(null),pe=t.useRef(null),Je=t.useRef(null),Ct=t.useRef([]),ye=t.useRef(!1),H=t.useRef(null),he=t.useRef(null),Tt=t.useRef(0),kt=t.useRef(null),wt=t.useRef({markerCount:0,currentIndex:-1,canGoNext:!1}),Ye=t.useRef(!1),{currentElementList:I,stepElementLists:Mt,slideElementList:g,currentIndex:s,audioList:y,audioSlideIndexes:qe,currentAudioSequenceIndexes:Fe,currentStepHasSpeakableElement:h,currentInteractionElement:c,canGoPrev:gn,canGoNext:A,handlePrev:_t,handleNext:C,handleGoTo:Pt}=xr.default(i),Se=t.useMemo(()=>{if(!(s<0))return g[s]},[s,g]),ee=t.useMemo(()=>I.map((e,n)=>`${e.sequence_number??`${e.type}-${n}`}:${String(e.is_new??"")}`),[I]),In=g.filter(e=>e.is_renderable!==!1).length===1,f=En&&(g.length>0||y.length>0||!!c),An=t.useMemo(()=>({enabled:Q,ownerId:we}),[Q,we]),j=t.useCallback(()=>{!Q||!f||gr.activatePlayerKeyboardShortcutOwner(we)},[Q,we,f]),T=t.useMemo(()=>Fe.map(e=>y[e]?.audioKey).filter(e=>!!e),[y,Fe]),[Rn,be]=t.useState(!0),[Oe,te]=t.useState(!1),[ze,qt]=t.useState(!0),[xe,Ft]=t.useState(!0),[b,B]=t.useState(null),[Cn,Ot]=t.useState(null),[Tn,S]=t.useState(!1),[kn,$e]=t.useState(ht),[k,Xe]=t.useState(!1),[wn,je]=t.useState(!1),[jt,Mn]=t.useState(!0),[Qe,Ze]=t.useState(!1),[m,et]=t.useState(),[ne,Be]=t.useState(!1),[Bt,Le]=t.useState(!1),[_n,tt]=t.useState(!1),[Pn,ve]=t.useState(0),[Lt,qn]=t.useState(!1),q=t.useMemo(()=>Ue.isMobileDevice(),[]),[Ne,nt]=t.useState(Te.DEFAULT_MOBILE_VIEW_MODE),[Nt,rt]=t.useState(!1),[Fn,Vt]=t.useState(()=>q?Ue.isLandscapeViewport():!1),re=t.useMemo(()=>Rr.createPlaybackTimeStore(),[]),{effectiveMobileViewMode:se,isImmersiveMobileFullscreen:oe,isNativeMobileFullscreen:Dt,shouldRotateFullscreenViewport:On}=t.useMemo(()=>Te.resolveMobileViewModeState({hasManualMobileViewMode:Nt,isMobileDevice:q,mobileViewMode:Ne}),[Nt,q,Fn,Ne]),jn=t.useRef(se),x=f&&O!=="hidden"&&(O==="visible"||Rn),Bn=oe&&x,Ln=oe&&x,Nn=oe||Dt,Kt=Lt&&!q,Vn=t.useCallback(e=>{rt(!0),nt(e)},[]),Ut=t.useCallback(()=>{rt(!1),nt(Te.DEFAULT_MOBILE_VIEW_MODE)},[]),Dn=t.useCallback(()=>{Ut(),D?.onBack?.()},[D,Ut]),Ht=t.useCallback(e=>{Ze(e)},[]),Wt=t.useCallback(()=>{Ze(e=>!e)},[]),{mountedStepStates:Kn,currentMountedStateIndex:Un}=t.useMemo(()=>{const e=[],n=new Map;return Mt.forEach((l,u)=>{const a=e.findIndex(r=>Nr(r.elementList,l));if(a>=0){e[a]?.sourceStepIndexes.push(u),n.set(u,a);return}e.push({elementList:l,sourceStepIndexes:[u]}),n.set(u,e.length-1)}),{mountedStepStates:e,currentMountedStateIndex:s>=0?n.get(s)??-1:-1}},[s,Mt]),Gt=t.useMemo(()=>String(s),[s]),v=t.useMemo(()=>b?y.findIndex(e=>(e.audioKey??"")===b):-1,[y,b]),st=t.useMemo(()=>v>=0?y[v]:void 0,[y,v]),Hn=st?.element?.subtitle_cues??[],Ve=t.useMemo(()=>T[0]??"none",[T]),ot=t.useMemo(()=>({currentElement:an.resolvePlayerCustomActionElement({currentAudioIndex:v,currentAudioSequenceIndexes:Fe,audioList:y,currentInteractionElement:m,currentStepElement:Se}),currentIndex:s,currentStepElement:Se,isActive:Qe,setActive:Ht,toggleActive:Wt}),[m,y,v,Fe,s,Se,Qe,Ht,Wt]),lt=t.useMemo(()=>an.getPlayerCustomActionCount(z,ot),[ot,z]),Wn=t.useMemo(()=>({"--slide-player-custom-action-count":String(lt),"--slide-player-mobile-control-count":String(lt+4)}),[lt]),Jt=T.length>0,Yt=t.useMemo(()=>c?`${c.sequence_number??"none"}:${String(c.content??"")}`:"none",[c]),Ee=t.useMemo(()=>[Gt,Yt].join("|"),[Yt,Gt]),Gn=t.useMemo(()=>[Ee,st?.audioKey??"none",String(v)].join("|"),[v,st?.audioKey,Ee]),zt=!!t.useMemo(()=>!Ve||Ve==="none"?"":y.find(n=>n.audioKey===Ve)?.audioUrl?.trim()??"",[y,Ve]),W=$&&!!z&&Qe,ge=t.useMemo(()=>Tr.shouldUseAutoAdvanceToggle({canGoNext:A,currentAudioIndex:v,currentStepHasSpeakableElement:h,hasInteraction:!!c}),[A,v,c,h]),$t=t.useMemo(()=>kr.resolveSilentStepAutoAdvanceBehavior({currentElementList:I,currentStepHasSpeakableElement:h,currentInteractionElement:c,markerAutoAdvanceDelay:St}),[I,c,h,St]),Xt=$t.delayMs,Ie=$t.usesImageOnlyDelay,ut=t.useMemo(()=>`${s}:${ee.join("|")}`,[s,ee]),[Jn,Yn]=t.useState(null),Qt=!Ie||Jn===ut,F=t.useCallback(()=>{Z.current!==null&&(window.clearTimeout(Z.current),Z.current=null)},[]),w=t.useCallback(()=>{U.current!==null&&(window.clearTimeout(U.current),U.current=null)},[]),M=t.useCallback(()=>{pe.current!==null&&(window.clearTimeout(pe.current),pe.current=null)},[]),le=t.useCallback(()=>{me.current!==null&&(window.clearTimeout(me.current),me.current=null)},[]),L=t.useCallback(()=>{Pe.current!==null&&(window.clearTimeout(Pe.current),Pe.current=null)},[]),_=t.useCallback((e={})=>{le(),w(),M(),L(),B(null),re.reset(),S(!1),$e(ht),Xe(!1),je(!1),Ot(null),e.preservePendingSubtitleJump||(he.current=null),et(void 0),Be(!1),ve(0)},[le,L,w,M,re]),De=t.useCallback(e=>{Tt.current+=1,Ot({...e,id:Tt.current})},[]),ue=t.useCallback(()=>{const e=T[0];return e?(B(e),!0):!1},[T]),Ae=t.useCallback(()=>{w(),M(),Be(!1),ve(0),!ue()&&A&&C()},[A,w,M,C,ue]),Zt=t.useCallback(e=>{if(M(),!e)return;const n=()=>{pe.current=null,ve(qr),Be(!0),H.current=null};pe.current=window.setTimeout(n,Pr)},[M]),at=t.useCallback(()=>_e.current||!!fe.current?.querySelector(".slide-player__controls:hover"),[]),p=t.useCallback((e=Oe)=>{!f||O==="hidden"||(be(!0),F(),!(O==="visible"||!e||We<=0||at())&&(Z.current=window.setTimeout(()=>{if(at()){Z.current=null;return}be(!1),Z.current=null},We)))},[F,Oe,at,We,O,f]),Re=!!pt.hasResolvedInteractionElement(c),G=!!c&&!Re,zn=t.useCallback(e=>{qt(e)},[]),ae=t.useCallback(e=>{e&&qt(e.shouldContinuePlayback)},[]);t.useEffect(()=>{Ft(ze)},[s,ze,$]),t.useEffect(()=>{$&&Ze(!1)},[s,$]),t.useEffect(()=>()=>{le(),L(),F(),w(),M()},[le,L,w,M,F]),t.useEffect(()=>{if(!Ie){L();return}let e=!1,n=null,l=null;const u=()=>{l?.(),l=null},a=()=>{e||(u(),L(),Yn(ut))},r=()=>{if(e)return;u();const E=Me.current?.querySelector('[data-active-step="true"]');if(!E)return;const P=Array.from(E.querySelectorAll("iframe"));if(P.length===0||cn.areImageOnlyStepIframeVisualsReady(P)){a();return}const Ke=[],Ce=()=>{e||(n!==null&&window.cancelAnimationFrame(n),n=window.requestAnimationFrame(()=>{n=null,r()}))},ft=(J,ie,Y)=>{J.addEventListener(ie,Y,{once:!0}),Ke.push(()=>J.removeEventListener(ie,Y))};P.forEach(J=>{const ie=J.contentDocument;if(!ie||ie.readyState!=="complete"){ft(J,"load",Ce);return}Array.from(ie.images).filter(Y=>!Y.complete).forEach(Y=>{ft(Y,"load",Ce),ft(Y,"error",Ce)})}),l=()=>{Ke.forEach(J=>J())}};return n=window.requestAnimationFrame(()=>{n=null,r()}),Pe.current=window.setTimeout(()=>{a()},cn.DEFAULT_IMAGE_ONLY_VISUAL_READY_TIMEOUT_MS),()=>{e=!0,u(),L(),n!==null&&window.cancelAnimationFrame(n)}},[L,I,s,ut,Ie]),t.useEffect(()=>(Ge?.(x),()=>{Ge?.(!1)}),[Ge,x]),t.useEffect(()=>{x||(_e.current=!1)},[x]),t.useEffect(()=>{q||Ne===Te.DEFAULT_MOBILE_VIEW_MODE||(rt(!1),nt(Te.DEFAULT_MOBILE_VIEW_MODE))},[q,Ne]),t.useEffect(()=>{if(!q){Vt(!1);return}const e=()=>{Vt(Ue.isLandscapeViewport())};return e(),Ue.subscribeMobileDeviceChange(e)},[q]),t.useEffect(()=>{vt?.(se)},[se,vt]),t.useEffect(()=>{jn.current=se},[se]),t.useEffect(()=>{Et?.(Se,s)},[s,Se,Et]),t.useEffect(()=>{const e=wt.current,n=Ar.shouldAutoAdvanceIntoAppendedMarker({previousMarkerCount:e.markerCount,nextMarkerCount:g.length,previousIndex:e.currentIndex,previousCanGoNext:e.canGoNext,nextCanGoNext:A,currentAudioKey:b,hasCompletedCurrentStepAudio:k,hasResolvedCurrentInteraction:Re,currentStepHasSpeakableElement:h,currentInteractionElement:c,isAutoAdvanceEnabled:xe,shouldUseSilentStepAutoAdvanceToggle:ge});wt.current={markerCount:g.length,currentIndex:s,canGoNext:A},n&&C()},[A,b,s,c,h,C,k,Re,xe,ge,g.length]),t.useEffect(()=>{if(!f||O==="hidden"){F(),be(!1);return}if(O==="visible"){F(),be(!0);return}Oe||p(!0)},[F,Oe,O,f,p]),t.useEffect(()=>{if(typeof window>"u")return;const e=n=>{n.origin===window.location.origin&&mr.isSandboxInteractionMessage(n.data)&&n.data.eventType==="click"&&f&&(j(),te(!0),p(!0))};return window.addEventListener("message",e),()=>{window.removeEventListener("message",e)}},[j,f,p]),vr.default({sectionRef:fe,enabled:f,keyboardShortcutsEnabled:Q,onKeyboardShortcut:j,onWake:()=>{j(),te(!0),p(!0)}}),t.useEffect(()=>{if(!f){_();return}const{hasPlaybackContextChanged:e,shouldInitializeAudioSequence:n}=un.getPlaybackSequenceTransition({previousResetKey:kt.current,nextResetKey:Ee,currentAudioKey:b,hasCompletedCurrentStepAudio:k});kt.current=Ee;const l=H.current===s&&!!c,u=ln.shouldPresentInteractionOverlay({hasInteraction:!!c,shouldBlockPlaybackForInteraction:G,shouldOpenInteractionOverlayAfterAudio:l,hasPlaybackContextChanged:e,hasResolvedCurrentInteraction:Re,currentStepHasSpeakableElement:h}),a=he.current,r=a?.slideIndex===s;if(e&&_({preservePendingSubtitleJump:r}),!(I.length===0&&!c)&&!W){if(a?.slideIndex===s&&pt.canReachSubtitleJumpTarget({currentIndex:s,resolvedCurrentInteractionElement:m,slideElementList:g,targetSlideIndex:a.slideIndex})){he.current=null,Ye.current=!0,B(a.audioKey),De({audioIndex:a.audioIndex,timeMs:a.timeMs});return}if(c&&et(c),u){Zt(c);return}if(M(),H.current=null,!!n&&!ue()){if(h){if(R){S(!1);return}S(!0);return}if(A&&!(ge&&!xe)&&!(Ie&&!Qt))return me.current=window.setTimeout(()=>{me.current=null,C()},Xt),()=>{le()}}}},[m,A,le,I.length,s,c,b,Ee,h,Ie,Qt,Xt,C,k,R,xe,Re,G,M,_,De,Zt,f,g,ue,W,ge]),t.useEffect(()=>{if(R||W||!h||G){S(!1);return}if(k){S(!1);return}if(Jt){S(!1);return}$e("waitingForAudio"),S(!0)},[Jt,h,k,R,W,G]),t.useEffect(()=>{const e=Ye.current;Ye.current=!1,un.shouldStartDefaultAudioSequence({currentAudioKey:b,currentAudioSequenceLength:T.length,currentStepHasSpeakableElement:h,hasCompletedCurrentStepAudio:k,shouldBlockPlaybackForInteraction:G,shouldPausePlaybackForCustomAction:W,shouldSkipDefaultAudioStart:e})&&ue()},[b,T,h,k,W,G,ue]),t.useEffect(()=>{!b||v>=0||B(null)},[v,b]),t.useEffect(()=>{v>=0||re.reset()},[v,re]),t.useEffect(()=>{je(!1)},[Gn]);const{interactionDefaults:en,interactionDefaultSelectedValues:$n,hasResolvedInteractionInput:it,isInteractionReadonly:Xn,shouldAutoContinueInteraction:tn}=t.useMemo(()=>Cr.resolveSlideInteractionState(m,{interactionDefaultValueOptions:bt}),[m,bt]),nn=!!m?.readonly||Xn,ct=ln.shouldRenderInteractionOverlay({hasActiveInteraction:!!m,isInteractionOverlayOpen:ne,shouldBlockPlaybackForInteraction:G&&!nn&&!it,playerControlsVisible:x,shouldMountPlayer:f,hasFocusedTextInput:_n}),Qn=t.useCallback(e=>{const l=[...e.selectedValues??[],e.inputText?.trim()??"",e.buttonText?.trim()??""].filter(Boolean).join(", ");et(u=>!u||!l?u:{...u,user_input:l}),xt?.(e,m),Ae()},[m,Ae,xt]);t.useEffect(()=>{const e=()=>{qn(document.fullscreenElement===fe.current)};return e(),document.addEventListener("fullscreenchange",e),()=>{document.removeEventListener("fullscreenchange",e)}},[]),t.useEffect(()=>{m&&ne||(Le(!1),tt(!1))},[m,ne]),t.useEffect(()=>{if(!ct){ve(0);return}const e=Je.current;if(!e)return;const n=()=>{const u=Math.ceil(e.getBoundingClientRect().height);ve(u+Fr)};if(n(),typeof ResizeObserver>"u")return;const l=new ResizeObserver(()=>{n()});return l.observe(e),()=>{l.disconnect()}},[ct]),t.useEffect(()=>{if(w(),!!ne){if(tn)return U.current=window.setTimeout(()=>{U.current=null,Ae()},dn),()=>{w()};if(!(Bt||!it))return U.current=window.setTimeout(()=>{U.current=null,Ae()},dn),()=>{w()}}},[w,Ae,Bt,it,ne,tn]);const Zn=(e,n={})=>e?e.type==="slot"?o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:e.content}):e.type==="html"?o.jsxRuntimeExports.jsx(on.default,{className:"content-render-iframe",disableLoadingOverlay:R,hideFullScreen:!0,locale:d,mode:"blackboard",replaceRootScreenHeightWithFull:n.replaceRootScreenHeightWithFull,type:"sandbox",content:e.content,enableScaling:hn}):o.jsxRuntimeExports.jsx(on.default,{className:"content-render-iframe",disableLoadingOverlay:R,hideFullScreen:!0,locale:d,mode:"blackboard",type:"markdown",content:e.content}):null,er=(e=[],n=!1)=>{if(e.length===0)return null;const l=e.filter(r=>r.is_renderable!==!1).length,u=n&&Sn?Ir.resolveMarkdownScalingMode(e):"disabled",a=e.reduce((r,E,P)=>E.is_renderable!==!1?P:r,-1);return o.jsxRuntimeExports.jsx(Sr.default,{className:"slide-stage__content flex w-full flex-col gap-4",mode:u,children:e.map((r,E)=>{const P=r.type==="html"&&r.is_renderable===!1;return o.jsxRuntimeExports.jsx("div",{ref:n&&E===a?Rt:null,"aria-hidden":P||void 0,className:ce.cn("w-full shrink-0",l===1&&r.is_renderable!==!1&&"slide-element--single",P?"pointer-events-none fixed left-[-200vw] top-0 -z-10 h-[100dvh] w-[100vw] overflow-hidden opacity-0":r.is_renderable===!1&&"hidden"),children:Zn(r,{replaceRootScreenHeightWithFull:l===1&&r.type==="html"&&r.is_renderable!==!1})},r.sequence_number??`${r.type}-${E}`)})})},tr=t.useCallback(()=>{const e=fe.current;if(e){if(document.fullscreenElement===e){document.exitFullscreen().catch(()=>{});return}e.requestFullscreen?.().catch(()=>{})}},[]),rn=t.useCallback(()=>{const e=Me.current;e&&e.scrollTo({top:e.scrollHeight,behavior:"smooth"})},[]),dt=t.useCallback(e=>pt.canReachSubtitleJumpTarget({currentIndex:s,resolvedCurrentInteractionElement:m,slideElementList:g,targetSlideIndex:qe[e.audioIndex]}),[m,qe,s,g]),nr=t.useCallback((e,n)=>{const u=y[e.audioIndex]?.audioKey,a=qe[e.audioIndex];return!u||a==null||!dt(e)?!1:(ae(n),H.current=null,S(!1),Xe(!1),je(!1),mt.shouldWakePlayerControlsAfterNavigation(n)&&(te(!0),p(!0)),a===s?(he.current=null,_(),B(u),De(e),!0):(ye.current=!0,_(),he.current={audioIndex:e.audioIndex,audioKey:u,slideIndex:a,timeMs:e.timeMs},Pt(a),!0))},[y,qe,dt,s,Pt,De,_,p,ae]),rr=t.useCallback(e=>{ae(e),ye.current=!0,H.current=null,S(!1),mt.shouldWakePlayerControlsAfterNavigation(e)&&(te(!0),p(!0)),_(),_t()},[_t,_,p,ae]),sr=t.useCallback(e=>{ae(e),ye.current=!0,H.current=null,S(!1),mt.shouldWakePlayerControlsAfterNavigation(e)&&(te(!0),p(!0)),_(),C()},[C,_,p,ae]),or=t.useCallback(({loading:e,reason:n})=>{if(R){S(!1);return}if(!h||k){S(!1);return}e&&n&&$e(n),S(Lr(n,e))},[h,k,R]);t.useEffect(()=>{R&&S(!1)},[R]);const lr=t.useCallback(e=>{const n=y[e]?.audioKey;if(!n||!b||n!==b)return;const l=T.findIndex(r=>r===n);if(l<0){B(null);return}const u=l+1,a=T[u];if(a){B(a);return}if(B(null),Xe(!0),S(!1),A){const r=s+1,E=g[r];zt&&E?.type==="interaction"&&(H.current=r),C();return}},[y,A,s,b,T,C,zt,g]),ur=t.useCallback(()=>{m&&Be(e=>!e)},[m]),ar=t.useCallback(()=>{_e.current=!0,F(),f&&be(!0)},[F,f]),ir=t.useCallback(()=>{_e.current=!1,p(!0)},[p]),sn=t.useCallback(e=>{e.stopPropagation(),x&&p(!0)},[x,p]),cr=t.useCallback(e=>{j(),gt?.(e)},[j,gt]),dr=t.useCallback(e=>{j(),It?.(e)},[j,It]),fr=t.useCallback(()=>{te(!0),p(!0)},[p]);return t.useEffect(()=>{const e=Ct.current,u=(e.length>0&&e.length<ee.length&&e.every((r,E)=>r===ee[E])?I.slice(e.length):[]).some(r=>r.is_new===!1);if(Ct.current=ee,!u)return;const a=window.requestAnimationFrame(()=>{const r=Me.current,E=Rt.current;if(!r||!E)return;const P=r.getBoundingClientRect(),Ke=E.getBoundingClientRect(),Ce=r.scrollTop+(Ke.top-P.top);r.scrollTo({top:Math.max(Ce,0),behavior:"smooth"})});return()=>{window.cancelAnimationFrame(a)}},[I,ee]),t.useEffect(()=>{if(!ye.current||(ye.current=!1,I.length===0))return;const e=window.requestAnimationFrame(()=>{rn()});return()=>{window.cancelAnimationFrame(e)}},[I,rn]),o.jsxRuntimeExports.jsxs("section",{ref:fe,className:ce.cn("relative h-full w-full",q&&"slide--mobile-device",Kt&&"slide--browser-fullscreen",oe&&"slide--mobile-landscape",Dt&&"slide--mobile-landscape-native",bn),onClick:fr,onFocusCapture:dr,onPointerDown:cr,...xn,children:[Nn?o.jsxRuntimeExports.jsx("div",{"aria-hidden":"true",className:"pointer-events-none fixed left-0 top-0 z-[9999] h-[100vh] max-h-[100vh] w-[100vw]"}):null,o.jsxRuntimeExports.jsxs("div",{ref:At,className:ce.cn("slide__viewport relative h-full min-h-0 w-full",oe&&"slide__viewport--mobile-landscape",oe&&!On&&"slide__viewport--mobile-landscape-native"),children:[Bn?o.jsxRuntimeExports.jsxs("div",{className:"slide-landscape-header",children:[o.jsxRuntimeExports.jsx("button",{"aria-label":D?.backAriaLabel??K.fullscreenBackAriaLabel,className:"slide-landscape-header__back",onClick:Dn,type:"button",children:o.jsxRuntimeExports.jsx(Mr.default,{className:"slide-landscape-header__icon h-6 w-6",strokeWidth:2.25})}),D?.content?o.jsxRuntimeExports.jsx("div",{className:"min-w-0 flex-1 overflow-hidden",children:D.content}):null]}):null,o.jsxRuntimeExports.jsx("div",{className:ce.cn("h-full min-h-0 w-full",Ln&&"slide__viewport-content--with-header",In?"slide-content--single":"grid gap-4"),children:I.length>0?o.jsxRuntimeExports.jsx("div",{className:"slide-stage",children:o.jsxRuntimeExports.jsx("div",{ref:Me,className:"slide-stage__layer w-full",children:Kn.map((e,n)=>{const l=n===Un;return o.jsxRuntimeExports.jsx("div",{"data-active-step":l?"true":void 0,"aria-hidden":!l||void 0,className:"w-full h-full",style:{display:l?void 0:"none"},children:er(e.elementList,l)},e.sourceStepIndexes[0]??n)})})}):null}),Tn?o.jsxRuntimeExports.jsx(pr.default,{message:jr(vn,kn),className:"absolute left-1/2 top-1/2 z-[3] -translate-x-1/2 -translate-y-1/2"}):null,o.jsxRuntimeExports.jsx(br.default,{extraBottomOffset:Pn,hasPlayerGap:x,isEnabled:jt&&wn,isPlayerHidden:f&&!x,playbackTimeStore:re,subtitleCues:Hn}),ct?o.jsxRuntimeExports.jsx("div",{ref:Je,"data-player-keyboard-shortcuts-ignore":"true",className:ce.cn("slide-interaction-overlay",x&&f?"slide-interaction-overlay--with-player":"slide-interaction-overlay--standalone"),onClick:sn,onPointerDown:sn,onPointerDownCapture:e=>{yt(e.target)&&Le(!0)},onFocusCapture:e=>{fn(e.target)&&tt(!0),yt(e.target)&&Le(!0)},onBlurCapture:e=>{if(!fn(e.target))return;const n=e.relatedTarget;n instanceof HTMLElement&&Je.current?.contains(n)||tt(!1)},onInputCapture:e=>{yt(e.target)&&Le(!0)},style:Wn,children:o.jsxRuntimeExports.jsx(pn,{content:String(m?.content??""),locale:d,defaultButtonText:en.buttonText??"",defaultInputText:en.inputText??"",defaultSelectedValues:$n,confirmButtonText:X?.confirmButtonText??K.interactionTexts.confirmButtonText,copyButtonText:X?.copyButtonText??K.interactionTexts.copyButtonText,copiedButtonText:X?.copiedButtonText??K.interactionTexts.copiedButtonText,onSend:Qn,readonly:nn,title:X?.title??He??K.interactionTexts.title})}):null,f?o.jsxRuntimeExports.jsx(Er.PlayerKeyboardShortcutContext.Provider,{value:An,children:o.jsxRuntimeExports.jsx(hr.default,{audioList:y,className:ce.cn("absolute left-1/2 z-[2] -translate-x-1/2",Kt?"bottom-3":"-bottom-3",V,!x&&"pointer-events-none opacity-0"),currentAudioIndex:v,defaultPlaying:ze,enableKeyboardShortcuts:Q,isPlaybackPaused:W,isAutoAdvanceEnabled:xe,locale:d,hasInteraction:!!m,isInteractionOpen:ne,isSubtitleEnabled:jt,onAutoAdvanceToggle:Ft,onLoadingChange:or,onPlaybackStarted:()=>{je(!0)},onPlaybackPreferenceChange:zn,onPlaybackTimeChange:re.setTime,onSubtitleToggle:()=>{Mn(e=>!e)},nextDisabled:!A,onEnded:lr,onFullscreen:tr,isFullscreen:Lt,mobileViewMode:se,settingsPortalContainer:At.current,onMobileViewModeChange:Vn,onControlsPointerEnter:ar,onControlsPointerLeave:ir,onInteractionToggle:ur,onNext:sr,onPrev:rr,onSubtitleJump:nr,canJumpToSubtitleTarget:dt,prevDisabled:!gn,showControls:x,subtitleSeekRequest:Cn,texts:yn,customActionContext:ot,customActions:z,useAutoAdvanceToggle:ge})}):null]})]})};exports.default=Dr;
|
|
2
2
|
//# sourceMappingURL=Slide.cjs.js.map
|