@foxycape/core 1.1.5 → 1.1.7

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 (516) hide show
  1. package/README.MD +0 -2
  2. package/README.zh.md +0 -2
  3. package/dist/ReaderHub.cjs +1 -0
  4. package/dist/ReaderHub.d.ts +20 -0
  5. package/dist/ReaderHub.mjs +59 -0
  6. package/dist/kernal/ContentRange.d.ts +1 -0
  7. package/dist/kernal/Context.cjs +1 -1
  8. package/dist/kernal/Context.mjs +13 -8
  9. package/dist/kernal/EventNames.cjs +1 -1
  10. package/dist/kernal/EventNames.d.ts +2 -0
  11. package/dist/kernal/EventNames.mjs +6 -0
  12. package/dist/kernal/FileLoader.cjs +1 -1
  13. package/dist/kernal/FileLoader.d.ts +3 -11
  14. package/dist/kernal/FileLoader.mjs +27 -22
  15. package/dist/kernal/JsonConvert.cjs +1 -1
  16. package/dist/kernal/JsonConvert.d.ts +0 -1
  17. package/dist/kernal/JsonConvert.mjs +17 -25
  18. package/dist/kernal/LifecycleHooks.d.ts +2 -1
  19. package/dist/kernal/Metadata.cjs +1 -1
  20. package/dist/kernal/Metadata.d.ts +34 -0
  21. package/dist/kernal/Metadata.mjs +47 -2
  22. package/dist/kernal/OpenOptions.d.ts +1 -0
  23. package/dist/kernal/Options.cjs +1 -1
  24. package/dist/kernal/Options.d.ts +2 -12
  25. package/dist/kernal/Options.mjs +1 -13
  26. package/dist/kernal/OptionsProvider.cjs +1 -1
  27. package/dist/kernal/OptionsProvider.d.ts +0 -2
  28. package/dist/kernal/OptionsProvider.mjs +6 -14
  29. package/dist/kernal/Reader.cjs +1 -1
  30. package/dist/kernal/Reader.d.ts +13 -12
  31. package/dist/kernal/Reader.mjs +119 -89
  32. package/dist/kernal/Theme.cjs +1 -1
  33. package/dist/kernal/Theme.mjs +1 -1
  34. package/dist/kernal/common/url.cjs +1 -1
  35. package/dist/kernal/common/url.d.ts +2 -0
  36. package/dist/kernal/common/url.mjs +2 -2
  37. package/dist/kernal/common/uuid.cjs +1 -1
  38. package/dist/kernal/common/uuid.mjs +7 -7
  39. package/dist/kernal/common/xxh64.cjs +1 -0
  40. package/dist/kernal/common/xxh64.d.ts +1 -0
  41. package/dist/kernal/common/xxh64.mjs +30 -0
  42. package/dist/kernal/crypto/MD5.cjs +1 -1
  43. package/dist/kernal/crypto/MD5.d.ts +0 -1
  44. package/dist/kernal/crypto/MD5.mjs +8 -9
  45. package/dist/kernal/crypto/WebCrypto.cjs +1 -1
  46. package/dist/kernal/crypto/WebCrypto.mjs +38 -35
  47. package/dist/kernal/deepClone/buffer.cjs +1 -1
  48. package/dist/kernal/deepClone/buffer.d.ts +8 -2
  49. package/dist/kernal/deepClone/buffer.mjs +1 -5
  50. package/dist/kernal/device/IDevice.d.ts +8 -2
  51. package/dist/kernal/device/WebBrowser.cjs +1 -1
  52. package/dist/kernal/device/WebBrowser.d.ts +12 -6
  53. package/dist/kernal/device/WebBrowser.mjs +70 -6
  54. package/dist/kernal/hostViewport.cjs +1 -0
  55. package/dist/kernal/hostViewport.d.ts +16 -0
  56. package/dist/kernal/hostViewport.mjs +44 -0
  57. package/dist/kernal/html/events.cjs +1 -1
  58. package/dist/kernal/html/events.mjs +35 -34
  59. package/dist/kernal/html/finder.cjs +1 -1
  60. package/dist/kernal/html/finder.d.ts +6 -2
  61. package/dist/kernal/html/finder.mjs +62 -51
  62. package/dist/kernal/html/geometry.cjs +1 -1
  63. package/dist/kernal/html/geometry.d.ts +26 -1
  64. package/dist/kernal/html/geometry.mjs +182 -121
  65. package/dist/kernal/html/manipulator.cjs +1 -1
  66. package/dist/kernal/html/manipulator.d.ts +1 -3
  67. package/dist/kernal/html/manipulator.mjs +34 -59
  68. package/dist/kernal/html/parser.cjs +1 -1
  69. package/dist/kernal/html/parser.mjs +3 -3
  70. package/dist/kernal/html/position.cjs +1 -1
  71. package/dist/kernal/html/position.d.ts +0 -18
  72. package/dist/kernal/html/position.mjs +2 -141
  73. package/dist/kernal/html/realm.cjs +1 -0
  74. package/dist/kernal/html/realm.d.ts +7 -0
  75. package/dist/kernal/html/realm.mjs +8 -0
  76. package/dist/kernal/html/selection.cjs +1 -1
  77. package/dist/kernal/html/selection.d.ts +1 -0
  78. package/dist/kernal/html/selection.mjs +33 -12
  79. package/dist/kernal/html/text.cjs +1 -1
  80. package/dist/kernal/html/text.d.ts +4 -3
  81. package/dist/kernal/html/text.mjs +24 -21
  82. package/dist/kernal/html/translationAnchor.cjs +1 -0
  83. package/dist/kernal/html/translationAnchor.d.ts +3 -0
  84. package/dist/kernal/html/translationAnchor.mjs +71 -0
  85. package/dist/kernal/i18n/DefaultLocale.cjs +1 -1
  86. package/dist/kernal/i18n/DefaultLocale.d.ts +2 -2
  87. package/dist/kernal/i18n/DefaultLocale.mjs +7 -12
  88. package/dist/kernal/i18n/ILocale.d.ts +0 -1
  89. package/dist/kernal/i18n/applyNamed.cjs +1 -0
  90. package/dist/kernal/i18n/applyNamed.d.ts +1 -0
  91. package/dist/kernal/i18n/applyNamed.mjs +9 -0
  92. package/dist/kernal/i18n/textDirection.cjs +1 -0
  93. package/dist/kernal/i18n/textDirection.d.ts +6 -0
  94. package/dist/kernal/i18n/textDirection.mjs +7 -0
  95. package/dist/kernal/index.cjs +1 -1
  96. package/dist/kernal/index.d.ts +6 -5
  97. package/dist/kernal/index.mjs +50 -45
  98. package/dist/kernal/mark/IHighlighter.cjs +1 -0
  99. package/dist/kernal/mark/IHighlighter.d.ts +43 -0
  100. package/dist/kernal/mark/IHighlighter.mjs +13 -0
  101. package/dist/kernal/mark/Mark.cjs +1 -1
  102. package/dist/kernal/mark/Mark.d.ts +33 -4
  103. package/dist/kernal/mark/Mark.mjs +43 -6
  104. package/dist/kernal/mark/index.cjs +1 -1
  105. package/dist/kernal/mark/index.d.ts +2 -0
  106. package/dist/kernal/mark/index.mjs +6 -3
  107. package/dist/kernal/mark/overlay.cjs +1 -0
  108. package/dist/kernal/mark/overlay.d.ts +31 -0
  109. package/dist/kernal/mark/overlay.mjs +102 -0
  110. package/dist/kernal/mark/types.cjs +1 -0
  111. package/dist/kernal/mark/types.d.ts +11 -2
  112. package/dist/kernal/mark/types.mjs +4 -0
  113. package/dist/kernal/navigator/INavigator.d.ts +3 -2
  114. package/dist/kernal/network/HttpClient.cjs +1 -1
  115. package/dist/kernal/network/HttpClient.mjs +80 -56
  116. package/dist/kernal/pipelines/FileLoadPipeline.cjs +1 -1
  117. package/dist/kernal/pipelines/FileLoadPipeline.mjs +55 -56
  118. package/dist/kernal/pipelines/InputFormatter.cjs +1 -1
  119. package/dist/kernal/pipelines/InputFormatter.mjs +43 -41
  120. package/dist/kernal/pipelines/metadata.cjs +1 -1
  121. package/dist/kernal/pipelines/metadata.d.ts +2 -1
  122. package/dist/kernal/pipelines/metadata.mjs +21 -30
  123. package/dist/kernal/plugins/keyboard/KeyboardPageTurning.cjs +1 -1
  124. package/dist/kernal/plugins/keyboard/KeyboardPageTurning.mjs +7 -6
  125. package/dist/kernal/plugins/mouse/WheelPageTurning.cjs +1 -1
  126. package/dist/kernal/plugins/mouse/WheelPageTurning.mjs +12 -11
  127. package/dist/kernal/progress/Progress.cjs +1 -1
  128. package/dist/kernal/progress/Progress.d.ts +5 -3
  129. package/dist/kernal/progress/Progress.mjs +2 -2
  130. package/dist/kernal/progress/userChangedProgress.cjs +1 -0
  131. package/dist/kernal/progress/userChangedProgress.d.ts +9 -0
  132. package/dist/kernal/progress/userChangedProgress.mjs +11 -0
  133. package/dist/kernal/screen/BrowserFullscreen.cjs +1 -0
  134. package/dist/kernal/screen/BrowserFullscreen.d.ts +9 -0
  135. package/dist/kernal/screen/BrowserFullscreen.mjs +47 -0
  136. package/dist/kernal/screen/IFullscreen.d.ts +6 -0
  137. package/dist/kernal/services/ServiceCollection.cjs +1 -1
  138. package/dist/kernal/services/ServiceCollection.d.ts +4 -6
  139. package/dist/kernal/services/ServiceCollection.mjs +18 -9
  140. package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.cjs +2 -2
  141. package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.d.ts +4 -2
  142. package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.mjs +31 -23
  143. package/dist/kernal/services/fileUrlParser/DefaultFileUrlParser.cjs +1 -1
  144. package/dist/kernal/services/fileUrlParser/DefaultFileUrlParser.mjs +52 -51
  145. package/dist/kernal/services/fileUrlParser/IFileUrlParser.d.ts +0 -1
  146. package/dist/kernal/services/font/IFontProvider.cjs +1 -1
  147. package/dist/kernal/services/font/IFontProvider.d.ts +3 -0
  148. package/dist/kernal/services/font/IFontProvider.mjs +1 -1
  149. package/dist/kernal/services/internalUrlBuilder/DefaultInternalUrlBuilder.cjs +1 -1
  150. package/dist/kernal/services/internalUrlBuilder/DefaultInternalUrlBuilder.mjs +8 -8
  151. package/dist/kernal/services/loading/DefaultLoading.cjs +1 -1
  152. package/dist/kernal/services/loading/DefaultLoading.d.ts +4 -0
  153. package/dist/kernal/services/loading/DefaultLoading.mjs +23 -24
  154. package/dist/kernal/services/text/splitter.cjs +1 -1
  155. package/dist/kernal/services/text/splitter.mjs +3 -3
  156. package/dist/kernal/types.d.ts +0 -5
  157. package/dist/kernal/web/BrowserCapabilities.cjs +1 -1
  158. package/dist/kernal/web/BrowserCapabilities.d.ts +0 -9
  159. package/dist/kernal/web/BrowserCapabilities.mjs +0 -49
  160. package/dist/kernal/{Debounce.mjs → web/debounce.mjs} +1 -1
  161. package/dist/kernal/web/scheduler.cjs +1 -0
  162. package/dist/kernal/web/scheduler.d.ts +3 -0
  163. package/dist/kernal/web/scheduler.mjs +7 -0
  164. package/dist/mediaTypes/base/fileParser/BaseFileParser.cjs +1 -1
  165. package/dist/mediaTypes/base/fileParser/BaseFileParser.mjs +59 -59
  166. package/dist/mediaTypes/html/DefaultHtmlSymbolMeasure.cjs +1 -0
  167. package/dist/mediaTypes/html/DefaultHtmlSymbolMeasure.d.ts +13 -0
  168. package/dist/mediaTypes/html/DefaultHtmlSymbolMeasure.mjs +109 -0
  169. package/dist/mediaTypes/html/HtmlOptions.cjs +1 -1
  170. package/dist/mediaTypes/html/HtmlOptions.d.ts +6 -12
  171. package/dist/mediaTypes/html/HtmlOptions.mjs +3 -14
  172. package/dist/mediaTypes/html/HtmlSettings.cjs +1 -1
  173. package/dist/mediaTypes/html/HtmlSettings.d.ts +16 -1
  174. package/dist/mediaTypes/html/HtmlSettings.mjs +46 -1
  175. package/dist/mediaTypes/html/IHtmlContentNormalizer.cjs +1 -0
  176. package/dist/mediaTypes/html/IHtmlContentNormalizer.d.ts +4 -0
  177. package/dist/mediaTypes/html/IHtmlContentNormalizer.mjs +4 -0
  178. package/dist/mediaTypes/html/IHtmlSymbolMeasure.d.ts +11 -0
  179. package/dist/mediaTypes/html/NoopHtmlContentNormalizer.cjs +1 -0
  180. package/dist/mediaTypes/html/NoopHtmlContentNormalizer.d.ts +5 -0
  181. package/dist/mediaTypes/html/NoopHtmlContentNormalizer.mjs +8 -0
  182. package/dist/mediaTypes/html/fileParser/HtmlFileParser.cjs +1 -1
  183. package/dist/mediaTypes/html/fileParser/HtmlFileParser.d.ts +5 -1
  184. package/dist/mediaTypes/html/fileParser/HtmlFileParser.mjs +15 -18
  185. package/dist/mediaTypes/html/fileParser/HtmlTextDocument.cjs +1 -1
  186. package/dist/mediaTypes/html/fileParser/HtmlTextDocument.mjs +25 -25
  187. package/dist/mediaTypes/html/fileParser/IHtmlFileParser.cjs +1 -0
  188. package/dist/mediaTypes/html/fileParser/IHtmlFileParser.d.ts +7 -3
  189. package/dist/mediaTypes/html/fileParser/IHtmlFileParser.mjs +4 -0
  190. package/dist/mediaTypes/html/renderer/HtmlRenderer.cjs +1 -1
  191. package/dist/mediaTypes/html/renderer/HtmlRenderer.d.ts +7 -1
  192. package/dist/mediaTypes/html/renderer/HtmlRenderer.mjs +65 -41
  193. package/dist/mediaTypes/html/renderer/IHtmlDocument.d.ts +6 -2
  194. package/dist/mediaTypes/html/renderer/IHtmlDocumentsProvider.d.ts +5 -0
  195. package/dist/mediaTypes/html/renderer/IHtmlRenderer.d.ts +3 -0
  196. package/dist/mediaTypes/html/renderer/document/HtmlDocument.cjs +1 -1
  197. package/dist/mediaTypes/html/renderer/document/HtmlDocument.d.ts +29 -6
  198. package/dist/mediaTypes/html/renderer/document/HtmlDocument.mjs +233 -86
  199. package/dist/mediaTypes/html/renderer/document/HtmlDocumentResizeObserver.cjs +1 -1
  200. package/dist/mediaTypes/html/renderer/document/HtmlDocumentResizeObserver.d.ts +8 -0
  201. package/dist/mediaTypes/html/renderer/document/HtmlDocumentResizeObserver.mjs +41 -5
  202. package/dist/mediaTypes/html/renderer/document/HtmlPageCalculator.cjs +1 -1
  203. package/dist/mediaTypes/html/renderer/document/HtmlPageCalculator.d.ts +2 -4
  204. package/dist/mediaTypes/html/renderer/document/HtmlPageCalculator.mjs +22 -59
  205. package/dist/mediaTypes/html/renderer/document/HtmlSymbolCalclator.cjs +1 -1
  206. package/dist/mediaTypes/html/renderer/document/HtmlSymbolCalclator.d.ts +3 -5
  207. package/dist/mediaTypes/html/renderer/document/HtmlSymbolCalclator.mjs +7 -25
  208. package/dist/mediaTypes/html/renderer/documents/HtmlContainerBuilder.cjs +1 -1
  209. package/dist/mediaTypes/html/renderer/documents/HtmlContainerBuilder.d.ts +0 -2
  210. package/dist/mediaTypes/html/renderer/documents/HtmlContainerBuilder.mjs +18 -42
  211. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsIntersectionObserver.cjs +1 -1
  212. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsIntersectionObserver.d.ts +2 -0
  213. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsIntersectionObserver.mjs +17 -4
  214. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsPreloader.cjs +1 -1
  215. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsPreloader.d.ts +16 -1
  216. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsPreloader.mjs +128 -54
  217. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.cjs +1 -1
  218. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.d.ts +26 -3
  219. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.mjs +227 -101
  220. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.cjs +1 -1
  221. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.d.ts +2 -0
  222. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.mjs +45 -25
  223. package/dist/mediaTypes/html/renderer/documents/documentHiddenState.cjs +1 -0
  224. package/dist/mediaTypes/html/renderer/documents/documentHiddenState.d.ts +6 -0
  225. package/dist/mediaTypes/html/renderer/documents/documentHiddenState.mjs +6 -0
  226. package/dist/mediaTypes/html/renderer/documents/preloadNeighbors.cjs +1 -0
  227. package/dist/mediaTypes/html/renderer/documents/preloadNeighbors.d.ts +2 -0
  228. package/dist/mediaTypes/html/renderer/documents/preloadNeighbors.mjs +13 -0
  229. package/dist/mediaTypes/html/renderer/documents/wrapperVisibility.cjs +1 -0
  230. package/dist/mediaTypes/html/renderer/documents/wrapperVisibility.d.ts +11 -0
  231. package/dist/mediaTypes/html/renderer/documents/wrapperVisibility.mjs +8 -0
  232. package/dist/mediaTypes/html/renderer/html/HtmlContentProcessor.cjs +1 -1
  233. package/dist/mediaTypes/html/renderer/html/HtmlContentProcessor.mjs +62 -62
  234. package/dist/mediaTypes/html/renderer/html/template.cjs +1 -1
  235. package/dist/mediaTypes/html/renderer/html/template.d.ts +3 -1
  236. package/dist/mediaTypes/html/renderer/html/template.mjs +9 -9
  237. package/dist/mediaTypes/html/renderer/image/HtmlImageLoader.cjs +1 -1
  238. package/dist/mediaTypes/html/renderer/image/HtmlImageLoader.d.ts +22 -12
  239. package/dist/mediaTypes/html/renderer/image/HtmlImageLoader.mjs +380 -270
  240. package/dist/mediaTypes/html/renderer/image/HtmlImageObserver.cjs +1 -1
  241. package/dist/mediaTypes/html/renderer/image/HtmlImageObserver.mjs +27 -27
  242. package/dist/mediaTypes/html/renderer/image/IHtmlImageLoader.d.ts +8 -0
  243. package/dist/mediaTypes/html/renderer/image/error-image.cjs +1 -1
  244. package/dist/mediaTypes/html/renderer/image/error-image.mjs +1 -1
  245. package/dist/mediaTypes/html/renderer/image/htmlImageFitStyles.cjs +1 -0
  246. package/dist/mediaTypes/html/renderer/image/htmlImageFitStyles.d.ts +10 -0
  247. package/dist/mediaTypes/html/renderer/image/htmlImageFitStyles.mjs +15 -0
  248. package/dist/mediaTypes/html/renderer/image/htmlImagePlaceholderUrl.cjs +1 -0
  249. package/dist/mediaTypes/html/renderer/image/htmlImagePlaceholderUrl.d.ts +2 -0
  250. package/dist/mediaTypes/html/renderer/image/htmlImagePlaceholderUrl.mjs +12 -0
  251. package/dist/mediaTypes/html/renderer/layout/HtmlRendererLayout.cjs +1 -1
  252. package/dist/mediaTypes/html/renderer/layout/HtmlRendererLayout.d.ts +6 -10
  253. package/dist/mediaTypes/html/renderer/layout/HtmlRendererLayout.mjs +71 -62
  254. package/dist/mediaTypes/html/renderer/layout/HtmlRendererViewport.cjs +1 -1
  255. package/dist/mediaTypes/html/renderer/layout/HtmlRendererViewport.d.ts +4 -1
  256. package/dist/mediaTypes/html/renderer/layout/HtmlRendererViewport.mjs +113 -68
  257. package/dist/mediaTypes/html/renderer/layout/IHtmlRendererLayout.d.ts +8 -3
  258. package/dist/mediaTypes/html/renderer/layout/ViewportCssVariableNames.cjs +1 -1
  259. package/dist/mediaTypes/html/renderer/layout/ViewportCssVariableNames.d.ts +5 -1
  260. package/dist/mediaTypes/html/renderer/layout/ViewportCssVariableNames.mjs +15 -3
  261. package/dist/mediaTypes/html/renderer/layout/applyLayoutClasses.cjs +1 -0
  262. package/dist/mediaTypes/html/renderer/layout/applyLayoutClasses.d.ts +8 -0
  263. package/dist/mediaTypes/html/renderer/layout/applyLayoutClasses.mjs +28 -0
  264. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-horizontal-tb-ltr.cjs +30 -0
  265. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-horizontal-tb-ltr.mjs +4 -0
  266. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-horizontal-tb-rtl.cjs +31 -0
  267. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-horizontal-tb-rtl.mjs +4 -0
  268. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-lr-ltr.cjs +30 -0
  269. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-lr-ltr.mjs +4 -0
  270. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-lr-rtl.cjs +30 -0
  271. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-lr-rtl.mjs +4 -0
  272. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-rl-ltr.cjs +30 -0
  273. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-rl-ltr.mjs +4 -0
  274. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-rl-rtl.cjs +30 -0
  275. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-rl-rtl.mjs +4 -0
  276. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-horizontal-tb-rtl.cjs +6 -0
  277. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-horizontal-tb-rtl.mjs +4 -0
  278. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-lr-ltr.cjs +10 -0
  279. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-lr-ltr.mjs +4 -0
  280. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-lr-rtl.cjs +10 -0
  281. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-lr-rtl.mjs +4 -0
  282. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-rl-ltr.cjs +10 -0
  283. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-rl-ltr.mjs +4 -0
  284. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-rl-rtl.cjs +10 -0
  285. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-rl-rtl.mjs +4 -0
  286. package/dist/mediaTypes/html/renderer/layout/css/document-default.cjs +19 -0
  287. package/dist/mediaTypes/html/renderer/layout/css/document-default.mjs +4 -0
  288. package/dist/mediaTypes/html/renderer/layout/css/hostLayoutCss.cjs +3 -0
  289. package/dist/mediaTypes/html/renderer/layout/css/hostLayoutCss.d.ts +2 -0
  290. package/dist/mediaTypes/html/renderer/layout/css/hostLayoutCss.mjs +56 -0
  291. package/dist/mediaTypes/html/renderer/layout/css/renderer-default.cjs +64 -0
  292. package/dist/mediaTypes/html/renderer/layout/css/renderer-default.mjs +4 -0
  293. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-horizontal-tb-ltr.cjs +33 -0
  294. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-horizontal-tb-ltr.mjs +4 -0
  295. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-horizontal-tb-rtl.cjs +33 -0
  296. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-horizontal-tb-rtl.mjs +4 -0
  297. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-lr-ltr.cjs +47 -0
  298. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-lr-ltr.mjs +4 -0
  299. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-lr-rtl.cjs +47 -0
  300. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-lr-rtl.mjs +4 -0
  301. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-rl-ltr.cjs +46 -0
  302. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-rl-ltr.mjs +4 -0
  303. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-rl-rtl.cjs +46 -0
  304. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-rl-rtl.mjs +4 -0
  305. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-horizontal-tb-rtl.cjs +7 -0
  306. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-horizontal-tb-rtl.mjs +4 -0
  307. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-lr-ltr.cjs +28 -0
  308. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-lr-ltr.mjs +4 -0
  309. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-lr-rtl.cjs +28 -0
  310. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-lr-rtl.mjs +4 -0
  311. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-rl-ltr.cjs +28 -0
  312. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-rl-ltr.mjs +4 -0
  313. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-rl-rtl.cjs +28 -0
  314. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-rl-rtl.mjs +4 -0
  315. package/dist/mediaTypes/html/renderer/layout/css/root-direction.cjs +8 -0
  316. package/dist/mediaTypes/html/renderer/layout/css/root-direction.mjs +4 -0
  317. package/dist/mediaTypes/html/renderer/layout/geometry/ILayoutGeometry.d.ts +128 -0
  318. package/dist/mediaTypes/html/renderer/layout/geometry/formatTranslate3d.cjs +1 -0
  319. package/dist/mediaTypes/html/renderer/layout/geometry/formatTranslate3d.d.ts +4 -0
  320. package/dist/mediaTypes/html/renderer/layout/geometry/formatTranslate3d.mjs +7 -0
  321. package/dist/mediaTypes/html/renderer/layout/geometry/getLayoutOffsetLeft.cjs +1 -0
  322. package/dist/mediaTypes/html/renderer/layout/geometry/getLayoutOffsetLeft.d.ts +1 -0
  323. package/dist/mediaTypes/html/renderer/layout/geometry/getLayoutOffsetLeft.mjs +13 -0
  324. package/dist/mediaTypes/html/renderer/layout/geometry/index.cjs +1 -0
  325. package/dist/mediaTypes/html/renderer/layout/geometry/index.d.ts +18 -0
  326. package/dist/mediaTypes/html/renderer/layout/geometry/index.mjs +30 -0
  327. package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbLtr.cjs +1 -0
  328. package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbLtr.d.ts +3 -0
  329. package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbLtr.mjs +71 -0
  330. package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbRtl.cjs +1 -0
  331. package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbRtl.d.ts +3 -0
  332. package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbRtl.mjs +74 -0
  333. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrLtr.cjs +1 -0
  334. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrLtr.d.ts +3 -0
  335. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrLtr.mjs +71 -0
  336. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrRtl.cjs +1 -0
  337. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrRtl.d.ts +3 -0
  338. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrRtl.mjs +71 -0
  339. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlLtr.cjs +1 -0
  340. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlLtr.d.ts +3 -0
  341. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlLtr.mjs +71 -0
  342. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlRtl.cjs +1 -0
  343. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlRtl.d.ts +3 -0
  344. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlRtl.mjs +71 -0
  345. package/dist/mediaTypes/html/renderer/layout/geometry/restoreLayoutState.cjs +1 -0
  346. package/dist/mediaTypes/html/renderer/layout/geometry/restoreLayoutState.d.ts +41 -0
  347. package/dist/mediaTypes/html/renderer/layout/geometry/restoreLayoutState.mjs +53 -0
  348. package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbLtr.cjs +1 -0
  349. package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbLtr.d.ts +3 -0
  350. package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbLtr.mjs +71 -0
  351. package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbRtl.cjs +1 -0
  352. package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbRtl.d.ts +3 -0
  353. package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbRtl.mjs +74 -0
  354. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrLtr.cjs +1 -0
  355. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrLtr.d.ts +3 -0
  356. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrLtr.mjs +71 -0
  357. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrRtl.cjs +1 -0
  358. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrRtl.d.ts +3 -0
  359. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrRtl.mjs +71 -0
  360. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlLtr.cjs +1 -0
  361. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlLtr.d.ts +3 -0
  362. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlLtr.mjs +74 -0
  363. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlRtl.cjs +1 -0
  364. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlRtl.d.ts +3 -0
  365. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlRtl.mjs +74 -0
  366. package/dist/mediaTypes/html/renderer/layout/layoutRouteIds.cjs +1 -0
  367. package/dist/mediaTypes/html/renderer/layout/layoutRouteIds.d.ts +10 -0
  368. package/dist/mediaTypes/html/renderer/layout/layoutRouteIds.mjs +17 -0
  369. package/dist/mediaTypes/html/renderer/layout/pageStripRouteChange.cjs +1 -0
  370. package/dist/mediaTypes/html/renderer/layout/pageStripRouteChange.d.ts +6 -0
  371. package/dist/mediaTypes/html/renderer/layout/pageStripRouteChange.mjs +24 -0
  372. package/dist/mediaTypes/html/renderer/layout/resolveContentWrapperMinWidth.cjs +1 -0
  373. package/dist/mediaTypes/html/renderer/layout/resolveContentWrapperMinWidth.d.ts +9 -0
  374. package/dist/mediaTypes/html/renderer/layout/resolveContentWrapperMinWidth.mjs +4 -0
  375. package/dist/mediaTypes/html/renderer/layout/resolveLayoutRoute.cjs +1 -0
  376. package/dist/mediaTypes/html/renderer/layout/resolveLayoutRoute.d.ts +11 -0
  377. package/dist/mediaTypes/html/renderer/layout/resolveLayoutRoute.mjs +9 -0
  378. package/dist/mediaTypes/html/renderer/location/HtmlElementLocator.cjs +1 -1
  379. package/dist/mediaTypes/html/renderer/location/HtmlElementLocator.mjs +32 -34
  380. package/dist/mediaTypes/html/renderer/location/HtmlLayoutStatePreserver.cjs +1 -0
  381. package/dist/mediaTypes/html/renderer/location/HtmlLayoutStatePreserver.d.ts +23 -0
  382. package/dist/mediaTypes/html/renderer/location/HtmlLayoutStatePreserver.mjs +164 -0
  383. package/dist/mediaTypes/html/renderer/location/remapStoredPageNumber.cjs +1 -0
  384. package/dist/mediaTypes/html/renderer/location/remapStoredPageNumber.d.ts +4 -0
  385. package/dist/mediaTypes/html/renderer/location/remapStoredPageNumber.mjs +13 -0
  386. package/dist/mediaTypes/html/renderer/location/scrollActivity.cjs +1 -0
  387. package/dist/mediaTypes/html/renderer/location/scrollActivity.d.ts +14 -0
  388. package/dist/mediaTypes/html/renderer/location/scrollActivity.mjs +18 -0
  389. package/dist/mediaTypes/html/renderer/navigator/HtmlCoreNavigator.cjs +1 -1
  390. package/dist/mediaTypes/html/renderer/navigator/HtmlCoreNavigator.mjs +2 -2
  391. package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointNavigator.cjs +1 -1
  392. package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointNavigator.mjs +3 -3
  393. package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointProvider.cjs +1 -1
  394. package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointProvider.mjs +55 -59
  395. package/dist/mediaTypes/html/renderer/navigator/HtmlPagingNavigator.cjs +1 -1
  396. package/dist/mediaTypes/html/renderer/navigator/HtmlPagingNavigator.d.ts +1 -0
  397. package/dist/mediaTypes/html/renderer/navigator/HtmlPagingNavigator.mjs +40 -39
  398. package/dist/mediaTypes/html/renderer/progress/HtmlProgressTracker.cjs +1 -1
  399. package/dist/mediaTypes/html/renderer/progress/HtmlProgressTracker.d.ts +2 -1
  400. package/dist/mediaTypes/html/renderer/progress/HtmlProgressTracker.mjs +36 -24
  401. package/dist/mediaTypes/html/renderer/style/ContentCssVariables.cjs +1 -1
  402. package/dist/mediaTypes/html/renderer/style/ContentCssVariables.d.ts +4 -0
  403. package/dist/mediaTypes/html/renderer/style/ContentCssVariables.mjs +19 -1
  404. package/dist/mediaTypes/html/renderer/style/ContentLayoutCssVariableNames.cjs +1 -1
  405. package/dist/mediaTypes/html/renderer/style/ContentLayoutCssVariableNames.d.ts +3 -0
  406. package/dist/mediaTypes/html/renderer/style/ContentLayoutCssVariableNames.mjs +9 -0
  407. package/dist/mediaTypes/html/renderer/style/HtmlStyleProvider.cjs +1 -1
  408. package/dist/mediaTypes/html/renderer/style/HtmlStyleProvider.d.ts +3 -0
  409. package/dist/mediaTypes/html/renderer/style/HtmlStyleProvider.mjs +28 -16
  410. package/dist/mediaTypes/html/renderer/style/HtmlThemeApplier.cjs +1 -1
  411. package/dist/mediaTypes/html/renderer/style/HtmlThemeApplier.d.ts +2 -0
  412. package/dist/mediaTypes/html/renderer/style/HtmlThemeApplier.mjs +39 -34
  413. package/dist/mediaTypes/html/renderer/style/ILanguageHighlighter.cjs +0 -0
  414. package/dist/mediaTypes/html/renderer/style/ILanguageHighlighter.d.ts +6 -0
  415. package/dist/mediaTypes/html/renderer/style/ILanguageHighlighter.mjs +0 -0
  416. package/dist/mediaTypes/html/renderer/style/LanguageHighlighter.cjs +1 -0
  417. package/dist/mediaTypes/html/renderer/style/LanguageHighlighter.d.ts +18 -0
  418. package/dist/mediaTypes/html/renderer/style/LanguageHighlighter.mjs +52 -0
  419. package/dist/mediaTypes/html/renderer/style/html-content.cjs +38 -7
  420. package/dist/mediaTypes/html/renderer/style/html-content.mjs +1 -1
  421. package/dist/mediaTypes/pdf/ensurePdfWebWorker.cjs +1 -1
  422. package/dist/mediaTypes/pdf/ensurePdfWebWorker.mjs +6 -13
  423. package/dist/mediaTypes/pdf/fileParser/PdfFileParser.cjs +1 -1
  424. package/dist/mediaTypes/pdf/fileParser/PdfFileParser.d.ts +5 -4
  425. package/dist/mediaTypes/pdf/fileParser/PdfFileParser.mjs +7 -3
  426. package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.cjs +1 -1
  427. package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.d.ts +4 -4
  428. package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.mjs +24 -14
  429. package/dist/mediaTypes/pdf/highlighter/PdfHighlightConstants.cjs +1 -0
  430. package/dist/mediaTypes/pdf/highlighter/PdfHighlightConstants.d.ts +6 -0
  431. package/dist/mediaTypes/pdf/highlighter/PdfHighlightConstants.mjs +4 -0
  432. package/dist/mediaTypes/pdf/highlighter/pdfHighlightStyles.cjs +1 -0
  433. package/dist/mediaTypes/pdf/highlighter/pdfHighlightStyles.d.ts +10 -0
  434. package/dist/mediaTypes/pdf/highlighter/pdfHighlightStyles.mjs +33 -0
  435. package/dist/mediaTypes/pdf/loadPdfDocument.cjs +1 -1
  436. package/dist/mediaTypes/pdf/loadPdfDocument.mjs +18 -19
  437. package/dist/mediaTypes/pdf/renderer/IPdfRenderer.d.ts +2 -0
  438. package/dist/mediaTypes/pdf/renderer/MultiPdfViewer.mjs +1 -1
  439. package/dist/mediaTypes/pdf/renderer/PdfCoreNavigator.cjs +1 -1
  440. package/dist/mediaTypes/pdf/renderer/PdfCoreNavigator.mjs +2 -2
  441. package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.cjs +1 -1
  442. package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.d.ts +0 -1
  443. package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.mjs +0 -3
  444. package/dist/mediaTypes/pdf/renderer/PdfDocument.cjs +1 -1
  445. package/dist/mediaTypes/pdf/renderer/PdfDocument.mjs +3 -3
  446. package/dist/mediaTypes/pdf/renderer/PdfNavPointNavigator.cjs +1 -1
  447. package/dist/mediaTypes/pdf/renderer/PdfNavPointNavigator.mjs +3 -3
  448. package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.cjs +1 -1
  449. package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.d.ts +3 -3
  450. package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.mjs +20 -19
  451. package/dist/mediaTypes/pdf/renderer/PdfRenderer.cjs +1 -1
  452. package/dist/mediaTypes/pdf/renderer/PdfRenderer.d.ts +1 -0
  453. package/dist/mediaTypes/pdf/renderer/PdfRenderer.mjs +20 -20
  454. package/dist/mediaTypes/pdf/renderer/PdfSvgBuilder.cjs +1 -1
  455. package/dist/mediaTypes/pdf/renderer/PdfSvgBuilder.mjs +51 -50
  456. package/dist/mediaTypes/pdf/renderer/documents/PdfDocumentsProvider.cjs +2 -2
  457. package/dist/mediaTypes/pdf/renderer/documents/PdfDocumentsProvider.mjs +55 -56
  458. package/dist/mediaTypes/pdf/renderer/documents/resolvePdfLocationPageNumber.cjs +1 -0
  459. package/dist/mediaTypes/pdf/renderer/documents/resolvePdfLocationPageNumber.d.ts +3 -0
  460. package/dist/mediaTypes/pdf/renderer/documents/resolvePdfLocationPageNumber.mjs +12 -0
  461. package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.cjs +1 -1
  462. package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.d.ts +4 -0
  463. package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.mjs +24 -5
  464. package/dist/mediaTypes/pdf/renderer/layout/PdfRendererViewport.cjs +1 -1
  465. package/dist/mediaTypes/pdf/renderer/layout/PdfRendererViewport.mjs +32 -32
  466. package/dist/mediaTypes/pdf/renderer/progress/PdfProgressTracker.cjs +1 -1
  467. package/dist/mediaTypes/pdf/renderer/progress/PdfProgressTracker.mjs +1 -1
  468. package/dist/mediaTypes/pdf/renderer/style/PdfThemeApplier.cjs +4 -4
  469. package/dist/mediaTypes/pdf/renderer/style/PdfThemeApplier.mjs +5 -5
  470. package/dist/mediaTypes/pdf/shared/geometry/index.cjs +1 -1
  471. package/dist/mediaTypes/pdf/shared/geometry/index.mjs +2 -2
  472. package/dist/mediaTypes/pdf/shared/geometry/selectionToFixedContentRange.cjs +1 -1
  473. package/dist/mediaTypes/pdf/shared/geometry/selectionToFixedContentRange.d.ts +14 -4
  474. package/dist/mediaTypes/pdf/shared/geometry/selectionToFixedContentRange.mjs +56 -24
  475. package/dist/mediaTypes/pdf/shared/text/pageText.cjs +2 -2
  476. package/dist/mediaTypes/pdf/shared/text/pageText.d.ts +14 -0
  477. package/dist/mediaTypes/pdf/shared/text/pageText.mjs +139 -47
  478. package/dist/node_modules/highlight.js/styles/github-dark.cjs +118 -0
  479. package/dist/node_modules/highlight.js/styles/github-dark.mjs +4 -0
  480. package/dist/node_modules/highlight.js/styles/github.cjs +118 -0
  481. package/dist/node_modules/highlight.js/styles/github.mjs +4 -0
  482. package/dist/pdfjs/package.json +1 -0
  483. package/global.d.ts +3 -1
  484. package/package.json +11 -5
  485. package/types.d.ts +48 -13
  486. package/dist/kernal/device/IEnvironment.d.ts +0 -5
  487. package/dist/kernal/device/IPlatform.d.ts +0 -7
  488. package/dist/kernal/device/WebEnvironment.cjs +0 -1
  489. package/dist/kernal/device/WebEnvironment.d.ts +0 -7
  490. package/dist/kernal/device/WebEnvironment.mjs +0 -22
  491. package/dist/kernal/device/WebPlatform.cjs +0 -1
  492. package/dist/kernal/device/WebPlatform.d.ts +0 -12
  493. package/dist/kernal/device/WebPlatform.mjs +0 -49
  494. package/dist/kernal/progress/IReadingProgressStore.d.ts +0 -7
  495. package/dist/kernal/progress/ReadingProgressStore.cjs +0 -1
  496. package/dist/kernal/progress/ReadingProgressStore.d.ts +0 -12
  497. package/dist/kernal/progress/ReadingProgressStore.mjs +0 -17
  498. package/dist/kernal/storage/IStorage.cjs +0 -1
  499. package/dist/kernal/storage/IStorage.d.ts +0 -21
  500. package/dist/kernal/storage/IStorage.mjs +0 -4
  501. package/dist/kernal/storage/WebStorage.cjs +0 -1
  502. package/dist/kernal/storage/WebStorage.d.ts +0 -31
  503. package/dist/kernal/storage/WebStorage.mjs +0 -165
  504. package/dist/mediaTypes/adjacent.cjs +0 -1
  505. package/dist/mediaTypes/adjacent.d.ts +0 -5
  506. package/dist/mediaTypes/adjacent.mjs +0 -42
  507. package/dist/mediaTypes/html/renderer/image/placeholder.cjs +0 -1
  508. package/dist/mediaTypes/html/renderer/image/placeholder.mjs +0 -4
  509. /package/dist/kernal/{device/IEnvironment.cjs → screen/IFullscreen.cjs} +0 -0
  510. /package/dist/kernal/{device/IEnvironment.mjs → screen/IFullscreen.mjs} +0 -0
  511. /package/dist/kernal/{Debounce.cjs → web/debounce.cjs} +0 -0
  512. /package/dist/kernal/{Debounce.d.ts → web/debounce.d.ts} +0 -0
  513. /package/dist/{kernal/device/IPlatform.cjs → mediaTypes/html/IHtmlSymbolMeasure.cjs} +0 -0
  514. /package/dist/{kernal/device/IPlatform.mjs → mediaTypes/html/IHtmlSymbolMeasure.mjs} +0 -0
  515. /package/dist/{kernal/progress/IReadingProgressStore.cjs → mediaTypes/html/renderer/layout/geometry/ILayoutGeometry.cjs} +0 -0
  516. /package/dist/{kernal/progress/IReadingProgressStore.mjs → mediaTypes/html/renderer/layout/geometry/ILayoutGeometry.mjs} +0 -0
