@readerseye2/cr_viewer 2.0.2 → 2.0.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/scroll-render/buildScrollApi.d.ts.map +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.js +820 -809
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* This source code is licensed under the MIT license found in the
|
|
9
9
|
* LICENSE file in the root directory of this source tree.
|
|
10
|
-
*/var
|
|
10
|
+
*/var Tr;function Ns(){if(Tr)return wn;Tr=1;var e=m;function t(v,h){return v===h&&(v!==0||1/v===1/h)||v!==v&&h!==h}var n=typeof Object.is=="function"?Object.is:t,r=e.useState,o=e.useEffect,s=e.useLayoutEffect,i=e.useDebugValue;function u(v,h){var p=h(),y=r({inst:{value:p,getSnapshot:h}}),w=y[0].inst,c=y[1];return s(function(){w.value=p,w.getSnapshot=h,a(w)&&c({inst:w})},[v,p,h]),o(function(){return a(w)&&c({inst:w}),v(function(){a(w)&&c({inst:w})})},[v]),i(p),p}function a(v){var h=v.getSnapshot;v=v.value;try{var p=h();return!n(v,p)}catch{return!0}}function l(v,h){return h()}var d=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?l:u;return wn.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:d,wn}var Cn={};/**
|
|
11
11
|
* @license React
|
|
12
12
|
* use-sync-external-store-shim.development.js
|
|
13
13
|
*
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* This source code is licensed under the MIT license found in the
|
|
17
17
|
* LICENSE file in the root directory of this source tree.
|
|
18
|
-
*/var
|
|
18
|
+
*/var kr;function Fs(){return kr||(kr=1,process.env.NODE_ENV!=="production"&&(function(){function e(p,y){return p===y&&(p!==0||1/p===1/y)||p!==p&&y!==y}function t(p,y){d||o.startTransition===void 0||(d=!0,console.error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."));var w=y();if(!v){var c=y();s(w,c)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),v=!0)}c=i({inst:{value:w,getSnapshot:y}});var g=c[0].inst,f=c[1];return a(function(){g.value=w,g.getSnapshot=y,n(g)&&f({inst:g})},[p,w,y]),u(function(){return n(g)&&f({inst:g}),p(function(){n(g)&&f({inst:g})})},[p]),l(w),w}function n(p){var y=p.getSnapshot;p=p.value;try{var w=y();return!s(p,w)}catch{return!0}}function r(p,y){return y()}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var o=m,s=typeof Object.is=="function"?Object.is:e,i=o.useState,u=o.useEffect,a=o.useLayoutEffect,l=o.useDebugValue,d=!1,v=!1,h=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?r:t;Cn.useSyncExternalStore=o.useSyncExternalStore!==void 0?o.useSyncExternalStore:h,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()),Cn}var Rr;function Po(){return Rr||(Rr=1,process.env.NODE_ENV==="production"?Zt.exports=Ns():Zt.exports=Fs()),Zt.exports}/**
|
|
19
19
|
* @license React
|
|
20
20
|
* use-sync-external-store-shim/with-selector.production.js
|
|
21
21
|
*
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
*
|
|
24
24
|
* This source code is licensed under the MIT license found in the
|
|
25
25
|
* LICENSE file in the root directory of this source tree.
|
|
26
|
-
*/var _r;function Ds(){if(_r)return yn;_r=1;var e=m,t=Po();function n(l,d){return l===d&&(l!==0||1/l===1/d)||l!==l&&d!==d}var r=typeof Object.is=="function"?Object.is:n,o=t.useSyncExternalStore,s=e.useRef,i=e.useEffect,u=e.useMemo,a=e.useDebugValue;return yn.useSyncExternalStoreWithSelector=function(l,d,v,h,p){var
|
|
26
|
+
*/var _r;function Ds(){if(_r)return yn;_r=1;var e=m,t=Po();function n(l,d){return l===d&&(l!==0||1/l===1/d)||l!==l&&d!==d}var r=typeof Object.is=="function"?Object.is:n,o=t.useSyncExternalStore,s=e.useRef,i=e.useEffect,u=e.useMemo,a=e.useDebugValue;return yn.useSyncExternalStoreWithSelector=function(l,d,v,h,p){var y=s(null);if(y.current===null){var w={hasValue:!1,value:null};y.current=w}else w=y.current;y=u(function(){function g(j){if(!f){if(f=!0,C=j,j=h(j),p!==void 0&&w.hasValue){var x=w.value;if(p(x,j))return T=x}return T=j}if(x=T,r(C,j))return x;var S=h(j);return p!==void 0&&p(x,S)?(C=j,x):(C=j,T=S)}var f=!1,C,T,k=v===void 0?null:v;return[function(){return g(d())},k===null?void 0:function(){return g(k())}]},[d,v,h,p]);var c=o(l,y[0],y[1]);return i(function(){w.hasValue=!0,w.value=c},[c]),a(c),c},yn}var In={};/**
|
|
27
27
|
* @license React
|
|
28
28
|
* use-sync-external-store-shim/with-selector.development.js
|
|
29
29
|
*
|
|
@@ -31,4 +31,4 @@
|
|
|
31
31
|
*
|
|
32
32
|
* This source code is licensed under the MIT license found in the
|
|
33
33
|
* LICENSE file in the root directory of this source tree.
|
|
34
|
-
*/var Mr;function Ws(){return Mr||(Mr=1,process.env.NODE_ENV!=="production"&&(function(){function e(l,d){return l===d&&(l!==0||1/l===1/d)||l!==l&&d!==d}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var t=m,n=Po(),r=typeof Object.is=="function"?Object.is:e,o=n.useSyncExternalStore,s=t.useRef,i=t.useEffect,u=t.useMemo,a=t.useDebugValue;In.useSyncExternalStoreWithSelector=function(l,d,v,h,p){var S=s(null);if(S.current===null){var w={hasValue:!1,value:null};S.current=w}else w=S.current;S=u(function(){function g(j){if(!f){if(f=!0,C=j,j=h(j),p!==void 0&&w.hasValue){var x=w.value;if(p(x,j))return k=x}return k=j}if(x=k,r(C,j))return x;var y=h(j);return p!==void 0&&p(x,y)?(C=j,x):(C=j,k=y)}var f=!1,C,k,T=v===void 0?null:v;return[function(){return g(d())},T===null?void 0:function(){return g(T())}]},[d,v,h,p]);var c=o(l,S[0],S[1]);return i(function(){w.hasValue=!0,w.value=c},[c]),a(c),c},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()),In}var Er;function Vs(){return Er||(Er=1,process.env.NODE_ENV==="production"?Yt.exports=Ds():Yt.exports=Ws()),Yt.exports}var $s=Vs();const qs=Bo($s),jr=e=>{let t;const n=new Set,r=(l,d)=>{const v=typeof l=="function"?l(t):l;if(!Object.is(v,t)){const h=t;t=d??(typeof v!="object"||v===null)?v:Object.assign({},t,v),n.forEach(p=>p(t,h))}},o=()=>t,u={setState:r,getState:o,getInitialState:()=>a,subscribe:l=>(n.add(l),()=>n.delete(l))},a=t=e(r,o,u);return u},$t=(e=>e?jr(e):jr),{useSyncExternalStoreWithSelector:Us}=qs,Ks=e=>e;function qt(e,t=Ks,n){const r=Us(e.subscribe,e.getState,e.getInitialState,t,n);return m.useDebugValue(r),r}function K(e,t){const n=m.useContext(ir);if(!n)throw new Error("useCRViewerScopedStore must be used inside <InternalCRViewerProvider>");return qt(n,e,t)}function gn(){const e=m.useContext(ir);if(!e)throw new Error("useCRViewerStoreApi must be used inside <InternalCRViewerProvider>");return e}const ht=m.createContext(void 0),Lo=m.createContext(void 0);function Xs(){return $t((e,t)=>({emitCallback:null,isPlaybackMode:!1,playbackScale:1,dispatchHandler:null,applySnapshotHandler:null,wordAvgDistancePx:0,setEmitCallback:n=>e({emitCallback:n}),emit:(n,r)=>{const{emitCallback:o,isPlaybackMode:s}=t();s||o&&o({...n,timestamp:r??Date.now()})},setPlaybackMode:n=>e({isPlaybackMode:n}),setPlaybackScale:n=>e({playbackScale:n}),setDispatchHandler:n=>e({dispatchHandler:n}),dispatch:n=>{const{dispatchHandler:r,isPlaybackMode:o}=t();if(!o){console.warn("[ViewerEventBridge] dispatch called but not in playback mode");return}r?r(n):console.warn("[ViewerEventBridge] dispatch called but no handler registered")},setApplySnapshotHandler:n=>e({applySnapshotHandler:n}),applySnapshot:n=>{const{applySnapshotHandler:r,isPlaybackMode:o}=t();if(!o){console.warn("[ViewerEventBridge] applySnapshot called but not in playback mode");return}r?r(n):console.warn("[ViewerEventBridge] applySnapshot called but no handler registered")}}))}function Qs({children:e,onViewerEvent:t,isPlaybackMode:n=!1,playbackScale:r=1,viewerRef:o}){const s=m.useMemo(()=>Xs(),[]);return m.useLayoutEffect(()=>(s.getState().setEmitCallback(t??null),()=>s.getState().setEmitCallback(null)),[t,s]),m.useLayoutEffect(()=>{s.getState().setPlaybackMode(n)},[n,s]),m.useLayoutEffect(()=>{s.getState().setPlaybackScale(r)},[r,s]),m.useLayoutEffect(()=>()=>{o&&(o.current=null)},[o]),b.jsx(ht.Provider,{value:s,children:b.jsx(Lo.Provider,{value:o,children:e})})}function Go(e,t){const n=m.useContext(ht);if(!n)throw new Error("useViewerEventBridgeStore must be used inside <ViewerEventBridgeProvider>");return qt(n,e,t)}function mt(){const e=m.useContext(ht);if(!e)throw new Error("useViewerEventBridgeStoreApi must be used inside <ViewerEventBridgeProvider>");return e}const lr=m.createContext(void 0);function ut(){const e=m.useContext(lr);if(!e)throw new Error("useProgressStoreApi must be used within InternalCRViewerProgressProvider");return e}function q(e,t){const n=m.useContext(lr);if(!n)throw new Error("useProgressStore must be used within InternalCRViewerProgressProvider");return qt(n,o=>e(o.progress),t)}function Ys({onSingle:e,onDouble:t,delay:n=250,shouldIgnoreTarget:r}){const o=m.useRef(null);m.useEffect(()=>()=>{o.current!=null&&(clearTimeout(o.current),o.current=null)},[]);const s=m.useCallback(u=>{if(!(r!=null&&r(u.target))&&u.detail===1){if(o.current!=null)return;o.current=window.setTimeout(()=>{o.current=null,e==null||e(u)},n)}},[n,e,r]),i=m.useCallback(u=>{r!=null&&r(u.target)||o.current!=null&&(clearTimeout(o.current),o.current=null)},[t,r]);return{onClick:s,onDoubleClick:i}}const sn={light:{bg:"#ffffff",fg:"#111827",overlayBg:"#ffffff",overlayFg:"#111827",borderColor:"#333333"},dark:{bg:"#0b0b0b",fg:"#e5e7eb",overlayBg:"#0b0b0b",overlayFg:"#e5e7eb",borderColor:"#ffffff"},sepia:{bg:"#f4ecd8",fg:"#3e2f1c",overlayBg:"#f4ecd8",overlayFg:"#3e2f1c",borderColor:"#bfa87a"},green:{bg:"#e9f5e1",fg:"#1b3d1f",overlayBg:"#e9f5e1",overlayFg:"#1b3d1f",borderColor:"#93b48b"}},kn=[8,16,24,40,64],Tn=[1.2,1.4,1.6,1.8,2,2.2,2.4],Rn=[4,8,12,16,24],Zn=e=>Math.round(12+(e-1)*(16/11)),Zs=e=>{let t=1,n=1/0;for(let r=1;r<=12;r++){const o=Zn(r),s=Math.abs(o-e);s<n&&(t=r,n=s)}return t},_n=(e,t)=>{let n=0,r=1/0;return t.forEach((o,s)=>{const i=Math.abs(o-e);i<r&&(r=i,n=s)}),n+1},Ho=[{label:"고딕체",value:"'Noto Sans KR', sans-serif"},{label:"명조체",value:"'Noto Serif KR', serif"},{label:"바탕체",value:"'Nanum Myeongjo', serif"}],He={mode:"page",theme:"light",fontFamily:Ho.find(e=>e.label==="명조체").value,fontSizePx:18,lineHeight:1.8,marginX:20,marginY:24,showOverlays:!0,overlayCompactMode:!0,isSettingsOpen:!1,pointerStyle:"highlight",pointerColor:"#fff59d",breakMarks:{slash:!0},breakGapPx:8,muteAudio:!1,audioSpeed:1,showPointer:!0,showSplit:!0,viewportWidth:0,viewportHeight:0,isDev:!1};function Js(e){const{init:t,recorderStore:n}=e??{};return $t((r,o)=>({...He,...t,setMode:s=>r({mode:s}),setTheme:s=>r({theme:s}),setFontFamily:s=>r({fontFamily:s}),setFontSizePx:s=>r({fontSizePx:s}),setLineHeight:s=>r({lineHeight:s}),setMarginX:s=>r({marginX:s}),setMarginY:s=>r({marginY:s}),setShowOverlays:s=>r({showOverlays:s}),toggleOverlays:()=>{const s=!o().showOverlays;r({showOverlays:s,...s&&{overlayCompactMode:!0}})},setOverlayCompactMode:s=>r({overlayCompactMode:s}),toggleOverlayCompactMode:()=>r({overlayCompactMode:!o().overlayCompactMode}),setSettingsOpen:s=>r({isSettingsOpen:s}),resetToDefaults:()=>r(s=>({mode:He.mode,theme:He.theme,fontFamily:He.fontFamily,fontSizePx:He.fontSizePx,lineHeight:He.lineHeight,marginX:He.marginX,marginY:He.marginY,showOverlays:!1,isSettingsOpen:!0,pointerStyle:He.pointerStyle,pointerColor:He.pointerColor,breakMarks:He.breakMarks,breakGapPx:He.breakGapPx,muteAudio:He.muteAudio,audioSpeed:He.audioSpeed,showPointer:He.showPointer,showSplit:He.showSplit})),maps:{MARGIN_MAP:kn,LINEHEIGHT_MAP:Tn,BREAK_GAP_MAP:Rn,fontSizeFromLevel:Zn},setPointerStyle:s=>r({pointerStyle:s}),setPointerColor:s=>r({pointerColor:s}),toggleBreakMark:s=>{const i=o().breakMarks;r({breakMarks:{...i,[s]:!i[s]}})},setBreakMarks:s=>{r({breakMarks:{...o().breakMarks,...s}})},setBreakGapPx:s=>r({breakGapPx:s}),setBreakGapLevel:s=>{const i=Rn[Math.max(1,Math.min(5,s))-1];r({breakGapPx:i})},getBreakGapLevel:()=>_n(o().breakGapPx,Rn),getFontLevel:()=>Zs(o().fontSizePx),getLineLevel:()=>_n(o().lineHeight,Tn),getMarginLevel:()=>_n(o().marginX,kn),setFontLevel:s=>r({fontSizePx:Zn(Math.max(1,Math.min(12,s)))}),setLineLevel:s=>r({lineHeight:Tn[Math.max(1,Math.min(7,s))-1]}),setMarginLevel:s=>{const i=kn[Math.max(1,Math.min(5,s))-1];r({marginX:i,marginY:i})},setMuteAudio:s=>{r({muteAudio:s}),n==null||n.getState().emit({type:"settings_change",payload:{key:"muteAudio",value:s}})},toggleMuteAudio:()=>{const s=!o().muteAudio;r({muteAudio:s}),n==null||n.getState().emit({type:"settings_change",payload:{key:"muteAudio",value:s}})},setAudioSpeed:s=>{const i=Math.max(.3,Math.min(2,s));r({audioSpeed:i}),n==null||n.getState().emit({type:"settings_change",payload:{key:"audioSpeed",value:i}})},incAudioSpeed:()=>{const s=Math.min(2,Math.round((o().audioSpeed+.05)*100)/100);r({audioSpeed:s}),n==null||n.getState().emit({type:"settings_change",payload:{key:"audioSpeed",value:s}})},decAudioSpeed:()=>{const s=Math.max(.3,Math.round((o().audioSpeed-.05)*100)/100);r({audioSpeed:s}),n==null||n.getState().emit({type:"settings_change",payload:{key:"audioSpeed",value:s}})},setShowPointer:s=>r({showPointer:s}),toggleShowPointer:()=>r({showPointer:!o().showPointer}),setShowSplit:s=>r({showSplit:s}),toggleShowSplit:()=>r({showSplit:!o().showSplit}),setViewportSize:(s,i)=>r({viewportWidth:s,viewportHeight:i})}))}const hn=0,bt=1,Et=2,No=4;function Or(e){return()=>e}function ei(e){e()}function Fo(e,t){return n=>e(t(n))}function zr(e,t){return()=>e(t)}function ti(e,t){return n=>e(t,n)}function ar(e){return e!==void 0}function ni(...e){return()=>{e.map(ei)}}function jt(){}function mn(e,t){return t(e),e}function ri(e,t){return t(e)}function ke(...e){return e}function ve(e,t){return e(bt,t)}function fe(e,t){e(hn,t)}function cr(e){e(Et)}function Me(e){return e(No)}function te(e,t){return ve(e,ti(t,hn))}function tt(e,t){const n=e(bt,r=>{n(),t(r)});return n}function Ar(e){let t,n;return r=>o=>{t=o,n&&clearTimeout(n),n=setTimeout(()=>{r(t)},e)}}function Do(e,t){return e===t}function Ie(e=Do){let t;return n=>r=>{e(t,r)||(t=r,n(r))}}function se(e){return t=>n=>{e(n)&&t(n)}}function X(e){return t=>Fo(t,e)}function st(e){return t=>()=>{t(e)}}function P(e,...t){const n=oi(...t);return((r,o)=>{switch(r){case Et:cr(e);return;case bt:return ve(e,n(o))}})}function it(e,t){return n=>r=>{n(t=e(t,r))}}function yt(e){return t=>n=>{e>0?e--:t(n)}}function ct(e){let t=null,n;return r=>o=>{t=o,!n&&(n=setTimeout(()=>{n=void 0,r(t)},e))}}function ge(...e){const t=new Array(e.length);let n=0,r=null;const o=Math.pow(2,e.length)-1;return e.forEach((s,i)=>{const u=Math.pow(2,i);ve(s,a=>{const l=n;n=n|u,t[i]=a,l!==o&&n===o&&r&&(r(),r=null)})}),s=>i=>{const u=()=>{s([i].concat(t))};n===o?u():r=u}}function oi(...e){return t=>e.reduceRight(ri,t)}function si(e){let t,n;const r=()=>t==null?void 0:t();return function(o,s){switch(o){case bt:return s?n===s?void 0:(r(),n=s,t=ve(e,s),t):(r(),jt);case Et:r(),n=null;return}}}function F(e){let t=e;const n=me();return((r,o)=>{switch(r){case hn:t=o;break;case bt:{o(t);break}case No:return t}return n(r,o)})}function Fe(e,t){return mn(F(t),n=>te(e,n))}function me(){const e=[];return((t,n)=>{switch(t){case hn:e.slice().forEach(r=>{r(n)});return;case Et:e.splice(0,e.length);return;case bt:return e.push(n),()=>{const r=e.indexOf(n);r>-1&&e.splice(r,1)}}})}function Xe(e){return mn(me(),t=>te(e,t))}function be(e,t=[],{singleton:n}={singleton:!0}){return{constructor:e,dependencies:t,id:ii(),singleton:n}}const ii=()=>Symbol();function li(e){const t=new Map,n=({constructor:r,dependencies:o,id:s,singleton:i})=>{if(i&&t.has(s))return t.get(s);const u=r(o.map(a=>n(a)));return i&&t.set(s,u),u};return n(e)}function Be(...e){const t=me(),n=new Array(e.length);let r=0;const o=Math.pow(2,e.length)-1;return e.forEach((s,i)=>{const u=Math.pow(2,i);ve(s,a=>{n[i]=a,r=r|u,r===o&&fe(t,n)})}),function(s,i){switch(s){case Et:{cr(t);return}case bt:return r===o&&i(n),ve(t,i)}}}function oe(e,t=Do){return P(e,Ie(t))}function Jn(...e){return function(t,n){switch(t){case Et:return;case bt:return ni(...e.map(r=>ve(r,n)))}}}var Ve=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e))(Ve||{});const ai={0:"debug",3:"error",1:"log",2:"warn"},ci=()=>typeof globalThis>"u"?window:globalThis,xt=be(()=>{const e=F(3);return{log:F((t,n,r=1)=>{var o;const s=(o=ci().VIRTUOSO_LOG_LEVEL)!=null?o:Me(e);r>=s&&console[ai[r]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",t,n)}),logLevel:e}},[],{singleton:!0});function wt(e,t,n){return ur(e,t,n).callbackRef}function ur(e,t,n){const r=m.useRef(null);let o=i=>{};const s=m.useMemo(()=>typeof ResizeObserver<"u"?new ResizeObserver(i=>{const u=()=>{const a=i[0].target;a.offsetParent!==null&&e(a)};n?u():requestAnimationFrame(u)}):null,[e,n]);return o=i=>{i&&t?(s==null||s.observe(i),r.current=i):(r.current&&(s==null||s.unobserve(r.current)),r.current=null)},{callbackRef:o,ref:r}}function ui(e,t,n,r,o,s,i,u,a){const l=m.useCallback(d=>{const v=di(d.children,t,u?"offsetWidth":"offsetHeight",o);let h=d.parentElement;for(;!h.dataset.virtuosoScroller;)h=h.parentElement;const p=h.lastElementChild.dataset.viewportType==="window";let S;p&&(S=h.ownerDocument.defaultView);const w=i?u?i.scrollLeft:i.scrollTop:p?u?S.scrollX||S.document.documentElement.scrollLeft:S.scrollY||S.document.documentElement.scrollTop:u?h.scrollLeft:h.scrollTop,c=i?u?i.scrollWidth:i.scrollHeight:p?u?S.document.documentElement.scrollWidth:S.document.documentElement.scrollHeight:u?h.scrollWidth:h.scrollHeight,g=i?u?i.offsetWidth:i.offsetHeight:p?u?S.innerWidth:S.innerHeight:u?h.offsetWidth:h.offsetHeight;r({scrollHeight:c,scrollTop:Math.max(w,0),viewportHeight:g}),s==null||s(u?Br("column-gap",getComputedStyle(d).columnGap,o):Br("row-gap",getComputedStyle(d).rowGap,o)),v!==null&&e(v)},[e,t,o,s,i,r,u]);return ur(l,n,a)}function di(e,t,n,r){const o=e.length;if(o===0)return null;const s=[];for(let i=0;i<o;i++){const u=e.item(i);if(u.dataset.index===void 0)continue;const a=parseInt(u.dataset.index),l=parseFloat(u.dataset.knownSize),d=t(u,n);if(d===0&&r("Zero-sized element, this should not happen",{child:u},Ve.ERROR),d===l)continue;const v=s[s.length-1];s.length===0||v.size!==d||v.endIndex!==a-1?s.push({endIndex:a,size:d,startIndex:a}):s[s.length-1].endIndex++}return s}function Br(e,t,n){return t!=="normal"&&!(t!=null&&t.endsWith("px"))&&n(`${e} was not resolved to pixel value correctly`,t,Ve.WARN),t==="normal"?0:parseInt(t??"0",10)}function Wo(e,t,n){const r=m.useRef(null),o=m.useCallback(a=>{if(!(a!=null&&a.offsetParent))return;const l=a.getBoundingClientRect(),d=l.width;let v,h;if(t){const p=t.getBoundingClientRect(),S=l.top-p.top;h=p.height-Math.max(0,S),v=S+t.scrollTop}else{const p=i.current.ownerDocument.defaultView;h=p.innerHeight-Math.max(0,l.top),v=l.top+p.scrollY}r.current={offsetTop:v,visibleHeight:h,visibleWidth:d},e(r.current)},[e,t]),{callbackRef:s,ref:i}=ur(o,!0,n),u=m.useCallback(()=>{o(i.current)},[o,i]);return m.useEffect(()=>{var a;if(t){t.addEventListener("scroll",u);const l=new ResizeObserver(()=>{requestAnimationFrame(u)});return l.observe(t),()=>{t.removeEventListener("scroll",u),l.unobserve(t)}}else{const l=(a=i.current)==null?void 0:a.ownerDocument.defaultView;return l==null||l.addEventListener("scroll",u),l==null||l.addEventListener("resize",u),()=>{l==null||l.removeEventListener("scroll",u),l==null||l.removeEventListener("resize",u)}}},[u,t,i]),s}const De=be(()=>{const e=me(),t=me(),n=F(0),r=me(),o=F(0),s=me(),i=me(),u=F(0),a=F(0),l=F(0),d=F(0),v=me(),h=me(),p=F(!1),S=F(!1),w=F(!1);return te(P(e,X(({scrollTop:c})=>c)),t),te(P(e,X(({scrollHeight:c})=>c)),i),te(t,o),{deviation:n,fixedFooterHeight:l,fixedHeaderHeight:a,footerHeight:d,headerHeight:u,horizontalDirection:S,scrollBy:h,scrollContainerState:e,scrollHeight:i,scrollingInProgress:p,scrollTo:v,scrollTop:t,skipAnimationFrameInResizeObserver:w,smoothScrollTargetReached:r,statefulScrollTop:o,viewportHeight:s}},[],{singleton:!0}),Lt={lvl:0};function Vo(e,t){const n=e.length;if(n===0)return[];let{index:r,value:o}=t(e[0]);const s=[];for(let i=1;i<n;i++){const{index:u,value:a}=t(e[i]);s.push({end:u-1,start:r,value:o}),r=u,o=a}return s.push({end:1/0,start:r,value:o}),s}function Se(e){return e===Lt}function Gt(e,t){if(!Se(e))return t===e.k?e.v:t<e.k?Gt(e.l,t):Gt(e.r,t)}function nt(e,t,n="k"){if(Se(e))return[-1/0,void 0];if(Number(e[n])===t)return[e.k,e.v];if(Number(e[n])<t){const r=nt(e.r,t,n);return r[0]===-1/0?[e.k,e.v]:r}return nt(e.l,t,n)}function Ke(e,t,n){return Se(e)?Uo(t,n,1):t===e.k?Le(e,{k:t,v:n}):t<e.k?Pr(Le(e,{l:Ke(e.l,t,n)})):Pr(Le(e,{r:Ke(e.r,t,n)}))}function Rt(){return Lt}function _t(e,t,n){if(Se(e))return[];const r=nt(e,t)[0];return fi(tr(e,r,n))}function er(e,t){if(Se(e))return Lt;const{k:n,l:r,r:o}=e;if(t===n){if(Se(r))return o;if(Se(o))return r;{const[s,i]=qo(r);return rn(Le(e,{k:s,l:$o(r),v:i}))}}else return t<n?rn(Le(e,{l:er(r,t)})):rn(Le(e,{r:er(o,t)}))}function St(e){return Se(e)?[]:[...St(e.l),{k:e.k,v:e.v},...St(e.r)]}function tr(e,t,n){if(Se(e))return[];const{k:r,l:o,r:s,v:i}=e;let u=[];return r>t&&(u=u.concat(tr(o,t,n))),r>=t&&r<=n&&u.push({k:r,v:i}),r<=n&&(u=u.concat(tr(s,t,n))),u}function rn(e){const{l:t,lvl:n,r}=e;if(r.lvl>=n-1&&t.lvl>=n-1)return e;if(n>r.lvl+1){if(Mn(t))return Ko(Le(e,{lvl:n-1}));if(!Se(t)&&!Se(t.r))return Le(t.r,{l:Le(t,{r:t.r.l}),lvl:n,r:Le(e,{l:t.r.r,lvl:n-1})});throw new Error("Unexpected empty nodes")}else{if(Mn(e))return nr(Le(e,{lvl:n-1}));if(!Se(r)&&!Se(r.l)){const o=r.l,s=Mn(o)?r.lvl-1:r.lvl;return Le(o,{l:Le(e,{lvl:n-1,r:o.l}),lvl:o.lvl+1,r:nr(Le(r,{l:o.r,lvl:s}))})}else throw new Error("Unexpected empty nodes")}}function Le(e,t){return Uo(t.k!==void 0?t.k:e.k,t.v!==void 0?t.v:e.v,t.lvl!==void 0?t.lvl:e.lvl,t.l!==void 0?t.l:e.l,t.r!==void 0?t.r:e.r)}function $o(e){return Se(e.r)?e.l:rn(Le(e,{r:$o(e.r)}))}function Mn(e){return Se(e)||e.lvl>e.r.lvl}function qo(e){return Se(e.r)?[e.k,e.v]:qo(e.r)}function Uo(e,t,n,r=Lt,o=Lt){return{k:e,l:r,lvl:n,r:o,v:t}}function Pr(e){return nr(Ko(e))}function Ko(e){const{l:t}=e;return!Se(t)&&t.lvl===e.lvl?Le(t,{r:Le(e,{l:t.r})}):e}function nr(e){const{lvl:t,r:n}=e;return!Se(n)&&!Se(n.r)&&n.lvl===t&&n.r.lvl===t?Le(n,{l:Le(e,{r:n.l}),lvl:t+1}):e}function fi(e){return Vo(e,({k:t,v:n})=>({index:t,value:n}))}function Xo(e,t){return!!(e&&e.startIndex===t.startIndex&&e.endIndex===t.endIndex)}function Ht(e,t){return!!(e&&e[0]===t[0]&&e[1]===t[1])}const dr=be(()=>({recalcInProgress:F(!1)}),[],{singleton:!0});function Qo(e,t,n){return e[ln(e,t,n)]}function ln(e,t,n,r=0){let o=e.length-1;for(;r<=o;){const s=Math.floor((r+o)/2),i=e[s],u=n(i,t);if(u===0)return s;if(u===-1){if(o-r<2)return s-1;o=s-1}else{if(o===r)return s;r=s+1}}throw new Error(`Failed binary finding record in array - ${e.join(",")}, searched for ${t}`)}function pi(e,t,n,r){const o=ln(e,t,r),s=ln(e,n,r,o);return e.slice(o,s+1)}function gt(e,t){return Math.round(e.getBoundingClientRect()[t])}function bn(e){return!Se(e.groupOffsetTree)}function fr({index:e},t){return t===e?0:t<e?-1:1}function gi(){return{groupIndices:[],groupOffsetTree:Rt(),lastIndex:0,lastOffset:0,lastSize:0,offsetTree:[],sizeTree:Rt()}}function hi(e,t){let n=Se(e)?0:1/0;for(const r of t){const{endIndex:o,size:s,startIndex:i}=r;if(n=Math.min(n,i),Se(e)){e=Ke(e,0,s);continue}const u=_t(e,i-1,o+1);if(u.some(wi(r)))continue;let a=!1,l=!1;for(const{end:d,start:v,value:h}of u)a?(o>=v||s===h)&&(e=er(e,v)):(l=h!==s,a=!0),d>o&&o>=v&&h!==s&&(e=Ke(e,o+1,h));l&&(e=Ke(e,i,s))}return[e,n]}function mi(e){return typeof e.groupIndex<"u"}function bi({offset:e},t){return t===e?0:t<e?-1:1}function Nt(e,t,n){if(t.length===0)return 0;const{index:r,offset:o,size:s}=Qo(t,e,fr),i=e-r,u=s*i+(i-1)*n+o;return u>0?u+n:u}function Yo(e,t){if(!bn(t))return e;let n=0;for(;t.groupIndices[n]<=e+n;)n++;return e+n}function Zo(e,t,n){if(mi(e))return t.groupIndices[e.groupIndex]+1;{const r=e.index==="LAST"?n:e.index;let o=Yo(r,t);return o=Math.max(0,o,Math.min(n,o)),o}}function xi(e,t,n,r=0){return r>0&&(t=Math.max(t,Qo(e,r,fr).offset)),Vo(pi(e,t,n,bi),yi)}function vi(e,[t,n,r,o]){t.length>0&&r("received item sizes",t,Ve.DEBUG);const s=e.sizeTree;let i=s,u=0;if(n.length>0&&Se(s)&&t.length===2){const h=t[0].size,p=t[1].size;i=n.reduce((S,w)=>Ke(Ke(S,w,h),w+1,p),i)}else[i,u]=hi(i,t);if(i===s)return e;const{lastIndex:a,lastOffset:l,lastSize:d,offsetTree:v}=rr(e.offsetTree,u,i,o);return{groupIndices:n,groupOffsetTree:n.reduce((h,p)=>Ke(h,p,Nt(p,v,o)),Rt()),lastIndex:a,lastOffset:l,lastSize:d,offsetTree:v,sizeTree:i}}function Si(e){return St(e).map(({k:t,v:n},r,o)=>{const s=o[r+1];return{endIndex:s?s.k-1:1/0,size:n,startIndex:t}})}function Lr(e,t){let n=0,r=0;for(;n<e;)n+=t[r+1]-t[r]-1,r++;return r-(n===e?0:1)}function rr(e,t,n,r){let o=e,s=0,i=0,u=0,a=0;if(t!==0){a=ln(o,t-1,fr),u=o[a].offset;const l=nt(n,t-1);s=l[0],i=l[1],o.length&&o[a].size===nt(n,t)[1]&&(a-=1),o=o.slice(0,a+1)}else o=[];for(const{start:l,value:d}of _t(n,t,1/0)){const v=l-s,h=v*i+u+v*r;o.push({index:l,offset:h,size:d}),s=l,u=h,i=d}return{lastIndex:s,lastOffset:u,lastSize:i,offsetTree:o}}function yi(e){return{index:e.index,value:e}}function wi(e){const{endIndex:t,size:n,startIndex:r}=e;return o=>o.start===r&&(o.end===t||o.end===1/0)&&o.value===n}const Ci={offsetHeight:"height",offsetWidth:"width"},lt=be(([{log:e},{recalcInProgress:t}])=>{const n=me(),r=me(),o=Fe(r,0),s=me(),i=me(),u=F(0),a=F([]),l=F(void 0),d=F(void 0),v=F(void 0),h=F(void 0),p=F((x,y)=>gt(x,Ci[y])),S=F(void 0),w=F(0),c=gi(),g=Fe(P(n,ge(a,e,w),it(vi,c),Ie()),c),f=Fe(P(a,Ie(),it((x,y)=>({current:y,prev:x.current}),{current:[],prev:[]}),X(({prev:x})=>x)),[]);te(P(a,se(x=>x.length>0),ge(g,w),X(([x,y,_])=>{const I=x.reduce((R,O,A)=>Ke(R,O,Nt(O,y.offsetTree,_)||A),Rt());return{...y,groupIndices:x,groupOffsetTree:I}})),g),te(P(r,ge(g),se(([x,{lastIndex:y}])=>x<y),X(([x,{lastIndex:y,lastSize:_}])=>[{endIndex:y,size:_,startIndex:x}])),n),te(l,d);const C=Fe(P(l,X(x=>x===void 0)),!0);te(P(d,se(x=>x!==void 0&&Se(Me(g).sizeTree)),X(x=>{const y=Me(v),_=Me(a).length>0;return y?_?[{endIndex:0,size:y,startIndex:0},{endIndex:1,size:x,startIndex:1}]:[]:[{endIndex:0,size:x,startIndex:0}]})),n),te(P(h,se(x=>x!==void 0&&x.length>0&&Se(Me(g).sizeTree)),X(x=>{const y=[];let _=x[0],I=0;for(let R=1;R<x.length;R++){const O=x[R];O!==_&&(y.push({endIndex:R-1,size:_,startIndex:I}),_=O,I=R)}return y.push({endIndex:x.length-1,size:_,startIndex:I}),y})),n),te(P(a,ge(v,d),se(([,x,y])=>x!==void 0&&y!==void 0),X(([x,y,_])=>{const I=[];for(let R=0;R<x.length;R++){const O=x[R],A=x[R+1];I.push({startIndex:O,endIndex:O,size:y}),A!==void 0&&I.push({startIndex:O+1,endIndex:A-1,size:_})}return I})),n);const k=Xe(P(n,ge(g),it(({sizes:x},[y,_])=>({changed:_!==x,sizes:_}),{changed:!1,sizes:c}),X(x=>x.changed)));ve(P(u,it((x,y)=>({diff:x.prev-y,prev:y}),{diff:0,prev:0}),X(x=>x.diff)),x=>{const{groupIndices:y}=Me(g);if(x>0)fe(t,!0),fe(s,x+Lr(x,y));else if(x<0){const _=Me(f);_.length>0&&(x-=Lr(-x,_)),fe(i,x)}}),ve(P(u,ge(e)),([x,y])=>{x<0&&y("`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value",{firstItemIndex:u},Ve.ERROR)});const T=Xe(s);te(P(s,ge(g),X(([x,y])=>{const _=y.groupIndices.length>0,I=[],R=y.lastSize;if(_){const O=Gt(y.sizeTree,0);let A=0,E=0;for(;A<x;){const L=y.groupIndices[E],M=y.groupIndices.length===E+1?1/0:y.groupIndices[E+1]-L-1;I.push({endIndex:L,size:O,startIndex:L}),I.push({endIndex:L+1+M-1,size:R,startIndex:L+1}),E++,A+=M+1}const B=St(y.sizeTree);return A!==x&&B.shift(),B.reduce((L,{k:M,v:N})=>{let Y=L.ranges;return L.prevSize!==0&&(Y=[...L.ranges,{endIndex:M+x-1,size:L.prevSize,startIndex:L.prevIndex}]),{prevIndex:M+x,prevSize:N,ranges:Y}},{prevIndex:x,prevSize:0,ranges:I}).ranges}return St(y.sizeTree).reduce((O,{k:A,v:E})=>({prevIndex:A+x,prevSize:E,ranges:[...O.ranges,{endIndex:A+x-1,size:O.prevSize,startIndex:O.prevIndex}]}),{prevIndex:0,prevSize:R,ranges:[]}).ranges})),n);const j=Xe(P(i,ge(g,w),X(([x,{offsetTree:y},_])=>{const I=-x;return Nt(I,y,_)})));return te(P(i,ge(g,w),X(([x,y,_])=>{if(y.groupIndices.length>0){if(Se(y.sizeTree))return y;let I=Rt();const R=Me(f);let O=0,A=0,E=0;for(;O<-x;){E=R[A];const B=R[A+1]-E-1;A++,O+=B+1}if(I=St(y.sizeTree).reduce((B,{k:L,v:M})=>Ke(B,Math.max(0,L+x),M),I),O!==-x){const B=Gt(y.sizeTree,E);I=Ke(I,0,B);const L=nt(y.sizeTree,-x+1)[1];I=Ke(I,1,L)}return{...y,sizeTree:I,...rr(y.offsetTree,0,I,_)}}else{const I=St(y.sizeTree).reduce((R,{k:O,v:A})=>Ke(R,Math.max(0,O+x),A),Rt());return{...y,sizeTree:I,...rr(y.offsetTree,0,I,_)}}})),g),{beforeUnshiftWith:T,data:S,defaultItemSize:d,firstItemIndex:u,fixedItemSize:l,fixedGroupSize:v,gap:w,groupIndices:a,heightEstimates:h,itemSize:p,listRefresh:k,shiftWith:i,shiftWithOffset:j,sizeRanges:n,sizes:g,statefulTotalCount:o,totalCount:r,trackItemSizes:C,unshiftWith:s}},ke(xt,dr),{singleton:!0});function Ii(e){return e.reduce((t,n)=>(t.groupIndices.push(t.totalCount),t.totalCount+=n+1,t),{groupIndices:[],totalCount:0})}const Jo=be(([{groupIndices:e,sizes:t,totalCount:n},{headerHeight:r,scrollTop:o}])=>{const s=me(),i=me(),u=Xe(P(s,X(Ii)));return te(P(u,X(a=>a.totalCount)),n),te(P(u,X(a=>a.groupIndices)),e),te(P(Be(o,t,r),se(([a,l])=>bn(l)),X(([a,l,d])=>nt(l.groupOffsetTree,Math.max(a-d,0),"v")[0]),Ie(),X(a=>[a])),i),{groupCounts:s,topItemsIndexes:i}},ke(lt,De)),vt=be(([{log:e}])=>{const t=F(!1),n=Xe(P(t,se(r=>r),Ie()));return ve(t,r=>{r&&Me(e)("props updated",{},Ve.DEBUG)}),{didMount:n,propsReady:t}},ke(xt),{singleton:!0}),ki=typeof document<"u"&&"scrollBehavior"in document.documentElement.style;function es(e){const t=typeof e=="number"?{index:e}:e;return t.align||(t.align="start"),(!t.behavior||!ki)&&(t.behavior="auto"),t.offset||(t.offset=0),t}const Ut=be(([{gap:e,listRefresh:t,sizes:n,totalCount:r},{fixedFooterHeight:o,fixedHeaderHeight:s,footerHeight:i,headerHeight:u,scrollingInProgress:a,scrollTo:l,smoothScrollTargetReached:d,viewportHeight:v},{log:h}])=>{const p=me(),S=me(),w=F(0);let c=null,g=null,f=null;function C(){c&&(c(),c=null),f&&(f(),f=null),g&&(clearTimeout(g),g=null),fe(a,!1)}return te(P(p,ge(n,v,r,w,u,i,h),ge(e,s,o),X(([[k,T,j,x,y,_,I,R],O,A,E])=>{const B=es(k),{align:L,behavior:M,offset:N}=B,Y=x-1,ue=Zo(B,T,Y);let ie=Nt(ue,T.offsetTree,O)+_;L==="end"?(ie+=A+nt(T.sizeTree,ue)[1]-j+E,ue===Y&&(ie+=I)):L==="center"?ie+=(A+nt(T.sizeTree,ue)[1]-j+E)/2:ie-=y,N&&(ie+=N);const ae=he=>{C(),he?(R("retrying to scroll to",{location:k},Ve.DEBUG),fe(p,k)):(fe(S,!0),R("list did not change, scroll successful",{},Ve.DEBUG))};if(C(),M==="smooth"){let he=!1;f=ve(t,Te=>{he=he||Te}),c=tt(d,()=>{ae(he)})}else c=tt(P(t,Ti(150)),ae);return g=setTimeout(()=>{C()},1200),fe(a,!0),R("scrolling from index to",{behavior:M,index:ue,top:ie},Ve.DEBUG),{behavior:M,top:ie}})),l),{scrollTargetReached:S,scrollToIndex:p,topListHeight:w}},ke(lt,De,xt),{singleton:!0});function Ti(e){return t=>{const n=setTimeout(()=>{t(!1)},e);return r=>{r&&(t(!0),clearTimeout(n))}}}function pr(e,t){e==0?t():requestAnimationFrame(()=>{pr(e-1,t)})}function gr(e,t){const n=t-1;return typeof e=="number"?e:e.index==="LAST"?n:e.index}const Kt=be(([{defaultItemSize:e,listRefresh:t,sizes:n},{scrollTop:r},{scrollTargetReached:o,scrollToIndex:s},{didMount:i}])=>{const u=F(!0),a=F(0),l=F(!0);return te(P(i,ge(a),se(([d,v])=>!!v),st(!1)),u),te(P(i,ge(a),se(([d,v])=>!!v),st(!1)),l),ve(P(Be(t,i),ge(u,n,e,l),se(([[,d],v,{sizeTree:h},p,S])=>d&&(!Se(h)||ar(p))&&!v&&!S),ge(a)),([,d])=>{tt(o,()=>{fe(l,!0)}),pr(4,()=>{tt(r,()=>{fe(u,!0)}),fe(s,d)})}),{initialItemFinalLocationReached:l,initialTopMostItemIndex:a,scrolledToInitialItem:u}},ke(lt,De,Ut,vt),{singleton:!0});function ts(e,t){return Math.abs(e-t)<1.01}const Ft="up",Bt="down",Ri="none",_i={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollHeight:0,scrollTop:0,viewportHeight:0}},Mi=0,Xt=be(([{footerHeight:e,headerHeight:t,scrollBy:n,scrollContainerState:r,scrollTop:o,viewportHeight:s}])=>{const i=F(!1),u=F(!0),a=me(),l=me(),d=F(4),v=F(Mi),h=Fe(P(Jn(P(oe(o),yt(1),st(!0)),P(oe(o),yt(1),st(!1),Ar(100))),Ie()),!1),p=Fe(P(Jn(P(n,st(!0)),P(n,st(!1),Ar(200))),Ie()),!1);te(P(Be(oe(o),oe(v)),X(([f,C])=>f<=C),Ie()),u),te(P(u,ct(50)),l);const S=Xe(P(Be(r,oe(s),oe(t),oe(e),oe(d)),it((f,[{scrollHeight:C,scrollTop:k},T,j,x,y])=>{const _=k+T-C>-y,I={scrollHeight:C,scrollTop:k,viewportHeight:T};if(_){let O,A;return k>f.state.scrollTop?(O="SCROLLED_DOWN",A=f.state.scrollTop-k):(O="SIZE_DECREASED",A=f.state.scrollTop-k||f.scrollTopDelta),{atBottom:!0,atBottomBecause:O,scrollTopDelta:A,state:I}}let R;return I.scrollHeight>f.state.scrollHeight?R="SIZE_INCREASED":T<f.state.viewportHeight?R="VIEWPORT_HEIGHT_DECREASING":k<f.state.scrollTop?R="SCROLLING_UPWARDS":R="NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",{atBottom:!1,notAtBottomBecause:R,state:I}},_i),Ie((f,C)=>f&&f.atBottom===C.atBottom))),w=Fe(P(r,it((f,{scrollHeight:C,scrollTop:k,viewportHeight:T})=>{if(ts(f.scrollHeight,C))return{changed:!1,jump:0,scrollHeight:C,scrollTop:k};{const j=C-(k+T)<1;return f.scrollTop!==k&&j?{changed:!0,jump:f.scrollTop-k,scrollHeight:C,scrollTop:k}:{changed:!0,jump:0,scrollHeight:C,scrollTop:k}}},{changed:!1,jump:0,scrollHeight:0,scrollTop:0}),se(f=>f.changed),X(f=>f.jump)),0);te(P(S,X(f=>f.atBottom)),i),te(P(i,ct(50)),a);const c=F(Bt);te(P(r,X(({scrollTop:f})=>f),Ie(),it((f,C)=>Me(p)?{direction:f.direction,prevScrollTop:C}:{direction:C<f.prevScrollTop?Ft:Bt,prevScrollTop:C},{direction:Bt,prevScrollTop:0}),X(f=>f.direction)),c),te(P(r,ct(50),st(Ri)),c);const g=F(0);return te(P(h,se(f=>!f),st(0)),g),te(P(o,ct(100),ge(h),se(([f,C])=>C),it(([f,C],[k])=>[C,k],[0,0]),X(([f,C])=>C-f)),g),{atBottomState:S,atBottomStateChange:a,atBottomThreshold:d,atTopStateChange:l,atTopThreshold:v,isAtBottom:i,isAtTop:u,isScrolling:h,lastJumpDueToItemResize:w,scrollDirection:c,scrollVelocity:g}},ke(De)),Dt="top",Wt="bottom",Gr="none";function Hr(e,t,n){return typeof e=="number"?n===Ft&&t===Dt||n===Bt&&t===Wt?e:0:n===Ft?t===Dt?e.main:e.reverse:t===Wt?e.main:e.reverse}function Nr(e,t){var n;return typeof e=="number"?e:(n=e[t])!=null?n:0}const hr=be(([{deviation:e,fixedHeaderHeight:t,headerHeight:n,scrollTop:r,viewportHeight:o}])=>{const s=me(),i=F(0),u=F(0),a=F(0),l=Fe(P(Be(oe(r),oe(o),oe(n),oe(s,Ht),oe(a),oe(i),oe(t),oe(e),oe(u)),X(([d,v,h,[p,S],w,c,g,f,C])=>{const k=d-f,T=c+g,j=Math.max(h-k,0);let x=Gr;const y=Nr(C,Dt),_=Nr(C,Wt);return p-=f,p+=h+g,S+=h+g,S-=f,p>d+T-y&&(x=Ft),S<d-j+v+_&&(x=Bt),x!==Gr?[Math.max(k-h-Hr(w,Dt,x)-y,0),k-j-g+v+Hr(w,Wt,x)+_]:null}),se(d=>d!=null),Ie(Ht)),[0,0]);return{increaseViewportBy:u,listBoundary:s,overscan:a,topListHeight:i,visibleRange:l}},ke(De),{singleton:!0});function Ei(e,t,n){if(bn(t)){const r=Yo(e,t);return[{index:nt(t.groupOffsetTree,r)[0],offset:0,size:0},{data:n==null?void 0:n[0],index:r,offset:0,size:0}]}return[{data:n==null?void 0:n[0],index:e,offset:0,size:0}]}const En={bottom:0,firstItemIndex:0,items:[],offsetBottom:0,offsetTop:0,top:0,topItems:[],topListHeight:0,totalCount:0};function on(e,t,n,r,o,s){const{lastIndex:i,lastOffset:u,lastSize:a}=o;let l=0,d=0;if(e.length>0){l=e[0].offset;const w=e[e.length-1];d=w.offset+w.size}const v=n-i,h=u+v*a+(v-1)*r,p=l,S=h-d;return{bottom:d,firstItemIndex:s,items:Fr(e,o,s),offsetBottom:S,offsetTop:l,top:p,topItems:Fr(t,o,s),topListHeight:t.reduce((w,c)=>c.size+w,0),totalCount:n}}function ns(e,t,n,r,o,s){let i=0;if(n.groupIndices.length>0)for(const d of n.groupIndices){if(d-i>=e)break;i++}const u=e+i,a=gr(t,u),l=Array.from({length:u}).map((d,v)=>({data:s[v+a],index:v+a,offset:0,size:0}));return on(l,[],u,o,n,r)}function Fr(e,t,n){if(e.length===0)return[];if(!bn(t))return e.map(l=>({...l,index:l.index+n,originalIndex:l.index}));const r=e[0].index,o=e[e.length-1].index,s=[],i=_t(t.groupOffsetTree,r,o);let u,a=0;for(const l of e){(!u||u.end<l.index)&&(u=i.shift(),a=t.groupIndices.indexOf(u.start));let d;l.index===u.start?d={index:a,type:"group"}:d={groupIndex:a,index:l.index-(a+1)+n},s.push({...d,data:l.data,offset:l.offset,originalIndex:l.index,size:l.size})}return s}function Dr(e,t){var n;return e===void 0?0:typeof e=="number"?e:(n=e[t])!=null?n:0}const Ct=be(([{data:e,firstItemIndex:t,gap:n,sizes:r,totalCount:o},s,{listBoundary:i,topListHeight:u,visibleRange:a},{initialTopMostItemIndex:l,scrolledToInitialItem:d},{topListHeight:v},h,{didMount:p},{recalcInProgress:S}])=>{const w=F([]),c=F(0),g=me(),f=F(0);te(s.topItemsIndexes,w);const C=Fe(P(Be(p,S,oe(a,Ht),oe(o),oe(r),oe(l),d,oe(w),oe(t),oe(n),oe(f),e),se(([x,y,,_,,,,,,,,I])=>{const R=I&&I.length!==_;return x&&!y&&!R}),X(([,,[x,y],_,I,R,O,A,E,B,L,M])=>{var N,Y,ue,ie;const ae=I,{offsetTree:he,sizeTree:Te}=ae,W=Me(c);if(_===0)return{...En,totalCount:_};if(x===0&&y===0)return W===0?{...En,totalCount:_}:ns(W,R,I,E,B,M||[]);if(Se(Te))return W>0?null:on(Ei(gr(R,_),ae,M),[],_,B,ae,E);const D=[];if(A.length>0){const V=A[0],Z=A[A.length-1];let ee=0;for(const J of _t(Te,V,Z)){const le=J.value,re=Math.max(J.start,V),xe=Math.min(J.end,Z);for(let pe=re;pe<=xe;pe++)D.push({data:M==null?void 0:M[pe],index:pe,offset:ee,size:le}),ee+=le}}if(!O)return on([],D,_,B,ae,E);const U=A.length>0?A[A.length-1]+1:0,z=xi(he,x,y,U);if(z.length===0)return null;const H=_-1,Q=mn([],V=>{for(const Z of z){const ee=Z.value;let J=ee.offset,le=Z.start;const re=ee.size;if(ee.offset<x){le+=Math.floor((x-ee.offset+B)/(re+B));const pe=le-Z.start;J+=pe*re+pe*B}le<U&&(J+=(U-le)*re,le=U);const xe=Math.min(Z.end,H);for(let pe=le;pe<=xe&&!(J>=y);pe++)V.push({data:M==null?void 0:M[pe],index:pe,offset:J,size:re}),J+=re+B}}),G=Dr(L,Dt),ne=Dr(L,Wt);if(Q.length>0&&(G>0||ne>0)){const V=Q[0],Z=Q[Q.length-1];if(G>0&&V.index>U){const ee=Math.min(G,V.index-U),J=[];let le=V.offset;for(let re=V.index-1;re>=V.index-ee;re--){const xe=(Y=(N=_t(Te,re,re)[0])==null?void 0:N.value)!=null?Y:V.size;le-=xe+B,J.unshift({data:M==null?void 0:M[re],index:re,offset:le,size:xe})}Q.unshift(...J)}if(ne>0&&Z.index<H){const ee=Math.min(ne,H-Z.index);let J=Z.offset+Z.size+B;for(let le=Z.index+1;le<=Z.index+ee;le++){const re=(ie=(ue=_t(Te,le,le)[0])==null?void 0:ue.value)!=null?ie:Z.size;Q.push({data:M==null?void 0:M[le],index:le,offset:J,size:re}),J+=re+B}}}return on(Q,D,_,B,ae,E)}),se(x=>x!==null),Ie()),En);te(P(e,se(ar),X(x=>x==null?void 0:x.length)),o),te(P(C,X(x=>x.topListHeight)),v),te(v,u),te(P(C,X(x=>[x.top,x.bottom])),i),te(P(C,X(x=>x.items)),g);const k=Xe(P(C,se(({items:x})=>x.length>0),ge(o,e),se(([{items:x},y])=>x[x.length-1].originalIndex===y-1),X(([,x,y])=>[x-1,y]),Ie(Ht),X(([x])=>x))),T=Xe(P(C,ct(200),se(({items:x,topItems:y})=>x.length>0&&x[0].originalIndex===y.length),X(({items:x})=>x[0].index),Ie())),j=Xe(P(C,se(({items:x})=>x.length>0),X(({items:x})=>{let y=0,_=x.length-1;for(;x[y].type==="group"&&y<_;)y++;for(;x[_].type==="group"&&_>y;)_--;return{endIndex:x[_].index,startIndex:x[y].index}}),Ie(Xo)));return{endReached:k,initialItemCount:c,itemsRendered:g,listState:C,minOverscanItemCount:f,rangeChanged:j,startReached:T,topItemsIndexes:w,...h}},ke(lt,Jo,hr,Kt,Ut,Xt,vt,dr),{singleton:!0}),rs=be(([{fixedFooterHeight:e,fixedHeaderHeight:t,footerHeight:n,headerHeight:r},{listState:o}])=>{const s=me(),i=Fe(P(Be(n,e,r,t,o),X(([u,a,l,d,v])=>u+a+l+d+v.offsetBottom+v.bottom)),0);return te(oe(i),s),{totalListHeight:i,totalListHeightChanged:s}},ke(De,Ct),{singleton:!0}),ji=be(([{viewportHeight:e},{totalListHeight:t}])=>{const n=F(!1),r=Fe(P(Be(n,e,t),se(([o])=>o),X(([,o,s])=>Math.max(0,o-s)),ct(0),Ie()),0);return{alignToBottom:n,paddingTopAddition:r}},ke(De,rs),{singleton:!0}),os=be(()=>({context:F(null)})),Oi=({itemBottom:e,itemTop:t,locationParams:{align:n,behavior:r,...o},viewportBottom:s,viewportTop:i})=>t<i?{...o,align:n??"start",behavior:r}:e>s?{...o,align:n??"end",behavior:r}:null,ss=be(([{gap:e,sizes:t,totalCount:n},{fixedFooterHeight:r,fixedHeaderHeight:o,headerHeight:s,scrollingInProgress:i,scrollTop:u,viewportHeight:a},{scrollToIndex:l}])=>{const d=me();return te(P(d,ge(t,a,n,s,o,r,u),ge(e),X(([[v,h,p,S,w,c,g,f],C])=>{const{align:k,behavior:T,calculateViewLocation:j=Oi,done:x,...y}=v,_=Zo(v,h,S-1),I=Nt(_,h.offsetTree,C)+w+c,R=I+nt(h.sizeTree,_)[1],O=f+c,A=f+p-g,E=j({itemBottom:R,itemTop:I,locationParams:{align:k,behavior:T,...y},viewportBottom:A,viewportTop:O});return E?x&&tt(P(i,se(B=>!B),yt(Me(i)?1:2)),x):x==null||x(),E}),se(v=>v!==null)),l),{scrollIntoView:d}},ke(lt,De,Ut,Ct,xt),{singleton:!0});function Wr(e){return e?e==="smooth"?"smooth":"auto":!1}const zi=(e,t)=>typeof e=="function"?Wr(e(t)):t&&Wr(e),Ai=be(([{listRefresh:e,totalCount:t,fixedItemSize:n,data:r},{atBottomState:o,isAtBottom:s},{scrollToIndex:i},{scrolledToInitialItem:u},{didMount:a,propsReady:l},{log:d},{scrollingInProgress:v},{context:h},{scrollIntoView:p}])=>{const S=F(!1),w=me();let c=null;function g(T){fe(i,{align:"end",behavior:T,index:"LAST"})}ve(P(Be(P(oe(t),yt(1)),a),ge(oe(S),s,u,v),X(([[T,j],x,y,_,I])=>{let R=j&&_,O="auto";return R&&(O=zi(x,y||I),R=R&&!!O),{followOutputBehavior:O,shouldFollow:R,totalCount:T}}),se(({shouldFollow:T})=>T)),({followOutputBehavior:T,totalCount:j})=>{c&&(c(),c=null),Me(n)?requestAnimationFrame(()=>{Me(d)("following output to ",{totalCount:j},Ve.DEBUG),g(T)}):c=tt(e,()=>{Me(d)("following output to ",{totalCount:j},Ve.DEBUG),g(T),c=null})});function f(T){const j=tt(o,x=>{T&&!x.atBottom&&x.notAtBottomBecause==="SIZE_INCREASED"&&!c&&(Me(d)("scrolling to bottom due to increased size",{},Ve.DEBUG),g("auto"))});setTimeout(j,100)}ve(P(Be(oe(S),t,l),se(([T,,j])=>T&&j),it(({value:T},[,j])=>({refreshed:T===j,value:j}),{refreshed:!1,value:0}),se(({refreshed:T})=>T),ge(S,t)),([,T])=>{Me(u)&&f(T!==!1)}),ve(w,()=>{f(Me(S)!==!1)}),ve(Be(oe(S),o),([T,j])=>{T&&!j.atBottom&&j.notAtBottomBecause==="VIEWPORT_HEIGHT_DECREASING"&&g("auto")});const C=F(null),k=me();return te(Jn(P(oe(r),X(T=>{var j;return(j=T==null?void 0:T.length)!=null?j:0})),P(oe(t))),k),ve(P(Be(P(k,yt(1)),a),ge(oe(C),u,v,h),X(([[T,j],x,y,_,I])=>j&&y&&(x==null?void 0:x({context:I,totalCount:T,scrollingInProgress:_}))),se(T=>!!T),ct(0)),T=>{c&&(c(),c=null),Me(n)?requestAnimationFrame(()=>{Me(d)("scrolling into view",{}),fe(p,T)}):c=tt(e,()=>{Me(d)("scrolling into view",{}),fe(p,T),c=null})}),{autoscrollToBottom:w,followOutput:S,scrollIntoViewOnChange:C}},ke(lt,Xt,Ut,Kt,vt,xt,De,os,ss)),Bi=be(([{data:e,firstItemIndex:t,gap:n,sizes:r},{initialTopMostItemIndex:o},{initialItemCount:s,listState:i},{didMount:u}])=>(te(P(u,ge(s),se(([,a])=>a!==0),ge(o,r,t,n,e),X(([[,a],l,d,v,h,p=[]])=>ns(a,l,d,v,h,p))),i),{}),ke(lt,Kt,Ct,vt),{singleton:!0}),Pi=be(([{didMount:e},{scrollTo:t},{listState:n}])=>{const r=F(0);return ve(P(e,ge(r),se(([,o])=>o!==0),X(([,o])=>({top:o}))),o=>{tt(P(n,yt(1),se(s=>s.items.length>1)),()=>{requestAnimationFrame(()=>{fe(t,o)})})}),{initialScrollTop:r}},ke(vt,De,Ct),{singleton:!0}),is=be(([{scrollVelocity:e}])=>{const t=F(!1),n=me(),r=F(!1);return te(P(e,ge(r,t,n),se(([o,s])=>!!s),X(([o,s,i,u])=>{const{enter:a,exit:l}=s;if(i){if(l(o,u))return!1}else if(a(o,u))return!0;return i}),Ie()),t),ve(P(Be(t,e,n),ge(r)),([[o,s,i],u])=>{o&&u&&u.change&&u.change(s,i)}),{isSeeking:t,scrollSeekConfiguration:r,scrollSeekRangeChanged:n,scrollVelocity:e}},ke(Xt),{singleton:!0}),mr=be(([{scrollContainerState:e,scrollTo:t}])=>{const n=me(),r=me(),o=me(),s=F(!1),i=F(void 0);return te(P(Be(n,r),X(([{scrollHeight:u,scrollTop:a,viewportHeight:l},{offsetTop:d}])=>({scrollHeight:u,scrollTop:Math.max(0,a-d),viewportHeight:l}))),e),te(P(t,ge(r),X(([u,{offsetTop:a}])=>({...u,top:u.top+a}))),o),{customScrollParent:i,useWindowScroll:s,windowScrollContainerState:n,windowScrollTo:o,windowViewportRect:r}},ke(De)),Li=be(([{sizeRanges:e,sizes:t},{headerHeight:n,scrollTop:r},{initialTopMostItemIndex:o},{didMount:s},{useWindowScroll:i,windowScrollContainerState:u,windowViewportRect:a}])=>{const l=me(),d=F(void 0),v=F(null),h=F(null);return te(u,v),te(a,h),ve(P(l,ge(t,r,i,v,h,n)),([p,S,w,c,g,f,C])=>{const k=Si(S.sizeTree);c&&g!==null&&f!==null&&(w=g.scrollTop-f.offsetTop),w-=C,p({ranges:k,scrollTop:w})}),te(P(d,se(ar),X(Gi)),o),te(P(s,ge(d),se(([,p])=>p!==void 0),Ie(),X(([,p])=>p.ranges)),e),{getState:l,restoreStateFrom:d}},ke(lt,De,Kt,vt,mr));function Gi(e){return{align:"start",index:0,offset:e.scrollTop}}const Hi=be(([{topItemsIndexes:e}])=>{const t=F(0);return te(P(t,se(n=>n>=0),X(n=>Array.from({length:n}).map((r,o)=>o))),e),{topItemCount:t}},ke(Ct));function ls(e){let t=!1,n;return(()=>(t||(t=!0,n=e()),n))}const Ni=ls(()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent)),Fi=be(([{deviation:e,scrollBy:t,scrollingInProgress:n,scrollTop:r},{isAtBottom:o,isScrolling:s,lastJumpDueToItemResize:i,scrollDirection:u},{listState:a},{beforeUnshiftWith:l,gap:d,shiftWithOffset:v,sizes:h},{log:p},{recalcInProgress:S}])=>{const w=Xe(P(a,ge(i),it(([,g,f,C],[{bottom:k,items:T,offsetBottom:j,totalCount:x},y])=>{const _=k+j;let I=0;return f===x&&g.length>0&&T.length>0&&(T[0].originalIndex===0&&g[0].originalIndex===0||(I=_-C,I!==0&&(I+=y))),[I,T,x,_]},[0,[],0,0]),se(([g])=>g!==0),ge(r,u,n,o,p,S),se(([,g,f,C,,,k])=>!k&&!C&&g!==0&&f===Ft),X(([[g],,,,,f])=>(f("Upward scrolling compensation",{amount:g},Ve.DEBUG),g))));function c(g){g>0?(fe(t,{behavior:"auto",top:-g}),fe(e,0)):(fe(e,0),fe(t,{behavior:"auto",top:-g}))}return ve(P(w,ge(e,s)),([g,f,C])=>{C&&Ni()?fe(e,f-g):c(-g)}),ve(P(Be(Fe(s,!1),e,S),se(([g,f,C])=>!g&&!C&&f!==0),X(([g,f])=>f),ct(1)),c),te(P(v,X(g=>({top:-g}))),t),ve(P(l,ge(h,d),X(([g,{groupIndices:f,lastSize:C,sizeTree:k},T])=>{function j(x){return x*(C+T)}if(f.length===0)return j(g);{let x=0;const y=Gt(k,0);let _=0,I=0;for(;_<g;){_++,x+=y;let R=f.length===I+1?1/0:f[I+1]-f[I]-1;_+R>g&&(x-=y,R=g-_+1),_+=R,x+=j(R),I++}return x}})),g=>{fe(e,g),requestAnimationFrame(()=>{fe(t,{top:g}),requestAnimationFrame(()=>{fe(e,0),fe(S,!1)})})}),{deviation:e}},ke(De,Xt,Ct,lt,xt,dr)),Di=be(([e,t,n,r,o,s,i,u,a,l,d])=>({...e,...t,...n,...r,...o,...s,...i,...u,...a,...l,...d}),ke(hr,Bi,vt,is,rs,Pi,ji,mr,ss,xt,os)),as=be(([{data:e,defaultItemSize:t,firstItemIndex:n,fixedItemSize:r,fixedGroupSize:o,gap:s,groupIndices:i,heightEstimates:u,itemSize:a,sizeRanges:l,sizes:d,statefulTotalCount:v,totalCount:h,trackItemSizes:p},{initialItemFinalLocationReached:S,initialTopMostItemIndex:w,scrolledToInitialItem:c},g,f,C,k,{scrollToIndex:T},j,{topItemCount:x},{groupCounts:y},_])=>{const{listState:I,minOverscanItemCount:R,topItemsIndexes:O,rangeChanged:A,...E}=k;return te(A,_.scrollSeekRangeChanged),te(P(_.windowViewportRect,X(B=>B.visibleHeight)),g.viewportHeight),{data:e,defaultItemHeight:t,firstItemIndex:n,fixedItemHeight:r,fixedGroupHeight:o,gap:s,groupCounts:y,heightEstimates:u,initialItemFinalLocationReached:S,initialTopMostItemIndex:w,scrolledToInitialItem:c,sizeRanges:l,topItemCount:x,topItemsIndexes:O,totalCount:h,...C,groupIndices:i,itemSize:a,listState:I,minOverscanItemCount:R,scrollToIndex:T,statefulTotalCount:v,trackItemSizes:p,rangeChanged:A,...E,..._,...g,sizes:d,...f}},ke(lt,Kt,De,Li,Ai,Ct,Ut,Fi,Hi,Jo,Di));function Wi(e,t){const n={},r={};let o=0;const s=e.length;for(;o<s;)r[e[o]]=1,o+=1;for(const i in t)Object.hasOwn(r,i)||(n[i]=t[i]);return n}const Jt=typeof document<"u"?m.useLayoutEffect:m.useEffect;function cs(e,t,n){const r=Object.keys(t.required||{}),o=Object.keys(t.optional||{}),s=Object.keys(t.methods||{}),i=Object.keys(t.events||{}),u=m.createContext({});function a(c,g){c.propsReady&&fe(c.propsReady,!1);for(const f of r){const C=c[t.required[f]];fe(C,g[f])}for(const f of o)if(f in g){const C=c[t.optional[f]];fe(C,g[f])}c.propsReady&&fe(c.propsReady,!0)}function l(c){return s.reduce((g,f)=>(g[f]=C=>{const k=c[t.methods[f]];fe(k,C)},g),{})}function d(c){return i.reduce((g,f)=>(g[f]=si(c[t.events[f]]),g),{})}const v=m.forwardRef((c,g)=>{const{children:f,...C}=c,[k]=m.useState(()=>mn(li(e),x=>{a(x,C)})),[T]=m.useState(zr(d,k));Jt(()=>{for(const x of i)x in C&&ve(T[x],C[x]);return()=>{Object.values(T).map(cr)}},[C,T,k]),Jt(()=>{a(k,C)}),m.useImperativeHandle(g,Or(l(k)));const j=n;return b.jsx(u.Provider,{value:k,children:n?b.jsx(j,{...Wi([...r,...o,...i],C),children:f}):f})}),h=c=>{const g=m.useContext(u);return m.useCallback(f=>{fe(g[c],f)},[g,c])},p=c=>{const g=m.useContext(u)[c],f=m.useCallback(C=>ve(g,C),[g]);return m.useSyncExternalStore(f,()=>Me(g),()=>Me(g))},S=c=>{const g=m.useContext(u)[c],[f,C]=m.useState(zr(Me,g));return Jt(()=>ve(g,k=>{k!==f&&C(Or(k))}),[g,f]),f},w=m.version.startsWith("18")?p:S;return{Component:v,useEmitter:(c,g)=>{const f=m.useContext(u)[c];Jt(()=>ve(f,g),[g,f])},useEmitterValue:w,usePublisher:h}}const us=m.createContext(void 0),ds=m.createContext(void 0),fs=typeof document<"u"?m.useLayoutEffect:m.useEffect;function jn(e){return"self"in e}function Vi(e){return"body"in e}function ps(e,t,n,r=jt,o,s){const i=m.useRef(null),u=m.useRef(null),a=m.useRef(null),l=m.useCallback(h=>{let p,S,w;const c=h.target;if(Vi(c)||jn(c)){const f=jn(c)?c:c.defaultView;w=s?f.scrollX:f.scrollY,p=s?f.document.documentElement.scrollWidth:f.document.documentElement.scrollHeight,S=s?f.innerWidth:f.innerHeight}else w=s?c.scrollLeft:c.scrollTop,p=s?c.scrollWidth:c.scrollHeight,S=s?c.offsetWidth:c.offsetHeight;const g=()=>{e({scrollHeight:p,scrollTop:Math.max(w,0),viewportHeight:S})};h.suppressFlushSync?g():Gs.flushSync(g),u.current!==null&&(w===u.current||w<=0||w===p-S)&&(u.current=null,t(!0),a.current&&(clearTimeout(a.current),a.current=null))},[e,t,s]);m.useEffect(()=>{const h=o||i.current;return r(o||i.current),l({suppressFlushSync:!0,target:h}),h.addEventListener("scroll",l,{passive:!0}),()=>{r(null),h.removeEventListener("scroll",l)}},[i,l,n,r,o]);function d(h){const p=i.current;if(!p||(s?"offsetWidth"in p&&p.offsetWidth===0:"offsetHeight"in p&&p.offsetHeight===0))return;const S=h.behavior==="smooth";let w,c,g;jn(p)?(c=Math.max(gt(p.document.documentElement,s?"width":"height"),s?p.document.documentElement.scrollWidth:p.document.documentElement.scrollHeight),w=s?p.innerWidth:p.innerHeight,g=s?window.scrollX:window.scrollY):(c=p[s?"scrollWidth":"scrollHeight"],w=gt(p,s?"width":"height"),g=p[s?"scrollLeft":"scrollTop"]);const f=c-w;if(h.top=Math.ceil(Math.max(Math.min(f,h.top),0)),ts(w,c)||h.top===g){e({scrollHeight:c,scrollTop:g,viewportHeight:w}),S&&t(!0);return}S?(u.current=h.top,a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{a.current=null,u.current=null,t(!0)},1e3)):u.current=null,s&&(h={behavior:h.behavior,left:h.top}),p.scrollTo(h)}function v(h){s&&(h={behavior:h.behavior,left:h.top}),i.current.scrollBy(h)}return{scrollByCallback:v,scrollerRef:i,scrollToCallback:d}}const On="-webkit-sticky",Vr="sticky",br=ls(()=>{if(typeof document>"u")return Vr;const e=document.createElement("div");return e.style.position=On,e.style.position===On?On:Vr});function xr(e){return e}const $i=be(()=>{const e=F(u=>`Item ${u}`),t=F(u=>`Group ${u}`),n=F({}),r=F(xr),o=F("div"),s=F(jt),i=(u,a=null)=>Fe(P(n,X(l=>l[u]),Ie()),a);return{components:n,computeItemKey:r,EmptyPlaceholder:i("EmptyPlaceholder"),FooterComponent:i("Footer"),GroupComponent:i("Group","div"),groupContent:t,HeaderComponent:i("Header"),HeaderFooterTag:o,ItemComponent:i("Item","div"),itemContent:e,ListComponent:i("List","div"),ScrollerComponent:i("Scroller","div"),scrollerRef:s,ScrollSeekPlaceholder:i("ScrollSeekPlaceholder"),TopItemListComponent:i("TopItemList")}}),qi=be(([e,t])=>({...e,...t}),ke(as,$i)),Ui=({height:e})=>b.jsx("div",{style:{height:e}}),Ki={overflowAnchor:"none",position:br(),zIndex:1},gs={overflowAnchor:"none"},Xi={...gs,display:"inline-block",height:"100%"},$r=m.memo(function({showTopList:e=!1}){const t=ce("listState"),n=Ze("sizeRanges"),r=ce("useWindowScroll"),o=ce("customScrollParent"),s=Ze("windowScrollContainerState"),i=Ze("scrollContainerState"),u=o||r?s:i,a=ce("itemContent"),l=ce("context"),d=ce("groupContent"),v=ce("trackItemSizes"),h=ce("itemSize"),p=ce("log"),S=Ze("gap"),w=ce("horizontalDirection"),{callbackRef:c}=ui(n,h,v,e?jt:u,p,S,o,w,ce("skipAnimationFrameInResizeObserver")),[g,f]=m.useState(0);vr("deviation",E=>{g!==E&&f(E)});const C=ce("EmptyPlaceholder"),k=ce("ScrollSeekPlaceholder")||Ui,T=ce("ListComponent"),j=ce("ItemComponent"),x=ce("GroupComponent"),y=ce("computeItemKey"),_=ce("isSeeking"),I=ce("groupIndices").length>0,R=ce("alignToBottom"),O=ce("initialItemFinalLocationReached"),A=e?{}:{boxSizing:"border-box",...w?{display:"inline-block",height:"100%",marginLeft:g!==0?g:R?"auto":0,paddingLeft:t.offsetTop,paddingRight:t.offsetBottom,whiteSpace:"nowrap"}:{marginTop:g!==0?g:R?"auto":0,paddingBottom:t.offsetBottom,paddingTop:t.offsetTop},...O?{}:{visibility:"hidden"}};return!e&&t.totalCount===0&&C?b.jsx(C,{...Ne(C,l)}):b.jsx(T,{...Ne(T,l),"data-testid":e?"virtuoso-top-item-list":"virtuoso-item-list",ref:c,style:A,children:(e?t.topItems:t.items).map(E=>{const B=E.originalIndex,L=y(B+t.firstItemIndex,E.data,l);return _?m.createElement(k,{...Ne(k,l),height:E.size,index:E.index,key:L,type:E.type||"item",...E.type==="group"?{}:{groupIndex:E.groupIndex}}):E.type==="group"?m.createElement(x,{...Ne(x,l),"data-index":B,"data-item-index":E.index,"data-known-size":E.size,key:L,style:Ki},d(E.index,l)):m.createElement(j,{...Ne(j,l),...Ji(j,E.data),"data-index":B,"data-item-group-index":E.groupIndex,"data-item-index":E.index,"data-known-size":E.size,key:L,style:w?Xi:gs},I?a(E.index,E.groupIndex,E.data,l):a(E.index,E.data,l))})})}),Qi={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},Yi={outline:"none",overflowX:"auto",position:"relative"},xn=e=>({height:"100%",position:"absolute",top:0,width:"100%",...e?{display:"flex",flexDirection:"column"}:{}}),Zi={position:br(),top:0,width:"100%",zIndex:1};function Ne(e,t){if(typeof e!="string")return{context:t}}function Ji(e,t){return{item:typeof e=="string"?void 0:t}}const el=m.memo(function(){const e=ce("HeaderComponent"),t=Ze("headerHeight"),n=ce("HeaderFooterTag"),r=wt(m.useMemo(()=>s=>{t(gt(s,"height"))},[t]),!0,ce("skipAnimationFrameInResizeObserver")),o=ce("context");return e?b.jsx(n,{ref:r,children:b.jsx(e,{...Ne(e,o)})}):null}),tl=m.memo(function(){const e=ce("FooterComponent"),t=Ze("footerHeight"),n=ce("HeaderFooterTag"),r=wt(m.useMemo(()=>s=>{t(gt(s,"height"))},[t]),!0,ce("skipAnimationFrameInResizeObserver")),o=ce("context");return e?b.jsx(n,{ref:r,children:b.jsx(e,{...Ne(e,o)})}):null});function hs({useEmitter:e,useEmitterValue:t,usePublisher:n}){return m.memo(function({children:r,style:o,context:s,...i}){const u=n("scrollContainerState"),a=t("ScrollerComponent"),l=n("smoothScrollTargetReached"),d=t("scrollerRef"),v=t("horizontalDirection")||!1,{scrollByCallback:h,scrollerRef:p,scrollToCallback:S}=ps(u,l,a,d,void 0,v);return e("scrollTo",S),e("scrollBy",h),b.jsx(a,{"data-testid":"virtuoso-scroller","data-virtuoso-scroller":!0,ref:p,style:{...v?Yi:Qi,...o},tabIndex:0,...i,...Ne(a,s),children:r})})}function ms({useEmitter:e,useEmitterValue:t,usePublisher:n}){return m.memo(function({children:r,style:o,context:s,...i}){const u=n("windowScrollContainerState"),a=t("ScrollerComponent"),l=n("smoothScrollTargetReached"),d=t("totalListHeight"),v=t("deviation"),h=t("customScrollParent"),p=m.useRef(null),S=t("scrollerRef"),{scrollByCallback:w,scrollerRef:c,scrollToCallback:g}=ps(u,l,a,S,h);return fs(()=>{var f;return c.current=h||((f=p.current)==null?void 0:f.ownerDocument.defaultView),()=>{c.current=null}},[c,h]),e("windowScrollTo",g),e("scrollBy",w),b.jsx(a,{ref:p,"data-virtuoso-scroller":!0,style:{position:"relative",...o,...d!==0?{height:d+v}:{}},...i,...Ne(a,s),children:r})})}const nl=({children:e})=>{const t=m.useContext(us),n=Ze("viewportHeight"),r=Ze("fixedItemHeight"),o=ce("alignToBottom"),s=ce("horizontalDirection"),i=m.useMemo(()=>Fo(n,a=>gt(a,s?"width":"height")),[n,s]),u=wt(i,!0,ce("skipAnimationFrameInResizeObserver"));return m.useEffect(()=>{t&&(n(t.viewportHeight),r(t.itemHeight))},[t,n,r]),b.jsx("div",{"data-viewport-type":"element",ref:u,style:xn(o),children:e})},rl=({children:e})=>{const t=m.useContext(us),n=Ze("windowViewportRect"),r=Ze("fixedItemHeight"),o=ce("customScrollParent"),s=Wo(n,o,ce("skipAnimationFrameInResizeObserver")),i=ce("alignToBottom");return m.useEffect(()=>{t&&(r(t.itemHeight),n({offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:100}))},[t,n,r]),b.jsx("div",{"data-viewport-type":"window",ref:s,style:xn(i),children:e})},ol=({children:e})=>{const t=ce("TopItemListComponent")||"div",n=ce("headerHeight"),r={...Zi,marginTop:`${n}px`},o=ce("context");return b.jsx(t,{style:r,...Ne(t,o),children:e})},sl=m.memo(function(e){const t=ce("useWindowScroll"),n=ce("topItemsIndexes").length>0,r=ce("customScrollParent"),o=ce("context");return b.jsxs(r||t?al:ll,{...e,context:o,children:[n&&b.jsx(ol,{children:b.jsx($r,{showTopList:!0})}),b.jsxs(r||t?rl:nl,{children:[b.jsx(el,{}),b.jsx($r,{}),b.jsx(tl,{})]})]})}),{Component:il,useEmitter:vr,useEmitterValue:ce,usePublisher:Ze}=cs(qi,{required:{},optional:{restoreStateFrom:"restoreStateFrom",context:"context",followOutput:"followOutput",scrollIntoViewOnChange:"scrollIntoViewOnChange",itemContent:"itemContent",groupContent:"groupContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",minOverscanItemCount:"minOverscanItemCount",totalCount:"totalCount",groupCounts:"groupCounts",topItemCount:"topItemCount",firstItemIndex:"firstItemIndex",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedGroupHeight:"fixedGroupHeight",fixedItemHeight:"fixedItemHeight",heightEstimates:"heightEstimates",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"HeaderFooterTag",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",horizontalDirection:"horizontalDirection",skipAnimationFrameInResizeObserver:"skipAnimationFrameInResizeObserver"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy",autoscrollToBottom:"autoscrollToBottom",getState:"getState"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},sl),ll=hs({useEmitter:vr,useEmitterValue:ce,usePublisher:Ze}),al=ms({useEmitter:vr,useEmitterValue:ce,usePublisher:Ze}),cl=il,ul=be(()=>{const e=F(l=>b.jsxs("td",{children:["Item $",l]})),t=F(null),n=F(l=>b.jsxs("td",{colSpan:1e3,children:["Group ",l]})),r=F(null),o=F(null),s=F({}),i=F(xr),u=F(jt),a=(l,d=null)=>Fe(P(s,X(v=>v[l]),Ie()),d);return{components:s,computeItemKey:i,context:t,EmptyPlaceholder:a("EmptyPlaceholder"),FillerRow:a("FillerRow"),fixedFooterContent:o,fixedHeaderContent:r,itemContent:e,groupContent:n,ScrollerComponent:a("Scroller","div"),scrollerRef:u,ScrollSeekPlaceholder:a("ScrollSeekPlaceholder"),TableBodyComponent:a("TableBody","tbody"),TableComponent:a("Table","table"),TableFooterComponent:a("TableFoot","tfoot"),TableHeadComponent:a("TableHead","thead"),TableRowComponent:a("TableRow","tr"),GroupComponent:a("Group","tr")}});ke(as,ul);br();const qr={bottom:0,itemHeight:0,items:[],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},dl={bottom:0,itemHeight:0,items:[{index:0}],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},{ceil:Ur,floor:an,max:Pt,min:zn,round:Kr}=Math;function Xr(e,t,n){return Array.from({length:t-e+1}).map((r,o)=>({data:n===null?null:n[o+e],index:o+e}))}function fl(e){return{...dl,items:e}}function en(e,t){return e&&e.width===t.width&&e.height===t.height}function pl(e,t){return e&&e.column===t.column&&e.row===t.row}const gl=be(([{increaseViewportBy:e,listBoundary:t,overscan:n,visibleRange:r},{footerHeight:o,headerHeight:s,scrollBy:i,scrollContainerState:u,scrollTo:a,scrollTop:l,smoothScrollTargetReached:d,viewportHeight:v},h,p,{didMount:S,propsReady:w},{customScrollParent:c,useWindowScroll:g,windowScrollContainerState:f,windowScrollTo:C,windowViewportRect:k},T])=>{const j=F(0),x=F(0),y=F(qr),_=F({height:0,width:0}),I=F({height:0,width:0}),R=me(),O=me(),A=F(0),E=F(null),B=F({column:0,row:0}),L=me(),M=me(),N=F(!1),Y=F(0),ue=F(!0),ie=F(!1),ae=F(!1);ve(P(S,ge(Y),se(([z,H])=>!!H)),()=>{fe(ue,!1)}),ve(P(Be(S,ue,I,_,Y,ie),se(([z,H,Q,G,,ne])=>z&&!H&&Q.height!==0&&G.height!==0&&!ne)),([,,,,z])=>{fe(ie,!0),pr(1,()=>{fe(R,z)}),tt(P(l),()=>{fe(t,[0,0]),fe(ue,!0)})}),te(P(M,se(z=>z!=null&&z.scrollTop>0),st(0)),x),ve(P(S,ge(M),se(([,z])=>z!=null)),([,z])=>{z&&(fe(_,z.viewport),fe(I,z.item),fe(B,z.gap),z.scrollTop>0&&(fe(N,!0),tt(P(l,yt(1)),H=>{fe(N,!1)}),fe(a,{top:z.scrollTop})))}),te(P(_,X(({height:z})=>z)),v),te(P(Be(oe(_,en),oe(I,en),oe(B,(z,H)=>z&&z.column===H.column&&z.row===H.row),oe(l)),X(([z,H,Q,G])=>({gap:Q,item:H,scrollTop:G,viewport:z}))),L),te(P(Be(oe(j),r,oe(B,pl),oe(I,en),oe(_,en),oe(E),oe(x),oe(N),oe(ue),oe(Y)),se(([,,,,,,,z])=>!z),X(([z,[H,Q],G,ne,V,Z,ee,,J,le])=>{const{column:re,row:xe}=G,{height:pe,width:we}=ne,{width:Re}=V;if(ee===0&&(z===0||Re===0))return qr;if(we===0){const It=gr(le,z),Sn=It+Math.max(ee-1,0);return fl(Xr(It,Sn,Z))}const Ae=bs(Re,we,re);let je,Ge;J?H===0&&Q===0&&ee>0?(je=0,Ge=ee-1):(je=Ae*an((H+xe)/(pe+xe)),Ge=Ae*Ur((Q+xe)/(pe+xe))-1,Ge=zn(z-1,Pt(Ge,Ae-1)),je=zn(Ge,Pt(0,je))):(je=0,Ge=-1);const rt=Xr(je,Ge,Z),{bottom:qe,top:Oe}=Qr(V,G,ne,rt),et=Ur(z/Ae),Qe=et*pe+(et-1)*xe-qe;return{bottom:qe,itemHeight:pe,items:rt,itemWidth:we,offsetBottom:Qe,offsetTop:Oe,top:Oe}})),y),te(P(E,se(z=>z!==null),X(z=>z.length)),j),te(P(Be(_,I,y,B),se(([z,H,{items:Q}])=>Q.length>0&&H.height!==0&&z.height!==0),X(([z,H,{items:Q},G])=>{const{bottom:ne,top:V}=Qr(z,G,H,Q);return[V,ne]}),Ie(Ht)),t);const he=F(!1);te(P(l,ge(he),X(([z,H])=>H||z!==0)),he);const Te=Xe(P(Be(y,j),se(([{items:z}])=>z.length>0),ge(he),se(([[z,H],Q])=>{const G=z.items[z.items.length-1].index===H-1;return(Q||z.bottom>0&&z.itemHeight>0&&z.offsetBottom===0&&z.items.length===H)&&G}),X(([[,z]])=>z-1),Ie())),W=Xe(P(oe(y),se(({items:z})=>z.length>0&&z[0].index===0),st(0),Ie())),D=Xe(P(oe(y),ge(N),se(([{items:z},H])=>z.length>0&&!H),X(([{items:z}])=>({endIndex:z[z.length-1].index,startIndex:z[0].index})),Ie(Xo),ct(0)));te(D,p.scrollSeekRangeChanged),te(P(R,ge(_,I,j,B),X(([z,H,Q,G,ne])=>{const V=es(z),{align:Z,behavior:ee,offset:J}=V;let le=V.index;le==="LAST"&&(le=G-1),le=Pt(0,le,zn(G-1,le));let re=or(H,ne,Q,le);return Z==="end"?re=Kr(re-H.height+Q.height):Z==="center"&&(re=Kr(re-H.height/2+Q.height/2)),J&&(re+=J),{behavior:ee,top:re}})),a);const U=Fe(P(y,X(z=>z.offsetBottom+z.bottom)),0);return te(P(k,X(z=>({height:z.visibleHeight,width:z.visibleWidth}))),_),{customScrollParent:c,data:E,deviation:A,footerHeight:o,gap:B,headerHeight:s,increaseViewportBy:e,initialItemCount:x,itemDimensions:I,overscan:n,restoreStateFrom:M,scrollBy:i,scrollContainerState:u,scrollHeight:O,scrollTo:a,scrollToIndex:R,scrollTop:l,smoothScrollTargetReached:d,totalCount:j,useWindowScroll:g,viewportDimensions:_,windowScrollContainerState:f,windowScrollTo:C,windowViewportRect:k,...p,gridState:y,horizontalDirection:ae,initialTopMostItemIndex:Y,totalListHeight:U,...h,endReached:Te,propsReady:w,rangeChanged:D,startReached:W,stateChanged:L,stateRestoreInProgress:N,...T}},ke(hr,De,Xt,is,vt,mr,xt));function bs(e,t,n){return Pt(1,an((e+n)/(an(t)+n)))}function Qr(e,t,n,r){const{height:o}=n;if(o===void 0||r.length===0)return{bottom:0,top:0};const s=or(e,t,n,r[0].index);return{bottom:or(e,t,n,r[r.length-1].index)+o,top:s}}function or(e,t,n,r){const o=bs(e.width,n.width,t.column),s=an(r/o),i=s*n.height+Pt(0,s-1)*t.row;return i>0?i+t.row:i}const hl=be(()=>{const e=F(v=>`Item ${v}`),t=F({}),n=F(null),r=F("virtuoso-grid-item"),o=F("virtuoso-grid-list"),s=F(xr),i=F("div"),u=F(jt),a=(v,h=null)=>Fe(P(t,X(p=>p[v]),Ie()),h),l=F(!1),d=F(!1);return te(oe(d),l),{components:t,computeItemKey:s,context:n,FooterComponent:a("Footer"),HeaderComponent:a("Header"),headerFooterTag:i,itemClassName:r,ItemComponent:a("Item","div"),itemContent:e,listClassName:o,ListComponent:a("List","div"),readyStateChanged:l,reportReadyState:d,ScrollerComponent:a("Scroller","div"),scrollerRef:u,ScrollSeekPlaceholder:a("ScrollSeekPlaceholder","div")}}),ml=be(([e,t])=>({...e,...t}),ke(gl,hl)),bl=m.memo(function(){const e=_e("gridState"),t=_e("listClassName"),n=_e("itemClassName"),r=_e("itemContent"),o=_e("computeItemKey"),s=_e("isSeeking"),i=Je("scrollHeight"),u=_e("ItemComponent"),a=_e("ListComponent"),l=_e("ScrollSeekPlaceholder"),d=_e("context"),v=Je("itemDimensions"),h=Je("gap"),p=_e("log"),S=_e("stateRestoreInProgress"),w=Je("reportReadyState"),c=wt(m.useMemo(()=>g=>{const f=g.parentElement.parentElement.scrollHeight;i(f);const C=g.firstChild;if(C){const{height:k,width:T}=C.getBoundingClientRect();v({height:k,width:T})}h({column:Yr("column-gap",getComputedStyle(g).columnGap,p),row:Yr("row-gap",getComputedStyle(g).rowGap,p)})},[i,v,h,p]),!0,!1);return fs(()=>{e.itemHeight>0&&e.itemWidth>0&&w(!0)},[e]),S?null:b.jsx(a,{className:t,ref:c,...Ne(a,d),"data-testid":"virtuoso-item-list",style:{paddingBottom:e.offsetBottom,paddingTop:e.offsetTop},children:e.items.map(g=>{const f=o(g.index,g.data,d);return s?b.jsx(l,{...Ne(l,d),height:e.itemHeight,index:g.index,width:e.itemWidth},f):m.createElement(u,{...Ne(u,d),className:n,"data-index":g.index,key:f},r(g.index,g.data,d))})})}),xl=m.memo(function(){const e=_e("HeaderComponent"),t=Je("headerHeight"),n=_e("headerFooterTag"),r=wt(m.useMemo(()=>s=>{t(gt(s,"height"))},[t]),!0,!1),o=_e("context");return e?b.jsx(n,{ref:r,children:b.jsx(e,{...Ne(e,o)})}):null}),vl=m.memo(function(){const e=_e("FooterComponent"),t=Je("footerHeight"),n=_e("headerFooterTag"),r=wt(m.useMemo(()=>s=>{t(gt(s,"height"))},[t]),!0,!1),o=_e("context");return e?b.jsx(n,{ref:r,children:b.jsx(e,{...Ne(e,o)})}):null}),Sl=({children:e})=>{const t=m.useContext(ds),n=Je("itemDimensions"),r=Je("viewportDimensions"),o=wt(m.useMemo(()=>s=>{r(s.getBoundingClientRect())},[r]),!0,!1);return m.useEffect(()=>{t&&(r({height:t.viewportHeight,width:t.viewportWidth}),n({height:t.itemHeight,width:t.itemWidth}))},[t,r,n]),b.jsx("div",{ref:o,style:xn(!1),children:e})},yl=({children:e})=>{const t=m.useContext(ds),n=Je("windowViewportRect"),r=Je("itemDimensions"),o=_e("customScrollParent"),s=Wo(n,o,!1);return m.useEffect(()=>{t&&(r({height:t.itemHeight,width:t.itemWidth}),n({offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:t.viewportWidth}))},[t,n,r]),b.jsx("div",{ref:s,style:xn(!1),children:e})},wl=m.memo(function({...e}){const t=_e("useWindowScroll"),n=_e("customScrollParent"),r=n||t?Il:Cl,o=n||t?yl:Sl,s=_e("context");return b.jsx(r,{...e,...Ne(r,s),children:b.jsxs(o,{children:[b.jsx(xl,{}),b.jsx(bl,{}),b.jsx(vl,{})]})})}),{useEmitter:xs,useEmitterValue:_e,usePublisher:Je}=cs(ml,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",restoreStateFrom:"restoreStateFrom",initialTopMostItemIndex:"initialTopMostItemIndex",increaseViewportBy:"increaseViewportBy"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",stateChanged:"stateChanged",readyStateChanged:"readyStateChanged"}},wl),Cl=hs({useEmitter:xs,useEmitterValue:_e,usePublisher:Je}),Il=ms({useEmitter:xs,useEmitterValue:_e,usePublisher:Je});function Yr(e,t,n){return t!=="normal"&&!(t!=null&&t.endsWith("px"))&&n(`${e} was not resolved to pixel value correctly`,t,Ve.WARN),t==="normal"?0:parseInt(t??"0",10)}const vn=m.createContext(void 0);function ye(e,t){const n=m.useContext(vn);if(!n)throw new Error("useAudioStore must be used within CRAudioProvider");return qt(n,e,t)}function cn(){const e=m.useContext(vn);if(!e)throw new Error("useAudioStoreApi must be used within CRAudioProvider");return e}let vs=!1;function Ss(){return vs}function Zr(e){vs=e}const kl="_run_zzb61_3",Tl="_runWrap_zzb61_7",Rl="_highlight_zzb61_13",_l="_highlightleft_zzb61_14",Ml="_highlightright_zzb61_15",El="_highlightcenter_zzb61_16",jl="_underline_zzb61_48",Ol="_underlineleft_zzb61_49",zl="_underlineright_zzb61_50",Al="_underlinecenter_zzb61_51",ot={run:kl,runWrap:Tl,highlight:Rl,highlightleft:_l,highlightright:Ml,highlightcenter:El,underline:jl,underlineleft:Ol,underlineright:zl,underlinecenter:Al},Jr=e=>Symbol.iterator in e,eo=e=>"entries"in e,to=(e,t)=>{const n=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(n.size!==r.size)return!1;for(const[o,s]of n)if(!r.has(o)||!Object.is(s,r.get(o)))return!1;return!0},Bl=(e,t)=>{const n=e[Symbol.iterator](),r=t[Symbol.iterator]();let o=n.next(),s=r.next();for(;!o.done&&!s.done;){if(!Object.is(o.value,s.value))return!1;o=n.next(),s=r.next()}return!!o.done&&!!s.done};function Pl(e,t){return Object.is(e,t)?!0:typeof e!="object"||e===null||typeof t!="object"||t===null||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:Jr(e)&&Jr(t)?eo(e)&&eo(t)?to(e,t):Bl(e,t):to({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function Vt(e){const t=m.useRef(void 0);return n=>{const r=e(n);return Pl(t.current,r)?t.current:t.current=r}}function Ll(e){const t=e.replace("#",""),n=parseInt(t.length===3?t.repeat(2):t,16),r=n>>16&255,o=n>>8&255,s=n&255;return{r,g:o,b:s}}function Gl(e){const t=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);return t?{r:+t[1],g:+t[2],b:+t[3]}:null}const Hl=Object.freeze({showPointer:void 0,pointerStyle:void 0,pointerColor:void 0}),ys=m.memo(function({runs:t,ns:n,baseIndex:r,preGroups:o}){const s=ye(R=>R.setClipIndex),i=ye(R=>R.seek),u=q(R=>R.setCurrentGlobalRunIndex),a=cn(),l=q(R=>R.rangeStartGI),d=q(R=>R.rangeEndGI),v=q(R=>R.setRange),h=l!=null&&d!=null,p=m.useCallback(R=>{var Y;const O=(Y=R.target)==null?void 0:Y.closest("[data-g]");if(!O)return;const A=Number(O.dataset.g),E=A-r;if(E<0||E>=t.length)return;const B=t[E],L=B.text??"";if(!L.trim()||!/[가-힣a-zA-Z0-9]/.test(L))return;u(A,"program");const M=B.audioChunkIndex,N=B.audioTimeMs;M!=null&&N!=null&&(s(M),i(N))},[t,r,i,s,u]),S=m.useRef(null),w=m.useRef(!1),c=m.useRef({x:0,y:0}),g=m.useCallback(R=>{var B;const O=(B=R.target)==null?void 0:B.closest("[data-g]");if(!O)return;const A=Number(O.dataset.g),E=A-r;E<0||E>=t.length||(w.current=!1,c.current={x:R.clientX,y:R.clientY},S.current&&(window.clearTimeout(S.current),S.current=null),S.current=window.setTimeout(()=>{a.getState().status!=="playing"&&(v(A,A),w.current=!0,S.current=null)},800))},[t,r,v,a]),f=m.useCallback(()=>{S.current&&(window.clearTimeout(S.current),S.current=null)},[]),C=m.useCallback(R=>{if(!S.current)return;const O=R.clientX-c.current.x,A=R.clientY-c.current.y;(Math.abs(O)>5||Math.abs(A)>5)&&f()},[f]),k=m.useCallback(()=>{f()},[f]),T=f,j=f,x=q(R=>R.clearRange),y=m.useCallback(R=>{var E;if(w.current){w.current=!1;return}if(Ss())return;const O=(E=R.target)==null?void 0:E.closest("[data-g]");if(!O)return;const A=Number(O.dataset.g);isNaN(A)||h&&l!=null&&d!=null&&(x(),R.stopPropagation())},[h,l,d,x]),_=o,I=r+t.length-1;return b.jsx("span",{onClick:y,onDoubleClick:p,onPointerDown:g,onPointerMove:C,onPointerUp:k,onPointerCancel:T,onPointerLeave:j,children:_.map((R,O)=>b.jsx(Fl,{ns:n,group:R,runs:t,paraLastG:I,rangeStartGI:l,rangeEndGI:d},`${n}/grp:${O}-${R.startG}`))})},(e,t)=>e.ns===t.ns&&e.baseIndex===t.baseIndex&&e.runs===t.runs&&e.sectionId===t.sectionId),Nl=m.memo(function(){const t=m.useCallback(r=>({showSplit:r.showSplit,slash:r.breakMarks.slash,breakGapPx:r.breakGapPx}),[]),n=K(Vt(t));return n.showSplit?b.jsxs(b.Fragment,{children:[b.jsx("span",{style:{display:"inline-block",width:n.breakGapPx/2}}),n.slash&&b.jsx("span",{children:" / "}),b.jsx("span",{style:{display:"inline-block",width:n.breakGapPx/2}})]}):null}),Fl=m.memo(function({ns:t,group:n,runs:r,paraLastG:o,rangeStartGI:s,rangeEndGI:i}){const u=m.useCallback(c=>{const g=c.currentGlobalRunIndex;return g!=null&&g>=n.startG&&g<=n.endG},[n]),a=q(Vt(u)),l=m.useCallback(c=>a?{showPointer:c.showPointer,pointerStyle:c.pointerStyle,pointerColor:c.pointerColor}:Hl,[a]),d=K(Vt(l)),v=n.r0??0,h=n.len??Math.max(0,n.endG-n.startG+1),p=a&&d.showPointer&&d.pointerStyle!=="underline",S=a&&d.showPointer&&d.pointerStyle==="underline",w=p||S?{"--hl-color":d.pointerColor,"--ul-color":d.pointerColor,"--ul-thickness":"0.3em","--ul-offset":"0.35em"}:void 0;return b.jsx(b.Fragment,{children:Array.from({length:h}).map((c,g)=>{const C=r[v+g],k=n.startG+g,T=`${t}/run:${k}`,j=!!C.split&&k!==o;let x=`${ot.runWrap}`;return p&&(h===1?x+=` ${ot.highlight}`:g===0?x+=` ${ot.highlightleft}`:g+1===h?x+=` ${ot.highlightright}`:x+=` ${ot.highlightcenter}`),S&&(h===1?x+=` ${ot.underline}`:g===0?x+=` ${ot.underlineleft}`:g+1===h?x+=` ${ot.underlineright}`:x+=` ${ot.underlinecenter}`),b.jsxs(m.Fragment,{children:[b.jsx("span",{className:x,style:w,children:b.jsx(Dl,{gi:n.startG,g:k,run:C,active:a,pointerCfg:d,isInRange:s!=null&&i!=null&&k>=s&&k<=i})}),j&&b.jsx(Nl,{})]},T)})})},(e,t)=>e.group===t.group&&e.runs===t.runs&&e.ns===t.ns&&e.rangeStartGI===t.rangeStartGI&&e.rangeEndGI===t.rangeEndGI),Dl=m.memo(function({gi:t,g:n,run:r,active:o,pointerCfg:s,isInRange:i}){const u=m.useMemo(()=>{const a={whiteSpace:"pre-wrap"};if(r.bold&&(a.fontWeight=700),r.italic&&(a.fontStyle="italic"),r.underline&&(a.textDecoration="underline"),o&&s.showPointer){const l=s.pointerColor;if(s.pointerStyle!=="underline"){a.backgroundColor=l;const d=l.startsWith("#")?Ll(l):Gl(l);d&&(.299*d.r+.587*d.g+.114*d.b)/255<.6&&(a.color="#fff")}}return i&&(a.boxShadow="inset 0 0 0 100px rgba(59, 130, 246, 0.3)"),a},[r.bold,r.italic,r.underline,o,s,i]);return b.jsx("span",{className:ot.run,style:u,"data-g":n,"data-gi":t,"data-test":(r==null?void 0:r.audioChunkIndex)||-1,children:r.text||""})},(e,t)=>e.g===t.g&&e.run===t.run&&e.active===t.active&&e.pointerCfg===t.pointerCfg&&e.isInRange===t.isInRange);function Wl({block:e,computedMarker:t,ns:n,baseIndex:r,sectionId:o,preGroups:s}){var l;const i=e.list?e.list.level*24:0,u=((l=e.list)==null?void 0:l.kind)==="bullet"?e.list.glyph??"•":void 0,a=t??u;return b.jsxs("p",{style:{width:"100%",margin:"8px 0",paddingLeft:i,textAlign:e.textAlign,boxSizing:"border-box"},children:[e.list?b.jsx("span",{style:{minWidth:16,display:"inline-block",whiteSpace:"nowrap",userSelect:"none"},children:a||""}):null,b.jsx(ys,{preGroups:s,runs:e.runs,ns:n,baseIndex:r,sectionId:o})]})}const Vl=m.memo(Wl,(e,t)=>e.block===t.block&&e.computedMarker===t.computedMarker&&e.baseIndex===t.baseIndex&&e.ns===t.ns);function $l(e,t){switch((t||"decimal").toLowerCase().replace(/[\s_-]+/g,"")){case"decimal":return String(e);case"decimalleadingzero":return e<10?`0${e}`:String(e);case"loweralpha":case"lowerlatin":return ro(e,!1);case"upperalpha":case"upperlatin":return ro(e,!0);case"lowerroman":return no(e,!1);case"upperroman":return no(e,!0);case"decimalenclosedcircle":return ql(e);default:return String(e)}}function ql(e){return e>=1&&e<=20?String.fromCharCode(9312+(e-1)):`(${e})`}function no(e,t=!0){if(e<=0)return"";const n=[[1e3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50,"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]];let r=e,o="";for(const[s,i]of n)for(;r>=s;)o+=i,r-=s;return t?o:o.toLowerCase()}function ro(e,t=!1){let n=e,r="";for(;n>0;)n--,r=String.fromCharCode(97+n%26)+r,n=Math.floor(n/26);return t?r.toUpperCase():r}function Sr(e){const t=new Map;return{next(n,r){const o=`${n}-${r}`,s=(t.get(o)??0)+1;return t.set(o,s),s},reset(){t.clear()}}}function yr(e,t){const n=e.list;if(!n||n.kind!=="ordered")return;const r=t.next(n.numId??0,n.level),o=$l(r,n.format),s=(n.format||"").toLowerCase();return!/enclosed|paren/.test(s)&&s!=="decimalleadingzero"?`${o}.`:o}function Ul(e){return e.map(t=>t.type==="image"?0:t.runs.length)}function Kl(e){const t=new Array(e.length+1).fill(0);for(let n=0;n<e.length;n++)t[n+1]=t[n]+e[n];return t}function Xl(e,t){const n=[];if(!e.length)return n;const r=(o,s,i)=>{n.push({splitIndex:i??o,runs:e.slice(o,s+1),startG:t+o,endG:t+s})};for(let o=0;o<e.length;o++){const s=e[o].splitIndex;if(s===void 0){r(o,o,void 0);continue}let i=o+1;for(;i<e.length&&e[i].splitIndex===s;)i++;r(o,i-1,s),o=i-1}return n}const Ql="_scroller_kqkmq_3",Yl={scroller:Ql},Zl=m.forwardRef(function({className:t,style:n,...r},o){return b.jsx("div",{ref:o,className:`${Yl.scroller}${t?" "+t:""}`,style:n,...r})}),sr=e=>/[가-힣a-zA-Z0-9]/.test(e),Jl=e=>((e==null?void 0:e.textContent)??"").trim(),un=(e,t)=>e.querySelector(`[data-g="${t}"]`);function ea(e,t=12,n=1.5,r=.5){if(!e)return-1;const o=e.getBoundingClientRect(),s=o.top+t;let i=-1,u=1/0,a=1/0,l=-1,d=1/0,v=1/0;const h=e.querySelectorAll("[data-g]");for(let p=0;p<h.length;p++){const S=h[p];if(!S||!S.isConnected)continue;const w=Jl(S);if(!w||!sr(w))continue;const c=S.getBoundingClientRect();if(c.height<=r||c.width<=r||c.bottom<=o.top||c.top>=o.bottom)continue;if(c.top<s){const C=Math.abs(c.top-s);(C<d||C===d&&(c.top<v||l!==-1&&Number(S.dataset.g)<l))&&(d=C,l=Number(S.dataset.g),v=c.top);continue}const g=Number(S.dataset.g);if(Number.isNaN(g))continue;c.top<a-n?(a=c.top,u=c.top,i=g):c.top<=a+n&&(c.top<u||c.top===u&&(i===-1||g<i))&&(u=c.top,i=g);const f=Math.abs(c.top-s);(f<d||f===d&&(c.top<v||l!==-1&&g<l))&&(d=f,l=g,v=c.top)}return i!==-1?i:l}const ws=async(e,t,{timeoutMs:n=1200,intervalMs:r=16}={})=>{const o=performance.now();let s=un(e,t);for(;!s;){if(performance.now()-o>n)return null;await new Promise(i=>setTimeout(i,r)),s=un(e,t)}return s},Cs=e=>{const t=e.getBoundingClientRect(),n=t.top+t.height*.15,r=t.top+t.height*.8,o=Array.from(e.querySelectorAll("[data-g]"));let s=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;for(const u of o){const a=u.getBoundingClientRect();if(a.bottom<n||a.top>r||a.height<=0)continue;const l=Number(u.dataset.g);Number.isNaN(l)||(l<s&&(s=l),l>i&&(i=l))}return!Number.isFinite(s)||!Number.isFinite(i)?null:{first:s,last:i}},ta=(e,t,{topPaddingRatio:n=.15,behavior:r="auto"}={})=>{const o=un(e,t);if(!o)return!1;const s=e.getBoundingClientRect(),i=o.getBoundingClientRect(),u=s.height*n,a=i.top-(s.top+u);return e.scrollTo({top:e.scrollTop+a,behavior:r}),!0};function na(e,t=120){return new Promise(n=>{let r=null;const o=()=>{r!=null&&window.clearTimeout(r),r=window.setTimeout(()=>{e.removeEventListener("scroll",o,{capture:!0}),n()},t)};e.addEventListener("scroll",o,{passive:!0,capture:!0}),o()})}const oo=async(e,t,{topPaddingRatio:n=.15,behavior:r="smooth",quietMs:o=120}={})=>{if(!ta(e,t,{topPaddingRatio:n,behavior:r}))return!1;await na(e,o);const i=un(e,t);if(!i)return!1;const u=e.getBoundingClientRect(),a=i.getBoundingClientRect(),l=u.height*n,d=u.top+l,v=a.top-d;return Math.abs(v)<=1},pt=()=>new Promise(e=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>e())})}),wr=m.createContext(null);function Is(){const e=m.useContext(wr);if(!e)throw new Error("useQuizStoreApi must be used within QuizProgressProvider");return e}function Ue(e,t){const n=m.useContext(wr);if(!n)throw new Error("useQuizStore must be used within QuizProgressProvider");return qt(n,e,t)}const ks=()=>{const e=q(l=>l.section),t=Is(),n=Ue(l=>l.retryAllowed),r=Ue(l=>l.previousResult),o=r!=null,s=e.quizzes;if(!s||!s.length)return null;const i=o?n?`퀴즈 다시 풀기 (${s.length})`:"퀴즈 결과 보기":`퀴즈 풀기 (${s.length})`,u=o&&!n?"#64748b":"#2563eb",a=o&&!n?"0 6px 16px rgba(100,116,139,0.3)":"0 6px 16px rgba(37,99,235,0.3)";return b.jsxs("button",{onClick:()=>{t.getState().openFromSection(e)},style:{width:300,background:u,color:"white",border:"none",borderRadius:"10px",padding:"14px 28px",fontSize:"16px",fontWeight:600,cursor:"pointer",boxShadow:a,transition:"all 0.15s ease"},children:[i,o&&!n&&b.jsxs("div",{style:{fontSize:"12px",fontWeight:400,marginTop:"4px",opacity:.8},children:["이미 풀었습니다 (",r.rate,"%)"]})]})},ra="_navBtn_1fciy_2",oa="_disabled_1fciy_26",sa="_label_1fciy_32",Mt={navBtn:ra,disabled:oa,label:sa};var Ts={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},so=m.createContext&&m.createContext(Ts),ia=["attr","size","title"];function la(e,t){if(e==null)return{};var n=aa(e,t),r,o;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(o=0;o<s.length;o++)r=s[o],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function aa(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function dn(){return dn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},dn.apply(this,arguments)}function io(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function fn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?io(Object(n),!0).forEach(function(r){ca(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):io(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function ca(e,t,n){return t=ua(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ua(e){var t=da(e,"string");return typeof t=="symbol"?t:t+""}function da(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Rs(e){return e&&e.map((t,n)=>m.createElement(t.tag,fn({key:n},t.attr),Rs(t.child)))}function $e(e){return t=>m.createElement(fa,dn({attr:fn({},e.attr)},t),Rs(e.child))}function fa(e){var t=n=>{var{attr:r,size:o,title:s}=e,i=la(e,ia),u=o||n.size||"1em",a;return n.className&&(a=n.className),e.className&&(a=(a?a+" ":"")+e.className),m.createElement("svg",dn({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},n.attr,r,i,{className:a,style:fn(fn({color:e.color||n.color},n.style),e.style),height:u,width:u,xmlns:"http://www.w3.org/2000/svg"}),s&&m.createElement("title",null,s),e.children)};return so!==void 0?m.createElement(so.Consumer,null,n=>t(n)):t(Ts)}function lo(e){return $e({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M18.464 2.114a.998.998 0 0 0-1.033.063l-13 9a1.003 1.003 0 0 0 0 1.645l13 9A1 1 0 0 0 19 21V3a1 1 0 0 0-.536-.886zM17 19.091 6.757 12 17 4.909v14.182z"},child:[]}]})(e)}function ao(e){return $e({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M5.536 21.886a1.004 1.004 0 0 0 1.033-.064l13-9a1 1 0 0 0 0-1.644l-13-9A.998.998 0 0 0 5 3v18a1 1 0 0 0 .536.886zM7 4.909 17.243 12 7 19.091V4.909z"},child:[]}]})(e)}const pa=({isIcon:e=!0})=>{const t=q(i=>i.isCanPrev),n=q(i=>i.onSectionNav),r=!t,o=m.useCallback(i=>{i.stopPropagation(),i.preventDefault(),t&&(n==null||n("prev"))},[t,n]),s=t?"이전 섹션으로":"이전 섹션 없음";return e?b.jsxs("button",{type:"button",className:`${Mt.navBtn} ${r?Mt.disabled:""}`,disabled:r,title:s,onMouseDown:o,onClick:i=>i.stopPropagation(),onKeyDown:i=>{(i.key==="Enter"||i.key===" ")&&o(i)},children:[b.jsx(lo,{size:18}),b.jsx("span",{className:Mt.label,children:"이전"})]}):b.jsx("button",{type:"button",disabled:r,title:s,onClick:o,onKeyDown:i=>{(i.key==="Enter"||i.key===" ")&&o(i)},style:{width:300,background:r?"#9ca3af":"#2563eb",color:"white",border:"none",borderRadius:"10px",padding:"14px 28px",fontSize:"16px",fontWeight:600,cursor:r?"not-allowed":"pointer",boxShadow:r?"none":"0 6px 16px rgba(37,99,235,0.3)",transition:"all 0.15s ease",opacity:r?.5:1},children:r?"첫섹션입니다":b.jsxs(b.Fragment,{children:[b.jsx(lo,{size:18,style:{display:"inline",marginRight:"8px",verticalAlign:"middle"}}),"PrevSection"]})})},pn=({isIcon:e=!0})=>{const t=q(i=>i.isCanNext),n=q(i=>i.onSectionNav),r=!t,o=m.useCallback(i=>{i.stopPropagation(),i.preventDefault(),t&&(n==null||n("next"))},[t,n]),s=t?"다음 섹션으로":"다음 섹션 없음";return e?b.jsxs("button",{type:"button",className:`${Mt.navBtn} ${r?Mt.disabled:""}`,disabled:r,title:s,onMouseDown:o,onClick:i=>i.stopPropagation(),onKeyDown:i=>{(i.key==="Enter"||i.key===" ")&&o(i)},children:[b.jsx(ao,{size:18}),b.jsx("span",{className:Mt.label,children:"다음"})]}):b.jsx("button",{type:"button",disabled:r,title:s,onClick:o,onKeyDown:i=>{(i.key==="Enter"||i.key===" ")&&o(i)},style:{width:300,background:r?"#9ca3af":"#2563eb",color:"white",border:"none",borderRadius:"10px",padding:"14px 28px",fontSize:"16px",fontWeight:600,cursor:r?"not-allowed":"pointer",boxShadow:r?"none":"0 6px 16px rgba(37,99,235,0.3)",transition:"all 0.15s ease",opacity:r?.5:1},children:r?"마지막섹션입니다":b.jsxs(b.Fragment,{children:["NextSection",b.jsx(ao,{size:18,style:{display:"inline",marginLeft:"8px",verticalAlign:"middle"}})]})})};function _s(e,t){let n=0,r=e.length-1;for(;n<r;){const o=Math.floor((n+r+1)/2);e[o]<=t?n=o:r=o-1}return n}function co(e,t,n=.2,r=.8){const o=e.querySelector(`[data-g="${t}"]`);if(!o)return!1;const s=e.getBoundingClientRect(),i=o.getBoundingClientRect();if(i.height<=0||s.height<=0)return!1;const u=(i.top+i.height/2-s.top)/s.height;return u>=n&&u<=r}const ga=e=>e==="instant"?"auto":e;function ha(e){const{sc:t,virtRef:n,prefix:r,recorderStoreApi:o,programmaticScrollRef:s,scrollToGISeqRef:i}=e,u=f=>{const C=t.scrollTop,k=t.scrollHeight-t.clientHeight,T=k>0?C/k:0;let j=0;const x=t.querySelector(`[data-g="${f}"]`);if(x){const y=t.getBoundingClientRect(),_=x.getBoundingClientRect(),I=y.height>0?y.height/t.clientHeight:1,R=(_.top-y.top)/I/t.clientHeight;j=Math.max(0,Math.min(R,1))}o.getState().emit({type:"scroll",payload:{scrollTop:C,scrollRatio:T,anchorGI:f,anchorOffsetRatio:j}})},a=async(f,C="smooth")=>{var T;const k=_s(r,f);(T=n.current)==null||T.scrollToIndex({index:k,align:"start",behavior:ga(C)}),await ws(t,f)},l=()=>new Promise(f=>requestAnimationFrame(()=>f())),d=async f=>{if(co(t,f,.1,.7))return u(f),!0;s.current=!0;const C=t.querySelector(`[data-g="${f}"]`),k=t.getBoundingClientRect();let T=t.scrollTop<=1?0:.1;if(C){const x=C.getBoundingClientRect();T=((x.top+x.height/2-k.top)/k.height>.5,.15)}return!!C?(await oo(t,f,{behavior:"smooth",topPaddingRatio:T}),await l()):(await a(f,"auto"),await oo(t,f,{behavior:"auto",topPaddingRatio:.15})),s.current=!1,u(f),co(t,f,.1,.7)};return{ensureVisibleGI:d,scrollToGI:async f=>d(f),getVisibleRange:()=>Cs(t),getScrollTop:()=>t.scrollTop,setScrollTop:f=>{var C;(C=n.current)==null||C.scrollTo({top:f})},getAnchorOffsetRatio:f=>{const C=t.querySelector(`[data-g="${f}"]`);if(!C)return 0;const k=C.getBoundingClientRect(),T=t.getBoundingClientRect(),j=T.height>0?T.height/t.clientHeight:1;return(k.top-T.top)/j/t.clientHeight},scrollToGIAtOffset:async(f,C)=>{var j,x;const k=t.querySelector(`[data-g="${f}"]`);if(k){const y=k.getBoundingClientRect(),_=t.getBoundingClientRect(),I=_.height>0?_.height/t.clientHeight:1,R=(y.top-_.top)/I,O=C*t.clientHeight;if(Math.abs(R-O)<=3)return}const T=++i.current;s.current=!0;try{const y=()=>new Promise(R=>requestAnimationFrame(()=>R())),_=()=>{const R=t.querySelector(`[data-g="${f}"]`);if(!R)return null;const O=R.getBoundingClientRect(),A=t.getBoundingClientRect(),E=A.height>0?A.height/t.clientHeight:1,B=(O.top-A.top)/E,L=C*t.clientHeight;return{delta:B-L,cur:B,tgt:L}};if(T!==i.current||(await a(f,"auto"),T!==i.current)||(await y(),await y(),await y(),T!==i.current))return;const I=_();if(I&&Math.abs(I.delta)>1){if((j=n.current)==null||j.scrollBy({top:I.delta}),await y(),T!==i.current)return;for(let R=0;R<3;R++){const O=_();if(!O||Math.abs(O.delta)<=2)break;if((x=n.current)==null||x.scrollBy({top:O.delta}),await y(),T!==i.current)return}}}finally{T===i.current&&(s.current=!1)}},getScrollRatio:()=>{const f=t.scrollHeight-t.clientHeight;return f>0?t.scrollTop/f:0}}}const ma=({scrollContainerRef:e,virtRef:t,prefix:n})=>{const r=q(M=>M.setCurrentGlobalRunIndex),o=q(M=>M.registerSectionScrollApi),s=ye(M=>M.scrollLock),i=ye(M=>M.syncToGI),u=mt(),a=ut(),l=Go(M=>M.isPlaybackMode),d=m.useRef(!1),v=m.useRef(null),h=m.useRef(null),p=m.useRef(0),S=m.useRef(null),w=m.useRef(-1),c=m.useCallback(()=>{if(l||s)return;v.current=null;const M=h.current;if(!M)return;const N=ea(M,5);N!==-1&&N!==w.current&&(w.current=N,i(N))},[l,s,i]),g=m.useCallback(M=>{h.current=M,v.current==null&&(v.current=requestAnimationFrame(c))},[c]),f=m.useCallback(M=>{var ue;h.current=M,(ue=S.current)==null||ue.abort();const N=new AbortController;S.current=N,new Promise(ie=>{"onscrollend"in M?M.addEventListener("scrollend",()=>ie(),{once:!0}):setTimeout(ie,150)}).then(()=>{if(N.signal.aborted)return;S.current=null,c();const ie=w.current;ie!==-1&&r(ie,"scroll"),requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(N.signal.aborted)return;const ae=w.current;if(ae===-1)return;const he=M.scrollTop,Te=M.scrollHeight-M.clientHeight,W=Te>0?he/Te:0;let D=0;const U=M.querySelector(`[data-g="${ae}"]`);if(U){const z=M.getBoundingClientRect(),H=U.getBoundingClientRect(),Q=z.height>0?z.height/M.clientHeight:1,G=(H.top-z.top)/Q/M.clientHeight;D=Math.max(0,Math.min(G,1))}u.getState().emit({type:"scroll",payload:{scrollTop:he,scrollRatio:W,anchorGI:ae,anchorOffsetRatio:D}})})})})},[c,u,r]),C=m.useRef(!1),k=m.useCallback(M=>{l||s||d.current&&(C.current||(g(M),f(M)))},[l,s,g,f]),T=m.useRef(void 0),j=m.useRef(void 0),x=m.useRef(void 0),y=m.useRef(void 0);m.useEffect(()=>{const M=e.current;if(M)return T.current=()=>{d.current=!0},j.current=()=>{d.current=!0},x.current=()=>{d.current=!0},y.current=()=>k(M),M.addEventListener("wheel",T.current,{passive:!0}),M.addEventListener("touchmove",j.current,{passive:!0}),window.addEventListener("keydown",x.current,{passive:!0}),M.addEventListener("scroll",y.current,{passive:!0}),()=>{var N;M.removeEventListener("wheel",T.current),M.removeEventListener("touchmove",j.current),window.removeEventListener("keydown",x.current),M.removeEventListener("scroll",y.current),v.current!=null&&cancelAnimationFrame(v.current),(N=S.current)==null||N.abort()}},[k,e]),m.useEffect(()=>{const M=e.current;if(!M||!s)return;const N=ae=>{ae.preventDefault(),ae.stopPropagation(),d.current=!1},Y=ae=>{ae.preventDefault(),ae.stopPropagation(),d.current=!1},ue=ae=>{["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(ae.key)&&(ae.preventDefault(),ae.stopPropagation(),d.current=!1)},ie={overscrollBehavior:M.style.overscrollBehavior,touchAction:M.style.touchAction};return M.style.overscrollBehavior="contain",M.style.touchAction="none",M.addEventListener("wheel",N,{passive:!1}),M.addEventListener("touchmove",Y,{passive:!1}),window.addEventListener("keydown",ue,{passive:!1}),()=>{M.removeEventListener("wheel",N),M.removeEventListener("touchmove",Y),window.removeEventListener("keydown",ue),M.style.overscrollBehavior=ie.overscrollBehavior,M.style.touchAction=ie.touchAction}},[s,e]);const _=m.useRef({first:-1,last:-1}),I=m.useRef(!1),R=m.useCallback(()=>{const M=e.current;if(!M)return;const N=Cs(M),Y=(N==null?void 0:N.first)??-1,ue=(N==null?void 0:N.last)??-1;_.current={first:Y,last:ue}},[e]),O=m.useRef(!1),A=m.useCallback(()=>{const M=e.current;if(!M||O.current)return;O.current=!0;const N=Math.min(M.scrollTop+Math.floor(M.clientHeight*.6),M.scrollHeight-M.clientHeight);requestAnimationFrame(()=>{M.scrollTo({top:N,behavior:"instant"})})},[e]);m.useEffect(()=>{!I.current&&s&&(O.current=!1,R()),I.current=s},[s,R]);const E=m.useRef(0),B=m.useRef(0);m.useEffect(()=>{if(!s||l)return;const M=Y=>{const ue=e.current;if(!ue)return;const{first:ie,last:ae}=_.current;if(ie===-1||ae===-1){A();return}const he=ue.querySelector(`[data-g="${Y}"]`);if(he){const W=ue.getBoundingClientRect(),D=he.getBoundingClientRect();if(W.height>0){const U=(D.top-W.top)/W.height,z=(D.bottom-W.top)/W.height;if(U>=.02&&z<=.95){R();return}}}const Te=++E.current;window.clearTimeout(B.current),B.current=window.setTimeout(()=>{if(Te!==E.current)return;const W=a.getState().progress.getSectionScrollApi();W?W.ensureVisibleGI(Y).then(D=>{Te===E.current&&(D?R():A())}):A()},80)};M(a.getState().progress.currentGlobalRunIndex);const N=a.subscribe((Y,ue)=>{const ie=Y.progress.currentGlobalRunIndex;ie!==ue.progress.currentGlobalRunIndex&&M(ie)});return()=>{N(),E.current+=1;const Y=B.current;window.clearTimeout(Y)}},[s,l,A,R,e,a]);const L=m.useCallback(()=>{const M=e.current;if(M)return ha({sc:M,virtRef:t,prefix:n,recorderStoreApi:u,programmaticScrollRef:C,scrollToGISeqRef:p})},[e,t,n,u]);return m.useEffect(()=>(o(L()),()=>o(void 0)),[L,o]),null};function ba({section:e,blocks:t,nsPrefix:n}){const r=m.useMemo(()=>{const I=[],R=Sr();return t.forEach((O,A)=>{O.type==="paragraph"&&(I[A]=yr(O,R))}),I},[t]),o=q(I=>{var R;return((R=I.layout)==null?void 0:R.prefix)??[]}),s=q(I=>{var R;return((R=I.derivedNav)==null?void 0:R.splitGroupsPerBlock)??[]}),i=K(I=>I.marginX),u=K(I=>I.viewportHeight),a=m.useRef({start:0,end:0}),l=m.useCallback(I=>{const R=t[I],O=`${n}blk-${R.id}`;if(R.type==="image"){const{src:B,alt:L,width:M,height:N}=R,Y=M&&N?`${M} / ${N}`:"4 / 3",ue=I>=a.current.start&&I<=a.current.end,ie=u>80?Math.floor((u-80)*.6):void 0;return b.jsxs("div",{style:{margin:"12px 0",textAlign:"center",width:"100%"},children:[b.jsx("div",{style:{position:"relative",width:"100%",maxHeight:ie,aspectRatio:Y},children:b.jsx("img",{src:B,alt:L||"",loading:ue?"eager":"lazy",style:{pointerEvents:"none",position:"absolute",inset:0,width:"100%",height:"100%",objectFit:"contain",display:"block"}})}),L&&b.jsx("div",{style:{fontSize:12,color:"#6b7280",marginTop:4},children:L})]})}const A=r[I]??void 0,E=s[I];return b.jsx("div",{style:{maxWidth:860,display:"flex"},children:b.jsx(Vl,{block:R,computedMarker:A,ns:O,baseIndex:o[I],sectionId:e.section_id,preGroups:E})})},[t,r,o,n,e,s,u]),d=m.useRef(null),v=m.useCallback(I=>{d.current=I},[]),h=m.useMemo(()=>m.memo(I=>{const{style:R,children:O,...A}=I;return b.jsx("div",{...A,style:R,children:b.jsx("div",{style:{boxSizing:"border-box",paddingRight:`${i}px`,paddingLeft:`${i}px`,maxWidth:860,margin:"0 auto",width:"100%",height:"100%"},children:O})})}),[i]),p=m.useRef(null),S=m.useMemo(()=>t.map(I=>I.id),[t]),w=Go(I=>I.isPlaybackMode),[c,g]=m.useState(!1);m.useEffect(()=>{g(w)},[t,w]);const f=m.useCallback(()=>{g(!0)},[]),C=m.useCallback(()=>{const I=Math.max(80,Math.floor(u*.5));if(!c)return b.jsx("div",{style:{height:I}});const R=e.quizzes;return R&&R.length?b.jsxs("div",{style:{display:"block"},children:[b.jsx("div",{style:{display:"flex",justifyContent:"center",marginTop:20},children:b.jsx(ks,{})}),b.jsx("div",{style:{display:"flex",justifyContent:"center",marginTop:20},children:b.jsx(pn,{isIcon:!1})}),b.jsx("div",{style:{height:I,width:"100%"}})]}):b.jsxs("div",{children:[b.jsx("div",{style:{display:"flex",justifyContent:"center",marginTop:20},children:b.jsx(pn,{isIcon:!1})}),b.jsx("div",{style:{height:I}})]})},[c,e,u]),k=m.useMemo(()=>({Item:h,Header:()=>b.jsx("div",{style:{height:40}}),Footer:C,Scroller:Zl}),[C,h]),T=m.useCallback(I=>S[I],[S]),j=ut(),[x]=m.useState(()=>j.getState().progress.currentGlobalRunIndex??0),y=m.useMemo(()=>{if(!o.length)return 0;const I=o[o.length-1],R=Math.max(0,Math.min(x,I));return _s(o,R)},[o,x]),_=ut();return m.useEffect(()=>{let I=!1;return(async()=>{let R=d.current;if(!R){for(let B=0;B<20;B++){if(await new Promise(L=>setTimeout(L,50)),I)return;if(R=d.current,R)break}if(!R)return}const O=_.getState().progress.currentGlobalRunIndex,A=_.getState().progress.setSectionLoading,E=O!=null&&O>=0?O:0;await ws(R,E),!I&&(await pt(),await pt(),await pt(),await pt(),!I&&A(!1))})(),()=>{I=!0}},[d,_]),b.jsxs(b.Fragment,{children:[b.jsx(cl,{ref:p,style:{height:"100%",width:"100%",boxSizing:"border-box"},defaultItemHeight:99,computeItemKey:T,totalCount:t.length,itemContent:l,initialTopMostItemIndex:y,increaseViewportBy:{top:100,bottom:100},endReached:f,components:k,scrollerRef:v}),b.jsx(ma,{scrollContainerRef:d,virtRef:p,prefix:o})]})}function xa(e){var r,o;const t=e;if(!t)return!1;const n=((o=(r=t.tagName)==null?void 0:r.toLowerCase)==null?void 0:o.call(r))??"";return!!(["a","button","input","textarea","select","label"].includes(n)||t.isContentEditable)}function va(){const e=q(S=>S.section),t=K(S=>S.theme),n=K(S=>S.fontFamily),r=K(S=>S.fontSizePx),o=K(S=>S.lineHeight),s=sn[t],{blocks:i,nsPrefix:u}=m.useMemo(()=>({sectionId:e.section_id,blocks:e.ast.blocks,nsPrefix:`sec-${e.section_id??"0"}/`}),[e]),a=gn(),l=m.useCallback(()=>{const{isSettingsOpen:S,setSettingsOpen:w,toggleOverlays:c}=a.getState();S?w(!1):c()},[a]),{onClick:d,onDoubleClick:v}=Ys({onSingle:l,onDouble:()=>{},delay:250,shouldIgnoreTarget:xa}),h=m.useMemo(()=>({flex:1,fontFamily:n,background:s.bg,color:s.fg,fontSize:r,lineHeight:o,overflow:"hidden",WebkitTextSizeAdjust:"none",MozTextSizeAdjust:"none",textSizeAdjust:"none"}),[n,s.bg,s.fg,r,o]),p=m.useMemo(()=>({margin:"0 auto",width:"100%",height:"100%"}),[]);return b.jsx("div",{onClick:d,onDoubleClick:v,style:h,children:b.jsx("div",{style:p,children:b.jsx(ba,{section:e,blocks:i,nsPrefix:u})})})}function Sa(e){return $e({attr:{viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M9.383 3.076A1 1 0 0110 4v12a1 1 0 01-1.707.707L4.586 13H2a1 1 0 01-1-1V8a1 1 0 011-1h2.586l3.707-3.707a1 1 0 011.09-.217zM12.293 7.293a1 1 0 011.414 0L15 8.586l1.293-1.293a1 1 0 111.414 1.414L16.414 10l1.293 1.293a1 1 0 01-1.414 1.414L15 11.414l-1.293 1.293a1 1 0 01-1.414-1.414L13.586 10l-1.293-1.293a1 1 0 010-1.414z",clipRule:"evenodd"},child:[]}]})(e)}function ya(e){return $e({attr:{viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M9.383 3.076A1 1 0 0110 4v12a1 1 0 01-1.707.707L4.586 13H2a1 1 0 01-1-1V8a1 1 0 011-1h2.586l3.707-3.707a1 1 0 011.09-.217zM14.657 2.929a1 1 0 011.414 0A9.972 9.972 0 0119 10a9.972 9.972 0 01-2.929 7.071 1 1 0 01-1.414-1.414A7.971 7.971 0 0017 10c0-2.21-.894-4.208-2.343-5.657a1 1 0 010-1.414zm-2.829 2.828a1 1 0 011.415 0A5.983 5.983 0 0115 10a5.984 5.984 0 01-1.757 4.243 1 1 0 01-1.415-1.415A3.984 3.984 0 0013 10a3.983 3.983 0 00-1.172-2.828 1 1 0 010-1.415z",clipRule:"evenodd"},child:[]}]})(e)}function wa(e){return $e({attr:{viewBox:"0 0 544 512"},child:[{tag:"path",attr:{d:"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z"},child:[]}]})(e)}function Ca(e){return $e({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"},child:[]},{tag:"path",attr:{d:"M9.64 7.64c.23-.5.36-1.05.36-1.64 0-2.21-1.79-4-4-4S2 3.79 2 6s1.79 4 4 4c.59 0 1.14-.13 1.64-.36L10 12l-2.36 2.36C7.14 14.13 6.59 14 6 14c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4c0-.59-.13-1.14-.36-1.64L12 14l7 7h3v-1L9.64 7.64zM6 8c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm0 12c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm6-7.5c-.28 0-.5-.22-.5-.5s.22-.5.5-.5.5.22.5.5-.22.5-.5.5zM19 3l-6 6 2 2 7-7V3h-3z"},child:[]}]})(e)}function Ia(e){return $e({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z",opacity:".87"},child:[]},{tag:"path",attr:{d:"M17.51 3.87 15.73 2.1 5.84 12l9.9 9.9 1.77-1.77L9.38 12l8.13-8.13z"},child:[]}]})(e)}function ka(e){return $e({attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0"},child:[]},{tag:"path",attr:{d:"M12 18c-.328 0 -.652 -.017 -.97 -.05c-3.172 -.332 -5.85 -2.315 -8.03 -5.95c2.4 -4 5.4 -6 9 -6c3.465 0 6.374 1.853 8.727 5.558"},child:[]},{tag:"path",attr:{d:"M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"},child:[]},{tag:"path",attr:{d:"M20.2 20.2l1.8 1.8"},child:[]}]})(e)}function Ta(e){return $e({attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"},child:[]},{tag:"path",attr:{d:"M4 8v-2a2 2 0 0 1 2 -2h2"},child:[]},{tag:"path",attr:{d:"M4 16v2a2 2 0 0 0 2 2h2"},child:[]},{tag:"path",attr:{d:"M16 4h2a2 2 0 0 1 2 2v2"},child:[]},{tag:"path",attr:{d:"M16 20h2a2 2 0 0 0 2 -2v-2"},child:[]}]})(e)}const Ra="_wrap_1hfub_4",_a="_visible_1hfub_25",Ma="_compact_1hfub_31",Ea="_row2_1hfub_34",ja="_controls_1hfub_44",Oa="_row1_1hfub_52",za="_groupExpand_1hfub_80",Aa="_groupPlayback_1hfub_81",Ba="_groupSpeed_1hfub_82",Pa="_groupFeatures_1hfub_83",La="_groupNav_1hfub_84",Ga="_btn_1hfub_116",Ha="_btnForbidden_1hfub_141",Na="_btnActive_1hfub_147",Fa="_label_1hfub_158",Da="_compactBtn_1hfub_168",Ce={wrap:Ra,visible:_a,compact:Ma,row2:Ea,controls:ja,row1:Oa,groupExpand:za,groupPlayback:Aa,groupSpeed:Ba,groupFeatures:Pa,groupNav:La,btn:Ga,btnForbidden:Ha,btnActive:Na,label:Fa,compactBtn:Da},Wa=m.memo(function(){const t=m.useRef(null),n=m.useContext(ht),r=(n==null?void 0:n.getState().isPlaybackMode)??!1,o=ye(y=>y.status),s=ye(y=>y.currentTimeMs),i=ye(y=>y.currentClip),u=ye(y=>y.playbackKind),a=K(y=>y.muteAudio),l=K(y=>y.audioSpeed),d=ye(y=>y.getClipSrc),v=ye(y=>y._onTime),h=ye(y=>y._onEnded),p=ye(y=>y._onError),S=q(y=>y.setCurrentGlobalRunIndex),w=q(y=>y.getSectionScrollApi),c=q(y=>y.snapToReadable),g=q(y=>y.edgeReadable),f=m.useRef(null),C=m.useRef(null),k=m.useRef(!1),T=m.useRef(null);m.useEffect(()=>{u==="real"&&(k.current=!0)},[u]);const j=m.useMemo(()=>{const y=d(i);if(!y)return null;try{return new URL(y,window.location.href).href}catch{return y}},[i,d]);m.useEffect(()=>{k.current=!0},[j]),m.useEffect(()=>{const y=t.current;if(!y)return;const _=()=>{if(y.paused||y.ended)return;const O=y.currentTime*1e3;k.current&&O===0||(O>0&&(k.current=!1),v(O))},I=()=>{var A,E;h();const O=g(1);typeof O=="number"&&O>=0&&(S(O,"audio"),(E=(A=w())==null?void 0:A.ensureVisibleGI)==null||E.call(A,O))},R=O=>{const A=O.currentTarget;console.warn("Audio error",{networkState:A.networkState,readyState:A.readyState}),p()};return y.addEventListener("timeupdate",_),y.addEventListener("ended",I),y.addEventListener("error",R),()=>{y.removeEventListener("timeupdate",_),y.removeEventListener("ended",I),y.removeEventListener("error",R)}},[v,h,p,g,S,w]),m.useEffect(()=>{if(r)return;const y=t.current;if(!y)return;if(!j){try{y.pause()}catch(O){console.log("pause error",O)}C.current=null;return}const _=y.currentSrc||y.src||null,I=!_||_!==j;if(I){try{y.pause()}catch(O){console.log("pause error",O)}y.src=j;try{y.load()}catch(O){console.log("load error",O)}C.current=j}y.muted=!!a,y.volume=1,y.playbackRate=typeof l=="number"?l:1;const R=async()=>{I&&await new Promise(O=>{let A=!1;const E=()=>{A||(A=!0,y.removeEventListener("loadedmetadata",E),y.removeEventListener("canplay",E),O())};y.addEventListener("loadedmetadata",E),y.addEventListener("canplay",E),y.readyState>=1&&E()});try{await y.play()}catch(O){console.warn("el.play() failed",O)}};if(o==="loading"||o==="playing")R();else try{y.pause()}catch(O){console.log("pause error",O)}},[j,a,o,l,r]),m.useEffect(()=>{if(r)return;const y=t.current;if(!y||u!=="real")return;const _=s/1e3;if(Number.isFinite(_)){if(y.readyState<1){f.current=s;const I=()=>{if(f.current!=null){const R=f.current/1e3;try{y.currentTime=R}catch(O){console.log("currentTime보정 오류",O)}f.current=null}y.removeEventListener("loadedmetadata",I),y.removeEventListener("canplay",I)};y.addEventListener("loadedmetadata",I),y.addEventListener("canplay",I);return}if(Math.abs(y.currentTime-_)>.2)try{y.currentTime=_}catch(I){console.log("currentTime보정오류",I)}}},[s,u,r]);const x=ye(y=>y.getGIFromCT);return m.useEffect(()=>{var I,R;if(r||u!=="real"||o!=="playing"&&o!=="loading")return;const y=x(i,s);if(y<0)return;const _=c(y);_!==T.current&&(T.current=_,S(_,"audio"),_%5===0&&((R=(I=w())==null?void 0:I.ensureVisibleGI)==null||R.call(I,_)))},[o,i,s,u,x,c,S,w,r]),b.jsx("audio",{ref:t,preload:"auto",style:{display:"none"}})});function Va(){return b.jsx(Wa,{})}const $a="_scrubberWrap_uw0cd_2",qa="_labels_uw0cd_9",Ua="_index_uw0cd_15",Ka="_controls_uw0cd_19",Xa="_percent_uw0cd_25",Qa="_range_uw0cd_46",kt={scrubberWrap:$a,labels:qa,index:Ua,controls:Ka,percent:Xa,range:Qa};function Ya(){const e=K(T=>T.isDev),t=q(T=>T.currentGlobalRunIndex),n=q(T=>T.totalRuns),r=q(T=>T.setCurrentGlobalRunIndex),o=q(T=>T.getSectionScrollApi),s=q(T=>T.giToPercentTotal),i=q(T=>T.percentToGITotal),u=q(T=>T.snapToReadable),a=ye(T=>T.scrollLock),l=ye(T=>T.pause),d=ye(T=>T.play),v=ye(T=>T.syncToGI),[h,p]=m.useState(()=>s(t||0));m.useEffect(()=>{p(s(t||0))},[t,s]);const S=m.useRef(!1),w=m.useMemo(()=>Math.max(0,Math.min(t??0,Math.max(0,(n??1)-1)))+1,[t,n]),c=m.useCallback(()=>{a&&(l(),S.current=!0)},[a,l]),g=m.useCallback(T=>{p(Number(T.currentTarget.value))},[]),f=m.useCallback(async()=>{const T=i(h),j=u(T);l(),r(j,"scrubber-commit"),v(j);const x=o();x!=null&&x.ensureVisibleGI&&await x.ensureVisibleGI(j),S.current&&(S.current=!1,d())},[h,i,u,l,r,v,o,d]),C=m.useMemo(()=>({"--pct":`${h}%`}),[h]),k=m.useMemo(()=>Math.round(h),[h]);return b.jsxs("div",{className:kt.scrubberWrap,children:[e&&b.jsx("div",{className:kt.labels,children:b.jsxs("span",{className:kt.index,children:[w," / ",n||0]})}),b.jsxs("div",{className:kt.controls,children:[b.jsx("input",{type:"range",className:kt.range,min:0,max:100,step:.5,value:h,style:C,onMouseDown:c,onTouchStart:c,onChange:g,onMouseUp:()=>{f()},onTouchEnd:()=>{f()},onKeyUp:T=>T.key==="Enter"||T.key===" "?void f():void 0,"aria-label":"진행률"}),b.jsxs("span",{className:kt.percent,children:[k,"%"]})]})]})}const Za=m.memo(Ya),Ja=m.memo(function(){const t=m.useContext(ht),n=(t==null?void 0:t.getState().isPlaybackMode)??!1,r=ye(y=>y.playbackKind),o=ye(y=>y.status),s=ye(y=>y.fake),i=K(y=>y.audioSpeed),u=ye(y=>y.pause),a=q(y=>y.totalRuns),l=q(y=>y.currentGlobalRunIndex),d=q(y=>y.setCurrentGlobalRunIndex),v=q(y=>y.getSectionScrollApi),h=q(y=>y.nextReadableFrom),p=q(y=>y.edgeReadable),S=m.useRef(null),w=m.useRef(null),c=m.useRef(0),g=m.useRef(-1),f=!n&&r==="fake"&&o==="playing",C=Math.max(1,(s==null?void 0:s.totalWords)??1),k=m.useMemo(()=>{const y=200*i;return C/y*6e4},[C,i]),T=m.useMemo(()=>!a||a<=1||k<=0?0:(a-1)/k,[a,k]);m.useEffect(()=>{if(!f)return;const y=Math.max(0,Math.min(l??0,Math.max(0,(a??1)-1)));c.current=y,g.current=y,w.current=null},[f,l,a]);const j=m.useRef(-1);m.useEffect(()=>{if(!a){j.current=-1;return}const y=p(1);j.current=y??-1},[p,a]);const x=m.useCallback(y=>{(async()=>{var L,M;if(!f){S.current=null;return}if(!a||a<=1||T<=0){S.current=null;return}const _=w.current;w.current=y;const I=_==null?0:Math.max(0,y-_),R=a-1;c.current=Math.min(R,c.current+T*I);const O=Math.floor(c.current),A=v(),E=h(O,1);if(E==null){const N=j.current>=0?j.current:O;N!==g.current&&(g.current=N,d(N,"audio"),await((L=A==null?void 0:A.ensureVisibleGI)==null?void 0:L.call(A,N))),u(),S.current=null;return}const B=E;B!==g.current&&(g.current=B,d(B,"audio"),B%5===0&&await((M=A==null?void 0:A.ensureVisibleGI)==null?void 0:M.call(A,B))),S.current=requestAnimationFrame(x)})().catch(console.error)},[f,a,T,h,d,v,u]);return m.useEffect(()=>(f?S.current==null&&(S.current=requestAnimationFrame(x)):(S.current&&(cancelAnimationFrame(S.current),S.current=null),w.current=null),()=>{S.current&&(cancelAnimationFrame(S.current),S.current=null)}),[f,x]),null}),ec=m.memo(function(){return b.jsx(Ja,{})}),tc="data:image/svg+xml,%3csvg%20width='111'%20height='111'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xml:space='preserve'%20overflow='hidden'%3e%3cg%20transform='translate(-435%2011)'%3e%3cpath%20d='M532.723%2046.8125C530.242%2046.8292%20527.8%2047.4292%20525.593%2048.5642%20523.298%2049.7713%20520.952%2050.8767%20518.608%2051.8815%20517.451%2031.9953%20500.391%2016.8128%20480.505%2017.9704%20462.359%2019.0268%20447.834%2033.4215%20446.615%2051.5578L438.476%2048.1353%20438.476%2049.9344C438.473%2054.7251%20441.432%2059.0185%20445.91%2060.721%20446.509%2060.9604%20447.138%2061.1708%20447.767%2061.3801%20448.053%2061.4761%20448.339%2061.5709%20448.622%2061.6692L447.745%2066.7254C447.463%2068.2415%20447.818%2069.8071%20448.728%2071.0521%20449.635%2072.2874%20450.984%2073.1242%20452.493%2073.3877L452.768%2073.4282C453.011%2073.488%20453.259%2073.5198%20453.509%2073.523%20456.31%2073.5182%20458.699%2071.4953%20459.166%2068.7338L459.781%2064.8673C468.886%2066.8727%20478.184%2067.875%20487.508%2067.8562%20493.267%2067.8674%20499.021%2067.5125%20504.736%2066.7937%20504.893%2066.7613%20505.041%2066.7405%20505.184%2066.7231L505.562%2068.8379C505.986%2071.6231%20508.396%2073.6706%20511.213%2073.6375%20511.583%2073.648%20511.953%2073.5977%20512.307%2073.4883%20515.422%2072.958%20517.518%2070.0024%20516.988%2066.8869%20516.984%2066.8688%20516.981%2066.8509%20516.978%2066.833L516.758%2065.6767C522.066%2065.3125%20527.42%2065.3125%20532.607%2065.3125L532.723%2065.3125C537.831%2065.6255%20542.226%2061.7378%20542.539%2056.6292%20542.852%2051.5205%20538.965%2047.1255%20533.856%2046.8125%20533.479%2046.7894%20533.1%2046.7894%20532.723%2046.8125ZM516.326%2052.7256C511.914%2054.5082%20507.352%2055.8913%20502.693%2056.858L492.697%2041.007%20501.916%2026.3469C510.579%2032.4029%20515.911%2042.1631%20516.326%2052.7256ZM500.254%2057.3217C497.133%2057.8531%20493.977%2058.1542%20490.811%2058.2224L487.449%2058.2224C480.061%2058.2766%20472.682%2057.6921%20465.394%2056.4753L474.504%2042.1644%20490.692%2042.1644ZM482.602%2020.2188C488.73%2020.2155%20494.742%2021.8953%20499.981%2025.075L490.693%2039.8507%20474.491%2039.8195%20465.194%2025.0415C470.449%2021.8782%20476.468%2020.2107%20482.602%2020.2188ZM463.254%2026.2995%20472.504%2041.0023%20462.938%2056.0267C458.169%2055.1133%20453.47%2053.8672%20448.875%2052.2977%20449.378%2041.8709%20454.689%2032.2672%20463.254%2026.2995ZM456.876%2068.3719C456.595%2070.0115%20455.173%2071.2097%20453.509%2071.2094%20453.431%2071.2042%20453.354%2071.191%20453.278%2071.1701%20453.133%2071.1343%20452.984%2071.1101%20452.835%2071.0972%20451.94%2070.9264%20451.142%2070.4243%20450.601%2069.6912%20450.063%2068.9533%20449.853%2068.0254%20450.023%2067.1278L450.844%2062.3872%20457.525%2064.2962ZM514.123%2069.8103C513.566%2070.5637%20512.74%2071.0728%20511.817%2071.2313L511.657%2071.2718C511.514%2071.32%20511.363%2071.3392%20511.213%2071.3285%20509.525%2071.3698%20508.075%2070.1378%20507.844%2068.4656L507.486%2066.4688%20514.501%2065.8548%20514.701%2067.2527C514.87%2068.1485%20514.661%2069.0742%20514.123%2069.8103ZM532.723%2063%20532.607%2063C526.955%2063%20521.113%2063%20515.284%2063.4625L515.276%2063.4625%20515.276%2063.4625%20505.9%2064.2904%20504.36%2064.5078C498.77%2065.2064%20493.141%2065.5509%20487.508%2065.5391%20477.952%2065.5601%20468.425%2064.4858%20459.114%2062.3375L450.263%2059.8168%20446.738%2058.5658C443.792%2057.4525%20441.62%2054.9086%20440.982%2051.8237%20454.33%2057.5309%20470.023%2060.5383%20486.577%2060.5383%20486.868%2060.5383%20487.161%2060.5383%20487.452%2060.5383L490.828%2060.5383C500.421%2060.2575%20509.874%2058.1665%20518.689%2054.3755L518.797%2054.3304C521.437%2053.2216%20524.086%2051.9728%20526.649%2050.6235%20528.526%2049.6491%20530.608%2049.1354%20532.723%2049.125%20536.554%2048.8199%20539.908%2051.6785%20540.213%2055.5099%20540.518%2059.3414%20537.659%2062.6949%20533.828%2063%20533.46%2063.0293%20533.091%2063.0293%20532.723%2063Z'/%3e%3cpath%20d='M534.442%2053.75C534.442%2055.0272%20533.407%2056.0625%20532.13%2056.0625%20530.852%2056.0625%20529.817%2055.0272%20529.817%2053.75%20529.817%2052.4728%20530.852%2051.4375%20532.13%2051.4375%20533.407%2051.4375%20534.442%2052.4728%20534.442%2053.75Z'/%3e%3c/g%3e%3c/svg%3e",nc="data:image/svg+xml,%3csvg%20width='159'%20height='159'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xml:space='preserve'%20overflow='hidden'%3e%3cg%20transform='translate(-392%20-84)'%3e%3cpath%20d='M496.776%20189.601C496.122%20189.934%20495.77%20190.663%20495.916%20191.383L499.911%20210.219C500.074%20210.985%20500.75%20211.532%20501.533%20211.531L501.929%20211.531C503.729%20211.515%20505.222%20212.919%20505.319%20214.716%20505.389%20216.544%20503.964%20218.083%20502.136%20218.154%20502.093%20218.155%20502.05%20218.156%20502.006%20218.156L497.503%20218.156C495.941%20218.15%20494.594%20217.058%20494.263%20215.531L490.363%20197.147C490.174%20196.252%20489.294%20195.68%20488.4%20195.87%20488.399%20195.87%20488.399%20195.87%20488.399%20195.87%20488.174%20195.918%20487.962%20196.014%20487.776%20196.15L481.184%20200.898C479.925%20201.758%20478.809%20202.45%20477.776%20203.015%20476.998%20203.429%20476.669%20204.372%20477.022%20205.18%20477.402%20206.011%20478.385%20206.378%20479.217%20205.998%20479.253%20205.981%20479.288%20205.964%20479.322%20205.945%20480.618%20205.229%20481.877%20204.447%20483.094%20203.604L487.657%20200.313%20491.031%20216.213C491.677%20219.273%20494.376%20221.464%20497.503%20221.469L501.882%20221.469C505.577%20221.473%20508.587%20218.502%20508.631%20214.807%20508.608%20211.503%20506.158%20208.719%20502.883%20208.277L499.416%20191.93C502.051%20190.581%20506.719%20188.344%20509.619%20188.344%20515.225%20188.346%20520.812%20187.662%20526.252%20186.307%20530.081%20185.36%20533.152%20182.51%20534.381%20178.762L534.535%20178.295C535.676%20175.09%20535.323%20171.542%20533.573%20168.624L525.126%20154.2C522.254%20149.369%20517.625%20145.835%20512.207%20144.337%20512.364%20138.624%20511.516%20132.927%20509.7%20127.508%20504.714%20113.244%20488.452%20105.977%20487.761%20105.669%20487.336%20105.48%20486.851%20105.48%20486.426%20105.669%20485.959%20105.876%20484.987%20106.308%20483.1%20111.962%20482.811%20112.832%20483.281%20113.77%20484.15%20114.059%20485.019%20114.348%20485.958%20113.878%20486.247%20113.009%20486.649%20111.744%20487.129%20110.505%20487.685%20109.299%20491.474%20111.245%20502.818%20117.831%20506.566%20128.543%20508.418%20133.972%20509.183%20139.713%20508.815%20145.437%20508.734%20146.277%20509.297%20147.043%20510.122%20147.217%20515.212%20148.269%20519.626%20151.41%20522.287%20155.875L530.744%20170.299C532.007%20172.379%20532.256%20174.921%20531.42%20177.207L531.254%20177.727C530.378%20180.388%20528.194%20182.41%20525.474%20183.079%20520.288%20184.375%20514.964%20185.031%20509.619%20185.031%20505.93%20185.031%20501.061%20187.35%20496.776%20189.601Z'/%3e%3cpath%20d='M422.439%20192.966C421.946%20190.791%20421.681%20188.571%20421.649%20186.341%20421.7%20185.427%20421.001%20184.643%20420.086%20184.592%20419.171%20184.54%20418.388%20185.239%20418.336%20186.154%20418.324%20187.879%20418.47%20189.602%20418.772%20191.3%20412.577%20189.633%20408.907%20183.26%20410.574%20177.065%20411.942%20171.981%20416.559%20168.453%20421.824%20168.469%20422.661%20168.473%20423.491%20168.611%20424.284%20168.88%20425.056%20169.133%20425.898%20168.787%20426.271%20168.065%20435.26%20150.783%20455.639%20142.806%20473.971%20149.392%20474.837%20150.636%20475.5%20151.557%20475.559%20151.638%20476.094%20152.38%20477.129%20152.549%20477.872%20152.014%20478.614%20151.479%20478.782%20150.444%20478.248%20149.702%20478.216%20149.657%20475.101%20145.338%20473.444%20142.62%20467.845%20132.798%20470.283%20120.115%20471.358%20115.817%20475.617%20117.014%20487.816%20121.194%20493.442%20131.039%20496.082%20135.531%20497.921%20140.449%20498.876%20145.571%20499.017%20146.361%20499.705%20146.936%20500.508%20146.936L503.929%20146.936C504.816%20146.948%20505.561%20146.274%20505.639%20145.391%20505.7%20144.478%20505.01%20143.688%20504.097%20143.627%20504.059%20143.624%20504.021%20143.623%20503.982%20143.623L501.871%20143.623C500.778%20138.613%20498.902%20133.806%20496.312%20129.38%20488.742%20116.13%20471.271%20112.337%20470.533%20112.183%20469.704%20112.01%20468.879%20112.489%20468.618%20113.294%20468.385%20114.011%20463.013%20131.036%20470.568%20144.256%20470.579%20144.276%20470.745%20144.576%20470.978%20144.973%20470.99%20144.991%20470.978%20145.003%20470.96%20144.998%20452.498%20140.481%20433.287%20148.811%20423.966%20165.375%20423.261%20165.231%20422.543%20165.158%20421.824%20165.156%20413.582%20165.183%20406.923%20171.886%20406.95%20180.128%20406.974%20187.414%20412.256%20193.618%20419.446%20194.803L419.446%20194.803C419.532%20195.194%20419.611%20195.585%20419.706%20195.972L419.8%20196.329C422.428%20206.56%20428.796%20215.436%20437.646%20221.204%20437.917%20221.379%20438.232%20221.473%20438.554%20221.474L473.068%20221.474C476.748%20221.495%20479.756%20218.542%20479.801%20214.862%20479.847%20211.242%20476.95%20208.27%20473.329%20208.224%20473.278%20208.223%20473.227%20208.223%20473.176%20208.224L465.158%20208.224C474.765%20201.216%20476.873%20187.747%20469.866%20178.14%20465.812%20172.583%20459.348%20169.297%20452.47%20169.297%20450.573%20169.261%20448.682%20169.507%20446.858%20170.029%20445.981%20170.293%20445.484%20171.219%20445.749%20172.096%20446.013%20172.973%20446.938%20173.47%20447.816%20173.206%20449.328%20172.775%20450.897%20172.574%20452.47%20172.609%20462.532%20172.632%20470.67%20180.807%20470.648%20190.869%20470.63%20198.914%20465.337%20205.995%20457.626%20208.29%20456.784%20208.543%20456.286%20209.408%20456.491%20210.263%20456.686%20211.016%20457.369%20211.54%20458.147%20211.533L473.107%20211.533C474.951%20211.521%20476.458%20213.001%20476.48%20214.845%20476.52%20216.635%20475.102%20218.118%20473.312%20218.158%20473.264%20218.159%20473.216%20218.159%20473.168%20218.158L439.054%20218.158C431.004%20212.776%20425.251%20204.584%20422.922%20195.184%20422.853%20194.889%20422.795%20194.619%20422.733%20194.339Z'/%3e%3cpath%20d='M519.521%20163.831C519.708%20162.011%20518.383%20160.385%20516.563%20160.199%20514.743%20160.012%20513.117%20161.337%20512.931%20163.157%20512.744%20164.977%20514.069%20166.603%20515.889%20166.789%20516.113%20166.812%20516.339%20166.812%20516.563%20166.789%20518.126%20166.629%20519.361%20165.394%20519.521%20163.831Z'/%3e%3c/g%3e%3c/svg%3e",rc="_WPMSpeedButtonsWrap_r3byt_1",oc="_btnWrap_r3byt_7",sc="_label_r3byt_14",ic="_iconBtn_r3byt_22",zt={WPMSpeedButtonsWrap:rc,btnWrap:oc,label:sc,iconBtn:ic},uo=350,lc=40,ac=.85,cc=m.memo(function(){const t=K(h=>h.audioSpeed),n=K(h=>h.incAudioSpeed),r=K(h=>h.decAudioSpeed),o=m.useRef(null),s=m.useRef(uo),i=m.useRef(null),u=m.useCallback(h=>{const p=t;if(h==="inc"){if(p>=2)return!1;n()}else{if(p<=.3)return!1;r()}return!0},[t,n,r]),a=m.useCallback(()=>{i.current=null,o.current&&(clearTimeout(o.current),o.current=null)},[]),l=m.useCallback(()=>{i.current&&(s.current=Math.max(lc,Math.floor(s.current*ac)),o.current=window.setTimeout(()=>{u(i.current)?l():a()},s.current))},[u,a]),d=m.useCallback(h=>{if(i.current)return;i.current=h,s.current=uo,u(h)&&l();const S=()=>a();window.addEventListener("mouseup",S,{once:!0}),window.addEventListener("touchend",S,{once:!0})},[l,u,a]);m.useEffect(()=>a,[a]);const v=`${(t*100).toFixed(0)}%`;return b.jsx("div",{onMouseLeave:a,className:zt.WPMSpeedButtonsWrap,children:b.jsxs("div",{className:zt.btnWrap,children:[b.jsx("button",{className:zt.iconBtn,type:"button",title:"속도 느리게",onMouseDown:()=>d("dec"),onTouchStart:h=>{h.preventDefault(),d("dec")},onMouseUp:a,children:b.jsx("img",{src:tc,alt:"느리게"})}),b.jsx("div",{className:zt.label,style:{minWidth:"44px",textAlign:"center"},children:b.jsx("div",{children:v})}),b.jsx("button",{className:zt.iconBtn,type:"button",title:"속도 빠르게",onMouseDown:()=>d("inc"),onTouchStart:h=>{h.preventDefault(),d("inc")},onMouseUp:a,children:b.jsx("img",{src:nc,alt:"빠르게"})})]})})}),uc="_StepBtn_15t0r_1",dc={StepBtn:uc};function fc(e){return $e({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M208,48V208a8,8,0,0,1-13.66,5.66L128,147.31V208a8,8,0,0,1-13.66,5.66l-80-80a8,8,0,0,1,0-11.32l80-80A8,8,0,0,1,128,48v60.69l66.34-66.35A8,8,0,0,1,208,48Z"},child:[]}]})(e)}function pc(e){return $e({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M221.66,133.66l-80,80A8,8,0,0,1,128,208V147.31L61.66,213.66A8,8,0,0,1,48,208V48a8,8,0,0,1,13.66-5.66L128,108.69V48a8,8,0,0,1,13.66-5.66l80,80A8,8,0,0,1,221.66,133.66Z"},child:[]}]})(e)}function fo({direction:e}){const t=q(v=>v.currentGlobalRunIndex),n=q(v=>v.totalRuns),r=q(v=>v.hasReadableInDir),o=q(v=>v.computeStepTarget),s=q(v=>v.setCurrentGlobalRunIndex),i=ye(v=>v.syncToGI),u=q(v=>v.getSectionScrollApi),a=m.useCallback(async v=>{var S,w;const h=Math.max(t,Math.min(0,Math.max(0,(n??1)-1))),p=o(h,v);s(p,"scrubber-step"),i(p),await((w=(S=u())==null?void 0:S.ensureVisibleGI)==null?void 0:w.call(S,p))},[t,n,o,s,i,u]),l=m.useMemo(()=>{const v=Math.max(t,Math.min(0,Math.max(0,(n??1)-1))),h=!n||!r(v,1),p=!n||!r(v,-1);return e==="left"?p:h},[e,n,t,r]),d=m.useCallback(()=>{a(e==="left"?-1:1)},[e,a]);return b.jsx("button",{className:dc.StepBtn,type:"button",onClick:d,disabled:l,title:e==="left"?"이전":"다음",children:e==="left"?b.jsx(fc,{}):b.jsx(pc,{})})}const gc="_GCPlayBtn_n54mc_1",hc="_playing_n54mc_34",po={GCPlayBtn:gc,playing:hc},mc=({size:e=60,color:t="#333",bgColor:n="#fff",isPlaying:r,onClick:o,tooltip:s="재생",title:i=""})=>b.jsx("button",{className:`${po.GCPlayBtn} ${r?po.playing:""}`,onClick:o,"data-tip":s,title:i,style:{"--btn-size":`${e}px`,"--icon-color":t,"--btn-bg":n}});function bc(e){return $e({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 294.1L383 167c9.4-9.4 24.6-9.4 33.9 0s9.3 24.6 0 34L273 345c-9.1 9.1-23.7 9.3-33.1.7L95 201.1c-4.7-4.7-7-10.9-7-17s2.3-12.3 7-17c9.4-9.4 24.6-9.4 33.9 0l127.1 127z"},child:[]}]})(e)}function xc(e){return $e({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 217.9L383 345c9.4 9.4 24.6 9.4 33.9 0 9.4-9.4 9.3-24.6 0-34L273 167c-9.1-9.1-23.7-9.3-33.1-.7L95 310.9c-4.7 4.7-7 10.9-7 17s2.3 12.3 7 17c9.4 9.4 24.6 9.4 33.9 0l127.1-127z"},child:[]}]})(e)}function vc(){var _;const e=K(I=>I.showOverlays),t=q(I=>I.section),n=!!t.ast.isAddedSplit,r=!!((_=t.audios)!=null&&_.length),o=q(I=>I.canTracking),s=q(I=>I.canToggleShowGaze),i=q(I=>I.showGaze),u=q(I=>I.onToggleShowGaze),a=K(I=>I.muteAudio),l=K(I=>I.showPointer),d=K(I=>I.showSplit),v=K(I=>I.toggleMuteAudio),h=K(I=>I.toggleShowPointer),p=K(I=>I.toggleShowSplit),S=K(I=>I.overlayCompactMode),w=K(I=>I.toggleOverlayCompactMode),c=cn(),g=ut();m.useEffect(()=>{const I=c.getState(),{syncToGI:R,useFake:O,useReal:A}=I,E=I.playbackKind,B=g.getState().progress.currentGlobalRunIndex??0;if(!r){E!=="fake"&&O();return}a?E!=="fake"&&O():E!=="real"&&(R(B),A())},[r,a,g,c]);const f=ye(I=>I.play),C=ye(I=>I.pause),k=ye(I=>I.status),T=m.useCallback(I=>{I.stopPropagation(),k==="playing"||k==="loading"?C():f()},[k,f,C]),j=cn(),x=ut(),y=m.useCallback(async I=>{var he,Te;if(I.stopPropagation(),k==="playing"||k==="loading"){C();return}const{progress:R}=x.getState(),{currentGlobalRunIndex:O,snapToReadable:A,edgeReadable:E,setCurrentGlobalRunIndex:B,getSectionScrollApi:L}=R,M=j.getState(),N=M.currentClip,Y=L==null?void 0:L(),ue=typeof O=="number"?O:0,ie=typeof A=="function"?A(ue):ue,ae=typeof E=="function"?E(1):null;if(ae!=null&&ie>=ae){B==null||B(ae,"audio"),await((he=Y==null?void 0:Y.ensureVisibleGI)==null?void 0:he.call(Y,ae)),M.syncToGI(ae);return}B==null||B(ie,"audio"),await((Te=Y==null?void 0:Y.ensureVisibleGI)==null?void 0:Te.call(Y,ie)),M.syncToGI(ie),f(N)},[k,C,f,j,x]);return b.jsxs("div",{className:`${Ce.wrap} ${e?Ce.visible:""} ${S?Ce.compact:""}`,onClick:I=>{I.stopPropagation()},onTouchStart:I=>{I.stopPropagation()},children:[!S&&b.jsx(Za,{}),b.jsx("div",{style:S?{display:"none"}:void 0,children:r&&!a?b.jsx(Va,{}):b.jsx(ec,{})}),b.jsxs("div",{className:Ce.controls,children:[b.jsxs("div",{className:Ce.row1,children:[b.jsx("div",{className:Ce.groupExpand,children:b.jsx("button",{type:"button",onClick:I=>{I.stopPropagation(),w()},className:Ce.compactBtn,title:S?"오버레이 확대":"오버레이 축소",children:S?b.jsx(xc,{size:24}):b.jsx(bc,{size:24})})}),b.jsxs("div",{className:Ce.groupPlayback,children:[b.jsx(fo,{direction:"left"}),b.jsx(mc,{size:34,isPlaying:k==="playing",onClick:a?y:T,title:k==="playing"?"일시정지":"재생"}),b.jsx(fo,{direction:"right"})]}),b.jsx("div",{className:Ce.groupSpeed,children:b.jsx(cc,{})})]}),b.jsxs("div",{className:Ce.row2,children:[b.jsxs("div",{className:Ce.groupFeatures,children:[r&&b.jsxs("button",{type:"button",onClick:I=>{I.stopPropagation(),v()},className:`${Ce.btn} ${a?"":Ce.btnActive}`,title:"오디오북 음소거 전환",children:[a?b.jsx(Sa,{size:18}):b.jsx(ya,{size:18}),b.jsx("span",{className:Ce.label,children:"오디오북"})]}),b.jsxs("button",{type:"button",onClick:I=>{I.stopPropagation(),h()},className:`${Ce.btn} ${l?Ce.btnActive:""}`,title:"포인터 표시",children:[b.jsx(wa,{size:18}),b.jsx("span",{className:Ce.label,children:"포인터"})]}),n&&b.jsxs("button",{type:"button",onClick:I=>{I.stopPropagation(),p()},disabled:!n,className:`${Ce.btn} ${d?Ce.btnActive:""} ${n?"":Ce.btnForbidden}`,title:"끊어읽기 표시",children:[b.jsx(Ca,{size:18}),b.jsx("span",{className:Ce.label,children:"끊어읽기"})]}),b.jsxs("button",{type:"button",onClick:I=>{I.stopPropagation(),u==null||u()},disabled:!o||!s,className:`${Ce.btn} ${o&&i?Ce.btnActive:""} ${o?"":Ce.btnForbidden}`,title:"시선 표시",children:[b.jsx(ka,{size:18}),b.jsx("span",{className:Ce.label,children:"시선"})]})]}),b.jsxs("div",{className:Ce.groupNav,children:[b.jsx(pa,{}),b.jsx(pn,{})]})]})]})]})}const Sc=m.memo(vc);function yc(e){return $e({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{fill:"none",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"32",d:"M262.29 192.31a64 64 0 1 0 57.4 57.4 64.13 64.13 0 0 0-57.4-57.4zM416.39 256a154.34 154.34 0 0 1-1.53 20.79l45.21 35.46a10.81 10.81 0 0 1 2.45 13.75l-42.77 74a10.81 10.81 0 0 1-13.14 4.59l-44.9-18.08a16.11 16.11 0 0 0-15.17 1.75A164.48 164.48 0 0 1 325 400.8a15.94 15.94 0 0 0-8.82 12.14l-6.73 47.89a11.08 11.08 0 0 1-10.68 9.17h-85.54a11.11 11.11 0 0 1-10.69-8.87l-6.72-47.82a16.07 16.07 0 0 0-9-12.22 155.3 155.3 0 0 1-21.46-12.57 16 16 0 0 0-15.11-1.71l-44.89 18.07a10.81 10.81 0 0 1-13.14-4.58l-42.77-74a10.8 10.8 0 0 1 2.45-13.75l38.21-30a16.05 16.05 0 0 0 6-14.08c-.36-4.17-.58-8.33-.58-12.5s.21-8.27.58-12.35a16 16 0 0 0-6.07-13.94l-38.19-30A10.81 10.81 0 0 1 49.48 186l42.77-74a10.81 10.81 0 0 1 13.14-4.59l44.9 18.08a16.11 16.11 0 0 0 15.17-1.75A164.48 164.48 0 0 1 187 111.2a15.94 15.94 0 0 0 8.82-12.14l6.73-47.89A11.08 11.08 0 0 1 213.23 42h85.54a11.11 11.11 0 0 1 10.69 8.87l6.72 47.82a16.07 16.07 0 0 0 9 12.22 155.3 155.3 0 0 1 21.46 12.57 16 16 0 0 0 15.11 1.71l44.89-18.07a10.81 10.81 0 0 1 13.14 4.58l42.77 74a10.8 10.8 0 0 1-2.45 13.75l-38.21 30a16.05 16.05 0 0 0-6.05 14.08c.33 4.14.55 8.3.55 12.47z"},child:[]}]})(e)}const wc="_host_gafql_3",Cc="_topbar_gafql_11",Ic="_visible_gafql_32",kc="_backBtn_gafql_37",Tc="_title_gafql_58",Rc="_calibrationBtn_gafql_67",_c="_disabled_gafql_87",Mc="_settingsBtn_gafql_95",ft={host:wc,topbar:Cc,visible:Ic,backBtn:kc,title:Tc,calibrationBtn:Rc,disabled:_c,settingsBtn:Mc};function Ec(){const e=K(p=>p.showOverlays),t=K(p=>p.overlayCompactMode),n=q(p=>p.onViewerClose),o=q(p=>p.section).ast.title,s=q(p=>p.canTracking),i=q(p=>p.handleAskCalibration),u=ye(p=>p.status==="playing"),a=s&&!u,l=K(p=>p.setSettingsOpen),d=K(p=>p.setShowOverlays),v=m.useCallback(()=>{n==null||n()},[n]),h=m.useCallback(()=>{l(!0),d(!1)},[l,d]);return b.jsx("div",{className:ft.host,children:b.jsxs("div",{className:`${ft.topbar} ${e&&!t?ft.visible:""}`,children:[b.jsx("button",{type:"button",className:ft.backBtn,onClick:v,"aria-label":"뒤로가기",children:b.jsx(Ia,{size:28})}),b.jsx("div",{className:ft.title,children:b.jsx("span",{className:"truncate",children:o||"섹션 없음"})}),b.jsx("button",{type:"button",className:`${ft.calibrationBtn} ${a?"":ft.disabled}`,onClick:i,disabled:!a,"aria-label":"시선보정",title:"시선보정",children:b.jsx(Ta,{size:24})}),b.jsx("button",{type:"button",className:ft.settingsBtn,onClick:h,"aria-label":"뷰어 설정",children:b.jsx(yc,{size:28})})]})})}const jc=m.memo(Ec),Oc="_wrap_62su0_7",zc="_wrapHidden_62su0_29",Ac="_wrapVisible_62su0_35",Bc="_scrollArea_62su0_71",Pc="_row_62su0_81",Lc="_label_62su0_89",Gc="_btn_62su0_95",Hc="_btnActive_62su0_106",Nc="_btnSmall_62su0_110",Fc="_pill_62su0_122",Dc="_themeCircle_62su0_133",Wc="_themeCircleActive_62su0_146",Vc="_stepRow_62su0_151",$c="_stepLabel_62su0_159",qc="_levelBox_62su0_172",Uc="_inlineFlex_62su0_177",Ee={wrap:Oc,wrapHidden:zc,wrapVisible:Ac,scrollArea:Bc,row:Pc,label:Lc,btn:Gc,btnActive:Hc,btnSmall:Nc,pill:Fc,themeCircle:Dc,themeCircleActive:Wc,stepRow:Vc,stepLabel:$c,levelBox:qc,inlineFlex:Uc};function Kc({visible:e}){const t=K(x=>x.mode),n=K(x=>x.setMode),r=K(x=>x.theme),o=K(x=>x.setTheme),s=K(x=>x.fontFamily),i=K(x=>x.setFontFamily),u=K(x=>x.resetToDefaults),a=K(x=>x.getFontLevel()),l=K(x=>x.getLineLevel()),d=K(x=>x.getMarginLevel()),v=K(x=>x.setFontLevel),h=K(x=>x.setLineLevel),p=K(x=>x.setMarginLevel),S=K(x=>x.pointerStyle),w=K(x=>x.setPointerStyle),c=K(x=>x.pointerColor),g=K(x=>x.setPointerColor),f=K(x=>x.breakMarks),C=K(x=>x.toggleBreakMark),k=K(x=>x.getBreakGapLevel()),T=K(x=>x.setBreakGapLevel),j=`${Ee.wrap} ${e?Ee.wrapVisible:Ee.wrapHidden}`;return b.jsxs("div",{className:j,role:"dialog","aria-modal":"true","aria-label":"뷰어 설정",children:[b.jsxs("div",{className:Ee.scrollArea,children:[b.jsx(At,{label:"열람방식",children:b.jsxs("div",{className:Ee.inlineFlex,children:[b.jsx(Tt,{active:t==="page",onClick:()=>n("page"),children:"페이지"}),b.jsx(Tt,{active:t==="scroll",onClick:()=>n("scroll"),children:"스크롤"})]})}),b.jsx(At,{label:"테마",children:b.jsx("div",{className:Ee.inlineFlex,children:Object.keys(sn).map(x=>{const y=x,_=sn[y];return b.jsx("button",{type:"button",onClick:()=>o(y),className:`${Ee.themeCircle} ${r===x?Ee.themeCircleActive:""}`,style:{background:_.bg,color:_.fg,fontFamily:s},title:String(x),"aria-label":`테마: ${String(x)}`,children:"A"},`${x}_tc_button`)})})}),b.jsx(At,{label:"글꼴",children:b.jsx("div",{className:Ee.inlineFlex,children:Ho.map(x=>b.jsx(Tt,{active:s===x.value,onClick:()=>i(x.value),title:x.value,children:x.label},x.label))})}),b.jsx(tn,{label:"글자 크기",level:a,min:1,max:12,onDec:()=>v(Math.max(1,a-1)),onInc:()=>v(Math.min(12,a+1))}),b.jsx(tn,{label:"줄 간격",level:l,min:1,max:7,onDec:()=>h(Math.max(1,l-1)),onInc:()=>h(Math.min(7,l+1))}),b.jsx(tn,{label:"여백",level:d,min:1,max:5,onDec:()=>p(Math.max(1,d-1)),onInc:()=>p(Math.min(5,d+1))}),b.jsx(At,{label:"포인터",children:b.jsxs("div",{className:Ee.inlineFlex,children:[b.jsx(Tt,{active:S==="highlight",onClick:()=>w("highlight"),children:"형광펜"}),b.jsx(Tt,{active:S==="underline",onClick:()=>w("underline"),children:"밑줄"}),b.jsx("input",{type:"color",value:c,onChange:x=>g(x.target.value),"aria-label":"포인터 색상",style:{width:36,height:28,padding:0,border:"none",background:"transparent"}})]})}),b.jsx(At,{label:"끊기표시",children:b.jsx("div",{className:Ee.inlineFlex,children:b.jsx(Tt,{active:f.slash,onClick:()=>C("slash"),children:"슬래쉬"})})}),b.jsx(tn,{label:"끊기간격",level:k,min:1,max:5,onDec:()=>T(Math.max(1,k-1)),onInc:()=>T(Math.min(5,k+1))})]}),b.jsx("div",{className:Ee.inlineFlex,style:{justifyContent:"center"},children:b.jsx("button",{type:"button",onClick:u,className:Ee.pill,children:"보기 설정 초기화"})})]})}function At({label:e,children:t}){return b.jsxs("div",{className:Ee.row,children:[b.jsx("label",{className:Ee.label,children:e}),t]})}function Tt({active:e,onClick:t,title:n,children:r}){return b.jsx("button",{type:"button",onClick:t,title:n,className:`${Ee.btn} ${e?Ee.btnActive:""}`,children:r})}function tn({label:e,level:t,min:n,max:r,onDec:o,onInc:s}){const i=t<=n,u=t>=r;return b.jsxs("div",{className:Ee.stepRow,children:[b.jsx("label",{className:Ee.stepLabel,children:e}),b.jsxs("div",{className:Ee.inlineFlex,children:[b.jsx("button",{type:"button",onClick:o,disabled:i,className:Ee.btnSmall,"aria-label":"감소",children:"−"}),b.jsx("div",{className:Ee.levelBox,children:t}),b.jsx("button",{type:"button",onClick:s,disabled:u,className:Ee.btnSmall,"aria-label":"증가",children:"+"})]})]})}const Xc=m.memo(function(){const t=K(i=>i.showOverlays),n=K(i=>i.isSettingsOpen),r=q(i=>i.rangeStartGI),o=q(i=>i.rangeEndGI);return r!=null&&o!=null?null:b.jsxs("div",{"aria-hidden":!0,style:{pointerEvents:"none",position:"absolute",inset:0,containerType:"size",containerName:"viewer"},children:[b.jsx(jc,{}),b.jsx(Sc,{}),b.jsx("div",{style:{pointerEvents:"auto"},children:b.jsx(Kc,{visible:!t&&n})})]})}),Qc=e=>(t,n,r)=>{const o=r.subscribe;return r.subscribe=((i,u,a)=>{let l=i;if(u){const d=(a==null?void 0:a.equalityFn)||Object.is;let v=i(r.getState());l=h=>{const p=i(h);if(!d(v,p)){const S=v;u(v=p,S)}},a!=null&&a.fireImmediately&&u(v,v)}return o(l)}),e(t,n,r)},Yc=Qc;function Zc(e){return e?e.kind==="saved"?e.cdnUrl:e.blobUrl:null}function Jc(e){var o,s,i;if(!e||!/\S/.test(e))return 0;const t=((o=e.match(/[A-Za-z0-9]+(?:['’-][A-Za-z0-9]+)*/g))==null?void 0:o.length)??0,n=((s=e.match(/[\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A]+/g))==null?void 0:s.length)??0,r=((i=e.match(/[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\u3040-\u30FF\u31FF\uAC00-\uD7AF\u1100-\u11FF\u3130-\u318F]/g))==null?void 0:i.length)??0;return t+n+Math.floor(r/2)}function eu(e){let t=0;for(const n of e.ast.blocks??[])if(n.type==="paragraph")for(const r of n.runs??[])t+=Jc((r==null?void 0:r.text)??"");return t}function tu(e){const t=e==null?void 0:e.recorderStore;let n=e==null?void 0:e.map,r=e==null?void 0:e.initialIndex;const o=p=>{if(!n)return null;const{g2ct:S}=n;if(!S)return null;const w=S[p];if(w)return{clip:w.clip,t:w.t};for(let c=1;c<=100&&p-c>=0;c++){const g=S[p-c];if(g)return{clip:g.clip,t:g.t}}for(let c=1;c<=100;c++){const g=S[p+c];if(g)return{clip:g.clip,t:g.t}}return null},s=(e==null?void 0:e.clips)??[];let i=0,u=0;const a=Math.max(1,eu(e.section)||150);if(typeof(e==null?void 0:e.initialIndex)=="number"&&n){const p=o(e.initialIndex);p&&(i=p.clip,u=p.t,r=void 0)}const l=s.length>0,d=l?"paused":"idle",v=l?"real":"fake",h=l?null:{totalWords:a};return $t(Yc((p,S)=>({clips:s,currentClip:Math.max(0,Math.min(i,Math.max(0,s.length-1))),currentTimeMs:Math.max(0,u),status:d,scrollLock:!1,playbackKind:v,fake:h,useFake:()=>p(w=>({playbackKind:"fake",fake:{totalWords:a},scrollLock:w.status==="playing"})),useReal:()=>p(w=>({playbackKind:"real",fake:{totalWords:a},scrollLock:w.status==="playing"})),injectMap:w=>{if(n=w,typeof r=="number"){const c=o(r);c&&p(g=>({currentClip:Math.max(0,Math.min(c.clip,Math.max(0,g.clips.length-1))),currentTimeMs:Math.max(0,c.t)})),r=void 0}},setClipAndMs:(w,c)=>p(g=>{const f=Math.max(0,g.clips.length-1);return{currentClip:Math.max(0,Math.min(w,f)),currentTimeMs:Math.max(0,c),status:g.status,scrollLock:g.scrollLock}}),setClips:w=>p(c=>{const g=Array.isArray(w)?w:[],f=g.length>0;return{clips:g,currentClip:0,currentTimeMs:0,status:f?"paused":"idle",playbackKind:f?"real":"fake",fake:f?null:c.fake??{totalWords:a},scrollLock:!1}}),clear:()=>p(w=>({clips:[],currentClip:0,currentTimeMs:0,status:"idle",playbackKind:"fake",fake:w.fake??{totalWords:a},scrollLock:!1})),play:(w,c)=>{t==null||t.getState().emit({type:"audio_control",payload:{action:"play"}}),p(g=>{if(g.playbackKind==="fake")return{status:"playing",scrollLock:!0};const f=typeof w=="number"?w:g.currentClip,C=typeof c=="number"?c:g.currentTimeMs;return{status:"loading",currentClip:Math.max(0,Math.min(f,Math.max(0,g.clips.length-1))),currentTimeMs:C,scrollLock:!0}})},pause:()=>{t==null||t.getState().emit({type:"audio_control",payload:{action:"pause"}}),p({status:"paused",scrollLock:!1})},seek:w=>p(c=>({currentTimeMs:Math.max(0,w),status:c.status})),stop:()=>p({status:"idle",currentTimeMs:0,scrollLock:!1}),nextClip:()=>p(w=>{if(w.playbackKind==="fake")return w;const c=Math.max(0,w.clips.length-1);return{currentClip:Math.min(w.currentClip+1,c),currentTimeMs:0,status:"loading",scrollLock:!0}}),prevClip:()=>p(w=>w.playbackKind==="fake"?w:{currentClip:Math.max(0,w.currentClip-1),currentTimeMs:0,status:"loading",scrollLock:!0}),setClipIndex:w=>p(c=>c.playbackKind==="fake"||w<0||w>=c.clips.length?c:{currentClip:w,currentTimeMs:0}),getClipSrc:w=>{const c=S();if(!c.clips.length)return null;const g=typeof w=="number"?w:c.currentClip;return Zc(c.clips[g])},getGIFromCT:(w,c)=>{if(!n)return-1;const g=n.byClip[w];if(!g||g.length===0)return-1;let f=0,C=g.length-1,k=0;for(;f<=C;){const T=f+C>>1;g[T].t<=c?(k=T,f=T+1):C=T-1}return g[Math.max(0,Math.min(k,g.length-1))].g},getCTFromGI:w=>{if(!n)return null;const{g2ct:c}=n;if(!c)return null;let g=c[w];if(!g){let f=w-1;const C=Math.max(0,w-100);for(;f>=C;){if(c[f]){g=c[f];break}f--}if(!g){let k=w+1;const T=w+100;for(;c[k]==null&&k<=T;)k++;c[k]&&(g=c[k])}}return g?{clip:g.clip,timeMs:g.t}:null},getMetaByGI:w=>{const c=S().getCTFromGI(w);return c?{clipIndex:c.clip,timeMs:c.timeMs}:null},syncToGI:w=>{const c=S().getMetaByGI(w);c&&S().setClipAndMs(c.clipIndex,c.timeMs)},_onTime:w=>p({currentTimeMs:w,status:"playing",scrollLock:!0}),_onEnded:()=>p(w=>{if(w.playbackKind==="fake")return{status:"ended",scrollLock:!1};const c=Math.max(0,w.clips.length-1);return w.currentClip>=c?{status:"ended",scrollLock:!1}:{currentClip:Math.min(w.currentClip+1,c),currentTimeMs:0,status:"loading",scrollLock:!0}}),_onError:()=>p({status:"error",scrollLock:!1}),_setStatusOnly:w=>p({status:w})})))}function nu({children:e,initialState:t}){const n=m.useContext(ht)??void 0,r=m.useMemo(()=>tu({...t,recorderStore:n}),[t,n]);return b.jsx(vn.Provider,{value:r,children:e})}function ru(e){var s,i;const t={},n=[],r=((s=e==null?void 0:e.ast)==null?void 0:s.blocks)??[];let o=0;for(const u of r){if((u==null?void 0:u.type)==="image")continue;const a=(u==null?void 0:u.runs)??[];for(let l=0;l<a.length;l++){const d=a[l],v=o+l;d.audioChunkIndex!=null&&d.audioTimeMs!=null&&((t[i=d.audioChunkIndex]||(t[i]=[])).push({t:d.audioTimeMs,g:v}),n[v]={clip:d.audioChunkIndex,t:d.audioTimeMs})}o+=a.length}return Object.values(t).forEach(u=>u.sort((a,l)=>a.t-l.t)),{byClip:t,g2ct:n}}function ou(e,t,n){if(n<=0)return-1;const r=Math.max(0,Math.min(t,n-1));if(e[r]===1)return r;for(let o=1;o<n;o++){const s=r-o;if(s>=0&&e[s]===1)return s;const i=r+o;return i<n&&e[i]===1?i:-1}return-1}function su(e){const t=Ul(e),n=Kl(t),r=t.reduce((d,v)=>d+(v||0),0),o=new Int32Array(Math.max(1,r)).fill(-1),s=new Uint8Array(Math.max(1,r)).fill(0),i=[],u=[];return e.forEach((d,v)=>{var c;if(d.type!=="paragraph")return;const h=n[v]??0,p=d.runs??[];for(let g=0;g<p.length;g++){const f=((c=p[g])==null?void 0:c.text)||"";sr(f)&&(s[h+g]=1)}const w=Xl(p,h).map(g=>{var T;const f=g.startG-h,C=g.endG-g.startG+1;let k=-1;for(let j=0;j<C;j++){const x=((T=p[f+j])==null?void 0:T.text)??"";if(sr(x)){k=g.startG+j;break}}return{startG:g.startG,endG:g.endG,r0:f,len:C,firstReadableGI:k,splitIndex:g.splitIndex}});u[v]=w;for(const g of w){const f=i.length;for(let C=g.startG;C<=g.endG;C++)o[C]=f;i.push(g)}}),{nav:{groups:i,giToGroupIdx:o,readableGi:s,splitGroupsPerBlock:u},layout:{prefix:n,totalRuns:r}}}function iu(e){const{section:t,onViewerClose:n,onSectionNav:r,isCanPrev:o,isCanNext:s,canTracking:i,canToggleShowGaze:u,showGaze:a,onToggleShowGaze:l,handleAskCalibration:d,nav:v,layout:h,initialIndex:p,mountTime:S}=e,w=h.totalRuns??0,c=typeof p=="number"?p:w>0?0:-1,g=c>=0?ou(v.readableGi,c,w):-1;return{section:t,sectionId:t.section_id,onViewerClose:n,onSectionNav:r,isCanPrev:o??!1,isCanNext:s??!1,canTracking:i??!1,canToggleShowGaze:u??!1,showGaze:a??!1,onToggleShowGaze:l,handleAskCalibration:d,currentGlobalRunIndex:g,lastUpdateBy:"program",totalRuns:w,pageIndex:0,totalPages:0,sectionLoading:!0,_loadingStartTime:S,_scrollApi:void 0,derivedNav:v,layout:h,rangeStartGI:null,rangeEndGI:null,translateOpen:!1,translateLoading:!1,translateText:void 0,translatedText:void 0,translateStartGI:void 0,translateEndGI:void 0}}function lu(e){const{section:t,initialIndex:n,onViewerClose:r,onSectionNav:o,isCanPrev:s,isCanNext:i,canTracking:u,canToggleShowGaze:a,showGaze:l,onToggleShowGaze:d,handleAskCalibration:v,eventBridgeStore:h}=e,p=t.ast.blocks,{nav:S,layout:w}=su(p),c=Date.now(),g=iu({section:t,onViewerClose:r,onSectionNav:o,isCanPrev:s,isCanNext:i,canTracking:u,canToggleShowGaze:a,showGaze:l,onToggleShowGaze:d,handleAskCalibration:v,nav:S,layout:w,initialIndex:n,mountTime:c});return h&&queueMicrotask(()=>{h.getState().emit({type:"render_start",payload:{sectionId:t.section_id}},c),h.getState().emit({type:"loading_start",payload:{}},c)}),$t((f,C)=>{const k=W=>{f(D=>D.progress._scrollApi===W?D:{progress:{...D.progress,_scrollApi:W}})},T=()=>C().progress._scrollApi,j=W=>{f(D=>{const U=D.progress;if(U.totalRuns===W)return D;const z=U.currentGlobalRunIndex<0&&W>0;return{progress:{...U,totalRuns:W,currentGlobalRunIndex:z?0:U.currentGlobalRunIndex,lastUpdateBy:z?"program":U.lastUpdateBy}}})},x=(W,D="program")=>{const U=C().progress.currentGlobalRunIndex,z=C().progress,H=z.totalRuns>0?Math.max(-1,Math.min(W,z.totalRuns-1)):W;U===H&&z.lastUpdateBy===D||(f(Q=>({progress:{...Q.progress,currentGlobalRunIndex:H,lastUpdateBy:D}})),U!==H&&h&&h.getState().emit({type:"global_index_change",payload:{globalIndex:H}}))},y=W=>{const{sectionLoading:D,_loadingStartTime:U}=C().progress;if(D===W)return;const z=Date.now();if(W)f(H=>({progress:{...H.progress,sectionLoading:!0,_loadingStartTime:z}})),h&&h.getState().emit({type:"loading_start",payload:{}});else{const Q=(U?z-U:0)/1e3;f(G=>({progress:{...G.progress,sectionLoading:!1,_loadingStartTime:null}})),h&&h.getState().emit({type:"loading_end",payload:{duration:Q}})}},_=W=>{f(D=>({progress:{...D.progress,pageIndex:W}}))},I=W=>{f(D=>({progress:{...D.progress,totalPages:W}}))},R=(W,D)=>{const z=C().progress.rangeStartGI==null;if(f(H=>({progress:{...H.progress,rangeStartGI:Math.min(W,D),rangeEndGI:Math.max(W,D)}})),h){const H=E();h.getState().emit({type:z?"range_select":"range_change",payload:{startGI:Math.min(W,D),endGI:Math.max(W,D),text:H}})}},O=()=>{f(W=>({progress:{...W.progress,rangeStartGI:null,rangeEndGI:null}})),h&&h.getState().emit({type:"range_clear",payload:{}})},A=W=>{const{rangeStartGI:D,rangeEndGI:U}=C().progress;D==null||U==null||(W<D?f(z=>({progress:{...z.progress,rangeStartGI:W}})):W>U?f(z=>({progress:{...z.progress,rangeEndGI:W}})):O())},E=()=>{var ne;const{rangeStartGI:W,rangeEndGI:D,section:U,layout:z}=C().progress;if(W==null||D==null||!z)return"";const H=((ne=U.ast)==null?void 0:ne.blocks)??[],Q=z.prefix,G=[];for(let V=0;V<H.length;V++){const Z=H[V];if(Z.type!=="paragraph")continue;const ee=Z.runs??[],J=Q[V]??0;for(let le=0;le<ee.length;le++){const re=J+le;re>=W&&re<=D&&G.push(ee[le].text??"")}}return G.join("")},B=W=>{f(D=>({progress:{...D.progress,translateOpen:W.isOpen,translateLoading:W.isLoading??!1,translateText:W.text,translatedText:W.translatedText,translateStartGI:W.startGI,translateEndGI:W.endGI}}))},L=()=>{f(W=>({progress:{...W.progress,translateOpen:!1,translateLoading:!1,translateText:void 0,translatedText:void 0,translateStartGI:void 0,translateEndGI:void 0}}))},M=W=>{const{totalRuns:D,derivedNav:U}=C().progress,z=U==null?void 0:U.readableGi;if(!z||D<=0)return W;const H=D,Q=Math.max(0,Math.min(W,H-1));if(z[Q])return Q;let G=Q-1,ne=Q+1;for(;G>=0||ne<H;){if(ne<H&&z[ne])return ne;if(G>=0&&z[G])return G;ne+=1,G-=1}return Q},N=(W,D)=>{const{totalRuns:U,derivedNav:z}=C().progress,H=z==null?void 0:z.readableGi;if(!H||U<=0)return null;if(D>0){for(let Q=Math.min(Math.max(W,0),U-1);Q<U;Q+=1)if(H[Q])return Q}else for(let Q=Math.min(Math.max(W,0),U-1);Q>=0;Q-=1)if(H[Q])return Q;return null},Y=W=>{const{totalRuns:D,derivedNav:U}=C().progress,z=U==null?void 0:U.readableGi;if(!z||D<=0)return null;if(W>0){for(let H=D-1;H>=0;H-=1)if(z[H])return H}else for(let H=0;H<D;H+=1)if(z[H])return H;return null};return{progress:{...g,registerSectionScrollApi:k,getSectionScrollApi:T,setTotalRuns:j,setCurrentGlobalRunIndex:x,setSectionLoading:y,setPageIndex:_,setTotalPages:I,setTranslateState:B,clearTranslate:L,setRange:R,clearRange:O,extendRange:A,getRangeText:E,snapToReadable:M,nextReadableFrom:N,edgeReadable:Y,hasReadableInDir:(W,D)=>N(W+(D>0?1:-1),D)!=null,computeStepTarget:(W,D)=>{const{totalRuns:U,derivedNav:z}=C().progress;if(!U||U<=0)return W;const H=(z==null?void 0:z.groups)??[],Q=z==null?void 0:z.giToGroupIdx;if(!H.length||!Q){const J=U-1;return M(Math.max(0,Math.min(W+D,J)))}let G=Q[W]??-1;if(G<0||G>=H.length)for(let ee=0;ee<H.length;ee+=1){const J=H[ee];if(W>=J.startG&&W<=J.endG){G=ee;break}}if(G<0||G>=H.length)return Y(D)??M(W);const ne=ee=>ee>=0&&ee<H.length&&(H[ee].firstReadableGI??-1)>=0;let V=G+D;for(;V>=0&&V<H.length&&!ne(V);)V+=D;if(V<0||V>=H.length)return Y(D)??M(W+D);const Z=H[V].firstReadableGI;return Z>=0?Z:M(W+D)},giToPercentTotal:W=>{const D=C().progress.totalRuns;return!D||D<=1?0:Math.max(0,Math.min(W,D-1))/(D-1)*100},percentToGITotal:W=>{const D=C().progress.totalRuns;if(!D||D<=1)return 0;const U=Math.max(0,Math.min(W,100)),z=Math.round(U/100*(D-1));return Math.max(0,Math.min(z,D-1))}}}})}function au({children:e,initialState:t,gazeSync:n}){const r=m.useContext(ht),o=m.useMemo(()=>lu({...t,...n?n.getSnapshot():{},eventBridgeStore:r}),[t,r]);return m.useEffect(()=>{if(!n)return;const s=()=>{const i=n.getSnapshot(),u=o.getState().progress;u.canTracking===i.canTracking&&u.canToggleShowGaze===i.canToggleShowGaze&&u.showGaze===i.showGaze&&u.onToggleShowGaze===i.onToggleShowGaze&&u.handleAskCalibration===i.handleAskCalibration||o.setState(a=>({progress:{...a.progress,canTracking:i.canTracking,canToggleShowGaze:i.canToggleShowGaze,showGaze:i.showGaze,onToggleShowGaze:i.onToggleShowGaze,handleAskCalibration:i.handleAskCalibration}}))};return s(),n.subscribe(s)},[o,n]),b.jsx(lr.Provider,{value:o,children:e})}function cu({children:e,initialState:t}){const n=m.useContext(ht)??void 0,r=m.useRef(Js({init:t,recorderStore:n}));return b.jsx(ir.Provider,{value:r.current,children:e})}const uu=({pages:e,pageIndex:t,maxWidth:n})=>{const r=q(f=>f.section),o=m.useMemo(()=>{var f;return((f=r.ast)==null?void 0:f.blocks)??[]},[r]),s=K(f=>f.marginX),i=K(f=>f.lineHeight),u=K(f=>f.fontSizePx),a=K(f=>f.fontFamily),l=K(f=>f.viewportHeight),d=q(f=>{var C;return((C=f.layout)==null?void 0:C.prefix)??[]}),v=q(f=>{var C;return((C=f.derivedNav)==null?void 0:C.splitGroupsPerBlock)??[]}),h=e[t],p=m.useMemo(()=>{const f=[];return o.forEach((C,k)=>{(C.type==="paragraph"||C.type==="image")&&f.push(k)}),f},[o]),S=m.useMemo(()=>{if(!h)return[];const f=[];for(let C=h.startBlock;C<=h.endBlock;C++){const k=p[C];k!=null&&f.push(k)}return f},[h,p]),w=m.useMemo(()=>{const f=[];for(const C of S){const k=o[C];(k==null?void 0:k.type)==="paragraph"&&f.push({b:k,originalBlockIndex:C})}return f},[S,o]),c=m.useMemo(()=>{const f=new Map,C=Sr();return w.forEach((k,T)=>{f.set(k.originalBlockIndex,{idx:T,marker:yr(k.b,C)})}),f},[w]),g=(f,C,k)=>{if(!f||f.length===0)return[];const T=[];for(const j of f){const x=j.startG,y=j.endG;if(y<C||x>k)continue;const _=Math.max(x,C),I=Math.min(y,k),R=_-x|0,O=Math.max(0,I-_+1);if(O<=0)continue;const A=(j.r0??0)+R;T.push({...j,startG:_,endG:I,r0:A,len:O})}return T};return b.jsx("div",{style:{position:"relative",width:"100%",height:"100%",minHeight:0,display:"flex",alignItems:"stretch",justifyContent:"center",fontFamily:a,fontSize:u,lineHeight:i,boxSizing:"border-box"},children:b.jsxs("div",{style:{width:"100%",maxWidth:n,height:"100%",boxSizing:"border-box",overflow:"hidden",display:"flex",flexDirection:"column",margin:"0 auto"},children:[b.jsx("div",{style:{height:40}}),b.jsx("div",{style:{flex:1,overflow:"hidden"},children:S.map((f,C)=>{var U;const k=o[f],T=C===0,j=C===S.length-1,x={boxSizing:"border-box",paddingRight:`${s}px`,paddingLeft:`${s}px`,maxWidth:n,margin:"0 auto",display:"flex",width:"100%",height:"auto"},y=`sec-${r.section_id}/blk-${k.id??f}`;if(k.type==="image"){const{src:z,alt:H,width:Q,height:G}=k,ne=Q&&G?`${Q} / ${G}`:"4 / 3",V=l>80?Math.floor((l-80)*.6):void 0;return b.jsx("div",{style:x,children:b.jsxs("div",{style:{margin:"12px 0",textAlign:"center",width:"100%"},children:[b.jsx("div",{style:{position:"relative",width:"100%",maxHeight:V,aspectRatio:ne},children:b.jsx("img",{src:z,alt:H||"",loading:"eager",style:{pointerEvents:"none",position:"absolute",inset:0,width:"100%",height:"100%",objectFit:"contain",display:"block"}})}),H&&b.jsx("div",{style:{fontSize:12,color:"#6b7280",marginTop:4},children:H})]})},y)}const _=k,I=c.get(f),R=I==null?void 0:I.marker,O=_.runs??[],A=O.length;let E=0,B=Math.max(0,A-1);T&&h.startOffsetInBlock!=null&&(E=Math.min(Math.max(0,h.startOffsetInBlock),B)),j&&h.endOffsetInBlock!=null&&(B=Math.max(E,Math.min(h.endOffsetInBlock,B)));const L=E>0,M=d[f]??0,N=v[f]??[],Y=M+E,ue=M+B;let ie=g(N,Y,ue);const ae=M+E;ie=ie.map(z=>{const H=Math.max(0,(z.startG??Y)-ae),Q=z.len??Math.max(1,(z.endG??ue)-(z.startG??Y)+1);return{...z,r0:H,len:Q}});const he=E<=B?O.slice(E,B+1):[],Te=_.list?_.list.level*24:0,W=((U=_.list)==null?void 0:U.kind)==="bullet"?_.list.glyph??"•":void 0,D=L?void 0:R??W;return b.jsx("div",{style:x,children:b.jsxs("p",{style:{width:"100%",margin:"8px 0",paddingLeft:Te,textAlign:_.textAlign,whiteSpace:"pre-wrap",boxSizing:"border-box"},children:[_.list&&D?b.jsx("span",{"aria-hidden":!0,style:{minWidth:16,display:"inline-block",whiteSpace:"nowrap",userSelect:"none"},children:D||""}):null,b.jsx(ys,{preGroups:ie,runs:he,ns:y,baseIndex:ae,sectionId:String(r.section_id)})]})},y)})})]})})},nn=.5;function du(e,t){const n=m.useRef(null),r=m.useRef(null),o=m.useRef(!1);m.useEffect(()=>{const s=()=>{n.current==null&&(n.current=requestAnimationFrame(()=>{n.current=null,t(),o.current=!0,requestAnimationFrame(()=>{o.current=!1})}))},i=new ResizeObserver(a=>{if(o.current)return;const l=a[0],{width:d,height:v}=l.contentRect,h=r.current;if(!h){r.current={w:d,h:v};return}Math.abs(h.w-d)<nn&&Math.abs(h.h-v)<nn||(r.current={w:d,h:v},s())});e.forEach(a=>{a.current&&i.observe(a.current)});const u=()=>{var l;const a=(l=e[0])==null?void 0:l.current;if(a&&r.current){const d=a.offsetWidth,v=a.offsetHeight;if(Math.abs(r.current.w-d)<nn&&Math.abs(r.current.h-v)<nn)return;r.current={w:d,h:v}}s()};return window.addEventListener("resize",u),()=>{window.removeEventListener("resize",u),i.disconnect(),n.current!=null&&cancelAnimationFrame(n.current),n.current=null}},[e,t])}function fu(e){const{onPrev:t,onNext:n,onSingle:r,onDouble:o,shouldIgnoreTarget:s,shouldIgnoreSwipe:i,horizontalThreshold:u=120,velocityThreshold:a=.6,singleDelayMs:l=250,doubleClickWindowMs:d=300,onDragMove:v,onDragEnd:h,pageTransitionThreshold:p}=e,S=p??u,w=10,c=We.useRef({touchId:null,startX:0,startY:0,startT:0,swiping:!1,mouseDown:!1,mouseSwiping:!1,mStartX:0,mStartY:0,mStartT:0,capturedEl:null,prevUserSelect:"",lastTapT:0,singleTimer:null,suppressClick:!1}),g=()=>{c.current.singleTimer!=null&&(clearTimeout(c.current.singleTimer),c.current.singleTimer=null)},f=We.useCallback(E=>{if(s!=null&&s(E))return;const B=performance.now();B-c.current.lastTapT<=d&&c.current.lastTapT>0?(g(),c.current.lastTapT=0,o==null||o()):(g(),r&&(c.current.singleTimer=window.setTimeout(()=>{c.current.singleTimer=null,r()},l)),c.current.lastTapT=B)},[s,d,o,r,l]),C=We.useCallback((E,B)=>{const L=Math.abs(E)/Math.max(1,B);Math.abs(E)>=S||L>=a?E<0?n():t():h==null||h()},[S,a,n,t,h]),k=We.useCallback(E=>{if(E.touches.length!==1)return;const B=i??s;if(B!=null&&B(E.target))return;const L=E.touches[0];c.current.touchId=L.identifier,c.current.startX=L.clientX,c.current.startY=L.clientY,c.current.startT=E.timeStamp,c.current.swiping=!1},[i,s]),T=We.useCallback(E=>{if(c.current.touchId==null)return;const B=Array.from(E.touches).find(Y=>Y.identifier===c.current.touchId);if(!B)return;const L=B.clientX-c.current.startX,M=Math.abs(L),N=Math.abs(B.clientY-c.current.startY);if(!c.current.swiping)if(M>=w&&M>N)c.current.swiping=!0;else return;v==null||v(L)},[v]),j=We.useCallback(E=>{if(c.current.touchId==null)return;const B=Array.from(E.changedTouches).find(Y=>Y.identifier===c.current.touchId);if(!B)return;const L=B.clientX-c.current.startX,M=B.clientY-c.current.startY,N=E.timeStamp-c.current.startT;c.current.swiping?C(L,N):Math.abs(L)<10&&Math.abs(M)<10&&f(E.target),c.current.suppressClick=!0,c.current.touchId=null,c.current.swiping=!1},[C,f]),x=We.useCallback(()=>{c.current.swiping&&(h==null||h()),c.current.touchId=null,c.current.swiping=!1},[h]),y=We.useCallback(E=>{if(E.pointerType==="touch"||c.current.mouseDown)return;const B=i??s;B!=null&&B(E.target)||(c.current.mouseDown=!0,c.current.mouseSwiping=!1,c.current.mStartX=E.clientX,c.current.mStartY=E.clientY,c.current.mStartT=E.timeStamp,c.current.suppressClick=!1,c.current.capturedEl=E.currentTarget)},[i,s]),_=We.useCallback(E=>{if(E.pointerType==="touch"||!c.current.mouseDown)return;const B=E.clientX-c.current.mStartX,L=Math.abs(B),M=Math.abs(E.clientY-c.current.mStartY);if(!c.current.mouseSwiping)if(L>=w&&L>M){c.current.mouseSwiping=!0,c.current.suppressClick=!0;const N=c.current.capturedEl;if(N!=null&&N.setPointerCapture)try{N.setPointerCapture(E.pointerId)}catch{}c.current.prevUserSelect=document.body.style.userSelect,document.body.style.userSelect="none",E.preventDefault()}else return;v==null||v(B),E.preventDefault()},[v]),I=We.useCallback(E=>{var L;if(E.pointerType==="touch"||!c.current.mouseDown)return;if(c.current.mouseSwiping){const M=E.clientX-c.current.mStartX,N=E.timeStamp-c.current.mStartT;C(M,N),document.body.style.userSelect=c.current.prevUserSelect}const B=c.current.capturedEl;if((L=B==null?void 0:B.hasPointerCapture)!=null&&L.call(B,E.pointerId))try{B.releasePointerCapture(E.pointerId)}catch{}c.current.mouseDown=!1,c.current.mouseSwiping=!1,c.current.capturedEl=null},[C]),R=We.useCallback(E=>{E.pointerType!=="touch"&&(c.current.mouseSwiping&&(h==null||h(),document.body.style.userSelect=c.current.prevUserSelect),c.current.mouseDown=!1,c.current.mouseSwiping=!1,c.current.capturedEl=null)},[h]),O=We.useCallback(()=>{c.current.mouseSwiping&&(h==null||h(),document.body.style.userSelect=c.current.prevUserSelect),c.current.mouseDown=!1,c.current.mouseSwiping=!1,c.current.capturedEl=null},[h]),A=We.useCallback(E=>{if(c.current.suppressClick){c.current.suppressClick=!1;return}f(E.target)},[f]);return We.useEffect(()=>()=>{g(),document.body.style.userSelect=""},[]),{onTouchStart:k,onTouchMove:T,onTouchEnd:j,onTouchCancel:x,onPointerDown:y,onPointerMove:_,onPointerUp:I,onPointerCancel:R,onLostPointerCapture:O,onClick:A}}var An,go;function Ms(){if(go)return An;go=1;function e(t){var n=typeof t;return t!=null&&(n=="object"||n=="function")}return An=e,An}var Bn,ho;function pu(){if(ho)return Bn;ho=1;var e=typeof Qt=="object"&&Qt&&Qt.Object===Object&&Qt;return Bn=e,Bn}var Pn,mo;function Es(){if(mo)return Pn;mo=1;var e=pu(),t=typeof self=="object"&&self&&self.Object===Object&&self,n=e||t||Function("return this")();return Pn=n,Pn}var Ln,bo;function gu(){if(bo)return Ln;bo=1;var e=Es(),t=function(){return e.Date.now()};return Ln=t,Ln}var Gn,xo;function hu(){if(xo)return Gn;xo=1;var e=/\s/;function t(n){for(var r=n.length;r--&&e.test(n.charAt(r)););return r}return Gn=t,Gn}var Hn,vo;function mu(){if(vo)return Hn;vo=1;var e=hu(),t=/^\s+/;function n(r){return r&&r.slice(0,e(r)+1).replace(t,"")}return Hn=n,Hn}var Nn,So;function js(){if(So)return Nn;So=1;var e=Es(),t=e.Symbol;return Nn=t,Nn}var Fn,yo;function bu(){if(yo)return Fn;yo=1;var e=js(),t=Object.prototype,n=t.hasOwnProperty,r=t.toString,o=e?e.toStringTag:void 0;function s(i){var u=n.call(i,o),a=i[o];try{i[o]=void 0;var l=!0}catch{}var d=r.call(i);return l&&(u?i[o]=a:delete i[o]),d}return Fn=s,Fn}var Dn,wo;function xu(){if(wo)return Dn;wo=1;var e=Object.prototype,t=e.toString;function n(r){return t.call(r)}return Dn=n,Dn}var Wn,Co;function vu(){if(Co)return Wn;Co=1;var e=js(),t=bu(),n=xu(),r="[object Null]",o="[object Undefined]",s=e?e.toStringTag:void 0;function i(u){return u==null?u===void 0?o:r:s&&s in Object(u)?t(u):n(u)}return Wn=i,Wn}var Vn,Io;function Su(){if(Io)return Vn;Io=1;function e(t){return t!=null&&typeof t=="object"}return Vn=e,Vn}var $n,ko;function yu(){if(ko)return $n;ko=1;var e=vu(),t=Su(),n="[object Symbol]";function r(o){return typeof o=="symbol"||t(o)&&e(o)==n}return $n=r,$n}var qn,To;function wu(){if(To)return qn;To=1;var e=mu(),t=Ms(),n=yu(),r=NaN,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,i=/^0o[0-7]+$/i,u=parseInt;function a(l){if(typeof l=="number")return l;if(n(l))return r;if(t(l)){var d=typeof l.valueOf=="function"?l.valueOf():l;l=t(d)?d+"":d}if(typeof l!="string")return l===0?l:+l;l=e(l);var v=s.test(l);return v||i.test(l)?u(l.slice(2),v?2:8):o.test(l)?r:+l}return qn=a,qn}var Un,Ro;function Cu(){if(Ro)return Un;Ro=1;var e=Ms(),t=gu(),n=wu(),r="Expected a function",o=Math.max,s=Math.min;function i(u,a,l){var d,v,h,p,S,w,c=0,g=!1,f=!1,C=!0;if(typeof u!="function")throw new TypeError(r);a=n(a)||0,e(l)&&(g=!!l.leading,f="maxWait"in l,h=f?o(n(l.maxWait)||0,a):h,C="trailing"in l?!!l.trailing:C);function k(A){var E=d,B=v;return d=v=void 0,c=A,p=u.apply(B,E),p}function T(A){return c=A,S=setTimeout(y,a),g?k(A):p}function j(A){var E=A-w,B=A-c,L=a-E;return f?s(L,h-B):L}function x(A){var E=A-w,B=A-c;return w===void 0||E>=a||E<0||f&&B>=h}function y(){var A=t();if(x(A))return _(A);S=setTimeout(y,j(A))}function _(A){return S=void 0,C&&d?k(A):(d=v=void 0,p)}function I(){S!==void 0&&clearTimeout(S),c=0,d=w=v=S=void 0}function R(){return S===void 0?p:_(t())}function O(){var A=t(),E=x(A);if(d=arguments,v=this,w=A,E){if(S===void 0)return T(w);if(f)return clearTimeout(S),S=setTimeout(y,a),k(w)}return S===void 0&&(S=setTimeout(y,a)),p}return O.cancel=I,O.flush=R,O}return Un=i,Un}var Iu=Cu();const ku=Bo(Iu);function Tu(e,t=200,n,r){const o=m.useRef(e),s=m.useRef(n);m.useEffect(()=>{o.current=e},[e]),m.useEffect(()=>{s.current=n},[n]);const i=m.useMemo(()=>{const u=ku((...l)=>{o.current(...l)},t,r),a=((...l)=>{var d;(d=s.current)==null||d.call(s),u(...l)});return a.cancel=u.cancel.bind(u),a.flush=u.flush.bind(u),a},[t,r]);return m.useEffect(()=>()=>i.cancel(),[i]),i}const Ru="https://fonts.googleapis.com/css2?family=Nanum+Myeongjo:wght@400;700&family=Noto+Sans+KR:wght@300;400;500;700&family=Noto+Serif+KR:wght@400;700&display=swap";let Kn=!1;function _u(){if(Kn||typeof document>"u")return;if(document.querySelector('link[href*="fonts.googleapis.com"][href*="Noto"]')){Kn=!0;return}const t=document.createElement("link");t.rel="stylesheet",t.href=Ru,document.head.appendChild(t),Kn=!0}const Os=new Map,zs=e=>Os.get(e)??0,Mu=e=>{const t=zs(e)+1;return Os.set(e,t),t};class As extends Error{constructor(){super("calcPages canceled due to a newer invocation");Ir(this,"code","CALC_PAGES_CANCELED");this.name="CalcPagesCanceled"}}const Ye=(e,t)=>{if(e!==zs(t))throw new As},Xn=e=>{const t=getComputedStyle(e),n=parseFloat(t.marginTop||"0")||0,r=parseFloat(t.marginBottom||"0")||0;return{mt:n,mb:r}},_o=e=>{const t=e.getClientRects(),n=t.length?t[0].top:e.getBoundingClientRect().top,r=e.querySelectorAll("[data-runbox]"),o=[];return r.forEach((s,i)=>{const u=s.getClientRects(),a=u.length?u[u.length-1].bottom:n;o[i]=Math.max(0,a-n)}),o},Eu=(e,t,n)=>{if(n<16)return async(o=24)=>{Ye(e,t)};let r=0;return async(o=24)=>{r++,r%o===0&&(Ye(e,t),await new Promise(s=>requestAnimationFrame(()=>s())),Ye(e,t))}};async function ju({viewHost:e,measureRoot:t,contentArea:n,items:r,cfgMaxWidth:o,marginX:s,fontFamily:i,fontSizePx:u,lineHeight:a,showSplit:l,breakGapPx:d=0,showSlash:v,paragraphMarkers:h,playbackScale:p=1,viewportHeight:S=0,instanceId:w="default"}){var g,f,C;const c=Mu(w);if(Ye(c,w),i&&typeof document<"u"&&document.fonts){_u();try{const k=`${u}px ${i}`;await document.fonts.load(k),document.fonts.check(k)||await document.fonts.ready}catch{}}Ye(c,w);try{const k=Math.abs(p-1)>.001,T=1/p;k&&(t.style.transform=`scale(${T})`,t.style.transformOrigin="top left");const j=Math.max(0,e.offsetWidth||0),x=Math.max(0,Math.min(j,o));t.style.maxWidth=`${x}px`,Ye(c,w);let y=Math.round(n.offsetHeight||0);y||(y=Math.max(0,n.clientHeight|0));const _=1.5,I=(G,ne)=>ne+G<=y-_,R=getComputedStyle(e),O={letterSpacing:R.letterSpacing,wordSpacing:R.wordSpacing,fontKerning:R.fontKerning||"normal",fontVariantLigatures:R.fontVariantLigatures||"normal",textTransform:R.textTransform||"none",direction:R.direction||"ltr",wordBreak:R.wordBreak||"keep-all",overflowWrap:R.overflowWrap||R.wordWrap||"break-word",hyphens:R.hyphens||"manual"},A=G=>{G.style.letterSpacing=O.letterSpacing||"",G.style.wordSpacing=O.wordSpacing||"",G.style.fontKerning=O.fontKerning||"",G.style.fontVariantLigatures=O.fontVariantLigatures||"",G.style.textTransform=O.textTransform||"",G.style.direction=O.direction||"",G.style.wordBreak=O.wordBreak||"",G.style.wordWrap=O.overflowWrap||"",G.style.overflowWrap=O.overflowWrap||"",G.style.hyphens=O.hyphens||""},E=x,B=Math.max(0,E-2*(s||0));n.innerHTML="";const L=document.createElement("div");L.style.boxSizing="border-box",L.style.width=`${E}px`,L.style.maxWidth=`${E}px`,L.style.margin="0 auto",L.style.display="flex",n.appendChild(L);const M=document.createElement("div");M.style.boxSizing="border-box",M.style.paddingRight=`${s}px`,M.style.paddingLeft=`${s}px`,M.style.width=`${E}px`,M.style.maxWidth=`${E}px`,M.style.margin="0 auto",M.style.display="flex",M.style.justifyContent="center",M.style.height="auto",L.appendChild(M);const N=new Map,Y={},ue=Eu(c,w,r.length),ie=(G,ne)=>{const V=document.createElement("p");return V.style.margin="8px 0",V.style.paddingLeft=ne?`${ne}px`:"0",V.style.textAlign=G.textAlign??"start",V.style.whiteSpace="pre-wrap",V.style.lineHeight=String(a),V.style.fontSize=`${u}px`,V.style.boxSizing="border-box",V.style.fontFamily=i??"",V.style.width="100%",A(V),V},ae=(G,ne)=>{const V=ne??[],Z=document.createDocumentFragment();for(let ee=0;ee<V.length;ee++){const J=V[ee],le=document.createElement("span");le.dataset.runbox=String(ee),le.style.whiteSpace="pre-wrap";const re=document.createElement("span");if(re.dataset.run=String(ee),re.textContent=(J==null?void 0:J.text)??"",re.style.whiteSpace="pre-wrap",J!=null&&J.bold&&(re.style.fontWeight="700"),J!=null&&J.italic&&(re.style.fontStyle="italic"),J!=null&&J.underline&&(re.style.textDecoration="underline"),le.appendChild(re),l&&(J!=null&&J.split)&&ee!==V.length-1){const xe=Math.max(0,(d??0)/2),pe=document.createElement("span");pe.style.display="inline-block",pe.style.width=`${xe}px`;const we=document.createElement("span");if(we.style.display="inline-block",we.style.width=`${xe}px`,le.appendChild(pe),v){const Re=document.createElement("span");Re.textContent=" / ",le.appendChild(Re)}le.appendChild(we)}Z.appendChild(le)}G.appendChild(Z)},he=S>80?Math.floor((S-80)*.6):void 0,Te=G=>{const ne=G!=null&&G.width&&(G!=null&&G.height)?`${G.width} / ${G.height}`:"4 / 3",V=document.createElement("div");V.style.margin="12px 0",V.style.textAlign="center",V.style.width=`${B}px`;const Z=document.createElement("div");Z.style.position="relative",Z.style.width="100%",he&&(Z.style.maxHeight=`${he}px`),Z.style.aspectRatio=ne;const ee=document.createElement("div");if(ee.style.position="absolute",ee.style.inset="0",ee.style.width="100%",ee.style.height="100%",Z.appendChild(ee),V.appendChild(Z),G!=null&&G.alt){const J=document.createElement("div");J.style.fontSize="12px",J.style.color="#6B7280",J.style.marginTop="4px",J.textContent=String(G.alt),A(J),V.appendChild(J)}return V};for(let G=0;G<r.length;G++){Ye(c,w);const ne=r[G];if(M.dataset.block=String(G),M.innerHTML="",ne.kind==="image"){const we=ne.block,Re=Te(we);M.appendChild(Re);const Ae=Re.getBoundingClientRect(),{mt:je,mb:Ge}=Xn(Re);Y[G]={contentH:Math.ceil(Ae.height),mt:je,mb:Ge},await ue(24);continue}const V=ne.block,Z=V.list?(V.list.level??0)*24:0,ee=ne.paraIndex??0,J=h[ee]??(((g=V.list)==null?void 0:g.kind)==="bullet"?((f=V.list)==null?void 0:f.glyph)??"•":void 0);if(!!(V.list&&J)){const we=ie(V,Z);we.dataset.variant="with";const Re=ie(V,Z);Re.dataset.variant="no";const Ae=document.createElement("span");Ae.textContent=`${J} `,Ae.style.minWidth="16px",Ae.style.display="inline-block",Ae.style.whiteSpace="nowrap",Ae.style.userSelect="none",we.appendChild(Ae),ae(we,V.runs),ae(Re,V.runs);const je=document.createDocumentFragment();je.appendChild(we),je.appendChild(Re),M.appendChild(je)}else{const we=ie(V,Z);we.dataset.variant="with",ae(we,V.runs),M.appendChild(we)}const re=M.querySelector('p[data-variant="with"]'),xe=M.querySelector('p[data-variant="no"]'),pe=xe??re;if(re&&pe){const we=_o(re),Re=_o(pe),{mt:Ae,mb:je}=Xn(re),{mt:Ge,mb:rt}=Xn(pe),qe=((C=V.runs)==null?void 0:C.length)??0,Oe=xe?Re:we,et=xe?Ge:Ae,Qe=xe?rt:je;N.set(G,{runsLen:qe,lastBottomWith:we,lastBottomNo:Oe,mtWith:Ae,mbWith:je,mtNo:et,mbNo:Qe})}await ue(24)}Ye(c,w),M.innerHTML="";const W=(G,ne,V,Z)=>{if(ne>V)return{top:0,content:0,mb:0};const ee=Z?G.lastBottomNo:G.lastBottomWith,J=Z?G.mtNo:G.mtWith,le=Z?G.mbNo:G.mbWith,re=Z?0:J,xe=ne>0?ee[ne-1]??0:0,pe=Math.max(0,(ee[V]??0)-xe);return{top:re,content:pe,mb:le}},D=[];let U=0,z,H=null,Q=null;for(;U<r.length;){Ye(c,w);const G=U;let ne=0,V=0,Z=z;Z!=null&&H===U&&Q!=null&&(Z=Math.max(Z,Q+1));let ee=-1,J;for(;U<r.length;){if(Ye(c,w),r[U].kind==="image"){const Oe=Y[U]??{contentH:0,mt:0,mb:0},Qe=(ne===0?Oe.mt:V+Oe.mt)+Oe.contentH;if(I(Qe,ne)){ne+=Qe,ee=U,J=void 0,V=Oe.mb,U+=1,z=void 0,H=null,Q=null;continue}if(ne===0){D.push({startBlock:G,endBlock:U,...Z!=null?{startOffsetInBlock:Z}:{}}),U+=1,z=void 0,H=null,Q=null,V=0;break}break}const re=N.get(U),xe=re.runsLen,pe=U===G&&Z!=null?Z:0;if(pe>=xe){U+=1,z=void 0,H=null,Q=null;continue}const we=pe>0,Re=W(re,pe,xe-1,we),je=(ne===0?Re.top:V+Re.top)+Re.content;if(I(je,ne)){ne+=je,ee=U,J=xe-1,V=Re.mb,U+=1,z=void 0,H=null,Q=null;continue}let Ge=pe,rt=xe-1,qe=pe-1;for(;Ge<=rt;){Ye(c,w);const Oe=Ge+rt>>1,et=W(re,pe,Oe,we),Qe=(ne===0?et.top:V+et.top)+et.content;I(Qe,ne)?(qe=Oe,Ge=Oe+1):rt=Oe-1}if(qe>=pe){D.push({startBlock:G,endBlock:U,...Z!=null?{startOffsetInBlock:Z}:{},endOffsetInBlock:qe}),z=qe+1,H=U,Q=qe,V=0;break}if(ne>0){D.push({startBlock:G,endBlock:ee>=0?ee:Math.min(U-1,r.length-1),...Z!=null?{startOffsetInBlock:Z}:{},...J!=null?{endOffsetInBlock:J}:{}}),V=0;break}else{const Oe=pe;D.push({startBlock:G,endBlock:U,...Z!=null?{startOffsetInBlock:Z}:{},endOffsetInBlock:Oe}),z=Oe+1,H=U,Q=Oe,V=0;break}}(D.length===0||D[D.length-1].startBlock!==G)&&D.push({startBlock:G,endBlock:ee>=0?ee:Math.min(U-1,r.length-1),...Z!=null?{startOffsetInBlock:Z}:{},...J!=null?{endOffsetInBlock:J}:{}})}return L.remove(),k&&(t.style.transform="",t.style.transformOrigin=""),Ye(c,w),{pages:D,pageByRunIndex:null}}catch(k){throw console.error(k),k}}function Ou(e){const t=[],n=[];let r=0;return e.forEach((o,s)=>{o.type==="paragraph"?(t.push({kind:"paragraph",block:o,originalIndex:s,paraIndex:r}),n.push(s),r+=1):o.type==="image"&&t.push({kind:"image",block:o,originalIndex:s})}),{items:t,paraIndexMap:n}}function Mo(e,t,n){var r;if(!e)return null;for(let o=e.startBlock;o<=e.endBlock;o++){const s=t[o];if(!s||s.kind!=="paragraph")continue;const i=((r=s.block.runs)==null?void 0:r.length)??0;if(!i)continue;const u=o===e.startBlock&&e.startOffsetInBlock!=null?Math.min(Math.max(0,e.startOffsetInBlock),i-1):0;return(n[s.originalIndex]??0)+u}return null}function zu(e,t,n,r){var o;for(let s=0;s<t.length;s++){const i=t[s];for(let u=i.startBlock;u<=i.endBlock;u++){const a=n[u];if(!a||a.kind!=="paragraph")continue;const l=((o=a.block.runs)==null?void 0:o.length)??0;if(!l)continue;let d=0,v=l-1;u===i.startBlock&&i.startOffsetInBlock!=null&&(d=Math.max(0,Math.min(i.startOffsetInBlock,v))),u===i.endBlock&&i.endOffsetInBlock!=null&&(v=Math.max(d,Math.min(i.endOffsetInBlock,v)));const h=r[a.originalIndex]??0,p=h+d,S=h+v;if(e>=p&&e<=S)return s}}return-1}function Au(e){var r,o;const t=e;if(!t)return!1;const n=((o=(r=t.tagName)==null?void 0:r.toLowerCase)==null?void 0:o.call(r))??"";return!!(["a","button","input","textarea","select","label"].includes(n)||t.isContentEditable)}function Bu(e){var n;const t=e;return t?!!((n=t.closest)!=null&&n.call(t,"[data-range-handle]")):!1}function Pu(){var Cr;const e=m.useId(),t=q($=>$.section),n=q($=>$.sectionLoading),r=ut(),o=m.useRef(!1);m.useEffect(()=>r.subscribe($=>{o.current=$.progress.rangeStartGI!=null&&$.progress.rangeEndGI!=null}),[r]);const s=o.current,i=mt(),u=K($=>$.theme),a=sn[u],l=K($=>$.fontFamily),d=K($=>$.fontSizePx),v=K($=>$.lineHeight),h=K($=>$.marginX),p=K($=>$.viewportHeight),S=860,w=m.useRef(null),{items:c}=m.useMemo(()=>{var $;return Ou((($=t==null?void 0:t.ast)==null?void 0:$.blocks)??[])},[t]),g=m.useMemo(()=>{const $=[],ze=Sr();return c.forEach(Pe=>{if(Pe.kind==="paragraph"){const at=Pe.paraIndex;$[at]=yr(Pe.block,ze)}}),$},[c]),[f,C]=m.useState({pages:[],pageByRunIndex:null}),k=q($=>$.pageIndex),T=q($=>$.setPageIndex),j=m.useRef(0),x=m.useRef(null),[y,_]=m.useState(!1),[I,R]=m.useState(null),[O,A]=m.useState(!1),E=m.useMemo(()=>({flex:1,fontFamily:l,background:a.bg,color:a.fg,fontSize:d,lineHeight:v,overflow:"hidden",width:"100%",height:"100%",position:"relative",boxSizing:"border-box",WebkitTextSizeAdjust:"none",MozTextSizeAdjust:"none",textSizeAdjust:"none"}),[l,a.bg,a.fg,d,v]),{showSplit:B,breakGapPx:L,slash:M}=K(Vt($=>{var ze;return{showSplit:$.showSplit,breakGapPx:$.breakGapPx??0,slash:((ze=$.breakMarks)==null?void 0:ze.slash)??!1}})),N=ut();m.useEffect(()=>{f&&f.pages.length&&(N.getState().progress.setTotalPages(f.pages.length+1),(async()=>{const $=N.getState().progress.setSectionLoading;await pt(),await pt(),await pt(),await pt(),$(!1)})())},[f,N]);const Y=m.useCallback(()=>{const $=w.current,ze=re.current,Pe=xe.current;if(!$||!ze||!Pe||c.length===0){C({pages:[],pageByRunIndex:null}),T(0),N.getState().progress.setTotalPages(0);return}(async()=>{performance.now();try{const at=i.getState().playbackScale,{pages:dt,pageByRunIndex:Ot}=await ju({viewHost:$,measureRoot:ze,contentArea:Pe,items:c,cfgMaxWidth:S,marginX:h,fontFamily:l,fontSizePx:d,lineHeight:v,showSplit:B,breakGapPx:L,showSlash:M,paragraphMarkers:g,playbackScale:at,viewportHeight:p,instanceId:e}),Gd=performance.now();C({pages:dt,pageByRunIndex:Ot}),T(0)}catch(at){if(at instanceof As)return}})()},[T,c,S,h,l,d,v,B,L,M,g,i,p,e,N]),ue=q($=>$.setCurrentGlobalRunIndex),ie=q($=>{var ze;return((ze=$.layout)==null?void 0:ze.prefix)??[]}),ae=ye($=>$.syncToGI),he=m.useCallback($=>{const ze=f.pages.length+1,Pe=k+$;if(Pe<0||Pe>=ze)return;const at=k===f.pages.length;if(Pe===f.pages.length){T(Pe);return}if(at&&$===-1){const Ot=Mo(f.pages[Pe],c,ie);Ot!=null&&(ue(Ot,"scrubber-step"),ae(Ot)),T(Pe);return}const dt=Mo(f.pages[Pe],c,ie);dt!=null?(ue(dt,"scrubber-step"),ae(dt)):T(Pe)},[k,f.pages,c,ie,ue,T,ae]),Te=m.useCallback(()=>{y||j.current!==0?(R("prev"),_(!1)):he(-1)},[y,he]),W=m.useCallback(()=>{y||j.current!==0?(R("next"),_(!1)):he(1)},[y,he]),D=gn(),U=m.useCallback(()=>{const{isSettingsOpen:$,setSettingsOpen:ze,toggleOverlays:Pe}=D.getState();$?ze(!1):Pe()},[D]),z=f.pages.length+1,H=((Cr=w.current)==null?void 0:Cr.clientWidth)||400,Q=m.useCallback($=>{var dt;const ze=x.current;if(!ze)return;const Pe=((dt=w.current)==null?void 0:dt.clientWidth)||1,at=$/Pe*33.333;ze.style.transform=`translate3d(${-33.333+at}%, 0, 0)`},[]),G=m.useCallback($=>{k===0&&$>0||k>=z-1&&$<0||(j.current=$,Q($),y||_(!0))},[k,z,Q,y]),ne=m.useCallback(()=>{j.current=0,_(!1);const $=x.current;$&&($.style.transition="transform 250ms ease-out",$.style.transform="translate3d(-33.333%, 0, 0)")},[]),V=m.useCallback($=>{if($.target!==$.currentTarget||$.propertyName!=="transform")return;const ze=I;A(!0),R(null),j.current=0,ze==="prev"?he(-1):ze==="next"&&he(1)},[I,he]);m.useLayoutEffect(()=>{O&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{A(!1)})})},[O]);const Z=cn(),ee=m.useCallback($=>s||Bu($)?!0:Au($),[s]),J=m.useCallback($=>Z.getState().status==="playing"?!0:ee($),[Z,ee]),le=fu({onPrev:Te,onNext:W,onSingle:U,onDouble:()=>{},shouldIgnoreTarget:ee,shouldIgnoreSwipe:J,horizontalThreshold:120,velocityThreshold:.6,singleDelayMs:250,doubleClickWindowMs:300,onDragMove:G,onDragEnd:ne,pageTransitionThreshold:H*.5}),re=m.useRef(null),xe=m.useRef(null),pe=m.useCallback(()=>{const $=N.getState().progress.setSectionLoading;$(!0)},[N]),we=m.useMemo(()=>({trailing:!0,leading:!1,maxWait:1e3}),[]),Re=Tu(Y,200,pe,we),Ae=m.useRef("");m.useEffect(()=>{if(p<=0)return;const $=`${l}|${d}|${v}|${h}|${B}|${L}|${M}|${p}|${t==null?void 0:t.section_id}`;Ae.current!==$&&(Ae.current=$,Re.cancel(),pe(),Y())},[Re,Y,pe,l,d,v,h,B,L,M,p,t==null?void 0:t.section_id]),du([w],Re);const je=q($=>$.registerSectionScrollApi);m.useEffect(()=>(je({ensureVisibleGI:()=>Promise.resolve(!0),scrollToGI:()=>Promise.resolve(!0),getVisibleRange:()=>null,getScrollTop:()=>0,setScrollTop:()=>{},getAnchorOffsetRatio:()=>0,scrollToGIAtOffset:()=>Promise.resolve(),stepPage:he}),()=>je(void 0)),[je,he]);const Ge=t.quizzes&&t.quizzes.length>0,rt=f.pages.length>0&&k===f.pages.length,qe=k>0?k-1:null,Oe=k<z-1?k+1:null,et=m.useMemo(()=>I==="prev"?"translate3d(0%, 0, 0)":I==="next"?"translate3d(-66.666%, 0, 0)":"translate3d(-33.333%, 0, 0)",[I]),Qe=$=>n?null:$===f.pages.length?b.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:16,width:"100%",height:"100%"},children:[Ge&&b.jsx(ks,{}),b.jsx(pn,{isIcon:!1})]}):b.jsx(uu,{pages:f.pages,pageIndex:$,maxWidth:S}),It={width:"33.333%",height:"100%",flexShrink:0,display:"flex",alignItems:"stretch",justifyContent:"center",overflow:"hidden",boxSizing:"border-box",backfaceVisibility:"hidden",WebkitBackfaceVisibility:"hidden"},Sn=!O&&(!y||I!==null);return b.jsxs("div",{ref:w,style:{...E,touchAction:"none"},...le,children:[b.jsxs("div",{ref:x,style:{display:"flex",width:"300%",height:"100%",transform:et,transition:Sn?"transform 250ms ease-out":"none",willChange:"transform",boxSizing:"border-box",backfaceVisibility:"hidden",WebkitBackfaceVisibility:"hidden"},onTransitionEnd:I?V:void 0,children:[b.jsx("div",{style:It,children:qe!==null&&Qe(qe)}),b.jsx("div",{style:It,children:Qe(k)}),b.jsx("div",{style:It,children:Oe!==null&&Qe(Oe)})]}),b.jsx("div",{ref:re,"aria-hidden":!0,style:{position:"absolute",contain:"layout style paint",left:-999999,top:-999999,zIndex:-999999,opacity:0,width:"100%",maxWidth:S,height:"100%",minHeight:0,boxSizing:"border-box",overflow:"hidden",fontFamily:l,fontSize:d,lineHeight:v,pointerEvents:"none",background:"pink"},children:b.jsxs("div",{style:{width:"100%",maxWidth:S,height:"100%",boxSizing:"border-box",display:"flex",flexDirection:"column",margin:"0 auto",overflow:"hidden"},children:[b.jsx("div",{style:{height:40,background:"blue"}}),b.jsx("div",{ref:xe,style:{height:"calc(100% - 110px)",overflow:"hidden",boxSizing:"border-box",width:"100%"}})]})}),b.jsx(Lu,{pages:f.pages,items:c,onGotoPage:T,currentPageIndex:k,isOnExtraPage:rt})]})}const Lu=({pages:e,items:t,onGotoPage:n,currentPageIndex:r,isOnExtraPage:o})=>{const s=q(l=>l.currentGlobalRunIndex),i=q(l=>l.lastUpdateBy),u=q(l=>{var d;return((d=l.layout)==null?void 0:d.prefix)??[]}),a=m.useRef(null);return m.useEffect(()=>{if(s==null||e.length===0||o&&!(i==="scrubber-live"||i==="scrubber-commit")||a.current===s)return;a.current=s;const l=zu(s,e,t,u);l>=0&&l!==r&&n(l)},[s,e,t,u,n,r,o,i]),b.jsx(b.Fragment,{})},Gu="_wrapper_dbk3n_1",Hu="_spinner_dbk3n_10",Eo={wrapper:Gu,spinner:Hu};function Nu({size:e=28,speed:t=.8}){return b.jsx("div",{className:`${Eo.wrapper}`,children:b.jsx("div",{className:Eo.spinner,style:{width:e,height:e,borderWidth:3,animationDuration:`${t}s`}})})}function Fu(){const e=q(Vt(t=>t.sectionLoading===!0));return b.jsx(b.Fragment,{children:e===!0&&b.jsx(Nu,{})})}const Du="_Overlay_ybic8_3",Wu="_Dialog_ybic8_15",Vu="_Body_ybic8_25",$u="_Header_ybic8_32",qu="_Paging_ybic8_39",Uu="_Remaining_ybic8_48",Ku="_RemainingDanger_ybic8_55",Xu="_NextBtn_ybic8_59",Qu="_CloseBtn_ybic8_96",Yu="_Question_ybic8_113",Zu="_Score_ybic8_123",Ju="_Image_ybic8_130",ed="_Options_ybic8_140",td="_OptionBtn_ybic8_145",nd="_OptionBtnActive_ybic8_165",rd="_Footer_ybic8_172",od="_OptionBtnCorrect_ybic8_195",sd="_Judge_ybic8_201",id="_Correct_ybic8_212",ld="_Incorrect_ybic8_215",ad="_ResultHeader_ybic8_220",cd="_ResultActions_ybic8_233",ud="_CloseBtnSoft_ybic8_239",dd="_SummaryGrid_ybic8_249",fd="_StatCard_ybic8_257",pd="_StatLabel_ybic8_265",gd="_StatValue_ybic8_270",hd="_StatSub_ybic8_277",de={Overlay:Du,Dialog:Wu,Body:Vu,Header:$u,Paging:qu,Remaining:Uu,RemainingDanger:Ku,NextBtn:Xu,CloseBtn:Qu,Question:Yu,Score:Zu,Image:Ju,Options:ed,OptionBtn:td,OptionBtnActive:nd,Footer:rd,OptionBtnCorrect:od,Judge:sd,Correct:id,Incorrect:ld,ResultHeader:ad,ResultActions:cd,CloseBtnSoft:ud,SummaryGrid:dd,StatCard:fd,StatLabel:pd,StatValue:gd,StatSub:hd};function md(e){return e?e.kind==="temp"?e.image_blob_url:e.image_cdn_url:null}function Bs(e){var t;return(((t=e.answers)==null?void 0:t.length)??0)>1}function bd(e){const t=e.answers??[],n=[];return t.forEach(r=>{const o=e.options.findIndex(s=>s===r);o>=0&&n.push(o)}),n.sort((r,o)=>r-o)}const xd=m.memo(function(){const t=Ue(c=>c.phase),n=Ue(c=>c.quizzes),r=Ue(c=>c.order),o=Ue(c=>c.currentIndex),s=Ue(c=>c.answers),i=Ue(c=>c.correctCount),u=Ue(c=>c.remainingSec),a=Ue(c=>c.uiReveal),l=Ue(c=>c.startedAt),d=Ue(c=>c.finishedAt),v=Ue(c=>c.perQ),h=Is();m.useEffect(()=>{if(t==="idle"||t!=="doing"||u==null)return;const c=window.setInterval(()=>h.getState().tick(),1e3);return()=>window.clearInterval(c)},[t,u,h]);const p=t==="doing"?n[r[o]]:void 0,S=t==="doing"&&p?s[p.qid]??[]:[],w=m.useMemo(()=>{if(t==="idle"||t!=="finished")return;const c=r.map(M=>n[M]),g=c.length,f=c.reduce((M,N)=>M+(N.score??0),0),C=c.reduce((M,N)=>{const Y=v[N.qid];return M+(Y!=null&&Y.isCorrect?N.score??0:0)},0),k=c.map(M=>v[M.qid]).filter(M=>!!M),T=typeof l=="number"&&typeof d=="number"?Math.max(0,d-l):k.reduce((M,N)=>M+(N.ms??0),0),j=g>0?Math.round(T/g):0,x=[...k].sort((M,N)=>M.ms-N.ms),y=x[0],_=x[x.length-1],I=k.filter(M=>!M.multi),R=k.filter(M=>M.multi),O=I.filter(M=>M.isCorrect).length,A=R.filter(M=>M.isCorrect).length,E=k.filter(M=>M.timedOut).length,B=k.filter(M=>M.revealed).length,L=k.filter(M=>!M.isCorrect).sort((M,N)=>N.ms-M.ms).slice(0,3);return{total:g,correct:i,rate:g?Math.round(i/g*100):0,timeMsTotal:T,avgMs:j,totalScore:f,gainedScore:C,fastest:y,slowest:_,singles:{total:I.length,correct:O},multis:{total:R.length,correct:A},timedOut:E,revealed:B,wrongTop3:L}},[t,r,n,v,l,d,i]);return t==="idle"?null:b.jsx("div",{className:de.Overlay,role:"dialog","aria-modal":"true",children:b.jsx("div",{className:de.Dialog,children:t==="doing"&&p?b.jsx(vd,{q:p,index:o,total:r.length,selected:S,uiReveal:a,onSelect:c=>{if(a)return;const g=h.getState();Bs(p)?g.selectToggle(c):g.selectSingle(c)},onBeforeNext:()=>h.getState().setReveal(!0),onNext:()=>h.getState().afterRevealNext(),remainingSec:u,onClose:()=>h.getState().close()}):b.jsx(Sd,{total:r.length,correct:i,summary:w,retryAllowed:h.getState().retryAllowed,onClose:()=>h.getState().close(),onRetry:()=>{const g=h.getState().quizzes;if(!g.length)return;const f=g[0];h.setState({phase:"doing",currentIndex:0,answers:{},correctCount:0,startedAt:Date.now(),finishedAt:void 0,questionStartedAt:Date.now(),remainingSec:f.limit_sec||void 0,uiReveal:!1,perQ:{}})}})})})});function vd(e){const{q:t,index:n,total:r,selected:o,uiReveal:s,onSelect:i,onBeforeNext:u,onNext:a,remainingSec:l,onClose:d}=e,v=Bs(t),h=m.useMemo(()=>{const c=t.options.map((g,f)=>({opt:g,i:f}));for(let g=c.length-1;g>0;g--){const f=Math.floor(Math.random()*(g+1));[c[g],c[f]]=[c[f],c[g]]}return c},[t.options]),p=m.useMemo(()=>md(t),[t]),S=m.useMemo(()=>bd(t),[t]),w=m.useMemo(()=>{const c=[...o].sort((g,f)=>g-f);if(c.length!==S.length)return!1;for(let g=0;g<c.length;g++)if(c[g]!==S[g])return!1;return!0},[o,S]);return b.jsxs("div",{className:de.Body,children:[b.jsxs("div",{className:de.Header,children:[b.jsx("div",{className:de.Paging,children:`Quiz (${n+1}/${r})`}),b.jsx("button",{type:"button",onClick:d,className:de.CloseBtn,children:"X"})]}),b.jsx("div",{className:de.Question,children:t.question}),b.jsx("div",{className:de.Score,children:` (${t.score}점${v?" ,모두선택":""})`}),b.jsx("div",{className:`${de.Judge}${s?w?` ${de.Correct}`:` ${de.Incorrect}`:""}`,"aria-live":"polite",children:s?w?`Correct : +${t.score} point`:"Incorrect : 0 point":"a"}),b.jsx("div",{className:de.Image,children:p&&b.jsx("img",{src:p,alt:""})}),b.jsx("div",{className:de.Options,children:h.map(({opt:c,i:g})=>{const f=o.includes(g),C=S.includes(g),k=[de.OptionBtn,f?de.OptionBtnActive:"",s&&C?de.OptionBtnCorrect:""].filter(Boolean).join(" ");return b.jsx("button",{type:"button",onClick:()=>i(g),className:k,disabled:s,children:c},g)})}),b.jsx("div",{className:de.Footer,children:s?b.jsx("button",{type:"button",onClick:a,className:de.NextBtn,children:n+1>=r?"Complete":"Next Quiz"}):b.jsxs("button",{type:"button",onClick:u,className:`${de.NextBtn}`,children:["Submit",typeof l=="number"&&b.jsx("span",{className:`${de.Remaining} ${l<=5?de.RemainingDanger:""}`,children:` (${l} s )`})]})})]})}function jo(e){return e==null?"-":`${Math.round(e/1e3)}s`}function Sd(e){const{total:t,correct:n,summary:r,retryAllowed:o,onClose:s,onRetry:i}=e,u=(r==null?void 0:r.rate)??(t>0?Math.round(n/t*100):0);return b.jsxs("div",{className:de.Body,children:[b.jsx("div",{className:de.ResultHeader,children:"결과 요약"}),b.jsxs("div",{className:de.SummaryGrid,role:"list",children:[b.jsxs("div",{className:de.StatCard,role:"listitem",children:[b.jsx("div",{className:de.StatLabel,children:"정답률"}),b.jsxs("div",{className:de.StatValue,children:[u,"%"]}),b.jsx("div",{className:de.StatSub,children:`정답수 ${n}/문제수${t}`})]}),b.jsxs("div",{className:de.StatCard,role:"listitem",children:[b.jsx("div",{className:de.StatLabel,children:"총 점수"}),b.jsx("div",{className:de.StatValue,children:r?`${r.gainedScore}/${r.totalScore}`:"-"}),b.jsx("div",{className:de.StatSub,children:"획득점수/최대점수"})]}),b.jsxs("div",{className:de.StatCard,role:"listitem",children:[b.jsx("div",{className:de.StatLabel,children:"총 소요 시간"}),b.jsx("div",{className:de.StatValue,children:jo(r==null?void 0:r.timeMsTotal)}),b.jsx("div",{className:de.StatSub,children:`평균 ${jo(r==null?void 0:r.avgMs)}`})]}),b.jsxs("div",{className:de.StatCard,role:"listitem",children:[b.jsx("div",{className:de.StatLabel,children:"타입오버 퀴즈수"}),b.jsx("div",{className:de.StatValue,children:r?`${r.timedOut}`:"-"}),b.jsx("div",{className:de.StatSub,children:"timeout"})]})]}),b.jsxs("div",{className:de.ResultActions,children:[o&&b.jsx("button",{type:"button",onClick:i,className:de.CloseBtnSoft,children:"다시 풀기"}),b.jsx("button",{type:"button",onClick:s,className:de.CloseBtnSoft,children:"닫기"})]})]})}function yd(e){return e.map((t,n)=>n)}function wd(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Qn(e){var t;return(((t=e.answers)==null?void 0:t.length)??0)>1}function Yn(e){const t=e.answers??[],n=[];return t.forEach(r=>{const o=e.options.findIndex(s=>s===r);o>=0&&n.push(o)}),n.sort((r,o)=>r-o)}function Oo(e){if(!e)return{};const t=(e.quizzes??[]).slice().sort((n,r)=>n.index-r.index);return{sectionId:e.section_id,quizzes:t,order:yd(t),currentIndex:0,answers:{},correctCount:0,startedAt:void 0,finishedAt:void 0,questionStartedAt:void 0,remainingSec:void 0,uiReveal:!1,perQ:{}}}function Cd(e,t){const n=(t==null?void 0:t.retryAllowed)??!0,r=(t==null?void 0:t.previousResult)??null,o={phase:"idle",sectionId:void 0,quizzes:[],order:[],currentIndex:0,answers:{},correctCount:0,startedAt:void 0,finishedAt:void 0,questionStartedAt:void 0,remainingSec:void 0,uiReveal:!1,perQ:{},retryAllowed:n,previousResult:r},s=Oo(e);return $t()((u,a)=>({...o,...s,hydrateFromSection:l=>{if(!l)return;const d=Oo(l);u(d)},openFromSection:l=>{l&&a().hydrateFromSection(l);const d=a();if(!d.quizzes.length)return;if(!d.retryAllowed&&d.previousResult){const h={};for(const p of d.previousResult.perQuestion)h[p.qid]={qid:p.qid,index:p.index,question:p.question,score:p.score,multi:p.correctIdxes.length>1,selected:p.selected,correctIdxes:p.correctIdxes,isCorrect:p.isCorrect,ms:p.ms,revealed:!0,timedOut:p.timedOut};u({phase:"finished",correctCount:d.previousResult.correct,perQ:h,startedAt:void 0,finishedAt:void 0});return}const v=d.quizzes[0];u({phase:"doing",startedAt:Date.now(),finishedAt:void 0,questionStartedAt:Date.now(),remainingSec:v.limit_sec||void 0,currentIndex:0,uiReveal:!1})},close:()=>{u({phase:"idle",sectionId:void 0,quizzes:[],order:[],currentIndex:0,answers:{},correctCount:0,startedAt:void 0,finishedAt:void 0,questionStartedAt:void 0,remainingSec:void 0,uiReveal:!1,perQ:{}})},selectToggle:l=>{const d=a();if(d.phase!=="doing"||d.uiReveal)return;const h=d.quizzes[d.order[d.currentIndex]].qid,p=d.answers[h]??[],S=p.includes(l)?p.filter(w=>w!==l):[...p,l].sort((w,c)=>w-c);u({answers:{...d.answers,[h]:S}})},selectSingle:l=>{const d=a();if(d.phase!=="doing"||d.uiReveal)return;const h=d.quizzes[d.order[d.currentIndex]].qid;u({answers:{...d.answers,[h]:[l]}})},submitCurrent:()=>{const l=a();if(l.phase!=="doing")return;const d=l.order[l.currentIndex],v=l.quizzes[d],h=v.qid,p=(l.answers[h]??[]).slice().sort((C,k)=>C-k),S=Yn(v),w=wd(p,S),c=l.questionStartedAt?Date.now()-l.questionStartedAt:0,g=l.perQ[h],f={qid:h,index:v.index,question:v.question,score:v.score??0,multi:Qn(v),selected:p,correctIdxes:S,isCorrect:w,ms:c,revealed:(g==null?void 0:g.revealed)??!1,timedOut:(g==null?void 0:g.timedOut)??!1};if(u({correctCount:l.correctCount+(w?1:0),perQ:{...l.perQ,[h]:f}}),l.currentIndex+1>=l.order.length)u({uiReveal:!1,remainingSec:void 0}),a().finish();else{const C=l.currentIndex+1;u({currentIndex:C,questionStartedAt:Date.now(),remainingSec:l.quizzes[l.order[C]].limit_sec||void 0,uiReveal:!1})}},setReveal:l=>{const d=a();if(d.phase==="doing"){if(l){const v=d.quizzes[d.order[d.currentIndex]],h=v.qid,p=d.perQ[h],S={qid:h,index:v.index,question:v.question,score:v.score??0,multi:Qn(v),selected:(p==null?void 0:p.selected)??[],correctIdxes:(p==null?void 0:p.correctIdxes)??Yn(v),isCorrect:(p==null?void 0:p.isCorrect)??!1,ms:(p==null?void 0:p.ms)??0,revealed:!0,timedOut:(p==null?void 0:p.timedOut)??!1};u({perQ:{...d.perQ,[h]:S}})}u({uiReveal:l})}},afterRevealNext:()=>{a().phase==="doing"&&a().submitCurrent()},next:()=>{const l=a();if(l.phase!=="doing"||l.currentIndex+1>=l.order.length)return;const d=l.currentIndex+1;u({currentIndex:d,questionStartedAt:Date.now(),remainingSec:l.quizzes[l.order[d]].limit_sec||void 0,uiReveal:!1})},prev:()=>{const l=a();if(l.phase!=="doing"||l.currentIndex<=0)return;const d=l.currentIndex-1;u({currentIndex:d,questionStartedAt:Date.now(),remainingSec:l.quizzes[l.order[d]].limit_sec||void 0,uiReveal:!1})},finish:()=>{u({phase:"finished",remainingSec:void 0,uiReveal:!1,finishedAt:Date.now()})},tick:()=>{const l=a();if(l.phase!=="doing"||l.remainingSec==null)return;const d=l.remainingSec-1;if(d<=0){const v=l.quizzes[l.order[l.currentIndex]],h=v.qid,p=l.perQ[h],S={qid:h,index:v.index,question:v.question,score:v.score??0,multi:Qn(v),selected:(p==null?void 0:p.selected)??[],correctIdxes:(p==null?void 0:p.correctIdxes)??Yn(v),isCorrect:(p==null?void 0:p.isCorrect)??!1,ms:(p==null?void 0:p.ms)??0,revealed:!0,timedOut:!0};u({remainingSec:0,uiReveal:!0,perQ:{...l.perQ,[h]:S}})}else u({remainingSec:d})}}))}function Id({children:e,initialState:t}){const n=m.useMemo(()=>Cd(t.section,{retryAllowed:t.quizRetryAllowed??!0,previousResult:t.previousQuizResult??null}),[t]),r=m.useRef(t.onQuizStart),o=m.useRef(t.onQuizComplete);return m.useEffect(()=>{r.current=t.onQuizStart},[t.onQuizStart]),m.useEffect(()=>{o.current=t.onQuizComplete},[t.onQuizComplete]),m.useEffect(()=>{const s=n.subscribe((i,u)=>{var a;if(u.phase!=="doing"&&i.phase==="doing"&&((a=r.current)==null||a.call(r)),u.phase!=="finished"&&i.phase==="finished"){const l=o.current;if(!l||!i.retryAllowed&&i.previousResult&&!i.startedAt)return;const{sectionId:d,quizzes:v,order:h,perQ:p,startedAt:S,finishedAt:w}=i,c=h.map(y=>v[y]),g=c.length,f=c.filter(y=>{var _;return(_=p[y.qid])==null?void 0:_.isCorrect}).length,C=c.reduce((y,_)=>y+(_.score??0),0),k=c.reduce((y,_)=>{const I=p[_.qid];return y+(I!=null&&I.isCorrect?_.score??0:0)},0),T=typeof S=="number"&&typeof w=="number"?Math.max(0,w-S):0,j=c.map(y=>{const _=p[y.qid];return{qid:y.qid,index:y.index,question:y.question,score:y.score??0,isCorrect:(_==null?void 0:_.isCorrect)??!1,selected:(_==null?void 0:_.selected)??[],correctIdxes:(_==null?void 0:_.correctIdxes)??[],ms:(_==null?void 0:_.ms)??0,timedOut:(_==null?void 0:_.timedOut)??!1}}),x={sectionId:d??"",total:g,correct:f,rate:g>0?Math.round(f/g*100):0,totalScore:C,gainedScore:k,timeMsTotal:T,perQuestion:j};l(x)}});return()=>s()},[n]),b.jsx(wr.Provider,{value:n,children:e})}const zo=["mode","theme","fontFamily","fontSizePx","lineHeight","marginX","marginY","pointerStyle","pointerColor","breakMarks","breakGapPx","muteAudio","audioSpeed","showPointer","showSplit","showOverlays","overlayCompactMode","isSettingsOpen"];function kd({containerRef:e}){const t=mt(),n=gn(),r=m.useRef(null);return m.useEffect(()=>{const o=e.current;if(!o)return;let s=o.clientWidth,i=o.clientHeight;n.getState().setViewportSize(s,i);const u=new ResizeObserver(()=>{const a=o.clientWidth,l=o.clientHeight;(a!==s||l!==i)&&(s=a,i=l,n.getState().setViewportSize(a,l),t.getState().emit({type:"viewport_resize",payload:{width:a,height:l}}))});return u.observe(o),()=>u.disconnect()},[t,n,e]),m.useEffect(()=>{const o=n.getState();r.current={};for(const i of zo)r.current[i]=o[i];const s=n.subscribe(i=>{const u=r.current;if(u)for(const a of zo){const l=u[a],d=i[a];l!==d&&(a==="mode"?t.getState().emit({type:"mode_change",payload:{mode:d}}):t.getState().emit({type:"settings_change",payload:{key:a,value:d}}),u[a]=d)}});return()=>{s(),r.current=null}},[t,n]),null}function Td(){const e=mt(),t=gn(),n=ut(),r=m.useContext(Lo),o=m.useContext(vn),s=m.useCallback(a=>{const{viewerState:l}=a;if(l){l.mode&&t.getState().setMode(l.mode);const{...h}=l;t.setState(h)}if(typeof a.globalIndex=="number"&&n.getState().progress.setCurrentGlobalRunIndex(a.globalIndex,"playback"),(l==null?void 0:l.mode)==="scroll"||!(l!=null&&l.mode)){const h=()=>{const p=n.getState().progress.getSectionScrollApi();if(!p)return!1;if(a.scrollY===0)p.setScrollTop(0);else if(p.scrollToGIAtOffset){const S=a.anchorGI??a.globalIndex;if(typeof S=="number"){const w=a.anchorOffsetRatio??0;p.scrollToGIAtOffset(S,w)}}return!0};if(!h()){let p=0;const S=setInterval(()=>{(h()||++p>=10)&&clearInterval(S)},50)}}a.audio&&o&&o.getState()._setStatusOnly(a.audio.status);const v=n.getState().progress;a.range?v.setRange(a.range.startGI,a.range.endGI):v.clearRange(),a.translate&&a.translate.isOpen?v.setTranslateState({isOpen:!0,isLoading:a.translate.isLoading,text:a.translate.text,translatedText:a.translate.translatedText,startGI:a.translate.startGI,endGI:a.translate.endGI}):v.clearTranslate()},[t,n,o]),i=m.useCallback(()=>{var T,j,x,y;const a=t.getState(),l=n.getState().progress,d=(T=l.getSectionScrollApi)==null?void 0:T.call(l),v=l.currentGlobalRunIndex??0,h=((j=d==null?void 0:d.getScrollTop)==null?void 0:j.call(d))??0,p=((x=d==null?void 0:d.getAnchorOffsetRatio)==null?void 0:x.call(d,v))??0,S=o==null?void 0:o.getState(),w=S?{status:S.status,currentClip:S.currentClip,currentTimeMs:S.currentTimeMs}:void 0,{rangeStartGI:c,rangeEndGI:g}=l,f=c!=null&&g!=null?{startGI:c,endGI:g,text:l.getRangeText()}:null,C=((y=d==null?void 0:d.getScrollRatio)==null?void 0:y.call(d))??0,k=l.translateOpen?{isOpen:!0,isLoading:l.translateLoading,text:l.translateText,translatedText:l.translatedText,startGI:l.translateStartGI,endGI:l.translateEndGI}:null;return{viewerState:{mode:a.mode,theme:a.theme,fontFamily:a.fontFamily,fontSizePx:a.fontSizePx,lineHeight:a.lineHeight,marginX:a.marginX,marginY:a.marginY,showOverlays:a.showOverlays,isSettingsOpen:a.isSettingsOpen,pointerStyle:a.pointerStyle,pointerColor:a.pointerColor,breakMarks:a.breakMarks,breakGapPx:a.breakGapPx,muteAudio:a.muteAudio,audioSpeed:a.audioSpeed,showPointer:a.showPointer,showSplit:a.showSplit,overlayCompactMode:a.overlayCompactMode,viewportWidth:a.viewportWidth,viewportHeight:a.viewportHeight},globalIndex:v,scrollY:h,scrollRatio:C,anchorGI:v,anchorOffsetRatio:p,currentPage:l.pageIndex??0,totalPages:l.totalPages,sectionId:l.sectionId??"",viewportWidth:a.viewportWidth,viewportHeight:a.viewportHeight,audio:w,range:f,translate:k}},[t,n,o]),u=m.useCallback(a=>{switch(a.type){case"global_index_change":{const{globalIndex:l}=a.payload;n.getState().progress.setCurrentGlobalRunIndex(l,"playback");break}case"scroll":{if(t.getState().mode==="page")break;const{scrollTop:d,anchorGI:v,anchorOffsetRatio:h}=a.payload,p=n.getState().progress.getSectionScrollApi();if(!p)break;d===0?p.setScrollTop(0):p.scrollToGIAtOffset&&typeof v=="number"&&p.scrollToGIAtOffset(v,h);break}case"settings_change":{const{key:l,value:d}=a.payload,v=t.getState();l in v&&typeof v[l]!="function"&&t.setState({[l]:d});break}case"mode_change":{const{mode:l}=a.payload;t.getState().setMode(l);break}case"audio_control":{if(!o)break;const{action:l}=a.payload;switch(l){case"play":o.getState()._setStatusOnly("playing");break;case"pause":o.getState()._setStatusOnly("paused");break;case"stop":o.getState()._setStatusOnly("idle");break}break}case"page_change":{const{pageIndex:l}=a.payload;n.getState().progress.setPageIndex(l);break}case"range_select":case"range_change":{const{startGI:l,endGI:d}=a.payload;n.getState().progress.setRange(l,d),n.getState().progress;break}case"range_clear":{n.getState().progress.clearRange();break}case"translate_request":{const{text:l,startGI:d,endGI:v}=a.payload;n.getState().progress.setTranslateState({isOpen:!0,isLoading:!0,text:l,startGI:d,endGI:v});break}case"translate_loading_start":{n.getState().progress.setTranslateState({isOpen:!0,isLoading:!0});break}case"translate_loading_end":{const{originalText:l,translatedText:d}=a.payload;n.getState().progress.setTranslateState({isOpen:!0,isLoading:!1,text:l,translatedText:d});break}case"translate_modal_close":{n.getState().progress.clearTranslate();break}case"render_start":case"loading_start":case"loading_end":case"viewport_resize":break;default:console.log("[DirectPlaybackController] 미처리 이벤트:",a.type)}},[n,t,o]);return m.useLayoutEffect(()=>r?(r.current={dispatch:u,applySnapshot:s,getSnapshot:i,isReady:()=>!n.getState().progress.sectionLoading,waitUntilReady:()=>new Promise(l=>{if(!n.getState().progress.sectionLoading){l();return}const d=n.subscribe(v=>{v.progress.sectionLoading||(d(),l())})})},e.getState().isPlaybackMode&&(e.getState().setDispatchHandler(u),e.getState().setApplySnapshotHandler(s)),()=>{e.getState().setDispatchHandler(null),e.getState().setApplySnapshotHandler(null)}):void 0,[r,e,u,s,i,n]),m.useLayoutEffect(()=>e.subscribe((l,d)=>{l.isPlaybackMode&&!d.isPlaybackMode?(e.getState().setDispatchHandler(u),e.getState().setApplySnapshotHandler(s)):!l.isPlaybackMode&&d.isPlaybackMode&&(e.getState().setDispatchHandler(null),e.getState().setApplySnapshotHandler(null))}),[e,u,s]),null}function Rd(e){const t=e.querySelectorAll("[data-gi]");if(t.length<2)return 0;const n=[];let r=null,o=-1/0;for(let s=0;s<t.length;s++){const i=t[s].getBoundingClientRect();if(r&&Math.abs(i.top-o)<i.height*.5){const u=i.left-r.right;u>=0&&n.push(u)}r=i,o=i.top}return n.length===0?0:n.reduce((s,i)=>s+i,0)/n.length}function _d({containerRef:e}){const t=K(d=>d.fontSizePx),n=K(d=>d.fontFamily),r=K(d=>d.lineHeight),o=K(d=>d.marginX),s=K(d=>d.breakMarks),i=K(d=>d.breakGapPx),u=K(d=>d.showSplit),a=K(d=>d.viewportWidth),l=mt();return m.useEffect(()=>{const d=e.current;if(!d)return;let v;const h=requestAnimationFrame(()=>{v=requestAnimationFrame(()=>{const p=Rd(d);l.setState({wordAvgDistancePx:p})})});return()=>{cancelAnimationFrame(h),cancelAnimationFrame(v)}},[e,l,t,n,r,o,s,i,u,a]),null}const Md=({containerRef:e,onTranslate:t})=>{const n=q(h=>h.rangeStartGI),r=q(h=>h.rangeEndGI),o=q(h=>h.getRangeText),s=q(h=>h.clearRange),i=mt(),u=n!=null&&r!=null,[a,l]=m.useState(null);m.useEffect(()=>{if(!u)return;const h=e.current;if(!h)return;let p=!0;const S=new ResizeObserver(()=>{if(p){p=!1;return}s()});return S.observe(h),()=>S.disconnect()},[u,s,e]),m.useEffect(()=>{if(!u||n==null||r==null){l(null);return}const h=()=>{const c=e.current;if(!c)return;const g=c.getBoundingClientRect(),C=1/(i.getState().playbackScale||1),k=c.querySelector(`[data-g="${r}"]`);if(!k){l({x:g.width*C/2,y:80});return}const T=k.getBoundingClientRect(),j=c.querySelector(`[data-g="${n}"]`),x=j==null?void 0:j.getBoundingClientRect();let y=(T.left+T.width/2-g.left)*C;x&&(y=((x.left+T.right)/2-g.left)*C);const _=160,I=50,R=16,O=12,A=g.width*C,E=Math.max(R+_/2,Math.min(y,A-R-_/2)),B=(((x==null?void 0:x.top)??T.top)-g.top)*C-I-O;let L=B;B<R&&(L=(T.bottom-g.top)*C+O),l({x:E,y:L})};h();const p=e.current;let S=0;const w=()=>{S||(S=requestAnimationFrame(()=>{S=0,h()}))};return p&&p.addEventListener("scroll",w,!0),()=>{S&&cancelAnimationFrame(S),p&&p.removeEventListener("scroll",w,!0)}},[u,n,r,e,i]);const d=m.useCallback(()=>{const h=o();h&&navigator.clipboard.writeText(h).catch(p=>{console.error("복사 실패:",p)}),s()},[o,s]),v=m.useCallback(()=>{const h=o();h&&t&&t(h)},[o,t]);return!u||!a?null:b.jsxs("div",{"data-range-menu":!0,style:{position:"absolute",left:a.x,top:a.y,transform:"translateX(-50%)",display:"flex",gap:8,padding:"8px 12px",backgroundColor:"#fff",borderRadius:8,boxShadow:"0 4px 12px rgba(0, 0, 0, 0.3)",zIndex:1e4},children:[b.jsx("button",{onClick:d,style:{padding:"8px 16px",backgroundColor:"#3b82f6",color:"#fff",border:"none",borderRadius:6,fontSize:14,fontWeight:500,cursor:"pointer",whiteSpace:"nowrap"},children:"복사"}),b.jsx("button",{onClick:v,style:{padding:"8px 16px",backgroundColor:"#10b981",color:"#fff",border:"none",borderRadius:6,fontSize:14,fontWeight:500,cursor:"pointer",whiteSpace:"nowrap"},children:"번역"})]})},Ed="_handleStart_1ihf3_16 _handle_1ihf3_1",jd="_handleEnd_1ihf3_21 _handle_1ihf3_1",Ao={handleStart:Ed,handleEnd:jd},Od=({containerRef:e})=>{const t=q(c=>c.rangeStartGI),n=q(c=>c.rangeEndGI),r=q(c=>c.setRange),o=mt(),s=t!=null&&n!=null,[i,u]=m.useState(null),[a,l]=m.useState(null),d=m.useRef(null),v=m.useRef({startGI:t,endGI:n});v.current={startGI:t,endGI:n};const h=m.useRef(r);h.current=r,m.useEffect(()=>{if(!s||t==null||n==null){u(null),l(null);return}const c=()=>{const f=e.current;if(!f)return;const C=f.getBoundingClientRect(),T=1/(o.getState().playbackScale||1),j=f.querySelector(`[data-g="${t}"]`),x=f.querySelector(`[data-g="${n}"]`);if(j){const y=j.getBoundingClientRect();u({x:(y.left-C.left)*T,y:(y.bottom-C.top)*T})}else u(null);if(x){const y=x.getBoundingClientRect();l({x:(y.right-C.left)*T,y:(y.bottom-C.top)*T})}else l(null)};c();const g=e.current;return g&&g.addEventListener("scroll",c,!0),window.addEventListener("resize",c),()=>{g&&g.removeEventListener("scroll",c,!0),window.removeEventListener("resize",c)}},[s,t,n,e,o]);const p=m.useCallback((c,g)=>{var C;const f=document.elementsFromPoint(c,g);for(const k of f){const T=(C=k.getAttribute)==null?void 0:C.call(k,"data-g");if(T!=null)return parseInt(T,10)}return null},[]);m.useEffect(()=>{const c=f=>{if(!d.current)return;const{startGI:C,endGI:k}=v.current;if(C==null||k==null)return;const T=p(f.clientX,f.clientY);T!=null&&(d.current==="start"?T<=k?h.current(T,k):(h.current(k,T),d.current="end"):T>=C?h.current(C,T):(h.current(T,C),d.current="start"))},g=()=>{d.current=null,setTimeout(()=>{Zr(!1)},50)};return document.addEventListener("pointermove",c),document.addEventListener("pointerup",g),document.addEventListener("pointercancel",g),()=>{document.removeEventListener("pointermove",c),document.removeEventListener("pointerup",g),document.removeEventListener("pointercancel",g)}},[p]);const S=m.useCallback(c=>g=>{g.preventDefault(),g.stopPropagation(),d.current=c,Zr(!0)},[]);return s?b.jsxs(b.Fragment,{children:[i&&b.jsx("div",{className:Ao.handleStart,"data-range-handle":"start",style:{left:i.x-26,top:i.y},onPointerDown:S("start")}),a&&b.jsx("div",{className:Ao.handleEnd,"data-range-handle":"end",style:{left:a.x,top:a.y},onPointerDown:S("end")})]}):null};function zd(){const e=q(o=>o.rangeStartGI),t=q(o=>o.rangeEndGI),n=q(o=>o.clearRange),r=e!=null&&t!=null;return m.useEffect(()=>{if(!r)return;const o=s=>{var u;if(Ss())return;const i=s.target;if(!(i.closest("[data-range-menu]")||i.closest("[data-range-handle]"))){if(i.closest("[data-g]")){const a=(u=i.closest("[data-g]"))==null?void 0:u.getAttribute("data-g");if(a){const l=parseInt(a,10),d=Math.min(e,t),v=Math.max(e,t);if(l>=d&&l<=v)return}}n()}};return document.addEventListener("click",o,!0),()=>document.removeEventListener("click",o,!0)},[r,e,t,n]),null}const Ad=({isOpen:e,isLoading:t=!1,onClose:n,text:r,translatedText:o})=>e?b.jsx("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(0, 0, 0, 0.5)",zIndex:10001},onClick:n,children:b.jsxs("div",{style:{position:"relative",backgroundColor:"#fff",borderRadius:12,padding:"24px 32px",minWidth:280,maxWidth:"80%",boxShadow:"0 8px 32px rgba(0, 0, 0, 0.2)"},onClick:s=>s.stopPropagation(),children:[b.jsx("button",{onClick:n,style:{position:"absolute",top:12,right:12,width:28,height:28,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"transparent",border:"none",borderRadius:"50%",cursor:"pointer",fontSize:20,color:"#666"},"aria-label":"닫기",children:"✕"}),b.jsx("h3",{style:{margin:"0 0 16px 0",fontSize:18,fontWeight:600,color:"#333"},children:"번역"}),r&&b.jsx("div",{style:{padding:12,backgroundColor:"#f5f5f5",borderRadius:8,fontSize:14,color:"#555",maxHeight:100,overflow:"auto",marginBottom:12},children:r}),t?b.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"16px 0",gap:8,color:"#888",fontSize:15},children:[b.jsx("span",{style:{display:"inline-block",width:18,height:18,border:"2px solid #ccc",borderTopColor:"#3b82f6",borderRadius:"50%",animation:"cr-translate-spin 0.8s linear infinite"}}),"번역 중...",b.jsx("style",{children:"@keyframes cr-translate-spin { to { transform: rotate(360deg); } }"})]}):o?b.jsx("div",{style:{padding:12,backgroundColor:"#eef7ff",borderRadius:8,fontSize:15,color:"#333",maxHeight:150,overflow:"auto",lineHeight:1.5},children:o}):b.jsx("p",{style:{margin:0,fontSize:16,color:"#666",textAlign:"center",padding:"16px 0"},children:"준비중입니다"})]})}):null,Bd=(e,t,n)=>Math.min(n,Math.max(t,e));function Pd({section:e,initialViewerState:t,initialProgressRunIndex:n,onViewerClose:r,onSectionNav:o,isCanPrev:s=!1,isCanNext:i=!1,onQuizStart:u,onQuizComplete:a,quizRetryAllowed:l,previousQuizResult:d,onViewerEvent:v,viewerRef:h,gazeSync:p,onRequestTranslate:S,isPlaybackMode:w=!1,playbackScale:c,isDev:g=!1}){const f=String((e==null?void 0:e.section_id)??"0"),C=m.useMemo(()=>{var _,I;const x=((_=e==null?void 0:e.ast)==null?void 0:_.blocks)??[];let y=0;for(const R of x)(R==null?void 0:R.type)!=="image"&&(y+=((I=R==null?void 0:R.runs)==null?void 0:I.length)??0);return y},[e]),k=m.useMemo(()=>typeof n=="number"?Bd(n,C>0?0:-1,Math.max(C-1,-1)):(C>0,0),[n,C]),T=m.useMemo(()=>({section:e,initialIndex:k,onViewerClose:r,onSectionNav:o,isCanPrev:s,isCanNext:i}),[e,k,r,o,s,i]),j=m.useMemo(()=>{const x=(e==null?void 0:e.audios)??[],y=x.length>0?ru(e):void 0;return{clips:x,map:y,initialIndex:k,section:e}},[e,k]);return b.jsx(Qs,{onViewerEvent:v,isPlaybackMode:w,playbackScale:c,viewerRef:h,children:b.jsx(cu,{initialState:{...t,isDev:g},children:b.jsx(au,{initialState:T,gazeSync:p,children:b.jsx(nu,{initialState:j,children:b.jsx(Id,{initialState:{section:e,onQuizStart:u,onQuizComplete:a,quizRetryAllowed:l,previousQuizResult:d},children:b.jsx(Ld,{onRequestTranslate:S})},f)},f)},f)})})}function Ld({onRequestTranslate:e}){const t=K(S=>S.mode),n=m.useRef(null),r=mt(),o=ut(),s=q(S=>S.translateOpen),i=q(S=>S.translateLoading),u=q(S=>S.translateText),a=q(S=>S.translatedText),l=m.useRef(null),d=m.useCallback(S=>{var k;const{rangeStartGI:w,rangeEndGI:c}=o.getState().progress,g=w??0,f=c??0;if(r.getState().emit({type:"translate_request",payload:{text:S,startGI:g,endGI:f}}),!e){o.getState().progress.setTranslateState({isOpen:!0,isLoading:!1,text:S,startGI:g,endGI:f});return}o.getState().progress.setTranslateState({isOpen:!0,isLoading:!0,text:S,startGI:g,endGI:f}),(k=l.current)==null||k.abort();const C=new AbortController;l.current=C,e(S,C.signal).then(T=>{if(!C.signal.aborted){if(T==null){o.getState().progress.clearTranslate();return}o.getState().progress.setTranslateState({isOpen:!0,isLoading:!1,text:S,translatedText:T,startGI:g,endGI:f}),r.getState().emit({type:"translate_loading_end",payload:{originalText:S,translatedText:T}})}}).catch(T=>{if(C.signal.aborted)return;const j=T instanceof Error?T.message:"번역 실패";o.getState().progress.setTranslateState({isOpen:!0,isLoading:!1,text:S,translatedText:`[오류] ${j}`,startGI:g,endGI:f})})},[r,o,e]),v=m.useCallback(()=>{var S;(S=l.current)==null||S.abort(),l.current=null,o.getState().progress.clearTranslate(),r.getState().emit({type:"translate_modal_close",payload:{}})},[r,o]),h=S=>{S.preventDefault()},p=S=>{S.preventDefault()};return b.jsxs("div",{ref:n,onContextMenu:h,onDragStart:p,style:{position:"relative",display:"flex",flexDirection:"column",height:"100%",width:"100%",WebkitTextSizeAdjust:"100%",textSizeAdjust:"100%",userSelect:"none",WebkitUserSelect:"none",WebkitTouchCallout:"none",touchAction:"none"},children:[t==="scroll"?b.jsx(va,{}):b.jsx(Pu,{}),b.jsx(Md,{containerRef:n,onTranslate:d}),b.jsx(Od,{containerRef:n}),b.jsx(Xc,{}),b.jsx(xd,{}),b.jsx(Fu,{}),b.jsx(zd,{}),b.jsx(Ad,{isOpen:s,isLoading:i,onClose:v,text:u,translatedText:a}),b.jsx(kd,{containerRef:n}),b.jsx(Td,{}),b.jsx(_d,{containerRef:n})]})}exports.CRViewer=Pd;
|
|
34
|
+
*/var Mr;function Ws(){return Mr||(Mr=1,process.env.NODE_ENV!=="production"&&(function(){function e(l,d){return l===d&&(l!==0||1/l===1/d)||l!==l&&d!==d}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var t=m,n=Po(),r=typeof Object.is=="function"?Object.is:e,o=n.useSyncExternalStore,s=t.useRef,i=t.useEffect,u=t.useMemo,a=t.useDebugValue;In.useSyncExternalStoreWithSelector=function(l,d,v,h,p){var y=s(null);if(y.current===null){var w={hasValue:!1,value:null};y.current=w}else w=y.current;y=u(function(){function g(j){if(!f){if(f=!0,C=j,j=h(j),p!==void 0&&w.hasValue){var x=w.value;if(p(x,j))return T=x}return T=j}if(x=T,r(C,j))return x;var S=h(j);return p!==void 0&&p(x,S)?(C=j,x):(C=j,T=S)}var f=!1,C,T,k=v===void 0?null:v;return[function(){return g(d())},k===null?void 0:function(){return g(k())}]},[d,v,h,p]);var c=o(l,y[0],y[1]);return i(function(){w.hasValue=!0,w.value=c},[c]),a(c),c},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()),In}var Er;function Vs(){return Er||(Er=1,process.env.NODE_ENV==="production"?Yt.exports=Ds():Yt.exports=Ws()),Yt.exports}var $s=Vs();const qs=Bo($s),jr=e=>{let t;const n=new Set,r=(l,d)=>{const v=typeof l=="function"?l(t):l;if(!Object.is(v,t)){const h=t;t=d??(typeof v!="object"||v===null)?v:Object.assign({},t,v),n.forEach(p=>p(t,h))}},o=()=>t,u={setState:r,getState:o,getInitialState:()=>a,subscribe:l=>(n.add(l),()=>n.delete(l))},a=t=e(r,o,u);return u},$t=(e=>e?jr(e):jr),{useSyncExternalStoreWithSelector:Us}=qs,Ks=e=>e;function qt(e,t=Ks,n){const r=Us(e.subscribe,e.getState,e.getInitialState,t,n);return m.useDebugValue(r),r}function K(e,t){const n=m.useContext(ir);if(!n)throw new Error("useCRViewerScopedStore must be used inside <InternalCRViewerProvider>");return qt(n,e,t)}function gn(){const e=m.useContext(ir);if(!e)throw new Error("useCRViewerStoreApi must be used inside <InternalCRViewerProvider>");return e}const ht=m.createContext(void 0),Lo=m.createContext(void 0);function Xs(){return $t((e,t)=>({emitCallback:null,isPlaybackMode:!1,playbackScale:1,dispatchHandler:null,applySnapshotHandler:null,wordAvgDistancePx:0,setEmitCallback:n=>e({emitCallback:n}),emit:(n,r)=>{const{emitCallback:o,isPlaybackMode:s}=t();s||o&&o({...n,timestamp:r??Date.now()})},setPlaybackMode:n=>e({isPlaybackMode:n}),setPlaybackScale:n=>e({playbackScale:n}),setDispatchHandler:n=>e({dispatchHandler:n}),dispatch:n=>{const{dispatchHandler:r,isPlaybackMode:o}=t();if(!o){console.warn("[ViewerEventBridge] dispatch called but not in playback mode");return}r?r(n):console.warn("[ViewerEventBridge] dispatch called but no handler registered")},setApplySnapshotHandler:n=>e({applySnapshotHandler:n}),applySnapshot:n=>{const{applySnapshotHandler:r,isPlaybackMode:o}=t();if(!o){console.warn("[ViewerEventBridge] applySnapshot called but not in playback mode");return}r?r(n):console.warn("[ViewerEventBridge] applySnapshot called but no handler registered")}}))}function Qs({children:e,onViewerEvent:t,isPlaybackMode:n=!1,playbackScale:r=1,viewerRef:o}){const s=m.useMemo(()=>Xs(),[]);return m.useLayoutEffect(()=>(s.getState().setEmitCallback(t??null),()=>s.getState().setEmitCallback(null)),[t,s]),m.useLayoutEffect(()=>{s.getState().setPlaybackMode(n)},[n,s]),m.useLayoutEffect(()=>{s.getState().setPlaybackScale(r)},[r,s]),m.useLayoutEffect(()=>()=>{o&&(o.current=null)},[o]),b.jsx(ht.Provider,{value:s,children:b.jsx(Lo.Provider,{value:o,children:e})})}function Go(e,t){const n=m.useContext(ht);if(!n)throw new Error("useViewerEventBridgeStore must be used inside <ViewerEventBridgeProvider>");return qt(n,e,t)}function mt(){const e=m.useContext(ht);if(!e)throw new Error("useViewerEventBridgeStoreApi must be used inside <ViewerEventBridgeProvider>");return e}const lr=m.createContext(void 0);function ut(){const e=m.useContext(lr);if(!e)throw new Error("useProgressStoreApi must be used within InternalCRViewerProgressProvider");return e}function q(e,t){const n=m.useContext(lr);if(!n)throw new Error("useProgressStore must be used within InternalCRViewerProgressProvider");return qt(n,o=>e(o.progress),t)}function Ys({onSingle:e,onDouble:t,delay:n=250,shouldIgnoreTarget:r}){const o=m.useRef(null);m.useEffect(()=>()=>{o.current!=null&&(clearTimeout(o.current),o.current=null)},[]);const s=m.useCallback(u=>{if(!(r!=null&&r(u.target))&&u.detail===1){if(o.current!=null)return;o.current=window.setTimeout(()=>{o.current=null,e==null||e(u)},n)}},[n,e,r]),i=m.useCallback(u=>{r!=null&&r(u.target)||o.current!=null&&(clearTimeout(o.current),o.current=null)},[t,r]);return{onClick:s,onDoubleClick:i}}const sn={light:{bg:"#ffffff",fg:"#111827",overlayBg:"#ffffff",overlayFg:"#111827",borderColor:"#333333"},dark:{bg:"#0b0b0b",fg:"#e5e7eb",overlayBg:"#0b0b0b",overlayFg:"#e5e7eb",borderColor:"#ffffff"},sepia:{bg:"#f4ecd8",fg:"#3e2f1c",overlayBg:"#f4ecd8",overlayFg:"#3e2f1c",borderColor:"#bfa87a"},green:{bg:"#e9f5e1",fg:"#1b3d1f",overlayBg:"#e9f5e1",overlayFg:"#1b3d1f",borderColor:"#93b48b"}},Tn=[8,16,24,40,64],kn=[1.2,1.4,1.6,1.8,2,2.2,2.4],Rn=[4,8,12,16,24],Zn=e=>Math.round(12+(e-1)*(16/11)),Zs=e=>{let t=1,n=1/0;for(let r=1;r<=12;r++){const o=Zn(r),s=Math.abs(o-e);s<n&&(t=r,n=s)}return t},_n=(e,t)=>{let n=0,r=1/0;return t.forEach((o,s)=>{const i=Math.abs(o-e);i<r&&(r=i,n=s)}),n+1},Ho=[{label:"고딕체",value:"'Noto Sans KR', sans-serif"},{label:"명조체",value:"'Noto Serif KR', serif"},{label:"바탕체",value:"'Nanum Myeongjo', serif"}],He={mode:"page",theme:"light",fontFamily:Ho.find(e=>e.label==="명조체").value,fontSizePx:18,lineHeight:1.8,marginX:20,marginY:24,showOverlays:!0,overlayCompactMode:!0,isSettingsOpen:!1,pointerStyle:"highlight",pointerColor:"#fff59d",breakMarks:{slash:!0},breakGapPx:8,muteAudio:!1,audioSpeed:1,showPointer:!0,showSplit:!0,viewportWidth:0,viewportHeight:0,isDev:!1};function Js(e){const{init:t,recorderStore:n}=e??{};return $t((r,o)=>({...He,...t,setMode:s=>r({mode:s}),setTheme:s=>r({theme:s}),setFontFamily:s=>r({fontFamily:s}),setFontSizePx:s=>r({fontSizePx:s}),setLineHeight:s=>r({lineHeight:s}),setMarginX:s=>r({marginX:s}),setMarginY:s=>r({marginY:s}),setShowOverlays:s=>r({showOverlays:s}),toggleOverlays:()=>{const s=!o().showOverlays;r({showOverlays:s,...s&&{overlayCompactMode:!0}})},setOverlayCompactMode:s=>r({overlayCompactMode:s}),toggleOverlayCompactMode:()=>r({overlayCompactMode:!o().overlayCompactMode}),setSettingsOpen:s=>r({isSettingsOpen:s}),resetToDefaults:()=>r(s=>({mode:He.mode,theme:He.theme,fontFamily:He.fontFamily,fontSizePx:He.fontSizePx,lineHeight:He.lineHeight,marginX:He.marginX,marginY:He.marginY,showOverlays:!1,isSettingsOpen:!0,pointerStyle:He.pointerStyle,pointerColor:He.pointerColor,breakMarks:He.breakMarks,breakGapPx:He.breakGapPx,muteAudio:He.muteAudio,audioSpeed:He.audioSpeed,showPointer:He.showPointer,showSplit:He.showSplit})),maps:{MARGIN_MAP:Tn,LINEHEIGHT_MAP:kn,BREAK_GAP_MAP:Rn,fontSizeFromLevel:Zn},setPointerStyle:s=>r({pointerStyle:s}),setPointerColor:s=>r({pointerColor:s}),toggleBreakMark:s=>{const i=o().breakMarks;r({breakMarks:{...i,[s]:!i[s]}})},setBreakMarks:s=>{r({breakMarks:{...o().breakMarks,...s}})},setBreakGapPx:s=>r({breakGapPx:s}),setBreakGapLevel:s=>{const i=Rn[Math.max(1,Math.min(5,s))-1];r({breakGapPx:i})},getBreakGapLevel:()=>_n(o().breakGapPx,Rn),getFontLevel:()=>Zs(o().fontSizePx),getLineLevel:()=>_n(o().lineHeight,kn),getMarginLevel:()=>_n(o().marginX,Tn),setFontLevel:s=>r({fontSizePx:Zn(Math.max(1,Math.min(12,s)))}),setLineLevel:s=>r({lineHeight:kn[Math.max(1,Math.min(7,s))-1]}),setMarginLevel:s=>{const i=Tn[Math.max(1,Math.min(5,s))-1];r({marginX:i,marginY:i})},setMuteAudio:s=>{r({muteAudio:s}),n==null||n.getState().emit({type:"settings_change",payload:{key:"muteAudio",value:s}})},toggleMuteAudio:()=>{const s=!o().muteAudio;r({muteAudio:s}),n==null||n.getState().emit({type:"settings_change",payload:{key:"muteAudio",value:s}})},setAudioSpeed:s=>{const i=Math.max(.3,Math.min(2,s));r({audioSpeed:i}),n==null||n.getState().emit({type:"settings_change",payload:{key:"audioSpeed",value:i}})},incAudioSpeed:()=>{const s=Math.min(2,Math.round((o().audioSpeed+.05)*100)/100);r({audioSpeed:s}),n==null||n.getState().emit({type:"settings_change",payload:{key:"audioSpeed",value:s}})},decAudioSpeed:()=>{const s=Math.max(.3,Math.round((o().audioSpeed-.05)*100)/100);r({audioSpeed:s}),n==null||n.getState().emit({type:"settings_change",payload:{key:"audioSpeed",value:s}})},setShowPointer:s=>r({showPointer:s}),toggleShowPointer:()=>r({showPointer:!o().showPointer}),setShowSplit:s=>r({showSplit:s}),toggleShowSplit:()=>r({showSplit:!o().showSplit}),setViewportSize:(s,i)=>r({viewportWidth:s,viewportHeight:i})}))}const hn=0,bt=1,Et=2,No=4;function Or(e){return()=>e}function ei(e){e()}function Fo(e,t){return n=>e(t(n))}function zr(e,t){return()=>e(t)}function ti(e,t){return n=>e(t,n)}function ar(e){return e!==void 0}function ni(...e){return()=>{e.map(ei)}}function jt(){}function mn(e,t){return t(e),e}function ri(e,t){return t(e)}function Te(...e){return e}function ve(e,t){return e(bt,t)}function fe(e,t){e(hn,t)}function cr(e){e(Et)}function Me(e){return e(No)}function te(e,t){return ve(e,ti(t,hn))}function tt(e,t){const n=e(bt,r=>{n(),t(r)});return n}function Ar(e){let t,n;return r=>o=>{t=o,n&&clearTimeout(n),n=setTimeout(()=>{r(t)},e)}}function Do(e,t){return e===t}function Ie(e=Do){let t;return n=>r=>{e(t,r)||(t=r,n(r))}}function se(e){return t=>n=>{e(n)&&t(n)}}function X(e){return t=>Fo(t,e)}function st(e){return t=>()=>{t(e)}}function P(e,...t){const n=oi(...t);return((r,o)=>{switch(r){case Et:cr(e);return;case bt:return ve(e,n(o))}})}function it(e,t){return n=>r=>{n(t=e(t,r))}}function yt(e){return t=>n=>{e>0?e--:t(n)}}function ct(e){let t=null,n;return r=>o=>{t=o,!n&&(n=setTimeout(()=>{n=void 0,r(t)},e))}}function ge(...e){const t=new Array(e.length);let n=0,r=null;const o=Math.pow(2,e.length)-1;return e.forEach((s,i)=>{const u=Math.pow(2,i);ve(s,a=>{const l=n;n=n|u,t[i]=a,l!==o&&n===o&&r&&(r(),r=null)})}),s=>i=>{const u=()=>{s([i].concat(t))};n===o?u():r=u}}function oi(...e){return t=>e.reduceRight(ri,t)}function si(e){let t,n;const r=()=>t==null?void 0:t();return function(o,s){switch(o){case bt:return s?n===s?void 0:(r(),n=s,t=ve(e,s),t):(r(),jt);case Et:r(),n=null;return}}}function F(e){let t=e;const n=me();return((r,o)=>{switch(r){case hn:t=o;break;case bt:{o(t);break}case No:return t}return n(r,o)})}function Fe(e,t){return mn(F(t),n=>te(e,n))}function me(){const e=[];return((t,n)=>{switch(t){case hn:e.slice().forEach(r=>{r(n)});return;case Et:e.splice(0,e.length);return;case bt:return e.push(n),()=>{const r=e.indexOf(n);r>-1&&e.splice(r,1)}}})}function Xe(e){return mn(me(),t=>te(e,t))}function be(e,t=[],{singleton:n}={singleton:!0}){return{constructor:e,dependencies:t,id:ii(),singleton:n}}const ii=()=>Symbol();function li(e){const t=new Map,n=({constructor:r,dependencies:o,id:s,singleton:i})=>{if(i&&t.has(s))return t.get(s);const u=r(o.map(a=>n(a)));return i&&t.set(s,u),u};return n(e)}function Be(...e){const t=me(),n=new Array(e.length);let r=0;const o=Math.pow(2,e.length)-1;return e.forEach((s,i)=>{const u=Math.pow(2,i);ve(s,a=>{n[i]=a,r=r|u,r===o&&fe(t,n)})}),function(s,i){switch(s){case Et:{cr(t);return}case bt:return r===o&&i(n),ve(t,i)}}}function oe(e,t=Do){return P(e,Ie(t))}function Jn(...e){return function(t,n){switch(t){case Et:return;case bt:return ni(...e.map(r=>ve(r,n)))}}}var Ve=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e))(Ve||{});const ai={0:"debug",3:"error",1:"log",2:"warn"},ci=()=>typeof globalThis>"u"?window:globalThis,xt=be(()=>{const e=F(3);return{log:F((t,n,r=1)=>{var o;const s=(o=ci().VIRTUOSO_LOG_LEVEL)!=null?o:Me(e);r>=s&&console[ai[r]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",t,n)}),logLevel:e}},[],{singleton:!0});function wt(e,t,n){return ur(e,t,n).callbackRef}function ur(e,t,n){const r=m.useRef(null);let o=i=>{};const s=m.useMemo(()=>typeof ResizeObserver<"u"?new ResizeObserver(i=>{const u=()=>{const a=i[0].target;a.offsetParent!==null&&e(a)};n?u():requestAnimationFrame(u)}):null,[e,n]);return o=i=>{i&&t?(s==null||s.observe(i),r.current=i):(r.current&&(s==null||s.unobserve(r.current)),r.current=null)},{callbackRef:o,ref:r}}function ui(e,t,n,r,o,s,i,u,a){const l=m.useCallback(d=>{const v=di(d.children,t,u?"offsetWidth":"offsetHeight",o);let h=d.parentElement;for(;!h.dataset.virtuosoScroller;)h=h.parentElement;const p=h.lastElementChild.dataset.viewportType==="window";let y;p&&(y=h.ownerDocument.defaultView);const w=i?u?i.scrollLeft:i.scrollTop:p?u?y.scrollX||y.document.documentElement.scrollLeft:y.scrollY||y.document.documentElement.scrollTop:u?h.scrollLeft:h.scrollTop,c=i?u?i.scrollWidth:i.scrollHeight:p?u?y.document.documentElement.scrollWidth:y.document.documentElement.scrollHeight:u?h.scrollWidth:h.scrollHeight,g=i?u?i.offsetWidth:i.offsetHeight:p?u?y.innerWidth:y.innerHeight:u?h.offsetWidth:h.offsetHeight;r({scrollHeight:c,scrollTop:Math.max(w,0),viewportHeight:g}),s==null||s(u?Br("column-gap",getComputedStyle(d).columnGap,o):Br("row-gap",getComputedStyle(d).rowGap,o)),v!==null&&e(v)},[e,t,o,s,i,r,u]);return ur(l,n,a)}function di(e,t,n,r){const o=e.length;if(o===0)return null;const s=[];for(let i=0;i<o;i++){const u=e.item(i);if(u.dataset.index===void 0)continue;const a=parseInt(u.dataset.index),l=parseFloat(u.dataset.knownSize),d=t(u,n);if(d===0&&r("Zero-sized element, this should not happen",{child:u},Ve.ERROR),d===l)continue;const v=s[s.length-1];s.length===0||v.size!==d||v.endIndex!==a-1?s.push({endIndex:a,size:d,startIndex:a}):s[s.length-1].endIndex++}return s}function Br(e,t,n){return t!=="normal"&&!(t!=null&&t.endsWith("px"))&&n(`${e} was not resolved to pixel value correctly`,t,Ve.WARN),t==="normal"?0:parseInt(t??"0",10)}function Wo(e,t,n){const r=m.useRef(null),o=m.useCallback(a=>{if(!(a!=null&&a.offsetParent))return;const l=a.getBoundingClientRect(),d=l.width;let v,h;if(t){const p=t.getBoundingClientRect(),y=l.top-p.top;h=p.height-Math.max(0,y),v=y+t.scrollTop}else{const p=i.current.ownerDocument.defaultView;h=p.innerHeight-Math.max(0,l.top),v=l.top+p.scrollY}r.current={offsetTop:v,visibleHeight:h,visibleWidth:d},e(r.current)},[e,t]),{callbackRef:s,ref:i}=ur(o,!0,n),u=m.useCallback(()=>{o(i.current)},[o,i]);return m.useEffect(()=>{var a;if(t){t.addEventListener("scroll",u);const l=new ResizeObserver(()=>{requestAnimationFrame(u)});return l.observe(t),()=>{t.removeEventListener("scroll",u),l.unobserve(t)}}else{const l=(a=i.current)==null?void 0:a.ownerDocument.defaultView;return l==null||l.addEventListener("scroll",u),l==null||l.addEventListener("resize",u),()=>{l==null||l.removeEventListener("scroll",u),l==null||l.removeEventListener("resize",u)}}},[u,t,i]),s}const De=be(()=>{const e=me(),t=me(),n=F(0),r=me(),o=F(0),s=me(),i=me(),u=F(0),a=F(0),l=F(0),d=F(0),v=me(),h=me(),p=F(!1),y=F(!1),w=F(!1);return te(P(e,X(({scrollTop:c})=>c)),t),te(P(e,X(({scrollHeight:c})=>c)),i),te(t,o),{deviation:n,fixedFooterHeight:l,fixedHeaderHeight:a,footerHeight:d,headerHeight:u,horizontalDirection:y,scrollBy:h,scrollContainerState:e,scrollHeight:i,scrollingInProgress:p,scrollTo:v,scrollTop:t,skipAnimationFrameInResizeObserver:w,smoothScrollTargetReached:r,statefulScrollTop:o,viewportHeight:s}},[],{singleton:!0}),Lt={lvl:0};function Vo(e,t){const n=e.length;if(n===0)return[];let{index:r,value:o}=t(e[0]);const s=[];for(let i=1;i<n;i++){const{index:u,value:a}=t(e[i]);s.push({end:u-1,start:r,value:o}),r=u,o=a}return s.push({end:1/0,start:r,value:o}),s}function Se(e){return e===Lt}function Gt(e,t){if(!Se(e))return t===e.k?e.v:t<e.k?Gt(e.l,t):Gt(e.r,t)}function nt(e,t,n="k"){if(Se(e))return[-1/0,void 0];if(Number(e[n])===t)return[e.k,e.v];if(Number(e[n])<t){const r=nt(e.r,t,n);return r[0]===-1/0?[e.k,e.v]:r}return nt(e.l,t,n)}function Ke(e,t,n){return Se(e)?Uo(t,n,1):t===e.k?Le(e,{k:t,v:n}):t<e.k?Pr(Le(e,{l:Ke(e.l,t,n)})):Pr(Le(e,{r:Ke(e.r,t,n)}))}function Rt(){return Lt}function _t(e,t,n){if(Se(e))return[];const r=nt(e,t)[0];return fi(tr(e,r,n))}function er(e,t){if(Se(e))return Lt;const{k:n,l:r,r:o}=e;if(t===n){if(Se(r))return o;if(Se(o))return r;{const[s,i]=qo(r);return rn(Le(e,{k:s,l:$o(r),v:i}))}}else return t<n?rn(Le(e,{l:er(r,t)})):rn(Le(e,{r:er(o,t)}))}function St(e){return Se(e)?[]:[...St(e.l),{k:e.k,v:e.v},...St(e.r)]}function tr(e,t,n){if(Se(e))return[];const{k:r,l:o,r:s,v:i}=e;let u=[];return r>t&&(u=u.concat(tr(o,t,n))),r>=t&&r<=n&&u.push({k:r,v:i}),r<=n&&(u=u.concat(tr(s,t,n))),u}function rn(e){const{l:t,lvl:n,r}=e;if(r.lvl>=n-1&&t.lvl>=n-1)return e;if(n>r.lvl+1){if(Mn(t))return Ko(Le(e,{lvl:n-1}));if(!Se(t)&&!Se(t.r))return Le(t.r,{l:Le(t,{r:t.r.l}),lvl:n,r:Le(e,{l:t.r.r,lvl:n-1})});throw new Error("Unexpected empty nodes")}else{if(Mn(e))return nr(Le(e,{lvl:n-1}));if(!Se(r)&&!Se(r.l)){const o=r.l,s=Mn(o)?r.lvl-1:r.lvl;return Le(o,{l:Le(e,{lvl:n-1,r:o.l}),lvl:o.lvl+1,r:nr(Le(r,{l:o.r,lvl:s}))})}else throw new Error("Unexpected empty nodes")}}function Le(e,t){return Uo(t.k!==void 0?t.k:e.k,t.v!==void 0?t.v:e.v,t.lvl!==void 0?t.lvl:e.lvl,t.l!==void 0?t.l:e.l,t.r!==void 0?t.r:e.r)}function $o(e){return Se(e.r)?e.l:rn(Le(e,{r:$o(e.r)}))}function Mn(e){return Se(e)||e.lvl>e.r.lvl}function qo(e){return Se(e.r)?[e.k,e.v]:qo(e.r)}function Uo(e,t,n,r=Lt,o=Lt){return{k:e,l:r,lvl:n,r:o,v:t}}function Pr(e){return nr(Ko(e))}function Ko(e){const{l:t}=e;return!Se(t)&&t.lvl===e.lvl?Le(t,{r:Le(e,{l:t.r})}):e}function nr(e){const{lvl:t,r:n}=e;return!Se(n)&&!Se(n.r)&&n.lvl===t&&n.r.lvl===t?Le(n,{l:Le(e,{r:n.l}),lvl:t+1}):e}function fi(e){return Vo(e,({k:t,v:n})=>({index:t,value:n}))}function Xo(e,t){return!!(e&&e.startIndex===t.startIndex&&e.endIndex===t.endIndex)}function Ht(e,t){return!!(e&&e[0]===t[0]&&e[1]===t[1])}const dr=be(()=>({recalcInProgress:F(!1)}),[],{singleton:!0});function Qo(e,t,n){return e[ln(e,t,n)]}function ln(e,t,n,r=0){let o=e.length-1;for(;r<=o;){const s=Math.floor((r+o)/2),i=e[s],u=n(i,t);if(u===0)return s;if(u===-1){if(o-r<2)return s-1;o=s-1}else{if(o===r)return s;r=s+1}}throw new Error(`Failed binary finding record in array - ${e.join(",")}, searched for ${t}`)}function pi(e,t,n,r){const o=ln(e,t,r),s=ln(e,n,r,o);return e.slice(o,s+1)}function gt(e,t){return Math.round(e.getBoundingClientRect()[t])}function bn(e){return!Se(e.groupOffsetTree)}function fr({index:e},t){return t===e?0:t<e?-1:1}function gi(){return{groupIndices:[],groupOffsetTree:Rt(),lastIndex:0,lastOffset:0,lastSize:0,offsetTree:[],sizeTree:Rt()}}function hi(e,t){let n=Se(e)?0:1/0;for(const r of t){const{endIndex:o,size:s,startIndex:i}=r;if(n=Math.min(n,i),Se(e)){e=Ke(e,0,s);continue}const u=_t(e,i-1,o+1);if(u.some(wi(r)))continue;let a=!1,l=!1;for(const{end:d,start:v,value:h}of u)a?(o>=v||s===h)&&(e=er(e,v)):(l=h!==s,a=!0),d>o&&o>=v&&h!==s&&(e=Ke(e,o+1,h));l&&(e=Ke(e,i,s))}return[e,n]}function mi(e){return typeof e.groupIndex<"u"}function bi({offset:e},t){return t===e?0:t<e?-1:1}function Nt(e,t,n){if(t.length===0)return 0;const{index:r,offset:o,size:s}=Qo(t,e,fr),i=e-r,u=s*i+(i-1)*n+o;return u>0?u+n:u}function Yo(e,t){if(!bn(t))return e;let n=0;for(;t.groupIndices[n]<=e+n;)n++;return e+n}function Zo(e,t,n){if(mi(e))return t.groupIndices[e.groupIndex]+1;{const r=e.index==="LAST"?n:e.index;let o=Yo(r,t);return o=Math.max(0,o,Math.min(n,o)),o}}function xi(e,t,n,r=0){return r>0&&(t=Math.max(t,Qo(e,r,fr).offset)),Vo(pi(e,t,n,bi),yi)}function vi(e,[t,n,r,o]){t.length>0&&r("received item sizes",t,Ve.DEBUG);const s=e.sizeTree;let i=s,u=0;if(n.length>0&&Se(s)&&t.length===2){const h=t[0].size,p=t[1].size;i=n.reduce((y,w)=>Ke(Ke(y,w,h),w+1,p),i)}else[i,u]=hi(i,t);if(i===s)return e;const{lastIndex:a,lastOffset:l,lastSize:d,offsetTree:v}=rr(e.offsetTree,u,i,o);return{groupIndices:n,groupOffsetTree:n.reduce((h,p)=>Ke(h,p,Nt(p,v,o)),Rt()),lastIndex:a,lastOffset:l,lastSize:d,offsetTree:v,sizeTree:i}}function Si(e){return St(e).map(({k:t,v:n},r,o)=>{const s=o[r+1];return{endIndex:s?s.k-1:1/0,size:n,startIndex:t}})}function Lr(e,t){let n=0,r=0;for(;n<e;)n+=t[r+1]-t[r]-1,r++;return r-(n===e?0:1)}function rr(e,t,n,r){let o=e,s=0,i=0,u=0,a=0;if(t!==0){a=ln(o,t-1,fr),u=o[a].offset;const l=nt(n,t-1);s=l[0],i=l[1],o.length&&o[a].size===nt(n,t)[1]&&(a-=1),o=o.slice(0,a+1)}else o=[];for(const{start:l,value:d}of _t(n,t,1/0)){const v=l-s,h=v*i+u+v*r;o.push({index:l,offset:h,size:d}),s=l,u=h,i=d}return{lastIndex:s,lastOffset:u,lastSize:i,offsetTree:o}}function yi(e){return{index:e.index,value:e}}function wi(e){const{endIndex:t,size:n,startIndex:r}=e;return o=>o.start===r&&(o.end===t||o.end===1/0)&&o.value===n}const Ci={offsetHeight:"height",offsetWidth:"width"},lt=be(([{log:e},{recalcInProgress:t}])=>{const n=me(),r=me(),o=Fe(r,0),s=me(),i=me(),u=F(0),a=F([]),l=F(void 0),d=F(void 0),v=F(void 0),h=F(void 0),p=F((x,S)=>gt(x,Ci[S])),y=F(void 0),w=F(0),c=gi(),g=Fe(P(n,ge(a,e,w),it(vi,c),Ie()),c),f=Fe(P(a,Ie(),it((x,S)=>({current:S,prev:x.current}),{current:[],prev:[]}),X(({prev:x})=>x)),[]);te(P(a,se(x=>x.length>0),ge(g,w),X(([x,S,R])=>{const I=x.reduce((M,O,A)=>Ke(M,O,Nt(O,S.offsetTree,R)||A),Rt());return{...S,groupIndices:x,groupOffsetTree:I}})),g),te(P(r,ge(g),se(([x,{lastIndex:S}])=>x<S),X(([x,{lastIndex:S,lastSize:R}])=>[{endIndex:S,size:R,startIndex:x}])),n),te(l,d);const C=Fe(P(l,X(x=>x===void 0)),!0);te(P(d,se(x=>x!==void 0&&Se(Me(g).sizeTree)),X(x=>{const S=Me(v),R=Me(a).length>0;return S?R?[{endIndex:0,size:S,startIndex:0},{endIndex:1,size:x,startIndex:1}]:[]:[{endIndex:0,size:x,startIndex:0}]})),n),te(P(h,se(x=>x!==void 0&&x.length>0&&Se(Me(g).sizeTree)),X(x=>{const S=[];let R=x[0],I=0;for(let M=1;M<x.length;M++){const O=x[M];O!==R&&(S.push({endIndex:M-1,size:R,startIndex:I}),R=O,I=M)}return S.push({endIndex:x.length-1,size:R,startIndex:I}),S})),n),te(P(a,ge(v,d),se(([,x,S])=>x!==void 0&&S!==void 0),X(([x,S,R])=>{const I=[];for(let M=0;M<x.length;M++){const O=x[M],A=x[M+1];I.push({startIndex:O,endIndex:O,size:S}),A!==void 0&&I.push({startIndex:O+1,endIndex:A-1,size:R})}return I})),n);const T=Xe(P(n,ge(g),it(({sizes:x},[S,R])=>({changed:R!==x,sizes:R}),{changed:!1,sizes:c}),X(x=>x.changed)));ve(P(u,it((x,S)=>({diff:x.prev-S,prev:S}),{diff:0,prev:0}),X(x=>x.diff)),x=>{const{groupIndices:S}=Me(g);if(x>0)fe(t,!0),fe(s,x+Lr(x,S));else if(x<0){const R=Me(f);R.length>0&&(x-=Lr(-x,R)),fe(i,x)}}),ve(P(u,ge(e)),([x,S])=>{x<0&&S("`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value",{firstItemIndex:u},Ve.ERROR)});const k=Xe(s);te(P(s,ge(g),X(([x,S])=>{const R=S.groupIndices.length>0,I=[],M=S.lastSize;if(R){const O=Gt(S.sizeTree,0);let A=0,E=0;for(;A<x;){const L=S.groupIndices[E],_=S.groupIndices.length===E+1?1/0:S.groupIndices[E+1]-L-1;I.push({endIndex:L,size:O,startIndex:L}),I.push({endIndex:L+1+_-1,size:M,startIndex:L+1}),E++,A+=_+1}const B=St(S.sizeTree);return A!==x&&B.shift(),B.reduce((L,{k:_,v:H})=>{let Y=L.ranges;return L.prevSize!==0&&(Y=[...L.ranges,{endIndex:_+x-1,size:L.prevSize,startIndex:L.prevIndex}]),{prevIndex:_+x,prevSize:H,ranges:Y}},{prevIndex:x,prevSize:0,ranges:I}).ranges}return St(S.sizeTree).reduce((O,{k:A,v:E})=>({prevIndex:A+x,prevSize:E,ranges:[...O.ranges,{endIndex:A+x-1,size:O.prevSize,startIndex:O.prevIndex}]}),{prevIndex:0,prevSize:M,ranges:[]}).ranges})),n);const j=Xe(P(i,ge(g,w),X(([x,{offsetTree:S},R])=>{const I=-x;return Nt(I,S,R)})));return te(P(i,ge(g,w),X(([x,S,R])=>{if(S.groupIndices.length>0){if(Se(S.sizeTree))return S;let I=Rt();const M=Me(f);let O=0,A=0,E=0;for(;O<-x;){E=M[A];const B=M[A+1]-E-1;A++,O+=B+1}if(I=St(S.sizeTree).reduce((B,{k:L,v:_})=>Ke(B,Math.max(0,L+x),_),I),O!==-x){const B=Gt(S.sizeTree,E);I=Ke(I,0,B);const L=nt(S.sizeTree,-x+1)[1];I=Ke(I,1,L)}return{...S,sizeTree:I,...rr(S.offsetTree,0,I,R)}}else{const I=St(S.sizeTree).reduce((M,{k:O,v:A})=>Ke(M,Math.max(0,O+x),A),Rt());return{...S,sizeTree:I,...rr(S.offsetTree,0,I,R)}}})),g),{beforeUnshiftWith:k,data:y,defaultItemSize:d,firstItemIndex:u,fixedItemSize:l,fixedGroupSize:v,gap:w,groupIndices:a,heightEstimates:h,itemSize:p,listRefresh:T,shiftWith:i,shiftWithOffset:j,sizeRanges:n,sizes:g,statefulTotalCount:o,totalCount:r,trackItemSizes:C,unshiftWith:s}},Te(xt,dr),{singleton:!0});function Ii(e){return e.reduce((t,n)=>(t.groupIndices.push(t.totalCount),t.totalCount+=n+1,t),{groupIndices:[],totalCount:0})}const Jo=be(([{groupIndices:e,sizes:t,totalCount:n},{headerHeight:r,scrollTop:o}])=>{const s=me(),i=me(),u=Xe(P(s,X(Ii)));return te(P(u,X(a=>a.totalCount)),n),te(P(u,X(a=>a.groupIndices)),e),te(P(Be(o,t,r),se(([a,l])=>bn(l)),X(([a,l,d])=>nt(l.groupOffsetTree,Math.max(a-d,0),"v")[0]),Ie(),X(a=>[a])),i),{groupCounts:s,topItemsIndexes:i}},Te(lt,De)),vt=be(([{log:e}])=>{const t=F(!1),n=Xe(P(t,se(r=>r),Ie()));return ve(t,r=>{r&&Me(e)("props updated",{},Ve.DEBUG)}),{didMount:n,propsReady:t}},Te(xt),{singleton:!0}),Ti=typeof document<"u"&&"scrollBehavior"in document.documentElement.style;function es(e){const t=typeof e=="number"?{index:e}:e;return t.align||(t.align="start"),(!t.behavior||!Ti)&&(t.behavior="auto"),t.offset||(t.offset=0),t}const Ut=be(([{gap:e,listRefresh:t,sizes:n,totalCount:r},{fixedFooterHeight:o,fixedHeaderHeight:s,footerHeight:i,headerHeight:u,scrollingInProgress:a,scrollTo:l,smoothScrollTargetReached:d,viewportHeight:v},{log:h}])=>{const p=me(),y=me(),w=F(0);let c=null,g=null,f=null;function C(){c&&(c(),c=null),f&&(f(),f=null),g&&(clearTimeout(g),g=null),fe(a,!1)}return te(P(p,ge(n,v,r,w,u,i,h),ge(e,s,o),X(([[T,k,j,x,S,R,I,M],O,A,E])=>{const B=es(T),{align:L,behavior:_,offset:H}=B,Y=x-1,ue=Zo(B,k,Y);let ie=Nt(ue,k.offsetTree,O)+R;L==="end"?(ie+=A+nt(k.sizeTree,ue)[1]-j+E,ue===Y&&(ie+=I)):L==="center"?ie+=(A+nt(k.sizeTree,ue)[1]-j+E)/2:ie-=S,H&&(ie+=H);const ae=he=>{C(),he?(M("retrying to scroll to",{location:T},Ve.DEBUG),fe(p,T)):(fe(y,!0),M("list did not change, scroll successful",{},Ve.DEBUG))};if(C(),_==="smooth"){let he=!1;f=ve(t,ke=>{he=he||ke}),c=tt(d,()=>{ae(he)})}else c=tt(P(t,ki(150)),ae);return g=setTimeout(()=>{C()},1200),fe(a,!0),M("scrolling from index to",{behavior:_,index:ue,top:ie},Ve.DEBUG),{behavior:_,top:ie}})),l),{scrollTargetReached:y,scrollToIndex:p,topListHeight:w}},Te(lt,De,xt),{singleton:!0});function ki(e){return t=>{const n=setTimeout(()=>{t(!1)},e);return r=>{r&&(t(!0),clearTimeout(n))}}}function pr(e,t){e==0?t():requestAnimationFrame(()=>{pr(e-1,t)})}function gr(e,t){const n=t-1;return typeof e=="number"?e:e.index==="LAST"?n:e.index}const Kt=be(([{defaultItemSize:e,listRefresh:t,sizes:n},{scrollTop:r},{scrollTargetReached:o,scrollToIndex:s},{didMount:i}])=>{const u=F(!0),a=F(0),l=F(!0);return te(P(i,ge(a),se(([d,v])=>!!v),st(!1)),u),te(P(i,ge(a),se(([d,v])=>!!v),st(!1)),l),ve(P(Be(t,i),ge(u,n,e,l),se(([[,d],v,{sizeTree:h},p,y])=>d&&(!Se(h)||ar(p))&&!v&&!y),ge(a)),([,d])=>{tt(o,()=>{fe(l,!0)}),pr(4,()=>{tt(r,()=>{fe(u,!0)}),fe(s,d)})}),{initialItemFinalLocationReached:l,initialTopMostItemIndex:a,scrolledToInitialItem:u}},Te(lt,De,Ut,vt),{singleton:!0});function ts(e,t){return Math.abs(e-t)<1.01}const Ft="up",Bt="down",Ri="none",_i={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollHeight:0,scrollTop:0,viewportHeight:0}},Mi=0,Xt=be(([{footerHeight:e,headerHeight:t,scrollBy:n,scrollContainerState:r,scrollTop:o,viewportHeight:s}])=>{const i=F(!1),u=F(!0),a=me(),l=me(),d=F(4),v=F(Mi),h=Fe(P(Jn(P(oe(o),yt(1),st(!0)),P(oe(o),yt(1),st(!1),Ar(100))),Ie()),!1),p=Fe(P(Jn(P(n,st(!0)),P(n,st(!1),Ar(200))),Ie()),!1);te(P(Be(oe(o),oe(v)),X(([f,C])=>f<=C),Ie()),u),te(P(u,ct(50)),l);const y=Xe(P(Be(r,oe(s),oe(t),oe(e),oe(d)),it((f,[{scrollHeight:C,scrollTop:T},k,j,x,S])=>{const R=T+k-C>-S,I={scrollHeight:C,scrollTop:T,viewportHeight:k};if(R){let O,A;return T>f.state.scrollTop?(O="SCROLLED_DOWN",A=f.state.scrollTop-T):(O="SIZE_DECREASED",A=f.state.scrollTop-T||f.scrollTopDelta),{atBottom:!0,atBottomBecause:O,scrollTopDelta:A,state:I}}let M;return I.scrollHeight>f.state.scrollHeight?M="SIZE_INCREASED":k<f.state.viewportHeight?M="VIEWPORT_HEIGHT_DECREASING":T<f.state.scrollTop?M="SCROLLING_UPWARDS":M="NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",{atBottom:!1,notAtBottomBecause:M,state:I}},_i),Ie((f,C)=>f&&f.atBottom===C.atBottom))),w=Fe(P(r,it((f,{scrollHeight:C,scrollTop:T,viewportHeight:k})=>{if(ts(f.scrollHeight,C))return{changed:!1,jump:0,scrollHeight:C,scrollTop:T};{const j=C-(T+k)<1;return f.scrollTop!==T&&j?{changed:!0,jump:f.scrollTop-T,scrollHeight:C,scrollTop:T}:{changed:!0,jump:0,scrollHeight:C,scrollTop:T}}},{changed:!1,jump:0,scrollHeight:0,scrollTop:0}),se(f=>f.changed),X(f=>f.jump)),0);te(P(y,X(f=>f.atBottom)),i),te(P(i,ct(50)),a);const c=F(Bt);te(P(r,X(({scrollTop:f})=>f),Ie(),it((f,C)=>Me(p)?{direction:f.direction,prevScrollTop:C}:{direction:C<f.prevScrollTop?Ft:Bt,prevScrollTop:C},{direction:Bt,prevScrollTop:0}),X(f=>f.direction)),c),te(P(r,ct(50),st(Ri)),c);const g=F(0);return te(P(h,se(f=>!f),st(0)),g),te(P(o,ct(100),ge(h),se(([f,C])=>C),it(([f,C],[T])=>[C,T],[0,0]),X(([f,C])=>C-f)),g),{atBottomState:y,atBottomStateChange:a,atBottomThreshold:d,atTopStateChange:l,atTopThreshold:v,isAtBottom:i,isAtTop:u,isScrolling:h,lastJumpDueToItemResize:w,scrollDirection:c,scrollVelocity:g}},Te(De)),Dt="top",Wt="bottom",Gr="none";function Hr(e,t,n){return typeof e=="number"?n===Ft&&t===Dt||n===Bt&&t===Wt?e:0:n===Ft?t===Dt?e.main:e.reverse:t===Wt?e.main:e.reverse}function Nr(e,t){var n;return typeof e=="number"?e:(n=e[t])!=null?n:0}const hr=be(([{deviation:e,fixedHeaderHeight:t,headerHeight:n,scrollTop:r,viewportHeight:o}])=>{const s=me(),i=F(0),u=F(0),a=F(0),l=Fe(P(Be(oe(r),oe(o),oe(n),oe(s,Ht),oe(a),oe(i),oe(t),oe(e),oe(u)),X(([d,v,h,[p,y],w,c,g,f,C])=>{const T=d-f,k=c+g,j=Math.max(h-T,0);let x=Gr;const S=Nr(C,Dt),R=Nr(C,Wt);return p-=f,p+=h+g,y+=h+g,y-=f,p>d+k-S&&(x=Ft),y<d-j+v+R&&(x=Bt),x!==Gr?[Math.max(T-h-Hr(w,Dt,x)-S,0),T-j-g+v+Hr(w,Wt,x)+R]:null}),se(d=>d!=null),Ie(Ht)),[0,0]);return{increaseViewportBy:u,listBoundary:s,overscan:a,topListHeight:i,visibleRange:l}},Te(De),{singleton:!0});function Ei(e,t,n){if(bn(t)){const r=Yo(e,t);return[{index:nt(t.groupOffsetTree,r)[0],offset:0,size:0},{data:n==null?void 0:n[0],index:r,offset:0,size:0}]}return[{data:n==null?void 0:n[0],index:e,offset:0,size:0}]}const En={bottom:0,firstItemIndex:0,items:[],offsetBottom:0,offsetTop:0,top:0,topItems:[],topListHeight:0,totalCount:0};function on(e,t,n,r,o,s){const{lastIndex:i,lastOffset:u,lastSize:a}=o;let l=0,d=0;if(e.length>0){l=e[0].offset;const w=e[e.length-1];d=w.offset+w.size}const v=n-i,h=u+v*a+(v-1)*r,p=l,y=h-d;return{bottom:d,firstItemIndex:s,items:Fr(e,o,s),offsetBottom:y,offsetTop:l,top:p,topItems:Fr(t,o,s),topListHeight:t.reduce((w,c)=>c.size+w,0),totalCount:n}}function ns(e,t,n,r,o,s){let i=0;if(n.groupIndices.length>0)for(const d of n.groupIndices){if(d-i>=e)break;i++}const u=e+i,a=gr(t,u),l=Array.from({length:u}).map((d,v)=>({data:s[v+a],index:v+a,offset:0,size:0}));return on(l,[],u,o,n,r)}function Fr(e,t,n){if(e.length===0)return[];if(!bn(t))return e.map(l=>({...l,index:l.index+n,originalIndex:l.index}));const r=e[0].index,o=e[e.length-1].index,s=[],i=_t(t.groupOffsetTree,r,o);let u,a=0;for(const l of e){(!u||u.end<l.index)&&(u=i.shift(),a=t.groupIndices.indexOf(u.start));let d;l.index===u.start?d={index:a,type:"group"}:d={groupIndex:a,index:l.index-(a+1)+n},s.push({...d,data:l.data,offset:l.offset,originalIndex:l.index,size:l.size})}return s}function Dr(e,t){var n;return e===void 0?0:typeof e=="number"?e:(n=e[t])!=null?n:0}const Ct=be(([{data:e,firstItemIndex:t,gap:n,sizes:r,totalCount:o},s,{listBoundary:i,topListHeight:u,visibleRange:a},{initialTopMostItemIndex:l,scrolledToInitialItem:d},{topListHeight:v},h,{didMount:p},{recalcInProgress:y}])=>{const w=F([]),c=F(0),g=me(),f=F(0);te(s.topItemsIndexes,w);const C=Fe(P(Be(p,y,oe(a,Ht),oe(o),oe(r),oe(l),d,oe(w),oe(t),oe(n),oe(f),e),se(([x,S,,R,,,,,,,,I])=>{const M=I&&I.length!==R;return x&&!S&&!M}),X(([,,[x,S],R,I,M,O,A,E,B,L,_])=>{var H,Y,ue,ie;const ae=I,{offsetTree:he,sizeTree:ke}=ae,W=Me(c);if(R===0)return{...En,totalCount:R};if(x===0&&S===0)return W===0?{...En,totalCount:R}:ns(W,M,I,E,B,_||[]);if(Se(ke))return W>0?null:on(Ei(gr(M,R),ae,_),[],R,B,ae,E);const D=[];if(A.length>0){const V=A[0],Z=A[A.length-1];let ee=0;for(const J of _t(ke,V,Z)){const le=J.value,re=Math.max(J.start,V),xe=Math.min(J.end,Z);for(let pe=re;pe<=xe;pe++)D.push({data:_==null?void 0:_[pe],index:pe,offset:ee,size:le}),ee+=le}}if(!O)return on([],D,R,B,ae,E);const U=A.length>0?A[A.length-1]+1:0,z=xi(he,x,S,U);if(z.length===0)return null;const N=R-1,Q=mn([],V=>{for(const Z of z){const ee=Z.value;let J=ee.offset,le=Z.start;const re=ee.size;if(ee.offset<x){le+=Math.floor((x-ee.offset+B)/(re+B));const pe=le-Z.start;J+=pe*re+pe*B}le<U&&(J+=(U-le)*re,le=U);const xe=Math.min(Z.end,N);for(let pe=le;pe<=xe&&!(J>=S);pe++)V.push({data:_==null?void 0:_[pe],index:pe,offset:J,size:re}),J+=re+B}}),G=Dr(L,Dt),ne=Dr(L,Wt);if(Q.length>0&&(G>0||ne>0)){const V=Q[0],Z=Q[Q.length-1];if(G>0&&V.index>U){const ee=Math.min(G,V.index-U),J=[];let le=V.offset;for(let re=V.index-1;re>=V.index-ee;re--){const xe=(Y=(H=_t(ke,re,re)[0])==null?void 0:H.value)!=null?Y:V.size;le-=xe+B,J.unshift({data:_==null?void 0:_[re],index:re,offset:le,size:xe})}Q.unshift(...J)}if(ne>0&&Z.index<N){const ee=Math.min(ne,N-Z.index);let J=Z.offset+Z.size+B;for(let le=Z.index+1;le<=Z.index+ee;le++){const re=(ie=(ue=_t(ke,le,le)[0])==null?void 0:ue.value)!=null?ie:Z.size;Q.push({data:_==null?void 0:_[le],index:le,offset:J,size:re}),J+=re+B}}}return on(Q,D,R,B,ae,E)}),se(x=>x!==null),Ie()),En);te(P(e,se(ar),X(x=>x==null?void 0:x.length)),o),te(P(C,X(x=>x.topListHeight)),v),te(v,u),te(P(C,X(x=>[x.top,x.bottom])),i),te(P(C,X(x=>x.items)),g);const T=Xe(P(C,se(({items:x})=>x.length>0),ge(o,e),se(([{items:x},S])=>x[x.length-1].originalIndex===S-1),X(([,x,S])=>[x-1,S]),Ie(Ht),X(([x])=>x))),k=Xe(P(C,ct(200),se(({items:x,topItems:S})=>x.length>0&&x[0].originalIndex===S.length),X(({items:x})=>x[0].index),Ie())),j=Xe(P(C,se(({items:x})=>x.length>0),X(({items:x})=>{let S=0,R=x.length-1;for(;x[S].type==="group"&&S<R;)S++;for(;x[R].type==="group"&&R>S;)R--;return{endIndex:x[R].index,startIndex:x[S].index}}),Ie(Xo)));return{endReached:T,initialItemCount:c,itemsRendered:g,listState:C,minOverscanItemCount:f,rangeChanged:j,startReached:k,topItemsIndexes:w,...h}},Te(lt,Jo,hr,Kt,Ut,Xt,vt,dr),{singleton:!0}),rs=be(([{fixedFooterHeight:e,fixedHeaderHeight:t,footerHeight:n,headerHeight:r},{listState:o}])=>{const s=me(),i=Fe(P(Be(n,e,r,t,o),X(([u,a,l,d,v])=>u+a+l+d+v.offsetBottom+v.bottom)),0);return te(oe(i),s),{totalListHeight:i,totalListHeightChanged:s}},Te(De,Ct),{singleton:!0}),ji=be(([{viewportHeight:e},{totalListHeight:t}])=>{const n=F(!1),r=Fe(P(Be(n,e,t),se(([o])=>o),X(([,o,s])=>Math.max(0,o-s)),ct(0),Ie()),0);return{alignToBottom:n,paddingTopAddition:r}},Te(De,rs),{singleton:!0}),os=be(()=>({context:F(null)})),Oi=({itemBottom:e,itemTop:t,locationParams:{align:n,behavior:r,...o},viewportBottom:s,viewportTop:i})=>t<i?{...o,align:n??"start",behavior:r}:e>s?{...o,align:n??"end",behavior:r}:null,ss=be(([{gap:e,sizes:t,totalCount:n},{fixedFooterHeight:r,fixedHeaderHeight:o,headerHeight:s,scrollingInProgress:i,scrollTop:u,viewportHeight:a},{scrollToIndex:l}])=>{const d=me();return te(P(d,ge(t,a,n,s,o,r,u),ge(e),X(([[v,h,p,y,w,c,g,f],C])=>{const{align:T,behavior:k,calculateViewLocation:j=Oi,done:x,...S}=v,R=Zo(v,h,y-1),I=Nt(R,h.offsetTree,C)+w+c,M=I+nt(h.sizeTree,R)[1],O=f+c,A=f+p-g,E=j({itemBottom:M,itemTop:I,locationParams:{align:T,behavior:k,...S},viewportBottom:A,viewportTop:O});return E?x&&tt(P(i,se(B=>!B),yt(Me(i)?1:2)),x):x==null||x(),E}),se(v=>v!==null)),l),{scrollIntoView:d}},Te(lt,De,Ut,Ct,xt),{singleton:!0});function Wr(e){return e?e==="smooth"?"smooth":"auto":!1}const zi=(e,t)=>typeof e=="function"?Wr(e(t)):t&&Wr(e),Ai=be(([{listRefresh:e,totalCount:t,fixedItemSize:n,data:r},{atBottomState:o,isAtBottom:s},{scrollToIndex:i},{scrolledToInitialItem:u},{didMount:a,propsReady:l},{log:d},{scrollingInProgress:v},{context:h},{scrollIntoView:p}])=>{const y=F(!1),w=me();let c=null;function g(k){fe(i,{align:"end",behavior:k,index:"LAST"})}ve(P(Be(P(oe(t),yt(1)),a),ge(oe(y),s,u,v),X(([[k,j],x,S,R,I])=>{let M=j&&R,O="auto";return M&&(O=zi(x,S||I),M=M&&!!O),{followOutputBehavior:O,shouldFollow:M,totalCount:k}}),se(({shouldFollow:k})=>k)),({followOutputBehavior:k,totalCount:j})=>{c&&(c(),c=null),Me(n)?requestAnimationFrame(()=>{Me(d)("following output to ",{totalCount:j},Ve.DEBUG),g(k)}):c=tt(e,()=>{Me(d)("following output to ",{totalCount:j},Ve.DEBUG),g(k),c=null})});function f(k){const j=tt(o,x=>{k&&!x.atBottom&&x.notAtBottomBecause==="SIZE_INCREASED"&&!c&&(Me(d)("scrolling to bottom due to increased size",{},Ve.DEBUG),g("auto"))});setTimeout(j,100)}ve(P(Be(oe(y),t,l),se(([k,,j])=>k&&j),it(({value:k},[,j])=>({refreshed:k===j,value:j}),{refreshed:!1,value:0}),se(({refreshed:k})=>k),ge(y,t)),([,k])=>{Me(u)&&f(k!==!1)}),ve(w,()=>{f(Me(y)!==!1)}),ve(Be(oe(y),o),([k,j])=>{k&&!j.atBottom&&j.notAtBottomBecause==="VIEWPORT_HEIGHT_DECREASING"&&g("auto")});const C=F(null),T=me();return te(Jn(P(oe(r),X(k=>{var j;return(j=k==null?void 0:k.length)!=null?j:0})),P(oe(t))),T),ve(P(Be(P(T,yt(1)),a),ge(oe(C),u,v,h),X(([[k,j],x,S,R,I])=>j&&S&&(x==null?void 0:x({context:I,totalCount:k,scrollingInProgress:R}))),se(k=>!!k),ct(0)),k=>{c&&(c(),c=null),Me(n)?requestAnimationFrame(()=>{Me(d)("scrolling into view",{}),fe(p,k)}):c=tt(e,()=>{Me(d)("scrolling into view",{}),fe(p,k),c=null})}),{autoscrollToBottom:w,followOutput:y,scrollIntoViewOnChange:C}},Te(lt,Xt,Ut,Kt,vt,xt,De,os,ss)),Bi=be(([{data:e,firstItemIndex:t,gap:n,sizes:r},{initialTopMostItemIndex:o},{initialItemCount:s,listState:i},{didMount:u}])=>(te(P(u,ge(s),se(([,a])=>a!==0),ge(o,r,t,n,e),X(([[,a],l,d,v,h,p=[]])=>ns(a,l,d,v,h,p))),i),{}),Te(lt,Kt,Ct,vt),{singleton:!0}),Pi=be(([{didMount:e},{scrollTo:t},{listState:n}])=>{const r=F(0);return ve(P(e,ge(r),se(([,o])=>o!==0),X(([,o])=>({top:o}))),o=>{tt(P(n,yt(1),se(s=>s.items.length>1)),()=>{requestAnimationFrame(()=>{fe(t,o)})})}),{initialScrollTop:r}},Te(vt,De,Ct),{singleton:!0}),is=be(([{scrollVelocity:e}])=>{const t=F(!1),n=me(),r=F(!1);return te(P(e,ge(r,t,n),se(([o,s])=>!!s),X(([o,s,i,u])=>{const{enter:a,exit:l}=s;if(i){if(l(o,u))return!1}else if(a(o,u))return!0;return i}),Ie()),t),ve(P(Be(t,e,n),ge(r)),([[o,s,i],u])=>{o&&u&&u.change&&u.change(s,i)}),{isSeeking:t,scrollSeekConfiguration:r,scrollSeekRangeChanged:n,scrollVelocity:e}},Te(Xt),{singleton:!0}),mr=be(([{scrollContainerState:e,scrollTo:t}])=>{const n=me(),r=me(),o=me(),s=F(!1),i=F(void 0);return te(P(Be(n,r),X(([{scrollHeight:u,scrollTop:a,viewportHeight:l},{offsetTop:d}])=>({scrollHeight:u,scrollTop:Math.max(0,a-d),viewportHeight:l}))),e),te(P(t,ge(r),X(([u,{offsetTop:a}])=>({...u,top:u.top+a}))),o),{customScrollParent:i,useWindowScroll:s,windowScrollContainerState:n,windowScrollTo:o,windowViewportRect:r}},Te(De)),Li=be(([{sizeRanges:e,sizes:t},{headerHeight:n,scrollTop:r},{initialTopMostItemIndex:o},{didMount:s},{useWindowScroll:i,windowScrollContainerState:u,windowViewportRect:a}])=>{const l=me(),d=F(void 0),v=F(null),h=F(null);return te(u,v),te(a,h),ve(P(l,ge(t,r,i,v,h,n)),([p,y,w,c,g,f,C])=>{const T=Si(y.sizeTree);c&&g!==null&&f!==null&&(w=g.scrollTop-f.offsetTop),w-=C,p({ranges:T,scrollTop:w})}),te(P(d,se(ar),X(Gi)),o),te(P(s,ge(d),se(([,p])=>p!==void 0),Ie(),X(([,p])=>p.ranges)),e),{getState:l,restoreStateFrom:d}},Te(lt,De,Kt,vt,mr));function Gi(e){return{align:"start",index:0,offset:e.scrollTop}}const Hi=be(([{topItemsIndexes:e}])=>{const t=F(0);return te(P(t,se(n=>n>=0),X(n=>Array.from({length:n}).map((r,o)=>o))),e),{topItemCount:t}},Te(Ct));function ls(e){let t=!1,n;return(()=>(t||(t=!0,n=e()),n))}const Ni=ls(()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent)),Fi=be(([{deviation:e,scrollBy:t,scrollingInProgress:n,scrollTop:r},{isAtBottom:o,isScrolling:s,lastJumpDueToItemResize:i,scrollDirection:u},{listState:a},{beforeUnshiftWith:l,gap:d,shiftWithOffset:v,sizes:h},{log:p},{recalcInProgress:y}])=>{const w=Xe(P(a,ge(i),it(([,g,f,C],[{bottom:T,items:k,offsetBottom:j,totalCount:x},S])=>{const R=T+j;let I=0;return f===x&&g.length>0&&k.length>0&&(k[0].originalIndex===0&&g[0].originalIndex===0||(I=R-C,I!==0&&(I+=S))),[I,k,x,R]},[0,[],0,0]),se(([g])=>g!==0),ge(r,u,n,o,p,y),se(([,g,f,C,,,T])=>!T&&!C&&g!==0&&f===Ft),X(([[g],,,,,f])=>(f("Upward scrolling compensation",{amount:g},Ve.DEBUG),g))));function c(g){g>0?(fe(t,{behavior:"auto",top:-g}),fe(e,0)):(fe(e,0),fe(t,{behavior:"auto",top:-g}))}return ve(P(w,ge(e,s)),([g,f,C])=>{C&&Ni()?fe(e,f-g):c(-g)}),ve(P(Be(Fe(s,!1),e,y),se(([g,f,C])=>!g&&!C&&f!==0),X(([g,f])=>f),ct(1)),c),te(P(v,X(g=>({top:-g}))),t),ve(P(l,ge(h,d),X(([g,{groupIndices:f,lastSize:C,sizeTree:T},k])=>{function j(x){return x*(C+k)}if(f.length===0)return j(g);{let x=0;const S=Gt(T,0);let R=0,I=0;for(;R<g;){R++,x+=S;let M=f.length===I+1?1/0:f[I+1]-f[I]-1;R+M>g&&(x-=S,M=g-R+1),R+=M,x+=j(M),I++}return x}})),g=>{fe(e,g),requestAnimationFrame(()=>{fe(t,{top:g}),requestAnimationFrame(()=>{fe(e,0),fe(y,!1)})})}),{deviation:e}},Te(De,Xt,Ct,lt,xt,dr)),Di=be(([e,t,n,r,o,s,i,u,a,l,d])=>({...e,...t,...n,...r,...o,...s,...i,...u,...a,...l,...d}),Te(hr,Bi,vt,is,rs,Pi,ji,mr,ss,xt,os)),as=be(([{data:e,defaultItemSize:t,firstItemIndex:n,fixedItemSize:r,fixedGroupSize:o,gap:s,groupIndices:i,heightEstimates:u,itemSize:a,sizeRanges:l,sizes:d,statefulTotalCount:v,totalCount:h,trackItemSizes:p},{initialItemFinalLocationReached:y,initialTopMostItemIndex:w,scrolledToInitialItem:c},g,f,C,T,{scrollToIndex:k},j,{topItemCount:x},{groupCounts:S},R])=>{const{listState:I,minOverscanItemCount:M,topItemsIndexes:O,rangeChanged:A,...E}=T;return te(A,R.scrollSeekRangeChanged),te(P(R.windowViewportRect,X(B=>B.visibleHeight)),g.viewportHeight),{data:e,defaultItemHeight:t,firstItemIndex:n,fixedItemHeight:r,fixedGroupHeight:o,gap:s,groupCounts:S,heightEstimates:u,initialItemFinalLocationReached:y,initialTopMostItemIndex:w,scrolledToInitialItem:c,sizeRanges:l,topItemCount:x,topItemsIndexes:O,totalCount:h,...C,groupIndices:i,itemSize:a,listState:I,minOverscanItemCount:M,scrollToIndex:k,statefulTotalCount:v,trackItemSizes:p,rangeChanged:A,...E,...R,...g,sizes:d,...f}},Te(lt,Kt,De,Li,Ai,Ct,Ut,Fi,Hi,Jo,Di));function Wi(e,t){const n={},r={};let o=0;const s=e.length;for(;o<s;)r[e[o]]=1,o+=1;for(const i in t)Object.hasOwn(r,i)||(n[i]=t[i]);return n}const Jt=typeof document<"u"?m.useLayoutEffect:m.useEffect;function cs(e,t,n){const r=Object.keys(t.required||{}),o=Object.keys(t.optional||{}),s=Object.keys(t.methods||{}),i=Object.keys(t.events||{}),u=m.createContext({});function a(c,g){c.propsReady&&fe(c.propsReady,!1);for(const f of r){const C=c[t.required[f]];fe(C,g[f])}for(const f of o)if(f in g){const C=c[t.optional[f]];fe(C,g[f])}c.propsReady&&fe(c.propsReady,!0)}function l(c){return s.reduce((g,f)=>(g[f]=C=>{const T=c[t.methods[f]];fe(T,C)},g),{})}function d(c){return i.reduce((g,f)=>(g[f]=si(c[t.events[f]]),g),{})}const v=m.forwardRef((c,g)=>{const{children:f,...C}=c,[T]=m.useState(()=>mn(li(e),x=>{a(x,C)})),[k]=m.useState(zr(d,T));Jt(()=>{for(const x of i)x in C&&ve(k[x],C[x]);return()=>{Object.values(k).map(cr)}},[C,k,T]),Jt(()=>{a(T,C)}),m.useImperativeHandle(g,Or(l(T)));const j=n;return b.jsx(u.Provider,{value:T,children:n?b.jsx(j,{...Wi([...r,...o,...i],C),children:f}):f})}),h=c=>{const g=m.useContext(u);return m.useCallback(f=>{fe(g[c],f)},[g,c])},p=c=>{const g=m.useContext(u)[c],f=m.useCallback(C=>ve(g,C),[g]);return m.useSyncExternalStore(f,()=>Me(g),()=>Me(g))},y=c=>{const g=m.useContext(u)[c],[f,C]=m.useState(zr(Me,g));return Jt(()=>ve(g,T=>{T!==f&&C(Or(T))}),[g,f]),f},w=m.version.startsWith("18")?p:y;return{Component:v,useEmitter:(c,g)=>{const f=m.useContext(u)[c];Jt(()=>ve(f,g),[g,f])},useEmitterValue:w,usePublisher:h}}const us=m.createContext(void 0),ds=m.createContext(void 0),fs=typeof document<"u"?m.useLayoutEffect:m.useEffect;function jn(e){return"self"in e}function Vi(e){return"body"in e}function ps(e,t,n,r=jt,o,s){const i=m.useRef(null),u=m.useRef(null),a=m.useRef(null),l=m.useCallback(h=>{let p,y,w;const c=h.target;if(Vi(c)||jn(c)){const f=jn(c)?c:c.defaultView;w=s?f.scrollX:f.scrollY,p=s?f.document.documentElement.scrollWidth:f.document.documentElement.scrollHeight,y=s?f.innerWidth:f.innerHeight}else w=s?c.scrollLeft:c.scrollTop,p=s?c.scrollWidth:c.scrollHeight,y=s?c.offsetWidth:c.offsetHeight;const g=()=>{e({scrollHeight:p,scrollTop:Math.max(w,0),viewportHeight:y})};h.suppressFlushSync?g():Gs.flushSync(g),u.current!==null&&(w===u.current||w<=0||w===p-y)&&(u.current=null,t(!0),a.current&&(clearTimeout(a.current),a.current=null))},[e,t,s]);m.useEffect(()=>{const h=o||i.current;return r(o||i.current),l({suppressFlushSync:!0,target:h}),h.addEventListener("scroll",l,{passive:!0}),()=>{r(null),h.removeEventListener("scroll",l)}},[i,l,n,r,o]);function d(h){const p=i.current;if(!p||(s?"offsetWidth"in p&&p.offsetWidth===0:"offsetHeight"in p&&p.offsetHeight===0))return;const y=h.behavior==="smooth";let w,c,g;jn(p)?(c=Math.max(gt(p.document.documentElement,s?"width":"height"),s?p.document.documentElement.scrollWidth:p.document.documentElement.scrollHeight),w=s?p.innerWidth:p.innerHeight,g=s?window.scrollX:window.scrollY):(c=p[s?"scrollWidth":"scrollHeight"],w=gt(p,s?"width":"height"),g=p[s?"scrollLeft":"scrollTop"]);const f=c-w;if(h.top=Math.ceil(Math.max(Math.min(f,h.top),0)),ts(w,c)||h.top===g){e({scrollHeight:c,scrollTop:g,viewportHeight:w}),y&&t(!0);return}y?(u.current=h.top,a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{a.current=null,u.current=null,t(!0)},1e3)):u.current=null,s&&(h={behavior:h.behavior,left:h.top}),p.scrollTo(h)}function v(h){s&&(h={behavior:h.behavior,left:h.top}),i.current.scrollBy(h)}return{scrollByCallback:v,scrollerRef:i,scrollToCallback:d}}const On="-webkit-sticky",Vr="sticky",br=ls(()=>{if(typeof document>"u")return Vr;const e=document.createElement("div");return e.style.position=On,e.style.position===On?On:Vr});function xr(e){return e}const $i=be(()=>{const e=F(u=>`Item ${u}`),t=F(u=>`Group ${u}`),n=F({}),r=F(xr),o=F("div"),s=F(jt),i=(u,a=null)=>Fe(P(n,X(l=>l[u]),Ie()),a);return{components:n,computeItemKey:r,EmptyPlaceholder:i("EmptyPlaceholder"),FooterComponent:i("Footer"),GroupComponent:i("Group","div"),groupContent:t,HeaderComponent:i("Header"),HeaderFooterTag:o,ItemComponent:i("Item","div"),itemContent:e,ListComponent:i("List","div"),ScrollerComponent:i("Scroller","div"),scrollerRef:s,ScrollSeekPlaceholder:i("ScrollSeekPlaceholder"),TopItemListComponent:i("TopItemList")}}),qi=be(([e,t])=>({...e,...t}),Te(as,$i)),Ui=({height:e})=>b.jsx("div",{style:{height:e}}),Ki={overflowAnchor:"none",position:br(),zIndex:1},gs={overflowAnchor:"none"},Xi={...gs,display:"inline-block",height:"100%"},$r=m.memo(function({showTopList:e=!1}){const t=ce("listState"),n=Ze("sizeRanges"),r=ce("useWindowScroll"),o=ce("customScrollParent"),s=Ze("windowScrollContainerState"),i=Ze("scrollContainerState"),u=o||r?s:i,a=ce("itemContent"),l=ce("context"),d=ce("groupContent"),v=ce("trackItemSizes"),h=ce("itemSize"),p=ce("log"),y=Ze("gap"),w=ce("horizontalDirection"),{callbackRef:c}=ui(n,h,v,e?jt:u,p,y,o,w,ce("skipAnimationFrameInResizeObserver")),[g,f]=m.useState(0);vr("deviation",E=>{g!==E&&f(E)});const C=ce("EmptyPlaceholder"),T=ce("ScrollSeekPlaceholder")||Ui,k=ce("ListComponent"),j=ce("ItemComponent"),x=ce("GroupComponent"),S=ce("computeItemKey"),R=ce("isSeeking"),I=ce("groupIndices").length>0,M=ce("alignToBottom"),O=ce("initialItemFinalLocationReached"),A=e?{}:{boxSizing:"border-box",...w?{display:"inline-block",height:"100%",marginLeft:g!==0?g:M?"auto":0,paddingLeft:t.offsetTop,paddingRight:t.offsetBottom,whiteSpace:"nowrap"}:{marginTop:g!==0?g:M?"auto":0,paddingBottom:t.offsetBottom,paddingTop:t.offsetTop},...O?{}:{visibility:"hidden"}};return!e&&t.totalCount===0&&C?b.jsx(C,{...Ne(C,l)}):b.jsx(k,{...Ne(k,l),"data-testid":e?"virtuoso-top-item-list":"virtuoso-item-list",ref:c,style:A,children:(e?t.topItems:t.items).map(E=>{const B=E.originalIndex,L=S(B+t.firstItemIndex,E.data,l);return R?m.createElement(T,{...Ne(T,l),height:E.size,index:E.index,key:L,type:E.type||"item",...E.type==="group"?{}:{groupIndex:E.groupIndex}}):E.type==="group"?m.createElement(x,{...Ne(x,l),"data-index":B,"data-item-index":E.index,"data-known-size":E.size,key:L,style:Ki},d(E.index,l)):m.createElement(j,{...Ne(j,l),...Ji(j,E.data),"data-index":B,"data-item-group-index":E.groupIndex,"data-item-index":E.index,"data-known-size":E.size,key:L,style:w?Xi:gs},I?a(E.index,E.groupIndex,E.data,l):a(E.index,E.data,l))})})}),Qi={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},Yi={outline:"none",overflowX:"auto",position:"relative"},xn=e=>({height:"100%",position:"absolute",top:0,width:"100%",...e?{display:"flex",flexDirection:"column"}:{}}),Zi={position:br(),top:0,width:"100%",zIndex:1};function Ne(e,t){if(typeof e!="string")return{context:t}}function Ji(e,t){return{item:typeof e=="string"?void 0:t}}const el=m.memo(function(){const e=ce("HeaderComponent"),t=Ze("headerHeight"),n=ce("HeaderFooterTag"),r=wt(m.useMemo(()=>s=>{t(gt(s,"height"))},[t]),!0,ce("skipAnimationFrameInResizeObserver")),o=ce("context");return e?b.jsx(n,{ref:r,children:b.jsx(e,{...Ne(e,o)})}):null}),tl=m.memo(function(){const e=ce("FooterComponent"),t=Ze("footerHeight"),n=ce("HeaderFooterTag"),r=wt(m.useMemo(()=>s=>{t(gt(s,"height"))},[t]),!0,ce("skipAnimationFrameInResizeObserver")),o=ce("context");return e?b.jsx(n,{ref:r,children:b.jsx(e,{...Ne(e,o)})}):null});function hs({useEmitter:e,useEmitterValue:t,usePublisher:n}){return m.memo(function({children:r,style:o,context:s,...i}){const u=n("scrollContainerState"),a=t("ScrollerComponent"),l=n("smoothScrollTargetReached"),d=t("scrollerRef"),v=t("horizontalDirection")||!1,{scrollByCallback:h,scrollerRef:p,scrollToCallback:y}=ps(u,l,a,d,void 0,v);return e("scrollTo",y),e("scrollBy",h),b.jsx(a,{"data-testid":"virtuoso-scroller","data-virtuoso-scroller":!0,ref:p,style:{...v?Yi:Qi,...o},tabIndex:0,...i,...Ne(a,s),children:r})})}function ms({useEmitter:e,useEmitterValue:t,usePublisher:n}){return m.memo(function({children:r,style:o,context:s,...i}){const u=n("windowScrollContainerState"),a=t("ScrollerComponent"),l=n("smoothScrollTargetReached"),d=t("totalListHeight"),v=t("deviation"),h=t("customScrollParent"),p=m.useRef(null),y=t("scrollerRef"),{scrollByCallback:w,scrollerRef:c,scrollToCallback:g}=ps(u,l,a,y,h);return fs(()=>{var f;return c.current=h||((f=p.current)==null?void 0:f.ownerDocument.defaultView),()=>{c.current=null}},[c,h]),e("windowScrollTo",g),e("scrollBy",w),b.jsx(a,{ref:p,"data-virtuoso-scroller":!0,style:{position:"relative",...o,...d!==0?{height:d+v}:{}},...i,...Ne(a,s),children:r})})}const nl=({children:e})=>{const t=m.useContext(us),n=Ze("viewportHeight"),r=Ze("fixedItemHeight"),o=ce("alignToBottom"),s=ce("horizontalDirection"),i=m.useMemo(()=>Fo(n,a=>gt(a,s?"width":"height")),[n,s]),u=wt(i,!0,ce("skipAnimationFrameInResizeObserver"));return m.useEffect(()=>{t&&(n(t.viewportHeight),r(t.itemHeight))},[t,n,r]),b.jsx("div",{"data-viewport-type":"element",ref:u,style:xn(o),children:e})},rl=({children:e})=>{const t=m.useContext(us),n=Ze("windowViewportRect"),r=Ze("fixedItemHeight"),o=ce("customScrollParent"),s=Wo(n,o,ce("skipAnimationFrameInResizeObserver")),i=ce("alignToBottom");return m.useEffect(()=>{t&&(r(t.itemHeight),n({offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:100}))},[t,n,r]),b.jsx("div",{"data-viewport-type":"window",ref:s,style:xn(i),children:e})},ol=({children:e})=>{const t=ce("TopItemListComponent")||"div",n=ce("headerHeight"),r={...Zi,marginTop:`${n}px`},o=ce("context");return b.jsx(t,{style:r,...Ne(t,o),children:e})},sl=m.memo(function(e){const t=ce("useWindowScroll"),n=ce("topItemsIndexes").length>0,r=ce("customScrollParent"),o=ce("context");return b.jsxs(r||t?al:ll,{...e,context:o,children:[n&&b.jsx(ol,{children:b.jsx($r,{showTopList:!0})}),b.jsxs(r||t?rl:nl,{children:[b.jsx(el,{}),b.jsx($r,{}),b.jsx(tl,{})]})]})}),{Component:il,useEmitter:vr,useEmitterValue:ce,usePublisher:Ze}=cs(qi,{required:{},optional:{restoreStateFrom:"restoreStateFrom",context:"context",followOutput:"followOutput",scrollIntoViewOnChange:"scrollIntoViewOnChange",itemContent:"itemContent",groupContent:"groupContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",minOverscanItemCount:"minOverscanItemCount",totalCount:"totalCount",groupCounts:"groupCounts",topItemCount:"topItemCount",firstItemIndex:"firstItemIndex",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedGroupHeight:"fixedGroupHeight",fixedItemHeight:"fixedItemHeight",heightEstimates:"heightEstimates",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"HeaderFooterTag",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",horizontalDirection:"horizontalDirection",skipAnimationFrameInResizeObserver:"skipAnimationFrameInResizeObserver"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy",autoscrollToBottom:"autoscrollToBottom",getState:"getState"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},sl),ll=hs({useEmitter:vr,useEmitterValue:ce,usePublisher:Ze}),al=ms({useEmitter:vr,useEmitterValue:ce,usePublisher:Ze}),cl=il,ul=be(()=>{const e=F(l=>b.jsxs("td",{children:["Item $",l]})),t=F(null),n=F(l=>b.jsxs("td",{colSpan:1e3,children:["Group ",l]})),r=F(null),o=F(null),s=F({}),i=F(xr),u=F(jt),a=(l,d=null)=>Fe(P(s,X(v=>v[l]),Ie()),d);return{components:s,computeItemKey:i,context:t,EmptyPlaceholder:a("EmptyPlaceholder"),FillerRow:a("FillerRow"),fixedFooterContent:o,fixedHeaderContent:r,itemContent:e,groupContent:n,ScrollerComponent:a("Scroller","div"),scrollerRef:u,ScrollSeekPlaceholder:a("ScrollSeekPlaceholder"),TableBodyComponent:a("TableBody","tbody"),TableComponent:a("Table","table"),TableFooterComponent:a("TableFoot","tfoot"),TableHeadComponent:a("TableHead","thead"),TableRowComponent:a("TableRow","tr"),GroupComponent:a("Group","tr")}});Te(as,ul);br();const qr={bottom:0,itemHeight:0,items:[],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},dl={bottom:0,itemHeight:0,items:[{index:0}],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},{ceil:Ur,floor:an,max:Pt,min:zn,round:Kr}=Math;function Xr(e,t,n){return Array.from({length:t-e+1}).map((r,o)=>({data:n===null?null:n[o+e],index:o+e}))}function fl(e){return{...dl,items:e}}function en(e,t){return e&&e.width===t.width&&e.height===t.height}function pl(e,t){return e&&e.column===t.column&&e.row===t.row}const gl=be(([{increaseViewportBy:e,listBoundary:t,overscan:n,visibleRange:r},{footerHeight:o,headerHeight:s,scrollBy:i,scrollContainerState:u,scrollTo:a,scrollTop:l,smoothScrollTargetReached:d,viewportHeight:v},h,p,{didMount:y,propsReady:w},{customScrollParent:c,useWindowScroll:g,windowScrollContainerState:f,windowScrollTo:C,windowViewportRect:T},k])=>{const j=F(0),x=F(0),S=F(qr),R=F({height:0,width:0}),I=F({height:0,width:0}),M=me(),O=me(),A=F(0),E=F(null),B=F({column:0,row:0}),L=me(),_=me(),H=F(!1),Y=F(0),ue=F(!0),ie=F(!1),ae=F(!1);ve(P(y,ge(Y),se(([z,N])=>!!N)),()=>{fe(ue,!1)}),ve(P(Be(y,ue,I,R,Y,ie),se(([z,N,Q,G,,ne])=>z&&!N&&Q.height!==0&&G.height!==0&&!ne)),([,,,,z])=>{fe(ie,!0),pr(1,()=>{fe(M,z)}),tt(P(l),()=>{fe(t,[0,0]),fe(ue,!0)})}),te(P(_,se(z=>z!=null&&z.scrollTop>0),st(0)),x),ve(P(y,ge(_),se(([,z])=>z!=null)),([,z])=>{z&&(fe(R,z.viewport),fe(I,z.item),fe(B,z.gap),z.scrollTop>0&&(fe(H,!0),tt(P(l,yt(1)),N=>{fe(H,!1)}),fe(a,{top:z.scrollTop})))}),te(P(R,X(({height:z})=>z)),v),te(P(Be(oe(R,en),oe(I,en),oe(B,(z,N)=>z&&z.column===N.column&&z.row===N.row),oe(l)),X(([z,N,Q,G])=>({gap:Q,item:N,scrollTop:G,viewport:z}))),L),te(P(Be(oe(j),r,oe(B,pl),oe(I,en),oe(R,en),oe(E),oe(x),oe(H),oe(ue),oe(Y)),se(([,,,,,,,z])=>!z),X(([z,[N,Q],G,ne,V,Z,ee,,J,le])=>{const{column:re,row:xe}=G,{height:pe,width:we}=ne,{width:Re}=V;if(ee===0&&(z===0||Re===0))return qr;if(we===0){const It=gr(le,z),Sn=It+Math.max(ee-1,0);return fl(Xr(It,Sn,Z))}const Ae=bs(Re,we,re);let je,Ge;J?N===0&&Q===0&&ee>0?(je=0,Ge=ee-1):(je=Ae*an((N+xe)/(pe+xe)),Ge=Ae*Ur((Q+xe)/(pe+xe))-1,Ge=zn(z-1,Pt(Ge,Ae-1)),je=zn(Ge,Pt(0,je))):(je=0,Ge=-1);const rt=Xr(je,Ge,Z),{bottom:qe,top:Oe}=Qr(V,G,ne,rt),et=Ur(z/Ae),Qe=et*pe+(et-1)*xe-qe;return{bottom:qe,itemHeight:pe,items:rt,itemWidth:we,offsetBottom:Qe,offsetTop:Oe,top:Oe}})),S),te(P(E,se(z=>z!==null),X(z=>z.length)),j),te(P(Be(R,I,S,B),se(([z,N,{items:Q}])=>Q.length>0&&N.height!==0&&z.height!==0),X(([z,N,{items:Q},G])=>{const{bottom:ne,top:V}=Qr(z,G,N,Q);return[V,ne]}),Ie(Ht)),t);const he=F(!1);te(P(l,ge(he),X(([z,N])=>N||z!==0)),he);const ke=Xe(P(Be(S,j),se(([{items:z}])=>z.length>0),ge(he),se(([[z,N],Q])=>{const G=z.items[z.items.length-1].index===N-1;return(Q||z.bottom>0&&z.itemHeight>0&&z.offsetBottom===0&&z.items.length===N)&&G}),X(([[,z]])=>z-1),Ie())),W=Xe(P(oe(S),se(({items:z})=>z.length>0&&z[0].index===0),st(0),Ie())),D=Xe(P(oe(S),ge(H),se(([{items:z},N])=>z.length>0&&!N),X(([{items:z}])=>({endIndex:z[z.length-1].index,startIndex:z[0].index})),Ie(Xo),ct(0)));te(D,p.scrollSeekRangeChanged),te(P(M,ge(R,I,j,B),X(([z,N,Q,G,ne])=>{const V=es(z),{align:Z,behavior:ee,offset:J}=V;let le=V.index;le==="LAST"&&(le=G-1),le=Pt(0,le,zn(G-1,le));let re=or(N,ne,Q,le);return Z==="end"?re=Kr(re-N.height+Q.height):Z==="center"&&(re=Kr(re-N.height/2+Q.height/2)),J&&(re+=J),{behavior:ee,top:re}})),a);const U=Fe(P(S,X(z=>z.offsetBottom+z.bottom)),0);return te(P(T,X(z=>({height:z.visibleHeight,width:z.visibleWidth}))),R),{customScrollParent:c,data:E,deviation:A,footerHeight:o,gap:B,headerHeight:s,increaseViewportBy:e,initialItemCount:x,itemDimensions:I,overscan:n,restoreStateFrom:_,scrollBy:i,scrollContainerState:u,scrollHeight:O,scrollTo:a,scrollToIndex:M,scrollTop:l,smoothScrollTargetReached:d,totalCount:j,useWindowScroll:g,viewportDimensions:R,windowScrollContainerState:f,windowScrollTo:C,windowViewportRect:T,...p,gridState:S,horizontalDirection:ae,initialTopMostItemIndex:Y,totalListHeight:U,...h,endReached:ke,propsReady:w,rangeChanged:D,startReached:W,stateChanged:L,stateRestoreInProgress:H,...k}},Te(hr,De,Xt,is,vt,mr,xt));function bs(e,t,n){return Pt(1,an((e+n)/(an(t)+n)))}function Qr(e,t,n,r){const{height:o}=n;if(o===void 0||r.length===0)return{bottom:0,top:0};const s=or(e,t,n,r[0].index);return{bottom:or(e,t,n,r[r.length-1].index)+o,top:s}}function or(e,t,n,r){const o=bs(e.width,n.width,t.column),s=an(r/o),i=s*n.height+Pt(0,s-1)*t.row;return i>0?i+t.row:i}const hl=be(()=>{const e=F(v=>`Item ${v}`),t=F({}),n=F(null),r=F("virtuoso-grid-item"),o=F("virtuoso-grid-list"),s=F(xr),i=F("div"),u=F(jt),a=(v,h=null)=>Fe(P(t,X(p=>p[v]),Ie()),h),l=F(!1),d=F(!1);return te(oe(d),l),{components:t,computeItemKey:s,context:n,FooterComponent:a("Footer"),HeaderComponent:a("Header"),headerFooterTag:i,itemClassName:r,ItemComponent:a("Item","div"),itemContent:e,listClassName:o,ListComponent:a("List","div"),readyStateChanged:l,reportReadyState:d,ScrollerComponent:a("Scroller","div"),scrollerRef:u,ScrollSeekPlaceholder:a("ScrollSeekPlaceholder","div")}}),ml=be(([e,t])=>({...e,...t}),Te(gl,hl)),bl=m.memo(function(){const e=_e("gridState"),t=_e("listClassName"),n=_e("itemClassName"),r=_e("itemContent"),o=_e("computeItemKey"),s=_e("isSeeking"),i=Je("scrollHeight"),u=_e("ItemComponent"),a=_e("ListComponent"),l=_e("ScrollSeekPlaceholder"),d=_e("context"),v=Je("itemDimensions"),h=Je("gap"),p=_e("log"),y=_e("stateRestoreInProgress"),w=Je("reportReadyState"),c=wt(m.useMemo(()=>g=>{const f=g.parentElement.parentElement.scrollHeight;i(f);const C=g.firstChild;if(C){const{height:T,width:k}=C.getBoundingClientRect();v({height:T,width:k})}h({column:Yr("column-gap",getComputedStyle(g).columnGap,p),row:Yr("row-gap",getComputedStyle(g).rowGap,p)})},[i,v,h,p]),!0,!1);return fs(()=>{e.itemHeight>0&&e.itemWidth>0&&w(!0)},[e]),y?null:b.jsx(a,{className:t,ref:c,...Ne(a,d),"data-testid":"virtuoso-item-list",style:{paddingBottom:e.offsetBottom,paddingTop:e.offsetTop},children:e.items.map(g=>{const f=o(g.index,g.data,d);return s?b.jsx(l,{...Ne(l,d),height:e.itemHeight,index:g.index,width:e.itemWidth},f):m.createElement(u,{...Ne(u,d),className:n,"data-index":g.index,key:f},r(g.index,g.data,d))})})}),xl=m.memo(function(){const e=_e("HeaderComponent"),t=Je("headerHeight"),n=_e("headerFooterTag"),r=wt(m.useMemo(()=>s=>{t(gt(s,"height"))},[t]),!0,!1),o=_e("context");return e?b.jsx(n,{ref:r,children:b.jsx(e,{...Ne(e,o)})}):null}),vl=m.memo(function(){const e=_e("FooterComponent"),t=Je("footerHeight"),n=_e("headerFooterTag"),r=wt(m.useMemo(()=>s=>{t(gt(s,"height"))},[t]),!0,!1),o=_e("context");return e?b.jsx(n,{ref:r,children:b.jsx(e,{...Ne(e,o)})}):null}),Sl=({children:e})=>{const t=m.useContext(ds),n=Je("itemDimensions"),r=Je("viewportDimensions"),o=wt(m.useMemo(()=>s=>{r(s.getBoundingClientRect())},[r]),!0,!1);return m.useEffect(()=>{t&&(r({height:t.viewportHeight,width:t.viewportWidth}),n({height:t.itemHeight,width:t.itemWidth}))},[t,r,n]),b.jsx("div",{ref:o,style:xn(!1),children:e})},yl=({children:e})=>{const t=m.useContext(ds),n=Je("windowViewportRect"),r=Je("itemDimensions"),o=_e("customScrollParent"),s=Wo(n,o,!1);return m.useEffect(()=>{t&&(r({height:t.itemHeight,width:t.itemWidth}),n({offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:t.viewportWidth}))},[t,n,r]),b.jsx("div",{ref:s,style:xn(!1),children:e})},wl=m.memo(function({...e}){const t=_e("useWindowScroll"),n=_e("customScrollParent"),r=n||t?Il:Cl,o=n||t?yl:Sl,s=_e("context");return b.jsx(r,{...e,...Ne(r,s),children:b.jsxs(o,{children:[b.jsx(xl,{}),b.jsx(bl,{}),b.jsx(vl,{})]})})}),{useEmitter:xs,useEmitterValue:_e,usePublisher:Je}=cs(ml,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",restoreStateFrom:"restoreStateFrom",initialTopMostItemIndex:"initialTopMostItemIndex",increaseViewportBy:"increaseViewportBy"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",stateChanged:"stateChanged",readyStateChanged:"readyStateChanged"}},wl),Cl=hs({useEmitter:xs,useEmitterValue:_e,usePublisher:Je}),Il=ms({useEmitter:xs,useEmitterValue:_e,usePublisher:Je});function Yr(e,t,n){return t!=="normal"&&!(t!=null&&t.endsWith("px"))&&n(`${e} was not resolved to pixel value correctly`,t,Ve.WARN),t==="normal"?0:parseInt(t??"0",10)}const vn=m.createContext(void 0);function ye(e,t){const n=m.useContext(vn);if(!n)throw new Error("useAudioStore must be used within CRAudioProvider");return qt(n,e,t)}function cn(){const e=m.useContext(vn);if(!e)throw new Error("useAudioStoreApi must be used within CRAudioProvider");return e}let vs=!1;function Ss(){return vs}function Zr(e){vs=e}const Tl="_run_zzb61_3",kl="_runWrap_zzb61_7",Rl="_highlight_zzb61_13",_l="_highlightleft_zzb61_14",Ml="_highlightright_zzb61_15",El="_highlightcenter_zzb61_16",jl="_underline_zzb61_48",Ol="_underlineleft_zzb61_49",zl="_underlineright_zzb61_50",Al="_underlinecenter_zzb61_51",ot={run:Tl,runWrap:kl,highlight:Rl,highlightleft:_l,highlightright:Ml,highlightcenter:El,underline:jl,underlineleft:Ol,underlineright:zl,underlinecenter:Al},Jr=e=>Symbol.iterator in e,eo=e=>"entries"in e,to=(e,t)=>{const n=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(n.size!==r.size)return!1;for(const[o,s]of n)if(!r.has(o)||!Object.is(s,r.get(o)))return!1;return!0},Bl=(e,t)=>{const n=e[Symbol.iterator](),r=t[Symbol.iterator]();let o=n.next(),s=r.next();for(;!o.done&&!s.done;){if(!Object.is(o.value,s.value))return!1;o=n.next(),s=r.next()}return!!o.done&&!!s.done};function Pl(e,t){return Object.is(e,t)?!0:typeof e!="object"||e===null||typeof t!="object"||t===null||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:Jr(e)&&Jr(t)?eo(e)&&eo(t)?to(e,t):Bl(e,t):to({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function Vt(e){const t=m.useRef(void 0);return n=>{const r=e(n);return Pl(t.current,r)?t.current:t.current=r}}function Ll(e){const t=e.replace("#",""),n=parseInt(t.length===3?t.repeat(2):t,16),r=n>>16&255,o=n>>8&255,s=n&255;return{r,g:o,b:s}}function Gl(e){const t=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);return t?{r:+t[1],g:+t[2],b:+t[3]}:null}const Hl=Object.freeze({showPointer:void 0,pointerStyle:void 0,pointerColor:void 0}),ys=m.memo(function({runs:t,ns:n,baseIndex:r,preGroups:o}){const s=ye(M=>M.setClipIndex),i=ye(M=>M.seek),u=q(M=>M.setCurrentGlobalRunIndex),a=cn(),l=q(M=>M.rangeStartGI),d=q(M=>M.rangeEndGI),v=q(M=>M.setRange),h=l!=null&&d!=null,p=m.useCallback(M=>{var Y;const O=(Y=M.target)==null?void 0:Y.closest("[data-g]");if(!O)return;const A=Number(O.dataset.g),E=A-r;if(E<0||E>=t.length)return;const B=t[E],L=B.text??"";if(!L.trim()||!/[가-힣a-zA-Z0-9]/.test(L))return;u(A,"program");const _=B.audioChunkIndex,H=B.audioTimeMs;_!=null&&H!=null&&(s(_),i(H))},[t,r,i,s,u]),y=m.useRef(null),w=m.useRef(!1),c=m.useRef({x:0,y:0}),g=m.useCallback(M=>{var B;const O=(B=M.target)==null?void 0:B.closest("[data-g]");if(!O)return;const A=Number(O.dataset.g),E=A-r;E<0||E>=t.length||(w.current=!1,c.current={x:M.clientX,y:M.clientY},y.current&&(window.clearTimeout(y.current),y.current=null),y.current=window.setTimeout(()=>{a.getState().status!=="playing"&&(v(A,A),w.current=!0,y.current=null)},800))},[t,r,v,a]),f=m.useCallback(()=>{y.current&&(window.clearTimeout(y.current),y.current=null)},[]),C=m.useCallback(M=>{if(!y.current)return;const O=M.clientX-c.current.x,A=M.clientY-c.current.y;(Math.abs(O)>5||Math.abs(A)>5)&&f()},[f]),T=m.useCallback(()=>{f()},[f]),k=f,j=f,x=q(M=>M.clearRange),S=m.useCallback(M=>{var E;if(w.current){w.current=!1;return}if(Ss())return;const O=(E=M.target)==null?void 0:E.closest("[data-g]");if(!O)return;const A=Number(O.dataset.g);isNaN(A)||h&&l!=null&&d!=null&&(x(),M.stopPropagation())},[h,l,d,x]),R=o,I=r+t.length-1;return b.jsx("span",{onClick:S,onDoubleClick:p,onPointerDown:g,onPointerMove:C,onPointerUp:T,onPointerCancel:k,onPointerLeave:j,children:R.map((M,O)=>b.jsx(Fl,{ns:n,group:M,runs:t,paraLastG:I,rangeStartGI:l,rangeEndGI:d},`${n}/grp:${O}-${M.startG}`))})},(e,t)=>e.ns===t.ns&&e.baseIndex===t.baseIndex&&e.runs===t.runs&&e.sectionId===t.sectionId),Nl=m.memo(function(){const t=m.useCallback(r=>({showSplit:r.showSplit,slash:r.breakMarks.slash,breakGapPx:r.breakGapPx}),[]),n=K(Vt(t));return n.showSplit?b.jsxs(b.Fragment,{children:[b.jsx("span",{style:{display:"inline-block",width:n.breakGapPx/2}}),n.slash&&b.jsx("span",{children:" / "}),b.jsx("span",{style:{display:"inline-block",width:n.breakGapPx/2}})]}):null}),Fl=m.memo(function({ns:t,group:n,runs:r,paraLastG:o,rangeStartGI:s,rangeEndGI:i}){const u=m.useCallback(c=>{const g=c.currentGlobalRunIndex;return g!=null&&g>=n.startG&&g<=n.endG},[n]),a=q(Vt(u)),l=m.useCallback(c=>a?{showPointer:c.showPointer,pointerStyle:c.pointerStyle,pointerColor:c.pointerColor}:Hl,[a]),d=K(Vt(l)),v=n.r0??0,h=n.len??Math.max(0,n.endG-n.startG+1),p=a&&d.showPointer&&d.pointerStyle!=="underline",y=a&&d.showPointer&&d.pointerStyle==="underline",w=p||y?{"--hl-color":d.pointerColor,"--ul-color":d.pointerColor,"--ul-thickness":"0.3em","--ul-offset":"0.35em"}:void 0;return b.jsx(b.Fragment,{children:Array.from({length:h}).map((c,g)=>{const C=r[v+g],T=n.startG+g,k=`${t}/run:${T}`,j=!!C.split&&T!==o;let x=`${ot.runWrap}`;return p&&(h===1?x+=` ${ot.highlight}`:g===0?x+=` ${ot.highlightleft}`:g+1===h?x+=` ${ot.highlightright}`:x+=` ${ot.highlightcenter}`),y&&(h===1?x+=` ${ot.underline}`:g===0?x+=` ${ot.underlineleft}`:g+1===h?x+=` ${ot.underlineright}`:x+=` ${ot.underlinecenter}`),b.jsxs(m.Fragment,{children:[b.jsx("span",{className:x,style:w,children:b.jsx(Dl,{gi:n.startG,g:T,run:C,active:a,pointerCfg:d,isInRange:s!=null&&i!=null&&T>=s&&T<=i})}),j&&b.jsx(Nl,{})]},k)})})},(e,t)=>e.group===t.group&&e.runs===t.runs&&e.ns===t.ns&&e.rangeStartGI===t.rangeStartGI&&e.rangeEndGI===t.rangeEndGI),Dl=m.memo(function({gi:t,g:n,run:r,active:o,pointerCfg:s,isInRange:i}){const u=m.useMemo(()=>{const a={whiteSpace:"pre-wrap"};if(r.bold&&(a.fontWeight=700),r.italic&&(a.fontStyle="italic"),r.underline&&(a.textDecoration="underline"),o&&s.showPointer){const l=s.pointerColor;if(s.pointerStyle!=="underline"){a.backgroundColor=l;const d=l.startsWith("#")?Ll(l):Gl(l);d&&(.299*d.r+.587*d.g+.114*d.b)/255<.6&&(a.color="#fff")}}return i&&(a.boxShadow="inset 0 0 0 100px rgba(59, 130, 246, 0.3)"),a},[r.bold,r.italic,r.underline,o,s,i]);return b.jsx("span",{className:ot.run,style:u,"data-g":n,"data-gi":t,"data-test":(r==null?void 0:r.audioChunkIndex)||-1,children:r.text||""})},(e,t)=>e.g===t.g&&e.run===t.run&&e.active===t.active&&e.pointerCfg===t.pointerCfg&&e.isInRange===t.isInRange);function Wl({block:e,computedMarker:t,ns:n,baseIndex:r,sectionId:o,preGroups:s}){var l;const i=e.list?e.list.level*24:0,u=((l=e.list)==null?void 0:l.kind)==="bullet"?e.list.glyph??"•":void 0,a=t??u;return b.jsxs("p",{style:{width:"100%",margin:"8px 0",paddingLeft:i,textAlign:e.textAlign,boxSizing:"border-box"},children:[e.list?b.jsx("span",{style:{minWidth:16,display:"inline-block",whiteSpace:"nowrap",userSelect:"none"},children:a||""}):null,b.jsx(ys,{preGroups:s,runs:e.runs,ns:n,baseIndex:r,sectionId:o})]})}const Vl=m.memo(Wl,(e,t)=>e.block===t.block&&e.computedMarker===t.computedMarker&&e.baseIndex===t.baseIndex&&e.ns===t.ns);function $l(e,t){switch((t||"decimal").toLowerCase().replace(/[\s_-]+/g,"")){case"decimal":return String(e);case"decimalleadingzero":return e<10?`0${e}`:String(e);case"loweralpha":case"lowerlatin":return ro(e,!1);case"upperalpha":case"upperlatin":return ro(e,!0);case"lowerroman":return no(e,!1);case"upperroman":return no(e,!0);case"decimalenclosedcircle":return ql(e);default:return String(e)}}function ql(e){return e>=1&&e<=20?String.fromCharCode(9312+(e-1)):`(${e})`}function no(e,t=!0){if(e<=0)return"";const n=[[1e3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50,"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]];let r=e,o="";for(const[s,i]of n)for(;r>=s;)o+=i,r-=s;return t?o:o.toLowerCase()}function ro(e,t=!1){let n=e,r="";for(;n>0;)n--,r=String.fromCharCode(97+n%26)+r,n=Math.floor(n/26);return t?r.toUpperCase():r}function Sr(e){const t=new Map;return{next(n,r){const o=`${n}-${r}`,s=(t.get(o)??0)+1;return t.set(o,s),s},reset(){t.clear()}}}function yr(e,t){const n=e.list;if(!n||n.kind!=="ordered")return;const r=t.next(n.numId??0,n.level),o=$l(r,n.format),s=(n.format||"").toLowerCase();return!/enclosed|paren/.test(s)&&s!=="decimalleadingzero"?`${o}.`:o}function Ul(e){return e.map(t=>t.type==="image"?0:t.runs.length)}function Kl(e){const t=new Array(e.length+1).fill(0);for(let n=0;n<e.length;n++)t[n+1]=t[n]+e[n];return t}function Xl(e,t){const n=[];if(!e.length)return n;const r=(o,s,i)=>{n.push({splitIndex:i??o,runs:e.slice(o,s+1),startG:t+o,endG:t+s})};for(let o=0;o<e.length;o++){const s=e[o].splitIndex;if(s===void 0){r(o,o,void 0);continue}let i=o+1;for(;i<e.length&&e[i].splitIndex===s;)i++;r(o,i-1,s),o=i-1}return n}const Ql="_scroller_kqkmq_3",Yl={scroller:Ql},Zl=m.forwardRef(function({className:t,style:n,...r},o){return b.jsx("div",{ref:o,className:`${Yl.scroller}${t?" "+t:""}`,style:n,...r})}),sr=e=>/[가-힣a-zA-Z0-9]/.test(e),Jl=e=>((e==null?void 0:e.textContent)??"").trim(),un=(e,t)=>e.querySelector(`[data-g="${t}"]`);function ea(e,t=12,n=1.5,r=.5){if(!e)return-1;const o=e.getBoundingClientRect(),s=o.top+t;let i=-1,u=1/0,a=1/0,l=-1,d=1/0,v=1/0;const h=e.querySelectorAll("[data-g]");for(let p=0;p<h.length;p++){const y=h[p];if(!y||!y.isConnected)continue;const w=Jl(y);if(!w||!sr(w))continue;const c=y.getBoundingClientRect();if(c.height<=r||c.width<=r||c.bottom<=o.top||c.top>=o.bottom)continue;if(c.top<s){const C=Math.abs(c.top-s);(C<d||C===d&&(c.top<v||l!==-1&&Number(y.dataset.g)<l))&&(d=C,l=Number(y.dataset.g),v=c.top);continue}const g=Number(y.dataset.g);if(Number.isNaN(g))continue;c.top<a-n?(a=c.top,u=c.top,i=g):c.top<=a+n&&(c.top<u||c.top===u&&(i===-1||g<i))&&(u=c.top,i=g);const f=Math.abs(c.top-s);(f<d||f===d&&(c.top<v||l!==-1&&g<l))&&(d=f,l=g,v=c.top)}return i!==-1?i:l}const ws=async(e,t,{timeoutMs:n=1200,intervalMs:r=16}={})=>{const o=performance.now();let s=un(e,t);for(;!s;){if(performance.now()-o>n)return null;await new Promise(i=>setTimeout(i,r)),s=un(e,t)}return s},Cs=e=>{const t=e.getBoundingClientRect(),n=t.top+t.height*.15,r=t.top+t.height*.8,o=Array.from(e.querySelectorAll("[data-g]"));let s=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;for(const u of o){const a=u.getBoundingClientRect();if(a.bottom<n||a.top>r||a.height<=0)continue;const l=Number(u.dataset.g);Number.isNaN(l)||(l<s&&(s=l),l>i&&(i=l))}return!Number.isFinite(s)||!Number.isFinite(i)?null:{first:s,last:i}},ta=(e,t,{topPaddingRatio:n=.15,behavior:r="auto"}={})=>{const o=un(e,t);if(!o)return!1;const s=e.getBoundingClientRect(),i=o.getBoundingClientRect(),u=s.height*n,a=i.top-(s.top+u);return e.scrollTo({top:e.scrollTop+a,behavior:r}),!0};function na(e,t=120){return new Promise(n=>{let r=null;const o=()=>{r!=null&&window.clearTimeout(r),r=window.setTimeout(()=>{e.removeEventListener("scroll",o,{capture:!0}),n()},t)};e.addEventListener("scroll",o,{passive:!0,capture:!0}),o()})}const oo=async(e,t,{topPaddingRatio:n=.15,behavior:r="smooth",quietMs:o=120}={})=>{if(!ta(e,t,{topPaddingRatio:n,behavior:r}))return!1;await na(e,o);const i=un(e,t);if(!i)return!1;const u=e.getBoundingClientRect(),a=i.getBoundingClientRect(),l=u.height*n,d=u.top+l,v=a.top-d;return Math.abs(v)<=1},pt=()=>new Promise(e=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>e())})}),wr=m.createContext(null);function Is(){const e=m.useContext(wr);if(!e)throw new Error("useQuizStoreApi must be used within QuizProgressProvider");return e}function Ue(e,t){const n=m.useContext(wr);if(!n)throw new Error("useQuizStore must be used within QuizProgressProvider");return qt(n,e,t)}const Ts=()=>{const e=q(l=>l.section),t=Is(),n=Ue(l=>l.retryAllowed),r=Ue(l=>l.previousResult),o=r!=null,s=e.quizzes;if(!s||!s.length)return null;const i=o?n?`퀴즈 다시 풀기 (${s.length})`:"퀴즈 결과 보기":`퀴즈 풀기 (${s.length})`,u=o&&!n?"#64748b":"#2563eb",a=o&&!n?"0 6px 16px rgba(100,116,139,0.3)":"0 6px 16px rgba(37,99,235,0.3)";return b.jsxs("button",{onClick:()=>{t.getState().openFromSection(e)},style:{width:300,background:u,color:"white",border:"none",borderRadius:"10px",padding:"14px 28px",fontSize:"16px",fontWeight:600,cursor:"pointer",boxShadow:a,transition:"all 0.15s ease"},children:[i,o&&!n&&b.jsxs("div",{style:{fontSize:"12px",fontWeight:400,marginTop:"4px",opacity:.8},children:["이미 풀었습니다 (",r.rate,"%)"]})]})},ra="_navBtn_1fciy_2",oa="_disabled_1fciy_26",sa="_label_1fciy_32",Mt={navBtn:ra,disabled:oa,label:sa};var ks={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},so=m.createContext&&m.createContext(ks),ia=["attr","size","title"];function la(e,t){if(e==null)return{};var n=aa(e,t),r,o;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(o=0;o<s.length;o++)r=s[o],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function aa(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function dn(){return dn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},dn.apply(this,arguments)}function io(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function fn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?io(Object(n),!0).forEach(function(r){ca(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):io(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function ca(e,t,n){return t=ua(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ua(e){var t=da(e,"string");return typeof t=="symbol"?t:t+""}function da(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Rs(e){return e&&e.map((t,n)=>m.createElement(t.tag,fn({key:n},t.attr),Rs(t.child)))}function $e(e){return t=>m.createElement(fa,dn({attr:fn({},e.attr)},t),Rs(e.child))}function fa(e){var t=n=>{var{attr:r,size:o,title:s}=e,i=la(e,ia),u=o||n.size||"1em",a;return n.className&&(a=n.className),e.className&&(a=(a?a+" ":"")+e.className),m.createElement("svg",dn({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},n.attr,r,i,{className:a,style:fn(fn({color:e.color||n.color},n.style),e.style),height:u,width:u,xmlns:"http://www.w3.org/2000/svg"}),s&&m.createElement("title",null,s),e.children)};return so!==void 0?m.createElement(so.Consumer,null,n=>t(n)):t(ks)}function lo(e){return $e({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M18.464 2.114a.998.998 0 0 0-1.033.063l-13 9a1.003 1.003 0 0 0 0 1.645l13 9A1 1 0 0 0 19 21V3a1 1 0 0 0-.536-.886zM17 19.091 6.757 12 17 4.909v14.182z"},child:[]}]})(e)}function ao(e){return $e({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M5.536 21.886a1.004 1.004 0 0 0 1.033-.064l13-9a1 1 0 0 0 0-1.644l-13-9A.998.998 0 0 0 5 3v18a1 1 0 0 0 .536.886zM7 4.909 17.243 12 7 19.091V4.909z"},child:[]}]})(e)}const pa=({isIcon:e=!0})=>{const t=q(i=>i.isCanPrev),n=q(i=>i.onSectionNav),r=!t,o=m.useCallback(i=>{i.stopPropagation(),i.preventDefault(),t&&(n==null||n("prev"))},[t,n]),s=t?"이전 섹션으로":"이전 섹션 없음";return e?b.jsxs("button",{type:"button",className:`${Mt.navBtn} ${r?Mt.disabled:""}`,disabled:r,title:s,onMouseDown:o,onClick:i=>i.stopPropagation(),onKeyDown:i=>{(i.key==="Enter"||i.key===" ")&&o(i)},children:[b.jsx(lo,{size:18}),b.jsx("span",{className:Mt.label,children:"이전"})]}):b.jsx("button",{type:"button",disabled:r,title:s,onClick:o,onKeyDown:i=>{(i.key==="Enter"||i.key===" ")&&o(i)},style:{width:300,background:r?"#9ca3af":"#2563eb",color:"white",border:"none",borderRadius:"10px",padding:"14px 28px",fontSize:"16px",fontWeight:600,cursor:r?"not-allowed":"pointer",boxShadow:r?"none":"0 6px 16px rgba(37,99,235,0.3)",transition:"all 0.15s ease",opacity:r?.5:1},children:r?"첫섹션입니다":b.jsxs(b.Fragment,{children:[b.jsx(lo,{size:18,style:{display:"inline",marginRight:"8px",verticalAlign:"middle"}}),"PrevSection"]})})},pn=({isIcon:e=!0})=>{const t=q(i=>i.isCanNext),n=q(i=>i.onSectionNav),r=!t,o=m.useCallback(i=>{i.stopPropagation(),i.preventDefault(),t&&(n==null||n("next"))},[t,n]),s=t?"다음 섹션으로":"다음 섹션 없음";return e?b.jsxs("button",{type:"button",className:`${Mt.navBtn} ${r?Mt.disabled:""}`,disabled:r,title:s,onMouseDown:o,onClick:i=>i.stopPropagation(),onKeyDown:i=>{(i.key==="Enter"||i.key===" ")&&o(i)},children:[b.jsx(ao,{size:18}),b.jsx("span",{className:Mt.label,children:"다음"})]}):b.jsx("button",{type:"button",disabled:r,title:s,onClick:o,onKeyDown:i=>{(i.key==="Enter"||i.key===" ")&&o(i)},style:{width:300,background:r?"#9ca3af":"#2563eb",color:"white",border:"none",borderRadius:"10px",padding:"14px 28px",fontSize:"16px",fontWeight:600,cursor:r?"not-allowed":"pointer",boxShadow:r?"none":"0 6px 16px rgba(37,99,235,0.3)",transition:"all 0.15s ease",opacity:r?.5:1},children:r?"마지막섹션입니다":b.jsxs(b.Fragment,{children:["NextSection",b.jsx(ao,{size:18,style:{display:"inline",marginLeft:"8px",verticalAlign:"middle"}})]})})};function _s(e,t){let n=0,r=e.length-1;for(;n<r;){const o=Math.floor((n+r+1)/2);e[o]<=t?n=o:r=o-1}return n}function co(e,t,n=.2,r=.8){const o=e.querySelector(`[data-g="${t}"]`);if(!o)return!1;const s=e.getBoundingClientRect(),i=o.getBoundingClientRect();if(i.height<=0||s.height<=0)return!1;const u=(i.top+i.height/2-s.top)/s.height;return u>=n&&u<=r}const ga=e=>e==="instant"?"auto":e;function ha(e){const{sc:t,virtRef:n,prefix:r,recorderStoreApi:o,programmaticScrollRef:s,scrollToGISeqRef:i}=e,u=f=>{const C=t.scrollTop,T=t.scrollHeight-t.clientHeight,k=T>0?C/T:0;let j=0;const x=t.querySelector(`[data-g="${f}"]`);if(x){const S=t.getBoundingClientRect(),R=x.getBoundingClientRect(),I=S.height>0?S.height/t.clientHeight:1,M=(R.top-S.top)/I/t.clientHeight;j=Math.max(0,Math.min(M,1))}o.getState().emit({type:"scroll",payload:{scrollTop:C,scrollRatio:k,anchorGI:f,anchorOffsetRatio:j}})},a=async(f,C="smooth")=>{var k;const T=_s(r,f);(k=n.current)==null||k.scrollToIndex({index:T,align:"start",behavior:ga(C)}),await ws(t,f)},l=()=>new Promise(f=>requestAnimationFrame(()=>f())),d=async f=>{if(co(t,f,.1,.7))return u(f),!0;if(t.scrollTop>=t.scrollHeight-t.clientHeight-1){const S=t.querySelector(`[data-g="${f}"]`);if(S){const R=t.getBoundingClientRect(),I=S.getBoundingClientRect();if(I.bottom>R.top&&I.top<R.bottom)return u(f),!0}}s.current=!0;const T=t.querySelector(`[data-g="${f}"]`),k=t.getBoundingClientRect();let j=t.scrollTop<=1?0:.1;if(T){const S=T.getBoundingClientRect();j=((S.top+S.height/2-k.top)/k.height>.5,.15)}return!!T?(await oo(t,f,{behavior:"smooth",topPaddingRatio:j}),await l()):(await a(f,"auto"),await oo(t,f,{behavior:"auto",topPaddingRatio:.15})),s.current=!1,u(f),co(t,f,.1,.7)};return{ensureVisibleGI:d,scrollToGI:async f=>d(f),getVisibleRange:()=>Cs(t),getScrollTop:()=>t.scrollTop,setScrollTop:f=>{var C;(C=n.current)==null||C.scrollTo({top:f})},getAnchorOffsetRatio:f=>{const C=t.querySelector(`[data-g="${f}"]`);if(!C)return 0;const T=C.getBoundingClientRect(),k=t.getBoundingClientRect(),j=k.height>0?k.height/t.clientHeight:1;return(T.top-k.top)/j/t.clientHeight},scrollToGIAtOffset:async(f,C)=>{var j,x;const T=t.querySelector(`[data-g="${f}"]`);if(T){const S=T.getBoundingClientRect(),R=t.getBoundingClientRect(),I=R.height>0?R.height/t.clientHeight:1,M=(S.top-R.top)/I,O=C*t.clientHeight;if(Math.abs(M-O)<=3)return}const k=++i.current;s.current=!0;try{const S=()=>new Promise(A=>requestAnimationFrame(()=>A())),R=()=>{const A=t.querySelector(`[data-g="${f}"]`);if(!A)return null;const E=A.getBoundingClientRect(),B=t.getBoundingClientRect(),L=B.height>0?B.height/t.clientHeight:1,_=(E.top-B.top)/L,H=C*t.clientHeight;return{delta:_-H,cur:_,tgt:H}};if(k!==i.current||(await a(f,"auto"),k!==i.current)||(await S(),await S(),await S(),k!==i.current))return;const I=R(),M=t.scrollTop>=t.scrollHeight-t.clientHeight-1,O=t.scrollTop<=1;if(I&&Math.abs(I.delta)>1&&!(M&&I.delta>0)&&!(O&&I.delta<0)){const A=t.scrollTop;if((j=n.current)==null||j.scrollBy({top:I.delta}),await S(),k!==i.current)return;for(let E=0;E<3;E++){const B=R();if(!B||Math.abs(B.delta)<=2)break;const L=t.scrollTop;if((x=n.current)==null||x.scrollBy({top:B.delta}),await S(),k!==i.current)return;if(Math.abs(t.scrollTop-L)<1)break}}}finally{k===i.current&&(s.current=!1)}},getScrollRatio:()=>{const f=t.scrollHeight-t.clientHeight;return f>0?t.scrollTop/f:0}}}const ma=({scrollContainerRef:e,virtRef:t,prefix:n})=>{const r=q(_=>_.setCurrentGlobalRunIndex),o=q(_=>_.registerSectionScrollApi),s=ye(_=>_.scrollLock),i=ye(_=>_.syncToGI),u=mt(),a=ut(),l=Go(_=>_.isPlaybackMode),d=m.useRef(!1),v=m.useRef(null),h=m.useRef(null),p=m.useRef(0),y=m.useRef(null),w=m.useRef(-1),c=m.useCallback(()=>{if(l||s)return;v.current=null;const _=h.current;if(!_)return;const H=ea(_,5);H!==-1&&H!==w.current&&(w.current=H,i(H))},[l,s,i]),g=m.useCallback(_=>{h.current=_,v.current==null&&(v.current=requestAnimationFrame(c))},[c]),f=m.useCallback(_=>{var ue;h.current=_,(ue=y.current)==null||ue.abort();const H=new AbortController;y.current=H,new Promise(ie=>{"onscrollend"in _?_.addEventListener("scrollend",()=>ie(),{once:!0}):setTimeout(ie,150)}).then(()=>{if(H.signal.aborted)return;y.current=null,c();const ie=w.current;ie!==-1&&r(ie,"scroll"),requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(H.signal.aborted)return;const ae=w.current;if(ae===-1)return;const he=_.scrollTop,ke=_.scrollHeight-_.clientHeight,W=ke>0?he/ke:0;let D=0;const U=_.querySelector(`[data-g="${ae}"]`);if(U){const z=_.getBoundingClientRect(),N=U.getBoundingClientRect(),Q=z.height>0?z.height/_.clientHeight:1,G=(N.top-z.top)/Q/_.clientHeight;D=Math.max(0,Math.min(G,1))}u.getState().emit({type:"scroll",payload:{scrollTop:he,scrollRatio:W,anchorGI:ae,anchorOffsetRatio:D}})})})})},[c,u,r]),C=m.useRef(!1),T=m.useCallback(_=>{l||s||d.current&&(C.current||(g(_),f(_)))},[l,s,g,f]),k=m.useRef(void 0),j=m.useRef(void 0),x=m.useRef(void 0),S=m.useRef(void 0);m.useEffect(()=>{const _=e.current;if(_)return k.current=()=>{d.current=!0},j.current=()=>{d.current=!0},x.current=()=>{d.current=!0},S.current=()=>T(_),_.addEventListener("wheel",k.current,{passive:!0}),_.addEventListener("touchmove",j.current,{passive:!0}),window.addEventListener("keydown",x.current,{passive:!0}),_.addEventListener("scroll",S.current,{passive:!0}),()=>{var H;_.removeEventListener("wheel",k.current),_.removeEventListener("touchmove",j.current),window.removeEventListener("keydown",x.current),_.removeEventListener("scroll",S.current),v.current!=null&&cancelAnimationFrame(v.current),(H=y.current)==null||H.abort()}},[T,e]),m.useEffect(()=>{const _=e.current;if(!_||!s)return;const H=ae=>{ae.preventDefault(),ae.stopPropagation(),d.current=!1},Y=ae=>{ae.preventDefault(),ae.stopPropagation(),d.current=!1},ue=ae=>{["ArrowUp","ArrowDown","PageUp","PageDown","Home","End"," "].includes(ae.key)&&(ae.preventDefault(),ae.stopPropagation(),d.current=!1)},ie={overscrollBehavior:_.style.overscrollBehavior,touchAction:_.style.touchAction};return _.style.overscrollBehavior="contain",_.style.touchAction="none",_.addEventListener("wheel",H,{passive:!1}),_.addEventListener("touchmove",Y,{passive:!1}),window.addEventListener("keydown",ue,{passive:!1}),()=>{_.removeEventListener("wheel",H),_.removeEventListener("touchmove",Y),window.removeEventListener("keydown",ue),_.style.overscrollBehavior=ie.overscrollBehavior,_.style.touchAction=ie.touchAction}},[s,e]);const R=m.useRef({first:-1,last:-1}),I=m.useRef(!1),M=m.useCallback(()=>{const _=e.current;if(!_)return;const H=Cs(_),Y=(H==null?void 0:H.first)??-1,ue=(H==null?void 0:H.last)??-1;R.current={first:Y,last:ue}},[e]),O=m.useRef(!1),A=m.useCallback(()=>{const _=e.current;if(!_||O.current)return;O.current=!0;const H=Math.min(_.scrollTop+Math.floor(_.clientHeight*.6),_.scrollHeight-_.clientHeight);requestAnimationFrame(()=>{_.scrollTo({top:H,behavior:"instant"})})},[e]);m.useEffect(()=>{!I.current&&s&&(O.current=!1,M()),I.current=s},[s,M]);const E=m.useRef(0),B=m.useRef(0);m.useEffect(()=>{if(!s||l)return;const _=Y=>{const ue=e.current;if(!ue)return;const{first:ie,last:ae}=R.current;if(ie===-1||ae===-1){A();return}const he=ue.querySelector(`[data-g="${Y}"]`);if(he){const W=ue.getBoundingClientRect(),D=he.getBoundingClientRect();if(W.height>0){const U=(D.top-W.top)/W.height,z=(D.bottom-W.top)/W.height;if(U>=.02&&z<=.95){M();return}}}const ke=++E.current;window.clearTimeout(B.current),B.current=window.setTimeout(()=>{if(ke!==E.current)return;const W=a.getState().progress.getSectionScrollApi();W?W.ensureVisibleGI(Y).then(D=>{ke===E.current&&(D?M():A())}):A()},80)};_(a.getState().progress.currentGlobalRunIndex);const H=a.subscribe((Y,ue)=>{const ie=Y.progress.currentGlobalRunIndex;ie!==ue.progress.currentGlobalRunIndex&&_(ie)});return()=>{H(),E.current+=1;const Y=B.current;window.clearTimeout(Y)}},[s,l,A,M,e,a]);const L=m.useCallback(()=>{const _=e.current;if(_)return ha({sc:_,virtRef:t,prefix:n,recorderStoreApi:u,programmaticScrollRef:C,scrollToGISeqRef:p})},[e,t,n,u]);return m.useEffect(()=>(o(L()),()=>o(void 0)),[L,o]),null};function ba({section:e,blocks:t,nsPrefix:n}){const r=m.useMemo(()=>{const I=[],M=Sr();return t.forEach((O,A)=>{O.type==="paragraph"&&(I[A]=yr(O,M))}),I},[t]),o=q(I=>{var M;return((M=I.layout)==null?void 0:M.prefix)??[]}),s=q(I=>{var M;return((M=I.derivedNav)==null?void 0:M.splitGroupsPerBlock)??[]}),i=K(I=>I.marginX),u=K(I=>I.viewportHeight),a=m.useRef({start:0,end:0}),l=m.useCallback(I=>{const M=t[I],O=`${n}blk-${M.id}`;if(M.type==="image"){const{src:B,alt:L,width:_,height:H}=M,Y=_&&H?`${_} / ${H}`:"4 / 3",ue=I>=a.current.start&&I<=a.current.end,ie=u>80?Math.floor((u-80)*.6):void 0;return b.jsxs("div",{style:{margin:"12px 0",textAlign:"center",width:"100%"},children:[b.jsx("div",{style:{position:"relative",width:"100%",maxHeight:ie,aspectRatio:Y},children:b.jsx("img",{src:B,alt:L||"",loading:ue?"eager":"lazy",style:{pointerEvents:"none",position:"absolute",inset:0,width:"100%",height:"100%",objectFit:"contain",display:"block"}})}),L&&b.jsx("div",{style:{fontSize:12,color:"#6b7280",marginTop:4},children:L})]})}const A=r[I]??void 0,E=s[I];return b.jsx("div",{style:{maxWidth:860,display:"flex"},children:b.jsx(Vl,{block:M,computedMarker:A,ns:O,baseIndex:o[I],sectionId:e.section_id,preGroups:E})})},[t,r,o,n,e,s,u]),d=m.useRef(null),v=m.useCallback(I=>{d.current=I},[]),h=m.useMemo(()=>m.memo(I=>{const{style:M,children:O,...A}=I;return b.jsx("div",{...A,style:M,children:b.jsx("div",{style:{boxSizing:"border-box",paddingRight:`${i}px`,paddingLeft:`${i}px`,maxWidth:860,margin:"0 auto",width:"100%",height:"100%"},children:O})})}),[i]),p=m.useRef(null),y=m.useMemo(()=>t.map(I=>I.id),[t]),w=Go(I=>I.isPlaybackMode),[c,g]=m.useState(!1);m.useEffect(()=>{g(w)},[t,w]);const f=m.useCallback(()=>{g(!0)},[]),C=m.useCallback(()=>{const I=Math.max(80,Math.floor(u*.5));if(!c)return b.jsx("div",{style:{height:I}});const M=e.quizzes;return M&&M.length?b.jsxs("div",{style:{display:"block"},children:[b.jsx("div",{style:{display:"flex",justifyContent:"center",marginTop:20},children:b.jsx(Ts,{})}),b.jsx("div",{style:{display:"flex",justifyContent:"center",marginTop:20},children:b.jsx(pn,{isIcon:!1})}),b.jsx("div",{style:{height:I,width:"100%"}})]}):b.jsxs("div",{children:[b.jsx("div",{style:{display:"flex",justifyContent:"center",marginTop:20},children:b.jsx(pn,{isIcon:!1})}),b.jsx("div",{style:{height:I}})]})},[c,e,u]),T=m.useMemo(()=>({Item:h,Header:()=>b.jsx("div",{style:{height:40}}),Footer:C,Scroller:Zl}),[C,h]),k=m.useCallback(I=>y[I],[y]),j=ut(),[x]=m.useState(()=>j.getState().progress.currentGlobalRunIndex??0),S=m.useMemo(()=>{if(!o.length)return 0;const I=o[o.length-1],M=Math.max(0,Math.min(x,I));return _s(o,M)},[o,x]),R=ut();return m.useEffect(()=>{let I=!1;return(async()=>{let M=d.current;if(!M){for(let B=0;B<20;B++){if(await new Promise(L=>setTimeout(L,50)),I)return;if(M=d.current,M)break}if(!M)return}const O=R.getState().progress.currentGlobalRunIndex,A=R.getState().progress.setSectionLoading,E=O!=null&&O>=0?O:0;await ws(M,E),!I&&(await pt(),await pt(),await pt(),await pt(),!I&&A(!1))})(),()=>{I=!0}},[d,R]),b.jsxs(b.Fragment,{children:[b.jsx(cl,{ref:p,style:{height:"100%",width:"100%",boxSizing:"border-box"},defaultItemHeight:99,computeItemKey:k,totalCount:t.length,itemContent:l,initialTopMostItemIndex:S,increaseViewportBy:{top:100,bottom:100},endReached:f,components:T,scrollerRef:v}),b.jsx(ma,{scrollContainerRef:d,virtRef:p,prefix:o})]})}function xa(e){var r,o;const t=e;if(!t)return!1;const n=((o=(r=t.tagName)==null?void 0:r.toLowerCase)==null?void 0:o.call(r))??"";return!!(["a","button","input","textarea","select","label"].includes(n)||t.isContentEditable)}function va(){const e=q(y=>y.section),t=K(y=>y.theme),n=K(y=>y.fontFamily),r=K(y=>y.fontSizePx),o=K(y=>y.lineHeight),s=sn[t],{blocks:i,nsPrefix:u}=m.useMemo(()=>({sectionId:e.section_id,blocks:e.ast.blocks,nsPrefix:`sec-${e.section_id??"0"}/`}),[e]),a=gn(),l=m.useCallback(()=>{const{isSettingsOpen:y,setSettingsOpen:w,toggleOverlays:c}=a.getState();y?w(!1):c()},[a]),{onClick:d,onDoubleClick:v}=Ys({onSingle:l,onDouble:()=>{},delay:250,shouldIgnoreTarget:xa}),h=m.useMemo(()=>({flex:1,fontFamily:n,background:s.bg,color:s.fg,fontSize:r,lineHeight:o,overflow:"hidden",WebkitTextSizeAdjust:"none",MozTextSizeAdjust:"none",textSizeAdjust:"none"}),[n,s.bg,s.fg,r,o]),p=m.useMemo(()=>({margin:"0 auto",width:"100%",height:"100%"}),[]);return b.jsx("div",{onClick:d,onDoubleClick:v,style:h,children:b.jsx("div",{style:p,children:b.jsx(ba,{section:e,blocks:i,nsPrefix:u})})})}function Sa(e){return $e({attr:{viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M9.383 3.076A1 1 0 0110 4v12a1 1 0 01-1.707.707L4.586 13H2a1 1 0 01-1-1V8a1 1 0 011-1h2.586l3.707-3.707a1 1 0 011.09-.217zM12.293 7.293a1 1 0 011.414 0L15 8.586l1.293-1.293a1 1 0 111.414 1.414L16.414 10l1.293 1.293a1 1 0 01-1.414 1.414L15 11.414l-1.293 1.293a1 1 0 01-1.414-1.414L13.586 10l-1.293-1.293a1 1 0 010-1.414z",clipRule:"evenodd"},child:[]}]})(e)}function ya(e){return $e({attr:{viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true"},child:[{tag:"path",attr:{fillRule:"evenodd",d:"M9.383 3.076A1 1 0 0110 4v12a1 1 0 01-1.707.707L4.586 13H2a1 1 0 01-1-1V8a1 1 0 011-1h2.586l3.707-3.707a1 1 0 011.09-.217zM14.657 2.929a1 1 0 011.414 0A9.972 9.972 0 0119 10a9.972 9.972 0 01-2.929 7.071 1 1 0 01-1.414-1.414A7.971 7.971 0 0017 10c0-2.21-.894-4.208-2.343-5.657a1 1 0 010-1.414zm-2.829 2.828a1 1 0 011.415 0A5.983 5.983 0 0115 10a5.984 5.984 0 01-1.757 4.243 1 1 0 01-1.415-1.415A3.984 3.984 0 0013 10a3.983 3.983 0 00-1.172-2.828 1 1 0 010-1.415z",clipRule:"evenodd"},child:[]}]})(e)}function wa(e){return $e({attr:{viewBox:"0 0 544 512"},child:[{tag:"path",attr:{d:"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z"},child:[]}]})(e)}function Ca(e){return $e({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z"},child:[]},{tag:"path",attr:{d:"M9.64 7.64c.23-.5.36-1.05.36-1.64 0-2.21-1.79-4-4-4S2 3.79 2 6s1.79 4 4 4c.59 0 1.14-.13 1.64-.36L10 12l-2.36 2.36C7.14 14.13 6.59 14 6 14c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4c0-.59-.13-1.14-.36-1.64L12 14l7 7h3v-1L9.64 7.64zM6 8c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm0 12c-1.1 0-2-.89-2-2s.9-2 2-2 2 .89 2 2-.9 2-2 2zm6-7.5c-.28 0-.5-.22-.5-.5s.22-.5.5-.5.5.22.5.5-.22.5-.5.5zM19 3l-6 6 2 2 7-7V3h-3z"},child:[]}]})(e)}function Ia(e){return $e({attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{fill:"none",d:"M0 0h24v24H0V0z",opacity:".87"},child:[]},{tag:"path",attr:{d:"M17.51 3.87 15.73 2.1 5.84 12l9.9 9.9 1.77-1.77L9.38 12l8.13-8.13z"},child:[]}]})(e)}function Ta(e){return $e({attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0"},child:[]},{tag:"path",attr:{d:"M12 18c-.328 0 -.652 -.017 -.97 -.05c-3.172 -.332 -5.85 -2.315 -8.03 -5.95c2.4 -4 5.4 -6 9 -6c3.465 0 6.374 1.853 8.727 5.558"},child:[]},{tag:"path",attr:{d:"M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0"},child:[]},{tag:"path",attr:{d:"M20.2 20.2l1.8 1.8"},child:[]}]})(e)}function ka(e){return $e({attr:{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},child:[{tag:"path",attr:{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"},child:[]},{tag:"path",attr:{d:"M4 8v-2a2 2 0 0 1 2 -2h2"},child:[]},{tag:"path",attr:{d:"M4 16v2a2 2 0 0 0 2 2h2"},child:[]},{tag:"path",attr:{d:"M16 4h2a2 2 0 0 1 2 2v2"},child:[]},{tag:"path",attr:{d:"M16 20h2a2 2 0 0 0 2 -2v-2"},child:[]}]})(e)}const Ra="_wrap_1hfub_4",_a="_visible_1hfub_25",Ma="_compact_1hfub_31",Ea="_row2_1hfub_34",ja="_controls_1hfub_44",Oa="_row1_1hfub_52",za="_groupExpand_1hfub_80",Aa="_groupPlayback_1hfub_81",Ba="_groupSpeed_1hfub_82",Pa="_groupFeatures_1hfub_83",La="_groupNav_1hfub_84",Ga="_btn_1hfub_116",Ha="_btnForbidden_1hfub_141",Na="_btnActive_1hfub_147",Fa="_label_1hfub_158",Da="_compactBtn_1hfub_168",Ce={wrap:Ra,visible:_a,compact:Ma,row2:Ea,controls:ja,row1:Oa,groupExpand:za,groupPlayback:Aa,groupSpeed:Ba,groupFeatures:Pa,groupNav:La,btn:Ga,btnForbidden:Ha,btnActive:Na,label:Fa,compactBtn:Da},Wa=m.memo(function(){const t=m.useRef(null),n=m.useContext(ht),r=(n==null?void 0:n.getState().isPlaybackMode)??!1,o=ye(S=>S.status),s=ye(S=>S.currentTimeMs),i=ye(S=>S.currentClip),u=ye(S=>S.playbackKind),a=K(S=>S.muteAudio),l=K(S=>S.audioSpeed),d=ye(S=>S.getClipSrc),v=ye(S=>S._onTime),h=ye(S=>S._onEnded),p=ye(S=>S._onError),y=q(S=>S.setCurrentGlobalRunIndex),w=q(S=>S.getSectionScrollApi),c=q(S=>S.snapToReadable),g=q(S=>S.edgeReadable),f=m.useRef(null),C=m.useRef(null),T=m.useRef(!1),k=m.useRef(null);m.useEffect(()=>{u==="real"&&(T.current=!0)},[u]);const j=m.useMemo(()=>{const S=d(i);if(!S)return null;try{return new URL(S,window.location.href).href}catch{return S}},[i,d]);m.useEffect(()=>{T.current=!0},[j]),m.useEffect(()=>{const S=t.current;if(!S)return;const R=()=>{if(S.paused||S.ended)return;const O=S.currentTime*1e3;T.current&&O===0||(O>0&&(T.current=!1),v(O))},I=()=>{var A,E;h();const O=g(1);typeof O=="number"&&O>=0&&(y(O,"audio"),(E=(A=w())==null?void 0:A.ensureVisibleGI)==null||E.call(A,O))},M=O=>{const A=O.currentTarget;console.warn("Audio error",{networkState:A.networkState,readyState:A.readyState}),p()};return S.addEventListener("timeupdate",R),S.addEventListener("ended",I),S.addEventListener("error",M),()=>{S.removeEventListener("timeupdate",R),S.removeEventListener("ended",I),S.removeEventListener("error",M)}},[v,h,p,g,y,w]),m.useEffect(()=>{if(r)return;const S=t.current;if(!S)return;if(!j){try{S.pause()}catch(O){console.log("pause error",O)}C.current=null;return}const R=S.currentSrc||S.src||null,I=!R||R!==j;if(I){try{S.pause()}catch(O){console.log("pause error",O)}S.src=j;try{S.load()}catch(O){console.log("load error",O)}C.current=j}S.muted=!!a,S.volume=1,S.playbackRate=typeof l=="number"?l:1;const M=async()=>{I&&await new Promise(O=>{let A=!1;const E=()=>{A||(A=!0,S.removeEventListener("loadedmetadata",E),S.removeEventListener("canplay",E),O())};S.addEventListener("loadedmetadata",E),S.addEventListener("canplay",E),S.readyState>=1&&E()});try{await S.play()}catch(O){console.warn("el.play() failed",O)}};if(o==="loading"||o==="playing")M();else try{S.pause()}catch(O){console.log("pause error",O)}},[j,a,o,l,r]),m.useEffect(()=>{if(r)return;const S=t.current;if(!S||u!=="real")return;const R=s/1e3;if(Number.isFinite(R)){if(S.readyState<1){f.current=s;const I=()=>{if(f.current!=null){const M=f.current/1e3;try{S.currentTime=M}catch(O){console.log("currentTime보정 오류",O)}f.current=null}S.removeEventListener("loadedmetadata",I),S.removeEventListener("canplay",I)};S.addEventListener("loadedmetadata",I),S.addEventListener("canplay",I);return}if(Math.abs(S.currentTime-R)>.2)try{S.currentTime=R}catch(I){console.log("currentTime보정오류",I)}}},[s,u,r]);const x=ye(S=>S.getGIFromCT);return m.useEffect(()=>{var I,M;if(r||u!=="real"||o!=="playing"&&o!=="loading")return;const S=x(i,s);if(S<0)return;const R=c(S);R!==k.current&&(k.current=R,y(R,"audio"),R%5===0&&((M=(I=w())==null?void 0:I.ensureVisibleGI)==null||M.call(I,R)))},[o,i,s,u,x,c,y,w,r]),b.jsx("audio",{ref:t,preload:"auto",style:{display:"none"}})});function Va(){return b.jsx(Wa,{})}const $a="_scrubberWrap_uw0cd_2",qa="_labels_uw0cd_9",Ua="_index_uw0cd_15",Ka="_controls_uw0cd_19",Xa="_percent_uw0cd_25",Qa="_range_uw0cd_46",Tt={scrubberWrap:$a,labels:qa,index:Ua,controls:Ka,percent:Xa,range:Qa};function Ya(){const e=K(k=>k.isDev),t=q(k=>k.currentGlobalRunIndex),n=q(k=>k.totalRuns),r=q(k=>k.setCurrentGlobalRunIndex),o=q(k=>k.getSectionScrollApi),s=q(k=>k.giToPercentTotal),i=q(k=>k.percentToGITotal),u=q(k=>k.snapToReadable),a=ye(k=>k.scrollLock),l=ye(k=>k.pause),d=ye(k=>k.play),v=ye(k=>k.syncToGI),[h,p]=m.useState(()=>s(t||0));m.useEffect(()=>{p(s(t||0))},[t,s]);const y=m.useRef(!1),w=m.useMemo(()=>Math.max(0,Math.min(t??0,Math.max(0,(n??1)-1)))+1,[t,n]),c=m.useCallback(()=>{a&&(l(),y.current=!0)},[a,l]),g=m.useCallback(k=>{p(Number(k.currentTarget.value))},[]),f=m.useCallback(async()=>{const k=i(h),j=u(k);l(),r(j,"scrubber-commit"),v(j);const x=o();x!=null&&x.ensureVisibleGI&&await x.ensureVisibleGI(j),y.current&&(y.current=!1,d())},[h,i,u,l,r,v,o,d]),C=m.useMemo(()=>({"--pct":`${h}%`}),[h]),T=m.useMemo(()=>Math.round(h),[h]);return b.jsxs("div",{className:Tt.scrubberWrap,children:[e&&b.jsx("div",{className:Tt.labels,children:b.jsxs("span",{className:Tt.index,children:[w," / ",n||0]})}),b.jsxs("div",{className:Tt.controls,children:[b.jsx("input",{type:"range",className:Tt.range,min:0,max:100,step:.5,value:h,style:C,onMouseDown:c,onTouchStart:c,onChange:g,onMouseUp:()=>{f()},onTouchEnd:()=>{f()},onKeyUp:k=>k.key==="Enter"||k.key===" "?void f():void 0,"aria-label":"진행률"}),b.jsxs("span",{className:Tt.percent,children:[T,"%"]})]})]})}const Za=m.memo(Ya),Ja=m.memo(function(){const t=m.useContext(ht),n=(t==null?void 0:t.getState().isPlaybackMode)??!1,r=ye(S=>S.playbackKind),o=ye(S=>S.status),s=ye(S=>S.fake),i=K(S=>S.audioSpeed),u=ye(S=>S.pause),a=q(S=>S.totalRuns),l=q(S=>S.currentGlobalRunIndex),d=q(S=>S.setCurrentGlobalRunIndex),v=q(S=>S.getSectionScrollApi),h=q(S=>S.nextReadableFrom),p=q(S=>S.edgeReadable),y=m.useRef(null),w=m.useRef(null),c=m.useRef(0),g=m.useRef(-1),f=!n&&r==="fake"&&o==="playing",C=Math.max(1,(s==null?void 0:s.totalWords)??1),T=m.useMemo(()=>{const S=200*i;return C/S*6e4},[C,i]),k=m.useMemo(()=>!a||a<=1||T<=0?0:(a-1)/T,[a,T]);m.useEffect(()=>{if(!f)return;const S=Math.max(0,Math.min(l??0,Math.max(0,(a??1)-1)));c.current=S,g.current=S,w.current=null},[f,l,a]);const j=m.useRef(-1);m.useEffect(()=>{if(!a){j.current=-1;return}const S=p(1);j.current=S??-1},[p,a]);const x=m.useCallback(S=>{(async()=>{var L,_;if(!f){y.current=null;return}if(!a||a<=1||k<=0){y.current=null;return}const R=w.current;w.current=S;const I=R==null?0:Math.max(0,S-R),M=a-1;c.current=Math.min(M,c.current+k*I);const O=Math.floor(c.current),A=v(),E=h(O,1);if(E==null){const H=j.current>=0?j.current:O;H!==g.current&&(g.current=H,d(H,"audio"),await((L=A==null?void 0:A.ensureVisibleGI)==null?void 0:L.call(A,H))),u(),y.current=null;return}const B=E;B!==g.current&&(g.current=B,d(B,"audio"),B%5===0&&await((_=A==null?void 0:A.ensureVisibleGI)==null?void 0:_.call(A,B))),y.current=requestAnimationFrame(x)})().catch(console.error)},[f,a,k,h,d,v,u]);return m.useEffect(()=>(f?y.current==null&&(y.current=requestAnimationFrame(x)):(y.current&&(cancelAnimationFrame(y.current),y.current=null),w.current=null),()=>{y.current&&(cancelAnimationFrame(y.current),y.current=null)}),[f,x]),null}),ec=m.memo(function(){return b.jsx(Ja,{})}),tc="data:image/svg+xml,%3csvg%20width='111'%20height='111'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xml:space='preserve'%20overflow='hidden'%3e%3cg%20transform='translate(-435%2011)'%3e%3cpath%20d='M532.723%2046.8125C530.242%2046.8292%20527.8%2047.4292%20525.593%2048.5642%20523.298%2049.7713%20520.952%2050.8767%20518.608%2051.8815%20517.451%2031.9953%20500.391%2016.8128%20480.505%2017.9704%20462.359%2019.0268%20447.834%2033.4215%20446.615%2051.5578L438.476%2048.1353%20438.476%2049.9344C438.473%2054.7251%20441.432%2059.0185%20445.91%2060.721%20446.509%2060.9604%20447.138%2061.1708%20447.767%2061.3801%20448.053%2061.4761%20448.339%2061.5709%20448.622%2061.6692L447.745%2066.7254C447.463%2068.2415%20447.818%2069.8071%20448.728%2071.0521%20449.635%2072.2874%20450.984%2073.1242%20452.493%2073.3877L452.768%2073.4282C453.011%2073.488%20453.259%2073.5198%20453.509%2073.523%20456.31%2073.5182%20458.699%2071.4953%20459.166%2068.7338L459.781%2064.8673C468.886%2066.8727%20478.184%2067.875%20487.508%2067.8562%20493.267%2067.8674%20499.021%2067.5125%20504.736%2066.7937%20504.893%2066.7613%20505.041%2066.7405%20505.184%2066.7231L505.562%2068.8379C505.986%2071.6231%20508.396%2073.6706%20511.213%2073.6375%20511.583%2073.648%20511.953%2073.5977%20512.307%2073.4883%20515.422%2072.958%20517.518%2070.0024%20516.988%2066.8869%20516.984%2066.8688%20516.981%2066.8509%20516.978%2066.833L516.758%2065.6767C522.066%2065.3125%20527.42%2065.3125%20532.607%2065.3125L532.723%2065.3125C537.831%2065.6255%20542.226%2061.7378%20542.539%2056.6292%20542.852%2051.5205%20538.965%2047.1255%20533.856%2046.8125%20533.479%2046.7894%20533.1%2046.7894%20532.723%2046.8125ZM516.326%2052.7256C511.914%2054.5082%20507.352%2055.8913%20502.693%2056.858L492.697%2041.007%20501.916%2026.3469C510.579%2032.4029%20515.911%2042.1631%20516.326%2052.7256ZM500.254%2057.3217C497.133%2057.8531%20493.977%2058.1542%20490.811%2058.2224L487.449%2058.2224C480.061%2058.2766%20472.682%2057.6921%20465.394%2056.4753L474.504%2042.1644%20490.692%2042.1644ZM482.602%2020.2188C488.73%2020.2155%20494.742%2021.8953%20499.981%2025.075L490.693%2039.8507%20474.491%2039.8195%20465.194%2025.0415C470.449%2021.8782%20476.468%2020.2107%20482.602%2020.2188ZM463.254%2026.2995%20472.504%2041.0023%20462.938%2056.0267C458.169%2055.1133%20453.47%2053.8672%20448.875%2052.2977%20449.378%2041.8709%20454.689%2032.2672%20463.254%2026.2995ZM456.876%2068.3719C456.595%2070.0115%20455.173%2071.2097%20453.509%2071.2094%20453.431%2071.2042%20453.354%2071.191%20453.278%2071.1701%20453.133%2071.1343%20452.984%2071.1101%20452.835%2071.0972%20451.94%2070.9264%20451.142%2070.4243%20450.601%2069.6912%20450.063%2068.9533%20449.853%2068.0254%20450.023%2067.1278L450.844%2062.3872%20457.525%2064.2962ZM514.123%2069.8103C513.566%2070.5637%20512.74%2071.0728%20511.817%2071.2313L511.657%2071.2718C511.514%2071.32%20511.363%2071.3392%20511.213%2071.3285%20509.525%2071.3698%20508.075%2070.1378%20507.844%2068.4656L507.486%2066.4688%20514.501%2065.8548%20514.701%2067.2527C514.87%2068.1485%20514.661%2069.0742%20514.123%2069.8103ZM532.723%2063%20532.607%2063C526.955%2063%20521.113%2063%20515.284%2063.4625L515.276%2063.4625%20515.276%2063.4625%20505.9%2064.2904%20504.36%2064.5078C498.77%2065.2064%20493.141%2065.5509%20487.508%2065.5391%20477.952%2065.5601%20468.425%2064.4858%20459.114%2062.3375L450.263%2059.8168%20446.738%2058.5658C443.792%2057.4525%20441.62%2054.9086%20440.982%2051.8237%20454.33%2057.5309%20470.023%2060.5383%20486.577%2060.5383%20486.868%2060.5383%20487.161%2060.5383%20487.452%2060.5383L490.828%2060.5383C500.421%2060.2575%20509.874%2058.1665%20518.689%2054.3755L518.797%2054.3304C521.437%2053.2216%20524.086%2051.9728%20526.649%2050.6235%20528.526%2049.6491%20530.608%2049.1354%20532.723%2049.125%20536.554%2048.8199%20539.908%2051.6785%20540.213%2055.5099%20540.518%2059.3414%20537.659%2062.6949%20533.828%2063%20533.46%2063.0293%20533.091%2063.0293%20532.723%2063Z'/%3e%3cpath%20d='M534.442%2053.75C534.442%2055.0272%20533.407%2056.0625%20532.13%2056.0625%20530.852%2056.0625%20529.817%2055.0272%20529.817%2053.75%20529.817%2052.4728%20530.852%2051.4375%20532.13%2051.4375%20533.407%2051.4375%20534.442%2052.4728%20534.442%2053.75Z'/%3e%3c/g%3e%3c/svg%3e",nc="data:image/svg+xml,%3csvg%20width='159'%20height='159'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xml:space='preserve'%20overflow='hidden'%3e%3cg%20transform='translate(-392%20-84)'%3e%3cpath%20d='M496.776%20189.601C496.122%20189.934%20495.77%20190.663%20495.916%20191.383L499.911%20210.219C500.074%20210.985%20500.75%20211.532%20501.533%20211.531L501.929%20211.531C503.729%20211.515%20505.222%20212.919%20505.319%20214.716%20505.389%20216.544%20503.964%20218.083%20502.136%20218.154%20502.093%20218.155%20502.05%20218.156%20502.006%20218.156L497.503%20218.156C495.941%20218.15%20494.594%20217.058%20494.263%20215.531L490.363%20197.147C490.174%20196.252%20489.294%20195.68%20488.4%20195.87%20488.399%20195.87%20488.399%20195.87%20488.399%20195.87%20488.174%20195.918%20487.962%20196.014%20487.776%20196.15L481.184%20200.898C479.925%20201.758%20478.809%20202.45%20477.776%20203.015%20476.998%20203.429%20476.669%20204.372%20477.022%20205.18%20477.402%20206.011%20478.385%20206.378%20479.217%20205.998%20479.253%20205.981%20479.288%20205.964%20479.322%20205.945%20480.618%20205.229%20481.877%20204.447%20483.094%20203.604L487.657%20200.313%20491.031%20216.213C491.677%20219.273%20494.376%20221.464%20497.503%20221.469L501.882%20221.469C505.577%20221.473%20508.587%20218.502%20508.631%20214.807%20508.608%20211.503%20506.158%20208.719%20502.883%20208.277L499.416%20191.93C502.051%20190.581%20506.719%20188.344%20509.619%20188.344%20515.225%20188.346%20520.812%20187.662%20526.252%20186.307%20530.081%20185.36%20533.152%20182.51%20534.381%20178.762L534.535%20178.295C535.676%20175.09%20535.323%20171.542%20533.573%20168.624L525.126%20154.2C522.254%20149.369%20517.625%20145.835%20512.207%20144.337%20512.364%20138.624%20511.516%20132.927%20509.7%20127.508%20504.714%20113.244%20488.452%20105.977%20487.761%20105.669%20487.336%20105.48%20486.851%20105.48%20486.426%20105.669%20485.959%20105.876%20484.987%20106.308%20483.1%20111.962%20482.811%20112.832%20483.281%20113.77%20484.15%20114.059%20485.019%20114.348%20485.958%20113.878%20486.247%20113.009%20486.649%20111.744%20487.129%20110.505%20487.685%20109.299%20491.474%20111.245%20502.818%20117.831%20506.566%20128.543%20508.418%20133.972%20509.183%20139.713%20508.815%20145.437%20508.734%20146.277%20509.297%20147.043%20510.122%20147.217%20515.212%20148.269%20519.626%20151.41%20522.287%20155.875L530.744%20170.299C532.007%20172.379%20532.256%20174.921%20531.42%20177.207L531.254%20177.727C530.378%20180.388%20528.194%20182.41%20525.474%20183.079%20520.288%20184.375%20514.964%20185.031%20509.619%20185.031%20505.93%20185.031%20501.061%20187.35%20496.776%20189.601Z'/%3e%3cpath%20d='M422.439%20192.966C421.946%20190.791%20421.681%20188.571%20421.649%20186.341%20421.7%20185.427%20421.001%20184.643%20420.086%20184.592%20419.171%20184.54%20418.388%20185.239%20418.336%20186.154%20418.324%20187.879%20418.47%20189.602%20418.772%20191.3%20412.577%20189.633%20408.907%20183.26%20410.574%20177.065%20411.942%20171.981%20416.559%20168.453%20421.824%20168.469%20422.661%20168.473%20423.491%20168.611%20424.284%20168.88%20425.056%20169.133%20425.898%20168.787%20426.271%20168.065%20435.26%20150.783%20455.639%20142.806%20473.971%20149.392%20474.837%20150.636%20475.5%20151.557%20475.559%20151.638%20476.094%20152.38%20477.129%20152.549%20477.872%20152.014%20478.614%20151.479%20478.782%20150.444%20478.248%20149.702%20478.216%20149.657%20475.101%20145.338%20473.444%20142.62%20467.845%20132.798%20470.283%20120.115%20471.358%20115.817%20475.617%20117.014%20487.816%20121.194%20493.442%20131.039%20496.082%20135.531%20497.921%20140.449%20498.876%20145.571%20499.017%20146.361%20499.705%20146.936%20500.508%20146.936L503.929%20146.936C504.816%20146.948%20505.561%20146.274%20505.639%20145.391%20505.7%20144.478%20505.01%20143.688%20504.097%20143.627%20504.059%20143.624%20504.021%20143.623%20503.982%20143.623L501.871%20143.623C500.778%20138.613%20498.902%20133.806%20496.312%20129.38%20488.742%20116.13%20471.271%20112.337%20470.533%20112.183%20469.704%20112.01%20468.879%20112.489%20468.618%20113.294%20468.385%20114.011%20463.013%20131.036%20470.568%20144.256%20470.579%20144.276%20470.745%20144.576%20470.978%20144.973%20470.99%20144.991%20470.978%20145.003%20470.96%20144.998%20452.498%20140.481%20433.287%20148.811%20423.966%20165.375%20423.261%20165.231%20422.543%20165.158%20421.824%20165.156%20413.582%20165.183%20406.923%20171.886%20406.95%20180.128%20406.974%20187.414%20412.256%20193.618%20419.446%20194.803L419.446%20194.803C419.532%20195.194%20419.611%20195.585%20419.706%20195.972L419.8%20196.329C422.428%20206.56%20428.796%20215.436%20437.646%20221.204%20437.917%20221.379%20438.232%20221.473%20438.554%20221.474L473.068%20221.474C476.748%20221.495%20479.756%20218.542%20479.801%20214.862%20479.847%20211.242%20476.95%20208.27%20473.329%20208.224%20473.278%20208.223%20473.227%20208.223%20473.176%20208.224L465.158%20208.224C474.765%20201.216%20476.873%20187.747%20469.866%20178.14%20465.812%20172.583%20459.348%20169.297%20452.47%20169.297%20450.573%20169.261%20448.682%20169.507%20446.858%20170.029%20445.981%20170.293%20445.484%20171.219%20445.749%20172.096%20446.013%20172.973%20446.938%20173.47%20447.816%20173.206%20449.328%20172.775%20450.897%20172.574%20452.47%20172.609%20462.532%20172.632%20470.67%20180.807%20470.648%20190.869%20470.63%20198.914%20465.337%20205.995%20457.626%20208.29%20456.784%20208.543%20456.286%20209.408%20456.491%20210.263%20456.686%20211.016%20457.369%20211.54%20458.147%20211.533L473.107%20211.533C474.951%20211.521%20476.458%20213.001%20476.48%20214.845%20476.52%20216.635%20475.102%20218.118%20473.312%20218.158%20473.264%20218.159%20473.216%20218.159%20473.168%20218.158L439.054%20218.158C431.004%20212.776%20425.251%20204.584%20422.922%20195.184%20422.853%20194.889%20422.795%20194.619%20422.733%20194.339Z'/%3e%3cpath%20d='M519.521%20163.831C519.708%20162.011%20518.383%20160.385%20516.563%20160.199%20514.743%20160.012%20513.117%20161.337%20512.931%20163.157%20512.744%20164.977%20514.069%20166.603%20515.889%20166.789%20516.113%20166.812%20516.339%20166.812%20516.563%20166.789%20518.126%20166.629%20519.361%20165.394%20519.521%20163.831Z'/%3e%3c/g%3e%3c/svg%3e",rc="_WPMSpeedButtonsWrap_r3byt_1",oc="_btnWrap_r3byt_7",sc="_label_r3byt_14",ic="_iconBtn_r3byt_22",zt={WPMSpeedButtonsWrap:rc,btnWrap:oc,label:sc,iconBtn:ic},uo=350,lc=40,ac=.85,cc=m.memo(function(){const t=K(h=>h.audioSpeed),n=K(h=>h.incAudioSpeed),r=K(h=>h.decAudioSpeed),o=m.useRef(null),s=m.useRef(uo),i=m.useRef(null),u=m.useCallback(h=>{const p=t;if(h==="inc"){if(p>=2)return!1;n()}else{if(p<=.3)return!1;r()}return!0},[t,n,r]),a=m.useCallback(()=>{i.current=null,o.current&&(clearTimeout(o.current),o.current=null)},[]),l=m.useCallback(()=>{i.current&&(s.current=Math.max(lc,Math.floor(s.current*ac)),o.current=window.setTimeout(()=>{u(i.current)?l():a()},s.current))},[u,a]),d=m.useCallback(h=>{if(i.current)return;i.current=h,s.current=uo,u(h)&&l();const y=()=>a();window.addEventListener("mouseup",y,{once:!0}),window.addEventListener("touchend",y,{once:!0})},[l,u,a]);m.useEffect(()=>a,[a]);const v=`${(t*100).toFixed(0)}%`;return b.jsx("div",{onMouseLeave:a,className:zt.WPMSpeedButtonsWrap,children:b.jsxs("div",{className:zt.btnWrap,children:[b.jsx("button",{className:zt.iconBtn,type:"button",title:"속도 느리게",onMouseDown:()=>d("dec"),onTouchStart:h=>{h.preventDefault(),d("dec")},onMouseUp:a,children:b.jsx("img",{src:tc,alt:"느리게"})}),b.jsx("div",{className:zt.label,style:{minWidth:"44px",textAlign:"center"},children:b.jsx("div",{children:v})}),b.jsx("button",{className:zt.iconBtn,type:"button",title:"속도 빠르게",onMouseDown:()=>d("inc"),onTouchStart:h=>{h.preventDefault(),d("inc")},onMouseUp:a,children:b.jsx("img",{src:nc,alt:"빠르게"})})]})})}),uc="_StepBtn_15t0r_1",dc={StepBtn:uc};function fc(e){return $e({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M208,48V208a8,8,0,0,1-13.66,5.66L128,147.31V208a8,8,0,0,1-13.66,5.66l-80-80a8,8,0,0,1,0-11.32l80-80A8,8,0,0,1,128,48v60.69l66.34-66.35A8,8,0,0,1,208,48Z"},child:[]}]})(e)}function pc(e){return $e({attr:{viewBox:"0 0 256 256",fill:"currentColor"},child:[{tag:"path",attr:{d:"M221.66,133.66l-80,80A8,8,0,0,1,128,208V147.31L61.66,213.66A8,8,0,0,1,48,208V48a8,8,0,0,1,13.66-5.66L128,108.69V48a8,8,0,0,1,13.66-5.66l80,80A8,8,0,0,1,221.66,133.66Z"},child:[]}]})(e)}function fo({direction:e}){const t=q(v=>v.currentGlobalRunIndex),n=q(v=>v.totalRuns),r=q(v=>v.hasReadableInDir),o=q(v=>v.computeStepTarget),s=q(v=>v.setCurrentGlobalRunIndex),i=ye(v=>v.syncToGI),u=q(v=>v.getSectionScrollApi),a=m.useCallback(async v=>{var y,w;const h=Math.max(t,Math.min(0,Math.max(0,(n??1)-1))),p=o(h,v);s(p,"scrubber-step"),i(p),await((w=(y=u())==null?void 0:y.ensureVisibleGI)==null?void 0:w.call(y,p))},[t,n,o,s,i,u]),l=m.useMemo(()=>{const v=Math.max(t,Math.min(0,Math.max(0,(n??1)-1))),h=!n||!r(v,1),p=!n||!r(v,-1);return e==="left"?p:h},[e,n,t,r]),d=m.useCallback(()=>{a(e==="left"?-1:1)},[e,a]);return b.jsx("button",{className:dc.StepBtn,type:"button",onClick:d,disabled:l,title:e==="left"?"이전":"다음",children:e==="left"?b.jsx(fc,{}):b.jsx(pc,{})})}const gc="_GCPlayBtn_n54mc_1",hc="_playing_n54mc_34",po={GCPlayBtn:gc,playing:hc},mc=({size:e=60,color:t="#333",bgColor:n="#fff",isPlaying:r,onClick:o,tooltip:s="재생",title:i=""})=>b.jsx("button",{className:`${po.GCPlayBtn} ${r?po.playing:""}`,onClick:o,"data-tip":s,title:i,style:{"--btn-size":`${e}px`,"--icon-color":t,"--btn-bg":n}});function bc(e){return $e({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 294.1L383 167c9.4-9.4 24.6-9.4 33.9 0s9.3 24.6 0 34L273 345c-9.1 9.1-23.7 9.3-33.1.7L95 201.1c-4.7-4.7-7-10.9-7-17s2.3-12.3 7-17c9.4-9.4 24.6-9.4 33.9 0l127.1 127z"},child:[]}]})(e)}function xc(e){return $e({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{d:"M256 217.9L383 345c9.4 9.4 24.6 9.4 33.9 0 9.4-9.4 9.3-24.6 0-34L273 167c-9.1-9.1-23.7-9.3-33.1-.7L95 310.9c-4.7 4.7-7 10.9-7 17s2.3 12.3 7 17c9.4 9.4 24.6 9.4 33.9 0l127.1-127z"},child:[]}]})(e)}function vc(){var R;const e=K(I=>I.showOverlays),t=q(I=>I.section),n=!!t.ast.isAddedSplit,r=!!((R=t.audios)!=null&&R.length),o=q(I=>I.canTracking),s=q(I=>I.canToggleShowGaze),i=q(I=>I.showGaze),u=q(I=>I.onToggleShowGaze),a=K(I=>I.muteAudio),l=K(I=>I.showPointer),d=K(I=>I.showSplit),v=K(I=>I.toggleMuteAudio),h=K(I=>I.toggleShowPointer),p=K(I=>I.toggleShowSplit),y=K(I=>I.overlayCompactMode),w=K(I=>I.toggleOverlayCompactMode),c=cn(),g=ut();m.useEffect(()=>{const I=c.getState(),{syncToGI:M,useFake:O,useReal:A}=I,E=I.playbackKind,B=g.getState().progress.currentGlobalRunIndex??0;if(!r){E!=="fake"&&O();return}a?E!=="fake"&&O():E!=="real"&&(M(B),A())},[r,a,g,c]);const f=ye(I=>I.play),C=ye(I=>I.pause),T=ye(I=>I.status),k=m.useCallback(I=>{I.stopPropagation(),T==="playing"||T==="loading"?C():f()},[T,f,C]),j=cn(),x=ut(),S=m.useCallback(async I=>{var he,ke;if(I.stopPropagation(),T==="playing"||T==="loading"){C();return}const{progress:M}=x.getState(),{currentGlobalRunIndex:O,snapToReadable:A,edgeReadable:E,setCurrentGlobalRunIndex:B,getSectionScrollApi:L}=M,_=j.getState(),H=_.currentClip,Y=L==null?void 0:L(),ue=typeof O=="number"?O:0,ie=typeof A=="function"?A(ue):ue,ae=typeof E=="function"?E(1):null;if(ae!=null&&ie>=ae){B==null||B(ae,"audio"),await((he=Y==null?void 0:Y.ensureVisibleGI)==null?void 0:he.call(Y,ae)),_.syncToGI(ae);return}B==null||B(ie,"audio"),await((ke=Y==null?void 0:Y.ensureVisibleGI)==null?void 0:ke.call(Y,ie)),_.syncToGI(ie),f(H)},[T,C,f,j,x]);return b.jsxs("div",{className:`${Ce.wrap} ${e?Ce.visible:""} ${y?Ce.compact:""}`,onClick:I=>{I.stopPropagation()},onTouchStart:I=>{I.stopPropagation()},children:[!y&&b.jsx(Za,{}),b.jsx("div",{style:y?{display:"none"}:void 0,children:r&&!a?b.jsx(Va,{}):b.jsx(ec,{})}),b.jsxs("div",{className:Ce.controls,children:[b.jsxs("div",{className:Ce.row1,children:[b.jsx("div",{className:Ce.groupExpand,children:b.jsx("button",{type:"button",onClick:I=>{I.stopPropagation(),w()},className:Ce.compactBtn,title:y?"오버레이 확대":"오버레이 축소",children:y?b.jsx(xc,{size:24}):b.jsx(bc,{size:24})})}),b.jsxs("div",{className:Ce.groupPlayback,children:[b.jsx(fo,{direction:"left"}),b.jsx(mc,{size:34,isPlaying:T==="playing",onClick:a?S:k,title:T==="playing"?"일시정지":"재생"}),b.jsx(fo,{direction:"right"})]}),b.jsx("div",{className:Ce.groupSpeed,children:b.jsx(cc,{})})]}),b.jsxs("div",{className:Ce.row2,children:[b.jsxs("div",{className:Ce.groupFeatures,children:[r&&b.jsxs("button",{type:"button",onClick:I=>{I.stopPropagation(),v()},className:`${Ce.btn} ${a?"":Ce.btnActive}`,title:"오디오북 음소거 전환",children:[a?b.jsx(Sa,{size:18}):b.jsx(ya,{size:18}),b.jsx("span",{className:Ce.label,children:"오디오북"})]}),b.jsxs("button",{type:"button",onClick:I=>{I.stopPropagation(),h()},className:`${Ce.btn} ${l?Ce.btnActive:""}`,title:"포인터 표시",children:[b.jsx(wa,{size:18}),b.jsx("span",{className:Ce.label,children:"포인터"})]}),n&&b.jsxs("button",{type:"button",onClick:I=>{I.stopPropagation(),p()},disabled:!n,className:`${Ce.btn} ${d?Ce.btnActive:""} ${n?"":Ce.btnForbidden}`,title:"끊어읽기 표시",children:[b.jsx(Ca,{size:18}),b.jsx("span",{className:Ce.label,children:"끊어읽기"})]}),b.jsxs("button",{type:"button",onClick:I=>{I.stopPropagation(),u==null||u()},disabled:!o||!s,className:`${Ce.btn} ${o&&i?Ce.btnActive:""} ${o?"":Ce.btnForbidden}`,title:"시선 표시",children:[b.jsx(Ta,{size:18}),b.jsx("span",{className:Ce.label,children:"시선"})]})]}),b.jsxs("div",{className:Ce.groupNav,children:[b.jsx(pa,{}),b.jsx(pn,{})]})]})]})]})}const Sc=m.memo(vc);function yc(e){return $e({attr:{viewBox:"0 0 512 512"},child:[{tag:"path",attr:{fill:"none",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"32",d:"M262.29 192.31a64 64 0 1 0 57.4 57.4 64.13 64.13 0 0 0-57.4-57.4zM416.39 256a154.34 154.34 0 0 1-1.53 20.79l45.21 35.46a10.81 10.81 0 0 1 2.45 13.75l-42.77 74a10.81 10.81 0 0 1-13.14 4.59l-44.9-18.08a16.11 16.11 0 0 0-15.17 1.75A164.48 164.48 0 0 1 325 400.8a15.94 15.94 0 0 0-8.82 12.14l-6.73 47.89a11.08 11.08 0 0 1-10.68 9.17h-85.54a11.11 11.11 0 0 1-10.69-8.87l-6.72-47.82a16.07 16.07 0 0 0-9-12.22 155.3 155.3 0 0 1-21.46-12.57 16 16 0 0 0-15.11-1.71l-44.89 18.07a10.81 10.81 0 0 1-13.14-4.58l-42.77-74a10.8 10.8 0 0 1 2.45-13.75l38.21-30a16.05 16.05 0 0 0 6-14.08c-.36-4.17-.58-8.33-.58-12.5s.21-8.27.58-12.35a16 16 0 0 0-6.07-13.94l-38.19-30A10.81 10.81 0 0 1 49.48 186l42.77-74a10.81 10.81 0 0 1 13.14-4.59l44.9 18.08a16.11 16.11 0 0 0 15.17-1.75A164.48 164.48 0 0 1 187 111.2a15.94 15.94 0 0 0 8.82-12.14l6.73-47.89A11.08 11.08 0 0 1 213.23 42h85.54a11.11 11.11 0 0 1 10.69 8.87l6.72 47.82a16.07 16.07 0 0 0 9 12.22 155.3 155.3 0 0 1 21.46 12.57 16 16 0 0 0 15.11 1.71l44.89-18.07a10.81 10.81 0 0 1 13.14 4.58l42.77 74a10.8 10.8 0 0 1-2.45 13.75l-38.21 30a16.05 16.05 0 0 0-6.05 14.08c.33 4.14.55 8.3.55 12.47z"},child:[]}]})(e)}const wc="_host_gafql_3",Cc="_topbar_gafql_11",Ic="_visible_gafql_32",Tc="_backBtn_gafql_37",kc="_title_gafql_58",Rc="_calibrationBtn_gafql_67",_c="_disabled_gafql_87",Mc="_settingsBtn_gafql_95",ft={host:wc,topbar:Cc,visible:Ic,backBtn:Tc,title:kc,calibrationBtn:Rc,disabled:_c,settingsBtn:Mc};function Ec(){const e=K(p=>p.showOverlays),t=K(p=>p.overlayCompactMode),n=q(p=>p.onViewerClose),o=q(p=>p.section).ast.title,s=q(p=>p.canTracking),i=q(p=>p.handleAskCalibration),u=ye(p=>p.status==="playing"),a=s&&!u,l=K(p=>p.setSettingsOpen),d=K(p=>p.setShowOverlays),v=m.useCallback(()=>{n==null||n()},[n]),h=m.useCallback(()=>{l(!0),d(!1)},[l,d]);return b.jsx("div",{className:ft.host,children:b.jsxs("div",{className:`${ft.topbar} ${e&&!t?ft.visible:""}`,children:[b.jsx("button",{type:"button",className:ft.backBtn,onClick:v,"aria-label":"뒤로가기",children:b.jsx(Ia,{size:28})}),b.jsx("div",{className:ft.title,children:b.jsx("span",{className:"truncate",children:o||"섹션 없음"})}),b.jsx("button",{type:"button",className:`${ft.calibrationBtn} ${a?"":ft.disabled}`,onClick:i,disabled:!a,"aria-label":"시선보정",title:"시선보정",children:b.jsx(ka,{size:24})}),b.jsx("button",{type:"button",className:ft.settingsBtn,onClick:h,"aria-label":"뷰어 설정",children:b.jsx(yc,{size:28})})]})})}const jc=m.memo(Ec),Oc="_wrap_62su0_7",zc="_wrapHidden_62su0_29",Ac="_wrapVisible_62su0_35",Bc="_scrollArea_62su0_71",Pc="_row_62su0_81",Lc="_label_62su0_89",Gc="_btn_62su0_95",Hc="_btnActive_62su0_106",Nc="_btnSmall_62su0_110",Fc="_pill_62su0_122",Dc="_themeCircle_62su0_133",Wc="_themeCircleActive_62su0_146",Vc="_stepRow_62su0_151",$c="_stepLabel_62su0_159",qc="_levelBox_62su0_172",Uc="_inlineFlex_62su0_177",Ee={wrap:Oc,wrapHidden:zc,wrapVisible:Ac,scrollArea:Bc,row:Pc,label:Lc,btn:Gc,btnActive:Hc,btnSmall:Nc,pill:Fc,themeCircle:Dc,themeCircleActive:Wc,stepRow:Vc,stepLabel:$c,levelBox:qc,inlineFlex:Uc};function Kc({visible:e}){const t=K(x=>x.mode),n=K(x=>x.setMode),r=K(x=>x.theme),o=K(x=>x.setTheme),s=K(x=>x.fontFamily),i=K(x=>x.setFontFamily),u=K(x=>x.resetToDefaults),a=K(x=>x.getFontLevel()),l=K(x=>x.getLineLevel()),d=K(x=>x.getMarginLevel()),v=K(x=>x.setFontLevel),h=K(x=>x.setLineLevel),p=K(x=>x.setMarginLevel),y=K(x=>x.pointerStyle),w=K(x=>x.setPointerStyle),c=K(x=>x.pointerColor),g=K(x=>x.setPointerColor),f=K(x=>x.breakMarks),C=K(x=>x.toggleBreakMark),T=K(x=>x.getBreakGapLevel()),k=K(x=>x.setBreakGapLevel),j=`${Ee.wrap} ${e?Ee.wrapVisible:Ee.wrapHidden}`;return b.jsxs("div",{className:j,role:"dialog","aria-modal":"true","aria-label":"뷰어 설정",children:[b.jsxs("div",{className:Ee.scrollArea,children:[b.jsx(At,{label:"열람방식",children:b.jsxs("div",{className:Ee.inlineFlex,children:[b.jsx(kt,{active:t==="page",onClick:()=>n("page"),children:"페이지"}),b.jsx(kt,{active:t==="scroll",onClick:()=>n("scroll"),children:"스크롤"})]})}),b.jsx(At,{label:"테마",children:b.jsx("div",{className:Ee.inlineFlex,children:Object.keys(sn).map(x=>{const S=x,R=sn[S];return b.jsx("button",{type:"button",onClick:()=>o(S),className:`${Ee.themeCircle} ${r===x?Ee.themeCircleActive:""}`,style:{background:R.bg,color:R.fg,fontFamily:s},title:String(x),"aria-label":`테마: ${String(x)}`,children:"A"},`${x}_tc_button`)})})}),b.jsx(At,{label:"글꼴",children:b.jsx("div",{className:Ee.inlineFlex,children:Ho.map(x=>b.jsx(kt,{active:s===x.value,onClick:()=>i(x.value),title:x.value,children:x.label},x.label))})}),b.jsx(tn,{label:"글자 크기",level:a,min:1,max:12,onDec:()=>v(Math.max(1,a-1)),onInc:()=>v(Math.min(12,a+1))}),b.jsx(tn,{label:"줄 간격",level:l,min:1,max:7,onDec:()=>h(Math.max(1,l-1)),onInc:()=>h(Math.min(7,l+1))}),b.jsx(tn,{label:"여백",level:d,min:1,max:5,onDec:()=>p(Math.max(1,d-1)),onInc:()=>p(Math.min(5,d+1))}),b.jsx(At,{label:"포인터",children:b.jsxs("div",{className:Ee.inlineFlex,children:[b.jsx(kt,{active:y==="highlight",onClick:()=>w("highlight"),children:"형광펜"}),b.jsx(kt,{active:y==="underline",onClick:()=>w("underline"),children:"밑줄"}),b.jsx("input",{type:"color",value:c,onChange:x=>g(x.target.value),"aria-label":"포인터 색상",style:{width:36,height:28,padding:0,border:"none",background:"transparent"}})]})}),b.jsx(At,{label:"끊기표시",children:b.jsx("div",{className:Ee.inlineFlex,children:b.jsx(kt,{active:f.slash,onClick:()=>C("slash"),children:"슬래쉬"})})}),b.jsx(tn,{label:"끊기간격",level:T,min:1,max:5,onDec:()=>k(Math.max(1,T-1)),onInc:()=>k(Math.min(5,T+1))})]}),b.jsx("div",{className:Ee.inlineFlex,style:{justifyContent:"center"},children:b.jsx("button",{type:"button",onClick:u,className:Ee.pill,children:"보기 설정 초기화"})})]})}function At({label:e,children:t}){return b.jsxs("div",{className:Ee.row,children:[b.jsx("label",{className:Ee.label,children:e}),t]})}function kt({active:e,onClick:t,title:n,children:r}){return b.jsx("button",{type:"button",onClick:t,title:n,className:`${Ee.btn} ${e?Ee.btnActive:""}`,children:r})}function tn({label:e,level:t,min:n,max:r,onDec:o,onInc:s}){const i=t<=n,u=t>=r;return b.jsxs("div",{className:Ee.stepRow,children:[b.jsx("label",{className:Ee.stepLabel,children:e}),b.jsxs("div",{className:Ee.inlineFlex,children:[b.jsx("button",{type:"button",onClick:o,disabled:i,className:Ee.btnSmall,"aria-label":"감소",children:"−"}),b.jsx("div",{className:Ee.levelBox,children:t}),b.jsx("button",{type:"button",onClick:s,disabled:u,className:Ee.btnSmall,"aria-label":"증가",children:"+"})]})]})}const Xc=m.memo(function(){const t=K(i=>i.showOverlays),n=K(i=>i.isSettingsOpen),r=q(i=>i.rangeStartGI),o=q(i=>i.rangeEndGI);return r!=null&&o!=null?null:b.jsxs("div",{"aria-hidden":!0,style:{pointerEvents:"none",position:"absolute",inset:0,containerType:"size",containerName:"viewer"},children:[b.jsx(jc,{}),b.jsx(Sc,{}),b.jsx("div",{style:{pointerEvents:"auto"},children:b.jsx(Kc,{visible:!t&&n})})]})}),Qc=e=>(t,n,r)=>{const o=r.subscribe;return r.subscribe=((i,u,a)=>{let l=i;if(u){const d=(a==null?void 0:a.equalityFn)||Object.is;let v=i(r.getState());l=h=>{const p=i(h);if(!d(v,p)){const y=v;u(v=p,y)}},a!=null&&a.fireImmediately&&u(v,v)}return o(l)}),e(t,n,r)},Yc=Qc;function Zc(e){return e?e.kind==="saved"?e.cdnUrl:e.blobUrl:null}function Jc(e){var o,s,i;if(!e||!/\S/.test(e))return 0;const t=((o=e.match(/[A-Za-z0-9]+(?:['’-][A-Za-z0-9]+)*/g))==null?void 0:o.length)??0,n=((s=e.match(/[\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A]+/g))==null?void 0:s.length)??0,r=((i=e.match(/[\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\u3040-\u30FF\u31FF\uAC00-\uD7AF\u1100-\u11FF\u3130-\u318F]/g))==null?void 0:i.length)??0;return t+n+Math.floor(r/2)}function eu(e){let t=0;for(const n of e.ast.blocks??[])if(n.type==="paragraph")for(const r of n.runs??[])t+=Jc((r==null?void 0:r.text)??"");return t}function tu(e){const t=e==null?void 0:e.recorderStore;let n=e==null?void 0:e.map,r=e==null?void 0:e.initialIndex;const o=p=>{if(!n)return null;const{g2ct:y}=n;if(!y)return null;const w=y[p];if(w)return{clip:w.clip,t:w.t};for(let c=1;c<=100&&p-c>=0;c++){const g=y[p-c];if(g)return{clip:g.clip,t:g.t}}for(let c=1;c<=100;c++){const g=y[p+c];if(g)return{clip:g.clip,t:g.t}}return null},s=(e==null?void 0:e.clips)??[];let i=0,u=0;const a=Math.max(1,eu(e.section)||150);if(typeof(e==null?void 0:e.initialIndex)=="number"&&n){const p=o(e.initialIndex);p&&(i=p.clip,u=p.t,r=void 0)}const l=s.length>0,d=l?"paused":"idle",v=l?"real":"fake",h=l?null:{totalWords:a};return $t(Yc((p,y)=>({clips:s,currentClip:Math.max(0,Math.min(i,Math.max(0,s.length-1))),currentTimeMs:Math.max(0,u),status:d,scrollLock:!1,playbackKind:v,fake:h,useFake:()=>p(w=>({playbackKind:"fake",fake:{totalWords:a},scrollLock:w.status==="playing"})),useReal:()=>p(w=>({playbackKind:"real",fake:{totalWords:a},scrollLock:w.status==="playing"})),injectMap:w=>{if(n=w,typeof r=="number"){const c=o(r);c&&p(g=>({currentClip:Math.max(0,Math.min(c.clip,Math.max(0,g.clips.length-1))),currentTimeMs:Math.max(0,c.t)})),r=void 0}},setClipAndMs:(w,c)=>p(g=>{const f=Math.max(0,g.clips.length-1);return{currentClip:Math.max(0,Math.min(w,f)),currentTimeMs:Math.max(0,c),status:g.status,scrollLock:g.scrollLock}}),setClips:w=>p(c=>{const g=Array.isArray(w)?w:[],f=g.length>0;return{clips:g,currentClip:0,currentTimeMs:0,status:f?"paused":"idle",playbackKind:f?"real":"fake",fake:f?null:c.fake??{totalWords:a},scrollLock:!1}}),clear:()=>p(w=>({clips:[],currentClip:0,currentTimeMs:0,status:"idle",playbackKind:"fake",fake:w.fake??{totalWords:a},scrollLock:!1})),play:(w,c)=>{t==null||t.getState().emit({type:"audio_control",payload:{action:"play"}}),p(g=>{if(g.playbackKind==="fake")return{status:"playing",scrollLock:!0};const f=typeof w=="number"?w:g.currentClip,C=typeof c=="number"?c:g.currentTimeMs;return{status:"loading",currentClip:Math.max(0,Math.min(f,Math.max(0,g.clips.length-1))),currentTimeMs:C,scrollLock:!0}})},pause:()=>{t==null||t.getState().emit({type:"audio_control",payload:{action:"pause"}}),p({status:"paused",scrollLock:!1})},seek:w=>p(c=>({currentTimeMs:Math.max(0,w),status:c.status})),stop:()=>p({status:"idle",currentTimeMs:0,scrollLock:!1}),nextClip:()=>p(w=>{if(w.playbackKind==="fake")return w;const c=Math.max(0,w.clips.length-1);return{currentClip:Math.min(w.currentClip+1,c),currentTimeMs:0,status:"loading",scrollLock:!0}}),prevClip:()=>p(w=>w.playbackKind==="fake"?w:{currentClip:Math.max(0,w.currentClip-1),currentTimeMs:0,status:"loading",scrollLock:!0}),setClipIndex:w=>p(c=>c.playbackKind==="fake"||w<0||w>=c.clips.length?c:{currentClip:w,currentTimeMs:0}),getClipSrc:w=>{const c=y();if(!c.clips.length)return null;const g=typeof w=="number"?w:c.currentClip;return Zc(c.clips[g])},getGIFromCT:(w,c)=>{if(!n)return-1;const g=n.byClip[w];if(!g||g.length===0)return-1;let f=0,C=g.length-1,T=0;for(;f<=C;){const k=f+C>>1;g[k].t<=c?(T=k,f=k+1):C=k-1}return g[Math.max(0,Math.min(T,g.length-1))].g},getCTFromGI:w=>{if(!n)return null;const{g2ct:c}=n;if(!c)return null;let g=c[w];if(!g){let f=w-1;const C=Math.max(0,w-100);for(;f>=C;){if(c[f]){g=c[f];break}f--}if(!g){let T=w+1;const k=w+100;for(;c[T]==null&&T<=k;)T++;c[T]&&(g=c[T])}}return g?{clip:g.clip,timeMs:g.t}:null},getMetaByGI:w=>{const c=y().getCTFromGI(w);return c?{clipIndex:c.clip,timeMs:c.timeMs}:null},syncToGI:w=>{const c=y().getMetaByGI(w);c&&y().setClipAndMs(c.clipIndex,c.timeMs)},_onTime:w=>p({currentTimeMs:w,status:"playing",scrollLock:!0}),_onEnded:()=>p(w=>{if(w.playbackKind==="fake")return{status:"ended",scrollLock:!1};const c=Math.max(0,w.clips.length-1);return w.currentClip>=c?{status:"ended",scrollLock:!1}:{currentClip:Math.min(w.currentClip+1,c),currentTimeMs:0,status:"loading",scrollLock:!0}}),_onError:()=>p({status:"error",scrollLock:!1}),_setStatusOnly:w=>p({status:w})})))}function nu({children:e,initialState:t}){const n=m.useContext(ht)??void 0,r=m.useMemo(()=>tu({...t,recorderStore:n}),[t,n]);return b.jsx(vn.Provider,{value:r,children:e})}function ru(e){var s,i;const t={},n=[],r=((s=e==null?void 0:e.ast)==null?void 0:s.blocks)??[];let o=0;for(const u of r){if((u==null?void 0:u.type)==="image")continue;const a=(u==null?void 0:u.runs)??[];for(let l=0;l<a.length;l++){const d=a[l],v=o+l;d.audioChunkIndex!=null&&d.audioTimeMs!=null&&((t[i=d.audioChunkIndex]||(t[i]=[])).push({t:d.audioTimeMs,g:v}),n[v]={clip:d.audioChunkIndex,t:d.audioTimeMs})}o+=a.length}return Object.values(t).forEach(u=>u.sort((a,l)=>a.t-l.t)),{byClip:t,g2ct:n}}function ou(e,t,n){if(n<=0)return-1;const r=Math.max(0,Math.min(t,n-1));if(e[r]===1)return r;for(let o=1;o<n;o++){const s=r-o;if(s>=0&&e[s]===1)return s;const i=r+o;return i<n&&e[i]===1?i:-1}return-1}function su(e){const t=Ul(e),n=Kl(t),r=t.reduce((d,v)=>d+(v||0),0),o=new Int32Array(Math.max(1,r)).fill(-1),s=new Uint8Array(Math.max(1,r)).fill(0),i=[],u=[];return e.forEach((d,v)=>{var c;if(d.type!=="paragraph")return;const h=n[v]??0,p=d.runs??[];for(let g=0;g<p.length;g++){const f=((c=p[g])==null?void 0:c.text)||"";sr(f)&&(s[h+g]=1)}const w=Xl(p,h).map(g=>{var k;const f=g.startG-h,C=g.endG-g.startG+1;let T=-1;for(let j=0;j<C;j++){const x=((k=p[f+j])==null?void 0:k.text)??"";if(sr(x)){T=g.startG+j;break}}return{startG:g.startG,endG:g.endG,r0:f,len:C,firstReadableGI:T,splitIndex:g.splitIndex}});u[v]=w;for(const g of w){const f=i.length;for(let C=g.startG;C<=g.endG;C++)o[C]=f;i.push(g)}}),{nav:{groups:i,giToGroupIdx:o,readableGi:s,splitGroupsPerBlock:u},layout:{prefix:n,totalRuns:r}}}function iu(e){const{section:t,onViewerClose:n,onSectionNav:r,isCanPrev:o,isCanNext:s,canTracking:i,canToggleShowGaze:u,showGaze:a,onToggleShowGaze:l,handleAskCalibration:d,nav:v,layout:h,initialIndex:p,mountTime:y}=e,w=h.totalRuns??0,c=typeof p=="number"?p:w>0?0:-1,g=c>=0?ou(v.readableGi,c,w):-1;return{section:t,sectionId:t.section_id,onViewerClose:n,onSectionNav:r,isCanPrev:o??!1,isCanNext:s??!1,canTracking:i??!1,canToggleShowGaze:u??!1,showGaze:a??!1,onToggleShowGaze:l,handleAskCalibration:d,currentGlobalRunIndex:g,lastUpdateBy:"program",totalRuns:w,pageIndex:0,totalPages:0,sectionLoading:!0,_loadingStartTime:y,_scrollApi:void 0,derivedNav:v,layout:h,rangeStartGI:null,rangeEndGI:null,translateOpen:!1,translateLoading:!1,translateText:void 0,translatedText:void 0,translateStartGI:void 0,translateEndGI:void 0}}function lu(e){const{section:t,initialIndex:n,onViewerClose:r,onSectionNav:o,isCanPrev:s,isCanNext:i,canTracking:u,canToggleShowGaze:a,showGaze:l,onToggleShowGaze:d,handleAskCalibration:v,eventBridgeStore:h}=e,p=t.ast.blocks,{nav:y,layout:w}=su(p),c=Date.now(),g=iu({section:t,onViewerClose:r,onSectionNav:o,isCanPrev:s,isCanNext:i,canTracking:u,canToggleShowGaze:a,showGaze:l,onToggleShowGaze:d,handleAskCalibration:v,nav:y,layout:w,initialIndex:n,mountTime:c});return h&&queueMicrotask(()=>{h.getState().emit({type:"render_start",payload:{sectionId:t.section_id}},c),h.getState().emit({type:"loading_start",payload:{}},c)}),$t((f,C)=>{const T=W=>{f(D=>D.progress._scrollApi===W?D:{progress:{...D.progress,_scrollApi:W}})},k=()=>C().progress._scrollApi,j=W=>{f(D=>{const U=D.progress;if(U.totalRuns===W)return D;const z=U.currentGlobalRunIndex<0&&W>0;return{progress:{...U,totalRuns:W,currentGlobalRunIndex:z?0:U.currentGlobalRunIndex,lastUpdateBy:z?"program":U.lastUpdateBy}}})},x=(W,D="program")=>{const U=C().progress.currentGlobalRunIndex,z=C().progress,N=z.totalRuns>0?Math.max(-1,Math.min(W,z.totalRuns-1)):W;U===N&&z.lastUpdateBy===D||(f(Q=>({progress:{...Q.progress,currentGlobalRunIndex:N,lastUpdateBy:D}})),U!==N&&h&&h.getState().emit({type:"global_index_change",payload:{globalIndex:N}}))},S=W=>{const{sectionLoading:D,_loadingStartTime:U}=C().progress;if(D===W)return;const z=Date.now();if(W)f(N=>({progress:{...N.progress,sectionLoading:!0,_loadingStartTime:z}})),h&&h.getState().emit({type:"loading_start",payload:{}});else{const Q=(U?z-U:0)/1e3;f(G=>({progress:{...G.progress,sectionLoading:!1,_loadingStartTime:null}})),h&&h.getState().emit({type:"loading_end",payload:{duration:Q}})}},R=W=>{f(D=>({progress:{...D.progress,pageIndex:W}}))},I=W=>{f(D=>({progress:{...D.progress,totalPages:W}}))},M=(W,D)=>{const z=C().progress.rangeStartGI==null;if(f(N=>({progress:{...N.progress,rangeStartGI:Math.min(W,D),rangeEndGI:Math.max(W,D)}})),h){const N=E();h.getState().emit({type:z?"range_select":"range_change",payload:{startGI:Math.min(W,D),endGI:Math.max(W,D),text:N}})}},O=()=>{f(W=>({progress:{...W.progress,rangeStartGI:null,rangeEndGI:null}})),h&&h.getState().emit({type:"range_clear",payload:{}})},A=W=>{const{rangeStartGI:D,rangeEndGI:U}=C().progress;D==null||U==null||(W<D?f(z=>({progress:{...z.progress,rangeStartGI:W}})):W>U?f(z=>({progress:{...z.progress,rangeEndGI:W}})):O())},E=()=>{var ne;const{rangeStartGI:W,rangeEndGI:D,section:U,layout:z}=C().progress;if(W==null||D==null||!z)return"";const N=((ne=U.ast)==null?void 0:ne.blocks)??[],Q=z.prefix,G=[];for(let V=0;V<N.length;V++){const Z=N[V];if(Z.type!=="paragraph")continue;const ee=Z.runs??[],J=Q[V]??0;for(let le=0;le<ee.length;le++){const re=J+le;re>=W&&re<=D&&G.push(ee[le].text??"")}}return G.join("")},B=W=>{f(D=>({progress:{...D.progress,translateOpen:W.isOpen,translateLoading:W.isLoading??!1,translateText:W.text,translatedText:W.translatedText,translateStartGI:W.startGI,translateEndGI:W.endGI}}))},L=()=>{f(W=>({progress:{...W.progress,translateOpen:!1,translateLoading:!1,translateText:void 0,translatedText:void 0,translateStartGI:void 0,translateEndGI:void 0}}))},_=W=>{const{totalRuns:D,derivedNav:U}=C().progress,z=U==null?void 0:U.readableGi;if(!z||D<=0)return W;const N=D,Q=Math.max(0,Math.min(W,N-1));if(z[Q])return Q;let G=Q-1,ne=Q+1;for(;G>=0||ne<N;){if(ne<N&&z[ne])return ne;if(G>=0&&z[G])return G;ne+=1,G-=1}return Q},H=(W,D)=>{const{totalRuns:U,derivedNav:z}=C().progress,N=z==null?void 0:z.readableGi;if(!N||U<=0)return null;if(D>0){for(let Q=Math.min(Math.max(W,0),U-1);Q<U;Q+=1)if(N[Q])return Q}else for(let Q=Math.min(Math.max(W,0),U-1);Q>=0;Q-=1)if(N[Q])return Q;return null},Y=W=>{const{totalRuns:D,derivedNav:U}=C().progress,z=U==null?void 0:U.readableGi;if(!z||D<=0)return null;if(W>0){for(let N=D-1;N>=0;N-=1)if(z[N])return N}else for(let N=0;N<D;N+=1)if(z[N])return N;return null};return{progress:{...g,registerSectionScrollApi:T,getSectionScrollApi:k,setTotalRuns:j,setCurrentGlobalRunIndex:x,setSectionLoading:S,setPageIndex:R,setTotalPages:I,setTranslateState:B,clearTranslate:L,setRange:M,clearRange:O,extendRange:A,getRangeText:E,snapToReadable:_,nextReadableFrom:H,edgeReadable:Y,hasReadableInDir:(W,D)=>H(W+(D>0?1:-1),D)!=null,computeStepTarget:(W,D)=>{const{totalRuns:U,derivedNav:z}=C().progress;if(!U||U<=0)return W;const N=(z==null?void 0:z.groups)??[],Q=z==null?void 0:z.giToGroupIdx;if(!N.length||!Q){const J=U-1;return _(Math.max(0,Math.min(W+D,J)))}let G=Q[W]??-1;if(G<0||G>=N.length)for(let ee=0;ee<N.length;ee+=1){const J=N[ee];if(W>=J.startG&&W<=J.endG){G=ee;break}}if(G<0||G>=N.length)return Y(D)??_(W);const ne=ee=>ee>=0&&ee<N.length&&(N[ee].firstReadableGI??-1)>=0;let V=G+D;for(;V>=0&&V<N.length&&!ne(V);)V+=D;if(V<0||V>=N.length)return Y(D)??_(W+D);const Z=N[V].firstReadableGI;return Z>=0?Z:_(W+D)},giToPercentTotal:W=>{const D=C().progress.totalRuns;return!D||D<=1?0:Math.max(0,Math.min(W,D-1))/(D-1)*100},percentToGITotal:W=>{const D=C().progress.totalRuns;if(!D||D<=1)return 0;const U=Math.max(0,Math.min(W,100)),z=Math.round(U/100*(D-1));return Math.max(0,Math.min(z,D-1))}}}})}function au({children:e,initialState:t,gazeSync:n}){const r=m.useContext(ht),o=m.useMemo(()=>lu({...t,...n?n.getSnapshot():{},eventBridgeStore:r}),[t,r]);return m.useEffect(()=>{if(!n)return;const s=()=>{const i=n.getSnapshot(),u=o.getState().progress;u.canTracking===i.canTracking&&u.canToggleShowGaze===i.canToggleShowGaze&&u.showGaze===i.showGaze&&u.onToggleShowGaze===i.onToggleShowGaze&&u.handleAskCalibration===i.handleAskCalibration||o.setState(a=>({progress:{...a.progress,canTracking:i.canTracking,canToggleShowGaze:i.canToggleShowGaze,showGaze:i.showGaze,onToggleShowGaze:i.onToggleShowGaze,handleAskCalibration:i.handleAskCalibration}}))};return s(),n.subscribe(s)},[o,n]),b.jsx(lr.Provider,{value:o,children:e})}function cu({children:e,initialState:t}){const n=m.useContext(ht)??void 0,r=m.useRef(Js({init:t,recorderStore:n}));return b.jsx(ir.Provider,{value:r.current,children:e})}const uu=({pages:e,pageIndex:t,maxWidth:n})=>{const r=q(f=>f.section),o=m.useMemo(()=>{var f;return((f=r.ast)==null?void 0:f.blocks)??[]},[r]),s=K(f=>f.marginX),i=K(f=>f.lineHeight),u=K(f=>f.fontSizePx),a=K(f=>f.fontFamily),l=K(f=>f.viewportHeight),d=q(f=>{var C;return((C=f.layout)==null?void 0:C.prefix)??[]}),v=q(f=>{var C;return((C=f.derivedNav)==null?void 0:C.splitGroupsPerBlock)??[]}),h=e[t],p=m.useMemo(()=>{const f=[];return o.forEach((C,T)=>{(C.type==="paragraph"||C.type==="image")&&f.push(T)}),f},[o]),y=m.useMemo(()=>{if(!h)return[];const f=[];for(let C=h.startBlock;C<=h.endBlock;C++){const T=p[C];T!=null&&f.push(T)}return f},[h,p]),w=m.useMemo(()=>{const f=[];for(const C of y){const T=o[C];(T==null?void 0:T.type)==="paragraph"&&f.push({b:T,originalBlockIndex:C})}return f},[y,o]),c=m.useMemo(()=>{const f=new Map,C=Sr();return w.forEach((T,k)=>{f.set(T.originalBlockIndex,{idx:k,marker:yr(T.b,C)})}),f},[w]),g=(f,C,T)=>{if(!f||f.length===0)return[];const k=[];for(const j of f){const x=j.startG,S=j.endG;if(S<C||x>T)continue;const R=Math.max(x,C),I=Math.min(S,T),M=R-x|0,O=Math.max(0,I-R+1);if(O<=0)continue;const A=(j.r0??0)+M;k.push({...j,startG:R,endG:I,r0:A,len:O})}return k};return b.jsx("div",{style:{position:"relative",width:"100%",height:"100%",minHeight:0,display:"flex",alignItems:"stretch",justifyContent:"center",fontFamily:a,fontSize:u,lineHeight:i,boxSizing:"border-box"},children:b.jsxs("div",{style:{width:"100%",maxWidth:n,height:"100%",boxSizing:"border-box",overflow:"hidden",display:"flex",flexDirection:"column",margin:"0 auto"},children:[b.jsx("div",{style:{height:40}}),b.jsx("div",{style:{flex:1,overflow:"hidden"},children:y.map((f,C)=>{var U;const T=o[f],k=C===0,j=C===y.length-1,x={boxSizing:"border-box",paddingRight:`${s}px`,paddingLeft:`${s}px`,maxWidth:n,margin:"0 auto",display:"flex",width:"100%",height:"auto"},S=`sec-${r.section_id}/blk-${T.id??f}`;if(T.type==="image"){const{src:z,alt:N,width:Q,height:G}=T,ne=Q&&G?`${Q} / ${G}`:"4 / 3",V=l>80?Math.floor((l-80)*.6):void 0;return b.jsx("div",{style:x,children:b.jsxs("div",{style:{margin:"12px 0",textAlign:"center",width:"100%"},children:[b.jsx("div",{style:{position:"relative",width:"100%",maxHeight:V,aspectRatio:ne},children:b.jsx("img",{src:z,alt:N||"",loading:"eager",style:{pointerEvents:"none",position:"absolute",inset:0,width:"100%",height:"100%",objectFit:"contain",display:"block"}})}),N&&b.jsx("div",{style:{fontSize:12,color:"#6b7280",marginTop:4},children:N})]})},S)}const R=T,I=c.get(f),M=I==null?void 0:I.marker,O=R.runs??[],A=O.length;let E=0,B=Math.max(0,A-1);k&&h.startOffsetInBlock!=null&&(E=Math.min(Math.max(0,h.startOffsetInBlock),B)),j&&h.endOffsetInBlock!=null&&(B=Math.max(E,Math.min(h.endOffsetInBlock,B)));const L=E>0,_=d[f]??0,H=v[f]??[],Y=_+E,ue=_+B;let ie=g(H,Y,ue);const ae=_+E;ie=ie.map(z=>{const N=Math.max(0,(z.startG??Y)-ae),Q=z.len??Math.max(1,(z.endG??ue)-(z.startG??Y)+1);return{...z,r0:N,len:Q}});const he=E<=B?O.slice(E,B+1):[],ke=R.list?R.list.level*24:0,W=((U=R.list)==null?void 0:U.kind)==="bullet"?R.list.glyph??"•":void 0,D=L?void 0:M??W;return b.jsx("div",{style:x,children:b.jsxs("p",{style:{width:"100%",margin:"8px 0",paddingLeft:ke,textAlign:R.textAlign,whiteSpace:"pre-wrap",boxSizing:"border-box"},children:[R.list&&D?b.jsx("span",{"aria-hidden":!0,style:{minWidth:16,display:"inline-block",whiteSpace:"nowrap",userSelect:"none"},children:D||""}):null,b.jsx(ys,{preGroups:ie,runs:he,ns:S,baseIndex:ae,sectionId:String(r.section_id)})]})},S)})})]})})},nn=.5;function du(e,t){const n=m.useRef(null),r=m.useRef(null),o=m.useRef(!1);m.useEffect(()=>{const s=()=>{n.current==null&&(n.current=requestAnimationFrame(()=>{n.current=null,t(),o.current=!0,requestAnimationFrame(()=>{o.current=!1})}))},i=new ResizeObserver(a=>{if(o.current)return;const l=a[0],{width:d,height:v}=l.contentRect,h=r.current;if(!h){r.current={w:d,h:v};return}Math.abs(h.w-d)<nn&&Math.abs(h.h-v)<nn||(r.current={w:d,h:v},s())});e.forEach(a=>{a.current&&i.observe(a.current)});const u=()=>{var l;const a=(l=e[0])==null?void 0:l.current;if(a&&r.current){const d=a.offsetWidth,v=a.offsetHeight;if(Math.abs(r.current.w-d)<nn&&Math.abs(r.current.h-v)<nn)return;r.current={w:d,h:v}}s()};return window.addEventListener("resize",u),()=>{window.removeEventListener("resize",u),i.disconnect(),n.current!=null&&cancelAnimationFrame(n.current),n.current=null}},[e,t])}function fu(e){const{onPrev:t,onNext:n,onSingle:r,onDouble:o,shouldIgnoreTarget:s,shouldIgnoreSwipe:i,horizontalThreshold:u=120,velocityThreshold:a=.6,singleDelayMs:l=250,doubleClickWindowMs:d=300,onDragMove:v,onDragEnd:h,pageTransitionThreshold:p}=e,y=p??u,w=10,c=We.useRef({touchId:null,startX:0,startY:0,startT:0,swiping:!1,mouseDown:!1,mouseSwiping:!1,mStartX:0,mStartY:0,mStartT:0,capturedEl:null,prevUserSelect:"",lastTapT:0,singleTimer:null,suppressClick:!1}),g=()=>{c.current.singleTimer!=null&&(clearTimeout(c.current.singleTimer),c.current.singleTimer=null)},f=We.useCallback(E=>{if(s!=null&&s(E))return;const B=performance.now();B-c.current.lastTapT<=d&&c.current.lastTapT>0?(g(),c.current.lastTapT=0,o==null||o()):(g(),r&&(c.current.singleTimer=window.setTimeout(()=>{c.current.singleTimer=null,r()},l)),c.current.lastTapT=B)},[s,d,o,r,l]),C=We.useCallback((E,B)=>{const L=Math.abs(E)/Math.max(1,B);Math.abs(E)>=y||L>=a?E<0?n():t():h==null||h()},[y,a,n,t,h]),T=We.useCallback(E=>{if(E.touches.length!==1)return;const B=i??s;if(B!=null&&B(E.target))return;const L=E.touches[0];c.current.touchId=L.identifier,c.current.startX=L.clientX,c.current.startY=L.clientY,c.current.startT=E.timeStamp,c.current.swiping=!1},[i,s]),k=We.useCallback(E=>{if(c.current.touchId==null)return;const B=Array.from(E.touches).find(Y=>Y.identifier===c.current.touchId);if(!B)return;const L=B.clientX-c.current.startX,_=Math.abs(L),H=Math.abs(B.clientY-c.current.startY);if(!c.current.swiping)if(_>=w&&_>H)c.current.swiping=!0;else return;v==null||v(L)},[v]),j=We.useCallback(E=>{if(c.current.touchId==null)return;const B=Array.from(E.changedTouches).find(Y=>Y.identifier===c.current.touchId);if(!B)return;const L=B.clientX-c.current.startX,_=B.clientY-c.current.startY,H=E.timeStamp-c.current.startT;c.current.swiping?C(L,H):Math.abs(L)<10&&Math.abs(_)<10&&f(E.target),c.current.suppressClick=!0,c.current.touchId=null,c.current.swiping=!1},[C,f]),x=We.useCallback(()=>{c.current.swiping&&(h==null||h()),c.current.touchId=null,c.current.swiping=!1},[h]),S=We.useCallback(E=>{if(E.pointerType==="touch"||c.current.mouseDown)return;const B=i??s;B!=null&&B(E.target)||(c.current.mouseDown=!0,c.current.mouseSwiping=!1,c.current.mStartX=E.clientX,c.current.mStartY=E.clientY,c.current.mStartT=E.timeStamp,c.current.suppressClick=!1,c.current.capturedEl=E.currentTarget)},[i,s]),R=We.useCallback(E=>{if(E.pointerType==="touch"||!c.current.mouseDown)return;const B=E.clientX-c.current.mStartX,L=Math.abs(B),_=Math.abs(E.clientY-c.current.mStartY);if(!c.current.mouseSwiping)if(L>=w&&L>_){c.current.mouseSwiping=!0,c.current.suppressClick=!0;const H=c.current.capturedEl;if(H!=null&&H.setPointerCapture)try{H.setPointerCapture(E.pointerId)}catch{}c.current.prevUserSelect=document.body.style.userSelect,document.body.style.userSelect="none",E.preventDefault()}else return;v==null||v(B),E.preventDefault()},[v]),I=We.useCallback(E=>{var L;if(E.pointerType==="touch"||!c.current.mouseDown)return;if(c.current.mouseSwiping){const _=E.clientX-c.current.mStartX,H=E.timeStamp-c.current.mStartT;C(_,H),document.body.style.userSelect=c.current.prevUserSelect}const B=c.current.capturedEl;if((L=B==null?void 0:B.hasPointerCapture)!=null&&L.call(B,E.pointerId))try{B.releasePointerCapture(E.pointerId)}catch{}c.current.mouseDown=!1,c.current.mouseSwiping=!1,c.current.capturedEl=null},[C]),M=We.useCallback(E=>{E.pointerType!=="touch"&&(c.current.mouseSwiping&&(h==null||h(),document.body.style.userSelect=c.current.prevUserSelect),c.current.mouseDown=!1,c.current.mouseSwiping=!1,c.current.capturedEl=null)},[h]),O=We.useCallback(()=>{c.current.mouseSwiping&&(h==null||h(),document.body.style.userSelect=c.current.prevUserSelect),c.current.mouseDown=!1,c.current.mouseSwiping=!1,c.current.capturedEl=null},[h]),A=We.useCallback(E=>{if(c.current.suppressClick){c.current.suppressClick=!1;return}f(E.target)},[f]);return We.useEffect(()=>()=>{g(),document.body.style.userSelect=""},[]),{onTouchStart:T,onTouchMove:k,onTouchEnd:j,onTouchCancel:x,onPointerDown:S,onPointerMove:R,onPointerUp:I,onPointerCancel:M,onLostPointerCapture:O,onClick:A}}var An,go;function Ms(){if(go)return An;go=1;function e(t){var n=typeof t;return t!=null&&(n=="object"||n=="function")}return An=e,An}var Bn,ho;function pu(){if(ho)return Bn;ho=1;var e=typeof Qt=="object"&&Qt&&Qt.Object===Object&&Qt;return Bn=e,Bn}var Pn,mo;function Es(){if(mo)return Pn;mo=1;var e=pu(),t=typeof self=="object"&&self&&self.Object===Object&&self,n=e||t||Function("return this")();return Pn=n,Pn}var Ln,bo;function gu(){if(bo)return Ln;bo=1;var e=Es(),t=function(){return e.Date.now()};return Ln=t,Ln}var Gn,xo;function hu(){if(xo)return Gn;xo=1;var e=/\s/;function t(n){for(var r=n.length;r--&&e.test(n.charAt(r)););return r}return Gn=t,Gn}var Hn,vo;function mu(){if(vo)return Hn;vo=1;var e=hu(),t=/^\s+/;function n(r){return r&&r.slice(0,e(r)+1).replace(t,"")}return Hn=n,Hn}var Nn,So;function js(){if(So)return Nn;So=1;var e=Es(),t=e.Symbol;return Nn=t,Nn}var Fn,yo;function bu(){if(yo)return Fn;yo=1;var e=js(),t=Object.prototype,n=t.hasOwnProperty,r=t.toString,o=e?e.toStringTag:void 0;function s(i){var u=n.call(i,o),a=i[o];try{i[o]=void 0;var l=!0}catch{}var d=r.call(i);return l&&(u?i[o]=a:delete i[o]),d}return Fn=s,Fn}var Dn,wo;function xu(){if(wo)return Dn;wo=1;var e=Object.prototype,t=e.toString;function n(r){return t.call(r)}return Dn=n,Dn}var Wn,Co;function vu(){if(Co)return Wn;Co=1;var e=js(),t=bu(),n=xu(),r="[object Null]",o="[object Undefined]",s=e?e.toStringTag:void 0;function i(u){return u==null?u===void 0?o:r:s&&s in Object(u)?t(u):n(u)}return Wn=i,Wn}var Vn,Io;function Su(){if(Io)return Vn;Io=1;function e(t){return t!=null&&typeof t=="object"}return Vn=e,Vn}var $n,To;function yu(){if(To)return $n;To=1;var e=vu(),t=Su(),n="[object Symbol]";function r(o){return typeof o=="symbol"||t(o)&&e(o)==n}return $n=r,$n}var qn,ko;function wu(){if(ko)return qn;ko=1;var e=mu(),t=Ms(),n=yu(),r=NaN,o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,i=/^0o[0-7]+$/i,u=parseInt;function a(l){if(typeof l=="number")return l;if(n(l))return r;if(t(l)){var d=typeof l.valueOf=="function"?l.valueOf():l;l=t(d)?d+"":d}if(typeof l!="string")return l===0?l:+l;l=e(l);var v=s.test(l);return v||i.test(l)?u(l.slice(2),v?2:8):o.test(l)?r:+l}return qn=a,qn}var Un,Ro;function Cu(){if(Ro)return Un;Ro=1;var e=Ms(),t=gu(),n=wu(),r="Expected a function",o=Math.max,s=Math.min;function i(u,a,l){var d,v,h,p,y,w,c=0,g=!1,f=!1,C=!0;if(typeof u!="function")throw new TypeError(r);a=n(a)||0,e(l)&&(g=!!l.leading,f="maxWait"in l,h=f?o(n(l.maxWait)||0,a):h,C="trailing"in l?!!l.trailing:C);function T(A){var E=d,B=v;return d=v=void 0,c=A,p=u.apply(B,E),p}function k(A){return c=A,y=setTimeout(S,a),g?T(A):p}function j(A){var E=A-w,B=A-c,L=a-E;return f?s(L,h-B):L}function x(A){var E=A-w,B=A-c;return w===void 0||E>=a||E<0||f&&B>=h}function S(){var A=t();if(x(A))return R(A);y=setTimeout(S,j(A))}function R(A){return y=void 0,C&&d?T(A):(d=v=void 0,p)}function I(){y!==void 0&&clearTimeout(y),c=0,d=w=v=y=void 0}function M(){return y===void 0?p:R(t())}function O(){var A=t(),E=x(A);if(d=arguments,v=this,w=A,E){if(y===void 0)return k(w);if(f)return clearTimeout(y),y=setTimeout(S,a),T(w)}return y===void 0&&(y=setTimeout(S,a)),p}return O.cancel=I,O.flush=M,O}return Un=i,Un}var Iu=Cu();const Tu=Bo(Iu);function ku(e,t=200,n,r){const o=m.useRef(e),s=m.useRef(n);m.useEffect(()=>{o.current=e},[e]),m.useEffect(()=>{s.current=n},[n]);const i=m.useMemo(()=>{const u=Tu((...l)=>{o.current(...l)},t,r),a=((...l)=>{var d;(d=s.current)==null||d.call(s),u(...l)});return a.cancel=u.cancel.bind(u),a.flush=u.flush.bind(u),a},[t,r]);return m.useEffect(()=>()=>i.cancel(),[i]),i}const Ru="https://fonts.googleapis.com/css2?family=Nanum+Myeongjo:wght@400;700&family=Noto+Sans+KR:wght@300;400;500;700&family=Noto+Serif+KR:wght@400;700&display=swap";let Kn=!1;function _u(){if(Kn||typeof document>"u")return;if(document.querySelector('link[href*="fonts.googleapis.com"][href*="Noto"]')){Kn=!0;return}const t=document.createElement("link");t.rel="stylesheet",t.href=Ru,document.head.appendChild(t),Kn=!0}const Os=new Map,zs=e=>Os.get(e)??0,Mu=e=>{const t=zs(e)+1;return Os.set(e,t),t};class As extends Error{constructor(){super("calcPages canceled due to a newer invocation");Ir(this,"code","CALC_PAGES_CANCELED");this.name="CalcPagesCanceled"}}const Ye=(e,t)=>{if(e!==zs(t))throw new As},Xn=e=>{const t=getComputedStyle(e),n=parseFloat(t.marginTop||"0")||0,r=parseFloat(t.marginBottom||"0")||0;return{mt:n,mb:r}},_o=e=>{const t=e.getClientRects(),n=t.length?t[0].top:e.getBoundingClientRect().top,r=e.querySelectorAll("[data-runbox]"),o=[];return r.forEach((s,i)=>{const u=s.getClientRects(),a=u.length?u[u.length-1].bottom:n;o[i]=Math.max(0,a-n)}),o},Eu=(e,t,n)=>{if(n<16)return async(o=24)=>{Ye(e,t)};let r=0;return async(o=24)=>{r++,r%o===0&&(Ye(e,t),await new Promise(s=>requestAnimationFrame(()=>s())),Ye(e,t))}};async function ju({viewHost:e,measureRoot:t,contentArea:n,items:r,cfgMaxWidth:o,marginX:s,fontFamily:i,fontSizePx:u,lineHeight:a,showSplit:l,breakGapPx:d=0,showSlash:v,paragraphMarkers:h,playbackScale:p=1,viewportHeight:y=0,instanceId:w="default"}){var g,f,C;const c=Mu(w);if(Ye(c,w),i&&typeof document<"u"&&document.fonts){_u();try{const T=`${u}px ${i}`;await document.fonts.load(T),document.fonts.check(T)||await document.fonts.ready}catch{}}Ye(c,w);try{const T=Math.abs(p-1)>.001,k=1/p;T&&(t.style.transform=`scale(${k})`,t.style.transformOrigin="top left");const j=Math.max(0,e.offsetWidth||0),x=Math.max(0,Math.min(j,o));t.style.maxWidth=`${x}px`,Ye(c,w);let S=Math.round(n.offsetHeight||0);S||(S=Math.max(0,n.clientHeight|0));const R=1.5,I=(G,ne)=>ne+G<=S-R,M=getComputedStyle(e),O={letterSpacing:M.letterSpacing,wordSpacing:M.wordSpacing,fontKerning:M.fontKerning||"normal",fontVariantLigatures:M.fontVariantLigatures||"normal",textTransform:M.textTransform||"none",direction:M.direction||"ltr",wordBreak:M.wordBreak||"keep-all",overflowWrap:M.overflowWrap||M.wordWrap||"break-word",hyphens:M.hyphens||"manual"},A=G=>{G.style.letterSpacing=O.letterSpacing||"",G.style.wordSpacing=O.wordSpacing||"",G.style.fontKerning=O.fontKerning||"",G.style.fontVariantLigatures=O.fontVariantLigatures||"",G.style.textTransform=O.textTransform||"",G.style.direction=O.direction||"",G.style.wordBreak=O.wordBreak||"",G.style.wordWrap=O.overflowWrap||"",G.style.overflowWrap=O.overflowWrap||"",G.style.hyphens=O.hyphens||""},E=x,B=Math.max(0,E-2*(s||0));n.innerHTML="";const L=document.createElement("div");L.style.boxSizing="border-box",L.style.width=`${E}px`,L.style.maxWidth=`${E}px`,L.style.margin="0 auto",L.style.display="flex",n.appendChild(L);const _=document.createElement("div");_.style.boxSizing="border-box",_.style.paddingRight=`${s}px`,_.style.paddingLeft=`${s}px`,_.style.width=`${E}px`,_.style.maxWidth=`${E}px`,_.style.margin="0 auto",_.style.display="flex",_.style.justifyContent="center",_.style.height="auto",L.appendChild(_);const H=new Map,Y={},ue=Eu(c,w,r.length),ie=(G,ne)=>{const V=document.createElement("p");return V.style.margin="8px 0",V.style.paddingLeft=ne?`${ne}px`:"0",V.style.textAlign=G.textAlign??"start",V.style.whiteSpace="pre-wrap",V.style.lineHeight=String(a),V.style.fontSize=`${u}px`,V.style.boxSizing="border-box",V.style.fontFamily=i??"",V.style.width="100%",A(V),V},ae=(G,ne)=>{const V=ne??[],Z=document.createDocumentFragment();for(let ee=0;ee<V.length;ee++){const J=V[ee],le=document.createElement("span");le.dataset.runbox=String(ee),le.style.whiteSpace="pre-wrap";const re=document.createElement("span");if(re.dataset.run=String(ee),re.textContent=(J==null?void 0:J.text)??"",re.style.whiteSpace="pre-wrap",J!=null&&J.bold&&(re.style.fontWeight="700"),J!=null&&J.italic&&(re.style.fontStyle="italic"),J!=null&&J.underline&&(re.style.textDecoration="underline"),le.appendChild(re),l&&(J!=null&&J.split)&&ee!==V.length-1){const xe=Math.max(0,(d??0)/2),pe=document.createElement("span");pe.style.display="inline-block",pe.style.width=`${xe}px`;const we=document.createElement("span");if(we.style.display="inline-block",we.style.width=`${xe}px`,le.appendChild(pe),v){const Re=document.createElement("span");Re.textContent=" / ",le.appendChild(Re)}le.appendChild(we)}Z.appendChild(le)}G.appendChild(Z)},he=y>80?Math.floor((y-80)*.6):void 0,ke=G=>{const ne=G!=null&&G.width&&(G!=null&&G.height)?`${G.width} / ${G.height}`:"4 / 3",V=document.createElement("div");V.style.margin="12px 0",V.style.textAlign="center",V.style.width=`${B}px`;const Z=document.createElement("div");Z.style.position="relative",Z.style.width="100%",he&&(Z.style.maxHeight=`${he}px`),Z.style.aspectRatio=ne;const ee=document.createElement("div");if(ee.style.position="absolute",ee.style.inset="0",ee.style.width="100%",ee.style.height="100%",Z.appendChild(ee),V.appendChild(Z),G!=null&&G.alt){const J=document.createElement("div");J.style.fontSize="12px",J.style.color="#6B7280",J.style.marginTop="4px",J.textContent=String(G.alt),A(J),V.appendChild(J)}return V};for(let G=0;G<r.length;G++){Ye(c,w);const ne=r[G];if(_.dataset.block=String(G),_.innerHTML="",ne.kind==="image"){const we=ne.block,Re=ke(we);_.appendChild(Re);const Ae=Re.getBoundingClientRect(),{mt:je,mb:Ge}=Xn(Re);Y[G]={contentH:Math.ceil(Ae.height),mt:je,mb:Ge},await ue(24);continue}const V=ne.block,Z=V.list?(V.list.level??0)*24:0,ee=ne.paraIndex??0,J=h[ee]??(((g=V.list)==null?void 0:g.kind)==="bullet"?((f=V.list)==null?void 0:f.glyph)??"•":void 0);if(!!(V.list&&J)){const we=ie(V,Z);we.dataset.variant="with";const Re=ie(V,Z);Re.dataset.variant="no";const Ae=document.createElement("span");Ae.textContent=`${J} `,Ae.style.minWidth="16px",Ae.style.display="inline-block",Ae.style.whiteSpace="nowrap",Ae.style.userSelect="none",we.appendChild(Ae),ae(we,V.runs),ae(Re,V.runs);const je=document.createDocumentFragment();je.appendChild(we),je.appendChild(Re),_.appendChild(je)}else{const we=ie(V,Z);we.dataset.variant="with",ae(we,V.runs),_.appendChild(we)}const re=_.querySelector('p[data-variant="with"]'),xe=_.querySelector('p[data-variant="no"]'),pe=xe??re;if(re&&pe){const we=_o(re),Re=_o(pe),{mt:Ae,mb:je}=Xn(re),{mt:Ge,mb:rt}=Xn(pe),qe=((C=V.runs)==null?void 0:C.length)??0,Oe=xe?Re:we,et=xe?Ge:Ae,Qe=xe?rt:je;H.set(G,{runsLen:qe,lastBottomWith:we,lastBottomNo:Oe,mtWith:Ae,mbWith:je,mtNo:et,mbNo:Qe})}await ue(24)}Ye(c,w),_.innerHTML="";const W=(G,ne,V,Z)=>{if(ne>V)return{top:0,content:0,mb:0};const ee=Z?G.lastBottomNo:G.lastBottomWith,J=Z?G.mtNo:G.mtWith,le=Z?G.mbNo:G.mbWith,re=Z?0:J,xe=ne>0?ee[ne-1]??0:0,pe=Math.max(0,(ee[V]??0)-xe);return{top:re,content:pe,mb:le}},D=[];let U=0,z,N=null,Q=null;for(;U<r.length;){Ye(c,w);const G=U;let ne=0,V=0,Z=z;Z!=null&&N===U&&Q!=null&&(Z=Math.max(Z,Q+1));let ee=-1,J;for(;U<r.length;){if(Ye(c,w),r[U].kind==="image"){const Oe=Y[U]??{contentH:0,mt:0,mb:0},Qe=(ne===0?Oe.mt:V+Oe.mt)+Oe.contentH;if(I(Qe,ne)){ne+=Qe,ee=U,J=void 0,V=Oe.mb,U+=1,z=void 0,N=null,Q=null;continue}if(ne===0){D.push({startBlock:G,endBlock:U,...Z!=null?{startOffsetInBlock:Z}:{}}),U+=1,z=void 0,N=null,Q=null,V=0;break}break}const re=H.get(U),xe=re.runsLen,pe=U===G&&Z!=null?Z:0;if(pe>=xe){U+=1,z=void 0,N=null,Q=null;continue}const we=pe>0,Re=W(re,pe,xe-1,we),je=(ne===0?Re.top:V+Re.top)+Re.content;if(I(je,ne)){ne+=je,ee=U,J=xe-1,V=Re.mb,U+=1,z=void 0,N=null,Q=null;continue}let Ge=pe,rt=xe-1,qe=pe-1;for(;Ge<=rt;){Ye(c,w);const Oe=Ge+rt>>1,et=W(re,pe,Oe,we),Qe=(ne===0?et.top:V+et.top)+et.content;I(Qe,ne)?(qe=Oe,Ge=Oe+1):rt=Oe-1}if(qe>=pe){D.push({startBlock:G,endBlock:U,...Z!=null?{startOffsetInBlock:Z}:{},endOffsetInBlock:qe}),z=qe+1,N=U,Q=qe,V=0;break}if(ne>0){D.push({startBlock:G,endBlock:ee>=0?ee:Math.min(U-1,r.length-1),...Z!=null?{startOffsetInBlock:Z}:{},...J!=null?{endOffsetInBlock:J}:{}}),V=0;break}else{const Oe=pe;D.push({startBlock:G,endBlock:U,...Z!=null?{startOffsetInBlock:Z}:{},endOffsetInBlock:Oe}),z=Oe+1,N=U,Q=Oe,V=0;break}}(D.length===0||D[D.length-1].startBlock!==G)&&D.push({startBlock:G,endBlock:ee>=0?ee:Math.min(U-1,r.length-1),...Z!=null?{startOffsetInBlock:Z}:{},...J!=null?{endOffsetInBlock:J}:{}})}return L.remove(),T&&(t.style.transform="",t.style.transformOrigin=""),Ye(c,w),{pages:D,pageByRunIndex:null}}catch(T){throw console.error(T),T}}function Ou(e){const t=[],n=[];let r=0;return e.forEach((o,s)=>{o.type==="paragraph"?(t.push({kind:"paragraph",block:o,originalIndex:s,paraIndex:r}),n.push(s),r+=1):o.type==="image"&&t.push({kind:"image",block:o,originalIndex:s})}),{items:t,paraIndexMap:n}}function Mo(e,t,n){var r;if(!e)return null;for(let o=e.startBlock;o<=e.endBlock;o++){const s=t[o];if(!s||s.kind!=="paragraph")continue;const i=((r=s.block.runs)==null?void 0:r.length)??0;if(!i)continue;const u=o===e.startBlock&&e.startOffsetInBlock!=null?Math.min(Math.max(0,e.startOffsetInBlock),i-1):0;return(n[s.originalIndex]??0)+u}return null}function zu(e,t,n,r){var o;for(let s=0;s<t.length;s++){const i=t[s];for(let u=i.startBlock;u<=i.endBlock;u++){const a=n[u];if(!a||a.kind!=="paragraph")continue;const l=((o=a.block.runs)==null?void 0:o.length)??0;if(!l)continue;let d=0,v=l-1;u===i.startBlock&&i.startOffsetInBlock!=null&&(d=Math.max(0,Math.min(i.startOffsetInBlock,v))),u===i.endBlock&&i.endOffsetInBlock!=null&&(v=Math.max(d,Math.min(i.endOffsetInBlock,v)));const h=r[a.originalIndex]??0,p=h+d,y=h+v;if(e>=p&&e<=y)return s}}return-1}function Au(e){var r,o;const t=e;if(!t)return!1;const n=((o=(r=t.tagName)==null?void 0:r.toLowerCase)==null?void 0:o.call(r))??"";return!!(["a","button","input","textarea","select","label"].includes(n)||t.isContentEditable)}function Bu(e){var n;const t=e;return t?!!((n=t.closest)!=null&&n.call(t,"[data-range-handle]")):!1}function Pu(){var Cr;const e=m.useId(),t=q($=>$.section),n=q($=>$.sectionLoading),r=ut(),o=m.useRef(!1);m.useEffect(()=>r.subscribe($=>{o.current=$.progress.rangeStartGI!=null&&$.progress.rangeEndGI!=null}),[r]);const s=o.current,i=mt(),u=K($=>$.theme),a=sn[u],l=K($=>$.fontFamily),d=K($=>$.fontSizePx),v=K($=>$.lineHeight),h=K($=>$.marginX),p=K($=>$.viewportHeight),y=860,w=m.useRef(null),{items:c}=m.useMemo(()=>{var $;return Ou((($=t==null?void 0:t.ast)==null?void 0:$.blocks)??[])},[t]),g=m.useMemo(()=>{const $=[],ze=Sr();return c.forEach(Pe=>{if(Pe.kind==="paragraph"){const at=Pe.paraIndex;$[at]=yr(Pe.block,ze)}}),$},[c]),[f,C]=m.useState({pages:[],pageByRunIndex:null}),T=q($=>$.pageIndex),k=q($=>$.setPageIndex),j=m.useRef(0),x=m.useRef(null),[S,R]=m.useState(!1),[I,M]=m.useState(null),[O,A]=m.useState(!1),E=m.useMemo(()=>({flex:1,fontFamily:l,background:a.bg,color:a.fg,fontSize:d,lineHeight:v,overflow:"hidden",width:"100%",height:"100%",position:"relative",boxSizing:"border-box",WebkitTextSizeAdjust:"none",MozTextSizeAdjust:"none",textSizeAdjust:"none"}),[l,a.bg,a.fg,d,v]),{showSplit:B,breakGapPx:L,slash:_}=K(Vt($=>{var ze;return{showSplit:$.showSplit,breakGapPx:$.breakGapPx??0,slash:((ze=$.breakMarks)==null?void 0:ze.slash)??!1}})),H=ut();m.useEffect(()=>{f&&f.pages.length&&(H.getState().progress.setTotalPages(f.pages.length+1),(async()=>{const $=H.getState().progress.setSectionLoading;await pt(),await pt(),await pt(),await pt(),$(!1)})())},[f,H]);const Y=m.useCallback(()=>{const $=w.current,ze=re.current,Pe=xe.current;if(!$||!ze||!Pe||c.length===0){C({pages:[],pageByRunIndex:null}),k(0),H.getState().progress.setTotalPages(0);return}(async()=>{performance.now();try{const at=i.getState().playbackScale,{pages:dt,pageByRunIndex:Ot}=await ju({viewHost:$,measureRoot:ze,contentArea:Pe,items:c,cfgMaxWidth:y,marginX:h,fontFamily:l,fontSizePx:d,lineHeight:v,showSplit:B,breakGapPx:L,showSlash:_,paragraphMarkers:g,playbackScale:at,viewportHeight:p,instanceId:e}),Gd=performance.now();C({pages:dt,pageByRunIndex:Ot}),k(0)}catch(at){if(at instanceof As)return}})()},[k,c,y,h,l,d,v,B,L,_,g,i,p,e,H]),ue=q($=>$.setCurrentGlobalRunIndex),ie=q($=>{var ze;return((ze=$.layout)==null?void 0:ze.prefix)??[]}),ae=ye($=>$.syncToGI),he=m.useCallback($=>{const ze=f.pages.length+1,Pe=T+$;if(Pe<0||Pe>=ze)return;const at=T===f.pages.length;if(Pe===f.pages.length){k(Pe);return}if(at&&$===-1){const Ot=Mo(f.pages[Pe],c,ie);Ot!=null&&(ue(Ot,"scrubber-step"),ae(Ot)),k(Pe);return}const dt=Mo(f.pages[Pe],c,ie);dt!=null?(ue(dt,"scrubber-step"),ae(dt)):k(Pe)},[T,f.pages,c,ie,ue,k,ae]),ke=m.useCallback(()=>{S||j.current!==0?(M("prev"),R(!1)):he(-1)},[S,he]),W=m.useCallback(()=>{S||j.current!==0?(M("next"),R(!1)):he(1)},[S,he]),D=gn(),U=m.useCallback(()=>{const{isSettingsOpen:$,setSettingsOpen:ze,toggleOverlays:Pe}=D.getState();$?ze(!1):Pe()},[D]),z=f.pages.length+1,N=((Cr=w.current)==null?void 0:Cr.clientWidth)||400,Q=m.useCallback($=>{var dt;const ze=x.current;if(!ze)return;const Pe=((dt=w.current)==null?void 0:dt.clientWidth)||1,at=$/Pe*33.333;ze.style.transform=`translate3d(${-33.333+at}%, 0, 0)`},[]),G=m.useCallback($=>{T===0&&$>0||T>=z-1&&$<0||(j.current=$,Q($),S||R(!0))},[T,z,Q,S]),ne=m.useCallback(()=>{j.current=0,R(!1);const $=x.current;$&&($.style.transition="transform 250ms ease-out",$.style.transform="translate3d(-33.333%, 0, 0)")},[]),V=m.useCallback($=>{if($.target!==$.currentTarget||$.propertyName!=="transform")return;const ze=I;A(!0),M(null),j.current=0,ze==="prev"?he(-1):ze==="next"&&he(1)},[I,he]);m.useLayoutEffect(()=>{O&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{A(!1)})})},[O]);const Z=cn(),ee=m.useCallback($=>s||Bu($)?!0:Au($),[s]),J=m.useCallback($=>Z.getState().status==="playing"?!0:ee($),[Z,ee]),le=fu({onPrev:ke,onNext:W,onSingle:U,onDouble:()=>{},shouldIgnoreTarget:ee,shouldIgnoreSwipe:J,horizontalThreshold:120,velocityThreshold:.6,singleDelayMs:250,doubleClickWindowMs:300,onDragMove:G,onDragEnd:ne,pageTransitionThreshold:N*.5}),re=m.useRef(null),xe=m.useRef(null),pe=m.useCallback(()=>{const $=H.getState().progress.setSectionLoading;$(!0)},[H]),we=m.useMemo(()=>({trailing:!0,leading:!1,maxWait:1e3}),[]),Re=ku(Y,200,pe,we),Ae=m.useRef("");m.useEffect(()=>{if(p<=0)return;const $=`${l}|${d}|${v}|${h}|${B}|${L}|${_}|${p}|${t==null?void 0:t.section_id}`;Ae.current!==$&&(Ae.current=$,Re.cancel(),pe(),Y())},[Re,Y,pe,l,d,v,h,B,L,_,p,t==null?void 0:t.section_id]),du([w],Re);const je=q($=>$.registerSectionScrollApi);m.useEffect(()=>(je({ensureVisibleGI:()=>Promise.resolve(!0),scrollToGI:()=>Promise.resolve(!0),getVisibleRange:()=>null,getScrollTop:()=>0,setScrollTop:()=>{},getAnchorOffsetRatio:()=>0,scrollToGIAtOffset:()=>Promise.resolve(),stepPage:he}),()=>je(void 0)),[je,he]);const Ge=t.quizzes&&t.quizzes.length>0,rt=f.pages.length>0&&T===f.pages.length,qe=T>0?T-1:null,Oe=T<z-1?T+1:null,et=m.useMemo(()=>I==="prev"?"translate3d(0%, 0, 0)":I==="next"?"translate3d(-66.666%, 0, 0)":"translate3d(-33.333%, 0, 0)",[I]),Qe=$=>n?null:$===f.pages.length?b.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:16,width:"100%",height:"100%"},children:[Ge&&b.jsx(Ts,{}),b.jsx(pn,{isIcon:!1})]}):b.jsx(uu,{pages:f.pages,pageIndex:$,maxWidth:y}),It={width:"33.333%",height:"100%",flexShrink:0,display:"flex",alignItems:"stretch",justifyContent:"center",overflow:"hidden",boxSizing:"border-box",backfaceVisibility:"hidden",WebkitBackfaceVisibility:"hidden"},Sn=!O&&(!S||I!==null);return b.jsxs("div",{ref:w,style:{...E,touchAction:"none"},...le,children:[b.jsxs("div",{ref:x,style:{display:"flex",width:"300%",height:"100%",transform:et,transition:Sn?"transform 250ms ease-out":"none",willChange:"transform",boxSizing:"border-box",backfaceVisibility:"hidden",WebkitBackfaceVisibility:"hidden"},onTransitionEnd:I?V:void 0,children:[b.jsx("div",{style:It,children:qe!==null&&Qe(qe)}),b.jsx("div",{style:It,children:Qe(T)}),b.jsx("div",{style:It,children:Oe!==null&&Qe(Oe)})]}),b.jsx("div",{ref:re,"aria-hidden":!0,style:{position:"absolute",contain:"layout style paint",left:-999999,top:-999999,zIndex:-999999,opacity:0,width:"100%",maxWidth:y,height:"100%",minHeight:0,boxSizing:"border-box",overflow:"hidden",fontFamily:l,fontSize:d,lineHeight:v,pointerEvents:"none",background:"pink"},children:b.jsxs("div",{style:{width:"100%",maxWidth:y,height:"100%",boxSizing:"border-box",display:"flex",flexDirection:"column",margin:"0 auto",overflow:"hidden"},children:[b.jsx("div",{style:{height:40,background:"blue"}}),b.jsx("div",{ref:xe,style:{height:"calc(100% - 110px)",overflow:"hidden",boxSizing:"border-box",width:"100%"}})]})}),b.jsx(Lu,{pages:f.pages,items:c,onGotoPage:k,currentPageIndex:T,isOnExtraPage:rt})]})}const Lu=({pages:e,items:t,onGotoPage:n,currentPageIndex:r,isOnExtraPage:o})=>{const s=q(l=>l.currentGlobalRunIndex),i=q(l=>l.lastUpdateBy),u=q(l=>{var d;return((d=l.layout)==null?void 0:d.prefix)??[]}),a=m.useRef(null);return m.useEffect(()=>{if(s==null||e.length===0||o&&!(i==="scrubber-live"||i==="scrubber-commit")||a.current===s)return;a.current=s;const l=zu(s,e,t,u);l>=0&&l!==r&&n(l)},[s,e,t,u,n,r,o,i]),b.jsx(b.Fragment,{})},Gu="_wrapper_dbk3n_1",Hu="_spinner_dbk3n_10",Eo={wrapper:Gu,spinner:Hu};function Nu({size:e=28,speed:t=.8}){return b.jsx("div",{className:`${Eo.wrapper}`,children:b.jsx("div",{className:Eo.spinner,style:{width:e,height:e,borderWidth:3,animationDuration:`${t}s`}})})}function Fu(){const e=q(Vt(t=>t.sectionLoading===!0));return b.jsx(b.Fragment,{children:e===!0&&b.jsx(Nu,{})})}const Du="_Overlay_ybic8_3",Wu="_Dialog_ybic8_15",Vu="_Body_ybic8_25",$u="_Header_ybic8_32",qu="_Paging_ybic8_39",Uu="_Remaining_ybic8_48",Ku="_RemainingDanger_ybic8_55",Xu="_NextBtn_ybic8_59",Qu="_CloseBtn_ybic8_96",Yu="_Question_ybic8_113",Zu="_Score_ybic8_123",Ju="_Image_ybic8_130",ed="_Options_ybic8_140",td="_OptionBtn_ybic8_145",nd="_OptionBtnActive_ybic8_165",rd="_Footer_ybic8_172",od="_OptionBtnCorrect_ybic8_195",sd="_Judge_ybic8_201",id="_Correct_ybic8_212",ld="_Incorrect_ybic8_215",ad="_ResultHeader_ybic8_220",cd="_ResultActions_ybic8_233",ud="_CloseBtnSoft_ybic8_239",dd="_SummaryGrid_ybic8_249",fd="_StatCard_ybic8_257",pd="_StatLabel_ybic8_265",gd="_StatValue_ybic8_270",hd="_StatSub_ybic8_277",de={Overlay:Du,Dialog:Wu,Body:Vu,Header:$u,Paging:qu,Remaining:Uu,RemainingDanger:Ku,NextBtn:Xu,CloseBtn:Qu,Question:Yu,Score:Zu,Image:Ju,Options:ed,OptionBtn:td,OptionBtnActive:nd,Footer:rd,OptionBtnCorrect:od,Judge:sd,Correct:id,Incorrect:ld,ResultHeader:ad,ResultActions:cd,CloseBtnSoft:ud,SummaryGrid:dd,StatCard:fd,StatLabel:pd,StatValue:gd,StatSub:hd};function md(e){return e?e.kind==="temp"?e.image_blob_url:e.image_cdn_url:null}function Bs(e){var t;return(((t=e.answers)==null?void 0:t.length)??0)>1}function bd(e){const t=e.answers??[],n=[];return t.forEach(r=>{const o=e.options.findIndex(s=>s===r);o>=0&&n.push(o)}),n.sort((r,o)=>r-o)}const xd=m.memo(function(){const t=Ue(c=>c.phase),n=Ue(c=>c.quizzes),r=Ue(c=>c.order),o=Ue(c=>c.currentIndex),s=Ue(c=>c.answers),i=Ue(c=>c.correctCount),u=Ue(c=>c.remainingSec),a=Ue(c=>c.uiReveal),l=Ue(c=>c.startedAt),d=Ue(c=>c.finishedAt),v=Ue(c=>c.perQ),h=Is();m.useEffect(()=>{if(t==="idle"||t!=="doing"||u==null)return;const c=window.setInterval(()=>h.getState().tick(),1e3);return()=>window.clearInterval(c)},[t,u,h]);const p=t==="doing"?n[r[o]]:void 0,y=t==="doing"&&p?s[p.qid]??[]:[],w=m.useMemo(()=>{if(t==="idle"||t!=="finished")return;const c=r.map(_=>n[_]),g=c.length,f=c.reduce((_,H)=>_+(H.score??0),0),C=c.reduce((_,H)=>{const Y=v[H.qid];return _+(Y!=null&&Y.isCorrect?H.score??0:0)},0),T=c.map(_=>v[_.qid]).filter(_=>!!_),k=typeof l=="number"&&typeof d=="number"?Math.max(0,d-l):T.reduce((_,H)=>_+(H.ms??0),0),j=g>0?Math.round(k/g):0,x=[...T].sort((_,H)=>_.ms-H.ms),S=x[0],R=x[x.length-1],I=T.filter(_=>!_.multi),M=T.filter(_=>_.multi),O=I.filter(_=>_.isCorrect).length,A=M.filter(_=>_.isCorrect).length,E=T.filter(_=>_.timedOut).length,B=T.filter(_=>_.revealed).length,L=T.filter(_=>!_.isCorrect).sort((_,H)=>H.ms-_.ms).slice(0,3);return{total:g,correct:i,rate:g?Math.round(i/g*100):0,timeMsTotal:k,avgMs:j,totalScore:f,gainedScore:C,fastest:S,slowest:R,singles:{total:I.length,correct:O},multis:{total:M.length,correct:A},timedOut:E,revealed:B,wrongTop3:L}},[t,r,n,v,l,d,i]);return t==="idle"?null:b.jsx("div",{className:de.Overlay,role:"dialog","aria-modal":"true",children:b.jsx("div",{className:de.Dialog,children:t==="doing"&&p?b.jsx(vd,{q:p,index:o,total:r.length,selected:y,uiReveal:a,onSelect:c=>{if(a)return;const g=h.getState();Bs(p)?g.selectToggle(c):g.selectSingle(c)},onBeforeNext:()=>h.getState().setReveal(!0),onNext:()=>h.getState().afterRevealNext(),remainingSec:u,onClose:()=>h.getState().close()}):b.jsx(Sd,{total:r.length,correct:i,summary:w,retryAllowed:h.getState().retryAllowed,onClose:()=>h.getState().close(),onRetry:()=>{const g=h.getState().quizzes;if(!g.length)return;const f=g[0];h.setState({phase:"doing",currentIndex:0,answers:{},correctCount:0,startedAt:Date.now(),finishedAt:void 0,questionStartedAt:Date.now(),remainingSec:f.limit_sec||void 0,uiReveal:!1,perQ:{}})}})})})});function vd(e){const{q:t,index:n,total:r,selected:o,uiReveal:s,onSelect:i,onBeforeNext:u,onNext:a,remainingSec:l,onClose:d}=e,v=Bs(t),h=m.useMemo(()=>{const c=t.options.map((g,f)=>({opt:g,i:f}));for(let g=c.length-1;g>0;g--){const f=Math.floor(Math.random()*(g+1));[c[g],c[f]]=[c[f],c[g]]}return c},[t.options]),p=m.useMemo(()=>md(t),[t]),y=m.useMemo(()=>bd(t),[t]),w=m.useMemo(()=>{const c=[...o].sort((g,f)=>g-f);if(c.length!==y.length)return!1;for(let g=0;g<c.length;g++)if(c[g]!==y[g])return!1;return!0},[o,y]);return b.jsxs("div",{className:de.Body,children:[b.jsxs("div",{className:de.Header,children:[b.jsx("div",{className:de.Paging,children:`Quiz (${n+1}/${r})`}),b.jsx("button",{type:"button",onClick:d,className:de.CloseBtn,children:"X"})]}),b.jsx("div",{className:de.Question,children:t.question}),b.jsx("div",{className:de.Score,children:` (${t.score}점${v?" ,모두선택":""})`}),b.jsx("div",{className:`${de.Judge}${s?w?` ${de.Correct}`:` ${de.Incorrect}`:""}`,"aria-live":"polite",children:s?w?`Correct : +${t.score} point`:"Incorrect : 0 point":"a"}),b.jsx("div",{className:de.Image,children:p&&b.jsx("img",{src:p,alt:""})}),b.jsx("div",{className:de.Options,children:h.map(({opt:c,i:g})=>{const f=o.includes(g),C=y.includes(g),T=[de.OptionBtn,f?de.OptionBtnActive:"",s&&C?de.OptionBtnCorrect:""].filter(Boolean).join(" ");return b.jsx("button",{type:"button",onClick:()=>i(g),className:T,disabled:s,children:c},g)})}),b.jsx("div",{className:de.Footer,children:s?b.jsx("button",{type:"button",onClick:a,className:de.NextBtn,children:n+1>=r?"Complete":"Next Quiz"}):b.jsxs("button",{type:"button",onClick:u,className:`${de.NextBtn}`,children:["Submit",typeof l=="number"&&b.jsx("span",{className:`${de.Remaining} ${l<=5?de.RemainingDanger:""}`,children:` (${l} s )`})]})})]})}function jo(e){return e==null?"-":`${Math.round(e/1e3)}s`}function Sd(e){const{total:t,correct:n,summary:r,retryAllowed:o,onClose:s,onRetry:i}=e,u=(r==null?void 0:r.rate)??(t>0?Math.round(n/t*100):0);return b.jsxs("div",{className:de.Body,children:[b.jsx("div",{className:de.ResultHeader,children:"결과 요약"}),b.jsxs("div",{className:de.SummaryGrid,role:"list",children:[b.jsxs("div",{className:de.StatCard,role:"listitem",children:[b.jsx("div",{className:de.StatLabel,children:"정답률"}),b.jsxs("div",{className:de.StatValue,children:[u,"%"]}),b.jsx("div",{className:de.StatSub,children:`정답수 ${n}/문제수${t}`})]}),b.jsxs("div",{className:de.StatCard,role:"listitem",children:[b.jsx("div",{className:de.StatLabel,children:"총 점수"}),b.jsx("div",{className:de.StatValue,children:r?`${r.gainedScore}/${r.totalScore}`:"-"}),b.jsx("div",{className:de.StatSub,children:"획득점수/최대점수"})]}),b.jsxs("div",{className:de.StatCard,role:"listitem",children:[b.jsx("div",{className:de.StatLabel,children:"총 소요 시간"}),b.jsx("div",{className:de.StatValue,children:jo(r==null?void 0:r.timeMsTotal)}),b.jsx("div",{className:de.StatSub,children:`평균 ${jo(r==null?void 0:r.avgMs)}`})]}),b.jsxs("div",{className:de.StatCard,role:"listitem",children:[b.jsx("div",{className:de.StatLabel,children:"타입오버 퀴즈수"}),b.jsx("div",{className:de.StatValue,children:r?`${r.timedOut}`:"-"}),b.jsx("div",{className:de.StatSub,children:"timeout"})]})]}),b.jsxs("div",{className:de.ResultActions,children:[o&&b.jsx("button",{type:"button",onClick:i,className:de.CloseBtnSoft,children:"다시 풀기"}),b.jsx("button",{type:"button",onClick:s,className:de.CloseBtnSoft,children:"닫기"})]})]})}function yd(e){return e.map((t,n)=>n)}function wd(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Qn(e){var t;return(((t=e.answers)==null?void 0:t.length)??0)>1}function Yn(e){const t=e.answers??[],n=[];return t.forEach(r=>{const o=e.options.findIndex(s=>s===r);o>=0&&n.push(o)}),n.sort((r,o)=>r-o)}function Oo(e){if(!e)return{};const t=(e.quizzes??[]).slice().sort((n,r)=>n.index-r.index);return{sectionId:e.section_id,quizzes:t,order:yd(t),currentIndex:0,answers:{},correctCount:0,startedAt:void 0,finishedAt:void 0,questionStartedAt:void 0,remainingSec:void 0,uiReveal:!1,perQ:{}}}function Cd(e,t){const n=(t==null?void 0:t.retryAllowed)??!0,r=(t==null?void 0:t.previousResult)??null,o={phase:"idle",sectionId:void 0,quizzes:[],order:[],currentIndex:0,answers:{},correctCount:0,startedAt:void 0,finishedAt:void 0,questionStartedAt:void 0,remainingSec:void 0,uiReveal:!1,perQ:{},retryAllowed:n,previousResult:r},s=Oo(e);return $t()((u,a)=>({...o,...s,hydrateFromSection:l=>{if(!l)return;const d=Oo(l);u(d)},openFromSection:l=>{l&&a().hydrateFromSection(l);const d=a();if(!d.quizzes.length)return;if(!d.retryAllowed&&d.previousResult){const h={};for(const p of d.previousResult.perQuestion)h[p.qid]={qid:p.qid,index:p.index,question:p.question,score:p.score,multi:p.correctIdxes.length>1,selected:p.selected,correctIdxes:p.correctIdxes,isCorrect:p.isCorrect,ms:p.ms,revealed:!0,timedOut:p.timedOut};u({phase:"finished",correctCount:d.previousResult.correct,perQ:h,startedAt:void 0,finishedAt:void 0});return}const v=d.quizzes[0];u({phase:"doing",startedAt:Date.now(),finishedAt:void 0,questionStartedAt:Date.now(),remainingSec:v.limit_sec||void 0,currentIndex:0,uiReveal:!1})},close:()=>{u({phase:"idle",sectionId:void 0,quizzes:[],order:[],currentIndex:0,answers:{},correctCount:0,startedAt:void 0,finishedAt:void 0,questionStartedAt:void 0,remainingSec:void 0,uiReveal:!1,perQ:{}})},selectToggle:l=>{const d=a();if(d.phase!=="doing"||d.uiReveal)return;const h=d.quizzes[d.order[d.currentIndex]].qid,p=d.answers[h]??[],y=p.includes(l)?p.filter(w=>w!==l):[...p,l].sort((w,c)=>w-c);u({answers:{...d.answers,[h]:y}})},selectSingle:l=>{const d=a();if(d.phase!=="doing"||d.uiReveal)return;const h=d.quizzes[d.order[d.currentIndex]].qid;u({answers:{...d.answers,[h]:[l]}})},submitCurrent:()=>{const l=a();if(l.phase!=="doing")return;const d=l.order[l.currentIndex],v=l.quizzes[d],h=v.qid,p=(l.answers[h]??[]).slice().sort((C,T)=>C-T),y=Yn(v),w=wd(p,y),c=l.questionStartedAt?Date.now()-l.questionStartedAt:0,g=l.perQ[h],f={qid:h,index:v.index,question:v.question,score:v.score??0,multi:Qn(v),selected:p,correctIdxes:y,isCorrect:w,ms:c,revealed:(g==null?void 0:g.revealed)??!1,timedOut:(g==null?void 0:g.timedOut)??!1};if(u({correctCount:l.correctCount+(w?1:0),perQ:{...l.perQ,[h]:f}}),l.currentIndex+1>=l.order.length)u({uiReveal:!1,remainingSec:void 0}),a().finish();else{const C=l.currentIndex+1;u({currentIndex:C,questionStartedAt:Date.now(),remainingSec:l.quizzes[l.order[C]].limit_sec||void 0,uiReveal:!1})}},setReveal:l=>{const d=a();if(d.phase==="doing"){if(l){const v=d.quizzes[d.order[d.currentIndex]],h=v.qid,p=d.perQ[h],y={qid:h,index:v.index,question:v.question,score:v.score??0,multi:Qn(v),selected:(p==null?void 0:p.selected)??[],correctIdxes:(p==null?void 0:p.correctIdxes)??Yn(v),isCorrect:(p==null?void 0:p.isCorrect)??!1,ms:(p==null?void 0:p.ms)??0,revealed:!0,timedOut:(p==null?void 0:p.timedOut)??!1};u({perQ:{...d.perQ,[h]:y}})}u({uiReveal:l})}},afterRevealNext:()=>{a().phase==="doing"&&a().submitCurrent()},next:()=>{const l=a();if(l.phase!=="doing"||l.currentIndex+1>=l.order.length)return;const d=l.currentIndex+1;u({currentIndex:d,questionStartedAt:Date.now(),remainingSec:l.quizzes[l.order[d]].limit_sec||void 0,uiReveal:!1})},prev:()=>{const l=a();if(l.phase!=="doing"||l.currentIndex<=0)return;const d=l.currentIndex-1;u({currentIndex:d,questionStartedAt:Date.now(),remainingSec:l.quizzes[l.order[d]].limit_sec||void 0,uiReveal:!1})},finish:()=>{u({phase:"finished",remainingSec:void 0,uiReveal:!1,finishedAt:Date.now()})},tick:()=>{const l=a();if(l.phase!=="doing"||l.remainingSec==null)return;const d=l.remainingSec-1;if(d<=0){const v=l.quizzes[l.order[l.currentIndex]],h=v.qid,p=l.perQ[h],y={qid:h,index:v.index,question:v.question,score:v.score??0,multi:Qn(v),selected:(p==null?void 0:p.selected)??[],correctIdxes:(p==null?void 0:p.correctIdxes)??Yn(v),isCorrect:(p==null?void 0:p.isCorrect)??!1,ms:(p==null?void 0:p.ms)??0,revealed:!0,timedOut:!0};u({remainingSec:0,uiReveal:!0,perQ:{...l.perQ,[h]:y}})}else u({remainingSec:d})}}))}function Id({children:e,initialState:t}){const n=m.useMemo(()=>Cd(t.section,{retryAllowed:t.quizRetryAllowed??!0,previousResult:t.previousQuizResult??null}),[t]),r=m.useRef(t.onQuizStart),o=m.useRef(t.onQuizComplete);return m.useEffect(()=>{r.current=t.onQuizStart},[t.onQuizStart]),m.useEffect(()=>{o.current=t.onQuizComplete},[t.onQuizComplete]),m.useEffect(()=>{const s=n.subscribe((i,u)=>{var a;if(u.phase!=="doing"&&i.phase==="doing"&&((a=r.current)==null||a.call(r)),u.phase!=="finished"&&i.phase==="finished"){const l=o.current;if(!l||!i.retryAllowed&&i.previousResult&&!i.startedAt)return;const{sectionId:d,quizzes:v,order:h,perQ:p,startedAt:y,finishedAt:w}=i,c=h.map(S=>v[S]),g=c.length,f=c.filter(S=>{var R;return(R=p[S.qid])==null?void 0:R.isCorrect}).length,C=c.reduce((S,R)=>S+(R.score??0),0),T=c.reduce((S,R)=>{const I=p[R.qid];return S+(I!=null&&I.isCorrect?R.score??0:0)},0),k=typeof y=="number"&&typeof w=="number"?Math.max(0,w-y):0,j=c.map(S=>{const R=p[S.qid];return{qid:S.qid,index:S.index,question:S.question,score:S.score??0,isCorrect:(R==null?void 0:R.isCorrect)??!1,selected:(R==null?void 0:R.selected)??[],correctIdxes:(R==null?void 0:R.correctIdxes)??[],ms:(R==null?void 0:R.ms)??0,timedOut:(R==null?void 0:R.timedOut)??!1}}),x={sectionId:d??"",total:g,correct:f,rate:g>0?Math.round(f/g*100):0,totalScore:C,gainedScore:T,timeMsTotal:k,perQuestion:j};l(x)}});return()=>s()},[n]),b.jsx(wr.Provider,{value:n,children:e})}const zo=["mode","theme","fontFamily","fontSizePx","lineHeight","marginX","marginY","pointerStyle","pointerColor","breakMarks","breakGapPx","muteAudio","audioSpeed","showPointer","showSplit","showOverlays","overlayCompactMode","isSettingsOpen"];function Td({containerRef:e}){const t=mt(),n=gn(),r=m.useRef(null);return m.useEffect(()=>{const o=e.current;if(!o)return;let s=o.clientWidth,i=o.clientHeight;n.getState().setViewportSize(s,i);const u=new ResizeObserver(()=>{const a=o.clientWidth,l=o.clientHeight;(a!==s||l!==i)&&(s=a,i=l,n.getState().setViewportSize(a,l),t.getState().emit({type:"viewport_resize",payload:{width:a,height:l}}))});return u.observe(o),()=>u.disconnect()},[t,n,e]),m.useEffect(()=>{const o=n.getState();r.current={};for(const i of zo)r.current[i]=o[i];const s=n.subscribe(i=>{const u=r.current;if(u)for(const a of zo){const l=u[a],d=i[a];l!==d&&(a==="mode"?t.getState().emit({type:"mode_change",payload:{mode:d}}):t.getState().emit({type:"settings_change",payload:{key:a,value:d}}),u[a]=d)}});return()=>{s(),r.current=null}},[t,n]),null}function kd(){const e=mt(),t=gn(),n=ut(),r=m.useContext(Lo),o=m.useContext(vn),s=m.useCallback(a=>{const{viewerState:l}=a;if(l){l.mode&&t.getState().setMode(l.mode);const{...h}=l;t.setState(h)}if(typeof a.globalIndex=="number"&&n.getState().progress.setCurrentGlobalRunIndex(a.globalIndex,"playback"),(l==null?void 0:l.mode)==="scroll"||!(l!=null&&l.mode)){const h=()=>{const p=n.getState().progress.getSectionScrollApi();if(!p)return!1;if(a.scrollY===0)p.setScrollTop(0);else if(p.scrollToGIAtOffset){const y=a.anchorGI??a.globalIndex;if(typeof y=="number"){const w=a.anchorOffsetRatio??0;p.scrollToGIAtOffset(y,w)}}return!0};if(!h()){let p=0;const y=setInterval(()=>{(h()||++p>=10)&&clearInterval(y)},50)}}a.audio&&o&&o.getState()._setStatusOnly(a.audio.status);const v=n.getState().progress;a.range?v.setRange(a.range.startGI,a.range.endGI):v.clearRange(),a.translate&&a.translate.isOpen?v.setTranslateState({isOpen:!0,isLoading:a.translate.isLoading,text:a.translate.text,translatedText:a.translate.translatedText,startGI:a.translate.startGI,endGI:a.translate.endGI}):v.clearTranslate()},[t,n,o]),i=m.useCallback(()=>{var k,j,x,S;const a=t.getState(),l=n.getState().progress,d=(k=l.getSectionScrollApi)==null?void 0:k.call(l),v=l.currentGlobalRunIndex??0,h=((j=d==null?void 0:d.getScrollTop)==null?void 0:j.call(d))??0,p=((x=d==null?void 0:d.getAnchorOffsetRatio)==null?void 0:x.call(d,v))??0,y=o==null?void 0:o.getState(),w=y?{status:y.status,currentClip:y.currentClip,currentTimeMs:y.currentTimeMs}:void 0,{rangeStartGI:c,rangeEndGI:g}=l,f=c!=null&&g!=null?{startGI:c,endGI:g,text:l.getRangeText()}:null,C=((S=d==null?void 0:d.getScrollRatio)==null?void 0:S.call(d))??0,T=l.translateOpen?{isOpen:!0,isLoading:l.translateLoading,text:l.translateText,translatedText:l.translatedText,startGI:l.translateStartGI,endGI:l.translateEndGI}:null;return{viewerState:{mode:a.mode,theme:a.theme,fontFamily:a.fontFamily,fontSizePx:a.fontSizePx,lineHeight:a.lineHeight,marginX:a.marginX,marginY:a.marginY,showOverlays:a.showOverlays,isSettingsOpen:a.isSettingsOpen,pointerStyle:a.pointerStyle,pointerColor:a.pointerColor,breakMarks:a.breakMarks,breakGapPx:a.breakGapPx,muteAudio:a.muteAudio,audioSpeed:a.audioSpeed,showPointer:a.showPointer,showSplit:a.showSplit,overlayCompactMode:a.overlayCompactMode,viewportWidth:a.viewportWidth,viewportHeight:a.viewportHeight},globalIndex:v,scrollY:h,scrollRatio:C,anchorGI:v,anchorOffsetRatio:p,currentPage:l.pageIndex??0,totalPages:l.totalPages,sectionId:l.sectionId??"",viewportWidth:a.viewportWidth,viewportHeight:a.viewportHeight,audio:w,range:f,translate:T}},[t,n,o]),u=m.useCallback(a=>{switch(a.type){case"global_index_change":{const{globalIndex:l}=a.payload;n.getState().progress.setCurrentGlobalRunIndex(l,"playback");break}case"scroll":{if(t.getState().mode==="page")break;const{scrollTop:d,anchorGI:v,anchorOffsetRatio:h}=a.payload,p=n.getState().progress.getSectionScrollApi();if(!p)break;d===0?p.setScrollTop(0):p.scrollToGIAtOffset&&typeof v=="number"&&p.scrollToGIAtOffset(v,h);break}case"settings_change":{const{key:l,value:d}=a.payload,v=t.getState();l in v&&typeof v[l]!="function"&&t.setState({[l]:d});break}case"mode_change":{const{mode:l}=a.payload;t.getState().setMode(l);break}case"audio_control":{if(!o)break;const{action:l}=a.payload;switch(l){case"play":o.getState()._setStatusOnly("playing");break;case"pause":o.getState()._setStatusOnly("paused");break;case"stop":o.getState()._setStatusOnly("idle");break}break}case"page_change":{const{pageIndex:l}=a.payload;n.getState().progress.setPageIndex(l);break}case"range_select":case"range_change":{const{startGI:l,endGI:d}=a.payload;n.getState().progress.setRange(l,d),n.getState().progress;break}case"range_clear":{n.getState().progress.clearRange();break}case"translate_request":{const{text:l,startGI:d,endGI:v}=a.payload;n.getState().progress.setTranslateState({isOpen:!0,isLoading:!0,text:l,startGI:d,endGI:v});break}case"translate_loading_start":{n.getState().progress.setTranslateState({isOpen:!0,isLoading:!0});break}case"translate_loading_end":{const{originalText:l,translatedText:d}=a.payload;n.getState().progress.setTranslateState({isOpen:!0,isLoading:!1,text:l,translatedText:d});break}case"translate_modal_close":{n.getState().progress.clearTranslate();break}case"render_start":case"loading_start":case"loading_end":case"viewport_resize":break;default:console.log("[DirectPlaybackController] 미처리 이벤트:",a.type)}},[n,t,o]);return m.useLayoutEffect(()=>r?(r.current={dispatch:u,applySnapshot:s,getSnapshot:i,isReady:()=>!n.getState().progress.sectionLoading,waitUntilReady:()=>new Promise(l=>{if(!n.getState().progress.sectionLoading){l();return}const d=n.subscribe(v=>{v.progress.sectionLoading||(d(),l())})})},e.getState().isPlaybackMode&&(e.getState().setDispatchHandler(u),e.getState().setApplySnapshotHandler(s)),()=>{e.getState().setDispatchHandler(null),e.getState().setApplySnapshotHandler(null)}):void 0,[r,e,u,s,i,n]),m.useLayoutEffect(()=>e.subscribe((l,d)=>{l.isPlaybackMode&&!d.isPlaybackMode?(e.getState().setDispatchHandler(u),e.getState().setApplySnapshotHandler(s)):!l.isPlaybackMode&&d.isPlaybackMode&&(e.getState().setDispatchHandler(null),e.getState().setApplySnapshotHandler(null))}),[e,u,s]),null}function Rd(e){const t=e.querySelectorAll("[data-gi]");if(t.length<2)return 0;const n=[];let r=null,o=-1/0;for(let s=0;s<t.length;s++){const i=t[s].getBoundingClientRect();if(r&&Math.abs(i.top-o)<i.height*.5){const u=i.left-r.right;u>=0&&n.push(u)}r=i,o=i.top}return n.length===0?0:n.reduce((s,i)=>s+i,0)/n.length}function _d({containerRef:e}){const t=K(d=>d.fontSizePx),n=K(d=>d.fontFamily),r=K(d=>d.lineHeight),o=K(d=>d.marginX),s=K(d=>d.breakMarks),i=K(d=>d.breakGapPx),u=K(d=>d.showSplit),a=K(d=>d.viewportWidth),l=mt();return m.useEffect(()=>{const d=e.current;if(!d)return;let v;const h=requestAnimationFrame(()=>{v=requestAnimationFrame(()=>{const p=Rd(d);l.setState({wordAvgDistancePx:p})})});return()=>{cancelAnimationFrame(h),cancelAnimationFrame(v)}},[e,l,t,n,r,o,s,i,u,a]),null}const Md=({containerRef:e,onTranslate:t})=>{const n=q(h=>h.rangeStartGI),r=q(h=>h.rangeEndGI),o=q(h=>h.getRangeText),s=q(h=>h.clearRange),i=mt(),u=n!=null&&r!=null,[a,l]=m.useState(null);m.useEffect(()=>{if(!u)return;const h=e.current;if(!h)return;let p=!0;const y=new ResizeObserver(()=>{if(p){p=!1;return}s()});return y.observe(h),()=>y.disconnect()},[u,s,e]),m.useEffect(()=>{if(!u||n==null||r==null){l(null);return}const h=()=>{const c=e.current;if(!c)return;const g=c.getBoundingClientRect(),C=1/(i.getState().playbackScale||1),T=c.querySelector(`[data-g="${r}"]`);if(!T){l({x:g.width*C/2,y:80});return}const k=T.getBoundingClientRect(),j=c.querySelector(`[data-g="${n}"]`),x=j==null?void 0:j.getBoundingClientRect();let S=(k.left+k.width/2-g.left)*C;x&&(S=((x.left+k.right)/2-g.left)*C);const R=160,I=50,M=16,O=12,A=g.width*C,E=Math.max(M+R/2,Math.min(S,A-M-R/2)),B=(((x==null?void 0:x.top)??k.top)-g.top)*C-I-O;let L=B;B<M&&(L=(k.bottom-g.top)*C+O),l({x:E,y:L})};h();const p=e.current;let y=0;const w=()=>{y||(y=requestAnimationFrame(()=>{y=0,h()}))};return p&&p.addEventListener("scroll",w,!0),()=>{y&&cancelAnimationFrame(y),p&&p.removeEventListener("scroll",w,!0)}},[u,n,r,e,i]);const d=m.useCallback(()=>{const h=o();h&&navigator.clipboard.writeText(h).catch(p=>{console.error("복사 실패:",p)}),s()},[o,s]),v=m.useCallback(()=>{const h=o();h&&t&&t(h)},[o,t]);return!u||!a?null:b.jsxs("div",{"data-range-menu":!0,style:{position:"absolute",left:a.x,top:a.y,transform:"translateX(-50%)",display:"flex",gap:8,padding:"8px 12px",backgroundColor:"#fff",borderRadius:8,boxShadow:"0 4px 12px rgba(0, 0, 0, 0.3)",zIndex:1e4},children:[b.jsx("button",{onClick:d,style:{padding:"8px 16px",backgroundColor:"#3b82f6",color:"#fff",border:"none",borderRadius:6,fontSize:14,fontWeight:500,cursor:"pointer",whiteSpace:"nowrap"},children:"복사"}),b.jsx("button",{onClick:v,style:{padding:"8px 16px",backgroundColor:"#10b981",color:"#fff",border:"none",borderRadius:6,fontSize:14,fontWeight:500,cursor:"pointer",whiteSpace:"nowrap"},children:"번역"})]})},Ed="_handleStart_1ihf3_16 _handle_1ihf3_1",jd="_handleEnd_1ihf3_21 _handle_1ihf3_1",Ao={handleStart:Ed,handleEnd:jd},Od=({containerRef:e})=>{const t=q(c=>c.rangeStartGI),n=q(c=>c.rangeEndGI),r=q(c=>c.setRange),o=mt(),s=t!=null&&n!=null,[i,u]=m.useState(null),[a,l]=m.useState(null),d=m.useRef(null),v=m.useRef({startGI:t,endGI:n});v.current={startGI:t,endGI:n};const h=m.useRef(r);h.current=r,m.useEffect(()=>{if(!s||t==null||n==null){u(null),l(null);return}const c=()=>{const f=e.current;if(!f)return;const C=f.getBoundingClientRect(),k=1/(o.getState().playbackScale||1),j=f.querySelector(`[data-g="${t}"]`),x=f.querySelector(`[data-g="${n}"]`);if(j){const S=j.getBoundingClientRect();u({x:(S.left-C.left)*k,y:(S.bottom-C.top)*k})}else u(null);if(x){const S=x.getBoundingClientRect();l({x:(S.right-C.left)*k,y:(S.bottom-C.top)*k})}else l(null)};c();const g=e.current;return g&&g.addEventListener("scroll",c,!0),window.addEventListener("resize",c),()=>{g&&g.removeEventListener("scroll",c,!0),window.removeEventListener("resize",c)}},[s,t,n,e,o]);const p=m.useCallback((c,g)=>{var C;const f=document.elementsFromPoint(c,g);for(const T of f){const k=(C=T.getAttribute)==null?void 0:C.call(T,"data-g");if(k!=null)return parseInt(k,10)}return null},[]);m.useEffect(()=>{const c=f=>{if(!d.current)return;const{startGI:C,endGI:T}=v.current;if(C==null||T==null)return;const k=p(f.clientX,f.clientY);k!=null&&(d.current==="start"?k<=T?h.current(k,T):(h.current(T,k),d.current="end"):k>=C?h.current(C,k):(h.current(k,C),d.current="start"))},g=()=>{d.current=null,setTimeout(()=>{Zr(!1)},50)};return document.addEventListener("pointermove",c),document.addEventListener("pointerup",g),document.addEventListener("pointercancel",g),()=>{document.removeEventListener("pointermove",c),document.removeEventListener("pointerup",g),document.removeEventListener("pointercancel",g)}},[p]);const y=m.useCallback(c=>g=>{g.preventDefault(),g.stopPropagation(),d.current=c,Zr(!0)},[]);return s?b.jsxs(b.Fragment,{children:[i&&b.jsx("div",{className:Ao.handleStart,"data-range-handle":"start",style:{left:i.x-26,top:i.y},onPointerDown:y("start")}),a&&b.jsx("div",{className:Ao.handleEnd,"data-range-handle":"end",style:{left:a.x,top:a.y},onPointerDown:y("end")})]}):null};function zd(){const e=q(o=>o.rangeStartGI),t=q(o=>o.rangeEndGI),n=q(o=>o.clearRange),r=e!=null&&t!=null;return m.useEffect(()=>{if(!r)return;const o=s=>{var u;if(Ss())return;const i=s.target;if(!(i.closest("[data-range-menu]")||i.closest("[data-range-handle]"))){if(i.closest("[data-g]")){const a=(u=i.closest("[data-g]"))==null?void 0:u.getAttribute("data-g");if(a){const l=parseInt(a,10),d=Math.min(e,t),v=Math.max(e,t);if(l>=d&&l<=v)return}}n()}};return document.addEventListener("click",o,!0),()=>document.removeEventListener("click",o,!0)},[r,e,t,n]),null}const Ad=({isOpen:e,isLoading:t=!1,onClose:n,text:r,translatedText:o})=>e?b.jsx("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"rgba(0, 0, 0, 0.5)",zIndex:10001},onClick:n,children:b.jsxs("div",{style:{position:"relative",backgroundColor:"#fff",borderRadius:12,padding:"24px 32px",minWidth:280,maxWidth:"80%",boxShadow:"0 8px 32px rgba(0, 0, 0, 0.2)"},onClick:s=>s.stopPropagation(),children:[b.jsx("button",{onClick:n,style:{position:"absolute",top:12,right:12,width:28,height:28,display:"flex",alignItems:"center",justifyContent:"center",backgroundColor:"transparent",border:"none",borderRadius:"50%",cursor:"pointer",fontSize:20,color:"#666"},"aria-label":"닫기",children:"✕"}),b.jsx("h3",{style:{margin:"0 0 16px 0",fontSize:18,fontWeight:600,color:"#333"},children:"번역"}),r&&b.jsx("div",{style:{padding:12,backgroundColor:"#f5f5f5",borderRadius:8,fontSize:14,color:"#555",maxHeight:100,overflow:"auto",marginBottom:12},children:r}),t?b.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"16px 0",gap:8,color:"#888",fontSize:15},children:[b.jsx("span",{style:{display:"inline-block",width:18,height:18,border:"2px solid #ccc",borderTopColor:"#3b82f6",borderRadius:"50%",animation:"cr-translate-spin 0.8s linear infinite"}}),"번역 중...",b.jsx("style",{children:"@keyframes cr-translate-spin { to { transform: rotate(360deg); } }"})]}):o?b.jsx("div",{style:{padding:12,backgroundColor:"#eef7ff",borderRadius:8,fontSize:15,color:"#333",maxHeight:150,overflow:"auto",lineHeight:1.5},children:o}):b.jsx("p",{style:{margin:0,fontSize:16,color:"#666",textAlign:"center",padding:"16px 0"},children:"준비중입니다"})]})}):null,Bd=(e,t,n)=>Math.min(n,Math.max(t,e));function Pd({section:e,initialViewerState:t,initialProgressRunIndex:n,onViewerClose:r,onSectionNav:o,isCanPrev:s=!1,isCanNext:i=!1,onQuizStart:u,onQuizComplete:a,quizRetryAllowed:l,previousQuizResult:d,onViewerEvent:v,viewerRef:h,gazeSync:p,onRequestTranslate:y,isPlaybackMode:w=!1,playbackScale:c,isDev:g=!1}){const f=String((e==null?void 0:e.section_id)??"0"),C=m.useMemo(()=>{var R,I;const x=((R=e==null?void 0:e.ast)==null?void 0:R.blocks)??[];let S=0;for(const M of x)(M==null?void 0:M.type)!=="image"&&(S+=((I=M==null?void 0:M.runs)==null?void 0:I.length)??0);return S},[e]),T=m.useMemo(()=>typeof n=="number"?Bd(n,C>0?0:-1,Math.max(C-1,-1)):(C>0,0),[n,C]),k=m.useMemo(()=>({section:e,initialIndex:T,onViewerClose:r,onSectionNav:o,isCanPrev:s,isCanNext:i}),[e,T,r,o,s,i]),j=m.useMemo(()=>{const x=(e==null?void 0:e.audios)??[],S=x.length>0?ru(e):void 0;return{clips:x,map:S,initialIndex:T,section:e}},[e,T]);return b.jsx(Qs,{onViewerEvent:v,isPlaybackMode:w,playbackScale:c,viewerRef:h,children:b.jsx(cu,{initialState:{...t,isDev:g},children:b.jsx(au,{initialState:k,gazeSync:p,children:b.jsx(nu,{initialState:j,children:b.jsx(Id,{initialState:{section:e,onQuizStart:u,onQuizComplete:a,quizRetryAllowed:l,previousQuizResult:d},children:b.jsx(Ld,{onRequestTranslate:y})},f)},f)},f)})})}function Ld({onRequestTranslate:e}){const t=K(y=>y.mode),n=m.useRef(null),r=mt(),o=ut(),s=q(y=>y.translateOpen),i=q(y=>y.translateLoading),u=q(y=>y.translateText),a=q(y=>y.translatedText),l=m.useRef(null),d=m.useCallback(y=>{var T;const{rangeStartGI:w,rangeEndGI:c}=o.getState().progress,g=w??0,f=c??0;if(r.getState().emit({type:"translate_request",payload:{text:y,startGI:g,endGI:f}}),!e){o.getState().progress.setTranslateState({isOpen:!0,isLoading:!1,text:y,startGI:g,endGI:f});return}o.getState().progress.setTranslateState({isOpen:!0,isLoading:!0,text:y,startGI:g,endGI:f}),(T=l.current)==null||T.abort();const C=new AbortController;l.current=C,e(y,C.signal).then(k=>{if(!C.signal.aborted){if(k==null){o.getState().progress.clearTranslate();return}o.getState().progress.setTranslateState({isOpen:!0,isLoading:!1,text:y,translatedText:k,startGI:g,endGI:f}),r.getState().emit({type:"translate_loading_end",payload:{originalText:y,translatedText:k}})}}).catch(k=>{if(C.signal.aborted)return;const j=k instanceof Error?k.message:"번역 실패";o.getState().progress.setTranslateState({isOpen:!0,isLoading:!1,text:y,translatedText:`[오류] ${j}`,startGI:g,endGI:f})})},[r,o,e]),v=m.useCallback(()=>{var y;(y=l.current)==null||y.abort(),l.current=null,o.getState().progress.clearTranslate(),r.getState().emit({type:"translate_modal_close",payload:{}})},[r,o]),h=y=>{y.preventDefault()},p=y=>{y.preventDefault()};return b.jsxs("div",{ref:n,onContextMenu:h,onDragStart:p,style:{position:"relative",display:"flex",flexDirection:"column",height:"100%",width:"100%",WebkitTextSizeAdjust:"100%",textSizeAdjust:"100%",userSelect:"none",WebkitUserSelect:"none",WebkitTouchCallout:"none",touchAction:"none"},children:[t==="scroll"?b.jsx(va,{}):b.jsx(Pu,{}),b.jsx(Md,{containerRef:n,onTranslate:d}),b.jsx(Od,{containerRef:n}),b.jsx(Xc,{}),b.jsx(xd,{}),b.jsx(Fu,{}),b.jsx(zd,{}),b.jsx(Ad,{isOpen:s,isLoading:i,onClose:v,text:u,translatedText:a}),b.jsx(Td,{containerRef:n}),b.jsx(kd,{}),b.jsx(_d,{containerRef:n})]})}exports.CRViewer=Pd;
|