@readerseye2/cr_viewer 1.0.1 → 1.0.5
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/CR_Viewer.d.ts +38 -9
- package/dist/CR_Viewer.d.ts.map +1 -1
- package/dist/components/PageSectionWrap.d.ts.map +1 -1
- package/dist/components/PaginationRender.d.ts.map +1 -1
- package/dist/components/RangeContextMenu.d.ts +12 -0
- package/dist/components/RangeContextMenu.d.ts.map +1 -0
- package/dist/components/RangeHandles.d.ts +10 -0
- package/dist/components/RangeHandles.d.ts.map +1 -0
- package/dist/components/RenderRuns.d.ts.map +1 -1
- package/dist/components/SectionRendererVirtuoso.d.ts.map +1 -1
- package/dist/components/btns/MoveSectionBtns.d.ts +4 -4
- package/dist/components/btns/MoveSectionBtns.d.ts.map +1 -1
- package/dist/hooks/useSwipePageClicks.d.ts +5 -0
- package/dist/hooks/useSwipePageClicks.d.ts.map +1 -1
- package/dist/index.cjs +6 -5
- package/dist/index.js +4824 -4486
- package/dist/overlay-bars/OverlayLayer.d.ts.map +1 -1
- package/dist/overlay-bars/ViewerSettingsSheet.d.ts.map +1 -1
- package/dist/overlay-bars/bottomBar/OverlayBottomBar.d.ts.map +1 -1
- package/dist/overlay-bars/topBar/OverlayTopBar.d.ts.map +1 -1
- package/dist/playback/PlaybackViewport.d.ts.map +1 -1
- package/dist/stores/progress/crViewer_progress.store.d.ts +33 -9
- package/dist/stores/progress/crViewer_progress.store.d.ts.map +1 -1
- package/dist/stores/quizprogress/quiz_progress.provider.d.ts +3 -0
- package/dist/stores/quizprogress/quiz_progress.provider.d.ts.map +1 -1
- package/package.json +4 -4
- package/dist/index.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayLayer.d.ts","sourceRoot":"","sources":["../../src/overlay-bars/OverlayLayer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OverlayLayer.d.ts","sourceRoot":"","sources":["../../src/overlay-bars/OverlayLayer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,YAAY,oCAgCvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewerSettingsSheet.d.ts","sourceRoot":"","sources":["../../src/overlay-bars/ViewerSettingsSheet.tsx"],"names":[],"mappings":"AASA,KAAK,KAAK,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAElC,wBAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"ViewerSettingsSheet.d.ts","sourceRoot":"","sources":["../../src/overlay-bars/ViewerSettingsSheet.tsx"],"names":[],"mappings":"AASA,KAAK,KAAK,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAElC,wBAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,2CAyKrD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayBottomBar.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/bottomBar/OverlayBottomBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"OverlayBottomBar.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/bottomBar/OverlayBottomBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiC,MAAM,OAAO,CAAC;AA0BtD,iBAAS,oBAAoB,4CAiN5B;AAED,eAAO,MAAM,gBAAgB,wDAAmC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayTopBar.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/topBar/OverlayTopBar.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"OverlayTopBar.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/topBar/OverlayTopBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAM3C,iBAAS,iBAAiB,4CA2DzB;AAED,eAAO,MAAM,aAAa,qDAAgC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaybackViewport.d.ts","sourceRoot":"","sources":["../../src/playback/PlaybackViewport.tsx"],"names":[],"mappings":"AACA,OAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQ5C,KAAK,qBAAqB,GAAG;IAC3B,eAAe;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB;IAChB,eAAe,EAAE,YAAY,CAAC;IAC9B,aAAa;IACb,eAAe,EAAE,iBAAiB,CAAC;IACnC,aAAa;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,YAAY;IACZ,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,eAAe;IACf,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,oBAAoB;IACpB,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACzD,sBAAsB;IACtB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACjD,sBAAsB;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAEF,iBAAS,gBAAgB,CAAC,EACxB,WAAW,EACX,OAAO,EACP,eAAe,EACf,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,aAAa,GACd,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"PlaybackViewport.d.ts","sourceRoot":"","sources":["../../src/playback/PlaybackViewport.tsx"],"names":[],"mappings":"AACA,OAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQ5C,KAAK,qBAAqB,GAAG;IAC3B,eAAe;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB;IAChB,eAAe,EAAE,YAAY,CAAC;IAC9B,aAAa;IACb,eAAe,EAAE,iBAAiB,CAAC;IACnC,aAAa;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,YAAY;IACZ,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,eAAe;IACf,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,oBAAoB;IACpB,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACzD,sBAAsB;IACtB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACjD,sBAAsB;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAEF,iBAAS,gBAAgB,CAAC,EACxB,WAAW,EACX,OAAO,EACP,eAAe,EACf,eAAe,EACf,OAAO,EACP,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,aAAa,GACd,EAAE,qBAAqB,2CA6FvB;;AAED,wBAAsC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { StoreApi } from 'zustand/vanilla';
|
|
2
|
-
import { SectionData
|
|
2
|
+
import { SectionData } from '@readerseye2/cr_type';
|
|
3
3
|
import { ViewerRecorderStore } from '../recorder/viewerRecorder.store';
|
|
4
4
|
/** 진행 상태를 갱신한 주체 */
|
|
5
5
|
export type UpdateSource = 'program' | 'scroll' | 'audio' | 'scrubber-live' | 'scrubber-commit' | 'scrubber-step' | 'playback';
|
|
@@ -40,12 +40,14 @@ export type DerivedLayout = {
|
|
|
40
40
|
export type SectionProgress = {
|
|
41
41
|
/** 현재 섹션 전체 데이터 (AST 포함) */
|
|
42
42
|
section: SectionData;
|
|
43
|
-
/**
|
|
44
|
-
|
|
45
|
-
/** 섹션
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
|
|
43
|
+
/** 뷰어 닫기 요청 콜백 */
|
|
44
|
+
onViewerClose?: () => void;
|
|
45
|
+
/** 섹션 이동 요청 콜백 */
|
|
46
|
+
onSectionNav?: (dir: 'prev' | 'next') => void;
|
|
47
|
+
/** 이전 섹션 이동 가능 여부 */
|
|
48
|
+
isCanPrev: boolean;
|
|
49
|
+
/** 다음 섹션 이동 가능 여부 */
|
|
50
|
+
isCanNext: boolean;
|
|
49
51
|
/** 섹션 식별자 */
|
|
50
52
|
sectionId: string;
|
|
51
53
|
/** 현재 마크(전역 run 인덱스). 없으면 -1 */
|
|
@@ -54,6 +56,8 @@ export type SectionProgress = {
|
|
|
54
56
|
lastUpdateBy: UpdateSource;
|
|
55
57
|
/** 섹션 전체 전역 runs 수 */
|
|
56
58
|
totalRuns: number;
|
|
59
|
+
/** 페이지 모드 현재 페이지 인덱스 */
|
|
60
|
+
pageIndex: number;
|
|
57
61
|
/** 파생 레이아웃/네비 데이터 */
|
|
58
62
|
derivedNav?: DerivedNav;
|
|
59
63
|
layout?: DerivedLayout;
|
|
@@ -70,6 +74,20 @@ export type SectionProgress = {
|
|
|
70
74
|
setCurrentGlobalRunIndex: (globalIdx: number, by?: UpdateSource) => void;
|
|
71
75
|
/** 부팅 제어 */
|
|
72
76
|
setSectionLoading: (l: boolean) => void;
|
|
77
|
+
/** 페이지 인덱스 변경 */
|
|
78
|
+
setPageIndex: (idx: number) => void;
|
|
79
|
+
/** Range 시작 GI (null = range 없음) */
|
|
80
|
+
rangeStartGI: number | null;
|
|
81
|
+
/** Range 끝 GI */
|
|
82
|
+
rangeEndGI: number | null;
|
|
83
|
+
/** Range 설정 */
|
|
84
|
+
setRange: (startGI: number, endGI: number) => void;
|
|
85
|
+
/** Range 해제 */
|
|
86
|
+
clearRange: () => void;
|
|
87
|
+
/** Range 확장 (클릭한 GI 기준) */
|
|
88
|
+
extendRange: (gi: number) => void;
|
|
89
|
+
/** Range 내 텍스트 가져오기 */
|
|
90
|
+
getRangeText: () => string;
|
|
73
91
|
snapToReadable: (gi: number) => number;
|
|
74
92
|
nextReadableFrom: (gi: number, dir: -1 | 1) => number | null;
|
|
75
93
|
edgeReadable: (dir: -1 | 1) => number | null;
|
|
@@ -89,8 +107,14 @@ export type CRViewerProgressInitialState = {
|
|
|
89
107
|
section: SectionData;
|
|
90
108
|
/** 초기 GI. 명시 안 하면 totalRuns>0일 때 0, 아니면 -1 */
|
|
91
109
|
initialIndex?: number;
|
|
92
|
-
|
|
93
|
-
|
|
110
|
+
/** 뷰어 닫기 요청 콜백 */
|
|
111
|
+
onViewerClose?: () => void;
|
|
112
|
+
/** 섹션 이동 요청 콜백 */
|
|
113
|
+
onSectionNav?: (dir: 'prev' | 'next') => void;
|
|
114
|
+
/** 이전 섹션 이동 가능 여부 */
|
|
115
|
+
isCanPrev?: boolean;
|
|
116
|
+
/** 다음 섹션 이동 가능 여부 */
|
|
117
|
+
isCanNext?: boolean;
|
|
94
118
|
/** 뷰어 레코더 스토어 (이벤트 emit용) */
|
|
95
119
|
recorderStore?: ViewerRecorderStore;
|
|
96
120
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crViewer_progress.store.d.ts","sourceRoot":"","sources":["../../../src/stores/progress/crViewer_progress.store.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAO7D,OAAO,KAAK,EAAE,WAAW,EAAS,
|
|
1
|
+
{"version":3,"file":"crViewer_progress.store.d.ts","sourceRoot":"","sources":["../../../src/stores/progress/crViewer_progress.store.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAO7D,OAAO,KAAK,EAAE,WAAW,EAAS,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,oBAAoB;AACpB,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,QAAQ,GACR,OAAO,GACP,eAAe,GACf,iBAAiB,GACjB,eAAe,GACf,UAAU,CAAC;AAGf,MAAM,MAAM,gBAAgB,GAAG;IAC7B,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,eAAe,EAAE,MAAM;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9D,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,mCAAmC;IACnC,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,0CAA0C;IAC1C,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;CAClC,CAAC;AAGF,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,YAAY,EAAE,UAAU,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,mBAAmB,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,4BAA4B;IAC5B,OAAO,EAAE,WAAW,CAAC;IAGrB,kBAAkB;IAClB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,kBAAkB;IAClB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9C,qBAAqB;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,SAAS,EAAE,OAAO,CAAC;IAEnB,aAAa;IACb,SAAS,EAAE,MAAM,CAAC;IAElB,gCAAgC;IAChC,qBAAqB,EAAE,MAAM,CAAC;IAE9B,gBAAgB;IAChB,YAAY,EAAE,YAAY,CAAC;IAE3B,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;IAElB,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAElB,qBAAqB;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,aAAa,CAAC;IAEvB,eAAe;IACf,cAAc,EAAE,OAAO,CAAC;IAExB,mCAAmC;IACnC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,wBAAwB;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,wBAAwB,EAAE,CAAC,GAAG,EAAE,gBAAgB,GAAG,SAAS,KAAK,IAAI,CAAC;IACtE,mBAAmB,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC;IAExD,cAAc;IACd,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,wBAAwB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IAEzE,YAAY;IACZ,iBAAiB,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAExC,iBAAiB;IACjB,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAGpC,oCAAoC;IACpC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe;IACf,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,eAAe;IACf,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,2BAA2B;IAC3B,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,uBAAuB;IACvB,YAAY,EAAE,MAAM,MAAM,CAAC;IAG3B,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7D,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7C,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC;IACvD,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC;IACvD,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,qBAAqB;IACrB,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AAEpE,6CAA6C;AAC7C,MAAM,MAAM,4BAA4B,GAAG;IACzC,6CAA6C;IAC7C,OAAO,EAAE,WAAW,CAAC;IAErB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,kBAAkB;IAClB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,kBAAkB;IAClB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9C,qBAAqB;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC,CAAC;AA6JF,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,4BAA4B,GACjC,qBAAqB,CA6UvB"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { PropsWithChildren } from 'react';
|
|
2
2
|
import { SectionData } from '@readerseye2/cr_type';
|
|
3
|
+
import { QuizResult } from '../../CR_Viewer';
|
|
3
4
|
type Props = PropsWithChildren<{
|
|
4
5
|
/** 초기에 특정 섹션을 미리 적재하고 싶을 때 */
|
|
5
6
|
initialState: {
|
|
6
7
|
section: SectionData;
|
|
8
|
+
onQuizComplete?: (result: QuizResult) => void;
|
|
7
9
|
};
|
|
8
10
|
}>;
|
|
9
11
|
/**
|
|
@@ -11,6 +13,7 @@ type Props = PropsWithChildren<{
|
|
|
11
13
|
* - 최초 마운트 시 store 생성 (vanilla Zustand)
|
|
12
14
|
* - initialState.section이 바뀌면 해당 섹션 퀴즈 배열만 미리 적재
|
|
13
15
|
* - phase(doing/finished)는 유지
|
|
16
|
+
* - 퀴즈 완료 시 onQuizComplete 콜백 호출
|
|
14
17
|
*/
|
|
15
18
|
export default function QuizProgressProvider({ children, initialState }: Props): import("react/jsx-runtime").JSX.Element;
|
|
16
19
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quiz_progress.provider.d.ts","sourceRoot":"","sources":["../../../src/stores/quizprogress/quiz_progress.provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAA8B,MAAM,OAAO,CAAC;AAG3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"quiz_progress.provider.d.ts","sourceRoot":"","sources":["../../../src/stores/quizprogress/quiz_progress.provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAA8B,MAAM,OAAO,CAAC;AAG3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,KAAK,KAAK,GAAG,iBAAiB,CAAC;IAC7B,8BAA8B;IAC9B,YAAY,EAAE;QACZ,OAAO,EAAE,WAAW,CAAC;QACrB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;KAC/C,CAAC;CACH,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,KAAK,2CAqE7E"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@readerseye2/cr_viewer",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -10,8 +10,7 @@
|
|
|
10
10
|
"types": "./dist/index.d.ts",
|
|
11
11
|
"import": "./dist/index.js",
|
|
12
12
|
"require": "./dist/index.cjs"
|
|
13
|
-
}
|
|
14
|
-
"./style.css": "./dist/style.css"
|
|
13
|
+
}
|
|
15
14
|
},
|
|
16
15
|
"files": [
|
|
17
16
|
"dist"
|
|
@@ -28,7 +27,7 @@
|
|
|
28
27
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
29
28
|
},
|
|
30
29
|
"dependencies": {
|
|
31
|
-
"@readerseye2/cr_type": "^1.0.
|
|
30
|
+
"@readerseye2/cr_type": "^1.0.59",
|
|
32
31
|
"lodash": "^4.17.21",
|
|
33
32
|
"react-icons": "^5.0.0",
|
|
34
33
|
"react-virtuoso": "^4.0.0",
|
|
@@ -45,6 +44,7 @@
|
|
|
45
44
|
"sass": "^1.80.0",
|
|
46
45
|
"typescript": "^5.8.0",
|
|
47
46
|
"vite": "^6.0.0",
|
|
47
|
+
"vite-plugin-css-injected-by-js": "^3.5.2",
|
|
48
48
|
"vite-plugin-dts": "^4.0.0"
|
|
49
49
|
},
|
|
50
50
|
"repository": {
|
package/dist/index.css
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@charset "UTF-8";._run_zzb61_3{cursor:pointer}._runWrap_zzb61_7{position:relative;isolation:isolate;z-index:0}._highlight_zzb61_13:before,._highlightleft_zzb61_14:before,._highlightright_zzb61_15:before,._highlightcenter_zzb61_16:before{content:"";position:absolute;z-index:-1;top:-4px;bottom:-4px;background:var(--hl-color, pink);pointer-events:none}._highlight_zzb61_13:before{left:-4px;right:-4px}._highlightleft_zzb61_14:before{left:-4px;right:0}._highlightright_zzb61_15:before{left:0;right:-4px}._highlightcenter_zzb61_16:before{left:0;right:0}._underline_zzb61_48:after,._underlineleft_zzb61_49:after,._underlineright_zzb61_50:after,._underlinecenter_zzb61_51:after{content:"";position:absolute;left:0;right:0;height:var(--ul-thickness, .2em);bottom:calc(-1 * var(--ul-offset, .35em));background:var(--ul-color, red);pointer-events:none}._underline_zzb61_48:after{left:-4px;right:-4px}._underlineleft_zzb61_49:after{left:-4px;right:0}._underlineright_zzb61_50:after{left:0;right:0}._underlinecenter_zzb61_51:after{left:0;right:0}._scroller_kqkmq_3{height:100%;overflow-y:auto;overflow-x:hidden;outline:none;scrollbar-width:none;-ms-overflow-style:none}._scroller_kqkmq_3::-webkit-scrollbar{width:0;height:0;background:transparent;pointer-events:none}._scroller_kqkmq_3::-webkit-scrollbar-track{background:transparent;pointer-events:none}._scroller_kqkmq_3::-webkit-scrollbar-thumb{background:transparent;pointer-events:none}._scroller_kqkmq_3::-webkit-scrollbar-button,._scroller_kqkmq_3::-webkit-scrollbar-corner{display:none;pointer-events:none}@media(forced-colors:active){._scroller_kqkmq_3{scrollbar-width:auto}}._navBtn_rnisf_2{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;flex-direction:column;align-items:center;justify-content:center;width:52px;height:52px;border:none;border-radius:12px;background:none;color:#222;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s ease}._navBtn_rnisf_2:hover:not(:disabled){background:#0000000f}._navBtn_rnisf_2:active:not(:disabled){background:#0000001a}._navBtn_rnisf_2:disabled,._navBtn_rnisf_2._disabled_rnisf_25{opacity:.4;cursor:not-allowed;transform:none}._label_rnisf_31{margin-top:4px;font-size:.6rem;font-weight:500;width:52px}._navGroup_rnisf_39{display:flex;gap:8px}._wrap_1pn6r_2{position:absolute;left:0;right:0;bottom:0;height:auto;display:flex;flex-direction:column;justify-content:space-between;padding:12px 16px 20px;box-sizing:border-box;background:#fff;color:#333;transition:opacity .15s ease;opacity:0;pointer-events:none;border-top:1px solid #ddd}._visible_1pn6r_21{opacity:1;pointer-events:auto}._container_1pn6r_27{display:flex;align-items:center;gap:12px;flex-wrap:wrap;width:100%}._leftGroup_1pn6r_36,._rightGroup_1pn6r_37{display:flex;align-items:center;gap:5px}._leftGroup_1pn6r_36{flex:1 1 520px;min-width:200px;justify-content:flex-start}._leftGroup_1pn6r_36 ._leftleftGroup_1pn6r_51,._leftGroup_1pn6r_36 ._leftrightGroup_1pn6r_52{flex:1 1 0;display:flex;justify-content:center;min-width:160px}._rightGroup_1pn6r_37{flex:1 1 420px;min-width:220px;margin-left:auto;justify-content:center;align-items:center}._wrap_1pn6r_2>div:last-child{display:flex;align-items:center;justify-content:space-between;margin-top:8px}._btn_1pn6r_78{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;flex-direction:column;align-items:center;justify-content:center;width:52px;height:52px;border:none;border-radius:12px;background:#fff;color:#222;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s ease}._btn_1pn6r_78:hover{opacity:.7}._btnForbidden_1pn6r_100{opacity:.4;cursor:not-allowed;background:#f2f2f2!important;border-color:#aaa}._btnActive_1pn6r_107{background:#333;color:#fff}._label_1pn6r_112{margin-top:4px;font-size:.6rem;font-weight:500;width:52px}._group_1pn6r_119{display:inline-flex;align-items:center;gap:6px;background:#ffffff0f;border-radius:6px;padding:4px 8px}._label_1pn6r_112{min-width:50px;text-align:center;font-variant-numeric:tabular-nums}._scrubberWrap_jtztl_2{display:grid;gap:8px;-webkit-user-select:none;user-select:none}._labels_jtztl_8{display:flex;justify-content:space-between;font-size:12px;color:var(--text-subtle, #666)}._labels_jtztl_8 ._index_jtztl_14{font-variant-numeric:tabular-nums}._controls_jtztl_18{display:grid;grid-template-columns:1fr 40px;align-items:center;gap:8px}._controls_jtztl_18 ._percent_jtztl_24{display:flex;justify-content:flex-end;font-size:.8rem;font-variant-numeric:tabular-nums}._stepBtn_jtztl_31{height:28px;border:1px solid var(--line, #ddd);background:var(--bg, #fff);border-radius:8px;font-size:16px;line-height:1;cursor:pointer}._stepBtn_jtztl_31:disabled{opacity:.5;cursor:not-allowed}._range_jtztl_45{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:6px;border-radius:999px;background:linear-gradient(to right,currentColor var(--pct, 50%),#e5e7eb 0);outline:none}._range_jtztl_45::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:999px;background:currentColor;cursor:pointer}._range_jtztl_45::-moz-range-thumb{width:16px;height:16px;border-radius:999px;background:currentColor;border:none;cursor:pointer}._WPMSpeedButtonsWrap_pxoh4_1{float:right;display:flex;flex-direction:column;box-sizing:border-box}._WPMSpeedButtonsWrap_pxoh4_1 ._btnWrap_pxoh4_8{box-sizing:border-box;padding:10px;display:flex;gap:7px}._WPMSpeedButtonsWrap_pxoh4_1 ._btnWrap_pxoh4_8 ._label_pxoh4_14{font-size:.8rem;display:flex;flex-direction:column;justify-content:center;align-items:center}._WPMSpeedButtonsWrap_pxoh4_1 ._btnWrap_pxoh4_8 ._label_pxoh4_14 ._wpmString_pxoh4_21{font-size:.7rem}._WPMSpeedButtonsWrap_pxoh4_1 ._btnWrap_pxoh4_8 ._iconBtn_pxoh4_24:hover{background:#eee}._WPMSpeedButtonsWrap_pxoh4_1 ._btnWrap_pxoh4_8 ._iconBtn_pxoh4_24{padding:3px;border-radius:5px;border:1px solid #888;background:none;width:50px;height:50px}._WPMSpeedButtonsWrap_pxoh4_1 ._btnWrap_pxoh4_8 ._iconBtn_pxoh4_24 img{width:100%}._StepBtn_ua1nh_1{background:none;border:none;font-size:2rem;display:flex;justify-content:center;align-items:center;color:#000}._StepBtn_ua1nh_1:hover{color:#666;filter:brightness(.9);cursor:pointer}._GCPlayBtn_1p162_1{width:var(--btn-size);height:var(--btn-size);border:none;outline:none;position:relative;background-color:var(--btn-bg);transition:background-color .25s ease,transform .1s ease,filter .1s}._GCPlayBtn_1p162_1:hover{opacity:.7;cursor:pointer}._GCPlayBtn_1p162_1:focus{outline:none}._GCPlayBtn_1p162_1:before{content:"";position:absolute;top:calc(var(--btn-size) * .3);left:calc(var(--btn-size) * .34);height:0;border-style:solid;border-width:calc(var(--btn-size) * .2) 0 calc(var(--btn-size) * .2) calc(var(--btn-size) * .4);border-color:transparent transparent transparent var(--icon-color);transition:.2s ease}._GCPlayBtn_1p162_1._playing_1p162_28:before{top:calc(var(--btn-size) * .3);left:calc(var(--btn-size) * .32);width:calc(var(--btn-size) * .12);height:calc(var(--btn-size) * .4);border:none;background-color:var(--icon-color);box-shadow:calc(var(--btn-size) * .18) 0 0 0 var(--icon-color)}._topbar_143fz_2{position:absolute;left:0;right:0;top:0;height:48px;display:flex;align-items:center;gap:8px;padding:0 12px;background:#fff;color:#333;-webkit-backdrop-filter:saturate(120%) blur(6px);backdrop-filter:saturate(120%) blur(6px);transition:opacity .15s ease;opacity:0;pointer-events:none;border-bottom:1px solid #333;box-sizing:border-box}._visible_143fz_23{opacity:1;pointer-events:auto}._title_143fz_28{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}._host_143fz_38{position:absolute;left:0;right:0;top:0;z-index:30}._dropdownLayer_143fz_46{position:absolute;left:0;right:0;top:48px;z-index:40;pointer-events:auto}._selectorWrap_143fz_56{margin:0 auto;width:100%;max-height:min(50vh,420px);overflow:hidden;background:#fff;border:1px solid #e6e6e6;border-radius:0 0 12px 12px;box-shadow:0 8px 24px #00000014;animation:_dropdown-enter_143fz_1 .12s ease}@keyframes _dropdown-enter_143fz_1{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}._selectorInner_143fz_78{max-height:min(50vh,380px);overflow:auto;padding:6px}._selectorItem_143fz_84{width:100%;text-align:left;display:grid;grid-template-columns:56px 1fr auto;gap:8px;padding:10px 12px;border-radius:8px;border:1px solid transparent;background:transparent;cursor:pointer}._selectorItem_143fz_84:hover{background:#f7f7f9}._active_143fz_100{background:#eef3ff;border-color:#d7e3ff}._itemOrder_143fz_105{font-weight:600;color:#666}._itemTitle_143fz_110{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._itemBadge_143fz_116{font-size:12px;color:#3b82f6}._selectorEmpty_143fz_121{padding:12px;color:#777;text-align:center}._selectorFooter_143fz_127{padding:8px 12px;border-top:1px solid #f0f0f0;font-size:12px;color:#666}._wrap_rui1o_2{position:absolute;left:0;right:0;bottom:0;max-height:60%;pointer-events:auto;transition:transform .22s ease;background:#fff;color:#111;border-top:1px solid rgba(0,0,0,.08);box-shadow:0 -6px 24px #0000001f;padding:40px 0;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:10px;overflow:hidden}._wrapHidden_rui1o_24{transform:translateY(100%)}._wrapVisible_rui1o_28{transform:translateY(0)}._scrollArea_rui1o_32{flex:1;overflow:auto;display:flex;flex-direction:column;max-width:600px;min-width:260px;padding-left:20px;padding-right:20px;gap:10px;box-sizing:border-box}._row_rui1o_45{display:flex;align-items:center;gap:20px;min-height:45px}._label_rui1o_52{width:78px;flex:0 0 78px;font-weight:700}._btn_rui1o_58{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;border:1px solid rgba(0,0,0,.16);background:#fff;color:#111;border-radius:8px;padding:8px 10px;font-size:13px}._btnActive_rui1o_69{background:#00000014}._btnSmall_rui1o_73{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;border:1px solid rgba(0,0,0,.16);background:#fff;color:#111;border-radius:8px;padding:4px 8px;font-size:14px;line-height:1}._pill_rui1o_85{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;background:#fff;color:#111;border:1px solid rgba(0,0,0,.16);border-radius:999px;padding:8px 12px;font-size:13px}._themeCircle_rui1o_96{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;cursor:pointer;transition:all .2s ease;border:1px solid rgba(0,0,0,.15)}._themeCircleActive_rui1o_109{border:2px solid #007aff;box-shadow:0 0 0 2px #007aff40}._row_rui1o_45{flex-wrap:wrap}._stepRow_rui1o_118{display:flex;align-items:center;gap:8px;min-height:40px;flex-wrap:wrap}._stepLabel_rui1o_126{width:78px;flex:0 0 78px}._stepValue_rui1o_131{margin-left:auto;width:72px;text-align:right;font-variant-numeric:tabular-nums}._levelBox_rui1o_138{width:28px;text-align:center}._inlineFlex_rui1o_143{display:flex;align-items:center;gap:6px;flex-wrap:wrap}._wrapper_excbn_1{display:grid;place-items:center;position:absolute;top:0;right:0;bottom:0;left:0;z-index:10000;background:#fff}._spinner_excbn_10{border-radius:50%;border:3px solid #e5e7eb;border-top-color:#3b82f6;animation:_spin_excbn_10 linear infinite}@keyframes _spin_excbn_10{to{transform:rotate(360deg)}}._Overlay_ybic8_3{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background:#11182773;display:flex;align-items:center;justify-content:center;z-index:50}._Dialog_ybic8_15{width:min(760px,90%);max-height:80vh;overflow:auto;background:#fff;border-radius:16px;box-shadow:0 24px 48px #00000040;padding:20px}._Body_ybic8_25{margin-left:20px;margin-right:20px;display:block}._Header_ybic8_32{display:flex;align-items:center;gap:12px;margin-bottom:12px}._Paging_ybic8_39{font-weight:700;font-size:1rem;color:#333;display:flex;justify-content:center;width:100%}._Remaining_ybic8_48{margin-left:auto;font-weight:700;font-size:1rem;color:#fff}._RemainingDanger_ybic8_55{color:#dc2626}._NextBtn_ybic8_59{padding:10px 16px;border-radius:10px;border:none;background:#2563eb;color:#fff;font-size:1.2rem;font-weight:700;cursor:pointer;width:100%}@keyframes _nextbtn-blink_ybic8_1{0%,49%{transform:none;box-shadow:0 0 #dc262600;outline:0 solid rgba(220,38,38,0);filter:none}50%,to{box-shadow:0 0 0 2px #dc262659,0 6px 14px #dc262640;outline:2px solid rgba(220,38,38,.45)}}._NextBtn_ybic8_59:has(._RemainingDanger_ybic8_55){animation:_nextbtn-blink_ybic8_1 1s steps(2,start) infinite}._NextBtn_ybic8_59:has(._RemainingDanger_ybic8_55):hover,._NextBtn_ybic8_59:has(._RemainingDanger_ybic8_55):focus-visible{animation-play-state:running}._CloseBtn_ybic8_96{margin-left:8px;border:none;background:transparent;color:#6b7280;cursor:pointer;font-size:14px}._Title_ybic8_106{font-weight:700;font-size:18px;margin-bottom:8px;color:#111827}._Question_ybic8_113{font-size:1.2rem;color:#111827;font-weight:700;display:flex;justify-content:center;align-items:center}._Score_ybic8_123{display:flex;justify-content:center;align-items:center;margin-bottom:16px}._Image_ybic8_130{width:100%;display:flex;justify-content:center}._Image_ybic8_130 img{width:80%}._Options_ybic8_140{display:grid;gap:8px}._OptionBtn_ybic8_145{text-align:left;padding:12px 14px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;color:#111827;cursor:pointer;font-size:1rem;transition:box-shadow .15s ease,border-color .15s ease,background .15s ease;display:flex;justify-content:center;align-items:center}._OptionBtn_ybic8_145:hover{border-color:#cbd5e1;background:#f9fafb}._OptionBtnActive_ybic8_165{border-color:#2563eb;background:#2563eb14;box-shadow:0 4px 10px #2563eb33}._Footer_ybic8_172{display:flex;justify-content:space-between;margin-top:16px;gap:8px}._PrevBtn_ybic8_179{flex:0 0 auto;padding:10px 14px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;color:#111827;cursor:pointer}._PrevBtn_ybic8_179:disabled{cursor:not-allowed;opacity:.6}._OptionBtnCorrect_ybic8_195{border-color:#16a34a!important;box-shadow:0 4px 10px #16a34a33}._Judge_ybic8_201{margin:6px 0 10px;font-weight:700;font-size:1.5rem;padding:4px;width:100%;border-radius:10px;display:flex;justify-content:center;color:#fff}._Judge_ybic8_201._Correct_ybic8_212{background:#16a34a}._Judge_ybic8_201._Incorrect_ybic8_215{background:#dc2626}._ResultHeader_ybic8_220{font-weight:800;font-size:20px;margin-bottom:8px;color:#111827}._ResultText_ybic8_227{font-size:16px;margin-bottom:12px;color:#111827}._ResultActions_ybic8_233{display:flex;justify-content:flex-end;gap:8px}._CloseBtnSoft_ybic8_239{padding:10px 16px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;color:#111827;cursor:pointer}._SummaryGrid_ybic8_249{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px;margin:12px 0 16px}._StatCard_ybic8_257{border:1px solid #e5e7eb;border-radius:12px;padding:12px 14px;background:#fff;box-shadow:0 2px 6px #1118270f}._StatLabel_ybic8_265{font-size:12px;color:#6b7280}._StatValue_ybic8_270{font-size:22px;font-weight:800;margin-top:4px;color:#111827}._StatSub_ybic8_277{font-size:12px;color:#6b7280}._SplitGrid_ybic8_282{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:8px 0 12px}._SplitBox_ybic8_289{border:1px dashed #e5e7eb;border-radius:10px;padding:10px 12px}._SplitTitle_ybic8_295{font-size:12px;color:#6b7280}._SplitText_ybic8_300{font-size:16px;font-weight:700;color:#111827;margin-top:2px}._Pairs_ybic8_307{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:8px 0 12px}._PairItem_ybic8_314{border:1px solid #f3f4f6;border-radius:10px;padding:10px 12px;background:#fafafa}._PairLabel_ybic8_321{font-size:12px;color:#6b7280}._PairValue_ybic8_326{font-size:15px;font-weight:700;margin-top:2px;color:#111827}._WrongBox_ybic8_333{margin-top:8px;border-top:1px solid #e5e7eb;padding-top:10px}._WrongTitle_ybic8_339{font-weight:700;font-size:14px;color:#111827;margin-bottom:6px}._WrongList_ybic8_346{list-style:none;padding:0;margin:0}._WrongList_ybic8_346 li{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px dashed #f3f4f6}._Badge_ybic8_360{display:inline-block;font-size:12px;padding:2px 6px;border-radius:999px;background:#eef2ff;color:#3730a3;font-weight:700}._WrongName_ybic8_370{flex:1;color:#111827;font-size:14px}._WrongTime_ybic8_376{font-size:12px;color:#6b7280}._Empty_ybic8_381{color:#6b7280;font-size:13px}._Hint_ybic8_387{margin-top:8px;font-size:12px;color:#6b7280}._button_onals_1{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;border:1px solid #d1d5db;background:#fff;color:#000;cursor:pointer;transition:background .15s ease}._button_onals_1:hover:not(:disabled){background:#f3f4f6}._button_onals_1:disabled{opacity:.5;cursor:not-allowed}._button_onals_1 svg{width:16px;height:16px}._container_18q02_1{padding:8px 12px;border-bottom:1px solid #e5e7eb;display:flex;flex-direction:column;gap:8px;background:#f9fafb;flex-shrink:0}._topRow_18q02_11{display:flex;align-items:center;gap:8px}._timeDisplay_18q02_17{margin-left:auto;font-size:12px;color:#6b7280}._bottomRow_18q02_23{display:flex;align-items:center;gap:8px}._sliderContainer_18q02_29{flex:1;position:relative;height:20px}._trackBackground_18q02_35{position:absolute;top:50%;left:0;right:0;height:4px;transform:translateY(-50%);background:#d1d5db;border-radius:2px;overflow:hidden}._trackFill_18q02_47{position:absolute;left:0;height:100%;background:#ef4444}._rangeInput_18q02_54{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;cursor:pointer;background:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}._rangeInput--disabled_18q02_66{cursor:not-allowed}._rangeInput_18q02_54::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;background:#ef4444;border-radius:50%;cursor:pointer;border:2px solid #fff;box-shadow:0 1px 3px #0000004d}._rangeInput_18q02_54::-moz-range-thumb{width:14px;height:14px;background:#ef4444;border-radius:50%;cursor:pointer;border:2px solid #fff;box-shadow:0 1px 3px #0000004d}._viewportInfo_18q02_89{font-size:11px;color:#9ca3af}._outerContainer_77t1u_1{flex:1;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#1f2937;position:relative}._scaleWrapper_77t1u_11{transform-origin:center center}._viewerContainer_77t1u_15{box-shadow:0 4px 24px #0000004d;border-radius:4px;overflow:hidden;position:relative}._eventBlocker_77t1u_22{position:absolute;top:0;left:0;background:transparent}._emptyMessage_77t1u_29{padding:20px;color:#9ca3af}._bufferingOverlay_77t1u_34{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#00000080;z-index:10}._spinner_77t1u_44{width:48px;height:48px;border:4px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:_spin_77t1u_44 1s linear infinite}@keyframes _spin_77t1u_44{to{transform:rotate(360deg)}}._container_1dh6p_1{width:100%;height:100%;position:relative;display:flex;flex-direction:column}
|