@readerseye2/cr_viewer 1.0.1

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 (162) hide show
  1. package/dist/CR_Viewer.d.ts +24 -0
  2. package/dist/CR_Viewer.d.ts.map +1 -0
  3. package/dist/components/PageSectionWrap.d.ts +15 -0
  4. package/dist/components/PageSectionWrap.d.ts.map +1 -0
  5. package/dist/components/PaginationRender.d.ts +11 -0
  6. package/dist/components/PaginationRender.d.ts.map +1 -0
  7. package/dist/components/RenderParagraph.d.ts +16 -0
  8. package/dist/components/RenderParagraph.d.ts.map +1 -0
  9. package/dist/components/RenderRuns.d.ts +14 -0
  10. package/dist/components/RenderRuns.d.ts.map +1 -0
  11. package/dist/components/ScrollSectionWrap.d.ts +2 -0
  12. package/dist/components/ScrollSectionWrap.d.ts.map +1 -0
  13. package/dist/components/SectionRendererVirtuoso.d.ts +7 -0
  14. package/dist/components/SectionRendererVirtuoso.d.ts.map +1 -0
  15. package/dist/components/btns/MoveSectionBtns.d.ts +18 -0
  16. package/dist/components/btns/MoveSectionBtns.d.ts.map +1 -0
  17. package/dist/components/btns/SolveQuizBtn.d.ts +2 -0
  18. package/dist/components/btns/SolveQuizBtn.d.ts.map +1 -0
  19. package/dist/components/dom.util.d.ts +40 -0
  20. package/dist/components/dom.util.d.ts.map +1 -0
  21. package/dist/components/quiz/QuizRenderer.d.ts +3 -0
  22. package/dist/components/quiz/QuizRenderer.d.ts.map +1 -0
  23. package/dist/components/scroll/CustomScroller.d.ts +4 -0
  24. package/dist/components/scroll/CustomScroller.d.ts.map +1 -0
  25. package/dist/components/spinner/SectionLoadingSpinner.d.ts +2 -0
  26. package/dist/components/spinner/SectionLoadingSpinner.d.ts.map +1 -0
  27. package/dist/components/spinner/Spinner.d.ts +10 -0
  28. package/dist/components/spinner/Spinner.d.ts.map +1 -0
  29. package/dist/hooks/useDebounce.d.ts +16 -0
  30. package/dist/hooks/useDebounce.d.ts.map +1 -0
  31. package/dist/hooks/useLongPressSpan.d.ts +10 -0
  32. package/dist/hooks/useLongPressSpan.d.ts.map +1 -0
  33. package/dist/hooks/useResizeObserver.d.ts +2 -0
  34. package/dist/hooks/useResizeObserver.d.ts.map +1 -0
  35. package/dist/hooks/useSingleDoubleClick.d.ts +16 -0
  36. package/dist/hooks/useSingleDoubleClick.d.ts.map +1 -0
  37. package/dist/hooks/useSwipePageClicks.d.ts +24 -0
  38. package/dist/hooks/useSwipePageClicks.d.ts.map +1 -0
  39. package/dist/index.cjs +33 -0
  40. package/dist/index.css +1 -0
  41. package/dist/index.d.ts +10 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +8723 -0
  44. package/dist/overlay-bars/OverlayLayer.d.ts +3 -0
  45. package/dist/overlay-bars/OverlayLayer.d.ts.map +1 -0
  46. package/dist/overlay-bars/ViewerSettingsSheet.d.ts +6 -0
  47. package/dist/overlay-bars/ViewerSettingsSheet.d.ts.map +1 -0
  48. package/dist/overlay-bars/bottomBar/AudioControlsMini.d.ts +2 -0
  49. package/dist/overlay-bars/bottomBar/AudioControlsMini.d.ts.map +1 -0
  50. package/dist/overlay-bars/bottomBar/FakeAudioControlsMini.d.ts +3 -0
  51. package/dist/overlay-bars/bottomBar/FakeAudioControlsMini.d.ts.map +1 -0
  52. package/dist/overlay-bars/bottomBar/OverlayBottomBar.d.ts +5 -0
  53. package/dist/overlay-bars/bottomBar/OverlayBottomBar.d.ts.map +1 -0
  54. package/dist/overlay-bars/bottomBar/PlayButton.d.ts +13 -0
  55. package/dist/overlay-bars/bottomBar/PlayButton.d.ts.map +1 -0
  56. package/dist/overlay-bars/bottomBar/ProgressScrubber.d.ts +5 -0
  57. package/dist/overlay-bars/bottomBar/ProgressScrubber.d.ts.map +1 -0
  58. package/dist/overlay-bars/bottomBar/StepBtn.d.ts +6 -0
  59. package/dist/overlay-bars/bottomBar/StepBtn.d.ts.map +1 -0
  60. package/dist/overlay-bars/bottomBar/WPMSpeedButtons.d.ts +2 -0
  61. package/dist/overlay-bars/bottomBar/WPMSpeedButtons.d.ts.map +1 -0
  62. package/dist/overlay-bars/topBar/OverlayTopBar.d.ts +5 -0
  63. package/dist/overlay-bars/topBar/OverlayTopBar.d.ts.map +1 -0
  64. package/dist/playback/CR_ViewerPlayback.d.ts +27 -0
  65. package/dist/playback/CR_ViewerPlayback.d.ts.map +1 -0
  66. package/dist/playback/PlaybackBar.d.ts +28 -0
  67. package/dist/playback/PlaybackBar.d.ts.map +1 -0
  68. package/dist/playback/PlaybackToggleButton.d.ts +10 -0
  69. package/dist/playback/PlaybackToggleButton.d.ts.map +1 -0
  70. package/dist/playback/PlaybackViewport.d.ts +30 -0
  71. package/dist/playback/PlaybackViewport.d.ts.map +1 -0
  72. package/dist/playback/index.d.ts +5 -0
  73. package/dist/playback/index.d.ts.map +1 -0
  74. package/dist/playback/types.d.ts +20 -0
  75. package/dist/playback/types.d.ts.map +1 -0
  76. package/dist/recording/PlaybackHandler.d.ts +6 -0
  77. package/dist/recording/PlaybackHandler.d.ts.map +1 -0
  78. package/dist/recording/SettingsChangeEmitter.d.ts +3 -0
  79. package/dist/recording/SettingsChangeEmitter.d.ts.map +1 -0
  80. package/dist/recording/SnapshotRegistrar.d.ts +7 -0
  81. package/dist/recording/SnapshotRegistrar.d.ts.map +1 -0
  82. package/dist/recording/ViewportResizeEmitter.d.ts +7 -0
  83. package/dist/recording/ViewportResizeEmitter.d.ts.map +1 -0
  84. package/dist/stores/audio/crViewer_audio.context.d.ts +10 -0
  85. package/dist/stores/audio/crViewer_audio.context.d.ts.map +1 -0
  86. package/dist/stores/audio/crViewer_audio.hooks.d.ts +6 -0
  87. package/dist/stores/audio/crViewer_audio.hooks.d.ts.map +1 -0
  88. package/dist/stores/audio/crViewer_audio.provider.d.ts +14 -0
  89. package/dist/stores/audio/crViewer_audio.provider.d.ts.map +1 -0
  90. package/dist/stores/audio/crViewer_audio.store.d.ts +65 -0
  91. package/dist/stores/audio/crViewer_audio.store.d.ts.map +1 -0
  92. package/dist/stores/player/index.d.ts +5 -0
  93. package/dist/stores/player/index.d.ts.map +1 -0
  94. package/dist/stores/player/viewerPlayer.context.d.ts +7 -0
  95. package/dist/stores/player/viewerPlayer.context.d.ts.map +1 -0
  96. package/dist/stores/player/viewerPlayer.hooks.d.ts +13 -0
  97. package/dist/stores/player/viewerPlayer.hooks.d.ts.map +1 -0
  98. package/dist/stores/player/viewerPlayer.provider.d.ts +18 -0
  99. package/dist/stores/player/viewerPlayer.provider.d.ts.map +1 -0
  100. package/dist/stores/player/viewerPlayer.store.d.ts +52 -0
  101. package/dist/stores/player/viewerPlayer.store.d.ts.map +1 -0
  102. package/dist/stores/progress/crViewer_progress.context.d.ts +3 -0
  103. package/dist/stores/progress/crViewer_progress.context.d.ts.map +1 -0
  104. package/dist/stores/progress/crViewer_progress.hooks.d.ts +6 -0
  105. package/dist/stores/progress/crViewer_progress.hooks.d.ts.map +1 -0
  106. package/dist/stores/progress/crViewer_progress.provider.d.ts +15 -0
  107. package/dist/stores/progress/crViewer_progress.provider.d.ts.map +1 -0
  108. package/dist/stores/progress/crViewer_progress.store.d.ts +98 -0
  109. package/dist/stores/progress/crViewer_progress.store.d.ts.map +1 -0
  110. package/dist/stores/quizprogress/quiz_progress.context.d.ts +3 -0
  111. package/dist/stores/quizprogress/quiz_progress.context.d.ts.map +1 -0
  112. package/dist/stores/quizprogress/quiz_progress.hooks.d.ts +10 -0
  113. package/dist/stores/quizprogress/quiz_progress.hooks.d.ts.map +1 -0
  114. package/dist/stores/quizprogress/quiz_progress.provider.d.ts +17 -0
  115. package/dist/stores/quizprogress/quiz_progress.provider.d.ts.map +1 -0
  116. package/dist/stores/quizprogress/quiz_progress.store.d.ts +63 -0
  117. package/dist/stores/quizprogress/quiz_progress.store.d.ts.map +1 -0
  118. package/dist/stores/recorder/viewerRecorder.context.d.ts +7 -0
  119. package/dist/stores/recorder/viewerRecorder.context.d.ts.map +1 -0
  120. package/dist/stores/recorder/viewerRecorder.hooks.d.ts +13 -0
  121. package/dist/stores/recorder/viewerRecorder.hooks.d.ts.map +1 -0
  122. package/dist/stores/recorder/viewerRecorder.provider.d.ts +24 -0
  123. package/dist/stores/recorder/viewerRecorder.provider.d.ts.map +1 -0
  124. package/dist/stores/recorder/viewerRecorder.store.d.ts +50 -0
  125. package/dist/stores/recorder/viewerRecorder.store.d.ts.map +1 -0
  126. package/dist/stores/test/tempRecordingStore.d.ts +13 -0
  127. package/dist/stores/test/tempRecordingStore.d.ts.map +1 -0
  128. package/dist/stores/viewer/CRViewer.provider.d.ts +10 -0
  129. package/dist/stores/viewer/CRViewer.provider.d.ts.map +1 -0
  130. package/dist/stores/viewer/crViewer.context.d.ts +7 -0
  131. package/dist/stores/viewer/crViewer.context.d.ts.map +1 -0
  132. package/dist/stores/viewer/crViewer.hooks.d.ts +26 -0
  133. package/dist/stores/viewer/crViewer.hooks.d.ts.map +1 -0
  134. package/dist/stores/viewer/crViewer.store.d.ts +130 -0
  135. package/dist/stores/viewer/crViewer.store.d.ts.map +1 -0
  136. package/dist/types/viewerEvent.types.d.ts +149 -0
  137. package/dist/types/viewerEvent.types.d.ts.map +1 -0
  138. package/dist/utils/audioSrc.d.ts +4 -0
  139. package/dist/utils/audioSrc.d.ts.map +1 -0
  140. package/dist/utils/buildAudioTextMap.d.ts +15 -0
  141. package/dist/utils/buildAudioTextMap.d.ts.map +1 -0
  142. package/dist/utils/calcPage.util.d.ts +42 -0
  143. package/dist/utils/calcPage.util.d.ts.map +1 -0
  144. package/dist/utils/calcPage.util_BACKV3_2399_sf.d.ts +40 -0
  145. package/dist/utils/calcPage.util_BACKV3_2399_sf.d.ts.map +1 -0
  146. package/dist/utils/calcPage.util_BACKclaude.d.ts +40 -0
  147. package/dist/utils/calcPage.util_BACKclaude.d.ts.map +1 -0
  148. package/dist/utils/calcPage.util_BACKclaude_gptagain.d.ts +40 -0
  149. package/dist/utils/calcPage.util_BACKclaude_gptagain.d.ts.map +1 -0
  150. package/dist/utils/calcPage.util_BACKrecent.d.ts +40 -0
  151. package/dist/utils/calcPage.util_BACKrecent.d.ts.map +1 -0
  152. package/dist/utils/calcPage.util_BACKv6_fast_Sf.d.ts +40 -0
  153. package/dist/utils/calcPage.util_BACKv6_fast_Sf.d.ts.map +1 -0
  154. package/dist/utils/doubleRaf.d.ts +3 -0
  155. package/dist/utils/doubleRaf.d.ts.map +1 -0
  156. package/dist/utils/quizSrc.d.ts +3 -0
  157. package/dist/utils/quizSrc.d.ts.map +1 -0
  158. package/dist/utils/sectionRender.util.d.ts +21 -0
  159. package/dist/utils/sectionRender.util.d.ts.map +1 -0
  160. package/dist/utils/text.util.d.ts +3 -0
  161. package/dist/utils/text.util.d.ts.map +1 -0
  162. package/package.json +59 -0
