@readerseye2/cr_viewer 1.0.11 → 1.0.13

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.
Files changed (96) hide show
  1. package/dist/CR_Viewer.d.ts +5 -3
  2. package/dist/CR_Viewer.d.ts.map +1 -1
  3. package/dist/components/PageSectionWrap.d.ts.map +1 -1
  4. package/dist/components/PaginationRender.d.ts.map +1 -1
  5. package/dist/components/RangeContextMenu.d.ts.map +1 -1
  6. package/dist/components/RenderRuns.d.ts.map +1 -1
  7. package/dist/components/ScrollSectionWrap.d.ts.map +1 -1
  8. package/dist/components/SectionRendererVirtuoso.d.ts.map +1 -1
  9. package/dist/components/btns/MoveSectionBtns.d.ts.map +1 -1
  10. package/dist/components/btns/SolveQuizBtn.d.ts.map +1 -1
  11. package/dist/components/quiz/QuizRenderer.d.ts.map +1 -1
  12. package/dist/hooks/useDebounce.d.ts +3 -2
  13. package/dist/hooks/useDebounce.d.ts.map +1 -1
  14. package/dist/hooks/useSwipePageClicks.d.ts +2 -0
  15. package/dist/hooks/useSwipePageClicks.d.ts.map +1 -1
  16. package/dist/index.cjs +6 -6
  17. package/dist/index.d.ts +1 -7
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +4375 -4777
  20. package/dist/overlay-bars/ViewerSettingsSheet.d.ts.map +1 -1
  21. package/dist/overlay-bars/bottomBar/AudioControlsMini.d.ts.map +1 -1
  22. package/dist/overlay-bars/bottomBar/FakeAudioControlsMini.d.ts +1 -2
  23. package/dist/overlay-bars/bottomBar/FakeAudioControlsMini.d.ts.map +1 -1
  24. package/dist/overlay-bars/bottomBar/OverlayBottomBar.d.ts.map +1 -1
  25. package/dist/overlay-bars/bottomBar/ProgressScrubber.d.ts.map +1 -1
  26. package/dist/overlay-bars/bottomBar/SpeedButtons.d.ts +2 -0
  27. package/dist/overlay-bars/bottomBar/SpeedButtons.d.ts.map +1 -0
  28. package/dist/overlay-bars/bottomBar/StepBtn.d.ts.map +1 -1
  29. package/dist/overlay-bars/topBar/OverlayTopBar.d.ts.map +1 -1
  30. package/dist/recording/DirectPlaybackController.d.ts +14 -0
  31. package/dist/recording/DirectPlaybackController.d.ts.map +1 -0
  32. package/dist/recording/RecordingEmitters.d.ts +14 -0
  33. package/dist/recording/RecordingEmitters.d.ts.map +1 -0
  34. package/dist/stores/audio/crViewer_audio.store.d.ts +2 -2
  35. package/dist/stores/audio/crViewer_audio.store.d.ts.map +1 -1
  36. package/dist/stores/eventBridge/viewerEventBridge.context.d.ts +13 -0
  37. package/dist/stores/eventBridge/viewerEventBridge.context.d.ts.map +1 -0
  38. package/dist/stores/eventBridge/viewerEventBridge.hooks.d.ts +19 -0
  39. package/dist/stores/eventBridge/viewerEventBridge.hooks.d.ts.map +1 -0
  40. package/dist/stores/{recorder/viewerRecorder.provider.d.ts → eventBridge/viewerEventBridge.provider.d.ts} +6 -4
  41. package/dist/stores/eventBridge/viewerEventBridge.provider.d.ts.map +1 -0
  42. package/dist/stores/{recorder/viewerRecorder.store.d.ts → eventBridge/viewerEventBridge.store.d.ts} +5 -5
  43. package/dist/stores/eventBridge/viewerEventBridge.store.d.ts.map +1 -0
  44. package/dist/stores/progress/crViewer_progress.store.d.ts +2 -2
  45. package/dist/stores/progress/crViewer_progress.store.d.ts.map +1 -1
  46. package/dist/stores/quizprogress/quiz_progress.store.d.ts.map +1 -1
  47. package/dist/stores/viewer/CRViewer.provider.d.ts +2 -2
  48. package/dist/stores/viewer/CRViewer.provider.d.ts.map +1 -1
  49. package/dist/stores/viewer/crViewer.hooks.d.ts +3 -3
  50. package/dist/stores/viewer/crViewer.hooks.d.ts.map +1 -1
  51. package/dist/stores/viewer/crViewer.store.d.ts +15 -21
  52. package/dist/stores/viewer/crViewer.store.d.ts.map +1 -1
  53. package/dist/types/viewerEvent.types.d.ts +1 -148
  54. package/dist/types/viewerEvent.types.d.ts.map +1 -1
  55. package/dist/utils/calcPage.util.d.ts.map +1 -1
  56. package/package.json +69 -59
  57. package/dist/overlay-bars/bottomBar/WPMSpeedButtons.d.ts +0 -2
  58. package/dist/overlay-bars/bottomBar/WPMSpeedButtons.d.ts.map +0 -1
  59. package/dist/playback/CR_ViewerPlayback.d.ts +0 -27
  60. package/dist/playback/CR_ViewerPlayback.d.ts.map +0 -1
  61. package/dist/playback/PlaybackBar.d.ts +0 -28
  62. package/dist/playback/PlaybackBar.d.ts.map +0 -1
  63. package/dist/playback/PlaybackToggleButton.d.ts +0 -10
  64. package/dist/playback/PlaybackToggleButton.d.ts.map +0 -1
  65. package/dist/playback/PlaybackViewport.d.ts +0 -30
  66. package/dist/playback/PlaybackViewport.d.ts.map +0 -1
  67. package/dist/playback/index.d.ts +0 -5
  68. package/dist/playback/index.d.ts.map +0 -1
  69. package/dist/playback/types.d.ts +0 -20
  70. package/dist/playback/types.d.ts.map +0 -1
  71. package/dist/recording/PlaybackHandler.d.ts +0 -6
  72. package/dist/recording/PlaybackHandler.d.ts.map +0 -1
  73. package/dist/recording/SettingsChangeEmitter.d.ts +0 -3
  74. package/dist/recording/SettingsChangeEmitter.d.ts.map +0 -1
  75. package/dist/recording/SnapshotRegistrar.d.ts +0 -7
  76. package/dist/recording/SnapshotRegistrar.d.ts.map +0 -1
  77. package/dist/recording/ViewportResizeEmitter.d.ts +0 -7
  78. package/dist/recording/ViewportResizeEmitter.d.ts.map +0 -1
  79. package/dist/stores/player/index.d.ts +0 -5
  80. package/dist/stores/player/index.d.ts.map +0 -1
  81. package/dist/stores/player/viewerPlayer.context.d.ts +0 -7
  82. package/dist/stores/player/viewerPlayer.context.d.ts.map +0 -1
  83. package/dist/stores/player/viewerPlayer.hooks.d.ts +0 -13
  84. package/dist/stores/player/viewerPlayer.hooks.d.ts.map +0 -1
  85. package/dist/stores/player/viewerPlayer.provider.d.ts +0 -18
  86. package/dist/stores/player/viewerPlayer.provider.d.ts.map +0 -1
  87. package/dist/stores/player/viewerPlayer.store.d.ts +0 -52
  88. package/dist/stores/player/viewerPlayer.store.d.ts.map +0 -1
  89. package/dist/stores/recorder/viewerRecorder.context.d.ts +0 -7
  90. package/dist/stores/recorder/viewerRecorder.context.d.ts.map +0 -1
  91. package/dist/stores/recorder/viewerRecorder.hooks.d.ts +0 -13
  92. package/dist/stores/recorder/viewerRecorder.hooks.d.ts.map +0 -1
  93. package/dist/stores/recorder/viewerRecorder.provider.d.ts.map +0 -1
  94. package/dist/stores/recorder/viewerRecorder.store.d.ts.map +0 -1
  95. package/dist/stores/test/tempRecordingStore.d.ts +0 -13
  96. package/dist/stores/test/tempRecordingStore.d.ts.map +0 -1