@@ -1,12 +1,13 @@
1
1
  import { SpineFile as e } from "../../../kernal/IFileParser.mjs";
2
- import { getTotalSymbolCount as t } from "../../../kernal/html/position.mjs";
3
- import { convertUint8ArrayToString as n } from "../../../kernal/common/encoding.mjs";
4
- import { BaseFileParser as r } from "../../base/fileParser/BaseFileParser.mjs";
5
- import { HtmlTextDocument as i } from "./HtmlTextDocument.mjs";
2
+ import { getDocumentBody as t } from "../../../kernal/html/finder.mjs";
3
+ import { BaseFileParser as n } from "../../base/fileParser/BaseFileParser.mjs";
4
+ import { NoopHtmlContentNormalizer as r } from "../NoopHtmlContentNormalizer.mjs";
5
+ import { DefaultHtmlSymbolMeasure as i } from "../DefaultHtmlSymbolMeasure.mjs";
6
+ import { HtmlTextDocument as a } from "./HtmlTextDocument.mjs";
6
7
  //#region mediaTypes/html/fileParser/HtmlFileParser.ts
7
- var a = class extends r {
8
- constructor(e, t, n, r, i, a, o, s) {
9
- super(e, t, n, r, i, a, o), this.options = s;
8
+ var o = class extends n {
9
+ constructor(e, t, n, a, o, s, c, l, u, d) {
10
+ super(e, t, n, a, o, s, c), this.options = l, this.contentNormalizer = u ?? new r(), this.symbolMeasure = d ?? new i();
10
11
  }
11
12
  async parseUrl(t, n) {
12
13
  let r = await super.parseUrl(t, n);
@@ -26,20 +27,16 @@ var a = class extends r {
26
27
  this.textDocuments = [];
27
28
  let e = await this.getSpineFiles();
28
29
  for (let t = 0; t < e.length; t++) {
29
- let n = e[t], r = new i(this, n);
30
+ let n = e[t], r = new a(this, n);
30
31
  this.textDocuments.push(r);
31
32
  }
32
33
  return this.textDocuments;
33
34
  }
34
- async calculateSymbolCount(e, r) {
35
- let i;
36
- i = e.data ? new Uint8Array(await this.getSpineFileData(e)) : (await this.getFileBytes(e.url)).data;
37
- let a = n(i);
38
- return t(a, r, {
39
- removeHtmlWhitespace: this.options.removeHtmlWhitespace,
40
- whitespaceRegex: this.options.whitespaceRegex,
41
- nonWhiteSpaceSymbolTagNames: this.options.nonWhiteSpaceSymbolTagNames
42
- });
35
+ async calculateSymbolCount(e, n) {
36
+ let r = await this.getTextDocument(e.url);
37
+ if (!r) return 1;
38
+ let i = await r.getFormattedDocument();
39
+ return this.symbolMeasure.count(t(i), n);
43
40
  }
44
41
  async dispose() {
45
42
  if (this.textDocuments) {
@@ -50,4 +47,4 @@ var a = class extends r {
50
47
  }
51
48
  };
52
49
  //#endregion
53
- export { a as HtmlFileParser };
50
+ export { o as HtmlFileParser };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../kernal/common/uuid.cjs"),t=require("../../../kernal/common/text.cjs"),n=require("../../../kernal/Constants.cjs"),r=require("../../../kernal/html/finder.cjs"),i=require("../../../kernal/html/text.cjs"),a=require("../../../kernal/html/parser.cjs"),o=require("../../../kernal/html/manipulator.cjs"),s=require("../../../kernal/common/encoding.cjs");var c=class{constructor(e,t){this.texts=new Map,this.fileParser=e,this.spineFile=t}get url(){return this.spineFile.url}async getPlaintext(n){let a=e.computeUniqueId(JSON.stringify(n??{}));if(this.texts.has(a))return this.texts.get(a);let o=await this.getFormattedDocument(),s=i.getPureTextContent(r.getDocumentBody(o),void 0,void 0,n?.convertLFToWhitespace);return n&&(s=t.formatText(s,n)),this.texts.set(a,s),s}async getContent(){if(this.docContent)return this.docContent;let e=``;if(this.spineFile.data){if(this.spineFile.data instanceof ArrayBuffer)e=s.convertArrayBufferToString(this.spineFile.data);else if(this.spineFile.data instanceof Blob){let t=await this.spineFile.data.arrayBuffer();e=s.convertArrayBufferToString(t)}}else{let t=await this.fileParser.getFile(this.url);e=s.convertUint8ArrayToString(t)}return this.fileParser.options.removeHtmlWhitespace&&this.fileParser.options.whitespaceRegex&&(e=e.replace(this.fileParser.options.whitespaceRegex,``),this.fileParser.options.forceRemoveHtmlChar32BetweenTags&&(e=i.removeWhiteSpaceBetweenTags(e,this.fileParser.options.removeHtmlWhitespace))),e=s.removeBomHeader(e??``),this.docContent=e,e}async getFormattedDocument(){if(!this.formattedDocument){let e=await this.getContent(),t=await a.getFormatDocumentAsync(e,!0);o.wrapFloatingTextNodes(t,this.fileParser.options.wrapFullTextNode);let r=t.getElementsByTagName(`*`);for(let e=r.length-1;e>=0;e--)r[e].setAttribute(n.ElementInitialNumberName,e.toString());this.formattedDocument=t}return this.formattedDocument.cloneNode(!0)}async dispose(){this.texts&&this.texts.clear(),this.docContent=null,this.formattedDocument=null}};exports.HtmlTextDocument=c;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../kernal/common/encoding.cjs"),t=require("../../../kernal/common/uuid.cjs"),n=require("../../../kernal/common/text.cjs"),r=require("../../../kernal/Constants.cjs"),i=require("../../../kernal/html/finder.cjs"),a=require("../../../kernal/html/text.cjs"),o=require("../../../kernal/html/parser.cjs"),s=require("../../../kernal/html/manipulator.cjs");var c=class{constructor(e,t){this.texts=new Map,this.fileParser=e,this.spineFile=t}get url(){return this.spineFile.url}async getPlaintext(e){let r=t.computeUniqueId(JSON.stringify(e??{}));if(this.texts.has(r))return this.texts.get(r);let o=await this.getFormattedDocument(),s=a.getPureTextContent(i.getDocumentBody(o),e?.convertLFToWhitespace);return e&&(s=n.formatText(s,e)),this.texts.set(r,s),s}async getContent(){if(this.docContent)return this.docContent;let t=``;if(this.spineFile.data){if(this.spineFile.data instanceof ArrayBuffer)t=e.convertArrayBufferToString(this.spineFile.data);else if(this.spineFile.data instanceof Blob){let n=await this.spineFile.data.arrayBuffer();t=e.convertArrayBufferToString(n)}}else{let n=await this.fileParser.getFile(this.url);t=e.convertUint8ArrayToString(n)}return t=e.removeBomHeader(t??``),this.docContent=this.fileParser.contentNormalizer.normalize(t),this.docContent}async getFormattedDocument(){if(!this.formattedDocument){let e=await this.getContent(),t=await o.getFormatDocumentAsync(e,!0);s.wrapFloatingTextNodes(t,this.fileParser.options.wrapFullTextNode);let n=t.getElementsByTagName(`*`);for(let e=n.length-1;e>=0;e--)n[e].setAttribute(r.ElementInitialNumberName,e.toString());this.formattedDocument=t}return this.formattedDocument.cloneNode(!0)}async dispose(){this.texts&&this.texts.clear(),this.docContent=null,this.formattedDocument=null}};exports.HtmlTextDocument=c;
@@ -1,46 +1,46 @@
1
- import { computeUniqueId as e } from "../../../kernal/common/uuid.mjs";
2
- import { formatText as t } from "../../../kernal/common/text.mjs";
3
- import { ElementInitialNumberName as n } from "../../../kernal/Constants.mjs";
4
- import { getDocumentBody as r } from "../../../kernal/html/finder.mjs";
5
- import { getPureTextContent as i, removeWhiteSpaceBetweenTags as a } from "../../../kernal/html/text.mjs";
6
- import { getFormatDocumentAsync as o } from "../../../kernal/html/parser.mjs";
7
- import { wrapFloatingTextNodes as s } from "../../../kernal/html/manipulator.mjs";
8
- import { convertArrayBufferToString as c, convertUint8ArrayToString as l, removeBomHeader as u } from "../../../kernal/common/encoding.mjs";
1
+ import { convertArrayBufferToString as e, convertUint8ArrayToString as t, removeBomHeader as n } from "../../../kernal/common/encoding.mjs";
2
+ import { computeUniqueId as r } from "../../../kernal/common/uuid.mjs";
3
+ import { formatText as i } from "../../../kernal/common/text.mjs";
4
+ import { ElementInitialNumberName as a } from "../../../kernal/Constants.mjs";
5
+ import { getDocumentBody as o } from "../../../kernal/html/finder.mjs";
6
+ import { getPureTextContent as s } from "../../../kernal/html/text.mjs";
7
+ import { getFormatDocumentAsync as c } from "../../../kernal/html/parser.mjs";
8
+ import { wrapFloatingTextNodes as l } from "../../../kernal/html/manipulator.mjs";
9
9
  //#region mediaTypes/html/fileParser/HtmlTextDocument.ts
10
- var d = class {
10
+ var u = class {
11
11
  constructor(e, t) {
12
12
  this.texts = /* @__PURE__ */ new Map(), this.fileParser = e, this.spineFile = t;
13
13
  }
14
14
  get url() {
15
15
  return this.spineFile.url;
16
16
  }
17
- async getPlaintext(n) {
18
- let a = e(JSON.stringify(n ?? {}));
19
- if (this.texts.has(a)) return this.texts.get(a);
20
- let o = await this.getFormattedDocument(), s = i(r(o), void 0, void 0, n?.convertLFToWhitespace);
21
- return n && (s = t(s, n)), this.texts.set(a, s), s;
17
+ async getPlaintext(e) {
18
+ let t = r(JSON.stringify(e ?? {}));
19
+ if (this.texts.has(t)) return this.texts.get(t);
20
+ let n = await this.getFormattedDocument(), a = s(o(n), e?.convertLFToWhitespace);
21
+ return e && (a = i(a, e)), this.texts.set(t, a), a;
22
22
  }
23
23
  async getContent() {
24
24
  if (this.docContent) return this.docContent;
25
- let e = "";
25
+ let r = "";
26
26
  if (this.spineFile.data) {
27
- if (this.spineFile.data instanceof ArrayBuffer) e = c(this.spineFile.data);
27
+ if (this.spineFile.data instanceof ArrayBuffer) r = e(this.spineFile.data);
28
28
  else if (this.spineFile.data instanceof Blob) {
29
29
  let t = await this.spineFile.data.arrayBuffer();
30
- e = c(t);
30
+ r = e(t);
31
31
  }
32
32
  } else {
33
- let t = await this.fileParser.getFile(this.url);
34
- e = l(t);
33
+ let e = await this.fileParser.getFile(this.url);
34
+ r = t(e);
35
35
  }
36
- return this.fileParser.options.removeHtmlWhitespace && this.fileParser.options.whitespaceRegex && (e = e.replace(this.fileParser.options.whitespaceRegex, ""), this.fileParser.options.forceRemoveHtmlChar32BetweenTags && (e = a(e, this.fileParser.options.removeHtmlWhitespace))), e = u(e ?? ""), this.docContent = e, e;
36
+ return r = n(r ?? ""), this.docContent = this.fileParser.contentNormalizer.normalize(r), this.docContent;
37
37
  }
38
38
  async getFormattedDocument() {
39
39
  if (!this.formattedDocument) {
40
- let e = await this.getContent(), t = await o(e, !0);
41
- s(t, this.fileParser.options.wrapFullTextNode);
42
- let r = t.getElementsByTagName("*");
43
- for (let e = r.length - 1; e >= 0; e--) r[e].setAttribute(n, e.toString());
40
+ let e = await this.getContent(), t = await c(e, !0);
41
+ l(t, this.fileParser.options.wrapFullTextNode);
42
+ let n = t.getElementsByTagName("*");
43
+ for (let e = n.length - 1; e >= 0; e--) n[e].setAttribute(a, e.toString());
44
44
  this.formattedDocument = t;
45
45
  }
46
46
  return this.formattedDocument.cloneNode(!0);
@@ -50,4 +50,4 @@ var d = class {
50
50
  }
51
51
  };
52
52
  //#endregion
53
- export { d as HtmlTextDocument };
53
+ export { u as HtmlTextDocument };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=e=>e;exports.asHtmlFileParser=e;
@@ -1,9 +1,13 @@
1
- import { IFileParser, TextSymbolOptions } from '../../../kernal';
1
+ import { IFileParser } from '../../../kernal';
2
+ import { IHtmlContentNormalizer } from '../IHtmlContentNormalizer';
3
+ import { IHtmlSymbolMeasure } from '../IHtmlSymbolMeasure';
2
4
 
3
5
  export interface IHtmlFileParser extends IFileParser {
4
6
  options: HtmlFileParserOptions;
7
+ readonly contentNormalizer: IHtmlContentNormalizer;
8
+ readonly symbolMeasure: IHtmlSymbolMeasure;
5
9
  }
6
- export type HtmlFileParserOptions = TextSymbolOptions & {
7
- forceRemoveHtmlChar32BetweenTags?: boolean;
10
+ export declare const asHtmlFileParser: (fileParser: IFileParser) => IHtmlFileParser;
11
+ export type HtmlFileParserOptions = {
8
12
  wrapFullTextNode?: boolean;
9
13
  };
@@ -0,0 +1,4 @@
1
+ //#region mediaTypes/html/fileParser/IHtmlFileParser.ts
2
+ var e = (e) => e;
3
+ //#endregion
4
+ export { e as asHtmlFileParser };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../kernal/Options.cjs"),t=require("../../../kernal/Theme.cjs"),n=require("../../../kernal/common/uuid.cjs"),r=require("../../../kernal/EventNames.cjs"),i=require("../../../kernal/html/events.cjs"),a=require("../HtmlOptions.cjs"),o=require("./navigator/HtmlCoreNavigator.cjs"),s=require("./navigator/HtmlPagingNavigator.cjs"),c=require("./navigator/HtmlNavPointNavigator.cjs"),l=require("./navigator/HtmlNavPointProvider.cjs"),u=require("./progress/HtmlProgressTracker.cjs"),d=require("./documents/HtmlDocumentsProvider.cjs"),f=require("./layout/HtmlRendererLayout.cjs"),p=require("./style/HtmlStyleProvider.cjs"),m=require("./style/HtmlThemeApplier.cjs"),h=require("./documents/HtmlDocumentsResizeObserver.cjs"),g=require("./html/HtmlContentProcessor.cjs"),_=require("./image/HtmlImageLoader.cjs"),v=require("./image/HtmlImageObserver.cjs");var y=class extends d.HtmlDocumentsProvider{constructor(t,r,i,d){super(t,r,i,d),this.isInitRenderer=!1,this.injectProcessHandlers=()=>{this.addDocumentPreprocess(this.preprocessHandler)},this.preprocessHandler=async e=>{await this.contentProcessor.preprocess(e),await this.styleProvider.injectStyles(e);let t=await this.resolveCurrentTheme();t&&await this.themeApplier.applyToDocument(e,t),await this.rendererLayout.applyDocStyles(e),await this.imageLoader.preprocessImages(e)},this.onPageChange=async()=>{this.progressTracker.notifyProgressChange()},this.onOptionsChange=async t=>{let n=this.getRendererContainer();if(!(!n||!n.ownerDocument.defaultView)&&(e.isOptionKey(t)||a.isHtmlOptionKey(t))){let e=a.isHtmlOptionKey(t);if(e){if(!this.owner.context.currentLocation?.precise){let e=await this.progressTracker.getProgress(!0);e&&(this.owner.context.currentLocation=e.location)}this.owner.context.setUserChangedProgress(!1)}this.rendererViewport.applyCssVariables(),e&&(this.owner.context.userChangedProgress||await this.reload())}},this.progressTracker=new u.HtmlProgressTracker(t,this,d),this.rendererLayout=new f.HtmlRendererLayout(t,this,this.rendererViewport,this.progressTracker,d),this.navPointProvider=new l.HtmlNavPointProvider(this,d),this.navigator=new o.HtmlCoreNavigator(this,d),this.navPointNavigator=new c.HtmlNavPointNavigator(t.locale,t.notifier,this,this.navigator,this.navPointProvider),this.pagingNavigator=new s.HtmlPagingNavigator(this,this.navigator,d),this.styleProvider=new p.HtmlStyleProvider(this),this.currentInstanceId=n.getRandomId(!0),this.themeApplier=new m.HtmlThemeApplier(this),this.documentsResizeObserver=new h.HtmlDocumentsResizeObserver(this,this.rendererViewport,this.progressTracker,this.rendererLayout),this.contentProcessor=new g.HtmlContentProcessor(r),this.imageLoader=new _.HtmlImageLoader(this,this.rendererViewport,d),this.imageObserver=new v.HtmlImageObserver(this,d),this.bindEvents(),this.bindScrollWatch(),this.injectProcessHandlers()}get id(){return this.currentInstanceId}async resolveCurrentTheme(){return(await this.owner.services.get(`themeProvider`))?.getCurrentTheme()??new t.Theme}bindEvents(){this.owner.events.on(r.EventNames.OptionsChange,this.onOptionsChange),this.owner.events.on(r.EventNames.PageChange,this.onPageChange)}unbindEvents(){this.owner.events.off(r.EventNames.OptionsChange,this.onOptionsChange),this.owner.events.off(r.EventNames.PageChange,this.onPageChange)}bindScrollWatch(){let e=this.getScrollElement();e&&(this.scrollWatchState=i.watchScroll(e,this.owner.options.calcScrollDirection,async(e,t)=>{this.owner.events.emit(r.EventNames.ReaderDebounceScroll,e,t),this.progressTracker.notifyProgressChange()},e=>{this.owner.onProgressChangeGuard&&this.owner.context?.progress?.current&&(this.owner.onProgressChangeGuard(this.owner.context.progress.current)||e.preventDefault()),this.owner.events.emit(r.EventNames.ReaderOriginalScroll,e)}))}async load(e,t){e||=this.owner.context.progress?.location,this.isInitRenderer||(this.isInitRenderer=!0,this.documentsResizeObserver.register(),this.imageObserver.register()),await super.load(e,t)}getFileParser(){return this.fileParser}get writingMode(){return this.htmlOptions.writingMode??`horizontal-tb`}get direction(){return this.htmlOptions.direction??`ltr`}get layout(){return this.rendererLayout}async applyTheme(e){await this.themeApplier.applyTheme(e)}async dispose(){this.unbindEvents();let e=this.getScrollElement();e&&this.scrollWatchState?._eventHandler&&(e.removeEventListener(`scroll`,this.scrollWatchState._eventHandler,!0),this.scrollWatchState=void 0),await this.progressTracker.dispose(),await this.imageObserver.dispose(),await this.imageLoader.dispose(),await super.dispose(),await this.styleProvider?.dispose(),await this.navPointProvider?.dispose(),await this.pagingNavigator?.dispose(),await this.documentsResizeObserver.dispose(),await this.contentProcessor.dispose()}};exports.HtmlRenderer=y;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../kernal/EventNames.cjs"),t=require("../../../kernal/common/uuid.cjs"),n=require("../../../kernal/Options.cjs"),r=require("../../../kernal/Theme.cjs"),i=require("../../../kernal/web/scheduler.cjs"),a=require("../../../kernal/html/events.cjs"),o=require("../HtmlOptions.cjs"),s=require("./navigator/HtmlCoreNavigator.cjs"),c=require("./layout/resolveLayoutRoute.cjs"),l=require("./navigator/HtmlPagingNavigator.cjs"),u=require("./navigator/HtmlNavPointNavigator.cjs"),d=require("./navigator/HtmlNavPointProvider.cjs"),f=require("./progress/HtmlProgressTracker.cjs"),p=require("./location/scrollActivity.cjs"),m=require("./documents/HtmlDocumentsProvider.cjs"),h=require("./layout/HtmlRendererLayout.cjs"),g=require("./style/HtmlStyleProvider.cjs"),_=require("./style/HtmlThemeApplier.cjs"),v=require("./documents/HtmlDocumentsResizeObserver.cjs"),y=require("./html/HtmlContentProcessor.cjs"),b=require("./image/HtmlImageLoader.cjs"),x=require("./image/HtmlImageObserver.cjs");var S=class extends m.HtmlDocumentsProvider{constructor(e,r,a,c){super(e,r,a,c),this.isInitRenderer=!1,this.injectProcessHandlers=()=>{this.addDocumentPreprocess(this.preprocessHandler)},this.preprocessHandler=async e=>{await this.contentProcessor.preprocess(e),await this.styleProvider.injectStyles(e);let t=await this.resolveCurrentTheme();t&&await this.themeApplier.applyToDocument(e,t),await this.rendererLayout.applyDocStyles(e),await this.imageLoader.preprocessImages(e);let n=await this.getHighlighter();n&&await n.highlight(e)},this.onPageChange=async()=>{this.progressTracker.notifyProgressChange()},this.onDocumentSizeChange=async()=>{this.owner.context.userChangedProgress||p.isProgrammaticScroll()||p.isUserScrollSettling()||await this.delayRestoreReadingPosition()},this.onOptionsChange=async e=>{let t=this.getRendererContainer();if(!(!t||!t.ownerDocument.defaultView)&&(n.isOptionKey(e)||o.isHtmlOptionKey(e))){let t=o.isHtmlOptionKey(e);if(t){if(!this.owner.context.currentLocation?.precise){let e=await this.progressTracker.getProgress(!0);e&&(this.owner.context.currentLocation=e.location)}this.owner.context.setUserChangedProgress(!1)}if(this.rendererViewport.applyCssVariables(),await i.yieldToMain(),t){for(let e of this.getLoadedDocuments())await this.rendererLayout.applyDocStyles(e);this.owner.context.userChangedProgress||await this.reload()}}},this.progressTracker=new f.HtmlProgressTracker(e,this,c),this.rendererLayout=new h.HtmlRendererLayout(e,this,this.rendererViewport,this.progressTracker,c),this.navPointProvider=new d.HtmlNavPointProvider(this,c),this.navigator=new s.HtmlCoreNavigator(this,c),this.navPointNavigator=new u.HtmlNavPointNavigator(e.locale,e.notifier,this,this.navigator,this.navPointProvider),this.pagingNavigator=new l.HtmlPagingNavigator(this,this.navigator,c),this.styleProvider=new g.HtmlStyleProvider(this),this.currentInstanceId=t.getRandomId(!0),this.themeApplier=new _.HtmlThemeApplier(this),this.documentsResizeObserver=new v.HtmlDocumentsResizeObserver(this,this.rendererViewport,this.progressTracker,this.rendererLayout),this.contentProcessor=new y.HtmlContentProcessor(r),this.imageLoader=this.createImageLoader(),this.imageObserver=new x.HtmlImageObserver(this,c),this.bindEvents(),this.bindScrollWatch(),this.injectProcessHandlers()}get id(){return this.currentInstanceId}createImageLoader(){return new b.HtmlImageLoader(this,this.rendererViewport,this.htmlOptions)}async resolveCurrentTheme(){return(await this.owner.services.get(`themeProvider`))?.getCurrentTheme()??new r.Theme}async getHighlighter(){if(this.htmlOptions.enableFormatCodeBlock){if(!this.languageHighlighter){let{LanguageHighlighter:e}=await Promise.resolve().then(()=>require("./style/LanguageHighlighter.cjs"));this.languageHighlighter=new e(this)}return this.languageHighlighter}}bindEvents(){this.owner.events.on(e.EventNames.OptionsChange,this.onOptionsChange),this.owner.events.on(e.EventNames.PageChange,this.onPageChange),this.owner.events.on(e.EventNames.DocumentSizeChange,this.onDocumentSizeChange)}unbindEvents(){this.owner.events.off(e.EventNames.OptionsChange,this.onOptionsChange),this.owner.events.off(e.EventNames.PageChange,this.onPageChange),this.owner.events.off(e.EventNames.DocumentSizeChange,this.onDocumentSizeChange)}bindScrollWatch(){let t=this.owner.getHostViewport();this.scrollWatchTarget=t.mode==`window`?t.scrollWatchTarget:this.getScrollElement(),this.scrollWatchTarget&&(this.scrollWatchState=a.watchScroll(this.scrollWatchTarget,this.owner.options.calcScrollDirection,async(t,n)=>{this.owner.events.emit(e.EventNames.ReaderDebounceScroll,t,n),this.progressTracker.notifyProgressChange()},t=>{p.isProgrammaticScroll()||!t.isTrusted||(this.owner.onProgressChangeGuard&&this.owner.context?.progress?.current&&(this.owner.onProgressChangeGuard(this.owner.context.progress.current)||t.preventDefault()),p.markUserScroll(),p.releaseAbsoluteLocate(),this.owner.events.emit(e.EventNames.ReaderOriginalScroll,t))}))}async load(e,t){e||=this.owner.context.progress?.location,this.isInitRenderer||(this.isInitRenderer=!0,this.documentsResizeObserver.register(),this.imageObserver.register()),await super.load(e,t)}getFileParser(){return this.fileParser}get writingMode(){return this.htmlOptions.writingMode??`horizontal-tb`}get direction(){return c.resolveHtmlTextDirection(this.htmlOptions)}get layout(){return this.rendererLayout}async applyTheme(e){await this.themeApplier.applyTheme(e);let t=await this.getHighlighter();t&&await t.applyTheme(e)}async dispose(){this.unbindEvents();let e=this.scrollWatchTarget??this.getScrollElement();e&&this.scrollWatchState?._eventHandler&&(e.removeEventListener(`scroll`,this.scrollWatchState._eventHandler,!0),this.scrollWatchState=void 0,this.scrollWatchTarget=void 0),await this.progressTracker.dispose(),await this.imageObserver.dispose(),await this.imageLoader.dispose(),await super.dispose(),await this.styleProvider?.dispose(),await this.languageHighlighter?.dispose(),this.languageHighlighter=void 0,await this.navPointProvider?.dispose(),await this.pagingNavigator?.dispose(),await this.documentsResizeObserver.dispose(),await this.contentProcessor.dispose()}};exports.HtmlRenderer=S;
@@ -6,6 +6,7 @@ import { HtmlOptions } from '../HtmlOptions';
6
6
  import { IHtmlProgressTracker } from './progress/IHtmlIProgressTracker';
7
7
  import { IHtmlRendererLayout } from './layout/IHtmlRendererLayout';
8
8
  import { IHtmlDocument } from './IHtmlDocument';
9
+ import { IHtmlImageLoader } from './image/IHtmlImageLoader';
9
10
 
10
11
  export declare class HtmlRenderer extends HtmlDocumentsProvider implements IHtmlRenderer {
11
12
  readonly progressTracker: IHtmlProgressTracker;
@@ -20,18 +21,23 @@ export declare class HtmlRenderer extends HtmlDocumentsProvider implements IHtml
20
21
  private readonly themeApplier;
21
22
  private readonly documentsResizeObserver;
22
23
  private readonly contentProcessor;
23
- private readonly imageLoader;
24
+ protected imageLoader: IHtmlImageLoader;
24
25
  private readonly imageObserver;
26
+ private scrollWatchTarget?;
25
27
  private scrollWatchState?;
26
28
  constructor(owner: Reader, fileParser: IFileParser, readerContainer: HTMLElement, htmlOptions: HtmlOptions);
27
29
  get id(): string;
30
+ protected createImageLoader(): IHtmlImageLoader;
28
31
  private injectProcessHandlers;
29
32
  private resolveCurrentTheme;
30
33
  protected preprocessHandler: (doc: IHtmlDocument) => Promise<void>;
34
+ private languageHighlighter?;
35
+ private getHighlighter;
31
36
  protected bindEvents(): void;
32
37
  protected unbindEvents(): void;
33
38
  private bindScrollWatch;
34
39
  private onPageChange;
40
+ private onDocumentSizeChange;
35
41
  private onOptionsChange;
36
42
  load(location?: FileLocation, isReload?: boolean): Promise<void>;
37
43
  getFileParser(): IFileParser;
@@ -1,66 +1,88 @@
1
- import { isOptionKey as e } from "../../../kernal/Options.mjs";
2
- import { Theme as t } from "../../../kernal/Theme.mjs";
3
- import { getRandomId as n } from "../../../kernal/common/uuid.mjs";
4
- import { EventNames as r } from "../../../kernal/EventNames.mjs";
5
- import { watchScroll as i } from "../../../kernal/html/events.mjs";
6
- import { isHtmlOptionKey as a } from "../HtmlOptions.mjs";
7
- import { HtmlCoreNavigator as o } from "./navigator/HtmlCoreNavigator.mjs";
8
- import { HtmlPagingNavigator as s } from "./navigator/HtmlPagingNavigator.mjs";
9
- import { HtmlNavPointNavigator as c } from "./navigator/HtmlNavPointNavigator.mjs";
10
- import { HtmlNavPointProvider as l } from "./navigator/HtmlNavPointProvider.mjs";
11
- import { HtmlProgressTracker as u } from "./progress/HtmlProgressTracker.mjs";
12
- import { HtmlDocumentsProvider as d } from "./documents/HtmlDocumentsProvider.mjs";
13
- import { HtmlRendererLayout as f } from "./layout/HtmlRendererLayout.mjs";
14
- import { HtmlStyleProvider as p } from "./style/HtmlStyleProvider.mjs";
15
- import { HtmlThemeApplier as m } from "./style/HtmlThemeApplier.mjs";
16
- import { HtmlDocumentsResizeObserver as h } from "./documents/HtmlDocumentsResizeObserver.mjs";
17
- import { HtmlContentProcessor as g } from "./html/HtmlContentProcessor.mjs";
18
- import { HtmlImageLoader as _ } from "./image/HtmlImageLoader.mjs";
19
- import { HtmlImageObserver as v } from "./image/HtmlImageObserver.mjs";
1
+ import { EventNames as e } from "../../../kernal/EventNames.mjs";
2
+ import { getRandomId as t } from "../../../kernal/common/uuid.mjs";
3
+ import { isOptionKey as n } from "../../../kernal/Options.mjs";
4
+ import { Theme as r } from "../../../kernal/Theme.mjs";
5
+ import { yieldToMain as i } from "../../../kernal/web/scheduler.mjs";
6
+ import { watchScroll as a } from "../../../kernal/html/events.mjs";
7
+ import { isHtmlOptionKey as o } from "../HtmlOptions.mjs";
8
+ import { HtmlCoreNavigator as s } from "./navigator/HtmlCoreNavigator.mjs";
9
+ import { resolveHtmlTextDirection as c } from "./layout/resolveLayoutRoute.mjs";
10
+ import { HtmlPagingNavigator as l } from "./navigator/HtmlPagingNavigator.mjs";
11
+ import { HtmlNavPointNavigator as u } from "./navigator/HtmlNavPointNavigator.mjs";
12
+ import { HtmlNavPointProvider as d } from "./navigator/HtmlNavPointProvider.mjs";
13
+ import { HtmlProgressTracker as f } from "./progress/HtmlProgressTracker.mjs";
14
+ import { isProgrammaticScroll as p, isUserScrollSettling as m, markUserScroll as h, releaseAbsoluteLocate as g } from "./location/scrollActivity.mjs";
15
+ import { HtmlDocumentsProvider as _ } from "./documents/HtmlDocumentsProvider.mjs";
16
+ import { HtmlRendererLayout as v } from "./layout/HtmlRendererLayout.mjs";
17
+ import { HtmlStyleProvider as y } from "./style/HtmlStyleProvider.mjs";
18
+ import { HtmlThemeApplier as b } from "./style/HtmlThemeApplier.mjs";
19
+ import { HtmlDocumentsResizeObserver as x } from "./documents/HtmlDocumentsResizeObserver.mjs";
20
+ import { HtmlContentProcessor as S } from "./html/HtmlContentProcessor.mjs";
21
+ import { HtmlImageLoader as C } from "./image/HtmlImageLoader.mjs";
22
+ import { HtmlImageObserver as w } from "./image/HtmlImageObserver.mjs";
20
23
  //#region mediaTypes/html/renderer/HtmlRenderer.ts
21
- var y = class extends d {
22
- constructor(t, r, i, d) {
23
- super(t, r, i, d), this.isInitRenderer = !1, this.injectProcessHandlers = () => {
24
+ var T = class extends _ {
25
+ constructor(e, r, a, c) {
26
+ super(e, r, a, c), this.isInitRenderer = !1, this.injectProcessHandlers = () => {
24
27
  this.addDocumentPreprocess(this.preprocessHandler);
25
28
  }, this.preprocessHandler = async (e) => {
26
29
  await this.contentProcessor.preprocess(e), await this.styleProvider.injectStyles(e);
27
30
  let t = await this.resolveCurrentTheme();
28
31
  t && await this.themeApplier.applyToDocument(e, t), await this.rendererLayout.applyDocStyles(e), await this.imageLoader.preprocessImages(e);
32
+ let n = await this.getHighlighter();
33
+ n && await n.highlight(e);
29
34
  }, this.onPageChange = async () => {
30
35
  this.progressTracker.notifyProgressChange();
31
- }, this.onOptionsChange = async (t) => {
32
- let n = this.getRendererContainer();
33
- if (!(!n || !n.ownerDocument.defaultView) && (e(t) || a(t))) {
34
- let e = a(t);
35
- if (e) {
36
+ }, this.onDocumentSizeChange = async () => {
37
+ this.owner.context.userChangedProgress || p() || m() || await this.delayRestoreReadingPosition();
38
+ }, this.onOptionsChange = async (e) => {
39
+ let t = this.getRendererContainer();
40
+ if (!(!t || !t.ownerDocument.defaultView) && (n(e) || o(e))) {
41
+ let t = o(e);
42
+ if (t) {
36
43
  if (!this.owner.context.currentLocation?.precise) {
37
44
  let e = await this.progressTracker.getProgress(!0);
38
45
  e && (this.owner.context.currentLocation = e.location);
39
46
  }
40
47
  this.owner.context.setUserChangedProgress(!1);
41
48
  }
42
- this.rendererViewport.applyCssVariables(), e && (this.owner.context.userChangedProgress || await this.reload());
49
+ if (this.rendererViewport.applyCssVariables(), await i(), t) {
50
+ for (let e of this.getLoadedDocuments()) await this.rendererLayout.applyDocStyles(e);
51
+ this.owner.context.userChangedProgress || await this.reload();
52
+ }
43
53
  }
44
- }, this.progressTracker = new u(t, this, d), this.rendererLayout = new f(t, this, this.rendererViewport, this.progressTracker, d), this.navPointProvider = new l(this, d), this.navigator = new o(this, d), this.navPointNavigator = new c(t.locale, t.notifier, this, this.navigator, this.navPointProvider), this.pagingNavigator = new s(this, this.navigator, d), this.styleProvider = new p(this), this.currentInstanceId = n(!0), this.themeApplier = new m(this), this.documentsResizeObserver = new h(this, this.rendererViewport, this.progressTracker, this.rendererLayout), this.contentProcessor = new g(r), this.imageLoader = new _(this, this.rendererViewport, d), this.imageObserver = new v(this, d), this.bindEvents(), this.bindScrollWatch(), this.injectProcessHandlers();
54
+ }, this.progressTracker = new f(e, this, c), this.rendererLayout = new v(e, this, this.rendererViewport, this.progressTracker, c), this.navPointProvider = new d(this, c), this.navigator = new s(this, c), this.navPointNavigator = new u(e.locale, e.notifier, this, this.navigator, this.navPointProvider), this.pagingNavigator = new l(this, this.navigator, c), this.styleProvider = new y(this), this.currentInstanceId = t(!0), this.themeApplier = new b(this), this.documentsResizeObserver = new x(this, this.rendererViewport, this.progressTracker, this.rendererLayout), this.contentProcessor = new S(r), this.imageLoader = this.createImageLoader(), this.imageObserver = new w(this, c), this.bindEvents(), this.bindScrollWatch(), this.injectProcessHandlers();
45
55
  }
46
56
  get id() {
47
57
  return this.currentInstanceId;
48
58
  }
59
+ createImageLoader() {
60
+ return new C(this, this.rendererViewport, this.htmlOptions);
61
+ }
49
62
  async resolveCurrentTheme() {
50
- return (await this.owner.services.get("themeProvider"))?.getCurrentTheme() ?? new t();
63
+ return (await this.owner.services.get("themeProvider"))?.getCurrentTheme() ?? new r();
64
+ }
65
+ async getHighlighter() {
66
+ if (this.htmlOptions.enableFormatCodeBlock) {
67
+ if (!this.languageHighlighter) {
68
+ let { LanguageHighlighter: e } = await import("./style/LanguageHighlighter.mjs");
69
+ this.languageHighlighter = new e(this);
70
+ }
71
+ return this.languageHighlighter;
72
+ }
51
73
  }
52
74
  bindEvents() {
53
- this.owner.events.on(r.OptionsChange, this.onOptionsChange), this.owner.events.on(r.PageChange, this.onPageChange);
75
+ this.owner.events.on(e.OptionsChange, this.onOptionsChange), this.owner.events.on(e.PageChange, this.onPageChange), this.owner.events.on(e.DocumentSizeChange, this.onDocumentSizeChange);
54
76
  }
55
77
  unbindEvents() {
56
- this.owner.events.off(r.OptionsChange, this.onOptionsChange), this.owner.events.off(r.PageChange, this.onPageChange);
78
+ this.owner.events.off(e.OptionsChange, this.onOptionsChange), this.owner.events.off(e.PageChange, this.onPageChange), this.owner.events.off(e.DocumentSizeChange, this.onDocumentSizeChange);
57
79
  }
58
80
  bindScrollWatch() {
59
- let e = this.getScrollElement();
60
- e && (this.scrollWatchState = i(e, this.owner.options.calcScrollDirection, async (e, t) => {
61
- this.owner.events.emit(r.ReaderDebounceScroll, e, t), this.progressTracker.notifyProgressChange();
62
- }, (e) => {
63
- this.owner.onProgressChangeGuard && this.owner.context?.progress?.current && (this.owner.onProgressChangeGuard(this.owner.context.progress.current) || e.preventDefault()), this.owner.events.emit(r.ReaderOriginalScroll, e);
81
+ let t = this.owner.getHostViewport();
82
+ this.scrollWatchTarget = t.mode == "window" ? t.scrollWatchTarget : this.getScrollElement(), this.scrollWatchTarget && (this.scrollWatchState = a(this.scrollWatchTarget, this.owner.options.calcScrollDirection, async (t, n) => {
83
+ this.owner.events.emit(e.ReaderDebounceScroll, t, n), this.progressTracker.notifyProgressChange();
84
+ }, (t) => {
85
+ p() || !t.isTrusted || (this.owner.onProgressChangeGuard && this.owner.context?.progress?.current && (this.owner.onProgressChangeGuard(this.owner.context.progress.current) || t.preventDefault()), h(), g(), this.owner.events.emit(e.ReaderOriginalScroll, t));
64
86
  }));
65
87
  }
66
88
  async load(e, t) {
@@ -73,19 +95,21 @@ var y = class extends d {
73
95
  return this.htmlOptions.writingMode ?? "horizontal-tb";
74
96
  }
75
97
  get direction() {
76
- return this.htmlOptions.direction ?? "ltr";
98
+ return c(this.htmlOptions);
77
99
  }
78
100
  get layout() {
79
101
  return this.rendererLayout;
80
102
  }
81
103
  async applyTheme(e) {
82
104
  await this.themeApplier.applyTheme(e);
105
+ let t = await this.getHighlighter();
106
+ t && await t.applyTheme(e);
83
107
  }
84
108
  async dispose() {
85
109
  this.unbindEvents();
86
- let e = this.getScrollElement();
87
- e && this.scrollWatchState?._eventHandler && (e.removeEventListener("scroll", this.scrollWatchState._eventHandler, !0), this.scrollWatchState = void 0), await this.progressTracker.dispose(), await this.imageObserver.dispose(), await this.imageLoader.dispose(), await super.dispose(), await this.styleProvider?.dispose(), await this.navPointProvider?.dispose(), await this.pagingNavigator?.dispose(), await this.documentsResizeObserver.dispose(), await this.contentProcessor.dispose();
110
+ let e = this.scrollWatchTarget ?? this.getScrollElement();
111
+ e && this.scrollWatchState?._eventHandler && (e.removeEventListener("scroll", this.scrollWatchState._eventHandler, !0), this.scrollWatchState = void 0, this.scrollWatchTarget = void 0), await this.progressTracker.dispose(), await this.imageObserver.dispose(), await this.imageLoader.dispose(), await super.dispose(), await this.styleProvider?.dispose(), await this.languageHighlighter?.dispose(), this.languageHighlighter = void 0, await this.navPointProvider?.dispose(), await this.pagingNavigator?.dispose(), await this.documentsResizeObserver.dispose(), await this.contentProcessor.dispose();
88
112
  }
89
113
  };
90
114
  //#endregion
91
- export { y as HtmlRenderer };
115
+ export { T as HtmlRenderer };
@@ -1,9 +1,13 @@
1
- import { IDocument } from '../../../kernal';
1
+ import { IDocument, ISymbolCalclator, LocationState } from '../../../kernal';
2
2
 
3
3
  export interface IHtmlDocument extends IDocument {
4
4
  getContent(): Promise<string>;
5
5
  getNumberOfPages(): Promise<number>;
6
- getPageNumber(element: Element): Promise<number>;
6
+ getPageNumber(target: Element | Range): Promise<number>;
7
+ readonly symbolCalclator: ISymbolCalclator;
7
8
  getVirtualContentContainer(raw?: boolean): Promise<HTMLElement>;
8
9
  getVisibleElements(fullVisibleInWindow?: boolean): Element[];
10
+ resetLayoutSizes(): void;
11
+ captureLayoutState(): LocationState;
12
+ restoreLayoutState(locationState: LocationState): Promise<void>;
9
13
  }
@@ -3,4 +3,9 @@ import { IDocumentsProvider } from '../../../kernal';
3
3
 
4
4
  export interface IHtmlDocumentsProvider extends IDocumentsProvider<IHtmlDocument> {
5
5
  getCurrentPageNumber(doc: IHtmlDocument): number;
6
+ syncPageState(doc: IHtmlDocument): Promise<{
7
+ current: number;
8
+ total: number;
9
+ }>;
10
+ canAdvancePageTransform(doc: IHtmlDocument): boolean;
6
11
  }
@@ -1,4 +1,5 @@
1
1
  import { Direction, IFileParser, INavPointNavigator, INavPointProvider, IPagingNavigator, IRenderer, IStyleProvider, WritingMode } from '../../../kernal';
2
+ import { HtmlOptions } from '../HtmlOptions';
2
3
  import { IHtmlDocument } from './IHtmlDocument';
3
4
  import { IHtmlRendererLayout } from './layout/IHtmlRendererLayout';
4
5
  import { IHtmlProgressTracker } from './progress/IHtmlIProgressTracker';
@@ -12,4 +13,6 @@ export interface IHtmlRenderer<T extends IHtmlDocument = IHtmlDocument, W extend
12
13
  get pagingNavigator(): IPagingNavigator | undefined;
13
14
  get styleProvider(): IStyleProvider;
14
15
  get layout(): IHtmlRendererLayout;
16
+ readonly htmlOptions: HtmlOptions;
17
+ getCurrentPageNumber(doc: IHtmlDocument): number;
15
18
  }
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/web/BrowserCapabilities.cjs"),t=require("../../../../kernal/common/uuid.cjs"),n=require("../../../../kernal/EventNames.cjs"),r=require("../../../../kernal/Constants.cjs"),i=require("../../../../kernal/html/finder.cjs"),a=require("../../../../kernal/html/dom.cjs"),o=require("../../../../kernal/html/geometry.cjs"),s=require("../../HtmlSettings.cjs"),c=require("../../../base/renderer/BaseDocument.cjs"),l=require("../../../base/renderer/eventKeys.cjs"),u=require("../visibilityCandidates.cjs"),d=require("../html/template.cjs"),f=require("./HtmlPageCalculator.cjs"),p=require("./HtmlDocumentResizeObserver.cjs");var m=class extends c.BaseDocument{constructor(t,r,i,a,o,c){super(t,i,a,o),this.options=c,this.eventKeyMap=l.getEventKeyMap(),this.visibilityCandidates=null,this.callbacks=[],this.buildLoadingContent=async()=>{let e=await this.getFormattedVirtualDocument(),t=this.owner.getRenderer()?.documentPreprocesses??[];for(let e of t)try{await e(this)}catch(t){this.logger.error(`preprocess`,`function`,e?.name,t)}let n=e.documentElement.outerHTML;return this.owner.onRenderingFileInject&&(n=await this.owner.onRenderingFileInject(this.extension,n,this.url)),n=n.replace(/<([^<]*)\?xml([^>]*)\?.*?>/i,``),n.match(/<!DOCTYPE[^>]*>/i)||(n=`<!DOCTYPE html>`+n),n},this.processAfterLoaded=async()=>{let t=this.getContentContainer();if(!t)return;t.setAttribute(`data-url`,this.url),this.wrapperContainer.classList.remove(s.HtmlSettings.FileContentContainerHeightClassName);let r=this.owner.getRenderer()?.documentPostprocesses??[];for(let t of r)try{await t(this),await e.BrowserCapabilities.yieldToMain()}catch(e){this.logger.error(`postprocess`,`function`,t?.name,e)}this.loadingLayer?.removeLoadingLayer(),this.loadStatus=`success`,this.visibilityCandidates=null,this.bindDocumentEvents(),this.owner.events.emit(n.EventNames.DocumentLoad,this),await this.internalResetSizes(),this.resizeObserver.observeIframeSize(async()=>{await this.internalResetSizes(),this.getFlipMode()==`page`&&this.pageCalculator.calcNumberOfPages(!0)}),this.loadCompleted(!0)},this.loadCompleted=e=>{for(let t=0;t<this.callbacks.length;t++)try{e?this.callbacks[t].resolve():this.callbacks[t].reject()}catch{}this.callbacks=[]},this.internalResetSizes=async()=>{let e=this.getContentRootElement();if(!e)return;let t=this.getWritingMode();this.resetIframeMinWidthHeight(e,this.getFlipMode(),t)},this.capture=!0,this.eventListener=e=>{let t=this.eventKeyMap.get(e.type);t&&this.owner.events.emit(t,e,this)},this.pageCalculator=new f.HtmlPageCalculator(this,r,c),this.logger=this.owner.loggerFactory.getLogger(this.constructor.name),this.resizeObserver=new p.HtmlDocumentResizeObserver(this,this.owner.events)}get inIframe(){return!0}getWritingMode(){return this.options.writingMode??`horizontal-tb`}async load(){await new Promise(async(i,o)=>{if(this.loadStatus==`success`){i();return}if(this.callbacks.push({resolve:i,reject:o}),this.loadStatus!=`loading`){this.loadStatus=`loading`,this.loadingLayer=await this.owner.services.get(`loadLayer`),this.loadingLayer?.setDoc(this),a.emptyElement(this.wrapperContainer),this.loadingLayer.removeLoadingLayer(),this.loadingLayer.loadLoadingLayer();try{if(this.inIframe){if(!this.iframe){let i=r.readerPrefixName+t.getUuid(!0);this.iframe=d.createIframe(this.wrapperContainer.ownerDocument,i,this.options.forceScroll),this.options.forceScroll?this.iframe.removeAttribute(`scrolling`):this.iframe.setAttribute(`scrolling`,`no`);let a=await this.buildLoadingContent();await e.BrowserCapabilities.yieldToMain(),this.wrapperContainer.appendChild(this.iframe),await e.BrowserCapabilities.yieldToMain(),this.iframe.addEventListener(`load`,async()=>{await this.processAfterLoaded()},!1),this.iframe.addEventListener(`error`,e=>{this.loadingLayer?.removeLoadingLayer(),this.loadStatus=`fail`,this.iframe=void 0,this.loadingLayer?.setReloadButton(),this.logger.error(e),this.owner.events.emit(n.EventNames.DocumentLoadFailed,this,e),this.loadCompleted(!0)},!1);let o=this.iframe.contentDocument;this.options.preferSrcdoc&&`srcdoc`in this.iframe||!(`write`in o)?this.iframe.srcdoc=a:(o.open(),o.write(a),o.close(),await e.BrowserCapabilities.yieldToMain())}}else{let t=await this.buildLoadingContent();a.setElementHtml(this.wrapperContainer,t),await this.processAfterLoaded(),await e.BrowserCapabilities.yieldToMain()}}catch(e){this.logger.error(e),this.owner?.context?(this.loadingLayer?.removeLoadingLayer(),this.loadStatus=`fail`,this.iframe=void 0,this.loadingLayer?.setReloadButton(),this.owner.events.emit(n.EventNames.DocumentLoadFailed,this,e?.toString()),this.loadCompleted(!0)):this.loadCompleted(!0)}finally{await this.loadingLayer?.dispose(),this.loadingLayer=void 0}}})}resetIframeMinWidthHeight(e,t,n){if(e){if(t==`scroll`){if(this.iframe){if(this.isVerticalWriting(n)){let t=e.scrollHeight;this.iframe.style.willChange=`transform`,this.iframe.style.removeProperty(`min-width`),this.iframe.style.minHeight=t+`px`,this.iframe.style.removeProperty(`will-change`),this.iframe.style.removeProperty(`transform`)}else{let t=e.getBoundingClientRect().height;this.iframe.style.willChange=`transform`,this.iframe.style.removeProperty(`min-width`),this.iframe.style.minHeight=Math.round(t)+`px`,this.iframe.style.removeProperty(`will-change`),this.iframe.style.removeProperty(`transform`)}}}else if(this.iframe){this.iframe.style.removeProperty(`min-height`),this.iframe.style.removeProperty(`min-width`);let t=e.scrollWidth,n=i.getDocumentBody(e.ownerDocument).getBoundingClientRect().width,r=Math.min(t,n);this.iframe.style.minWidth=r+`px`}}}async getContent(){return this.docContent?this.docContent:(this.docContent=await(await this.fileParser.getTextDocument(this.url)).getPlaintext(),this.docContent.length>this.options.singleDocMaxSize?d.getTooBigHtmlTemplate(this.docContent.length):this.docContent)}async getFormattedVirtualDocument(){if(this.formattedVirtualDocument)return this.formattedVirtualDocument;let e=await this.fileParser.getTextDocument(this.url);return this.formattedVirtualDocument=await e.getFormattedDocument(),this.formattedVirtualDocument}async getText(e){return await(await this.fileParser.getTextDocument(this.url)).getPlaintext(e)}internalGetNumberOfPages(){let e=1;return this.getFlipMode()==`page`&&(e=this.pageCalculator.calcNumberOfPages()),e}async getNumberOfPages(){return await this.load(),this.internalGetNumberOfPages()}async getPageNumber(e){return this.pageCalculator.getPageNumber(e)}getContentRootElement(){return this.inIframe?this.iframe?.contentDocument?.documentElement:this.wrapperContainer}getContentContainer(){return this.inIframe?i.getDocumentBody(this.iframe?.contentDocument):this.wrapperContainer}async getVirtualContentContainer(e){if(e){let e=await this.fileParser.getTextDocument(this.url);return i.getDocumentBody(await e.getFormattedDocument())}let t=await this.getFormattedVirtualDocument();return i.getDocumentBody(t)}getVisibleElements(e){if(this.loadStatus!=`success`)return[];let t=this.getContentContainer(),n=t?.ownerDocument?.defaultView;if(!t||!n)return[];this.visibilityCandidates||=u.collectContentUnitElements(t,{htmlBlockTags:this.options.htmlBlockTags});let r=this.getFlipMode()==`scroll`?this.owner.optionsProvider.getHeaderHeight():0,i=o.resolveVisibleViewportInContentWindow(n,{topInset:r});return i?o.getOrderedElementsIntersectingRect(this.visibilityCandidates,i,{writingMode:this.getWritingMode(),fullVisible:e}):[]}async dispose(){this.owner.events.emit(n.EventNames.DocumentDisposing,this),this.unbindDocumentEvents(),this.resizeObserver.unobserveIframeSize(),this.callbacks?.splice(0),this.visibilityCandidates=null;let e=this.getWrapperContainer();e.classList.add(s.HtmlSettings.FileContentContainerHeightClassName),e.removeChild(this.iframe),a.emptyElement(this.wrapperContainer),this.iframe=void 0,this.formattedVirtualDocument=null,await super.dispose()}bindDocumentEvents(){let e=this.inIframe?this.getContentContainer().ownerDocument:this.getContentRootElement();for(let t of this.eventKeyMap.keys())e.addEventListener(t,this.eventListener,this.capture)}unbindDocumentEvents(){let e=this.inIframe?this.getContentContainer().ownerDocument:this.getContentRootElement();for(let t of this.eventKeyMap.keys())e.removeEventListener(t,this.eventListener,this.capture)}isVerticalWriting(e){return e==`vertical-lr`||e==`vertical-rl`}getFlipMode(){return this.options.forceScroll?`scroll`:this.options.flipMode}};exports.HtmlDocument=m;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/EventNames.cjs"),t=require("../../../../kernal/common/uuid.cjs"),n=require("../../../../kernal/web/BrowserCapabilities.cjs"),r=require("../../../../kernal/Constants.cjs"),i=require("../../../../kernal/html/finder.cjs"),a=require("../../../../kernal/html/dom.cjs"),o=require("../../../../kernal/web/scheduler.cjs"),s=require("../../../../kernal/html/geometry.cjs"),c=require("../../../base/renderer/BaseDocument.cjs"),l=require("../../HtmlSettings.cjs"),u=require("../../../base/renderer/eventKeys.cjs"),d=require("../visibilityCandidates.cjs"),f=require("../layout/resolveLayoutRoute.cjs"),p=require("../../fileParser/IHtmlFileParser.cjs"),m=require("../layout/ViewportCssVariableNames.cjs"),h=require("../html/template.cjs"),g=require("./HtmlPageCalculator.cjs"),_=require("./HtmlSymbolCalclator.cjs"),v=require("./HtmlDocumentResizeObserver.cjs"),y=require("../location/HtmlLayoutStatePreserver.cjs"),b=require("../location/remapStoredPageNumber.cjs");var x=class extends c.BaseDocument{constructor(t,n,r,i,a,s){super(t,r,i,a),this.options=s,this.eventKeyMap=u.getEventKeyMap(),this.visibilityCandidates=null,this.callbacks=[],this.retainLoadingLayer=!1,this.waitForRevealPaint=async()=>{await o.yieldToMain(),await new Promise(e=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>e())})}),await new Promise(e=>{window.setTimeout(e,120)}),await this.waitForVisibleImagesReady()},this.waitForVisibleImagesReady=async()=>{let e=this.getContentContainer(),t=e?.ownerDocument?.defaultView;if(!e||!t)return;let n=[...e.querySelectorAll(`img`),...e.getElementsByTagName(`image`)];if(n.length==0)return;let r=t.innerHeight||e.clientHeight,i=n.filter(e=>{let t=e.getBoundingClientRect();return t.bottom>-200&&t.top<r+200});i.length!=0&&await Promise.race([Promise.all(i.map(e=>this.waitForImageReady(e))),new Promise(e=>{window.setTimeout(e,800)})])},this.waitForImageReady=e=>this.isImageReady(e)?Promise.resolve():new Promise(t=>{let n=!1,r=()=>{n||(n=!0,e.removeEventListener(`load`,r),e.removeEventListener(`error`,r),i.disconnect(),t())},i=new MutationObserver(()=>{this.isImageReady(e)&&r()});i.observe(e,{attributes:!0,attributeFilter:[`src`,`href`,`data-load-state`]}),e.addEventListener(`load`,r),e.addEventListener(`error`,r),window.setTimeout(r,800)}),this.isImageReady=e=>{let t=e.getAttribute(`data-load-state`);if(t==`loaded`||t==`fail`)return!0;let n=e.ownerDocument.defaultView?.window.HTMLImageElement;if(!n||!(e instanceof n))return!1;let r=e.currentSrc||e.src;return!r||r.startsWith(`data:image/svg+xml`)?!1:e.complete&&e.naturalWidth>0},this.bringLoadingLayerToFront=()=>{let e=this.wrapperContainer.querySelector(`div[data-type='loading-layer']`);e&&this.wrapperContainer.appendChild(e)},this.fadeOutCover=async(e=200)=>{let t=this.wrapperContainer.querySelector(`div[data-type='loading-layer']`);if(!t)return;let n=Math.max(0,e);t.style.pointerEvents=`none`,t.style.transition=`opacity ${n}ms ease`,t.style.opacity=`0`,await new Promise(e=>{let r=!1,i=()=>{r||(r=!0,t.removeEventListener(`transitionend`,i),e())};t.addEventListener(`transitionend`,i),window.setTimeout(i,n+50)})},this.releaseLoadingLayer=async()=>{this.loadingLayer?.removeLoadingLayer(),await this.loadingLayer?.dispose(),this.loadingLayer=void 0},this.buildLoadingContent=async()=>{let e=await this.getFormattedVirtualDocument(),t=this.owner.getRenderer()?.documentPreprocesses??[];for(let e of t)try{await e(this)}catch(t){this.logger.error(`preprocess`,`function`,e?.name,t)}let n=e.documentElement.outerHTML.replace(/<([^<]*)\?xml([^>]*)\?.*?>/i,``);return n.match(/<!DOCTYPE[^>]*>/i)||(n=`<!DOCTYPE html>`+n),n},this.processAfterLoaded=async()=>{let t=this.getContentContainer();if(!t)return;t.setAttribute(`data-url`,this.url);let n=this.captureLayoutState(),r=f.getLayoutGeometry(this.options).iframeGrow==`width`;r||this.wrapperContainer.classList.remove(l.HtmlSettings.FileContentContainerHeightClassName);let i=this.owner.getRenderer()?.documentPostprocesses??[];for(let e of i)try{await e(this),await o.yieldToMain()}catch(t){this.logger.error(`postprocess`,`function`,e?.name,t)}await this.layoutStatePreserver.waitUntilPageTransformStable(),this.resetLayoutSizes(),r&&this.wrapperContainer.classList.remove(l.HtmlSettings.FileContentContainerHeightClassName),await this.restoreLayoutState(n),this.retainLoadingLayer||await this.releaseLoadingLayer(),this.loadStatus=`success`,this.visibilityCandidates=null,this.bindDocumentEvents(),this.owner.events.emit(e.EventNames.DocumentLoad,this),this.resizeObserver.observeIframeSize(async()=>{let e=b.shouldKeepPageEndOnContentGrow(this.owner.context.currentLocation,this.url),t=e?this.captureLayoutState():null;if(this.resetLayoutSizes(),this.getFlipMode()==`page`&&this.pageCalculator.calcNumberOfPages(!0),e&&t){await this.restoreLayoutState(t);let e=this.internalGetNumberOfPages(),n=this.owner.context.currentLocation;n?.url==this.url&&(n.current=e,n.total=e)}}),this.loadCompleted(!0)},this.loadCompleted=e=>{for(let t=0;t<this.callbacks.length;t++)try{e?this.callbacks[t].resolve():this.callbacks[t].reject()}catch{}this.callbacks=[]},this.capture=!0,this.eventListener=e=>{let t=this.eventKeyMap.get(e.type);t&&this.owner.events.emit(t,e,this)},this.pageCalculator=new g.HtmlPageCalculator(this,n,s),this.symbolCalclator=new _.HtmlSymbolCalclator(this,p.asHtmlFileParser(r).symbolMeasure),this.layoutStatePreserver=new y.HtmlLayoutStatePreserver(this,n,s),this.logger=this.owner.loggerFactory.getLogger(this.constructor.name),this.resizeObserver=new v.HtmlDocumentResizeObserver(this,this.owner.events)}get inIframe(){return!0}async load(){await new Promise(async(i,s)=>{if(this.loadStatus==`success`){i();return}if(this.callbacks.push({resolve:i,reject:s}),this.loadStatus!=`loading`){this.loadStatus=`loading`,this.loadingLayer=await this.owner.services.get(`loadLayer`),this.loadingLayer?.setDoc(this),a.emptyElement(this.wrapperContainer),this.loadingLayer.removeLoadingLayer(),this.loadingLayer.loadLoadingLayer(),await o.yieldToMain();try{if(this.inIframe){if(!this.iframe){let i=r.readerPrefixName+t.getUuid(!0);this.iframe=h.createIframe(this.wrapperContainer.ownerDocument,i,this.options.forceScroll,f.getLayoutGeometry(this.options)),this.options.forceScroll?this.iframe.removeAttribute(`scrolling`):this.iframe.setAttribute(`scrolling`,`no`);let a=await this.buildLoadingContent();await o.yieldToMain(),this.wrapperContainer.appendChild(this.iframe),this.bringLoadingLayerToFront(),await o.yieldToMain(),this.iframe.addEventListener(`load`,async()=>{await this.processAfterLoaded()},!1),this.iframe.addEventListener(`error`,t=>{this.retainLoadingLayer=!1,this.loadingLayer?.removeLoadingLayer(),this.loadStatus=`fail`,this.iframe=void 0,this.loadingLayer?.setReloadButton(),this.logger.error(t),this.owner.events.emit(e.EventNames.DocumentLoadFailed,this,t),this.loadCompleted(!0)},!1),n.BrowserCapabilities.isFirefox()&&(this.iframe.srcdoc=`<!DOCTYPE html><html><head></head><body></body></html>`);let s=this.iframe.contentDocument;this.options.preferSrcdoc&&`srcdoc`in this.iframe||!(`write`in s)?this.iframe.srcdoc=a:(s.open(),s.write(a),s.close(),await o.yieldToMain())}}else{let e=await this.buildLoadingContent();a.setElementHtml(this.wrapperContainer,e),await this.processAfterLoaded(),await o.yieldToMain()}}catch(t){this.logger.error(t),this.retainLoadingLayer=!1,this.owner?.context?(this.loadingLayer?.removeLoadingLayer(),this.loadStatus=`fail`,this.iframe=void 0,this.loadingLayer?.setReloadButton(),this.owner.events.emit(e.EventNames.DocumentLoadFailed,this,t?.toString()),this.loadCompleted(!0)):(await this.releaseLoadingLayer(),this.loadCompleted(!0))}}})}prepareCoveredLoad(){this.retainLoadingLayer=!0}async revealCoveredLoad(){this.retainLoadingLayer=!1;try{await this.waitForRevealPaint(),await this.fadeOutCover()}finally{await this.releaseLoadingLayer()}}resetLayoutSizes(){this.resetIframeMinSize()}captureLayoutState(){return this.layoutStatePreserver.capture()}async restoreLayoutState(e){await this.layoutStatePreserver.restore(e)}resetIframeMinSize(){let e=this.getContentRootElement();if(!e||!this.iframe)return;let t=f.getLayoutGeometry(this.options),n=i.getDocumentBody(e.ownerDocument);if(this.iframe.style.removeProperty(`transform`),this.iframe.style.removeProperty(`will-change`),t.useColumnLayout){this.growIframeToColumnOverflow(e,n,t.pageAxis),this.pageCalculator.calcNumberOfPages(!0);return}if(t.iframeGrow==`width`){this.iframe.style.removeProperty(`min-height`),this.iframe.style.removeProperty(`min-width`);let t=this.getParentContentHeight(this.iframe.parentElement)||this.iframe.clientHeight;this.iframe.style.height=t?t+`px`:`var(${m.ViewportCssVariableNames.ContentContainerHeight})`,this.iframe.style.width=`auto`,t&&(e.style.height=t+`px`,e.style.maxHeight=t+`px`,n&&(n.style.height=t+`px`,n.style.maxHeight=t+`px`)),this.iframe.offsetWidth,this.iframe.style.minWidth=Math.max(1,e.scrollWidth)+`px`;return}this.clearInlineContentBox(e,n),this.iframe.style.removeProperty(`min-width`),this.iframe.style.removeProperty(`min-height`),this.iframe.style.setProperty(`width`,this.options.forceScroll?`100%`:`var(${m.ViewportCssVariableNames.ContentContainerWidth})`),this.iframe.style.height=`auto`,this.iframe.offsetHeight;let r=Math.max(1,e.scrollHeight,n?.scrollHeight??0);this.iframe.style.setProperty(`height`,`var(${m.ViewportCssVariableNames.ContentContainerHeight})`),this.iframe.style.minHeight=Math.round(r)+`px`}growIframeToColumnOverflow(e,t,n){this.clearInlineContentBox(e,t),this.iframe.style.removeProperty(`min-width`),this.iframe.style.removeProperty(`min-height`);let r=this.getPageBoxSize();this.lockIframeToPageBox(r);let i=this.iframe.parentElement,a=i?.style.width??``,o=i?.style.minWidth??``,s=r.width;i&&n==`x`&&s>0&&(i.style.width=`${s}px`,i.style.minWidth=`${s}px`);let c=this.beginColumnOverflowMeasure(e,t,n);try{if(n==`y`){this.iframe.offsetHeight,e.offsetHeight;let n=this.measureOccupiedColumnLength(e,t,`y`,r.height);this.iframe.style.setProperty(`height`,`var(${m.ViewportCssVariableNames.ContentContainerHeight})`),this.iframe.style.minHeight=n+`px`;return}this.iframe.offsetWidth,e.offsetWidth;let i=this.measureOccupiedColumnLength(e,t,`x`,r.width);this.iframe.style.setProperty(`width`,`var(${m.ViewportCssVariableNames.ContentContainerWidth})`),this.iframe.style.minWidth=i+`px`}finally{c(),i&&(a?i.style.width=a:i.style.removeProperty(`width`),o?i.style.minWidth=o:i.style.removeProperty(`min-width`))}}measureOccupiedColumnLength(e,t,n,r){let i=r>0?r:1,a=this.getColumnGap(),o=i+a,s=this.measureContentExtent(e,t,n),c=Math.max(1,Math.floor(((s>1?s:i)-1)/o)+1);return Math.round(c*i+Math.max(0,c-1)*a)}measureContentExtent(e,t,n){let r=e.getBoundingClientRect(),i=this.getLastContentElement(t);if(i){let e=i.getBoundingClientRect(),t=n==`y`?e.bottom-r.top:e.right-r.left;if(t>1)return t}if(t){let e=t.getBoundingClientRect();return n==`y`?e.height:e.width}return n==`y`?e.scrollHeight:e.scrollWidth}getLastContentElement(e){if(!e)return null;let t=e.querySelector(`[${r.LastElementAttributeName}="true"]`);return t instanceof HTMLElement?t:e.lastElementChild instanceof HTMLElement?e.lastElementChild:null}getColumnGap(){let e=this.owner.getRenderer()?.getRendererContainer(),t=parseFloat(e?.getAttribute(`data-column-gap`)??``);return Number.isFinite(t)&&t>0?t:0}getPageBoxSize(){let e=this.owner.getRenderer()?.getRendererContainer(),t=parseFloat(e?.getAttribute(`data-column-width`)??``)||Math.round(this.iframe.getBoundingClientRect().width),n=parseFloat(e?.getAttribute(`data-page-height`)??``)||Math.round(this.iframe.getBoundingClientRect().height);return{width:Number.isFinite(t)?Math.round(t):0,height:Number.isFinite(n)?Math.round(n):0}}lockIframeToPageBox(e=this.getPageBoxSize()){e.width>0?this.iframe.style.width=`${e.width}px`:this.iframe.style.setProperty(`width`,`var(${m.ViewportCssVariableNames.ContentContainerWidth})`),e.height>0?this.iframe.style.height=`${e.height}px`:this.iframe.style.setProperty(`height`,`var(${m.ViewportCssVariableNames.ContentContainerHeight})`),this.iframe.offsetWidth}beginColumnOverflowMeasure(e,t,n){let r=e.style.minWidth,i=e.style.direction,a=t?.style.direction??``,o=e.classList.contains(l.HtmlSettings.RtlProgressionClassName),s=f.getLayoutGeometry(this.options).measureColumnsAsLtr;return e.style.setProperty(`min-width`,`0`,`important`),s&&(e.style.setProperty(`direction`,`ltr`,`important`),t?.style.setProperty(`direction`,`ltr`,`important`),e.classList.remove(l.HtmlSettings.RtlProgressionClassName)),()=>{r?e.style.minWidth=r:e.style.removeProperty(`min-width`),s&&(i?e.style.direction=i:e.style.removeProperty(`direction`),t&&(a?t.style.direction=a:t.style.removeProperty(`direction`)),o&&e.classList.add(l.HtmlSettings.RtlProgressionClassName))}}clearInlineContentBox(e,t){e.style.removeProperty(`height`),e.style.removeProperty(`max-height`),e.style.removeProperty(`width`),t&&(t.style.removeProperty(`height`),t.style.removeProperty(`max-height`),t.style.removeProperty(`width`))}getParentContentHeight(e){if(!e)return 0;let t=e.ownerDocument.defaultView?.getComputedStyle(e),n=parseFloat(t?.paddingTop??`0`)||0,r=parseFloat(t?.paddingBottom??`0`)||0;return Math.max(0,Math.round(e.clientHeight-n-r))}async getContent(){return this.docContent?this.docContent:(this.docContent=await(await this.fileParser.getTextDocument(this.url)).getPlaintext(),this.docContent.length>this.options.singleDocMaxSize?h.getTooBigHtmlTemplate(this.docContent.length):this.docContent)}async getFormattedVirtualDocument(){if(this.formattedVirtualDocument)return this.formattedVirtualDocument;let e=await this.fileParser.getTextDocument(this.url);return this.formattedVirtualDocument=await e.getFormattedDocument(),this.formattedVirtualDocument}async getText(e){return await(await this.fileParser.getTextDocument(this.url)).getPlaintext(e)}internalGetNumberOfPages(){let e=1;return this.getFlipMode()==`page`&&(e=this.pageCalculator.calcNumberOfPages()),e}async getNumberOfPages(){return await this.load(),this.internalGetNumberOfPages()}async getPageNumber(e){return this.pageCalculator.getPageNumber(e)}getContentRootElement(){return this.inIframe?this.iframe?.contentDocument?.documentElement:this.wrapperContainer}getContentContainer(){return this.inIframe?i.getDocumentBody(this.iframe?.contentDocument):this.wrapperContainer}async getVirtualContentContainer(e){if(e){let e=await this.fileParser.getTextDocument(this.url);return i.getDocumentBody(await e.getFormattedDocument())}let t=await this.getFormattedVirtualDocument();return i.getDocumentBody(t)}getVisibleElements(e){if(this.loadStatus!=`success`)return[];let t=this.getContentContainer(),n=t?.ownerDocument?.defaultView;if(!t||!n)return[];this.visibilityCandidates||=d.collectContentUnitElements(t,{htmlBlockTags:this.options.htmlBlockTags});let r=this.owner.getRenderer()?.getRendererContainer().getBoundingClientRect().top,i=s.resolveVisibleViewportInContentWindow(n,{topInset:r});return i?s.getOrderedElementsIntersectingRect(this.visibilityCandidates,i,{writingMode:f.getLayoutGeometry(this.options).writingMode,fullVisible:e}):[]}async dispose(){let t=this.captureLayoutState();this.owner.events.emit(e.EventNames.DocumentDisposing,this),this.unbindDocumentEvents(),this.resizeObserver.unobserveIframeSize(),this.callbacks?.splice(0),this.visibilityCandidates=null,this.retainLoadingLayer=!1,await this.releaseLoadingLayer();let n=this.getWrapperContainer();n.classList.add(l.HtmlSettings.FileContentContainerHeightClassName),this.iframe&&n.contains(this.iframe)&&n.removeChild(this.iframe),a.emptyElement(this.wrapperContainer),this.iframe=void 0,this.formattedVirtualDocument=null,await this.symbolCalclator.dispose(),await this.restoreLayoutState(t),await super.dispose()}bindDocumentEvents(){let e=this.inIframe?this.getContentContainer().ownerDocument:this.getContentRootElement();for(let t of this.eventKeyMap.keys())e.addEventListener(t,this.eventListener,this.capture)}unbindDocumentEvents(){let e=this.inIframe?this.getContentContainer()?.ownerDocument:this.getContentRootElement();if(e)for(let t of this.eventKeyMap.keys())e?.removeEventListener(t,this.eventListener,this.capture)}getFlipMode(){return this.options.forceScroll?`scroll`:this.options.flipMode}};exports.HtmlDocument=x;
@@ -1,10 +1,11 @@
1
- import { IFileParser, TextFormatOptions, SpineFile } from '../../../../kernal';
1
+ import { IFileParser, LocationState, TextFormatOptions, SpineFile } from '../../../../kernal';
2
2
  import { Reader } from '../../../../kernal/Reader';
3
3
  import { IHtmlDocument } from '../IHtmlDocument';
4
4
  import { IRendererViewport } from '../../../../kernal/IRendererViewport';
5
5
  import { BaseDocument } from '../../../base/renderer/BaseDocument';
6
6
  import { HtmlOptions } from '../../HtmlOptions';
7
7
  import { HtmlLayoutMetrics } from '../layout/HtmlLayoutMetrics';
8
+ import { HtmlSymbolCalclator } from './HtmlSymbolCalclator';
8
9
 
9
10
  export declare class HtmlDocument extends BaseDocument implements IHtmlDocument {
10
11
  private readonly options;
@@ -13,26 +14,49 @@ export declare class HtmlDocument extends BaseDocument implements IHtmlDocument
13
14
  private iframe;
14
15
  private loadingLayer;
15
16
  private readonly pageCalculator;
17
+ readonly symbolCalclator: HtmlSymbolCalclator;
16
18
  private readonly eventKeyMap;
17
19
  private readonly resizeObserver;
20
+ private readonly layoutStatePreserver;
18
21
  private visibilityCandidates;
19
22
  constructor(owner: Reader, viewport: IRendererViewport<HtmlLayoutMetrics>, fileParser: IFileParser, wrapperContainer: HTMLElement, spineFile: SpineFile, options: HtmlOptions);
20
23
  get inIframe(): boolean;
21
- private getWritingMode;
22
24
  private callbacks;
25
+ private retainLoadingLayer;
23
26
  load(): Promise<void>;
27
+ prepareCoveredLoad(): void;
28
+ revealCoveredLoad(): Promise<void>;
29
+ private waitForRevealPaint;
30
+ private waitForVisibleImagesReady;
31
+ private waitForImageReady;
32
+ private isImageReady;
33
+ private bringLoadingLayerToFront;
34
+ private fadeOutCover;
35
+ private releaseLoadingLayer;
24
36
  private buildLoadingContent;
25
37
  private processAfterLoaded;
26
38
  private loadCompleted;
27
- private internalResetSizes;
28
- private resetIframeMinWidthHeight;
39
+ resetLayoutSizes(): void;
40
+ captureLayoutState(): LocationState;
41
+ restoreLayoutState(locationState: LocationState): Promise<void>;
42
+ private resetIframeMinSize;
43
+ private growIframeToColumnOverflow;
44
+ private measureOccupiedColumnLength;
45
+ private measureContentExtent;
46
+ private getLastContentElement;
47
+ private getColumnGap;
48
+ private getPageBoxSize;
49
+ private lockIframeToPageBox;
50
+ private beginColumnOverflowMeasure;
51
+ private clearInlineContentBox;
52
+ private getParentContentHeight;
29
53
  getContent(): Promise<string>;
30
54
  private formattedVirtualDocument;
31
55
  private getFormattedVirtualDocument;
32
56
  getText(options?: TextFormatOptions): Promise<string>;
33
57
  private internalGetNumberOfPages;
34
58
  getNumberOfPages(): Promise<number>;
35
- getPageNumber(element: Element): Promise<number>;
59
+ getPageNumber(target: Element | Range): Promise<number>;
36
60
  private getContentRootElement;
37
61
  getContentContainer(): HTMLElement;
38
62
  getVirtualContentContainer(raw?: boolean): Promise<HTMLElement>;
@@ -42,6 +66,5 @@ export declare class HtmlDocument extends BaseDocument implements IHtmlDocument
42
66
  private bindDocumentEvents;
43
67
  private unbindDocumentEvents;
44
68
  private eventListener;
45
- private isVerticalWriting;
46
69
  private getFlipMode;
47
70
  }