@@ -0,0 +1,149 @@
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
+ };
149
+ //# sourceMappingURL=viewerEvent.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewerEvent.types.d.ts","sourceRoot":"","sources":["../../src/types/viewerEvent.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { SectionAudio } from '@readerseye2/cr_type';
2
+ /** SectionAudio -> blobUrl 우선 반환 */
3
+ export declare function audioSrcOf(anyClip: SectionAudio): string | null;
4
+ //# sourceMappingURL=audioSrc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audioSrc.d.ts","sourceRoot":"","sources":["../../src/utils/audioSrc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,oCAAoC;AACpC,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAkB/D"}
@@ -0,0 +1,15 @@
1
+ import { SectionData } from '@readerseye2/cr_type';
2
+ export type ClipTimeToGI = Array<{
3
+ t: number;
4
+ g: number;
5
+ }>;
6
+ export type G2CT = Array<{
7
+ clip: number;
8
+ t: number;
9
+ } | undefined>;
10
+ export type AudioTextMap = {
11
+ byClip: Record<number, ClipTimeToGI>;
12
+ g2ct: G2CT;
13
+ };
14
+ export declare function buildAudioTextMap(section: SectionData): AudioTextMap;
15
+ //# sourceMappingURL=buildAudioTextMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildAudioTextMap.d.ts","sourceRoot":"","sources":["../../src/utils/buildAudioTextMap.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE3D,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAAC;AAElE,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACrC,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,YAAY,CA0BpE"}
@@ -0,0 +1,42 @@
1
+ import { Block } from '@readerseye2/cr_type';
2
+ export type PageSlice = {
3
+ startBlock: number;
4
+ endBlock: number;
5
+ startOffsetInBlock?: number;
6
+ endOffsetInBlock?: number;
7
+ startCharInRun?: number;
8
+ endCharInRun?: number;
9
+ };
10
+ export type RenderItem = {
11
+ kind: 'paragraph' | 'image';
12
+ block: Block;
13
+ originalIndex: number;
14
+ paraIndex?: number;
15
+ };
16
+ export type CalcPagesParams = {
17
+ viewHost: HTMLElement;
18
+ measureRoot: HTMLElement;
19
+ contentArea: HTMLElement;
20
+ items: RenderItem[];
21
+ cfgMaxWidth: number;
22
+ marginX: number;
23
+ fontFamily?: string | null;
24
+ fontSizePx: number;
25
+ lineHeight: number;
26
+ showSplit: boolean;
27
+ breakGapPx?: number;
28
+ showSlash: boolean;
29
+ paragraphMarkers: (string | undefined)[];
30
+ playbackScale?: number;
31
+ viewportHeight?: number;
32
+ };
33
+ export type CalcPagesResult = {
34
+ pages: PageSlice[];
35
+ pageByRunIndex: Int32Array | null;
36
+ };
37
+ export declare class CalcPagesCanceled extends Error {
38
+ readonly code = "CALC_PAGES_CANCELED";
39
+ constructor();
40
+ }
41
+ export declare function calcPages({ viewHost, measureRoot, contentArea, items, cfgMaxWidth, marginX, fontFamily, fontSizePx, lineHeight, showSplit, breakGapPx, showSlash, paragraphMarkers, playbackScale, viewportHeight, }: CalcPagesParams): Promise<CalcPagesResult>;
42
+ //# sourceMappingURL=calcPage.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calcPage.util.d.ts","sourceRoot":"","sources":["../../src/utils/calcPage.util.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAA8B,MAAM,sBAAsB,CAAC;AAG9E,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAE5B,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IAGzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IAGnB,gBAAgB,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAGzC,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,cAAc,EAAE,UAAU,GAAG,IAAI,CAAC;CACnC,CAAC;AAiBF,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,yBAAyB;;CAKvC;AA8CD,wBAAsB,SAAS,CAAC,EAC9B,QAAQ,EACR,WAAW,EACX,WAAW,EACX,KAAK,EACL,WAAW,EACX,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAc,EACd,SAAS,EACT,gBAAgB,EAChB,aAAiB,EACjB,cAAkB,GACnB,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CA+f5C"}
@@ -0,0 +1,40 @@
1
+ import { Block } from '@readerseye2/cr_type';
2
+ export type PageSlice = {
3
+ startBlock: number;
4
+ endBlock: number;
5
+ startOffsetInBlock?: number;
6
+ endOffsetInBlock?: number;
7
+ startCharInRun?: number;
8
+ endCharInRun?: number;
9
+ };
10
+ export type RenderItem = {
11
+ kind: 'paragraph' | 'image';
12
+ block: Block;
13
+ originalIndex: number;
14
+ paraIndex?: number;
15
+ };
16
+ export type CalcPagesParams = {
17
+ viewHost: HTMLElement;
18
+ measureRoot: HTMLElement;
19
+ contentArea: HTMLElement;
20
+ items: RenderItem[];
21
+ cfgMaxWidth: number;
22
+ marginX: number;
23
+ fontFamily?: string | null;
24
+ fontSizePx: number;
25
+ lineHeight: number;
26
+ showSplit: boolean;
27
+ breakGapPx?: number;
28
+ showSlash: boolean;
29
+ paragraphMarkers: (string | undefined)[];
30
+ };
31
+ export type CalcPagesResult = {
32
+ pages: PageSlice[];
33
+ pageByRunIndex: Int32Array | null;
34
+ };
35
+ export declare class CalcPagesCanceled extends Error {
36
+ readonly code = "CALC_PAGES_CANCELED";
37
+ constructor();
38
+ }
39
+ export declare function calcPages({ viewHost, measureRoot, contentArea, items, cfgMaxWidth, marginX, fontFamily, fontSizePx, lineHeight, showSplit, breakGapPx, showSlash, paragraphMarkers, }: CalcPagesParams): Promise<CalcPagesResult>;
40
+ //# sourceMappingURL=calcPage.util_BACKV3_2399_sf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calcPage.util_BACKV3_2399_sf.d.ts","sourceRoot":"","sources":["../../src/utils/calcPage.util_BACKV3_2399_sf.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAA8B,MAAM,sBAAsB,CAAC;AAG9E,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAE5B,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IAGzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IAGnB,gBAAgB,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,cAAc,EAAE,UAAU,GAAG,IAAI,CAAC;CACnC,CAAC;AAiBF,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,yBAAyB;;CAKvC;AAwCD,wBAAsB,SAAS,CAAC,EAC9B,QAAQ,EACR,WAAW,EACX,WAAW,EACX,KAAK,EACL,WAAW,EACX,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAc,EACd,SAAS,EACT,gBAAgB,GACjB,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAwc5C"}
@@ -0,0 +1,40 @@
1
+ import { Block } from '@readerseye2/cr_type';
2
+ export interface PageSlice {
3
+ startBlock: number;
4
+ endBlock: number;
5
+ startOffsetInBlock?: number;
6
+ endOffsetInBlock?: number;
7
+ startCharInRun?: number;
8
+ endCharInRun?: number;
9
+ }
10
+ export interface RenderItem {
11
+ kind: 'paragraph' | 'image';
12
+ block: Block;
13
+ originalIndex: number;
14
+ paraIndex?: number;
15
+ }
16
+ export interface CalcPagesParams {
17
+ viewHost: HTMLElement;
18
+ measureRoot: HTMLElement;
19
+ contentArea: HTMLElement;
20
+ items: RenderItem[];
21
+ cfgMaxWidth: number;
22
+ marginX: number;
23
+ fontFamily: string | null | undefined;
24
+ fontSizePx: number;
25
+ lineHeight: number;
26
+ showSplit: boolean;
27
+ breakGapPx?: number;
28
+ showSlash: boolean;
29
+ paragraphMarkers: (string | undefined)[];
30
+ }
31
+ export interface CalcPagesResult {
32
+ pages: PageSlice[];
33
+ pageByRunIndex: Int32Array | null;
34
+ }
35
+ export declare class CalcPagesCanceled extends Error {
36
+ readonly code = "CALC_PAGES_CANCELED";
37
+ constructor();
38
+ }
39
+ export declare function calcPages(params: CalcPagesParams): Promise<CalcPagesResult>;
40
+ //# sourceMappingURL=calcPage.util_BACKclaude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calcPage.util_BACKclaude.d.ts","sourceRoot":"","sources":["../../src/utils/calcPage.util_BACKclaude.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAA8B,MAAM,sBAAsB,CAAC;AAG9E,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,cAAc,EAAE,UAAU,GAAG,IAAI,CAAC;CACnC;AAsBD,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,yBAAyB;;CAKvC;AA6eD,wBAAsB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAuIjF"}
@@ -0,0 +1,40 @@
1
+ import { Block } from '@readerseye2/cr_type';
2
+ export interface PageSlice {
3
+ startBlock: number;
4
+ endBlock: number;
5
+ startOffsetInBlock?: number;
6
+ endOffsetInBlock?: number;
7
+ startCharInRun?: number;
8
+ endCharInRun?: number;
9
+ }
10
+ export interface RenderItem {
11
+ kind: 'paragraph' | 'image';
12
+ block: Block;
13
+ originalIndex: number;
14
+ paraIndex?: number;
15
+ }
16
+ export interface CalcPagesParams {
17
+ viewHost: HTMLElement;
18
+ measureRoot: HTMLElement;
19
+ contentArea: HTMLElement;
20
+ items: RenderItem[];
21
+ cfgMaxWidth: number;
22
+ marginX: number;
23
+ fontFamily: string | null | undefined;
24
+ fontSizePx: number;
25
+ lineHeight: number;
26
+ showSplit: boolean;
27
+ breakGapPx?: number;
28
+ showSlash: boolean;
29
+ paragraphMarkers: (string | undefined)[];
30
+ }
31
+ export interface CalcPagesResult {
32
+ pages: PageSlice[];
33
+ pageByRunIndex: Int32Array | null;
34
+ }
35
+ export declare class CalcPagesCanceled extends Error {
36
+ readonly code: "CALC_PAGES_CANCELED";
37
+ constructor();
38
+ }
39
+ export declare function calcPages(params: CalcPagesParams): Promise<CalcPagesResult>;
40
+ //# sourceMappingURL=calcPage.util_BACKclaude_gptagain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calcPage.util_BACKclaude_gptagain.d.ts","sourceRoot":"","sources":["../../src/utils/calcPage.util_BACKclaude_gptagain.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAA8B,MAAM,sBAAsB,CAAC;AAK9E,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,cAAc,EAAE,UAAU,GAAG,IAAI,CAAC;CACnC;AA0BD,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAG,qBAAqB,CAAU;;CAKhD;AAqhBD,wBAAsB,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAsIjF"}
@@ -0,0 +1,40 @@
1
+ import { Block } from '@readerseye2/cr_type';
2
+ export type PageSlice = {
3
+ startBlock: number;
4
+ endBlock: number;
5
+ startOffsetInBlock?: number;
6
+ endOffsetInBlock?: number;
7
+ startCharInRun?: number;
8
+ endCharInRun?: number;
9
+ };
10
+ export type RenderItem = {
11
+ kind: 'paragraph' | 'image';
12
+ block: Block;
13
+ originalIndex: number;
14
+ paraIndex?: number;
15
+ };
16
+ export type CalcPagesParams = {
17
+ viewHost: HTMLElement;
18
+ measureRoot: HTMLElement;
19
+ contentArea: HTMLElement;
20
+ items: RenderItem[];
21
+ cfgMaxWidth: number;
22
+ marginX: number;
23
+ fontFamily?: string | null;
24
+ fontSizePx: number;
25
+ lineHeight: number;
26
+ showSplit: boolean;
27
+ breakGapPx?: number;
28
+ showSlash: boolean;
29
+ paragraphMarkers: (string | undefined)[];
30
+ };
31
+ export type CalcPagesResult = {
32
+ pages: PageSlice[];
33
+ pageByRunIndex: Int32Array | null;
34
+ };
35
+ export declare class CalcPagesCanceled extends Error {
36
+ readonly code = "CALC_PAGES_CANCELED";
37
+ constructor();
38
+ }
39
+ export declare function calcPages({ viewHost, measureRoot, contentArea, items, cfgMaxWidth, marginX, fontFamily, fontSizePx, lineHeight, showSplit, breakGapPx, showSlash, paragraphMarkers, }: CalcPagesParams): Promise<CalcPagesResult>;
40
+ //# sourceMappingURL=calcPage.util_BACKrecent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calcPage.util_BACKrecent.d.ts","sourceRoot":"","sources":["../../src/utils/calcPage.util_BACKrecent.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAA8B,MAAM,sBAAsB,CAAC;AAG9E,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAE5B,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IAGzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IAGnB,gBAAgB,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,cAAc,EAAE,UAAU,GAAG,IAAI,CAAC;CACnC,CAAC;AAiBF,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,yBAAyB;;CAKvC;AA8CD,wBAAsB,SAAS,CAAC,EAC9B,QAAQ,EACR,WAAW,EACX,WAAW,EACX,KAAK,EACL,WAAW,EACX,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAc,EACd,SAAS,EACT,gBAAgB,GACjB,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAud5C"}
@@ -0,0 +1,40 @@
1
+ import { Block } from '@readerseye2/cr_type';
2
+ export type PageSlice = {
3
+ startBlock: number;
4
+ endBlock: number;
5
+ startOffsetInBlock?: number;
6
+ endOffsetInBlock?: number;
7
+ startCharInRun?: number;
8
+ endCharInRun?: number;
9
+ };
10
+ export type RenderItem = {
11
+ kind: 'paragraph' | 'image';
12
+ block: Block;
13
+ originalIndex: number;
14
+ paraIndex?: number;
15
+ };
16
+ export type CalcPagesParams = {
17
+ viewHost: HTMLElement;
18
+ measureRoot: HTMLElement;
19
+ contentArea: HTMLElement;
20
+ items: RenderItem[];
21
+ cfgMaxWidth: number;
22
+ marginX: number;
23
+ fontFamily?: string | null;
24
+ fontSizePx: number;
25
+ lineHeight: number;
26
+ showSplit: boolean;
27
+ breakGapPx?: number;
28
+ showSlash: boolean;
29
+ paragraphMarkers: (string | undefined)[];
30
+ };
31
+ export type CalcPagesResult = {
32
+ pages: PageSlice[];
33
+ pageByRunIndex: Int32Array | null;
34
+ };
35
+ export declare class CalcPagesCanceled extends Error {
36
+ readonly code = "CALC_PAGES_CANCELED";
37
+ constructor();
38
+ }
39
+ export declare function calcPages({ viewHost, measureRoot, contentArea, items, cfgMaxWidth, marginX, fontFamily, fontSizePx, lineHeight, showSplit, breakGapPx, showSlash, paragraphMarkers, }: CalcPagesParams): Promise<CalcPagesResult>;
40
+ //# sourceMappingURL=calcPage.util_BACKv6_fast_Sf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calcPage.util_BACKv6_fast_Sf.d.ts","sourceRoot":"","sources":["../../src/utils/calcPage.util_BACKv6_fast_Sf.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAA8B,MAAM,sBAAsB,CAAC;AAG9E,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAE5B,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IAGzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IAGnB,gBAAgB,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,cAAc,EAAE,UAAU,GAAG,IAAI,CAAC;CACnC,CAAC;AAiBF,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,yBAAyB;;CAKvC;AA8CD,wBAAsB,SAAS,CAAC,EAC9B,QAAQ,EACR,WAAW,EACX,WAAW,EACX,KAAK,EACL,WAAW,EACX,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAc,EACd,SAAS,EACT,gBAAgB,GACjB,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAud5C"}
@@ -0,0 +1,3 @@
1
+ export declare const doubleRaf: () => Promise<void>;
2
+ export declare function doubleRafTime(times?: number): Promise<void>;
3
+ //# sourceMappingURL=doubleRaf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doubleRaf.d.ts","sourceRoot":"","sources":["../../src/utils/doubleRaf.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,qBAKlB,CAAC;AACL,wBAAsB,aAAa,CAAC,KAAK,SAAI,iBAI5C"}
@@ -0,0 +1,3 @@
1
+ import { SectionQuiz } from '@readerseye2/cr_type';
2
+ export declare function quizSrcOf(quiz: SectionQuiz): string | null;
3
+ //# sourceMappingURL=quizSrc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quizSrc.d.ts","sourceRoot":"","sources":["../../src/utils/quizSrc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,wBAAgB,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAU1D"}
@@ -0,0 +1,21 @@
1
+ import { Block, InlineRun, ParagraphBlock } from '@readerseye2/cr_type';
2
+ export declare function formatIndex(n: number, format?: string): string;
3
+ export declare function toCircled(n: number): string;
4
+ export declare function toRoman(num: number, upper?: boolean): string;
5
+ export declare function toAlpha(num: number, upper?: boolean): string;
6
+ export type OrderedCounter = {
7
+ next: (numId: number | string, level: number | string) => number;
8
+ reset: () => void;
9
+ };
10
+ export declare function createOrderedCounter(seed?: Map<string, number>): OrderedCounter;
11
+ export declare function computeOrderedMarker(p: ParagraphBlock, counter: OrderedCounter): string | undefined;
12
+ export declare function getRunCounts(blocks: Block[]): number[];
13
+ export declare function prefixSums(arr: number[]): number[];
14
+ export type SplitGroup = {
15
+ splitIndex: number;
16
+ runs: InlineRun[];
17
+ startG: number;
18
+ endG: number;
19
+ };
20
+ export declare function makeSplitGroups(runs: InlineRun[], baseIndex: number): SplitGroup[];
21
+ //# sourceMappingURL=sectionRender.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sectionRender.util.d.ts","sourceRoot":"","sources":["../../src/utils/sectionRender.util.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK7E,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAsB9D;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG3C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,UAAO,GAAG,MAAM,CA0BzD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,MAAM,CAS1D;AAKD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IACjE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,cAAc,CAa/E;AAED,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,cAAc,EACjB,OAAO,EAAE,cAAc,GACtB,MAAM,GAAG,SAAS,CASpB;AAKD,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,CAEtD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAIlD;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,CAyBlF"}
@@ -0,0 +1,3 @@
1
+ export declare const hasReadableChar: (s: string) => boolean;
2
+ export declare const getReadableText: (el: Element | null) => string;
3
+ //# sourceMappingURL=text.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.util.d.ts","sourceRoot":"","sources":["../../src/utils/text.util.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,GAAI,GAAG,MAAM,YAA6B,CAAC;AACvE,eAAO,MAAM,eAAe,GAAI,IAAI,OAAO,GAAG,IAAI,WAAmC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@readerseye2/cr_viewer",
3
+ "version": "1.0.1",
4
+ "type": "module",
5
+ "main": "./dist/index.cjs",
6
+ "module": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js",
12
+ "require": "./dist/index.cjs"
13
+ },
14
+ "./style.css": "./dist/style.css"
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "scripts": {
20
+ "dev": "vite",
21
+ "build": "vite build",
22
+ "build:lib": "vite build --mode lib",
23
+ "preview": "vite preview",
24
+ "deploy_npm": "npm run build:lib && npm version patch && npm publish --access public"
25
+ },
26
+ "peerDependencies": {
27
+ "react": "^18.0.0 || ^19.0.0",
28
+ "react-dom": "^18.0.0 || ^19.0.0"
29
+ },
30
+ "dependencies": {
31
+ "@readerseye2/cr_type": "^1.0.52",
32
+ "lodash": "^4.17.21",
33
+ "react-icons": "^5.0.0",
34
+ "react-virtuoso": "^4.0.0",
35
+ "use-sync-external-store": "^1.6.0",
36
+ "zustand": "^5.0.0"
37
+ },
38
+ "devDependencies": {
39
+ "@types/lodash": "^4.17.21",
40
+ "@types/react": "^19.0.0",
41
+ "@types/react-dom": "^19.0.0",
42
+ "@vitejs/plugin-react": "^4.3.0",
43
+ "react": "^19.0.0",
44
+ "react-dom": "^19.0.0",
45
+ "sass": "^1.80.0",
46
+ "typescript": "^5.8.0",
47
+ "vite": "^6.0.0",
48
+ "vite-plugin-dts": "^4.0.0"
49
+ },
50
+ "repository": {
51
+ "type": "git",
52
+ "url": "https://github.com/bnri/CR_viewer.git"
53
+ },
54
+ "author": "guripong",
55
+ "license": "MIT",
56
+ "publishConfig": {
57
+ "access": "public"
58
+ }
59
+ }