@foxycape/core 1.1.6 → 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 (508) 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/Context.cjs +1 -1
  7. package/dist/kernal/Context.mjs +13 -8
  8. package/dist/kernal/EventNames.cjs +1 -1
  9. package/dist/kernal/EventNames.d.ts +2 -0
  10. package/dist/kernal/EventNames.mjs +6 -0
  11. package/dist/kernal/FileLoader.cjs +1 -1
  12. package/dist/kernal/FileLoader.d.ts +3 -11
  13. package/dist/kernal/FileLoader.mjs +27 -22
  14. package/dist/kernal/JsonConvert.cjs +1 -1
  15. package/dist/kernal/JsonConvert.d.ts +0 -1
  16. package/dist/kernal/JsonConvert.mjs +17 -25
  17. package/dist/kernal/LifecycleHooks.d.ts +2 -1
  18. package/dist/kernal/Metadata.cjs +1 -1
  19. package/dist/kernal/Metadata.d.ts +34 -0
  20. package/dist/kernal/Metadata.mjs +47 -2
  21. package/dist/kernal/OpenOptions.d.ts +1 -0
  22. package/dist/kernal/Options.cjs +1 -1
  23. package/dist/kernal/Options.d.ts +2 -12
  24. package/dist/kernal/Options.mjs +1 -13
  25. package/dist/kernal/OptionsProvider.cjs +1 -1
  26. package/dist/kernal/OptionsProvider.d.ts +0 -2
  27. package/dist/kernal/OptionsProvider.mjs +6 -14
  28. package/dist/kernal/Reader.cjs +1 -1
  29. package/dist/kernal/Reader.d.ts +13 -12
  30. package/dist/kernal/Reader.mjs +119 -89
  31. package/dist/kernal/Theme.cjs +1 -1
  32. package/dist/kernal/Theme.mjs +1 -1
  33. package/dist/kernal/common/url.cjs +1 -1
  34. package/dist/kernal/common/url.d.ts +2 -0
  35. package/dist/kernal/common/url.mjs +2 -2
  36. package/dist/kernal/common/uuid.cjs +1 -1
  37. package/dist/kernal/common/uuid.mjs +7 -7
  38. package/dist/kernal/common/xxh64.cjs +1 -0
  39. package/dist/kernal/common/xxh64.d.ts +1 -0
  40. package/dist/kernal/common/xxh64.mjs +30 -0
  41. package/dist/kernal/crypto/MD5.cjs +1 -1
  42. package/dist/kernal/crypto/MD5.d.ts +0 -1
  43. package/dist/kernal/crypto/MD5.mjs +8 -9
  44. package/dist/kernal/crypto/WebCrypto.cjs +1 -1
  45. package/dist/kernal/crypto/WebCrypto.mjs +38 -35
  46. package/dist/kernal/deepClone/buffer.cjs +1 -1
  47. package/dist/kernal/deepClone/buffer.d.ts +8 -2
  48. package/dist/kernal/deepClone/buffer.mjs +1 -5
  49. package/dist/kernal/device/IDevice.d.ts +8 -2
  50. package/dist/kernal/device/WebBrowser.cjs +1 -1
  51. package/dist/kernal/device/WebBrowser.d.ts +12 -6
  52. package/dist/kernal/device/WebBrowser.mjs +70 -6
  53. package/dist/kernal/hostViewport.cjs +1 -0
  54. package/dist/kernal/hostViewport.d.ts +16 -0
  55. package/dist/kernal/hostViewport.mjs +44 -0
  56. package/dist/kernal/html/events.cjs +1 -1
  57. package/dist/kernal/html/events.mjs +35 -34
  58. package/dist/kernal/html/finder.cjs +1 -1
  59. package/dist/kernal/html/finder.d.ts +6 -2
  60. package/dist/kernal/html/finder.mjs +62 -51
  61. package/dist/kernal/html/geometry.cjs +1 -1
  62. package/dist/kernal/html/geometry.d.ts +26 -1
  63. package/dist/kernal/html/geometry.mjs +182 -121
  64. package/dist/kernal/html/manipulator.cjs +1 -1
  65. package/dist/kernal/html/manipulator.d.ts +1 -3
  66. package/dist/kernal/html/manipulator.mjs +34 -59
  67. package/dist/kernal/html/parser.cjs +1 -1
  68. package/dist/kernal/html/parser.mjs +3 -3
  69. package/dist/kernal/html/position.cjs +1 -1
  70. package/dist/kernal/html/position.d.ts +0 -18
  71. package/dist/kernal/html/position.mjs +2 -141
  72. package/dist/kernal/html/realm.cjs +1 -0
  73. package/dist/kernal/html/realm.d.ts +7 -0
  74. package/dist/kernal/html/realm.mjs +8 -0
  75. package/dist/kernal/html/selection.cjs +1 -1
  76. package/dist/kernal/html/selection.d.ts +1 -0
  77. package/dist/kernal/html/selection.mjs +33 -12
  78. package/dist/kernal/html/text.cjs +1 -1
  79. package/dist/kernal/html/text.d.ts +4 -3
  80. package/dist/kernal/html/text.mjs +24 -21
  81. package/dist/kernal/html/translationAnchor.cjs +1 -0
  82. package/dist/kernal/html/translationAnchor.d.ts +3 -0
  83. package/dist/kernal/html/translationAnchor.mjs +71 -0
  84. package/dist/kernal/i18n/DefaultLocale.cjs +1 -1
  85. package/dist/kernal/i18n/DefaultLocale.d.ts +2 -2
  86. package/dist/kernal/i18n/DefaultLocale.mjs +7 -12
  87. package/dist/kernal/i18n/ILocale.d.ts +0 -1
  88. package/dist/kernal/i18n/applyNamed.cjs +1 -0
  89. package/dist/kernal/i18n/applyNamed.d.ts +1 -0
  90. package/dist/kernal/i18n/applyNamed.mjs +9 -0
  91. package/dist/kernal/i18n/textDirection.cjs +1 -0
  92. package/dist/kernal/i18n/textDirection.d.ts +6 -0
  93. package/dist/kernal/i18n/textDirection.mjs +7 -0
  94. package/dist/kernal/index.cjs +1 -1
  95. package/dist/kernal/index.d.ts +6 -5
  96. package/dist/kernal/index.mjs +50 -45
  97. package/dist/kernal/mark/IHighlighter.cjs +1 -0
  98. package/dist/kernal/mark/IHighlighter.d.ts +43 -0
  99. package/dist/kernal/mark/IHighlighter.mjs +13 -0
  100. package/dist/kernal/mark/Mark.cjs +1 -1
  101. package/dist/kernal/mark/Mark.d.ts +33 -4
  102. package/dist/kernal/mark/Mark.mjs +43 -6
  103. package/dist/kernal/mark/index.cjs +1 -1
  104. package/dist/kernal/mark/index.d.ts +2 -0
  105. package/dist/kernal/mark/index.mjs +6 -3
  106. package/dist/kernal/mark/overlay.cjs +1 -0
  107. package/dist/kernal/mark/overlay.d.ts +31 -0
  108. package/dist/kernal/mark/overlay.mjs +102 -0
  109. package/dist/kernal/mark/types.cjs +1 -0
  110. package/dist/kernal/mark/types.d.ts +11 -2
  111. package/dist/kernal/mark/types.mjs +4 -0
  112. package/dist/kernal/navigator/INavigator.d.ts +3 -2
  113. package/dist/kernal/network/HttpClient.cjs +1 -1
  114. package/dist/kernal/network/HttpClient.mjs +80 -56
  115. package/dist/kernal/pipelines/FileLoadPipeline.cjs +1 -1
  116. package/dist/kernal/pipelines/FileLoadPipeline.mjs +55 -56
  117. package/dist/kernal/pipelines/InputFormatter.cjs +1 -1
  118. package/dist/kernal/pipelines/InputFormatter.mjs +43 -41
  119. package/dist/kernal/pipelines/metadata.cjs +1 -1
  120. package/dist/kernal/pipelines/metadata.d.ts +2 -1
  121. package/dist/kernal/pipelines/metadata.mjs +21 -30
  122. package/dist/kernal/plugins/keyboard/KeyboardPageTurning.cjs +1 -1
  123. package/dist/kernal/plugins/keyboard/KeyboardPageTurning.mjs +7 -6
  124. package/dist/kernal/plugins/mouse/WheelPageTurning.cjs +1 -1
  125. package/dist/kernal/plugins/mouse/WheelPageTurning.mjs +12 -11
  126. package/dist/kernal/progress/Progress.cjs +1 -1
  127. package/dist/kernal/progress/Progress.d.ts +5 -3
  128. package/dist/kernal/progress/Progress.mjs +2 -2
  129. package/dist/kernal/progress/userChangedProgress.cjs +1 -0
  130. package/dist/kernal/progress/userChangedProgress.d.ts +9 -0
  131. package/dist/kernal/progress/userChangedProgress.mjs +11 -0
  132. package/dist/kernal/screen/BrowserFullscreen.cjs +1 -0
  133. package/dist/kernal/screen/BrowserFullscreen.d.ts +9 -0
  134. package/dist/kernal/screen/BrowserFullscreen.mjs +47 -0
  135. package/dist/kernal/screen/IFullscreen.d.ts +6 -0
  136. package/dist/kernal/services/ServiceCollection.cjs +1 -1
  137. package/dist/kernal/services/ServiceCollection.d.ts +4 -6
  138. package/dist/kernal/services/ServiceCollection.mjs +18 -9
  139. package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.cjs +2 -2
  140. package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.d.ts +4 -2
  141. package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.mjs +31 -23
  142. package/dist/kernal/services/fileUrlParser/DefaultFileUrlParser.cjs +1 -1
  143. package/dist/kernal/services/fileUrlParser/DefaultFileUrlParser.mjs +52 -51
  144. package/dist/kernal/services/fileUrlParser/IFileUrlParser.d.ts +0 -1
  145. package/dist/kernal/services/font/IFontProvider.cjs +1 -1
  146. package/dist/kernal/services/font/IFontProvider.d.ts +3 -0
  147. package/dist/kernal/services/font/IFontProvider.mjs +1 -1
  148. package/dist/kernal/services/internalUrlBuilder/DefaultInternalUrlBuilder.cjs +1 -1
  149. package/dist/kernal/services/internalUrlBuilder/DefaultInternalUrlBuilder.mjs +8 -8
  150. package/dist/kernal/services/loading/DefaultLoading.cjs +1 -1
  151. package/dist/kernal/services/loading/DefaultLoading.d.ts +4 -0
  152. package/dist/kernal/services/loading/DefaultLoading.mjs +23 -24
  153. package/dist/kernal/services/text/splitter.cjs +1 -1
  154. package/dist/kernal/services/text/splitter.mjs +3 -3
  155. package/dist/kernal/types.d.ts +0 -5
  156. package/dist/kernal/web/BrowserCapabilities.cjs +1 -1
  157. package/dist/kernal/web/BrowserCapabilities.d.ts +0 -9
  158. package/dist/kernal/web/BrowserCapabilities.mjs +0 -49
  159. package/dist/kernal/{Debounce.mjs → web/debounce.mjs} +1 -1
  160. package/dist/kernal/web/scheduler.cjs +1 -0
  161. package/dist/kernal/web/scheduler.d.ts +3 -0
  162. package/dist/kernal/web/scheduler.mjs +7 -0
  163. package/dist/mediaTypes/base/fileParser/BaseFileParser.cjs +1 -1
  164. package/dist/mediaTypes/base/fileParser/BaseFileParser.mjs +59 -59
  165. package/dist/mediaTypes/html/DefaultHtmlSymbolMeasure.cjs +1 -0
  166. package/dist/mediaTypes/html/DefaultHtmlSymbolMeasure.d.ts +13 -0
  167. package/dist/mediaTypes/html/DefaultHtmlSymbolMeasure.mjs +109 -0
  168. package/dist/mediaTypes/html/HtmlOptions.cjs +1 -1
  169. package/dist/mediaTypes/html/HtmlOptions.d.ts +6 -12
  170. package/dist/mediaTypes/html/HtmlOptions.mjs +3 -14
  171. package/dist/mediaTypes/html/HtmlSettings.cjs +1 -1
  172. package/dist/mediaTypes/html/HtmlSettings.d.ts +16 -1
  173. package/dist/mediaTypes/html/HtmlSettings.mjs +46 -1
  174. package/dist/mediaTypes/html/IHtmlContentNormalizer.cjs +1 -0
  175. package/dist/mediaTypes/html/IHtmlContentNormalizer.d.ts +4 -0
  176. package/dist/mediaTypes/html/IHtmlContentNormalizer.mjs +4 -0
  177. package/dist/mediaTypes/html/IHtmlSymbolMeasure.d.ts +11 -0
  178. package/dist/mediaTypes/html/NoopHtmlContentNormalizer.cjs +1 -0
  179. package/dist/mediaTypes/html/NoopHtmlContentNormalizer.d.ts +5 -0
  180. package/dist/mediaTypes/html/NoopHtmlContentNormalizer.mjs +8 -0
  181. package/dist/mediaTypes/html/fileParser/HtmlFileParser.cjs +1 -1
  182. package/dist/mediaTypes/html/fileParser/HtmlFileParser.d.ts +5 -1
  183. package/dist/mediaTypes/html/fileParser/HtmlFileParser.mjs +15 -18
  184. package/dist/mediaTypes/html/fileParser/HtmlTextDocument.cjs +1 -1
  185. package/dist/mediaTypes/html/fileParser/HtmlTextDocument.mjs +25 -25
  186. package/dist/mediaTypes/html/fileParser/IHtmlFileParser.cjs +1 -0
  187. package/dist/mediaTypes/html/fileParser/IHtmlFileParser.d.ts +7 -3
  188. package/dist/mediaTypes/html/fileParser/IHtmlFileParser.mjs +4 -0
  189. package/dist/mediaTypes/html/renderer/HtmlRenderer.cjs +1 -1
  190. package/dist/mediaTypes/html/renderer/HtmlRenderer.d.ts +7 -1
  191. package/dist/mediaTypes/html/renderer/HtmlRenderer.mjs +65 -41
  192. package/dist/mediaTypes/html/renderer/IHtmlDocument.d.ts +6 -2
  193. package/dist/mediaTypes/html/renderer/IHtmlDocumentsProvider.d.ts +5 -0
  194. package/dist/mediaTypes/html/renderer/IHtmlRenderer.d.ts +3 -0
  195. package/dist/mediaTypes/html/renderer/document/HtmlDocument.cjs +1 -1
  196. package/dist/mediaTypes/html/renderer/document/HtmlDocument.d.ts +29 -6
  197. package/dist/mediaTypes/html/renderer/document/HtmlDocument.mjs +233 -86
  198. package/dist/mediaTypes/html/renderer/document/HtmlDocumentResizeObserver.cjs +1 -1
  199. package/dist/mediaTypes/html/renderer/document/HtmlDocumentResizeObserver.d.ts +8 -0
  200. package/dist/mediaTypes/html/renderer/document/HtmlDocumentResizeObserver.mjs +41 -5
  201. package/dist/mediaTypes/html/renderer/document/HtmlPageCalculator.cjs +1 -1
  202. package/dist/mediaTypes/html/renderer/document/HtmlPageCalculator.d.ts +2 -4
  203. package/dist/mediaTypes/html/renderer/document/HtmlPageCalculator.mjs +22 -59
  204. package/dist/mediaTypes/html/renderer/document/HtmlSymbolCalclator.cjs +1 -1
  205. package/dist/mediaTypes/html/renderer/document/HtmlSymbolCalclator.d.ts +3 -5
  206. package/dist/mediaTypes/html/renderer/document/HtmlSymbolCalclator.mjs +7 -25
  207. package/dist/mediaTypes/html/renderer/documents/HtmlContainerBuilder.cjs +1 -1
  208. package/dist/mediaTypes/html/renderer/documents/HtmlContainerBuilder.d.ts +0 -2
  209. package/dist/mediaTypes/html/renderer/documents/HtmlContainerBuilder.mjs +18 -42
  210. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsIntersectionObserver.cjs +1 -1
  211. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsIntersectionObserver.d.ts +2 -0
  212. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsIntersectionObserver.mjs +17 -4
  213. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsPreloader.cjs +1 -1
  214. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsPreloader.d.ts +16 -1
  215. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsPreloader.mjs +128 -54
  216. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.cjs +1 -1
  217. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.d.ts +26 -3
  218. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.mjs +227 -101
  219. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.cjs +1 -1
  220. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.d.ts +2 -0
  221. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.mjs +45 -25
  222. package/dist/mediaTypes/html/renderer/documents/documentHiddenState.cjs +1 -0
  223. package/dist/mediaTypes/html/renderer/documents/documentHiddenState.d.ts +6 -0
  224. package/dist/mediaTypes/html/renderer/documents/documentHiddenState.mjs +6 -0
  225. package/dist/mediaTypes/html/renderer/documents/preloadNeighbors.cjs +1 -0
  226. package/dist/mediaTypes/html/renderer/documents/preloadNeighbors.d.ts +2 -0
  227. package/dist/mediaTypes/html/renderer/documents/preloadNeighbors.mjs +13 -0
  228. package/dist/mediaTypes/html/renderer/documents/wrapperVisibility.cjs +1 -0
  229. package/dist/mediaTypes/html/renderer/documents/wrapperVisibility.d.ts +11 -0
  230. package/dist/mediaTypes/html/renderer/documents/wrapperVisibility.mjs +8 -0
  231. package/dist/mediaTypes/html/renderer/html/HtmlContentProcessor.cjs +1 -1
  232. package/dist/mediaTypes/html/renderer/html/HtmlContentProcessor.mjs +62 -62
  233. package/dist/mediaTypes/html/renderer/html/template.cjs +1 -1
  234. package/dist/mediaTypes/html/renderer/html/template.d.ts +3 -1
  235. package/dist/mediaTypes/html/renderer/html/template.mjs +9 -9
  236. package/dist/mediaTypes/html/renderer/image/HtmlImageLoader.cjs +1 -1
  237. package/dist/mediaTypes/html/renderer/image/HtmlImageLoader.d.ts +22 -12
  238. package/dist/mediaTypes/html/renderer/image/HtmlImageLoader.mjs +380 -270
  239. package/dist/mediaTypes/html/renderer/image/HtmlImageObserver.cjs +1 -1
  240. package/dist/mediaTypes/html/renderer/image/HtmlImageObserver.mjs +27 -27
  241. package/dist/mediaTypes/html/renderer/image/IHtmlImageLoader.d.ts +8 -0
  242. package/dist/mediaTypes/html/renderer/image/error-image.cjs +1 -1
  243. package/dist/mediaTypes/html/renderer/image/error-image.mjs +1 -1
  244. package/dist/mediaTypes/html/renderer/image/htmlImageFitStyles.cjs +1 -0
  245. package/dist/mediaTypes/html/renderer/image/htmlImageFitStyles.d.ts +10 -0
  246. package/dist/mediaTypes/html/renderer/image/htmlImageFitStyles.mjs +15 -0
  247. package/dist/mediaTypes/html/renderer/image/htmlImagePlaceholderUrl.cjs +1 -0
  248. package/dist/mediaTypes/html/renderer/image/htmlImagePlaceholderUrl.d.ts +2 -0
  249. package/dist/mediaTypes/html/renderer/image/htmlImagePlaceholderUrl.mjs +12 -0
  250. package/dist/mediaTypes/html/renderer/layout/HtmlRendererLayout.cjs +1 -1
  251. package/dist/mediaTypes/html/renderer/layout/HtmlRendererLayout.d.ts +6 -10
  252. package/dist/mediaTypes/html/renderer/layout/HtmlRendererLayout.mjs +71 -62
  253. package/dist/mediaTypes/html/renderer/layout/HtmlRendererViewport.cjs +1 -1
  254. package/dist/mediaTypes/html/renderer/layout/HtmlRendererViewport.d.ts +4 -1
  255. package/dist/mediaTypes/html/renderer/layout/HtmlRendererViewport.mjs +113 -68
  256. package/dist/mediaTypes/html/renderer/layout/IHtmlRendererLayout.d.ts +8 -3
  257. package/dist/mediaTypes/html/renderer/layout/ViewportCssVariableNames.cjs +1 -1
  258. package/dist/mediaTypes/html/renderer/layout/ViewportCssVariableNames.d.ts +5 -1
  259. package/dist/mediaTypes/html/renderer/layout/ViewportCssVariableNames.mjs +15 -3
  260. package/dist/mediaTypes/html/renderer/layout/applyLayoutClasses.cjs +1 -0
  261. package/dist/mediaTypes/html/renderer/layout/applyLayoutClasses.d.ts +8 -0
  262. package/dist/mediaTypes/html/renderer/layout/applyLayoutClasses.mjs +28 -0
  263. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-horizontal-tb-ltr.cjs +30 -0
  264. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-horizontal-tb-ltr.mjs +4 -0
  265. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-horizontal-tb-rtl.cjs +31 -0
  266. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-horizontal-tb-rtl.mjs +4 -0
  267. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-lr-ltr.cjs +30 -0
  268. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-lr-ltr.mjs +4 -0
  269. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-lr-rtl.cjs +30 -0
  270. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-lr-rtl.mjs +4 -0
  271. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-rl-ltr.cjs +30 -0
  272. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-rl-ltr.mjs +4 -0
  273. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-rl-rtl.cjs +30 -0
  274. package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-rl-rtl.mjs +4 -0
  275. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-horizontal-tb-rtl.cjs +6 -0
  276. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-horizontal-tb-rtl.mjs +4 -0
  277. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-lr-ltr.cjs +10 -0
  278. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-lr-ltr.mjs +4 -0
  279. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-lr-rtl.cjs +10 -0
  280. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-lr-rtl.mjs +4 -0
  281. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-rl-ltr.cjs +10 -0
  282. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-rl-ltr.mjs +4 -0
  283. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-rl-rtl.cjs +10 -0
  284. package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-rl-rtl.mjs +4 -0
  285. package/dist/mediaTypes/html/renderer/layout/css/document-default.cjs +19 -0
  286. package/dist/mediaTypes/html/renderer/layout/css/document-default.mjs +4 -0
  287. package/dist/mediaTypes/html/renderer/layout/css/hostLayoutCss.cjs +3 -0
  288. package/dist/mediaTypes/html/renderer/layout/css/hostLayoutCss.d.ts +2 -0
  289. package/dist/mediaTypes/html/renderer/layout/css/hostLayoutCss.mjs +56 -0
  290. package/dist/mediaTypes/html/renderer/layout/css/renderer-default.cjs +64 -0
  291. package/dist/mediaTypes/html/renderer/layout/css/renderer-default.mjs +4 -0
  292. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-horizontal-tb-ltr.cjs +33 -0
  293. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-horizontal-tb-ltr.mjs +4 -0
  294. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-horizontal-tb-rtl.cjs +33 -0
  295. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-horizontal-tb-rtl.mjs +4 -0
  296. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-lr-ltr.cjs +47 -0
  297. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-lr-ltr.mjs +4 -0
  298. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-lr-rtl.cjs +47 -0
  299. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-lr-rtl.mjs +4 -0
  300. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-rl-ltr.cjs +46 -0
  301. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-rl-ltr.mjs +4 -0
  302. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-rl-rtl.cjs +46 -0
  303. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-rl-rtl.mjs +4 -0
  304. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-horizontal-tb-rtl.cjs +7 -0
  305. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-horizontal-tb-rtl.mjs +4 -0
  306. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-lr-ltr.cjs +28 -0
  307. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-lr-ltr.mjs +4 -0
  308. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-lr-rtl.cjs +28 -0
  309. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-lr-rtl.mjs +4 -0
  310. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-rl-ltr.cjs +28 -0
  311. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-rl-ltr.mjs +4 -0
  312. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-rl-rtl.cjs +28 -0
  313. package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-rl-rtl.mjs +4 -0
  314. package/dist/mediaTypes/html/renderer/layout/css/root-direction.cjs +8 -0
  315. package/dist/mediaTypes/html/renderer/layout/css/root-direction.mjs +4 -0
  316. package/dist/mediaTypes/html/renderer/layout/geometry/ILayoutGeometry.d.ts +128 -0
  317. package/dist/mediaTypes/html/renderer/layout/geometry/formatTranslate3d.cjs +1 -0
  318. package/dist/mediaTypes/html/renderer/layout/geometry/formatTranslate3d.d.ts +4 -0
  319. package/dist/mediaTypes/html/renderer/layout/geometry/formatTranslate3d.mjs +7 -0
  320. package/dist/mediaTypes/html/renderer/layout/geometry/getLayoutOffsetLeft.cjs +1 -0
  321. package/dist/mediaTypes/html/renderer/layout/geometry/getLayoutOffsetLeft.d.ts +1 -0
  322. package/dist/mediaTypes/html/renderer/layout/geometry/getLayoutOffsetLeft.mjs +13 -0
  323. package/dist/mediaTypes/html/renderer/layout/geometry/index.cjs +1 -0
  324. package/dist/mediaTypes/html/renderer/layout/geometry/index.d.ts +18 -0
  325. package/dist/mediaTypes/html/renderer/layout/geometry/index.mjs +30 -0
  326. package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbLtr.cjs +1 -0
  327. package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbLtr.d.ts +3 -0
  328. package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbLtr.mjs +71 -0
  329. package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbRtl.cjs +1 -0
  330. package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbRtl.d.ts +3 -0
  331. package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbRtl.mjs +74 -0
  332. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrLtr.cjs +1 -0
  333. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrLtr.d.ts +3 -0
  334. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrLtr.mjs +71 -0
  335. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrRtl.cjs +1 -0
  336. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrRtl.d.ts +3 -0
  337. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrRtl.mjs +71 -0
  338. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlLtr.cjs +1 -0
  339. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlLtr.d.ts +3 -0
  340. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlLtr.mjs +71 -0
  341. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlRtl.cjs +1 -0
  342. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlRtl.d.ts +3 -0
  343. package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlRtl.mjs +71 -0
  344. package/dist/mediaTypes/html/renderer/layout/geometry/restoreLayoutState.cjs +1 -0
  345. package/dist/mediaTypes/html/renderer/layout/geometry/restoreLayoutState.d.ts +41 -0
  346. package/dist/mediaTypes/html/renderer/layout/geometry/restoreLayoutState.mjs +53 -0
  347. package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbLtr.cjs +1 -0
  348. package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbLtr.d.ts +3 -0
  349. package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbLtr.mjs +71 -0
  350. package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbRtl.cjs +1 -0
  351. package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbRtl.d.ts +3 -0
  352. package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbRtl.mjs +74 -0
  353. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrLtr.cjs +1 -0
  354. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrLtr.d.ts +3 -0
  355. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrLtr.mjs +71 -0
  356. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrRtl.cjs +1 -0
  357. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrRtl.d.ts +3 -0
  358. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrRtl.mjs +71 -0
  359. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlLtr.cjs +1 -0
  360. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlLtr.d.ts +3 -0
  361. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlLtr.mjs +74 -0
  362. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlRtl.cjs +1 -0
  363. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlRtl.d.ts +3 -0
  364. package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlRtl.mjs +74 -0
  365. package/dist/mediaTypes/html/renderer/layout/layoutRouteIds.cjs +1 -0
  366. package/dist/mediaTypes/html/renderer/layout/layoutRouteIds.d.ts +10 -0
  367. package/dist/mediaTypes/html/renderer/layout/layoutRouteIds.mjs +17 -0
  368. package/dist/mediaTypes/html/renderer/layout/pageStripRouteChange.cjs +1 -0
  369. package/dist/mediaTypes/html/renderer/layout/pageStripRouteChange.d.ts +6 -0
  370. package/dist/mediaTypes/html/renderer/layout/pageStripRouteChange.mjs +24 -0
  371. package/dist/mediaTypes/html/renderer/layout/resolveContentWrapperMinWidth.cjs +1 -0
  372. package/dist/mediaTypes/html/renderer/layout/resolveContentWrapperMinWidth.d.ts +9 -0
  373. package/dist/mediaTypes/html/renderer/layout/resolveContentWrapperMinWidth.mjs +4 -0
  374. package/dist/mediaTypes/html/renderer/layout/resolveLayoutRoute.cjs +1 -0
  375. package/dist/mediaTypes/html/renderer/layout/resolveLayoutRoute.d.ts +11 -0
  376. package/dist/mediaTypes/html/renderer/layout/resolveLayoutRoute.mjs +9 -0
  377. package/dist/mediaTypes/html/renderer/location/HtmlElementLocator.cjs +1 -1
  378. package/dist/mediaTypes/html/renderer/location/HtmlElementLocator.mjs +32 -34
  379. package/dist/mediaTypes/html/renderer/location/HtmlLayoutStatePreserver.cjs +1 -0
  380. package/dist/mediaTypes/html/renderer/location/HtmlLayoutStatePreserver.d.ts +23 -0
  381. package/dist/mediaTypes/html/renderer/location/HtmlLayoutStatePreserver.mjs +164 -0
  382. package/dist/mediaTypes/html/renderer/location/remapStoredPageNumber.cjs +1 -0
  383. package/dist/mediaTypes/html/renderer/location/remapStoredPageNumber.d.ts +4 -0
  384. package/dist/mediaTypes/html/renderer/location/remapStoredPageNumber.mjs +13 -0
  385. package/dist/mediaTypes/html/renderer/location/scrollActivity.cjs +1 -0
  386. package/dist/mediaTypes/html/renderer/location/scrollActivity.d.ts +14 -0
  387. package/dist/mediaTypes/html/renderer/location/scrollActivity.mjs +18 -0
  388. package/dist/mediaTypes/html/renderer/navigator/HtmlCoreNavigator.cjs +1 -1
  389. package/dist/mediaTypes/html/renderer/navigator/HtmlCoreNavigator.mjs +2 -2
  390. package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointNavigator.cjs +1 -1
  391. package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointNavigator.mjs +3 -3
  392. package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointProvider.cjs +1 -1
  393. package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointProvider.mjs +55 -59
  394. package/dist/mediaTypes/html/renderer/navigator/HtmlPagingNavigator.cjs +1 -1
  395. package/dist/mediaTypes/html/renderer/navigator/HtmlPagingNavigator.d.ts +1 -0
  396. package/dist/mediaTypes/html/renderer/navigator/HtmlPagingNavigator.mjs +40 -39
  397. package/dist/mediaTypes/html/renderer/progress/HtmlProgressTracker.cjs +1 -1
  398. package/dist/mediaTypes/html/renderer/progress/HtmlProgressTracker.d.ts +2 -1
  399. package/dist/mediaTypes/html/renderer/progress/HtmlProgressTracker.mjs +36 -24
  400. package/dist/mediaTypes/html/renderer/style/ContentCssVariables.cjs +1 -1
  401. package/dist/mediaTypes/html/renderer/style/ContentCssVariables.d.ts +4 -0
  402. package/dist/mediaTypes/html/renderer/style/ContentCssVariables.mjs +19 -1
  403. package/dist/mediaTypes/html/renderer/style/ContentLayoutCssVariableNames.cjs +1 -1
  404. package/dist/mediaTypes/html/renderer/style/ContentLayoutCssVariableNames.d.ts +3 -0
  405. package/dist/mediaTypes/html/renderer/style/ContentLayoutCssVariableNames.mjs +9 -0
  406. package/dist/mediaTypes/html/renderer/style/HtmlStyleProvider.cjs +1 -1
  407. package/dist/mediaTypes/html/renderer/style/HtmlStyleProvider.d.ts +3 -0
  408. package/dist/mediaTypes/html/renderer/style/HtmlStyleProvider.mjs +28 -16
  409. package/dist/mediaTypes/html/renderer/style/HtmlThemeApplier.cjs +1 -1
  410. package/dist/mediaTypes/html/renderer/style/HtmlThemeApplier.d.ts +2 -0
  411. package/dist/mediaTypes/html/renderer/style/HtmlThemeApplier.mjs +39 -34
  412. package/dist/mediaTypes/html/renderer/style/ILanguageHighlighter.cjs +0 -0
  413. package/dist/mediaTypes/html/renderer/style/ILanguageHighlighter.d.ts +6 -0
  414. package/dist/mediaTypes/html/renderer/style/ILanguageHighlighter.mjs +0 -0
  415. package/dist/mediaTypes/html/renderer/style/LanguageHighlighter.cjs +1 -0
  416. package/dist/mediaTypes/html/renderer/style/LanguageHighlighter.d.ts +18 -0
  417. package/dist/mediaTypes/html/renderer/style/LanguageHighlighter.mjs +52 -0
  418. package/dist/mediaTypes/html/renderer/style/html-content.cjs +38 -7
  419. package/dist/mediaTypes/html/renderer/style/html-content.mjs +1 -1
  420. package/dist/mediaTypes/pdf/ensurePdfWebWorker.cjs +1 -1
  421. package/dist/mediaTypes/pdf/ensurePdfWebWorker.mjs +6 -13
  422. package/dist/mediaTypes/pdf/fileParser/PdfFileParser.cjs +1 -1
  423. package/dist/mediaTypes/pdf/fileParser/PdfFileParser.d.ts +5 -4
  424. package/dist/mediaTypes/pdf/fileParser/PdfFileParser.mjs +7 -3
  425. package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.cjs +1 -1
  426. package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.d.ts +4 -4
  427. package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.mjs +24 -14
  428. package/dist/mediaTypes/pdf/highlighter/PdfHighlightConstants.cjs +1 -0
  429. package/dist/mediaTypes/pdf/highlighter/PdfHighlightConstants.d.ts +6 -0
  430. package/dist/mediaTypes/pdf/highlighter/PdfHighlightConstants.mjs +4 -0
  431. package/dist/mediaTypes/pdf/highlighter/pdfHighlightStyles.cjs +1 -0
  432. package/dist/mediaTypes/pdf/highlighter/pdfHighlightStyles.d.ts +10 -0
  433. package/dist/mediaTypes/pdf/highlighter/pdfHighlightStyles.mjs +33 -0
  434. package/dist/mediaTypes/pdf/loadPdfDocument.cjs +1 -1
  435. package/dist/mediaTypes/pdf/loadPdfDocument.mjs +18 -19
  436. package/dist/mediaTypes/pdf/renderer/IPdfRenderer.d.ts +2 -0
  437. package/dist/mediaTypes/pdf/renderer/MultiPdfViewer.mjs +1 -1
  438. package/dist/mediaTypes/pdf/renderer/PdfCoreNavigator.cjs +1 -1
  439. package/dist/mediaTypes/pdf/renderer/PdfCoreNavigator.mjs +2 -2
  440. package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.cjs +1 -1
  441. package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.d.ts +0 -1
  442. package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.mjs +0 -3
  443. package/dist/mediaTypes/pdf/renderer/PdfDocument.cjs +1 -1
  444. package/dist/mediaTypes/pdf/renderer/PdfDocument.mjs +3 -3
  445. package/dist/mediaTypes/pdf/renderer/PdfNavPointNavigator.cjs +1 -1
  446. package/dist/mediaTypes/pdf/renderer/PdfNavPointNavigator.mjs +3 -3
  447. package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.cjs +1 -1
  448. package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.d.ts +3 -3
  449. package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.mjs +20 -19
  450. package/dist/mediaTypes/pdf/renderer/PdfRenderer.cjs +1 -1
  451. package/dist/mediaTypes/pdf/renderer/PdfRenderer.d.ts +1 -0
  452. package/dist/mediaTypes/pdf/renderer/PdfRenderer.mjs +20 -20
  453. package/dist/mediaTypes/pdf/renderer/PdfSvgBuilder.cjs +1 -1
  454. package/dist/mediaTypes/pdf/renderer/PdfSvgBuilder.mjs +51 -50
  455. package/dist/mediaTypes/pdf/renderer/documents/PdfDocumentsProvider.cjs +2 -2
  456. package/dist/mediaTypes/pdf/renderer/documents/PdfDocumentsProvider.mjs +55 -56
  457. package/dist/mediaTypes/pdf/renderer/documents/resolvePdfLocationPageNumber.cjs +1 -0
  458. package/dist/mediaTypes/pdf/renderer/documents/resolvePdfLocationPageNumber.d.ts +3 -0
  459. package/dist/mediaTypes/pdf/renderer/documents/resolvePdfLocationPageNumber.mjs +12 -0
  460. package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.cjs +1 -1
  461. package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.d.ts +4 -0
  462. package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.mjs +24 -5
  463. package/dist/mediaTypes/pdf/renderer/layout/PdfRendererViewport.cjs +1 -1
  464. package/dist/mediaTypes/pdf/renderer/layout/PdfRendererViewport.mjs +32 -32
  465. package/dist/mediaTypes/pdf/renderer/progress/PdfProgressTracker.cjs +1 -1
  466. package/dist/mediaTypes/pdf/renderer/progress/PdfProgressTracker.mjs +1 -1
  467. package/dist/mediaTypes/pdf/renderer/style/PdfThemeApplier.cjs +4 -4
  468. package/dist/mediaTypes/pdf/renderer/style/PdfThemeApplier.mjs +5 -5
  469. package/dist/mediaTypes/pdf/shared/text/pageText.cjs +2 -2
  470. package/dist/mediaTypes/pdf/shared/text/pageText.d.ts +14 -0
  471. package/dist/mediaTypes/pdf/shared/text/pageText.mjs +139 -47
  472. package/dist/node_modules/highlight.js/styles/github-dark.cjs +118 -0
  473. package/dist/node_modules/highlight.js/styles/github-dark.mjs +4 -0
  474. package/dist/node_modules/highlight.js/styles/github.cjs +118 -0
  475. package/dist/node_modules/highlight.js/styles/github.mjs +4 -0
  476. package/dist/pdfjs/package.json +1 -0
  477. package/package.json +11 -5
  478. package/dist/kernal/device/IEnvironment.d.ts +0 -5
  479. package/dist/kernal/device/IPlatform.d.ts +0 -7
  480. package/dist/kernal/device/WebEnvironment.cjs +0 -1
  481. package/dist/kernal/device/WebEnvironment.d.ts +0 -7
  482. package/dist/kernal/device/WebEnvironment.mjs +0 -22
  483. package/dist/kernal/device/WebPlatform.cjs +0 -1
  484. package/dist/kernal/device/WebPlatform.d.ts +0 -12
  485. package/dist/kernal/device/WebPlatform.mjs +0 -49
  486. package/dist/kernal/progress/IReadingProgressStore.d.ts +0 -7
  487. package/dist/kernal/progress/ReadingProgressStore.cjs +0 -1
  488. package/dist/kernal/progress/ReadingProgressStore.d.ts +0 -12
  489. package/dist/kernal/progress/ReadingProgressStore.mjs +0 -17
  490. package/dist/kernal/storage/IStorage.cjs +0 -1
  491. package/dist/kernal/storage/IStorage.d.ts +0 -21
  492. package/dist/kernal/storage/IStorage.mjs +0 -4
  493. package/dist/kernal/storage/WebStorage.cjs +0 -1
  494. package/dist/kernal/storage/WebStorage.d.ts +0 -31
  495. package/dist/kernal/storage/WebStorage.mjs +0 -165
  496. package/dist/mediaTypes/adjacent.cjs +0 -1
  497. package/dist/mediaTypes/adjacent.d.ts +0 -5
  498. package/dist/mediaTypes/adjacent.mjs +0 -42
  499. package/dist/mediaTypes/html/renderer/image/placeholder.cjs +0 -1
  500. package/dist/mediaTypes/html/renderer/image/placeholder.mjs +0 -4
  501. /package/dist/kernal/{device/IEnvironment.cjs → screen/IFullscreen.cjs} +0 -0
  502. /package/dist/kernal/{device/IEnvironment.mjs → screen/IFullscreen.mjs} +0 -0
  503. /package/dist/kernal/{Debounce.cjs → web/debounce.cjs} +0 -0
  504. /package/dist/kernal/{Debounce.d.ts → web/debounce.d.ts} +0 -0
  505. /package/dist/{kernal/device/IPlatform.cjs → mediaTypes/html/IHtmlSymbolMeasure.cjs} +0 -0
  506. /package/dist/{kernal/device/IPlatform.mjs → mediaTypes/html/IHtmlSymbolMeasure.mjs} +0 -0
  507. /package/dist/{kernal/progress/IReadingProgressStore.cjs → mediaTypes/html/renderer/layout/geometry/ILayoutGeometry.cjs} +0 -0
  508. /package/dist/{kernal/progress/IReadingProgressStore.mjs → mediaTypes/html/renderer/layout/geometry/ILayoutGeometry.mjs} +0 -0
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/web/BrowserCapabilities.cjs"),t=require("../../../../kernal/EventNames.cjs"),n=require("../../../../kernal/Constants.cjs"),r=require("../../../../kernal/html/finder.cjs");var i=class{constructor(t,i){this.documentsProvider=t,this.htmlOptions=i,this.docImagesMap=new Map,this.elementMap=new Map,this.visibleImages=new Set,this.preloadImageCount=5,this.onDocumentLoad=async e=>{await this.observe(e)},this.onDocumentDisposing=e=>{this.unobserve(e)},this.observeLoadedDocuments=async()=>{let e=this.documentsProvider.getLoadedDocuments();for(let t of e)await this.observe(t)},this.observedName=`observed`,this.observe=async t=>{if(!this.imageIntersectionObserver)return;let i=t.getContentContainer().ownerDocument,a=r.getDocumentBody(i);if(!a||a.getAttribute(this.observedName))return;a.setAttribute(this.observedName,`true`);let o=a.querySelectorAll(`img,image,svg`);for(let i=0;i<o.length;i++){let a=o[i],s=parseInt(a.getAttribute(n.ElementInitialNumberName));if(!(isNaN(s)||s<0)){if((r.compareTagName(a.tagName,`IMG`)||r.compareTagName(a.tagName,`IMAGE`)||r.compareTagName(a.tagName,`SVG`))&&!this.elementMap.has(a)){this.elementMap.set(a,t);let e=this.docImagesMap.get(t);e?e.push(a):this.docImagesMap.set(t,[a]),this.imageIntersectionObserver.observe(a)}i%100==0&&await e.BrowserCapabilities.yieldToMain()}}},this.events=this.documentsProvider.owner.events,this.bindEvents()}bindEvents(){this.events.on(t.EventNames.DocumentLoad,this.onDocumentLoad),this.events.on(t.EventNames.DocumentDisposing,this.onDocumentDisposing)}unbindEvents(){this.events.off(t.EventNames.DocumentLoad,this.onDocumentLoad),this.events.off(t.EventNames.DocumentDisposing,this.onDocumentDisposing)}async dispose(){this.unbindEvents(),this.unregister()}register(){this.imageIntersectionObserver=new IntersectionObserver(e=>{for(let t of e){let e=t.target;t.isIntersecting||t.intersectionRatio>0||r.compareTagName(e.tagName,`IMAGE`)?this.visibleImages.add(e):this.visibleImages.delete(e)}if(this.visibleImages.size==0)return;let n=new Map,i=new Set;for(let e of this.visibleImages){let t=this.elementMap.get(e);if(!t)continue;i.add(e);let r=n.get(t);r?r.push(e):n.set(t,[e])}if(n.size==0)return;let a=this.documentsProvider.getRendererContainer().clientWidth,o=this.htmlOptions.flipMode==`page`;for(let[e,t]of n.entries()){let n=this.docImagesMap.get(e);if(!n||n.length==0)continue;let r=new Set(t),s=t[0],c=t[t.length-1],l=n.indexOf(s),u=n.indexOf(c);if(l>0){let e=s.getBoundingClientRect();for(let s=0;s<l;s++){let c=n[l-s];if(c&&(!i.has(c)&&!r.has(c)&&(t.unshift(c),r.add(c)),s>0&&s%this.preloadImageCount==0&&(!o||Math.abs(c.getBoundingClientRect().x-e.x)>2*a)))break}}if(u>=0){let e=c.getBoundingClientRect(),s=n.length;for(let c=0;c<s-u;c++){let s=n[u+c];if(s&&(!i.has(s)&&!r.has(s)&&(t.push(s),r.add(s)),c>0&&c%this.preloadImageCount==0&&(!o||Math.abs(s.getBoundingClientRect().x-e.x)>2*a)))break}}}this.events.emit(t.EventNames.ImageElementsVisible,n)},{rootMargin:`1600px`}),this.observeLoadedDocuments()}unregister(){this.imageIntersectionObserver&&=(this.imageIntersectionObserver.disconnect(),void 0),this.docImagesMap.clear(),this.elementMap.clear(),this.visibleImages.clear()}unobserve(e){let t=this.docImagesMap.get(e)??[];for(let e of t)this.elementMap.delete(e),this.visibleImages.delete(e),this.imageIntersectionObserver?.unobserve(e);this.docImagesMap.delete(e)}};exports.HtmlImageObserver=i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/EventNames.cjs"),t=require("../../../../kernal/Constants.cjs"),n=require("../../../../kernal/html/finder.cjs"),r=require("../../../../kernal/web/scheduler.cjs");var i=class{constructor(e,i){this.documentsProvider=e,this.htmlOptions=i,this.docImagesMap=new Map,this.elementMap=new Map,this.visibleImages=new Set,this.preloadImageCount=5,this.onDocumentLoad=async e=>{await this.observe(e)},this.onDocumentDisposing=e=>{this.unobserve(e)},this.observeLoadedDocuments=async()=>{let e=this.documentsProvider.getLoadedDocuments();for(let t of e)await this.observe(t)},this.observedName=`observed`,this.observe=async e=>{if(!this.imageIntersectionObserver)return;let i=e.getContentContainer().ownerDocument,a=n.getDocumentBody(i);if(!a||a.getAttribute(this.observedName))return;a.setAttribute(this.observedName,`true`);let o=a.querySelectorAll(`img,image,svg`);for(let i=0;i<o.length;i++){let a=o[i],s=parseInt(a.getAttribute(t.ElementInitialNumberName));if(!(isNaN(s)||s<0)){if((n.compareTagName(a.tagName,`IMG`)||n.compareTagName(a.tagName,`IMAGE`)||n.compareTagName(a.tagName,`SVG`))&&!this.elementMap.has(a)){this.elementMap.set(a,e);let t=this.docImagesMap.get(e);t?t.push(a):this.docImagesMap.set(e,[a]),this.imageIntersectionObserver.observe(a)}i%100==0&&await r.yieldToMain()}}},this.events=this.documentsProvider.owner.events,this.bindEvents()}bindEvents(){this.events.on(e.EventNames.DocumentLoad,this.onDocumentLoad),this.events.on(e.EventNames.DocumentDisposing,this.onDocumentDisposing)}unbindEvents(){this.events.off(e.EventNames.DocumentLoad,this.onDocumentLoad),this.events.off(e.EventNames.DocumentDisposing,this.onDocumentDisposing)}async dispose(){this.unbindEvents(),this.unregister()}register(){this.imageIntersectionObserver=new IntersectionObserver(t=>{for(let e of t){let t=e.target;e.isIntersecting||e.intersectionRatio>0||n.compareTagName(t.tagName,`IMAGE`)?this.visibleImages.add(t):this.visibleImages.delete(t)}if(this.visibleImages.size==0)return;let r=new Map,i=new Set;for(let e of this.visibleImages){let t=this.elementMap.get(e);if(!t)continue;i.add(e);let n=r.get(t);n?n.push(e):r.set(t,[e])}if(r.size==0)return;let a=this.documentsProvider.getRendererContainer().clientWidth,o=this.htmlOptions.flipMode==`page`;for(let[e,t]of r.entries()){let n=this.docImagesMap.get(e);if(!n||n.length==0)continue;let r=new Set(t),s=t[0],c=t[t.length-1],l=n.indexOf(s),u=n.indexOf(c);if(l>0){let e=s.getBoundingClientRect();for(let s=0;s<l;s++){let c=n[l-s];if(c&&(!i.has(c)&&!r.has(c)&&(t.unshift(c),r.add(c)),s>0&&s%this.preloadImageCount==0&&(!o||Math.abs(c.getBoundingClientRect().x-e.x)>2*a)))break}}if(u>=0){let e=c.getBoundingClientRect(),s=n.length;for(let c=0;c<s-u;c++){let s=n[u+c];if(s&&(!i.has(s)&&!r.has(s)&&(t.push(s),r.add(s)),c>0&&c%this.preloadImageCount==0&&(!o||Math.abs(s.getBoundingClientRect().x-e.x)>2*a)))break}}}this.events.emit(e.EventNames.ImageElementsVisible,r)},{rootMargin:`1600px`}),this.observeLoadedDocuments()}unregister(){this.imageIntersectionObserver&&=(this.imageIntersectionObserver.disconnect(),void 0),this.docImagesMap.clear(),this.elementMap.clear(),this.visibleImages.clear()}unobserve(e){let t=this.docImagesMap.get(e)??[];for(let e of t)this.elementMap.delete(e),this.visibleImages.delete(e),this.imageIntersectionObserver?.unobserve(e);this.docImagesMap.delete(e)}};exports.HtmlImageObserver=i;
@@ -1,63 +1,63 @@
1
- import { BrowserCapabilities as e } from "../../../../kernal/web/BrowserCapabilities.mjs";
2
- import { EventNames as t } from "../../../../kernal/EventNames.mjs";
3
- import { ElementInitialNumberName as n } from "../../../../kernal/Constants.mjs";
4
- import { compareTagName as r, getDocumentBody as i } from "../../../../kernal/html/finder.mjs";
1
+ import { EventNames as e } from "../../../../kernal/EventNames.mjs";
2
+ import { ElementInitialNumberName as t } from "../../../../kernal/Constants.mjs";
3
+ import { compareTagName as n, getDocumentBody as r } from "../../../../kernal/html/finder.mjs";
4
+ import { yieldToMain as i } from "../../../../kernal/web/scheduler.mjs";
5
5
  //#region mediaTypes/html/renderer/image/HtmlImageObserver.ts