@@ -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,2CAyKrD"}
1
+ {"version":3,"file":"ViewerSettingsSheet.d.ts","sourceRoot":"","sources":["../../src/overlay-bars/ViewerSettingsSheet.tsx"],"names":[],"mappings":"AAMA,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":"AudioControlsMini.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/bottomBar/AudioControlsMini.tsx"],"names":[],"mappings":"AAsRA,wBAAgB,iBAAiB,4CAEhC"}
1
+ {"version":3,"file":"AudioControlsMini.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/bottomBar/AudioControlsMini.tsx"],"names":[],"mappings":"AAmRA,wBAAgB,iBAAiB,4CAEhC"}
@@ -1,3 +1,2 @@
1
- import { default as React } from 'react';
2
- export declare const FakeAudioControlsMini: React.NamedExoticComponent<object>;
1
+ export declare const FakeAudioControlsMini: import('react').NamedExoticComponent<object>;
3
2
  //# sourceMappingURL=FakeAudioControlsMini.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FakeAudioControlsMini.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/bottomBar/FakeAudioControlsMini.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoE,MAAM,OAAO,CAAC;AAiMzF,eAAO,MAAM,qBAAqB,oCAEhC,CAAC"}
1
+ {"version":3,"file":"FakeAudioControlsMini.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/bottomBar/FakeAudioControlsMini.tsx"],"names":[],"mappings":"AA4LA,eAAO,MAAM,qBAAqB,8CAEhC,CAAC"}
@@ -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;AA0BtD,iBAAS,oBAAoB,4CAiN5B;AAED,eAAO,MAAM,gBAAgB,wDAAmC,CAAC"}
1
+ {"version":3,"file":"OverlayBottomBar.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/bottomBar/OverlayBottomBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiC,MAAM,OAAO,CAAC;AA4BtD,iBAAS,oBAAoB,4CAsO5B;AAED,eAAO,MAAM,gBAAgB,wDAAmC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressScrubber.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/bottomBar/ProgressScrubber.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAOjF,iBAAS,gBAAgB,4CAsGxB;;AAED,wBAA4C"}
1
+ {"version":3,"file":"ProgressScrubber.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/bottomBar/ProgressScrubber.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAQjF,iBAAS,gBAAgB,4CA2GxB;;AAED,wBAA4C"}
@@ -0,0 +1,2 @@
1
+ export declare const SpeedButtons: import('react').NamedExoticComponent<object>;
2
+ //# sourceMappingURL=SpeedButtons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpeedButtons.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/bottomBar/SpeedButtons.tsx"],"names":[],"mappings":"AAUA,eAAO,MAAM,YAAY,8CA+GvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"StepBtn.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/bottomBar/StepBtn.tsx"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AAED,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY,2CAkDlD"}
1
+ {"version":3,"file":"StepBtn.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/bottomBar/StepBtn.tsx"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AAED,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY,2CA0DlD"}
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayTopBar.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/topBar/OverlayTopBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAO3C,iBAAS,iBAAiB,4CAgDzB;AAED,eAAO,MAAM,aAAa,qDAAgC,CAAC"}
1
+ {"version":3,"file":"OverlayTopBar.d.ts","sourceRoot":"","sources":["../../../src/overlay-bars/topBar/OverlayTopBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAO3C,iBAAS,iBAAiB,4CA4CzB;AAED,eAAO,MAAM,aAAa,qDAAgC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * DirectPlaybackController
3
+ *
4
+ * 외부에서 직접 뷰어 상태를 제어할 수 있도록 viewerRef.current에 직접 store 조작 API를 제공합니다.
5
+ * 기존 PlaybackHandler의 핸들러 등록 방식과 달리, viewerRef.current.dispatch가 직접 store를 조작합니다.
6
+ *
7
+ * 이 컴포넌트는 모든 Provider 내부에 위치해야 합니다:
8
+ * - ViewerRecorderProvider
9
+ * - InternalCRViewerProvider
10
+ * - InternalCRViewerProgressProvider
11
+ * - CRAudioProvider
12
+ */
13
+ export declare function DirectPlaybackController(): null;
14
+ //# sourceMappingURL=DirectPlaybackController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectPlaybackController.d.ts","sourceRoot":"","sources":["../../src/recording/DirectPlaybackController.tsx"],"names":[],"mappings":"AAUA;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,SAqOvC"}
@@ -0,0 +1,14 @@
1
+ type Props = {
2
+ containerRef: React.RefObject<HTMLDivElement | null>;
3
+ };
4
+ /**
5
+ * RecordingEmitters - 녹화 관련 이벤트 통합 컴포넌트
6
+ *
7
+ * 1. ViewportResize: 뷰포트 크기 변경 감지 및 emit
8
+ * 2. SettingsChange: 설정 변경 감지 및 emit
9
+ *
10
+ * 렌더링 없음 (null 반환)
11
+ */
12
+ export declare function RecordingEmitters({ containerRef }: Props): null;
13
+ export {};
14
+ //# sourceMappingURL=RecordingEmitters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordingEmitters.d.ts","sourceRoot":"","sources":["../../src/recording/RecordingEmitters.tsx"],"names":[],"mappings":"AAQA,KAAK,KAAK,GAAG;IACX,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CACtD,CAAC;AAwBF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,YAAY,EAAE,EAAE,KAAK,QAoFxD"}
@@ -1,6 +1,6 @@
1
1
  import { SectionAudio, SectionData } from '@readerseye2/cr_type';
2
2
  import { AudioTextMap } from '../../utils/buildAudioTextMap';
3
- import { ViewerRecorderStore } from '../recorder/viewerRecorder.store';
3
+ import { ViewerEventBridgeStore } from '../eventBridge/viewerEventBridge.store';
4
4
  export type AudioStatus = 'idle' | 'loading' | 'playing' | 'paused' | 'ended' | 'error';
5
5
  export type PlaybackKind = 'real' | 'fake';
6
6
  export type CRAudioState = {
@@ -48,7 +48,7 @@ type CRAudioInit = {
48
48
  initialIndex?: number;
49
49
  section: SectionData;
50
50
  /** 뷰어 레코더 스토어 (이벤트 emit용) */
51
- recorderStore?: ViewerRecorderStore;
51
+ recorderStore?: ViewerEventBridgeStore;
52
52
  };
53
53
  /** init 동기 초기화 지원 */
54
54
  export declare function createCRAudioStore(init?: CRAudioInit): Omit<import('zustand').StoreApi<CRAudioState>, "subscribe"> & {
@@ -1 +1 @@
1
- {"version":3,"file":"crViewer_audio.store.d.ts","sourceRoot":"","sources":["../../../src/stores/audio/crViewer_audio.store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crViewer_audio.store.d.ts","sourceRoot":"","sources":["../../../src/stores/audio/crViewer_audio.store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { ViewerEventBridgeStore } from './viewerEventBridge.store';
2
+ import { CRViewerHandle } from './viewerEventBridge.provider';
3
+ /**
4
+ * ViewerEventBridge 전용 컨텍스트.
5
+ * 값은 zustand의 StoreApi 인스턴스입니다.
6
+ */
7
+ export declare const ViewerEventBridgeContext: import('react').Context<ViewerEventBridgeStore | undefined>;
8
+ /**
9
+ * ViewerRef 전용 컨텍스트.
10
+ * 외부 제어용 ref를 내부 컴포넌트에서 접근할 수 있도록 합니다.
11
+ */
12
+ export declare const ViewerRefContext: import('react').Context<import('react').MutableRefObject<CRViewerHandle | null> | undefined>;
13
+ //# sourceMappingURL=viewerEventBridge.context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewerEventBridge.context.d.ts","sourceRoot":"","sources":["../../../src/stores/eventBridge/viewerEventBridge.context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,6DAEpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,8FAEjB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { StoreApi } from 'zustand';
2
+ import { ViewerEventBridgeState, ViewerEventBridgeActions } from './viewerEventBridge.store';
3
+ import { CRViewerHandle } from './viewerEventBridge.provider';
4
+ /**
5
+ * 구독 기반 selector 훅.
6
+ * 상태 변화에 반응해야 할 컴포넌트에서 사용하세요.
7
+ */
8
+ export declare function useViewerEventBridgeStore<T>(selector: (s: ViewerEventBridgeState & ViewerEventBridgeActions) => T, equalityFn?: (a: T, b: T) => boolean): T;
9
+ /**
10
+ * 구독 없는 store API 훅.
11
+ * 이벤트 시점에 상태를 읽거나 변경할 때 사용.
12
+ */
13
+ export declare function useViewerEventBridgeStoreApi(): StoreApi<ViewerEventBridgeState & ViewerEventBridgeActions>;
14
+ /**
15
+ * ViewerRef context 접근 훅.
16
+ * 내부 컴포넌트에서 viewerRef에 접근할 때 사용.
17
+ */
18
+ export declare function useViewerRef(): React.MutableRefObject<CRViewerHandle | null> | undefined;
19
+ //# sourceMappingURL=viewerEventBridge.hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewerEventBridge.hooks.d.ts","sourceRoot":"","sources":["../../../src/stores/eventBridge/viewerEventBridge.hooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,KAAK,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EACzC,QAAQ,EAAE,CAAC,CAAC,EAAE,sBAAsB,GAAG,wBAAwB,KAAK,CAAC,EACrE,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,GACnC,CAAC,CAMH;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,IAAI,QAAQ,CACtD,sBAAsB,GAAG,wBAAwB,CAClD,CAMA;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,SAAS,CAExF"}
@@ -3,8 +3,10 @@ import { ViewerEventCallback, StoredEvent, RecordingSnapshot } from '../../types
3
3
  export type CRViewerHandle = {
4
4
  dispatch: (event: StoredEvent) => void;
5
5
  applySnapshot: (snapshot: RecordingSnapshot) => void;
6
+ /** 현재 뷰어 상태 스냅샷 반환 (청크 시작 시 사용) */
7
+ getSnapshot: () => RecordingSnapshot;
6
8
  };
7
- type ViewerRecorderProviderProps = {
9
+ type ViewerEventBridgeProviderProps = {
8
10
  children: React.ReactNode;
9
11
  /** 뷰어 이벤트 콜백 (외부에서 이벤트 수집) */
10
12
  onViewerEvent?: ViewerEventCallback;
@@ -16,9 +18,9 @@ type ViewerRecorderProviderProps = {
16
18
  viewerRef?: React.MutableRefObject<CRViewerHandle | null>;
17
19
  };
18
20
  /**
19
- * Provider: 뷰어 인스턴스별로 독립적인 recorder store를 생성해 제공합니다.
21
+ * Provider: 뷰어 인스턴스별로 독립적인 eventBridge store를 생성해 제공합니다.
20
22
  * CR_Viewer의 가장 바깥쪽에 위치해야 합니다.
21
23
  */
22
- export declare function ViewerRecorderProvider({ children, onViewerEvent, isPlaybackMode, playbackScale, viewerRef, }: ViewerRecorderProviderProps): import("react/jsx-runtime").JSX.Element;
24
+ export declare function ViewerEventBridgeProvider({ children, onViewerEvent, isPlaybackMode, playbackScale, viewerRef, }: ViewerEventBridgeProviderProps): import("react/jsx-runtime").JSX.Element;
23
25
  export {};
24
- //# sourceMappingURL=viewerRecorder.provider.d.ts.map
26
+ //# sourceMappingURL=viewerEventBridge.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewerEventBridge.provider.d.ts","sourceRoot":"","sources":["../../../src/stores/eventBridge/viewerEventBridge.provider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAEvC,0BAA0B;AAC1B,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,aAAa,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,mCAAmC;IACnC,WAAW,EAAE,MAAM,iBAAiB,CAAC;CACtC,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,8BAA8B;IAC9B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,eAAe;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB;IACjB,SAAS,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CAC3D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,QAAQ,EACR,aAAa,EACb,cAAsB,EACtB,aAAiB,EACjB,SAAS,GACV,EAAE,8BAA8B,2CAqChC"}
@@ -14,7 +14,7 @@ type EmitParams<T extends ViewerEventType> = Extract<ViewerEvent, {
14
14
  export type DispatchHandler = (event: StoredEvent) => void;
15
15
  /** applySnapshot 핸들러 타입 (PlaybackHandler에서 등록) */
16
16
  export type ApplySnapshotHandler = (snapshot: RecordingSnapshot) => void;
17
- export type ViewerRecorderState = {
17
+ export type ViewerEventBridgeState = {
18
18
  /** 외부에서 등록한 이벤트 콜백 */
19
19
  emitCallback: ViewerEventCallback | null;
20
20
  /** 재생 모드 여부 */
@@ -26,7 +26,7 @@ export type ViewerRecorderState = {
26
26
  /** applySnapshot 핸들러 (PlaybackHandler에서 등록) */
27
27
  applySnapshotHandler: ApplySnapshotHandler | null;
28
28
  };
29
- export type ViewerRecorderActions = {
29
+ export type ViewerEventBridgeActions = {
30
30
  /** 콜백 등록 (외부에서 호출) */
31
31
  setEmitCallback: (cb: ViewerEventCallback | null) => void;
32
32
  /** 이벤트 발생 (내부 컴포넌트에서 호출) - timestamp 직접 전달 가능 */
@@ -44,7 +44,7 @@ export type ViewerRecorderActions = {
44
44
  /** 스냅샷 적용 (재생 시작 시 초기 상태 복원) */
45
45
  applySnapshot: (snapshot: RecordingSnapshot) => void;
46
46
  };
47
- export type ViewerRecorderStore = StoreApi<ViewerRecorderState & ViewerRecorderActions>;
48
- export declare function createViewerRecorderStore(): ViewerRecorderStore;
47
+ export type ViewerEventBridgeStore = StoreApi<ViewerEventBridgeState & ViewerEventBridgeActions>;
48
+ export declare function createViewerEventBridgeStore(): ViewerEventBridgeStore;
49
49
  export {};
50
- //# sourceMappingURL=viewerRecorder.store.d.ts.map
50
+ //# sourceMappingURL=viewerEventBridge.store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewerEventBridge.store.d.ts","sourceRoot":"","sources":["../../../src/stores/eventBridge/viewerEventBridge.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAEvC,KAAK,UAAU,CAAC,CAAC,SAAS,eAAe,IACvC,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,CAAC,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC;AAElB,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;AAE3D,kDAAkD;AAClD,MAAM,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAEzE,MAAM,MAAM,sBAAsB,GAAG;IACnC,sBAAsB;IACtB,YAAY,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACzC,eAAe;IACf,cAAc,EAAE,OAAO,CAAC;IACxB,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,+CAA+C;IAC/C,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACnD,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,sBAAsB;IACtB,eAAe,EAAE,CAAC,EAAE,EAAE,mBAAmB,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1D,iDAAiD;IACjD,IAAI,EAAE,CAAC,CAAC,SAAS,eAAe,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACrF,eAAe;IACf,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,qBAAqB;IACrB,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,6CAA6C;IAC7C,kBAAkB,EAAE,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9D,sCAAsC;IACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACvC,kDAAkD;IAClD,uBAAuB,EAAE,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,KAAK,IAAI,CAAC;IACxE,gCAAgC;IAChC,aAAa,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC,sBAAsB,GAAG,wBAAwB,CAAC,CAAC;AAEjG,wBAAgB,4BAA4B,IAAI,sBAAsB,CA0DrE"}
@@ -1,6 +1,6 @@
1
1
  import { StoreApi } from 'zustand/vanilla';
2
2
  import { SectionData } from '@readerseye2/cr_type';
3
- import { ViewerRecorderStore } from '../recorder/viewerRecorder.store';
3
+ import { ViewerEventBridgeStore } from '../eventBridge/viewerEventBridge.store';
4
4
  /** 진행 상태를 갱신한 주체 */
5
5
  export type UpdateSource = 'program' | 'scroll' | 'audio' | 'scrubber-live' | 'scrubber-commit' | 'scrubber-step' | 'playback';
6
6
  export type SectionScrollApi = {
@@ -116,7 +116,7 @@ export type CRViewerProgressInitialState = {
116
116
  /** 다음 섹션 이동 가능 여부 */
117
117
  isCanNext?: boolean;
118
118
  /** 뷰어 레코더 스토어 (이벤트 emit용) */
119
- recorderStore?: ViewerRecorderStore;
119
+ recorderStore?: ViewerEventBridgeStore;
120
120
  };
121
121
  export declare function createCRViewerProgressStore(init: CRViewerProgressInitialState): CRViewerProgressStore;
122
122
  //# sourceMappingURL=crViewer_progress.store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crViewer_progress.store.d.ts","sourceRoot":"","sources":["../../../src/stores/progress/crViewer_progress.store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crViewer_progress.store.d.ts","sourceRoot":"","sources":["../../../src/stores/progress/crViewer_progress.store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"quiz_progress.store.d.ts","sourceRoot":"","sources":["../../../src/stores/quizprogress/quiz_progress.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMrE,MAAM,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC;AAClC,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IAEd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,yCAAyC;IACzC,kBAAkB,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IACpD,gDAAgD;IAChD,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IACjD,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC,wCAAwC;IACxC,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B,gBAAgB;IAChB,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEhC,uCAAuC;IACvC,eAAe,EAAE,MAAM,IAAI,CAAC;IAE5B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB,qCAAqC;IACrC,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAEpE,gCAAgC;AAChC,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;AAmDxD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,cAAc,CAAC,EAAE,WAAW,GAAG,iBAAiB,CA8O9F"}
1
+ {"version":3,"file":"quiz_progress.store.d.ts","sourceRoot":"","sources":["../../../src/stores/quizprogress/quiz_progress.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMrE,MAAM,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC;AAClC,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IAEd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,yCAAyC;IACzC,kBAAkB,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IACpD,gDAAgD;IAChD,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IACjD,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC,wCAAwC;IACxC,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B,gBAAgB;IAChB,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAEhC,uCAAuC;IACvC,eAAe,EAAE,MAAM,IAAI,CAAC;IAE5B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB,qCAAqC;IACrC,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAEpE,gCAAgC;AAChC,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;AAmDxD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,cAAc,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAmP9F"}
@@ -1,10 +1,10 @@
1
- import { CRViewerState } from './crViewer.store';
1
+ import { CRViewerStateExtended } from './crViewer.store';
2
2
  /**
3
3
  * Provider: 뷰어 인스턴스별로 독립적인 store를 1회 생성해 제공합니다.
4
4
  * initialState는 최초 마운트 시에만 적용됩니다.
5
5
  */
6
6
  export declare function InternalCRViewerProvider({ children, initialState, }: {
7
7
  children: React.ReactNode;
8
- initialState?: Partial<CRViewerState>;
8
+ initialState?: Partial<CRViewerStateExtended>;
9
9
  }): import("react/jsx-runtime").JSX.Element;
10
10
  //# sourceMappingURL=CRViewer.provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CRViewer.provider.d.ts","sourceRoot":"","sources":["../../../src/stores/viewer/CRViewer.provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,gCAAgC,CAAC;AAGxC;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,YAAY,GACb,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACvC,2CAQA"}
1
+ {"version":3,"file":"CRViewer.provider.d.ts","sourceRoot":"","sources":["../../../src/stores/viewer/CRViewer.provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAGjG;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,YAAY,GACb,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC/C,2CAQA"}
@@ -1,4 +1,4 @@
1
- import { CRViewerActions, CRViewerState, CRViewerStore } from './crViewer.store';
1
+ import { CRViewerActions, CRViewerStateExtended, CRViewerStore } from './crViewer.store';
2
2
  import { StoreApi } from 'zustand';
3
3
  /**
4
4
  * 구독 기반 selector 훅.
@@ -7,7 +7,7 @@ import { StoreApi } from 'zustand';
7
7
  *
8
8
  * 본문 렌더 등 "상태 변화에 반응"해야 할 컴포넌트에서 사용하세요.
9
9
  */
10
- export declare function useCRViewerScopedStore<T>(selector: (s: CRViewerState & CRViewerActions) => T, equalityFn?: (a: T, b: T) => boolean): T;
10
+ export declare function useCRViewerScopedStore<T>(selector: (s: CRViewerStateExtended & CRViewerActions) => T, equalityFn?: (a: T, b: T) => boolean): T;
11
11
  /**
12
12
  * ⚡ 구독 없는 store API 훅.
13
13
  * - getState/setState/subscribe 등 StoreApi에 접근
@@ -17,7 +17,7 @@ export declare function useCRViewerScopedStore<T>(selector: (s: CRViewerState &
17
17
  * const storeApi = useCRViewerStoreApi();
18
18
  * const { isSettingsOpen, setSettingsOpen, toggleOverlays } = storeApi.getState();
19
19
  */
20
- export declare function useCRViewerStoreApi(): StoreApi<CRViewerState & CRViewerActions>;
20
+ export declare function useCRViewerStoreApi(): StoreApi<CRViewerStateExtended & CRViewerActions>;
21
21
  /**
22
22
  * (선택) 컨텍스트 자체가 필요한 경우를 위한 getter.
23
23
  * 가급적 훅(useCRViewerStoreApi/useCRViewerScopedStore)을 사용하세요.
@@ -1 +1 @@
1
- {"version":3,"file":"crViewer.hooks.d.ts","sourceRoot":"","sources":["../../../src/stores/viewer/crViewer.hooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,aAAa,EACd,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,QAAQ,EAAE,CAAC,CAAC,EAAE,aAAa,GAAG,eAAe,KAAK,CAAC,EACnD,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,GACnC,CAAC,CAWH;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,QAAQ,CAAC,aAAa,GAAG,eAAe,CAAC,CAM/E;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,aAAa,CAMxD"}
1
+ {"version":3,"file":"crViewer.hooks.d.ts","sourceRoot":"","sources":["../../../src/stores/viewer/crViewer.hooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,aAAa,EACd,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,QAAQ,EAAE,CAAC,CAAC,EAAE,qBAAqB,GAAG,eAAe,KAAK,CAAC,EAC3D,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,GACnC,CAAC,CAWH;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,QAAQ,CAAC,qBAAqB,GAAG,eAAe,CAAC,CAMvF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,aAAa,CAMxD"}
@@ -1,6 +1,6 @@
1
1
  import { StoreApi } from 'zustand/vanilla';
2
- import { ViewerRecorderStore } from '../recorder/viewerRecorder.store';
3
- export type ViewerMode = 'scroll' | 'page';
2
+ import { ViewerEventBridgeStore } from '../eventBridge/viewerEventBridge.store';
3
+ import { CRViewerState, PointerStyle, ViewerMode, ViewerTheme } from '../../types/viewerEvent.types';
4
4
  export declare const THEME_PALETTES: {
5
5
  light: {
6
6
  bg: string;
@@ -31,16 +31,9 @@ export declare const THEME_PALETTES: {
31
31
  borderColor: string;
32
32
  };
33
33
  };
34
- export type ViewerTheme = keyof typeof THEME_PALETTES;
35
34
  export type OverlayPalette = (typeof THEME_PALETTES)[ViewerTheme];
36
- export type PointerStyle = 'highlight' | 'underline';
37
35
  export type BreakMarkKind = 'slash';
38
- export type CRViewerState = {
39
- mode: ViewerMode;
40
- theme: ViewerTheme;
41
- fontFamily: string;
42
- fontSizePx: number;
43
- lineHeight: number;
36
+ export type CRViewerStateExtended = CRViewerState & {
44
37
  marginX: number;
45
38
  marginY: number;
46
39
  showOverlays: boolean;
@@ -54,7 +47,7 @@ export type CRViewerState = {
54
47
  breakGapPx: number;
55
48
  /** 🔇 오디오 기본 음소거 */
56
49
  muteAudio: boolean;
57
- audioTargetWpm: number;
50
+ /** 🎵 오디오 재생 속도 (1.0 = 기본, 0.05 단위 증감) */
58
51
  audioSpeed: number;
59
52
  /** 🖊️ 포인터(형광펜/밑줄/커스텀) 표시 여부 */
60
53
  showPointer: boolean;
@@ -63,9 +56,8 @@ export type CRViewerState = {
63
56
  /** 📐 뷰포트 크기 (이미지 maxHeight 계산 등에 사용) */
64
57
  viewportWidth: number;
65
58
  viewportHeight: number;
66
- /** 📐 재생용 뷰포트 크기 (녹화 당시 viewport, 재생 시 recalc/이미지 높이에 사용) */
67
- playbackViewportWidth: number;
68
- playbackViewportHeight: number;
59
+ /** 🛠️ 개발 모드 (디버그 UI 표시용) */
60
+ isDev: boolean;
69
61
  };
70
62
  export type CRViewerActions = {
71
63
  setMode: (m: ViewerMode) => void;
@@ -77,6 +69,9 @@ export type CRViewerActions = {
77
69
  setMarginY: (my: number) => void;
78
70
  setShowOverlays: (v: boolean) => void;
79
71
  toggleOverlays: () => void;
72
+ /** 컴팩트 오버레이 모드 설정 */
73
+ setOverlayCompactMode: (v: boolean) => void;
74
+ toggleOverlayCompactMode: () => void;
80
75
  /** ✅ 바텀 시트 토글 */
81
76
  setSettingsOpen: (open: boolean) => void;
82
77
  /** ✅ 보기 설정 초기화 */
@@ -105,26 +100,25 @@ export type CRViewerActions = {
105
100
  setBreakGapPx: (px: number) => void;
106
101
  setMuteAudio: (v: boolean) => void;
107
102
  toggleMuteAudio: () => void;
103
+ /** 🎵 오디오 재생 속도 설정 (0.7~1.5 권장, 0.05 단위) */
108
104
  setAudioSpeed: (speed: number) => void;
109
- setAudioTargetWpm: (wpm: number) => void;
105
+ incAudioSpeed: () => void;
106
+ decAudioSpeed: () => void;
110
107
  setShowPointer: (v: boolean) => void;
111
108
  toggleShowPointer: () => void;
112
109
  setShowSplit: (v: boolean) => void;
113
110
  toggleShowSplit: () => void;
114
111
  /** 📐 뷰포트 크기 설정 */
115
112
  setViewportSize: (width: number, height: number) => void;
116
- /** 📐 재생용 뷰포트 크기 설정 */
117
- setPlaybackViewportSize: (width: number, height: number) => void;
118
- clearPlaybackViewport: () => void;
119
113
  };
120
- export type CRViewerStore = StoreApi<CRViewerState & CRViewerActions>;
114
+ export type CRViewerStore = StoreApi<CRViewerStateExtended & CRViewerActions>;
121
115
  export declare const FONT_PRESETS: {
122
116
  label: string;
123
117
  value: string;
124
118
  }[];
125
119
  export type CRViewerStoreOptions = {
126
- init?: Partial<CRViewerState>;
127
- recorderStore?: ViewerRecorderStore;
120
+ init?: Partial<CRViewerStateExtended>;
121
+ recorderStore?: ViewerEventBridgeStore;
128
122
  };
129
123
  export declare function createCRViewerStore(options?: CRViewerStoreOptions): CRViewerStore;
130
124
  //# sourceMappingURL=crViewer.store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crViewer.store.d.ts","sourceRoot":"","sources":["../../../src/stores/viewer/crViewer.store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crViewer.store.d.ts","sourceRoot":"","sources":["../../../src/stores/viewer/crViewer.store.ts"],"names":[],"mappings":"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"}
@@ -1,149 +1,2 @@
1
- import { CRViewerState } from '../stores/viewer/crViewer.store';
2
- /** 뷰어 이벤트 타입 */
3
- export type ViewerEventType = 'recording_start' | 'recording_stop' | 'global_index_change' | 'scroll' | 'page_change' | 'section_change' | 'mode_change' | 'settings_change' | 'viewer_state_snapshot' | 'render_start' | 'loading_start' | 'loading_end' | 'viewport_resize' | 'audio_control';
4
- /** 녹화용 뷰어 상태 */
5
- export type RecordingViewerState = CRViewerState;
6
- /** 오디오 상태 스냅샷 */
7
- export type AudioSnapshot = {
8
- /** 오디오 상태 (playing, paused 등) */
9
- status: 'idle' | 'loading' | 'playing' | 'paused' | 'ended' | 'error';
10
- /** 현재 클립 인덱스 */
11
- currentClip: number;
12
- /** 현재 재생 시간 (ms) */
13
- currentTimeMs: number;
14
- };
15
- /** 녹화 시작 시 저장할 초기 스냅샷 */
16
- export type RecordingSnapshot = {
17
- /** 뷰어 설정 상태 */
18
- viewerState: RecordingViewerState;
19
- /** 현재 globalIndex (마크 위치) */
20
- globalIndex: number;
21
- /** 스크롤 위치 (scroll 모드) - deprecated, anchorGI 사용 권장 */
22
- scrollY?: number;
23
- /** 화면 상단에 보이는 run의 globalIndex (스크롤 복원용) */
24
- anchorGI?: number;
25
- /** anchorGI 요소가 뷰포트 상단에서 떨어진 비율 (0~1) */
26
- anchorOffsetRatio?: number;
27
- /** 현재 페이지 (page 모드) */
28
- currentPage?: number;
29
- /** 섹션 ID */
30
- sectionId: string;
31
- /** 뷰어 렌더 영역 너비 (px) */
32
- viewportWidth: number;
33
- /** 뷰어 렌더 영역 높이 (px) */
34
- viewportHeight: number;
35
- /** 오디오 상태 (optional - 오디오 없을 수 있음) */
36
- audio?: AudioSnapshot;
37
- };
38
- /** 기본 이벤트 (뷰어에서 emit) */
39
- export type ViewerEventBase<T extends ViewerEventType, P = Record<string, unknown>> = {
40
- type: T;
41
- /** 절대 시간 (Date.now()) */
42
- timestamp: number;
43
- payload: P;
44
- };
45
- /** 저장용 이벤트 (외부에서 relTime 추가) */
46
- export type StoredViewerEvent<T extends ViewerEventType, P = Record<string, unknown>> = ViewerEventBase<T, P> & {
47
- /** 녹화 시작 기준 상대 시간 (초 단위, 예: 1.23) */
48
- relTime: number;
49
- };
50
- /** 녹화 시작 이벤트 */
51
- export type RecordingStartEvent = ViewerEventBase<'recording_start', {
52
- snapshot: RecordingSnapshot;
53
- }>;
54
- /** 녹화 중지 이벤트 */
55
- export type RecordingStopEvent = ViewerEventBase<'recording_stop', {
56
- duration: number;
57
- }>;
58
- /** globalIndex 변경 이벤트 */
59
- export type GlobalIndexChangeEvent = ViewerEventBase<'global_index_change', {
60
- globalIndex: number;
61
- }>;
62
- /** 스크롤 이벤트 (scroll 모드 전용) */
63
- export type ScrollEvent = ViewerEventBase<'scroll', {
64
- /** 스크롤 절대 위치 (px) */
65
- scrollTop: number;
66
- /** 스크롤 비율 (0~1, scrollTop / (scrollHeight - clientHeight)) */
67
- scrollRatio: number;
68
- /** 화면 상단 기준 run index */
69
- anchorGI: number;
70
- /** anchorGI 요소가 뷰포트 상단에서 떨어진 비율 (0~1) */
71
- anchorOffsetRatio: number;
72
- }>;
73
- /** 페이지 변경 이벤트 */
74
- export type PageChangeEvent = ViewerEventBase<'page_change', {
75
- page: number;
76
- }>;
77
- /** 섹션 변경 이벤트 */
78
- export type SectionChangeEvent = ViewerEventBase<'section_change', {
79
- sectionId: string;
80
- }>;
81
- /** 모드 변경 이벤트 */
82
- export type ModeChangeEvent = ViewerEventBase<'mode_change', {
83
- mode: 'scroll' | 'page';
84
- }>;
85
- /** 설정 변경 이벤트 (개별 키) */
86
- export type SettingsChangeEvent = ViewerEventBase<'settings_change', {
87
- key: keyof CRViewerState;
88
- value: unknown;
89
- }>;
90
- /** 뷰어 상태 전체 스냅샷 이벤트 (설정 변경 시 전체 상태 기록) */
91
- export type ViewerStateSnapshotEvent = ViewerEventBase<'viewer_state_snapshot', {
92
- viewerState: CRViewerState;
93
- }>;
94
- /** 뷰어 렌더 시작 이벤트 (마운트 시, 섹션 변경 시) */
95
- export type RenderStartEvent = ViewerEventBase<'render_start', {
96
- sectionId: string;
97
- }>;
98
- /** 로딩 시작 이벤트 */
99
- export type LoadingStartEvent = ViewerEventBase<'loading_start', Record<string, never>>;
100
- /** 로딩 완료 이벤트 */
101
- export type LoadingEndEvent = ViewerEventBase<'loading_end', {
102
- /** 로딩 소요 시간 (초, 예: 1.523) */
103
- duration: number;
104
- }>;
105
- /** 뷰포트 리사이즈 이벤트 */
106
- export type ViewportResizeEvent = ViewerEventBase<'viewport_resize', {
107
- width: number;
108
- height: number;
109
- }>;
110
- /** 오디오 제어 액션 타입 */
111
- export type AudioControlAction = 'play' | 'pause' | 'stop';
112
- /** 오디오 제어 이벤트 */
113
- export type AudioControlEvent = ViewerEventBase<'audio_control', {
114
- action: AudioControlAction;
115
- }>;
116
- /** 모든 뷰어 이벤트 타입 */
117
- export type ViewerEvent = RecordingStartEvent | RecordingStopEvent | GlobalIndexChangeEvent | ScrollEvent | PageChangeEvent | SectionChangeEvent | ModeChangeEvent | SettingsChangeEvent | ViewerStateSnapshotEvent | RenderStartEvent | LoadingStartEvent | LoadingEndEvent | ViewportResizeEvent | AudioControlEvent;
118
- export type ViewerEventCallback = (event: ViewerEvent) => void;
119
- /** 저장용 이벤트 (any type) */
120
- export type StoredEvent = StoredViewerEvent<ViewerEventType, unknown>;
121
- /** 녹화 청크 (15초 단위 등) */
122
- export type RecordingChunk = {
123
- /** 청크 인덱스 (0, 1, 2, ...) */
124
- index: number;
125
- /** 청크 시작 시간 (초, 녹화 시작 기준) */
126
- startTime: number;
127
- /** 청크 종료 시간 (초) */
128
- endTime: number;
129
- /** 청크 시작 시점의 뷰어 스냅샷 */
130
- snapshot: RecordingSnapshot;
131
- /** 이 청크에 포함된 이벤트들 */
132
- events: StoredEvent[];
133
- };
134
- /** 녹화 메타데이터 (전체 녹화 정보) */
135
- export type RecordingMeta = {
136
- /** 녹화 ID */
137
- id: string;
138
- /** 녹화 시작 절대 시간 */
139
- startedAt: number;
140
- /** 총 녹화 시간 (초) */
141
- totalDuration: number;
142
- /** 청크 길이 (초) */
143
- chunkDuration: number;
144
- /** 총 청크 수 */
145
- chunkCount: number;
146
- /** 섹션 ID */
147
- sectionId: string;
148
- };
1
+ export type { ViewerMode, ViewerTheme, PointerStyle, CRViewerState, ViewerEventType, AudioSnapshot, AudioControlAction, ViewerEventBase, StoredViewerEvent, GlobalIndexChangeEvent, ScrollEvent, PageChangeEvent, SectionChangeEvent, ModeChangeEvent, SettingsChangeEvent, RenderStartEvent, LoadingStartEvent, LoadingEndEvent, ViewportResizeEvent, AudioControlEvent, ViewerEvent, ViewerEventCallback, StoredEvent, RecordingViewerState, RecordingSnapshot, RecordingChunk, RecordingMeta, } from '@readerseye2/cr_type';
149
2
  //# sourceMappingURL=viewerEvent.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewerEvent.types.d.ts","sourceRoot":"","sources":["../../src/types/viewerEvent.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"viewerEvent.types.d.ts","sourceRoot":"","sources":["../../src/types/viewerEvent.types.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,aAAa,GACd,MAAM,sBAAsB,CAAC"}