6
6
  var a = class {
7
- constructor(t, a) {
8
- this.documentsProvider = t, this.htmlOptions = a, this.docImagesMap = /* @__PURE__ */ new Map(), this.elementMap = /* @__PURE__ */ new Map(), this.visibleImages = /* @__PURE__ */ new Set(), this.preloadImageCount = 5, this.onDocumentLoad = async (e) => {
7
+ constructor(e, a) {
8
+ this.documentsProvider = e, this.htmlOptions = a, this.docImagesMap = /* @__PURE__ */ new Map(), this.elementMap = /* @__PURE__ */ new Map(), this.visibleImages = /* @__PURE__ */ new Set(), this.preloadImageCount = 5, this.onDocumentLoad = async (e) => {
9
9
  await this.observe(e);
10
10
  }, this.onDocumentDisposing = (e) => {
11
11
  this.unobserve(e);
12
12
  }, this.observeLoadedDocuments = async () => {
13
13
  let e = this.documentsProvider.getLoadedDocuments();
14
14
  for (let t of e) await this.observe(t);
15
- }, this.observedName = "observed", this.observe = async (t) => {
15
+ }, this.observedName = "observed", this.observe = async (e) => {
16
16
  if (!this.imageIntersectionObserver) return;
17
- let a = t.getContentContainer().ownerDocument, o = i(a);
17
+ let a = e.getContentContainer().ownerDocument, o = r(a);
18
18
  if (!o || o.getAttribute(this.observedName)) return;
19
19
  o.setAttribute(this.observedName, "true");
20
20
  let s = o.querySelectorAll("img,image,svg");
21
- for (let i = 0; i < s.length; i++) {
22
- let a = s[i], o = parseInt(a.getAttribute(n));
21
+ for (let r = 0; r < s.length; r++) {
22
+ let a = s[r], o = parseInt(a.getAttribute(t));
23
23
  if (!(isNaN(o) || o < 0)) {
24
- if ((r(a.tagName, "IMG") || r(a.tagName, "IMAGE") || r(a.tagName, "SVG")) && !this.elementMap.has(a)) {
25
- this.elementMap.set(a, t);
26
- let e = this.docImagesMap.get(t);
27
- e ? e.push(a) : this.docImagesMap.set(t, [a]), this.imageIntersectionObserver.observe(a);
24
+ if ((n(a.tagName, "IMG") || n(a.tagName, "IMAGE") || n(a.tagName, "SVG")) && !this.elementMap.has(a)) {
25
+ this.elementMap.set(a, e);
26
+ let t = this.docImagesMap.get(e);
27
+ t ? t.push(a) : this.docImagesMap.set(e, [a]), this.imageIntersectionObserver.observe(a);
28
28
  }
29
- i % 100 == 0 && await e.yieldToMain();
29
+ r % 100 == 0 && await i();
30
30
  }
31
31
  }
32
32
  }, this.events = this.documentsProvider.owner.events, this.bindEvents();
33
33
  }
34
34
  bindEvents() {
35
- this.events.on(t.DocumentLoad, this.onDocumentLoad), this.events.on(t.DocumentDisposing, this.onDocumentDisposing);
35
+ this.events.on(e.DocumentLoad, this.onDocumentLoad), this.events.on(e.DocumentDisposing, this.onDocumentDisposing);
36
36
  }
37
37
  unbindEvents() {
38
- this.events.off(t.DocumentLoad, this.onDocumentLoad), this.events.off(t.DocumentDisposing, this.onDocumentDisposing);
38
+ this.events.off(e.DocumentLoad, this.onDocumentLoad), this.events.off(e.DocumentDisposing, this.onDocumentDisposing);
39
39
  }
40
40
  async dispose() {
41
41
  this.unbindEvents(), this.unregister();
42
42
  }
43
43
  register() {
44
- this.imageIntersectionObserver = new IntersectionObserver((e) => {
45
- for (let t of e) {
46
- let e = t.target;
47
- t.isIntersecting || t.intersectionRatio > 0 || r(e.tagName, "IMAGE") ? this.visibleImages.add(e) : this.visibleImages.delete(e);
44
+ this.imageIntersectionObserver = new IntersectionObserver((t) => {
45
+ for (let e of t) {
46
+ let t = e.target;
47
+ e.isIntersecting || e.intersectionRatio > 0 || n(t.tagName, "IMAGE") ? this.visibleImages.add(t) : this.visibleImages.delete(t);
48
48
  }
49
49
  if (this.visibleImages.size == 0) return;
50
- let n = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set();
50
+ let r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set();
51
51
  for (let e of this.visibleImages) {
52
52
  let t = this.elementMap.get(e);
53
53
  if (!t) continue;
54
54
  i.add(e);
55
- let r = n.get(t);
56
- r ? r.push(e) : n.set(t, [e]);
55
+ let n = r.get(t);
56
+ n ? n.push(e) : r.set(t, [e]);
57
57
  }
58
- if (n.size == 0) return;
58
+ if (r.size == 0) return;
59
59
  let a = this.documentsProvider.getRendererContainer().clientWidth, o = this.htmlOptions.flipMode == "page";
60
- for (let [e, t] of n.entries()) {
60
+ for (let [e, t] of r.entries()) {
61
61
  let n = this.docImagesMap.get(e);
62
62
  if (!n || n.length == 0) continue;
63
63
  let r = new Set(t), s = t[0], c = t[t.length - 1], l = n.indexOf(s), u = n.indexOf(c);
@@ -76,7 +76,7 @@ var a = class {
76
76
  }
77
77
  }
78
78
  }
79
- this.events.emit(t.ImageElementsVisible, n);
79
+ this.events.emit(e.ImageElementsVisible, r);
80
80
  }, { rootMargin: "1600px" }), this.observeLoadedDocuments();
81
81
  }
82
82
  unregister() {
@@ -3,4 +3,12 @@ import { IDocument, IDisposable } from '../../../../kernal';
3
3
  export interface IHtmlImageLoader extends IDisposable {
4
4
  preprocessImages(doc: IDocument): Promise<void>;
5
5
  loadImages(doc: IDocument, visibleElements: Element[]): Promise<void>;
6
+ persistImageSizes(doc: IDocument, sizes: ImageSizeDescriptor[]): Promise<void>;
7
+ loadImageSizes(doc: IDocument): Promise<ImageSizeDescriptor[]>;
6
8
  }
9
+ export type ImageSizeDescriptor = {
10
+ url: string;
11
+ width: number;
12
+ height: number;
13
+ };
14
+ export type ImageElement = HTMLImageElement | SVGImageElement;
@@ -1 +1 @@
1
- var e=`data:image/png;base64,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`;exports.default=e;
1
+ var e=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAHCCAMAAAAErUdWAAAAM1BMVEUAAADm5ubm5ubm5ubm5ubm5ubm5ubm5ubn5+fm5ubn5+fn5+fm5ubm5ubm5ubm5ubm5uZ9SsRFAAAAEHRSTlMAFYvi9m/KuSbpMAs9ol9PUfJL9wAAEL9JREFUeNrswYEAAAAAgKD9qRepAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZt9ecBSHgSCAtv9J/Ov7n3alFeySZBgmwrF7Qr0TIFG2y20AAAAAAAAAAAAAAAAAAAAAAAAAAAA4T4zqJHSGqLqLBMeo5HLwxsynMN5FaiuW7M3cmTE+6LIgXj80uTDzyUKklorhYazJVRG8EGuw3IGjdmLmwYxeCL5TPPcRqJkYeDybE8EzyXMvRlErmmXIE8FXVOZ+rKJGKksxO4K9ZLgjO1Ebk2E5Alr8jrPck12oDQkF6z+DpnW0qAgNlmNZbCF4kPkFocFaLEuDZB3KlcxgRc/yIFnHzkGJ5V3KpGHFVoK/Cvfn46UmDSszxvDjekqm9ylJk4ZHHu/SP+8pAoM1/InwKU1woKcIa7jSJg2PULMGXdhN/KUfHIfhG5NrG1xdWiq8Vc44wcsyQKra897HPxsm3rJ6osb0CQta81amUarnLfPpr4ahw2tXNO03rCrrq3TYsl4UFTNRc7V9w1JGWF8uaFkrusdsL7RfzVncDd/JCvpg0XTYwCe7Ta+iNxWB17AgpvIJUHt8Pbr55jLNvGHHv6IkXps/ub7rDhtW9K1DEIPIquxxFv7jO6z7yhv5SpOGB05Y6xtIza9va+17dqL3JFmThqcrKNDHSrzmaa95H/JXmzTcLRYl68Z1WGOON8rlJg03kxV3oRhFdwiW3w1HrzdpuAdL5EY6Qj4/WIk33AUnDfdg4cfvN+H8YOXG050g978Lf9i7syS5QSAIoIBYhMR2/9P6x0u4MSOhqaYLnPntJWLiBUKpGtg1ww7kM7FvhyU97X7I8GwafsLiufe7ldlgGdrnVtA8mwbAGg3Lkq4vp2XaNADWYFihKkfXbBoAazAsRVqO5sqVY9I0ANZQWHVJnmibBs/qqDPAGgYrVeXook0DYI2EVVMwqzYNgHUHFs+vsgfnpgGwBsKqt+6KtmngdngeYA2CdW6E5ahi3TQA1khYmXBLlEthP0YHWINgObpHl9x4Nw2ANRDWrunK0ci8aQCsgbDUK4WFmwbAGgfr3KpylK5psMyaBsAaBytX5Shd06C5NQ2ANQ5WfC1HV24aAGsQrPqnrJZuGgBrGCzzWo4u3TQA1hhY9b4ort00ANYoWIFqgjhN0TQA1ihYkagcPfwUTQNgDYIlXzykxZsGwBoEyxCVo4rlQViA9TFYlkZDmKVpAKwBsGoQXq7eNADWAFj11l0t3zQA1hBY0r+Uo8s3DYA1BFYi+Vd3z/UgLMD6ECxHUo66iZoGwOqARTU+Zf+X22kA682wFMWGO+iZmgbAGgDr3KpylKJp2Dg3DYA1AFaieIC5AQdhySPkZFLKYT8Biz8sR1CO5ncPje5J2e03BL05lSVgsYZ1aIIfrn1r07Abp0sV75IELL6wTPkrgQAn7ZHbIfrSiFcHYHGF5V6Wmv07OOmbhsOVr6LjDlgsYZ0bwR3T6l2fcqTS5SJanYDFEFbdE/gsehPf9EaYt3IjNgDWDLCKTk9g0d+sf6pyL9oAFjtYwpY65ruDoz4QkHflduIJWNxgxfKPqN4ai17WbktHnAQsZrBSqdK9/ZaeXNa+la5YCVi8YJ0bwcMlFgJZlatOWYDFCpZIBA+XXdPKOm3pjgMsXrBeKtJnVakppLJieRAFWLxgycbysB3ifhSlLFMeJQEWK1jNF3sfPiPr0OVR/A5YrGCJMzaax/wRWa48TAQsXrB+qahjCGRRPgi1Ll8lAxYzWIxkya1hyqoUjiNk43xpxJ6AxQxWc51Qo2WZ69ErmVp1RAIsbrBE0q3vcOSy+hcstd8bfLCAxQ6WyL5VlY6UlUqdLYsqMpZ/JQMWO1ji2FpV6UBZrvH/39wWRsDiB0vszap0mKxD165kT90vAYsfrGYJ78MoWaan9oylTgIshrDE6VpV6SBZrpbS9606AhZHWM3vvzoNkSV919BCLlW2E7BYwmpXpSNkhQp06Fzg9A5YPGG1q9IBskxjwepYsjJgMYXVUZWSy4rVDqt7ItAAFldYIjdkubfLcr3tgar5AxZbWCK0qlJJIKtnAbL9Rb0DLL6wxN5RwhPKOrfe5efQgDUTrHYJHwhlXcNS4iJSV/YBizOs9rxyppfVhmX6iy97AhZnWO155UQgixAWVqzJYBFUpQ1ZlI/CHXus+WBdVqX0smzv5j3grXBCWE1Z8V2yXHfdgB5rRlgiX5Tw1LJi75e/iOZ9SlgiXMwrE8syvZ90NnwrnBPWxbwytazQ+xEa0w2zwrqYVyaWVbcHvWMzFvNYk8C6ONqBWJbrWrISJkgnhtWuSjOprP7b6eSGmfeZYbXPqzLksg7dMUPq8Fs6k8MSapgsd38zp/B7hdPDapfw1LJSY6Li5gM6ANZcsC7mlelkndu9GwJ2h7MbloDVcbRDj6zj3trojhd+xuO0mUVgteeV92/IsvLecTM65j9/8lAbzsdaB1a7Kv2OrNjYZdXZnEo5ZxOtxol+S8Fqn68cnsvSB84g/XiewuJztIMqVRTZqckbTk2eFdb1vHK/LEt2znvGOe/TwmpXpY9leYmbKbqzIKzmcpIfytIHzV06EXfpzA1LJP29V311DUvIblnuBKzJYbXmlc1DWDvuK+zOmrBE8N9Yskx1UhpuWO3OorAa88rHo2t+I+6E/njYwBK7ffhiePj7m37cYt/MsrCEdI82WdL2zCPkrdyIDQKwloEldv+kSHJ9Z4xKpctFvDkFYK0D69mKpbr/zhG/pKXjLgRgrQNL2icVqXnSah7Rl0a82oUArIVg7fbJbSNZP2soZHK+VPEuSSEAayVYP9i7lx3HQSAKw+ZiwAaD3/9pZ5hFVo4mFBIcrFO7XnVL/SmR81cgGElTOQ/5OkIo2psPBGu8LlUVYb0K1pdv3afWd0+btpaJIZX8d0oKsf5MWC+DlZ5dacEtOeIhrPfBSoeoQev7Bvs/EhYUrGJFEXi/b4A/nrBgYRUrisDFPkhsHsL6zNtg5S+uYusD4XEKfjthfeZlsLJsuUC5hw9Tpw9hwcDaZa42/1By5g9hocD65moT3NAFMIQFAks/u9LtHl3cAIawMGBJXRX7UHIQhrAgYF3Ck9fC8VByIIawEGBJXSmHVnIICwhWvKRff/ZwJYewcGBFLz2wQeOVHMKCgaW89IiZfOOVHMJCgaWc1FWygCWHsEBgBSe9lyIYxJJDWBiwgpMe4qccZMkhLAhYpxHf0HRhlhzCQoB1GvGhjBq05BAWAKx0iA/gzjdoySGs+bCEa8h1kkUtOYQ1HZZwDblOMLAlh7Bmw8pyV9HhlhzCmgwrd5z1eQGXHMKaC2vvODtPI5ccwmqENcbVb691yCWHsASwpq+L1kkWuuQQVhMsHFfBYJccwpoHS3dcAB0deMkhrEZY89eQ/82FXnIIaxKs2OVKw5ccwmqABbGGXCff8CWHsASwZq4h10kWv+QQVhOs6WvIdYJZoOQQ1q+wINaQ60S3QskhrPGwVJer7Vqi5BDWcFjRi9eQ6+g1Sg5hDYe1d90Nn+81Sg5hjYalDukacp1kFyk5hDUa1t5zJW4wq5QcwhoNy3e4im6ZkkNYg2FF03HV8rVOySGswbCUlb/o6IVKDmHNh2XLrw+EC5UcwuqG1f9QaNRvD4QrlRzCGgxrc8Id92CWKjmENRqWFm5h+bVKDmGNhpWeYNn/VplzsZJDWMOTjpfcQ7jlxUrOH/buZcdVGAjCcPkKBAzv/7Znf6QGexZ2l1SzzkiR/C06P2lHsKbD+uW/rOYUsic5gjUXlr1V/3z8E9mTHMGaC8t+XJjCyIyV3Rd3wZoPC2V8rz78Vxv8J3fBmg8Lbbw5bKTHI1gzYZ3bcHMohHFUsGbDwp6M5tB7QAdFHRWs2bBw5dHmUCkzlmBNhoV7tDlEzvMRrMmwEI3m0PksqILjT7Bmw0IzmkNfcDhISpZgTYd11rHmsFEOWYI1HRb2NNQcCuUBCdZ8WLjySHP4ZcYhS7AWwMI90hzOyvi4ULBWwEIcaQ6NccgSrCWw0Aaaw814QoI1G5Z9p9FmnhHXErRgLYSF/ehvDoxDlmA5+lk5qzlEunVVwVoHC6W7OVyEX08WrGWwEHubQ0h8Q5ZgrYBlb4Q9HS/MDJuFgrUQVqid9xMVviFLsBbCwu/oaw6/TDdkCdZKWHiM5vD+VCcRDFmCtRQWSt+lao1uyBKstbAQu5rDQ7dnL1iLYZ1bT3PYD7YhS7AWw0JIPc1hYxuyBGs+LPujof299si2aS9Yy2Hh6WgOF9uQJVjrYaF8N4eQyDbtBcsBLDSjOZgvSe437QXLA6xz+2wOhWzIEiwPsBDS1wrrL3MNWYLlAhau/NUcKteQJVg+YOH+ag6R6zojwXICC/GjOTxcQ5ZgeYGF9t4cwkF1ToLlBtZZ35vDRjVkCZYbWNjTa3MoVEOWYPmBhSu/NYeLatNesBzBwv32i5dnYjoowfIEC/GtObTlb0+wWGGhvbyJm2nIEixfsEK1m8OeiYYswfIFC3uym0MlOinBcgYLVzZ/qTcS3RkpWN5goZjN4SG6zkiw/rF3Z7kOwkAQRRsH4zBn/6t9Up4yQJw/iOpKVSuw5JOo3eBGDlakbz2HpucUWYalByvKt55D4WyVYQnCarovK8mcIsuwBGHF0Nd7DhOnyDIsRVix1nsO4wUzzsiwJGFFro/qnjE37Q1LE1akas9hwcyMNCxRWGOp9RyuLaXIMixRWNF0tZ5DRymyDEsVVgx9ZTmJUmQZliysWCs7s1LGGRmWLqzInz2HpofMjDQsYVi1SSAFctPesJRhjeWjpMqQIsuwlGHF9aPVPkGKLMOShhVTu+s5jFtqskWWYWnDimW/pplRZBmWOKzIu+1ZFBdpWDxYu7+oqWkRRZZhycMau23PoUOMMzIseVi7o+GcEEWWYenD2h0N51ZzlYaFg7Ut2FvEYG7DIsDavtSAmBlpWAhYm6Mh4usnhsWA9XYWVF6mYdFgbY6GhCLLsCCw3o+GhNuFhkWBFYthMaMO63U0JEz2MywOrOfbo4QJDoYFgvV/NGRsmGGBYMXQU0osw0LBipXSHzUsFqzItxvjNoVhsWDFemHslmHBYEWTH7TaIvoA2rCIsCLGKc2lzFn2ho5hMWEhYliGdY9hvWJYwjEsw7rHsF4xLOEY1jPFsA6FBXlEcH5mwzoYFmVe6slJhnUsLNTH0U9MNqyDYUGmWp6dybAOhYW48/GLND3i1UxIhtY/00c6/8aOy+puwzOJcXmdkeTa/Y+9e8GREIQBMDwWBEce0/ufdjeZZLKa1fFBiMT/O0Nbm1bgI5JkxQRD+f8IpomDVU3IrfzpWoVQsgrpDF/CP0amxYV41WZeVqwh6ZS9d6IdFZKSoRNRZ2x/81Q7YvCq2sgDGrUknXOZFn6XQaxSsBa6rAnjpcdG4mwz10tUJYrSLJPmxyM4xRntXFtS2fhUFOVv37m/ZUVJ5qLX4dTXK2iw3mjgr4oRM5H1i7iaIrIu6klczWSrOM3d9wDFopF51mmJZdg/glC0TjEsCBdErzjKCuVq2YvQOsYmuqt1MbHh2c0Iw/bvupwM3dZm1klkN7hRGLMk5wxWOZ/kNRBVe4XQYUUgpAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgpz04JAAAAAAQ9P+1J4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwC8CxFxUgFiE6gAAAABJRU5ErkJggg==`;exports.default=e;
@@ -1,4 +1,4 @@
1
1
  //#region mediaTypes/html/renderer/image/error-image.png
2
- var e = "data:image/png;base64,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";
2
+ var e = "data:image/png;base64,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";
3
3
  //#endregion
4
4
  export { e as default };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../style/ContentLayoutCssVariableNames.cjs");var t=`var(${e.ContentLayoutCssVariableNames.ColumnBoxWidth})`,n=`var(${e.ContentLayoutCssVariableNames.ColumnBoxHeight})`,r=`var(${e.ContentLayoutCssVariableNames.MaxImageWidthRatio})`,i=`var(${e.ContentLayoutCssVariableNames.MaxImageHeightRatio})`,a=(e,i)=>{let a=`calc(${t} * ${r})`;return{width:a,height:`auto`,"max-width":a,"max-height":`min(${i}px,${n},calc(${t} / ${e} * ${i}))`,"aspect-ratio":`${e} / ${i}`,"object-fit":`contain`}},o=(e,r,i)=>`min(calc(${r}px * ${i}),calc(${n} * ${i}),calc(${t} / ${e} * ${r} * ${i}))`,s=(e,t)=>t&&e?`${e}`:i;exports.getImageFitStyles=a,exports.getImageForcedHeightCss=o,exports.getImageHeightRatioExpr=s;
@@ -0,0 +1,10 @@
1
+ export declare const getImageFitStyles: (width: number, height: number) => {
2
+ width: string;
3
+ height: string;
4
+ "max-width": string;
5
+ "max-height": string;
6
+ "aspect-ratio": string;
7
+ "object-fit": string;
8
+ };
9
+ export declare const getImageForcedHeightCss: (width: number, height: number, ratioExpr: string) => string;
10
+ export declare const getImageHeightRatioExpr: (maxImageHeightRatio: number, preferRatioNumber?: boolean) => string;
@@ -0,0 +1,15 @@
1
+ import { ContentLayoutCssVariableNames as e } from "../style/ContentLayoutCssVariableNames.mjs";
2
+ //#region mediaTypes/html/renderer/image/htmlImageFitStyles.ts
3
+ var t = `var(${e.ColumnBoxWidth})`, n = `var(${e.ColumnBoxHeight})`, r = `var(${e.MaxImageWidthRatio})`, i = `var(${e.MaxImageHeightRatio})`, a = (e, i) => {
4
+ let a = `calc(${t} * ${r})`;
5
+ return {
6
+ width: a,
7
+ height: "auto",
8
+ "max-width": a,
9
+ "max-height": `min(${i}px,${n},calc(${t} / ${e} * ${i}))`,
10
+ "aspect-ratio": `${e} / ${i}`,
11
+ "object-fit": "contain"
12
+ };
13
+ }, o = (e, r, i) => `min(calc(${r}px * ${i}),calc(${n} * ${i}),calc(${t} / ${e} * ${r} * ${i}))`, s = (e, t) => t && e ? `${e}` : i;
14
+ //#endregion
15
+ export { a as getImageFitStyles, o as getImageForcedHeightCss, s as getImageHeightRatioExpr };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/common/text.cjs");var t=`data:image/svg+xml`,n=`foxycape-S2VlcGNhcGU=`,r=(e,r)=>{let i=e>0?Math.round(e):1,a=r>0?Math.round(r):1,o=`<svg xmlns="http://www.w3.org/2000/svg" width="${i}" height="${a}" viewBox="0 0 ${i} ${a}" data-foxycape-placeholder="${n}"></svg>`;return`${t},${encodeURIComponent(o)}`},i=r=>{if(e.isNullOrWhiteSpace(r)||!r.startsWith(t))return!1;let i=r.includes(n);return i||=decodeURIComponent(r).includes(n),i};exports.createHtmlPlaceholderImageUrl=r,exports.isHtmlPlaceholderImageUrl=i;
@@ -0,0 +1,2 @@
1
+ export declare const createHtmlPlaceholderImageUrl: (width: number, height: number) => string;
2
+ export declare const isHtmlPlaceholderImageUrl: (url: string | null | undefined) => boolean;
@@ -0,0 +1,12 @@
1
+ import { isNullOrWhiteSpace as e } from "../../../../kernal/common/text.mjs";
2
+ //#region mediaTypes/html/renderer/image/htmlImagePlaceholderUrl.ts
3
+ var t = "data:image/svg+xml", n = "foxycape-S2VlcGNhcGU=", r = (e, r) => {
4
+ let i = e > 0 ? Math.round(e) : 1, a = r > 0 ? Math.round(r) : 1, o = `<svg xmlns="http://www.w3.org/2000/svg" width="${i}" height="${a}" viewBox="0 0 ${i} ${a}" data-foxycape-placeholder="${n}"></svg>`;
5
+ return `${t},${encodeURIComponent(o)}`;
6
+ }, i = (r) => {
7
+ if (e(r) || !r.startsWith(t)) return !1;
8
+ let i = r.includes(n);
9
+ return i ||= decodeURIComponent(r).includes(n), i;
10
+ };
11
+ //#endregion
12
+ export { r as createHtmlPlaceholderImageUrl, i as isHtmlPlaceholderImageUrl };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/Theme.cjs"),t=require("../../../../kernal/EventNames.cjs"),n=require("../../../../kernal/common/text.cjs"),r=require("../../../../kernal/html/finder.cjs"),i=require("../../../../kernal/html/injector.cjs"),a=require("../../HtmlSettings.cjs"),o=require("../style/ContentLayoutCssVariableNames.cjs");var s=class{constructor(e,t,n,r,i){this.owner=e,this.documentsProvider=t,this.renererviewport=n,this.progress=r,this.htmlOptions=i,this.DocumentLayoutCssName=`document-layout`,this.DocumentPageModeCssName=`document-page-mode`,this.WritingVerticalScollDocumentLayoutCssName=`vertical-document-layout`}async applyStyles(){let e=this.documentsProvider.getLoadedDocuments();for(let t of e)await this.applyDocStyles(t)}async applyDocStyles(t){let n=(t.getContentContainer()??await t.getVirtualContentContainer()).ownerDocument.documentElement,r=this.htmlOptions.flipMode,a=this.renererviewport.getLayoutMetrics(),o=this.htmlOptions.writingMode??`horizontal-tb`,s=this.htmlOptions.direction??`ltr`,c=await this.prepareDocStyes(n.ownerDocument,o,s);i.injectCssContent(n.ownerDocument,c,!0,`columns-layout-css`);let l=await this.owner.services.get(`themeProvider`),u;u=l?l.getCurrentTheme():new e.Theme;let d=await this.getCssVariables(u,a,r);for(let[e,t]of d)n.style.setProperty(e,t);this.toggleColumnLayout(n,r,o,s)}async getCssVariables(t,r,i){let a;a=i==`scroll`?`none`:r.columnHeight+`px`;let s=new Map;return s.set(o.ContentLayoutCssVariableNames.ColumnWidth,r.columnWidth+`px`),s.set(o.ContentLayoutCssVariableNames.ColumnHeight,r.columnHeight+`px`),s.set(o.ContentLayoutCssVariableNames.ColumnMaxHeight,a),s.set(o.ContentLayoutCssVariableNames.ContentShadowWidth,r.shadowWidth+`px`),s.set(o.ContentLayoutCssVariableNames.ColumnWidthNumber,r.columnWidth.toString()),s.set(o.ContentLayoutCssVariableNames.ColumnHeightNumber,r.columnHeight.toString()),s.set(o.ContentLayoutCssVariableNames.PageWidth,r.pageWidth+`px`),s.set(o.ContentLayoutCssVariableNames.PageHeight,r.pageHeight+`px`),s.set(o.ContentLayoutCssVariableNames.PageMoveLength,r.pageMoveLength+`px`),s.set(o.ContentLayoutCssVariableNames.ColumnGap,this.htmlOptions.columnGap+`px`),this.htmlOptions.enableColumnRule&&this.htmlOptions.columns>1&&!n.isNullOrWhiteSpace(t.columnRuleColor)?s.set(e.Theme.ColumnRuleColor,t.columnRuleColor):s.set(e.Theme.ColumnRuleColor,`none`),s.set(o.ContentLayoutCssVariableNames.MaxImageHeightRatio,`${this.htmlOptions.maxImageHeightRatio}`),s.set(o.ContentLayoutCssVariableNames.MaxImageWidthRatio,`${this.htmlOptions.maxImageWidthRatio}`),s}async prepareDocStyes(t,n,i){let s=``;s+=`html { writing-mode: ${n} !important; direction: ${i} !important; }`,s+=`body { writing-mode: ${n} !important; direction: ${i} !important; }`,s+=`.`+this.DocumentPageModeCssName,s+=`{`,s+=`width:var(`+o.ContentLayoutCssVariableNames.PageWidth+`) !important;`,s+=`height:var(`+o.ContentLayoutCssVariableNames.PageHeight+`) !important;`,s+=`column-width:var(`+o.ContentLayoutCssVariableNames.ColumnWidth+`) !important;`,s+=`column-rule:1px solid var(`+e.Theme.ColumnRuleColor+`) !important;`,s+=`column-fill:auto;column-gap:var(`+o.ContentLayoutCssVariableNames.ColumnGap+`) !important;`,s+=`page-break-inside:avoid;break-inside:avoid;`,s+=`transition-property: transform;`,s+=`overflow: hidden !important;`,s+=`overflow-wrap: break-word !important;`,s+=`position: static !important;`,s+=`border: 0px !important;`,s+=`margin: 0px !important;`,s+=`padding:0px !important;`,s+=`max-height: none !important;`,s+=`max-width: none !important;`,s+=`}`;let c=r.getDocumentBody(t).lastElementChild;return c&&(s+=`.`+a.HtmlSettings.WithoutMarginBottomCssName+`{margin-block-end:0 !important;}`,c.classList.add(a.HtmlSettings.WithoutMarginBottomCssName)),s}toggleColumnLayout(e,t,n,r){e.classList.add(this.DocumentLayoutCssName),t==`page`?e.classList.add(this.DocumentPageModeCssName):(e.classList.remove(this.DocumentPageModeCssName),this.isVerticalWriting(n)?e.classList.add(this.WritingVerticalScollDocumentLayoutCssName):e.classList.remove(this.WritingVerticalScollDocumentLayoutCssName))}isVerticalWriting(e){return e==`vertical-lr`||e==`vertical-rl`}async changeFlipMode(e){if(this.htmlOptions.flipMode===e)return;let n=this.htmlOptions.flipMode;if(!this.owner.context.currentLocation?.precise){let e=await this.progress.getProgress(!0);e&&(this.owner.context.currentLocation=e.location)}this.owner.context.setUserChangedProgress(!1),this.htmlOptions.flipMode=e,this.renererviewport.applyCssVariables();let r=this.documentsProvider.getLoadedDocuments();for(let e of r)await this.applyDocStyles(e);this.owner.events.emit(t.EventNames.LayoutChange,{flipMode:{previous:n,current:e}}),await this.documentsProvider.reload()}async changeColumns(e){if(this.htmlOptions.columns===e.columns&&this.htmlOptions.autoColumns===e.autoColumns)return;let n=this.htmlOptions.columns,r=this.htmlOptions.autoColumns;if(!this.owner.context.currentLocation?.precise){let e=await this.progress.getProgress(!0);e&&(this.owner.context.currentLocation=e.location)}this.owner.context.setUserChangedProgress(!1),this.htmlOptions.columns=e.columns,this.htmlOptions.autoColumns=e.autoColumns,this.renererviewport.applyCssVariables();let i=this.documentsProvider.getLoadedDocuments();for(let e of i)await this.applyDocStyles(e);this.owner.events.emit(t.EventNames.LayoutChange,{columns:{previous:n,current:e.columns},autoColumns:{previous:r,current:e.autoColumns}}),await this.documentsProvider.reload()}};exports.HtmlRendererLayout=s;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/EventNames.cjs"),t=require("../../../../kernal/common/text.cjs"),n=require("../../../../kernal/progress/Progress.cjs"),r=require("../../../../kernal/html/finder.cjs"),i=require("../../../../kernal/html/injector.cjs"),a=require("../../../../kernal/Theme.cjs"),o=require("../../../../kernal/web/scheduler.cjs"),s=require("../../HtmlSettings.cjs"),c=require("./resolveLayoutRoute.cjs"),l=require("./css/hostLayoutCss.cjs"),u=require("./applyLayoutClasses.cjs"),d=require("../style/ContentLayoutCssVariableNames.cjs"),f=require("./pageStripRouteChange.cjs");var p=class{constructor(e,t,n,r,i){this.owner=e,this.documentsProvider=t,this.renererviewport=n,this.progress=r,this.htmlOptions=i}async applyStyles(){let e=this.documentsProvider.getLoadedDocuments();for(let t of e)await this.applyDocStyles(t)}async applyDocStyles(e){let t=(e.getContentContainer()??await e.getVirtualContentContainer()).ownerDocument.documentElement,n=c.getLayoutGeometry(this.htmlOptions),r=this.renererviewport.getLayoutMetrics();i.injectCssContent(t.ownerDocument,this.prepareDocStyles(t.ownerDocument),!0,`columns-layout-css`);let l=await this.owner.services.get(`themeProvider`),d=l?l.getCurrentTheme():new a.Theme,f=await this.getCssVariables(d,r,n);for(let[e,n]of f)t.style.setProperty(e,n);u.applyContentLayoutClass(t,n),t.removeAttribute(s.HtmlSettings.HtmlDocumentNumperOfPagesPropertyName),e.resetLayoutSizes(),await o.yieldToMain()}async getCssVariables(e,n,r){let i=r.flipMode==`scroll`?`none`:n.columnHeight+`px`,o=r.getColumnWidthForCss(n.columnWidth,n.pageHeight),s=new Map;return s.set(d.ContentLayoutCssVariableNames.ColumnWidth,o+`px`),s.set(d.ContentLayoutCssVariableNames.ColumnHeight,n.columnHeight+`px`),s.set(d.ContentLayoutCssVariableNames.ColumnMaxHeight,i),s.set(d.ContentLayoutCssVariableNames.ContentShadowWidth,n.shadowWidth+`px`),s.set(d.ContentLayoutCssVariableNames.ColumnWidthNumber,n.columnWidth.toString()),s.set(d.ContentLayoutCssVariableNames.ColumnHeightNumber,n.columnHeight.toString()),s.set(d.ContentLayoutCssVariableNames.ColumnBoxWidth,n.columnWidth+`px`),s.set(d.ContentLayoutCssVariableNames.ColumnBoxHeight,n.columnHeight+`px`),s.set(d.ContentLayoutCssVariableNames.PageWidth,n.pageWidth+`px`),s.set(d.ContentLayoutCssVariableNames.PageHeight,n.pageHeight+`px`),s.set(d.ContentLayoutCssVariableNames.PageMoveLength,n.pageMoveLength+`px`),s.set(d.ContentLayoutCssVariableNames.ColumnGap,this.htmlOptions.columnGap+`px`),this.htmlOptions.enableColumnRule&&this.htmlOptions.columns>1&&!t.isNullOrWhiteSpace(e.columnRuleColor)?s.set(a.Theme.ColumnRuleColor,e.columnRuleColor):s.set(a.Theme.ColumnRuleColor,`none`),s.set(d.ContentLayoutCssVariableNames.MaxImageHeightRatio,`${this.htmlOptions.maxImageHeightRatio}`),s.set(d.ContentLayoutCssVariableNames.MaxImageWidthRatio,`${this.htmlOptions.maxImageWidthRatio}`),s.set(d.ContentLayoutCssVariableNames.ImagePlaceholderColor,`color-mix(in srgb, var(${a.Theme.ContentTextColor}) 8%, var(${a.Theme.ContentBackground}))`),s}prepareDocStyles(e){let t=r.getDocumentBody(e).lastElementChild;return t&&t.classList.add(s.HtmlSettings.WithoutMarginBottomCssName),l.DOCUMENT_LAYOUT_CSS}async changeLayout(t){let n=t.flipMode!==void 0&&this.htmlOptions.flipMode!==t.flipMode,r=t.columns!==void 0&&(this.htmlOptions.columns!==t.columns.columns||this.htmlOptions.autoColumns!==t.columns.autoColumns),i=t.writingMode!==void 0&&this.htmlOptions.writingMode!==t.writingMode,a=t.direction!==void 0&&this.htmlOptions.direction!==t.direction;if(!n&&!r&&!i&&!a)return;if(!this.owner.context.currentLocation?.precise){let e=await this.progress.getProgress(!0);e&&(this.owner.context.currentLocation=e.location)}let o={};n&&(o.flipMode={previous:this.htmlOptions.flipMode,current:t.flipMode},this.htmlOptions.flipMode=t.flipMode),r&&t.columns&&(o.columns={previous:this.htmlOptions.columns,current:t.columns.columns},o.autoColumns={previous:this.htmlOptions.autoColumns,current:t.columns.autoColumns},this.htmlOptions.columns=t.columns.columns,this.htmlOptions.autoColumns=t.columns.autoColumns),i&&(o.writingMode={previous:this.htmlOptions.writingMode,current:t.writingMode},this.htmlOptions.writingMode=t.writingMode),a&&(o.direction={previous:this.htmlOptions.direction,current:t.direction},this.htmlOptions.direction=t.direction);let s=(a||i)&&c.getLayoutGeometry(this.htmlOptions).flipMode==`page`;s&&(this.capturePageReloadLocation(),f.freezePageStripForRouteChange(this.renererviewport.getRendererContainer()));try{this.renererviewport.applyCssVariables();let t=this.documentsProvider.getLoadedDocuments();for(let e of t)await this.applyDocStyles(e);if(this.owner.events.emit(e.EventNames.LayoutChange,o),this.pageReloadLocation){let e=this.pageReloadLocation;this.pageReloadLocation=void 0,await this.documentsProvider.load(e,!0);return}await this.documentsProvider.reload()}finally{if(s){let e=this.renererviewport.getRendererContainer();await f.waitForPageStripPaint(),f.unfreezePageStripForRouteChange(e)}}}capturePageReloadLocation(){let e=this.documentsProvider,t=this.owner.context.currentLocation,r=t?.url&&e.getDocument(t.url)||e.getFirstVisibleDocument();if(!r)return;let i=new n.FileLocation(r.url,1,`page`);i.current=Math.max(1,e.getCurrentPageNumber(r));let a=r.getContentContainer()?.ownerDocument?.documentElement,o=parseInt(a?.getAttribute(s.HtmlSettings.HtmlDocumentNumperOfPagesPropertyName)??``,10);Number.isFinite(o)&&o>0&&(i.total=o),this.pageReloadLocation=i}};exports.HtmlRendererLayout=p;
@@ -1,7 +1,7 @@
1
1
  import { HtmlLayoutMetrics } from './HtmlLayoutMetrics';
2
2
  import { HtmlOptions } from '../../HtmlOptions';
3
- import { Direction, FlipMode, IDocumentsProvider, IProgressTracker, Reader, WritingMode } from '../../../../kernal';
4
- import { ColumnOptions, IHtmlRendererLayout } from './IHtmlRendererLayout';
3
+ import { IDocumentsProvider, IProgressTracker, Reader } from '../../../../kernal';
4
+ import { HtmlChangeLayoutOptions, IHtmlRendererLayout } from './IHtmlRendererLayout';
5
5
  import { IRendererViewport } from '../../../../kernal/IRendererViewport';
6
6
  import { IHtmlDocument } from '../IHtmlDocument';
7
7
 
@@ -11,16 +11,12 @@ export declare class HtmlRendererLayout implements IHtmlRendererLayout {
11
11
  private readonly renererviewport;
12
12
  private readonly progress;
13
13
  private readonly htmlOptions;
14
- private readonly DocumentLayoutCssName;
15
- private readonly DocumentPageModeCssName;
16
- private readonly WritingVerticalScollDocumentLayoutCssName;
14
+ private pageReloadLocation;
17
15
  constructor(owner: Reader, documentsProvider: IDocumentsProvider<IHtmlDocument>, renererviewport: IRendererViewport<HtmlLayoutMetrics>, progress: IProgressTracker, htmlOptions: HtmlOptions);
18
16
  applyStyles(): Promise<void>;
19
17
  applyDocStyles(doc: IHtmlDocument): Promise<void>;
20
18
  private getCssVariables;
21
- protected prepareDocStyes(doc: Document, writingMode: WritingMode, direction: Direction): Promise<string>;
22
- private toggleColumnLayout;
23
- private isVerticalWriting;
24
- changeFlipMode(flipMode: FlipMode): Promise<void>;
25
- changeColumns(columnOptions: ColumnOptions): Promise<void>;
19
+ protected prepareDocStyles(doc: Document): string;
20
+ changeLayout(options: HtmlChangeLayoutOptions): Promise<void>;
21
+ private capturePageReloadLocation;
26
22
  }
@@ -1,82 +1,91 @@
1
- import { Theme as e } from "../../../../kernal/Theme.mjs";
2
- import { EventNames as t } from "../../../../kernal/EventNames.mjs";
3
- import { isNullOrWhiteSpace as n } from "../../../../kernal/common/text.mjs";
1
+ import { EventNames as e } from "../../../../kernal/EventNames.mjs";
2
+ import { isNullOrWhiteSpace as t } from "../../../../kernal/common/text.mjs";
3
+ import { FileLocation as n } from "../../../../kernal/progress/Progress.mjs";
4
4
  import { getDocumentBody as r } from "../../../../kernal/html/finder.mjs";
5
5
  import { injectCssContent as i } from "../../../../kernal/html/injector.mjs";
6
- import { HtmlSettings as a } from "../../HtmlSettings.mjs";
7
- import { ContentLayoutCssVariableNames as o } from "../style/ContentLayoutCssVariableNames.mjs";
6
+ import { Theme as a } from "../../../../kernal/Theme.mjs";
7
+ import { yieldToMain as o } from "../../../../kernal/web/scheduler.mjs";
8
+ import { HtmlSettings as s } from "../../HtmlSettings.mjs";
9
+ import { getLayoutGeometry as c } from "./resolveLayoutRoute.mjs";
10
+ import { DOCUMENT_LAYOUT_CSS as l } from "./css/hostLayoutCss.mjs";
11
+ import { applyContentLayoutClass as u } from "./applyLayoutClasses.mjs";
12
+ import { ContentLayoutCssVariableNames as d } from "../style/ContentLayoutCssVariableNames.mjs";
13
+ import { freezePageStripForRouteChange as f, unfreezePageStripForRouteChange as p, waitForPageStripPaint as m } from "./pageStripRouteChange.mjs";
8
14
  //#region mediaTypes/html/renderer/layout/HtmlRendererLayout.ts
9
- var s = class {
15
+ var h = class {
10
16
  constructor(e, t, n, r, i) {
11
- this.owner = e, this.documentsProvider = t, this.renererviewport = n, this.progress = r, this.htmlOptions = i, this.DocumentLayoutCssName = "document-layout", this.DocumentPageModeCssName = "document-page-mode", this.WritingVerticalScollDocumentLayoutCssName = "vertical-document-layout";
17
+ this.owner = e, this.documentsProvider = t, this.renererviewport = n, this.progress = r, this.htmlOptions = i;
12
18
  }
13
19
  async applyStyles() {
14
20
  let e = this.documentsProvider.getLoadedDocuments();
15
21
  for (let t of e) await this.applyDocStyles(t);
16
22
  }
17
- async applyDocStyles(t) {
18
- let n = (t.getContentContainer() ?? await t.getVirtualContentContainer()).ownerDocument.documentElement, r = this.htmlOptions.flipMode, a = this.renererviewport.getLayoutMetrics(), o = this.htmlOptions.writingMode ?? "horizontal-tb", s = this.htmlOptions.direction ?? "ltr", c = await this.prepareDocStyes(n.ownerDocument, o, s);
19
- i(n.ownerDocument, c, !0, "columns-layout-css");
20
- let l = await this.owner.services.get("themeProvider"), u;
21
- u = l ? l.getCurrentTheme() : new e();
22
- let d = await this.getCssVariables(u, a, r);
23
- for (let [e, t] of d) n.style.setProperty(e, t);
24
- this.toggleColumnLayout(n, r, o, s);
23
+ async applyDocStyles(e) {
24
+ let t = (e.getContentContainer() ?? await e.getVirtualContentContainer()).ownerDocument.documentElement, n = c(this.htmlOptions), r = this.renererviewport.getLayoutMetrics();
25
+ i(t.ownerDocument, this.prepareDocStyles(t.ownerDocument), !0, "columns-layout-css");
26
+ let l = await this.owner.services.get("themeProvider"), d = l ? l.getCurrentTheme() : new a(), f = await this.getCssVariables(d, r, n);
27
+ for (let [e, n] of f) t.style.setProperty(e, n);
28
+ u(t, n), t.removeAttribute(s.HtmlDocumentNumperOfPagesPropertyName), e.resetLayoutSizes(), await o();
25
29
  }
26
- async getCssVariables(t, r, i) {
27
- let a;
28
- a = i == "scroll" ? "none" : r.columnHeight + "px";
29
- let s = /* @__PURE__ */ new Map();
30
- return s.set(o.ColumnWidth, r.columnWidth + "px"), s.set(o.ColumnHeight, r.columnHeight + "px"), s.set(o.ColumnMaxHeight, a), s.set(o.ContentShadowWidth, r.shadowWidth + "px"), s.set(o.ColumnWidthNumber, r.columnWidth.toString()), s.set(o.ColumnHeightNumber, r.columnHeight.toString()), s.set(o.PageWidth, r.pageWidth + "px"), s.set(o.PageHeight, r.pageHeight + "px"), s.set(o.PageMoveLength, r.pageMoveLength + "px"), s.set(o.ColumnGap, this.htmlOptions.columnGap + "px"), this.htmlOptions.enableColumnRule && this.htmlOptions.columns > 1 && !n(t.columnRuleColor) ? s.set(e.ColumnRuleColor, t.columnRuleColor) : s.set(e.ColumnRuleColor, "none"), s.set(o.MaxImageHeightRatio, `${this.htmlOptions.maxImageHeightRatio}`), s.set(o.MaxImageWidthRatio, `${this.htmlOptions.maxImageWidthRatio}`), s;
30
+ async getCssVariables(e, n, r) {
31
+ let i = r.flipMode == "scroll" ? "none" : n.columnHeight + "px", o = r.getColumnWidthForCss(n.columnWidth, n.pageHeight), s = /* @__PURE__ */ new Map();
32
+ return s.set(d.ColumnWidth, o + "px"), s.set(d.ColumnHeight, n.columnHeight + "px"), s.set(d.ColumnMaxHeight, i), s.set(d.ContentShadowWidth, n.shadowWidth + "px"), s.set(d.ColumnWidthNumber, n.columnWidth.toString()), s.set(d.ColumnHeightNumber, n.columnHeight.toString()), s.set(d.ColumnBoxWidth, n.columnWidth + "px"), s.set(d.ColumnBoxHeight, n.columnHeight + "px"), s.set(d.PageWidth, n.pageWidth + "px"), s.set(d.PageHeight, n.pageHeight + "px"), s.set(d.PageMoveLength, n.pageMoveLength + "px"), s.set(d.ColumnGap, this.htmlOptions.columnGap + "px"), this.htmlOptions.enableColumnRule && this.htmlOptions.columns > 1 && !t(e.columnRuleColor) ? s.set(a.ColumnRuleColor, e.columnRuleColor) : s.set(a.ColumnRuleColor, "none"), s.set(d.MaxImageHeightRatio, `${this.htmlOptions.maxImageHeightRatio}`), s.set(d.MaxImageWidthRatio, `${this.htmlOptions.maxImageWidthRatio}`), s.set(d.ImagePlaceholderColor, `color-mix(in srgb, var(${a.ContentTextColor}) 8%, var(${a.ContentBackground}))`), s;
31
33
  }
32
- async prepareDocStyes(t, n, i) {
33
- let s = "";
34
- s += `html { writing-mode: ${n} !important; direction: ${i} !important; }`, s += `body { writing-mode: ${n} !important; direction: ${i} !important; }`, s += "." + this.DocumentPageModeCssName, s += "{", s += "width:var(" + o.PageWidth + ") !important;", s += "height:var(" + o.PageHeight + ") !important;", s += "column-width:var(" + o.ColumnWidth + ") !important;", s += "column-rule:1px solid var(" + e.ColumnRuleColor + ") !important;", s += "column-fill:auto;column-gap:var(" + o.ColumnGap + ") !important;", s += "page-break-inside:avoid;break-inside:avoid;", s += "transition-property: transform;", s += "overflow: hidden !important;", s += "overflow-wrap: break-word !important;", s += "position: static !important;", s += "border: 0px !important;", s += "margin: 0px !important;", s += "padding:0px !important;", s += "max-height: none !important;", s += "max-width: none !important;", s += "}";
35
- let c = r(t).lastElementChild;
36
- return c && (s += "." + a.WithoutMarginBottomCssName + "{margin-block-end:0 !important;}", c.classList.add(a.WithoutMarginBottomCssName)), s;
34
+ prepareDocStyles(e) {
35
+ let t = r(e).lastElementChild;
36
+ return t && t.classList.add(s.WithoutMarginBottomCssName), l;
37
37
  }
38
- toggleColumnLayout(e, t, n, r) {
39
- e.classList.add(this.DocumentLayoutCssName), t == "page" ? e.classList.add(this.DocumentPageModeCssName) : (e.classList.remove(this.DocumentPageModeCssName), this.isVerticalWriting(n) ? e.classList.add(this.WritingVerticalScollDocumentLayoutCssName) : e.classList.remove(this.WritingVerticalScollDocumentLayoutCssName));
40
- }
41
- isVerticalWriting(e) {
42
- return e == "vertical-lr" || e == "vertical-rl";
43
- }
44
- async changeFlipMode(e) {
45
- if (this.htmlOptions.flipMode === e) return;
46
- let n = this.htmlOptions.flipMode;
47
- if (!this.owner.context.currentLocation?.precise) {
48
- let e = await this.progress.getProgress(!0);
49
- e && (this.owner.context.currentLocation = e.location);
50
- }
51
- this.owner.context.setUserChangedProgress(!1), this.htmlOptions.flipMode = e, this.renererviewport.applyCssVariables();
52
- let r = this.documentsProvider.getLoadedDocuments();
53
- for (let e of r) await this.applyDocStyles(e);
54
- this.owner.events.emit(t.LayoutChange, { flipMode: {
55
- previous: n,
56
- current: e
57
- } }), await this.documentsProvider.reload();
58
- }
59
- async changeColumns(e) {
60
- if (this.htmlOptions.columns === e.columns && this.htmlOptions.autoColumns === e.autoColumns) return;
61
- let n = this.htmlOptions.columns, r = this.htmlOptions.autoColumns;
38
+ async changeLayout(t) {
39
+ let n = t.flipMode !== void 0 && this.htmlOptions.flipMode !== t.flipMode, r = t.columns !== void 0 && (this.htmlOptions.columns !== t.columns.columns || this.htmlOptions.autoColumns !== t.columns.autoColumns), i = t.writingMode !== void 0 && this.htmlOptions.writingMode !== t.writingMode, a = t.direction !== void 0 && this.htmlOptions.direction !== t.direction;
40
+ if (!n && !r && !i && !a) return;
62
41
  if (!this.owner.context.currentLocation?.precise) {
63
42
  let e = await this.progress.getProgress(!0);
64
43
  e && (this.owner.context.currentLocation = e.location);
65
44
  }
66
- this.owner.context.setUserChangedProgress(!1), this.htmlOptions.columns = e.columns, this.htmlOptions.autoColumns = e.autoColumns, this.renererviewport.applyCssVariables();
67
- let i = this.documentsProvider.getLoadedDocuments();
68
- for (let e of i) await this.applyDocStyles(e);
69
- this.owner.events.emit(t.LayoutChange, {
70
- columns: {
71
- previous: n,
72
- current: e.columns
73
- },
74
- autoColumns: {
75
- previous: r,
76
- current: e.autoColumns
45
+ let o = {};
46
+ n && (o.flipMode = {
47
+ previous: this.htmlOptions.flipMode,
48
+ current: t.flipMode
49
+ }, this.htmlOptions.flipMode = t.flipMode), r && t.columns && (o.columns = {
50
+ previous: this.htmlOptions.columns,
51
+ current: t.columns.columns
52
+ }, o.autoColumns = {
53
+ previous: this.htmlOptions.autoColumns,
54
+ current: t.columns.autoColumns
55
+ }, this.htmlOptions.columns = t.columns.columns, this.htmlOptions.autoColumns = t.columns.autoColumns), i && (o.writingMode = {
56
+ previous: this.htmlOptions.writingMode,
57
+ current: t.writingMode
58
+ }, this.htmlOptions.writingMode = t.writingMode), a && (o.direction = {
59
+ previous: this.htmlOptions.direction,
60
+ current: t.direction
61
+ }, this.htmlOptions.direction = t.direction);
62
+ let s = (a || i) && c(this.htmlOptions).flipMode == "page";
63
+ s && (this.capturePageReloadLocation(), f(this.renererviewport.getRendererContainer()));
64
+ try {
65
+ this.renererviewport.applyCssVariables();
66
+ let t = this.documentsProvider.getLoadedDocuments();
67
+ for (let e of t) await this.applyDocStyles(e);
68
+ if (this.owner.events.emit(e.LayoutChange, o), this.pageReloadLocation) {
69
+ let e = this.pageReloadLocation;
70
+ this.pageReloadLocation = void 0, await this.documentsProvider.load(e, !0);
71
+ return;
72
+ }
73
+ await this.documentsProvider.reload();
74
+ } finally {
75
+ if (s) {
76
+ let e = this.renererviewport.getRendererContainer();
77
+ await m(), p(e);
77
78
  }
78
- }), await this.documentsProvider.reload();
79
+ }
80
+ }
81
+ capturePageReloadLocation() {
82
+ let e = this.documentsProvider, t = this.owner.context.currentLocation, r = t?.url && e.getDocument(t.url) || e.getFirstVisibleDocument();
83
+ if (!r) return;
84
+ let i = new n(r.url, 1, "page");
85
+ i.current = Math.max(1, e.getCurrentPageNumber(r));
86
+ let a = r.getContentContainer()?.ownerDocument?.documentElement, o = parseInt(a?.getAttribute(s.HtmlDocumentNumperOfPagesPropertyName) ?? "", 10);
87
+ Number.isFinite(o) && o > 0 && (i.total = o), this.pageReloadLocation = i;
79
88
  }
80
89
  };
81
90
  //#endregion
82
- export { s as HtmlRendererLayout };
91
+ export { h as HtmlRendererLayout };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/html/injector.cjs"),t=require("../../HtmlSettings.cjs"),n=require("./ViewportCssVariableNames.cjs"),r=require("./HtmlLayoutMetrics.cjs"),i=require("../documents/HtmlContainerBuilder.cjs");var a=class{constructor(n,r,a,o){this.owner=n,this.readerContainer=r,this.getColumnWidth=()=>this.htmlOptions.maxColumnWidth?Math.abs(this.htmlOptions.maxColumnWidth):768,this.options=this.owner.options,this.device=this.owner.device,this.optionsProvider=a,this.htmlOptions=o,this.containerBuilder=new i.HtmlContainerBuilder(o);let{rendererContainer:s,rendererCss:c,otherCss:l}=this.containerBuilder.createContainers();e.injectCssContent(this.readerContainer.ownerDocument,c+l,!0,`html-renderer-style`),this.readerContainer.appendChild(s),this.rendererContainer=s,this.scrollElement=this.rendererContainer,this.contentsShadowContainer=this.rendererContainer.querySelector(`.`+t.HtmlSettings.ContentsShadowContainerCssName),this.contentsContainer=this.rendererContainer.querySelector(`.`+t.HtmlSettings.ContentsContainerCssName)}getRendererContainer(){return this.rendererContainer}getScrollElement(){return this.rendererContainer}getLayoutMetrics(){return this.layout||=(this.applyCssVariables(),this.buildLayoutMetrics()),this.layout}applyCssVariables(){let e=this.prepareRendererCssVariables(),t=this.prepareOtherCssVariables(),n=new Map;e.forEach((e,t)=>{n.set(t,e)}),t.forEach((e,t)=>{n.set(t,e)});let r=this.owner.getRootContainer();n.forEach((e,t)=>{r.style.setProperty(t,e)}),this.layout=this.buildLayoutMetrics()}prepareRendererCssVariables(){let e=this.getFlipMode(),t=e==`page`?`hidden`:`auto`,r=new Map,i=e==`page`?0:this.htmlOptions.contentWrapperMarginBottom??10,a=e==`page`?0:this.htmlOptions.contentWrapperMarginTop??10;return r.set(n.ViewportCssVariableNames.ContentWrapperMarginTop,a+`px`),r.set(n.ViewportCssVariableNames.ContentWrapperMarginBottom,i+`px`),r.set(n.ViewportCssVariableNames.ContentWrapperBorderRadius,(this.htmlOptions.contentWrapperBorderRadius??0)+`px`),r.set(n.ViewportCssVariableNames.ScrollElementOverflow,t),r}prepareOtherCssVariables(){let e=this.owner.getRootContainer(),t=this.getFlipMode();t==`page`&&this.scrollElement?.scrollTo(0,0);let r=this.htmlOptions.columnGap??40,i=this.contentsShadowContainer,a=this.rendererContainer.clientWidth,o=this.rendererContainer.clientHeight;this.rendererContainer.setAttribute(`data-client-width`,`${a}`),this.rendererContainer.setAttribute(`data-client-height`,`${o}`);let s=this.getContentsContainerWidth(),c=s+`px`,l=this.rendererContainer.offsetWidth-this.rendererContainer.clientWidth,u=this.rendererContainer.offsetHeight-this.rendererContainer.clientHeight,d=new Map;d.set(n.ViewportCssVariableNames.ScrollElementVerticalScrollBarWidth,l+`px`),d.set(n.ViewportCssVariableNames.ScrollElementHorizontalScrollBarHeight,u+`px`),e.style.setProperty(n.ViewportCssVariableNames.ContentsContainerWidth,c),d.set(n.ViewportCssVariableNames.ContentsContainerWidth,c);let f=0;t==`page`&&(f=0),a-s-2<2*f&&(f=0);let p=``;p=f>0?``+f+`px 0`:`0`,e.style.setProperty(n.ViewportCssVariableNames.ContentsContainerPadding,p),d.set(n.ViewportCssVariableNames.ContentsContainerPadding,p);let m=this.calculateColumns(s);this.htmlOptions.columns=m;let h=this.getContentPaddingFactor(),g=this.getContentsShadowMargin()+Math.min(20,s*h),{columnWidth:_,remainder:v}=this.getFinalColumnWidth(s-g*2,m,r);t==`page`?v==0?i.style.margin=`0 ${g}px`:i.style.margin=`0 ${g+v/2}px`:i.style.margin=`0px`;let y=i.getBoundingClientRect().width;this.rendererContainer.setAttribute(`data-transform-length`,(y+r).toString()),this.rendererContainer.setAttribute(`data-shadow-width`,y.toString()),this.rendererContainer.setAttribute(`data-column-width`,_.toString()),this.rendererContainer.setAttribute(`data-column-gap`,r.toString()),this.rendererContainer.setAttribute(`data-page-width`,`${_}`);let{contentWrapperPaddingBottomNumber:b,contentWrapperPaddingTopNumber:x,contentWrapperPadding:S,contentWrapperPaddingTopBottom:C}=this.getContentWrapperPadding(s,r);this.rendererContainer.setAttribute(`data-page-height`,`${o-x-b}`),d.set(n.ViewportCssVariableNames.ContentWrapperWidth,y+`px`),t==`scroll`?d.set(n.ViewportCssVariableNames.ContentWrapperMinWidth,y+`px`):d.set(n.ViewportCssVariableNames.ContentWrapperMinWidth,_+r/2+`px`),d.set(n.ViewportCssVariableNames.ContentWrapperHeight,this.getContentWrapperHeight()),d.set(n.ViewportCssVariableNames.ContentWrapperMinHeight,o+`px`),d.set(n.ViewportCssVariableNames.ContentWrapperMaxHeight,o+`px`),d.set(n.ViewportCssVariableNames.ContentWrapperPadding,S),t==`page`?d.set(n.ViewportCssVariableNames.ContentContainerWidth,_+`px`):d.set(n.ViewportCssVariableNames.ContentContainerWidth,`100%`);let w=`calc(var(${n.ViewportCssVariableNames.ContentWrapperHeight}) - ${C})`;return d.set(n.ViewportCssVariableNames.ContentContainerHeight,w),d.set(n.ViewportCssVariableNames.ContentColumnGap,r+`px`),this.rendererContainer&&(d.set(n.ViewportCssVariableNames.ContentsContainerOffsetLeft,`calc((`+this.rendererContainer.clientWidth+`px - `+c+`) / 2)`),this.updateCssVariablesTimeoutId=setTimeout(()=>{let t=new Map;t.set(n.ViewportCssVariableNames.ContentsContainerOffsetLeft,this.contentsContainer.offsetLeft+`px`),t.forEach((t,n)=>{e.style.setProperty(n,t)}),e&&t.forEach((t,n)=>{e.style.setProperty(n,t)})},1e3)),d}buildLayoutMetrics(){let e=this.getFlipMode(),t=new r.HtmlLayoutMetrics,n=this.rendererContainer,{clientWidth:i,clientHeight:a}=n,o=parseFloat(n.getAttribute(`data-transform-length`));t.clientWidth=i;let s;return s=e==`scroll`?this.rendererContainer.ownerDocument.defaultView.innerHeight-this.optionsProvider.getHeaderHeight()-this.optionsProvider.getFooterHeight():parseFloat(n.getAttribute(`data-page-height`)),t.clientHeight=a,t.pageHeight=s,t.columnHeight=s,t.columnGap=parseFloat(n.getAttribute(`data-column-gap`)),t.columnWidth=parseFloat(n.getAttribute(`data-column-width`)),t.pageWidth=parseFloat(n.getAttribute(`data-page-width`)),t.pageMoveLength=o,t.shadowWidth=parseFloat(n.getAttribute(`data-shadow-width`)),t}getContentWrapperHeight(){return this.getFlipMode()==`page`?`${this.rendererContainer.clientHeight}px`:this.owner.inIframe?`100%`:`auto`}getContentsShadowMargin(){return this.htmlOptions.contentsShadowMargin??10}getContentWrapperPadding(e,t){let n=this.getFlipMode(),r=this.getContentPaddingFactor(),i=n==`scroll`?30:0,a=this.getContentsShadowMargin();n==`page`&&(i+=a);let o=i+`px`,s=n==`scroll`?30:0;n==`page`&&(s+=a),n==`scroll`&&s<this.options.minFooterHeight&&(s=this.options.minFooterHeight);let c=this.getContentsShadowMargin()+Math.min(20,e*r),l=s+`px`;return{contentWrapperPaddingTop:o,contentWrapperPaddingLeft:n==`scroll`?`${c}px`:`0`,contentWrapperPaddingRight:n==`scroll`?`${c}px`:`0`,contentWrapperPaddingBottom:l,contentWrapperPaddingLeftRight:n==`scroll`?`${t}px`:`0`,contentWrapperPaddingTopBottom:`${i+s}px`,contentWrapperPadding:n==`scroll`?`${i}px ${c}px ${s}px ${c}px`:`${i}px 0 0 0px`,contentWrapperPaddingTopNumber:i,contentWrapperPaddingBottomNumber:s}}getContentsContainerWidth(){let{width:e}=this.rendererContainer.getBoundingClientRect(),t=e;if(this.device.getDeviceType()==`mobile`&&t<=768)return t;if(this.getFlipMode()==`scroll`)return this.htmlOptions.enableAutoFitPageWidth?t:this.htmlOptions.maxScrollContentWidth?Math.min(t,Math.abs(this.htmlOptions.maxScrollContentWidth)):Math.min(t,this.htmlOptions.columnWidth);let n=this.htmlOptions.columns,r=this.getColumnWidth();if(this.htmlOptions.autoColumns){if(!this.htmlOptions.maxColumns)return t;n=t<=r?1:this.htmlOptions.maxColumns}let i=this.getMultiColumnWidthFactor();return n>1?Math.min(t,n*r*i):Math.min(t,r)}calculateColumns(e){let t=this.htmlOptions.columns??1,n=this.getColumnWidth();if(this.htmlOptions.autoColumns){if(e<=n)t=1;else{t=Math.floor(e/n);let r=e%n;(r>n/5||r>t*50)&&(t+=1),this.htmlOptions.maxColumns&&t>this.htmlOptions.maxColumns&&(t=this.htmlOptions.maxColumns)}}return t}getFinalColumnWidth(e,t,n){let r=n*(t-1),i=(e-r)/t,a=0,o=Math.round(i);return o!=i&&(i=o,a=e-(t*o+r)),{columnWidth:i,remainder:a}}getContentPaddingFactor(){return this.device.getDeviceType()==`mobile`?.01:.05}getMultiColumnWidthFactor(){let e=this.htmlOptions.multiColumnWidthFactor;return e||=.8,e=Math.abs(e),e<.5&&(e=.5),e>1&&(e=1),e}getFlipMode(){return this.htmlOptions.forceScroll?`scroll`:this.htmlOptions.flipMode}async dispose(){this.updateCssVariablesTimeoutId&&=(clearTimeout(this.updateCssVariablesTimeoutId),null)}};exports.HtmlRendererViewport=a;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/html/injector.cjs"),t=require("../../../../kernal/html/realm.cjs"),n=require("../../HtmlSettings.cjs"),r=require("./resolveLayoutRoute.cjs"),i=require("./ViewportCssVariableNames.cjs"),a=require("./HtmlLayoutMetrics.cjs"),o=require("../documents/HtmlContainerBuilder.cjs"),s=require("./applyLayoutClasses.cjs"),c=require("./resolveContentWrapperMinWidth.cjs");var l=class{constructor(t,r,i,a){this.owner=t,this.readerContainer=r,this.getColumnWidth=()=>this.htmlOptions.maxColumnWidth?Math.abs(this.htmlOptions.maxColumnWidth):768,this.options=this.owner.options,this.device=this.owner.device,this.optionsProvider=i,this.htmlOptions=a,this.containerBuilder=new o.HtmlContainerBuilder(a);let{rendererContainer:s,rendererCss:c,otherCss:l}=this.containerBuilder.createContainers();e.injectCssContent(this.readerContainer.ownerDocument,c+l,!0,`html-renderer-style`),this.readerContainer.appendChild(s),this.rendererContainer=s,this.scrollElement=this.rendererContainer,this.contentsShadowContainer=this.rendererContainer.querySelector(`.`+n.HtmlSettings.ContentsShadowContainerCssName),this.rendererContainer.setAttribute(n.HtmlSettings.HostViewportModeAttribute,this.owner.getHostViewport().mode)}getRendererContainer(){return this.rendererContainer}getScrollElement(){let e=this.owner.getHostViewport();return e.mode==`window`?e.scrollElement:this.rendererContainer}getLayoutMetrics(){return this.layout||=(this.internlApplyCssVariables(),this.buildLayoutMetrics()),this.layout}applyCssVariables(){this.internlApplyCssVariables(),this.layout=this.buildLayoutMetrics()}internlApplyCssVariables(){this.owner.refreshHostViewport();let e=r.getLayoutGeometry(this.htmlOptions),t=this.getScrollElement(),n=e.flipMode==`scroll`&&t?{left:t.scrollLeft,top:t.scrollTop}:void 0;this.applyFlowClasses(e),this.syncPageTransformSign(e);let a=this.prepareRendererCssVariables(),o=this.prepareOtherCssVariables(),s=new Map;a.forEach((e,t)=>{s.set(t,e)}),o.forEach((e,t)=>{s.set(t,e)});let c=this.owner.getRootContainer();c.style.setProperty(`direction`,`var(${i.ViewportCssVariableNames.ReaderViewportDirection})`),s.forEach((e,t)=>{c.style.setProperty(t,e)}),n&&t&&t.scrollTo(n.left,n.top)}syncPageTransformSign(e){let r=this.rendererContainer.querySelector(`.`+n.HtmlSettings.TransformContainerCssName);if(!t.isHtmlElement(r))return;if(e.flipMode!=`page`){r.style.removeProperty(`transition`),r.style.removeProperty(`transform`),r.removeAttribute(`data-target-transform`);return}if(r.hasAttribute(n.HtmlSettings.PageMovingAttributeName))return;let i=r.getAttribute(`data-target-transform`);if(i==null||i===``)return;let a=parseFloat(i);Number.isFinite(a)&&(r.style.removeProperty(`transition`),r.style.transform=e.getPageTranslateCss(a))}prepareRendererCssVariables(){let e=r.getLayoutGeometry(this.htmlOptions),t=e.flipMode;this.rendererContainer.setAttribute(n.HtmlSettings.HostViewportModeAttribute,this.owner.getHostViewport().mode);let a=new Map,o=e.viewport.zeroWrapperMargins?0:this.htmlOptions.contentWrapperMarginBottom??10,s=e.viewport.zeroWrapperMargins?0:this.htmlOptions.contentWrapperMarginTop??10,c=e.viewport.zeroWrapperMargins?0:this.htmlOptions.contentWrapperGap??10;a.set(i.ViewportCssVariableNames.ContentWrapperMarginTop,s+`px`),a.set(i.ViewportCssVariableNames.ContentWrapperMarginBottom,o+`px`),a.set(i.ViewportCssVariableNames.ContentWrapperGap,c+`px`);let l=this.htmlOptions.enableContentWrapperBorderRadius&&t==`scroll`?this.htmlOptions.contentWrapperBorderRadius??0:0;a.set(i.ViewportCssVariableNames.ContentWrapperBorderRadius,l+`px`);let u=this.owner.getHostViewport().mode==`window`&&t==`scroll`;return a.set(i.ViewportCssVariableNames.ScrollElementOverflow,u?`visible`:e.overflowY),a.set(i.ViewportCssVariableNames.ScrollElementOverflowX,u?`visible`:e.overflowX),a.set(i.ViewportCssVariableNames.ReaderViewportDirection,e.direction==`ltr`?`unset`:e.direction),a}applyFlowClasses(e){s.applyRootDirectionClass(this.owner.getRootContainer(),e),s.applyRendererLayoutClass(this.rendererContainer,e)}prepareOtherCssVariables(){let e=this.owner.getRootContainer(),t=r.getLayoutGeometry(this.htmlOptions),n=t.flipMode;n==`page`&&this.scrollElement?.scrollTo(0,0);let a=this.htmlOptions.columnGap??40,o=this.contentsShadowContainer,s=this.rendererContainer.clientWidth||this.owner.getHostViewport().width,l=this.getViewportHeight();this.rendererContainer.setAttribute(`data-client-width`,`${s}`),this.rendererContainer.setAttribute(`data-client-height`,`${l}`);let u=this.getContentsContainerWidth(),d=t.viewport.contentsContainerWidthMode==`max-content`?`max-content`:u+`px`,f=this.rendererContainer.offsetWidth-this.rendererContainer.clientWidth,p=this.rendererContainer.offsetHeight-this.rendererContainer.clientHeight,m=new Map;m.set(i.ViewportCssVariableNames.ScrollElementVerticalScrollBarWidth,f+`px`),m.set(i.ViewportCssVariableNames.ScrollElementHorizontalScrollBarHeight,p+`px`),m.set(i.ViewportCssVariableNames.ReaderViewportWidth,s+`px`),m.set(i.ViewportCssVariableNames.ReaderViewportHeight,l+`px`),e.style.setProperty(i.ViewportCssVariableNames.ContentsContainerWidth,d),m.set(i.ViewportCssVariableNames.ContentsContainerWidth,d);let h=0;n==`page`&&(h=0),s-u-2<2*h&&(h=0);let g=``;g=h>0?``+h+`px 0`:`0`,e.style.setProperty(i.ViewportCssVariableNames.ContentsContainerPadding,g),m.set(i.ViewportCssVariableNames.ContentsContainerPadding,g);let _=t.viewport.forceSingleColumn?1:this.calculateColumns(u);t.viewport.forceSingleColumn||(this.htmlOptions.columns=_);let{marginInline:v,marginBlock:y}=this.getContentsShadowMargin(u),{columnWidth:b}=this.getFinalColumnWidth(u-v*2,_,a),x=v,S=y;n==`scroll`&&(x=0,S=0),o.style=n==`scroll`?`margin: ${S}px ${x}px;`:`margin: ${S}px ${x}px;height: ${l-2*y}px;`;let C=o.getBoundingClientRect().width,w=_*b+Math.max(0,_-1)*a,{contentWrapperPaddingBottomNumber:T,contentWrapperPaddingTopNumber:E,contentWrapperPadding:D,contentWrapperPaddingTopBottom:O}=this.getContentWrapperPadding(u,a),k=l-E-T,A=t.getPageMoveLength(w,k,a);this.rendererContainer.setAttribute(`data-transform-length`,A.toString()),this.rendererContainer.setAttribute(`data-shadow-width`,C.toString()),this.rendererContainer.setAttribute(`data-column-width`,b.toString()),this.rendererContainer.setAttribute(`data-column-gap`,a.toString()),this.rendererContainer.setAttribute(`data-page-width`,`${w}`),this.rendererContainer.setAttribute(`data-page-height`,`${k}`),m.set(i.ViewportCssVariableNames.ContentWrapperWidth,t.viewport.contentWrapperWidthMode==`auto`?`auto`:C+`px`),m.set(i.ViewportCssVariableNames.ContentWrapperMinWidth,c.resolveContentWrapperMinWidth(t.viewport.contentWrapperMinWidthMode,{shadowWidth:C,columnWidth:b,columnGap:a,viewportWidth:s})),m.set(i.ViewportCssVariableNames.ContentWrapperHeight,this.getContentWrapperHeight()),m.set(i.ViewportCssVariableNames.ContentWrapperMinHeight,l+`px`),m.set(i.ViewportCssVariableNames.ContentWrapperMaxHeight,t.viewport.contentWrapperMaxHeightMode==`none`?`none`:l+`px`),m.set(i.ViewportCssVariableNames.ContentWrapperPadding,D),t.viewport.contentContainerWidthMode==`auto`?m.set(i.ViewportCssVariableNames.ContentContainerWidth,`auto`):t.viewport.contentContainerWidthMode==`column`?m.set(i.ViewportCssVariableNames.ContentContainerWidth,b+`px`):m.set(i.ViewportCssVariableNames.ContentContainerWidth,`100%`);let j=t.viewport.contentContainerHeightMode==`page`?k+`px`:`calc(var(${i.ViewportCssVariableNames.ContentWrapperHeight}) - ${O})`;return m.set(i.ViewportCssVariableNames.ContentContainerHeight,j),m.set(i.ViewportCssVariableNames.ContentColumnGap,a+`px`),m}buildLayoutMetrics(){let e=this.getFlipMode(),t=new a.HtmlLayoutMetrics,n=this.rendererContainer,{clientWidth:r}=n,i=parseFloat(n.getAttribute(`data-transform-length`));t.clientWidth=r||this.owner.getHostViewport().width;let o;return o=e==`scroll`?this.getViewportHeight():parseFloat(n.getAttribute(`data-page-height`)),t.clientHeight=this.getViewportHeight(),t.pageHeight=o,t.columnHeight=o,t.columnGap=parseFloat(n.getAttribute(`data-column-gap`)),t.columnWidth=parseFloat(n.getAttribute(`data-column-width`)),t.pageWidth=parseFloat(n.getAttribute(`data-page-width`)),t.pageMoveLength=i,t.shadowWidth=parseFloat(n.getAttribute(`data-shadow-width`)),t}getContentWrapperHeight(){let e=r.getLayoutGeometry(this.htmlOptions);return e.viewport.contentWrapperHeightMode==`auto`?`auto`:e.viewport.contentWrapperHeightMode==`viewport`?`${this.getViewportHeight()}px`:this.owner.inIframe?`100%`:`auto`}getContentsShadowMargin(e){let t=this.htmlOptions.contentsShadowMargin??20,n=this.getContentPaddingFactor(),r=this.device.getDeviceType()==`mobile`?Math.round(t*.6):t;return{marginBlock:r,marginInline:r+Math.min(10,e*n)}}getContentWrapperPadding(e,t){let n=this.getFlipMode(),r=n==`scroll`?30:0,{marginBlock:i,marginInline:a}=this.getContentsShadowMargin(e);n==`page`&&(r+=i);let o=r+`px`,s=n==`scroll`?30:0;n==`page`&&(s+=i);let c=s+`px`;return{contentWrapperPaddingTop:o,contentWrapperPaddingLeft:n==`scroll`?`${a}px`:`0`,contentWrapperPaddingRight:n==`scroll`?`${a}px`:`0`,contentWrapperPaddingBottom:c,contentWrapperPaddingLeftRight:n==`scroll`?`${t}px`:`0`,contentWrapperPaddingTopBottom:`${r+s}px`,contentWrapperPadding:n==`scroll`?`${r}px ${a}px ${s}px ${a}px`:`0px`,contentWrapperPaddingTopNumber:r,contentWrapperPaddingBottomNumber:s}}getContentsContainerWidth(){let{width:e}=this.rendererContainer.getBoundingClientRect(),t=e;if(this.device.getDeviceType()==`mobile`&&t<=768)return t;if(this.getFlipMode()==`scroll`)return this.htmlOptions.enableAutoFitPageWidth?t:this.htmlOptions.maxScrollContentWidth?Math.min(t,Math.abs(this.htmlOptions.maxScrollContentWidth)):Math.min(t,this.htmlOptions.columnWidth);let n=this.htmlOptions.columns,r=this.getColumnWidth();if(this.htmlOptions.autoColumns){if(!this.htmlOptions.maxColumns)return t;n=t<=r?1:this.htmlOptions.maxColumns}let i=this.getMultiColumnWidthFactor();return n>1?Math.min(t,n*r*i):Math.min(t,r)}calculateColumns(e){let t=this.htmlOptions.columns??1,n=this.getColumnWidth();if(this.htmlOptions.autoColumns){if(e<=n)t=1;else{t=Math.floor(e/n);let r=e%n;(r>n/5||r>t*50)&&(t+=1),this.htmlOptions.maxColumns&&t>this.htmlOptions.maxColumns&&(t=this.htmlOptions.maxColumns)}}return t}getFinalColumnWidth(e,t,n){let r=n*(t-1),i=(e-r)/t,a=0,o=Math.round(i);return o!=i&&(i=o,a=e-(t*o+r)),{columnWidth:i,remainder:a}}getContentPaddingFactor(){return this.device.getDeviceType()==`mobile`?.01:.05}getMultiColumnWidthFactor(){let e=this.htmlOptions.multiColumnWidthFactor;return e||=.8,e=Math.abs(e),e<.5&&(e=.5),e>1&&(e=1),e}getViewportHeight(){let e=this.owner.getHostViewport();if(e.mode==`host`){let e=this.rendererContainer.clientHeight;if(e>=80&&e<33554400)return Math.round(e)}return e.height}getFlipMode(){return r.getLayoutGeometry(this.htmlOptions).flipMode}async dispose(){this.updateCssVariablesTimeoutId&&=(clearTimeout(this.updateCssVariablesTimeoutId),null)}};exports.HtmlRendererViewport=l;
@@ -13,7 +13,6 @@ export declare class HtmlRendererViewport implements IRendererViewport<HtmlLayou
13
13
  private readonly rendererContainer;
14
14
  private readonly scrollElement;
15
15
  private readonly contentsShadowContainer;
16
- private readonly contentsContainer;
17
16
  private readonly device;
18
17
  private updateCssVariablesTimeoutId;
19
18
  private readonly optionsProvider;
@@ -24,7 +23,10 @@ export declare class HtmlRendererViewport implements IRendererViewport<HtmlLayou
24
23
  getScrollElement(): HTMLElement;
25
24
  getLayoutMetrics(): HtmlLayoutMetrics;
26
25
  applyCssVariables(): void;
26
+ private internlApplyCssVariables;
27
+ private syncPageTransformSign;
27
28
  private prepareRendererCssVariables;
29
+ private applyFlowClasses;
28
30
  private prepareOtherCssVariables;
29
31
  private buildLayoutMetrics;
30
32
  private getContentWrapperHeight;
@@ -36,6 +38,7 @@ export declare class HtmlRendererViewport implements IRendererViewport<HtmlLayou
36
38
  private getFinalColumnWidth;
37
39
  private getContentPaddingFactor;
38
40
  private getMultiColumnWidthFactor;
41
+ private getViewportHeight;
39
42
  private getFlipMode;
40
43
  dispose(): Promise<void>;
41
44
  }