@foxycape/core 1.1.3 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (502) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +1 -0
  2. package/dist/core.css +2 -1
  3. package/dist/kernal/Constants.cjs +1 -1
  4. package/dist/kernal/Constants.mjs +4 -12
  5. package/dist/kernal/ContentRange.cjs +1 -1
  6. package/dist/kernal/ContentRange.mjs +4 -6
  7. package/dist/kernal/Context.cjs +1 -1
  8. package/dist/kernal/Context.mjs +31 -35
  9. package/dist/kernal/Debounce.cjs +1 -1
  10. package/dist/kernal/Debounce.mjs +31 -37
  11. package/dist/kernal/EventEmitter.cjs +1 -1
  12. package/dist/kernal/EventEmitter.mjs +58 -67
  13. package/dist/kernal/EventNames.cjs +1 -1
  14. package/dist/kernal/EventNames.mjs +178 -6
  15. package/dist/kernal/FileLoader.cjs +1 -1
  16. package/dist/kernal/FileLoader.d.ts +2 -0
  17. package/dist/kernal/FileLoader.mjs +91 -94
  18. package/dist/kernal/IDisposable.cjs +0 -1
  19. package/dist/kernal/IDisposable.mjs +0 -1
  20. package/dist/kernal/IDocument.cjs +1 -1
  21. package/dist/kernal/IDocument.mjs +12 -36
  22. package/dist/kernal/IDocumentsProvider.cjs +0 -1
  23. package/dist/kernal/IDocumentsProvider.mjs +0 -1
  24. package/dist/kernal/IEventEmitter.cjs +0 -1
  25. package/dist/kernal/IEventEmitter.mjs +0 -1
  26. package/dist/kernal/IFileParser.cjs +1 -1
  27. package/dist/kernal/IFileParser.mjs +12 -21
  28. package/dist/kernal/IRenderer.cjs +0 -1
  29. package/dist/kernal/IRenderer.mjs +0 -1
  30. package/dist/kernal/IRendererViewport.cjs +1 -1
  31. package/dist/kernal/IRendererViewport.mjs +4 -5
  32. package/dist/kernal/IStyleProvider.cjs +0 -1
  33. package/dist/kernal/IStyleProvider.mjs +0 -1
  34. package/dist/kernal/ISymbolCalclator.cjs +0 -1
  35. package/dist/kernal/ISymbolCalclator.mjs +0 -1
  36. package/dist/kernal/ITextDocument.cjs +0 -1
  37. package/dist/kernal/ITextDocument.mjs +0 -1
  38. package/dist/kernal/IThemeProvider.cjs +0 -1
  39. package/dist/kernal/IThemeProvider.mjs +0 -1
  40. package/dist/kernal/IWallpaperProvider.cjs +1 -1
  41. package/dist/kernal/IWallpaperProvider.mjs +7 -7
  42. package/dist/kernal/JsonConvert.cjs +1 -1
  43. package/dist/kernal/JsonConvert.mjs +51 -56
  44. package/dist/kernal/LifecycleHooks.cjs +0 -1
  45. package/dist/kernal/LifecycleHooks.mjs +0 -1
  46. package/dist/kernal/LocationState.cjs +1 -1
  47. package/dist/kernal/LocationState.mjs +4 -5
  48. package/dist/kernal/MediaTypeRegistry.cjs +1 -1
  49. package/dist/kernal/MediaTypeRegistry.mjs +39 -64
  50. package/dist/kernal/Metadata.cjs +1 -1
  51. package/dist/kernal/Metadata.mjs +7 -7
  52. package/dist/kernal/OpenOptions.cjs +1 -1
  53. package/dist/kernal/OpenOptions.mjs +4 -5
  54. package/dist/kernal/Options.cjs +1 -1
  55. package/dist/kernal/Options.mjs +39 -16
  56. package/dist/kernal/OptionsProvider.cjs +1 -1
  57. package/dist/kernal/OptionsProvider.mjs +22 -24
  58. package/dist/kernal/Reader.cjs +1 -1
  59. package/dist/kernal/Reader.mjs +238 -284
  60. package/dist/kernal/ReaderInfo.cjs +1 -1
  61. package/dist/kernal/ReaderInfo.mjs +25 -31
  62. package/dist/kernal/Theme.cjs +1 -1
  63. package/dist/kernal/Theme.mjs +80 -29
  64. package/dist/kernal/common/array.cjs +1 -1
  65. package/dist/kernal/common/array.mjs +11 -13
  66. package/dist/kernal/common/buffer.cjs +1 -1
  67. package/dist/kernal/common/buffer.mjs +32 -43
  68. package/dist/kernal/common/data.cjs +1 -1
  69. package/dist/kernal/common/data.mjs +20 -13
  70. package/dist/kernal/common/date.cjs +1 -1
  71. package/dist/kernal/common/date.mjs +40 -50
  72. package/dist/kernal/common/encoding.cjs +1 -1
  73. package/dist/kernal/common/encoding.mjs +29 -36
  74. package/dist/kernal/common/geometry.cjs +1 -1
  75. package/dist/kernal/common/geometry.mjs +28 -30
  76. package/dist/kernal/common/mimetypes.cjs +1 -1
  77. package/dist/kernal/common/mimetypes.mjs +99 -34
  78. package/dist/kernal/common/naming.cjs +1 -1
  79. package/dist/kernal/common/naming.mjs +4 -4
  80. package/dist/kernal/common/number.cjs +1 -1
  81. package/dist/kernal/common/number.mjs +42 -53
  82. package/dist/kernal/common/object.cjs +1 -1
  83. package/dist/kernal/common/object.mjs +20 -25
  84. package/dist/kernal/common/path.cjs +1 -1
  85. package/dist/kernal/common/path.mjs +45 -52
  86. package/dist/kernal/common/regex.cjs +1 -1
  87. package/dist/kernal/common/regex.mjs +15 -25
  88. package/dist/kernal/common/text.cjs +4 -4
  89. package/dist/kernal/common/text.mjs +67 -88
  90. package/dist/kernal/common/tree.cjs +1 -1
  91. package/dist/kernal/common/tree.mjs +13 -13
  92. package/dist/kernal/common/url.cjs +1 -1
  93. package/dist/kernal/common/url.mjs +78 -104
  94. package/dist/kernal/common/uuid.cjs +1 -1
  95. package/dist/kernal/common/uuid.mjs +24 -28
  96. package/dist/kernal/crypto/ICrypto.cjs +1 -1
  97. package/dist/kernal/crypto/ICrypto.mjs +4 -5
  98. package/dist/kernal/crypto/MD5.cjs +1 -1
  99. package/dist/kernal/crypto/MD5.mjs +26 -34
  100. package/dist/kernal/crypto/WebCrypto.cjs +1 -1
  101. package/dist/kernal/crypto/WebCrypto.mjs +77 -105
  102. package/dist/kernal/deepClone/buffer.cjs +1 -1
  103. package/dist/kernal/deepClone/buffer.mjs +7 -25
  104. package/dist/kernal/deepClone/clone.cjs +1 -1
  105. package/dist/kernal/deepClone/clone.mjs +52 -116
  106. package/dist/kernal/deepClone/collection.cjs +1 -1
  107. package/dist/kernal/deepClone/collection.mjs +43 -56
  108. package/dist/kernal/deepClone/detector.cjs +1 -1
  109. package/dist/kernal/deepClone/detector.mjs +8 -16
  110. package/dist/kernal/deepClone/index.cjs +1 -1
  111. package/dist/kernal/deepClone/index.mjs +24 -38
  112. package/dist/kernal/device/IDevice.cjs +1 -1
  113. package/dist/kernal/device/IDevice.d.ts +0 -2
  114. package/dist/kernal/device/IDevice.mjs +4 -5
  115. package/dist/kernal/device/IEnvironment.cjs +0 -1
  116. package/dist/kernal/device/IEnvironment.mjs +0 -1
  117. package/dist/kernal/device/IPlatform.cjs +0 -1
  118. package/dist/kernal/device/IPlatform.mjs +0 -1
  119. package/dist/kernal/device/WebBrowser.cjs +1 -1
  120. package/dist/kernal/device/WebBrowser.d.ts +0 -1
  121. package/dist/kernal/device/WebBrowser.mjs +54 -65
  122. package/dist/kernal/device/WebEnvironment.cjs +1 -1
  123. package/dist/kernal/device/WebEnvironment.mjs +21 -21
  124. package/dist/kernal/device/WebPlatform.cjs +1 -1
  125. package/dist/kernal/device/WebPlatform.mjs +48 -63
  126. package/dist/kernal/html/detector.cjs +1 -1
  127. package/dist/kernal/html/detector.mjs +38 -46
  128. package/dist/kernal/html/dom.cjs +1 -0
  129. package/dist/kernal/html/dom.d.ts +3 -0
  130. package/dist/kernal/html/dom.mjs +13 -0
  131. package/dist/kernal/html/events.cjs +1 -1
  132. package/dist/kernal/html/events.mjs +62 -67
  133. package/dist/kernal/html/finder.cjs +1 -1
  134. package/dist/kernal/html/finder.mjs +93 -134
  135. package/dist/kernal/html/geometry.cjs +1 -1
  136. package/dist/kernal/html/geometry.mjs +340 -384
  137. package/dist/kernal/html/image.cjs +1 -1
  138. package/dist/kernal/html/image.mjs +166 -181
  139. package/dist/kernal/html/injector.cjs +3 -3
  140. package/dist/kernal/html/injector.mjs +92 -109
  141. package/dist/kernal/html/manipulator.cjs +1 -1
  142. package/dist/kernal/html/manipulator.mjs +96 -116
  143. package/dist/kernal/html/parser.cjs +1 -1
  144. package/dist/kernal/html/parser.mjs +61 -60
  145. package/dist/kernal/html/position.cjs +1 -1
  146. package/dist/kernal/html/position.mjs +146 -193
  147. package/dist/kernal/html/selection.cjs +7 -7
  148. package/dist/kernal/html/selection.mjs +206 -238
  149. package/dist/kernal/html/style.cjs +1 -1
  150. package/dist/kernal/html/style.mjs +59 -79
  151. package/dist/kernal/html/text.cjs +2 -2
  152. package/dist/kernal/html/text.mjs +50 -65
  153. package/dist/kernal/html/types.cjs +1 -1
  154. package/dist/kernal/html/types.mjs +7 -7
  155. package/dist/kernal/i18n/DefaultLocale.cjs +1 -1
  156. package/dist/kernal/i18n/DefaultLocale.mjs +36 -41
  157. package/dist/kernal/i18n/ILocale.cjs +1 -1
  158. package/dist/kernal/i18n/ILocale.mjs +7 -14
  159. package/dist/kernal/index.cjs +1 -1
  160. package/dist/kernal/index.mjs +44 -127
  161. package/dist/kernal/logger/DefaultLogger.cjs +1 -1
  162. package/dist/kernal/logger/DefaultLogger.mjs +67 -67
  163. package/dist/kernal/logger/ILogger.cjs +1 -1
  164. package/dist/kernal/logger/ILogger.mjs +2 -5
  165. package/dist/kernal/logger/ILoggerFactory.cjs +0 -1
  166. package/dist/kernal/logger/ILoggerFactory.mjs +0 -1
  167. package/dist/kernal/logger/LogLevel.cjs +1 -1
  168. package/dist/kernal/logger/LogLevel.mjs +33 -11
  169. package/dist/kernal/logger/LoggerFactory.cjs +1 -1
  170. package/dist/kernal/logger/LoggerFactory.mjs +12 -12
  171. package/dist/kernal/logo-160x160.cjs +1 -0
  172. package/dist/kernal/logo-160x160.mjs +4 -0
  173. package/dist/kernal/mark/IMarker.cjs +0 -1
  174. package/dist/kernal/mark/IMarker.mjs +0 -1
  175. package/dist/kernal/mark/Mark.cjs +1 -1
  176. package/dist/kernal/mark/Mark.mjs +18 -19
  177. package/dist/kernal/mark/MarkConstants.cjs +1 -1
  178. package/dist/kernal/mark/MarkConstants.mjs +4 -7
  179. package/dist/kernal/mark/index.cjs +1 -1
  180. package/dist/kernal/mark/index.mjs +3 -10
  181. package/dist/kernal/mark/types.cjs +0 -1
  182. package/dist/kernal/mark/types.mjs +0 -1
  183. package/dist/kernal/nav/INavPointProvider.cjs +0 -1
  184. package/dist/kernal/nav/INavPointProvider.mjs +0 -1
  185. package/dist/kernal/nav/Nav.cjs +1 -1
  186. package/dist/kernal/nav/Nav.mjs +16 -18
  187. package/dist/kernal/navigator/INavPointNavigator.cjs +0 -1
  188. package/dist/kernal/navigator/INavPointNavigator.mjs +0 -1
  189. package/dist/kernal/navigator/INavigator.cjs +1 -1
  190. package/dist/kernal/navigator/INavigator.mjs +4 -5
  191. package/dist/kernal/navigator/IPagingNavigator.cjs +1 -1
  192. package/dist/kernal/navigator/IPagingNavigator.mjs +4 -8
  193. package/dist/kernal/network/HttpClient.cjs +1 -1
  194. package/dist/kernal/network/HttpClient.mjs +121 -146
  195. package/dist/kernal/network/IHttpClient.cjs +1 -1
  196. package/dist/kernal/network/IHttpClient.mjs +4 -5
  197. package/dist/kernal/pipelines/FileLoadPipeline.cjs +1 -1
  198. package/dist/kernal/pipelines/FileLoadPipeline.mjs +65 -84
  199. package/dist/kernal/pipelines/InputFormatter.cjs +1 -1
  200. package/dist/kernal/pipelines/InputFormatter.mjs +140 -160
  201. package/dist/kernal/pipelines/metadata.cjs +1 -1
  202. package/dist/kernal/pipelines/metadata.mjs +44 -49
  203. package/dist/kernal/plugins/PluginCore.cjs +1 -1
  204. package/dist/kernal/plugins/PluginCore.mjs +7 -8
  205. package/dist/kernal/plugins/PluginManager.cjs +1 -1
  206. package/dist/kernal/plugins/PluginManager.mjs +79 -105
  207. package/dist/kernal/plugins/PluginRegistry.cjs +1 -1
  208. package/dist/kernal/plugins/PluginRegistry.mjs +55 -91
  209. package/dist/kernal/plugins/keyboard/KeyboardPageTurning.cjs +1 -1
  210. package/dist/kernal/plugins/keyboard/KeyboardPageTurning.mjs +134 -133
  211. package/dist/kernal/plugins/mouse/WheelPageTurning.cjs +1 -1
  212. package/dist/kernal/plugins/mouse/WheelPageTurning.mjs +134 -127
  213. package/dist/kernal/progress/IProgressTracker.cjs +0 -1
  214. package/dist/kernal/progress/IProgressTracker.mjs +0 -1
  215. package/dist/kernal/progress/IReadingProgressStore.cjs +0 -1
  216. package/dist/kernal/progress/IReadingProgressStore.mjs +0 -1
  217. package/dist/kernal/progress/Progress.cjs +1 -1
  218. package/dist/kernal/progress/Progress.mjs +23 -40
  219. package/dist/kernal/progress/ReadingProgressStore.cjs +1 -1
  220. package/dist/kernal/progress/ReadingProgressStore.mjs +16 -16
  221. package/dist/kernal/services/ServiceCollection.cjs +1 -1
  222. package/dist/kernal/services/ServiceCollection.mjs +63 -88
  223. package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.cjs +2 -2
  224. package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.d.ts +1 -1
  225. package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.mjs +63 -68
  226. package/dist/kernal/services/docLoadLayer/IHtmlLoadLayer.cjs +0 -1
  227. package/dist/kernal/services/docLoadLayer/IHtmlLoadLayer.mjs +0 -1
  228. package/dist/kernal/services/file/IFileDecrypter.cjs +1 -1
  229. package/dist/kernal/services/file/IFileDecrypter.mjs +11 -24
  230. package/dist/kernal/services/file/IFileProvider.cjs +0 -1
  231. package/dist/kernal/services/file/IFileProvider.mjs +0 -1
  232. package/dist/kernal/services/file/IFileUrlProvider.cjs +0 -1
  233. package/dist/kernal/services/file/IFileUrlProvider.mjs +0 -1
  234. package/dist/kernal/services/fileUrlParser/DefaultFileUrlParser.cjs +1 -1
  235. package/dist/kernal/services/fileUrlParser/DefaultFileUrlParser.mjs +109 -118
  236. package/dist/kernal/services/fileUrlParser/IFileUrlParser.cjs +1 -1
  237. package/dist/kernal/services/fileUrlParser/IFileUrlParser.mjs +7 -10
  238. package/dist/kernal/services/font/IFontProvider.cjs +1 -1
  239. package/dist/kernal/services/font/IFontProvider.mjs +19 -33
  240. package/dist/kernal/services/internalUrlBuilder/DefaultInternalUrlBuilder.cjs +1 -1
  241. package/dist/kernal/services/internalUrlBuilder/DefaultInternalUrlBuilder.mjs +14 -21
  242. package/dist/kernal/services/internalUrlBuilder/IInternalUrlBuilder.cjs +0 -1
  243. package/dist/kernal/services/internalUrlBuilder/IInternalUrlBuilder.mjs +0 -1
  244. package/dist/kernal/services/loading/DefaultLoading.cjs +1 -1
  245. package/dist/kernal/services/loading/DefaultLoading.mjs +46 -41
  246. package/dist/kernal/services/loading/ILoading.cjs +1 -1
  247. package/dist/kernal/services/loading/ILoading.mjs +4 -5
  248. package/dist/kernal/services/notifier/DefaultNotifier.cjs +1 -1
  249. package/dist/kernal/services/notifier/DefaultNotifier.mjs +63 -65
  250. package/dist/kernal/services/notifier/INotifier.cjs +0 -1
  251. package/dist/kernal/services/notifier/INotifier.mjs +0 -1
  252. package/dist/kernal/services/notifier/notyf/index.cjs +1 -1
  253. package/dist/kernal/services/notifier/notyf/index.mjs +5 -13
  254. package/dist/kernal/services/notifier/notyf/notyf.cjs +1 -1
  255. package/dist/kernal/services/notifier/notyf/notyf.mjs +79 -97
  256. package/dist/kernal/services/notifier/notyf/notyf.models.cjs +1 -1
  257. package/dist/kernal/services/notifier/notyf/notyf.models.mjs +39 -41
  258. package/dist/kernal/services/notifier/notyf/notyf.options.cjs +1 -1
  259. package/dist/kernal/services/notifier/notyf/notyf.options.mjs +30 -30
  260. package/dist/kernal/services/notifier/notyf/notyf.view.cjs +1 -1
  261. package/dist/kernal/services/notifier/notyf/notyf.view.mjs +146 -177
  262. package/dist/kernal/services/text/ITextDecoder.cjs +0 -1
  263. package/dist/kernal/services/text/ITextDecoder.mjs +0 -1
  264. package/dist/kernal/services/text/splitter.cjs +5 -5
  265. package/dist/kernal/services/text/splitter.mjs +184 -207
  266. package/dist/kernal/shape/ShapeSorter.cjs +1 -1
  267. package/dist/kernal/shape/ShapeSorter.mjs +77 -77
  268. package/dist/kernal/shape/SimpleMatrix.cjs +1 -1
  269. package/dist/kernal/shape/SimpleMatrix.mjs +20 -13
  270. package/dist/kernal/shape/definitions.cjs +0 -1
  271. package/dist/kernal/shape/definitions.mjs +0 -1
  272. package/dist/kernal/storage/IStorage.cjs +1 -1
  273. package/dist/kernal/storage/IStorage.mjs +4 -5
  274. package/dist/kernal/storage/WebStorage.cjs +1 -1
  275. package/dist/kernal/storage/WebStorage.mjs +164 -201
  276. package/dist/kernal/types.cjs +0 -1
  277. package/dist/kernal/types.mjs +0 -1
  278. package/dist/kernal/web/BrowserCapabilities.cjs +1 -1
  279. package/dist/kernal/web/BrowserCapabilities.mjs +167 -191
  280. package/dist/kernal/web/ua.cjs +1 -1
  281. package/dist/kernal/web/ua.mjs +5 -5
  282. package/dist/mediaTypes/adjacent.cjs +1 -1
  283. package/dist/mediaTypes/adjacent.mjs +41 -48
  284. package/dist/mediaTypes/base/fileParser/BaseFileParser.cjs +1 -1
  285. package/dist/mediaTypes/base/fileParser/BaseFileParser.mjs +184 -227
  286. package/dist/mediaTypes/base/index.cjs +1 -1
  287. package/dist/mediaTypes/base/index.mjs +4 -8
  288. package/dist/mediaTypes/base/renderer/BaseDocument.cjs +1 -1
  289. package/dist/mediaTypes/base/renderer/BaseDocument.mjs +41 -49
  290. package/dist/mediaTypes/base/renderer/BaseDocumentsProvider.cjs +1 -1
  291. package/dist/mediaTypes/base/renderer/BaseDocumentsProvider.mjs +64 -71
  292. package/dist/mediaTypes/base/renderer/eventKeys.cjs +1 -1
  293. package/dist/mediaTypes/base/renderer/eventKeys.mjs +7 -7
  294. package/dist/mediaTypes/html/HtmlOptions.cjs +1 -1
  295. package/dist/mediaTypes/html/HtmlOptions.mjs +34 -12
  296. package/dist/mediaTypes/html/HtmlSettings.cjs +1 -1
  297. package/dist/mediaTypes/html/HtmlSettings.mjs +43 -6
  298. package/dist/mediaTypes/html/fileParser/HtmlFileParser.cjs +1 -1
  299. package/dist/mediaTypes/html/fileParser/HtmlFileParser.mjs +52 -54
  300. package/dist/mediaTypes/html/fileParser/HtmlTextDocument.cjs +1 -1
  301. package/dist/mediaTypes/html/fileParser/HtmlTextDocument.mjs +52 -57
  302. package/dist/mediaTypes/html/fileParser/IHtmlFileParser.cjs +0 -1
  303. package/dist/mediaTypes/html/fileParser/IHtmlFileParser.mjs +0 -1
  304. package/dist/mediaTypes/html/renderer/HtmlRenderer.cjs +1 -1
  305. package/dist/mediaTypes/html/renderer/HtmlRenderer.mjs +89 -89
  306. package/dist/mediaTypes/html/renderer/IHtmlDocument.cjs +0 -1
  307. package/dist/mediaTypes/html/renderer/IHtmlDocument.mjs +0 -1
  308. package/dist/mediaTypes/html/renderer/IHtmlDocumentsProvider.cjs +0 -1
  309. package/dist/mediaTypes/html/renderer/IHtmlDocumentsProvider.mjs +0 -1
  310. package/dist/mediaTypes/html/renderer/IHtmlRenderer.cjs +0 -1
  311. package/dist/mediaTypes/html/renderer/IHtmlRenderer.mjs +0 -1
  312. package/dist/mediaTypes/html/renderer/IHtmlTextDocument.cjs +0 -1
  313. package/dist/mediaTypes/html/renderer/IHtmlTextDocument.mjs +0 -1
  314. package/dist/mediaTypes/html/renderer/document/HtmlDocument.cjs +1 -1
  315. package/dist/mediaTypes/html/renderer/document/HtmlDocument.mjs +183 -196
  316. package/dist/mediaTypes/html/renderer/document/HtmlDocumentResizeObserver.cjs +1 -1
  317. package/dist/mediaTypes/html/renderer/document/HtmlDocumentResizeObserver.mjs +28 -28
  318. package/dist/mediaTypes/html/renderer/document/HtmlPageCalculator.cjs +1 -1
  319. package/dist/mediaTypes/html/renderer/document/HtmlPageCalculator.mjs +77 -82
  320. package/dist/mediaTypes/html/renderer/document/HtmlSymbolCalclator.cjs +1 -1
  321. package/dist/mediaTypes/html/renderer/document/HtmlSymbolCalclator.mjs +87 -97
  322. package/dist/mediaTypes/html/renderer/documents/HtmlContainerBuilder.cjs +1 -1
  323. package/dist/mediaTypes/html/renderer/documents/HtmlContainerBuilder.mjs +49 -64
  324. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsIntersectionObserver.cjs +1 -1
  325. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsIntersectionObserver.mjs +29 -32
  326. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsPreloader.cjs +1 -1
  327. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsPreloader.mjs +76 -84
  328. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.cjs +1 -1
  329. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.d.ts +2 -1
  330. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.mjs +185 -208
  331. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.cjs +1 -1
  332. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.d.ts +2 -1
  333. package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.mjs +39 -41
  334. package/dist/mediaTypes/html/renderer/documents/IHtmlDocumentsPreloader.cjs +0 -1
  335. package/dist/mediaTypes/html/renderer/documents/IHtmlDocumentsPreloader.mjs +0 -1
  336. package/dist/mediaTypes/html/renderer/html/HtmlContentProcessor.cjs +1 -1
  337. package/dist/mediaTypes/html/renderer/html/HtmlContentProcessor.mjs +130 -182
  338. package/dist/mediaTypes/html/renderer/html/IHtmlContentProcessor.cjs +0 -1
  339. package/dist/mediaTypes/html/renderer/html/IHtmlContentProcessor.mjs +0 -1
  340. package/dist/mediaTypes/html/renderer/html/template.cjs +1 -1
  341. package/dist/mediaTypes/html/renderer/html/template.mjs +13 -16
  342. package/dist/mediaTypes/html/renderer/image/HtmlImageLoader.cjs +1 -1
  343. package/dist/mediaTypes/html/renderer/image/HtmlImageLoader.mjs +371 -447
  344. package/dist/mediaTypes/html/renderer/image/HtmlImageObserver.cjs +1 -1
  345. package/dist/mediaTypes/html/renderer/image/HtmlImageObserver.mjs +91 -103
  346. package/dist/mediaTypes/html/renderer/image/IHtmlImageLoader.cjs +0 -1
  347. package/dist/mediaTypes/html/renderer/image/IHtmlImageLoader.mjs +0 -1
  348. package/dist/mediaTypes/html/renderer/image/error-image.cjs +1 -0
  349. package/dist/mediaTypes/html/renderer/image/error-image.mjs +4 -0
  350. package/dist/mediaTypes/html/renderer/image/placeholder.cjs +1 -0
  351. package/dist/mediaTypes/html/renderer/image/placeholder.mjs +4 -0
  352. package/dist/mediaTypes/html/renderer/layout/HtmlLayoutMetrics.cjs +1 -1
  353. package/dist/mediaTypes/html/renderer/layout/HtmlLayoutMetrics.mjs +5 -6
  354. package/dist/mediaTypes/html/renderer/layout/HtmlRendererLayout.cjs +1 -1
  355. package/dist/mediaTypes/html/renderer/layout/HtmlRendererLayout.mjs +81 -90
  356. package/dist/mediaTypes/html/renderer/layout/HtmlRendererViewport.cjs +1 -1
  357. package/dist/mediaTypes/html/renderer/layout/HtmlRendererViewport.mjs +142 -169
  358. package/dist/mediaTypes/html/renderer/layout/IHtmlRendererLayout.cjs +0 -1
  359. package/dist/mediaTypes/html/renderer/layout/IHtmlRendererLayout.mjs +0 -1
  360. package/dist/mediaTypes/html/renderer/layout/ViewportCssVariableNames.cjs +1 -1
  361. package/dist/mediaTypes/html/renderer/layout/ViewportCssVariableNames.mjs +61 -6
  362. package/dist/mediaTypes/html/renderer/location/HtmlElementLocator.cjs +1 -1
  363. package/dist/mediaTypes/html/renderer/location/HtmlElementLocator.mjs +106 -118
  364. package/dist/mediaTypes/html/renderer/location/HtmlLocationCalculator.cjs +1 -1
  365. package/dist/mediaTypes/html/renderer/location/HtmlLocationCalculator.mjs +28 -34
  366. package/dist/mediaTypes/html/renderer/location/IHtmlElementLocator.cjs +0 -1
  367. package/dist/mediaTypes/html/renderer/location/IHtmlElementLocator.mjs +0 -1
  368. package/dist/mediaTypes/html/renderer/location/IHtmlLocationCalculator.cjs +0 -1
  369. package/dist/mediaTypes/html/renderer/location/IHtmlLocationCalculator.mjs +0 -1
  370. package/dist/mediaTypes/html/renderer/navigator/HtmlCoreNavigator.cjs +1 -1
  371. package/dist/mediaTypes/html/renderer/navigator/HtmlCoreNavigator.mjs +39 -42
  372. package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointNavigator.cjs +1 -1
  373. package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointNavigator.mjs +121 -125
  374. package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointProvider.cjs +1 -1
  375. package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointProvider.mjs +151 -178
  376. package/dist/mediaTypes/html/renderer/navigator/HtmlPagingNavigator.cjs +1 -1
  377. package/dist/mediaTypes/html/renderer/navigator/HtmlPagingNavigator.mjs +78 -85
  378. package/dist/mediaTypes/html/renderer/progress/HtmlProgressTracker.cjs +1 -1
  379. package/dist/mediaTypes/html/renderer/progress/HtmlProgressTracker.mjs +119 -137
  380. package/dist/mediaTypes/html/renderer/progress/IHtmlIProgressTracker.cjs +0 -1
  381. package/dist/mediaTypes/html/renderer/progress/IHtmlIProgressTracker.mjs +0 -1
  382. package/dist/mediaTypes/html/renderer/progress/adjacent.cjs +1 -1
  383. package/dist/mediaTypes/html/renderer/progress/adjacent.mjs +41 -48
  384. package/dist/mediaTypes/html/renderer/style/ContentCssVariables.cjs +1 -1
  385. package/dist/mediaTypes/html/renderer/style/ContentCssVariables.mjs +40 -9
  386. package/dist/mediaTypes/html/renderer/style/ContentLayoutCssVariableNames.cjs +1 -1
  387. package/dist/mediaTypes/html/renderer/style/ContentLayoutCssVariableNames.mjs +40 -6
  388. package/dist/mediaTypes/html/renderer/style/HtmlStyleProvider.cjs +1 -1
  389. package/dist/mediaTypes/html/renderer/style/HtmlStyleProvider.mjs +62 -74
  390. package/dist/mediaTypes/html/renderer/style/HtmlThemeApplier.cjs +1 -1
  391. package/dist/mediaTypes/html/renderer/style/HtmlThemeApplier.mjs +58 -68
  392. package/dist/mediaTypes/html/renderer/style/IHtmlThemeApplier.cjs +0 -1
  393. package/dist/mediaTypes/html/renderer/style/IHtmlThemeApplier.mjs +0 -1
  394. package/dist/mediaTypes/html/renderer/style/{html-content.css.mjs → html-content.cjs} +2 -5
  395. package/dist/mediaTypes/html/renderer/style/html-content.mjs +4 -0
  396. package/dist/mediaTypes/html/renderer/visibilityCandidates.cjs +1 -1
  397. package/dist/mediaTypes/html/renderer/visibilityCandidates.mjs +116 -111
  398. package/dist/mediaTypes/pdf/PdfOptions.cjs +1 -1
  399. package/dist/mediaTypes/pdf/PdfOptions.mjs +7 -7
  400. package/dist/mediaTypes/pdf/ensurePdfWebWorker.cjs +1 -1
  401. package/dist/mediaTypes/pdf/ensurePdfWebWorker.mjs +16 -26
  402. package/dist/mediaTypes/pdf/fileParser/IPdfFileParser.cjs +0 -1
  403. package/dist/mediaTypes/pdf/fileParser/IPdfFileParser.d.ts +2 -0
  404. package/dist/mediaTypes/pdf/fileParser/IPdfFileParser.mjs +0 -1
  405. package/dist/mediaTypes/pdf/fileParser/PdfFileParser.cjs +1 -1
  406. package/dist/mediaTypes/pdf/fileParser/PdfFileParser.mjs +148 -170
  407. package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.cjs +1 -1
  408. package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.mjs +45 -52
  409. package/dist/mediaTypes/pdf/fileParser/PdfTextDocument.cjs +1 -1
  410. package/dist/mediaTypes/pdf/fileParser/PdfTextDocument.mjs +28 -28
  411. package/dist/mediaTypes/pdf/loadPdfDocument.cjs +1 -1
  412. package/dist/mediaTypes/pdf/loadPdfDocument.mjs +27 -23
  413. package/dist/mediaTypes/pdf/renderer/IPdfDocument.cjs +0 -1
  414. package/dist/mediaTypes/pdf/renderer/IPdfDocument.mjs +0 -1
  415. package/dist/mediaTypes/pdf/renderer/IPdfRenderer.cjs +0 -1
  416. package/dist/mediaTypes/pdf/renderer/IPdfRenderer.mjs +0 -1
  417. package/dist/mediaTypes/pdf/renderer/IPdfSvgBuilder.cjs +0 -1
  418. package/dist/mediaTypes/pdf/renderer/IPdfSvgBuilder.mjs +0 -1
  419. package/dist/mediaTypes/pdf/renderer/MultiPdfViewer.cjs +1 -1
  420. package/dist/mediaTypes/pdf/renderer/MultiPdfViewer.mjs +323 -625
  421. package/dist/mediaTypes/pdf/renderer/PdfCoreNavigator.cjs +1 -1
  422. package/dist/mediaTypes/pdf/renderer/PdfCoreNavigator.mjs +18 -18
  423. package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.cjs +1 -1
  424. package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.mjs +25 -6
  425. package/dist/mediaTypes/pdf/renderer/PdfDocument.cjs +1 -1
  426. package/dist/mediaTypes/pdf/renderer/PdfDocument.mjs +61 -70
  427. package/dist/mediaTypes/pdf/renderer/PdfNavPointNavigator.cjs +1 -1
  428. package/dist/mediaTypes/pdf/renderer/PdfNavPointNavigator.mjs +118 -122
  429. package/dist/mediaTypes/pdf/renderer/PdfNavPointProvider.cjs +1 -1
  430. package/dist/mediaTypes/pdf/renderer/PdfNavPointProvider.mjs +85 -111
  431. package/dist/mediaTypes/pdf/renderer/PdfNoopL10n.cjs +1 -1
  432. package/dist/mediaTypes/pdf/renderer/PdfNoopL10n.mjs +7 -10
  433. package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.cjs +1 -1
  434. package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.mjs +29 -32
  435. package/dist/mediaTypes/pdf/renderer/PdfRenderer.cjs +1 -1
  436. package/dist/mediaTypes/pdf/renderer/PdfRenderer.mjs +76 -79
  437. package/dist/mediaTypes/pdf/renderer/PdfSvgBuilder.cjs +1 -1
  438. package/dist/mediaTypes/pdf/renderer/PdfSvgBuilder.mjs +269 -236
  439. package/dist/mediaTypes/pdf/renderer/PdfViewerBuilder.cjs +1 -1
  440. package/dist/mediaTypes/pdf/renderer/PdfViewerBuilder.mjs +33 -36
  441. package/dist/mediaTypes/pdf/renderer/documents/IPdfDocumentsProvider.cjs +0 -1
  442. package/dist/mediaTypes/pdf/renderer/documents/IPdfDocumentsProvider.mjs +0 -1
  443. package/dist/mediaTypes/pdf/renderer/documents/PdfDocumentsProvider.cjs +2 -2
  444. package/dist/mediaTypes/pdf/renderer/documents/PdfDocumentsProvider.mjs +243 -290
  445. package/dist/mediaTypes/pdf/renderer/input/PdfDocumentEvents.cjs +1 -1
  446. package/dist/mediaTypes/pdf/renderer/input/PdfDocumentEvents.mjs +43 -50
  447. package/dist/mediaTypes/pdf/renderer/input/PdfKeyboardController.cjs +1 -1
  448. package/dist/mediaTypes/pdf/renderer/input/PdfKeyboardController.mjs +84 -105
  449. package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.cjs +1 -1
  450. package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.mjs +44 -59
  451. package/dist/mediaTypes/pdf/renderer/input/PdfZoomInputController.cjs +1 -1
  452. package/dist/mediaTypes/pdf/renderer/input/PdfZoomInputController.mjs +138 -177
  453. package/dist/mediaTypes/pdf/renderer/layout/IPdfRendererLayout.cjs +0 -1
  454. package/dist/mediaTypes/pdf/renderer/layout/IPdfRendererLayout.mjs +0 -1
  455. package/dist/mediaTypes/pdf/renderer/layout/PdfRendererLayout.cjs +1 -1
  456. package/dist/mediaTypes/pdf/renderer/layout/PdfRendererLayout.mjs +36 -42
  457. package/dist/mediaTypes/pdf/renderer/layout/PdfRendererViewport.cjs +1 -1
  458. package/dist/mediaTypes/pdf/renderer/layout/PdfRendererViewport.mjs +75 -82
  459. package/dist/mediaTypes/pdf/renderer/location/IPdfDestinationBuilder.cjs +0 -1
  460. package/dist/mediaTypes/pdf/renderer/location/IPdfDestinationBuilder.mjs +0 -1
  461. package/dist/mediaTypes/pdf/renderer/location/PdfDestinationBuilder.cjs +1 -1
  462. package/dist/mediaTypes/pdf/renderer/location/PdfDestinationBuilder.mjs +18 -21
  463. package/dist/mediaTypes/pdf/renderer/progress/IPdfProgressTracker.cjs +0 -1
  464. package/dist/mediaTypes/pdf/renderer/progress/IPdfProgressTracker.mjs +0 -1
  465. package/dist/mediaTypes/pdf/renderer/progress/PdfProgressTracker.cjs +1 -1
  466. package/dist/mediaTypes/pdf/renderer/progress/PdfProgressTracker.mjs +54 -68
  467. package/dist/mediaTypes/pdf/renderer/style/IPdfThemeApplier.cjs +0 -1
  468. package/dist/mediaTypes/pdf/renderer/style/IPdfThemeApplier.mjs +0 -1
  469. package/dist/mediaTypes/pdf/renderer/style/PdfThemeApplier.cjs +4 -4
  470. package/dist/mediaTypes/pdf/renderer/style/PdfThemeApplier.mjs +15 -15
  471. package/dist/mediaTypes/pdf/renderer/zoom/IPdfScalable.cjs +0 -1
  472. package/dist/mediaTypes/pdf/renderer/zoom/IPdfScalable.mjs +0 -1
  473. package/dist/mediaTypes/pdf/renderer/zoom/PdfScalable.cjs +1 -1
  474. package/dist/mediaTypes/pdf/renderer/zoom/PdfScalable.mjs +46 -41
  475. package/dist/mediaTypes/pdf/shared/geometry/index.cjs +1 -1
  476. package/dist/mediaTypes/pdf/shared/geometry/index.mjs +3 -13
  477. package/dist/mediaTypes/pdf/shared/geometry/selectionToFixedContentRange.cjs +1 -1
  478. package/dist/mediaTypes/pdf/shared/geometry/selectionToFixedContentRange.mjs +45 -45
  479. package/dist/mediaTypes/pdf/shared/geometry/textRects.cjs +1 -1
  480. package/dist/mediaTypes/pdf/shared/geometry/textRects.mjs +219 -263
  481. package/dist/mediaTypes/pdf/shared/range.cjs +1 -1
  482. package/dist/mediaTypes/pdf/shared/range.mjs +11 -14
  483. package/dist/mediaTypes/pdf/shared/selection/IPdfSelection.cjs +0 -1
  484. package/dist/mediaTypes/pdf/shared/selection/IPdfSelection.mjs +0 -1
  485. package/dist/mediaTypes/pdf/shared/selection/PdfSelection.cjs +2 -2
  486. package/dist/mediaTypes/pdf/shared/selection/PdfSelection.mjs +214 -236
  487. package/dist/mediaTypes/pdf/shared/selection/index.cjs +1 -1
  488. package/dist/mediaTypes/pdf/shared/selection/index.mjs +3 -6
  489. package/dist/mediaTypes/pdf/shared/text/bbox.cjs +1 -1
  490. package/dist/mediaTypes/pdf/shared/text/bbox.mjs +130 -142
  491. package/dist/mediaTypes/pdf/shared/text/pageText.cjs +5 -5
  492. package/dist/mediaTypes/pdf/shared/text/pageText.mjs +168 -185
  493. package/global.d.ts +17 -0
  494. package/package.json +19 -12
  495. package/types.d.ts +13 -0
  496. package/dist/kernal/logo-160x160.png.cjs +0 -1
  497. package/dist/kernal/logo-160x160.png.mjs +0 -4
  498. package/dist/mediaTypes/html/renderer/image/error-image.png.cjs +0 -1
  499. package/dist/mediaTypes/html/renderer/image/error-image.png.mjs +0 -4
  500. package/dist/mediaTypes/html/renderer/image/placeholder.png.cjs +0 -1
  501. package/dist/mediaTypes/html/renderer/image/placeholder.png.mjs +0 -4
  502. package/dist/mediaTypes/html/renderer/style/html-content.css.cjs +0 -316
@@ -1,209 +1,186 @@
1
- import { isNullOrWhiteSpace as w } from "../../../../kernal/common/text.mjs";
2
- import { parseNumber as y } from "../../../../kernal/common/number.mjs";
3
- import { compareTagName as L } from "../../../../kernal/html/finder.mjs";
4
- import { wrapperCharacters as D, recoverWrapperCharacters as P } from "../../../../kernal/html/manipulator.mjs";
5
- import { scrollElementIntoView as C, getTransformLength as T } from "../../../../kernal/html/style.mjs";
6
- import { HtmlSettings as u } from "../../HtmlSettings.mjs";
7
- import { BaseDocumentsProvider as b } from "../../../base/renderer/BaseDocumentsProvider.mjs";
8
- import { HtmlDocument as x } from "../document/HtmlDocument.mjs";
9
- import { HtmlDocumentsPreloader as E } from "./HtmlDocumentsPreloader.mjs";
10
- import { HtmlDocumentsIntersectionObserver as S } from "./HtmlDocumentsIntersectionObserver.mjs";
11
- import { HtmlElementLocator as H } from "../location/HtmlElementLocator.mjs";
12
- import { HtmlRendererViewport as V } from "../layout/HtmlRendererViewport.mjs";
13
- import { debounce as N } from "perfect-debounce";
14
- import { FileLocation as O } from "../../../../kernal/progress/Progress.mjs";
15
- import { STTAG as W } from "../../../../kernal/Constants.mjs";
16
- import { BrowserCapabilities as M } from "../../../../kernal/web/BrowserCapabilities.mjs";
17
- class _ extends b {
18
- constructor(t, e, s, o) {
19
- super(t, e), this.readerContainer = s, this.htmlOptions = o, this.isInit = !1, this.isFirstLoad = !0, this.hangTasks = [], this.resetTransformContainer = () => {
20
- const i = this.getTransformContainer();
21
- i && (i.style.removeProperty("transition"), i.style.transform = "translate3d(0px,0,0)", i.setAttribute("data-target-transform", "0"), i.offsetWidth);
22
- }, this.removeElementTransitionEvent = async (i) => {
23
- const n = i.target;
24
- for (n.style.removeProperty("transition"), n.style.removeProperty("will-change"), n.removeAttribute(u.PageMovingAttributeName), n.removeEventListener("transitionend", this.removeElementTransitionEvent); this.hangTasks.length > 0; )
25
- await this.hangTasks.shift()();
26
- }, this.scrollWrapperIntoView = (i, n) => {
27
- const r = i.getWrapperContainer();
28
- if (this.htmlOptions.flipMode == "page") {
29
- const l = r.offsetLeft, a = this.getTransformContainer();
30
- a.style.transform = "translateX(" + -l + "px)";
31
- } else
32
- (!r.isVisible || n) && C(r, void 0, void 0, this.owner.getRootContainer()?.ownerDocument);
33
- this.setDocumentVisible(r, !0);
34
- }, this.setDocumentVisible = (i, n) => {
35
- i.isVisible = n;
36
- }, this.reload = async () => {
37
- const i = this.owner.context.currentLocation;
38
- w(i?.url) || (i.scrollBehavior = "smooth", await this.load(i, !0), i.scrollBehavior = void 0);
39
- }, this.delayReloadTime = 300, this.delayReload = N(this.reload, this.delayReloadTime), this.logger = this.owner.loggerFactory.getLogger(this.constructor.name), this.elementLocator = new H(this), this.rendererViewport = new V(t, this.readerContainer, this.owner.optionsProvider, o), this.documentsIntersectionObserver = new S(this), this.documentPreloader = new E(this.owner.events, this, () => this.loadingDoc, o);
40
- }
41
- getTransformContainer() {
42
- return this.getRendererContainer().querySelector("." + u.TransformContainerCssName);
43
- }
44
- getRendererContainer() {
45
- return this.rendererViewport.getRendererContainer();
46
- }
47
- getScrollElement() {
48
- return this.rendererViewport.getScrollElement();
49
- }
50
- getLoadingDocument() {
51
- return this.loadingDoc;
52
- }
53
- async createDocument(t, e, s) {
54
- return new x(this.owner, this.rendererViewport, this.fileParser, t, e, this.htmlOptions);
55
- }
56
- /**
57
- * Initialize each document container.
58
- */
59
- async initialize(t) {
60
- this.rendererViewport.applyCssVariables(), await super.initialize(t);
61
- const e = this.getDocuments();
62
- for (const s of e)
63
- s.getWrapperContainer().classList.add(u.FileContentContainerClassName, u.FileContentContainerHeightClassName);
64
- }
65
- async load(t, e) {
66
- this.isInit || (await this.initialize(this.getTransformContainer()), this.documentsIntersectionObserver.register(), this.isInit = !0), t?.storeCurrent && await this.owner.onBeforeRedirect?.(this), e = e ?? !1;
67
- const s = t?.url;
68
- let o = this.getDocument(s);
69
- if (!o) {
70
- const i = this.getDocuments();
71
- o = i[0], (i.length > 1 || !t) && (t = new O(o.url, 1, "ratio"), t.current = 0);
72
- }
73
- this.htmlOptions.flipMode == "page" ? this.appendPageStyles() : this.removePageStyles(), this.loadingDoc = o, this.owner.context.redirectingDocUrl = o.url;
74
- try {
75
- this.delayHideLoadingLayerTimer = setTimeout(async () => {
76
- await this.owner.loading?.hide();
77
- }, 2e3), this.owner.context.setUserChangedProgress(!e, t?.from), await this.gotoDoc(o, t, e), this.isFirstLoad && !e && (this.isFirstLoad = !1), await this.documentPreloader.preloadDocuments();
78
- } finally {
79
- setTimeout(() => {
80
- this.loadingDoc = null, this.owner.context.redirectingDocUrl = void 0;
81
- }, 166);
82
- }
83
- }
84
- async gotoDoc(t, e, s) {
85
- if (!e || (await t.load(), !t.getContentContainer())) return;
86
- s = s ?? !1;
87
- const i = this.htmlOptions.flipMode;
88
- let n, r;
89
- try {
90
- const l = await this.findTarget(t, e);
91
- r = l?.target;
92
- let a = l?.pageNumber;
93
- const g = l?.isDocumentStart;
94
- if (!r && !a)
95
- return;
96
- if (r && e?.textOffset >= 0) {
97
- const m = r.textContent;
98
- if (e?.textOffset < m.length && m.length < 3e3) {
99
- D(r, "m");
100
- const h = r.querySelectorAll("m");
101
- L(r.firstElementChild?.tagName, W) && r.firstElementChild.getBoundingClientRect().width == 0 ? n = h.item(r.firstElementChild.textContent.length) : n = h.item(e.textOffset);
102
- }
103
- }
104
- if (n = n ?? r, i == "scroll")
105
- await this.gotoScroll(t, e, n, g);
106
- else {
107
- if (s && n && !w(e.tagName))
108
- this.resetTransformContainer(), a = await t.getPageNumber(n);
109
- else if (e.unit === "page" && e.current != null && e.current > 0) {
110
- a = e.current;
111
- const m = await t.getNumberOfPages();
112
- e.total > 1 && e.total != m && (a = Math.ceil(m * (e.current / e.total)));
113
- } else a || (a = await t.getPageNumber(n));
114
- await this.transformPage(t, a, s ? void 0 : e.direction);
115
- }
116
- } finally {
117
- r && P(r);
118
- }
119
- }
120
- /**
121
- * Scroll mode positioning
122
- */
123
- async gotoScroll(t, e, s, o) {
124
- const i = s.getBoundingClientRect();
125
- let n = 0;
126
- e?.ignoreOverlayHeader || (n = this.owner.optionsProvider.getHeaderHeight() + this.owner.options.redirectPositionOffset, s.clientHeight == 0 && i.height == 0 && (n += 50)), e.offsetTop && (n += e.offsetTop);
127
- const r = this.getScrollElement(), l = i.y, a = t.getContentContainer().ownerDocument.defaultView?.frameElement;
128
- let g = a?.getBoundingClientRect()?.y ?? 0, m = l + g, h = r.scrollTop;
129
- if (e.useAbsoluteScrollTop) {
130
- const f = h + m - n;
131
- r.scrollTo(0, f);
132
- } else if (o)
133
- this.scrollWrapperIntoView(t, !0);
134
- else {
135
- if (M.isSafari()) {
136
- C(t.getWrapperContainer(), void 0, void 0, this.owner.getRootContainer()?.ownerDocument), h = r.scrollTop;
137
- const f = a?.offsetTop ?? 0;
138
- if (Math.abs(f + l - h) > 5) {
139
- const c = h + t.getWrapperContainer().getBoundingClientRect().y + l;
140
- r.scrollTo(0, c);
141
- }
142
- g = a?.getBoundingClientRect()?.y ?? 0, m = l + g;
143
- } else
144
- n = m - n - r.getBoundingClientRect().top;
145
- n > 0 ? r.scrollHeight - r.scrollTop - r.clientHeight > 0 ? r.scrollBy(0, n) : C(s, void 0, e?.scrollIntoViewIfNeeded, this.owner.getRootContainer()?.ownerDocument) : r.scrollBy(0, n), this.setDocumentVisible(t.getWrapperContainer(), !0);
146
- }
147
- }
148
- async findTarget(t, e) {
149
- return this.elementLocator.locateElement(t, e, this.htmlOptions);
150
- }
151
- async transformPage(t, e, s) {
152
- const o = this.getTransformContainer(), i = o.getAttribute("data-target-transform");
153
- let n = 0;
154
- i ? n = y(i, 0, "parseFloat") : n = T(o, "x");
155
- const r = this.rendererViewport.getLayoutMetrics(), l = r.columnWidth + r.columnGap, g = t.getWrapperContainer().offsetLeft, m = Math.abs(g - n), h = m == 0 ? 0 : m % l;
156
- let f = n;
157
- h > 0 && (s == "previous" ? f = n - h : f = n + l - h);
158
- let c = f;
159
- {
160
- if (s == "previous") {
161
- const p = f - r.pageMoveLength >= 0, d = g + (e - 1) * r.pageMoveLength;
162
- p ? c = f - r.pageMoveLength : f <= r.pageMoveLength ? c = 0 : c = d;
163
- } else if (s == "next") {
164
- c = f + r.pageMoveLength;
165
- const p = this.getDocuments(), d = p[p.length - 1];
166
- if (d.getWrapperContainer().offsetLeft + d.getWrapperContainer().scrollWidth - c <= 0)
167
- return;
168
- } else
169
- c = g + (e - 1) * r.pageMoveLength;
170
- c < 0 && (c = 0);
171
- const v = this.htmlOptions.writingMode ?? "horizontal-tb";
172
- if ((this.isVerticalWriting(v) ? "y" : "x") == "x")
173
- !o.style.transition && this.htmlOptions.flipPageStyle == "slide" && (s == "next" || s == "previous") && (o.style.transition = "transform 0.2s ease"), o.style.transition && o.addEventListener("transitionend", this.removeElementTransitionEvent), o.setAttribute("data-target-transform", `${c}`), o.style.transform = "translate3d(-" + parseFloat(c.toFixed(10)) + "px,0,0)";
174
- else {
175
- o.style.transform = "translateX(" + -g + "px)";
176
- const p = t.getContentContainer().ownerDocument.documentElement, d = T(p, "y") + (e - 1) * r.columnWidth;
177
- p.style.transform = "translateY(-" + parseFloat(d.toFixed(10)) + "px)";
178
- }
179
- this.setCurrentPageNumber(t, e);
180
- }
181
- }
182
- setCurrentPageNumber(t, e) {
183
- const s = t.getContentContainer()?.ownerDocument?.documentElement;
184
- s && s.setAttribute(u.HtmlDocumentCurrentPagePropertyName, e.toFixed(0));
185
- }
186
- getCurrentPageNumber(t) {
187
- const e = t.getContentContainer()?.ownerDocument?.documentElement;
188
- if (!e) return 1;
189
- const s = e.getAttribute(u.HtmlDocumentCurrentPagePropertyName);
190
- return y(s, 1, "parseInt");
191
- }
192
- isVerticalWriting(t) {
193
- return t == "vertical-lr" || t == "vertical-rl";
194
- }
195
- appendPageStyles() {
196
- this.getRendererContainer().classList.add(u.TransformPagesClassName);
197
- }
198
- removePageStyles() {
199
- this.getRendererContainer().classList.remove(u.TransformPagesClassName);
200
- const t = this.getTransformContainer();
201
- t && t.style.removeProperty("transform");
202
- }
203
- async dispose() {
204
- this.delayHideLoadingLayerTimer && (clearTimeout(this.delayHideLoadingLayerTimer), this.delayHideLoadingLayerTimer = null), await this.documentsIntersectionObserver.dispose(), await this.documentPreloader.dispose(), await super.dispose(), this.readerContainer && (this.readerContainer.innerHTML = ""), this.isInit = !1;
205
- }
206
- }
207
- export {
208
- _ as HtmlDocumentsProvider
1
+ import { BrowserCapabilities as e } from "../../../../kernal/web/BrowserCapabilities.mjs";
2
+ import { isNullOrWhiteSpace as t } from "../../../../kernal/common/text.mjs";
3
+ import { FileLocation as n } from "../../../../kernal/progress/Progress.mjs";
4
+ import "../../../../kernal/Constants.mjs";
5
+ import { parseNumber as r } from "../../../../kernal/common/number.mjs";
6
+ import { compareTagName as i } from "../../../../kernal/html/finder.mjs";
7
+ import { emptyElement as a } from "../../../../kernal/html/dom.mjs";
8
+ import { asyncDebounce as o } from "../../../../kernal/Debounce.mjs";
9
+ import { getTransformLength as s, scrollElementIntoView as c } from "../../../../kernal/html/style.mjs";
10
+ import { recoverWrapperCharacters as l, wrapperCharacters as u } from "../../../../kernal/html/manipulator.mjs";
11
+ import { HtmlSettings as d } from "../../HtmlSettings.mjs";
12
+ import { BaseDocumentsProvider as f } from "../../../base/renderer/BaseDocumentsProvider.mjs";
13
+ import { HtmlDocument as p } from "../document/HtmlDocument.mjs";
14
+ import { HtmlDocumentsPreloader as m } from "./HtmlDocumentsPreloader.mjs";
15
+ import { HtmlDocumentsIntersectionObserver as h } from "./HtmlDocumentsIntersectionObserver.mjs";
16
+ import { HtmlElementLocator as g } from "../location/HtmlElementLocator.mjs";
17
+ import { HtmlRendererViewport as _ } from "../layout/HtmlRendererViewport.mjs";
18
+ //#region mediaTypes/html/renderer/documents/HtmlDocumentsProvider.ts
19
+ var v = class extends f {
20
+ constructor(e, n, r, i) {
21
+ super(e, n), this.readerContainer = r, this.htmlOptions = i, this.isInit = !1, this.isFirstLoad = !0, this.hangTasks = [], this.resetTransformContainer = () => {
22
+ let e = this.getTransformContainer();
23
+ e && (e.style.removeProperty("transition"), e.style.transform = "translate3d(0px,0,0)", e.setAttribute("data-target-transform", "0"), e.offsetWidth);
24
+ }, this.removeElementTransitionEvent = async (e) => {
25
+ let t = e.target;
26
+ for (t.style.removeProperty("transition"), t.style.removeProperty("will-change"), t.removeAttribute(d.PageMovingAttributeName), t.removeEventListener("transitionend", this.removeElementTransitionEvent); this.hangTasks.length > 0;) await this.hangTasks.shift()();
27
+ }, this.scrollWrapperIntoView = (e, t) => {
28
+ let n = e.getWrapperContainer();
29
+ if (this.htmlOptions.flipMode == "page") {
30
+ let e = n.offsetLeft, t = this.getTransformContainer();
31
+ t.style.transform = "translateX(" + -e + "px)";
32
+ } else (!n.isVisible || t) && c(n, void 0, void 0, this.owner.getRootContainer()?.ownerDocument);
33
+ this.setDocumentVisible(n, !0);
34
+ }, this.setDocumentVisible = (e, t) => {
35
+ e.isVisible = t;
36
+ }, this.reload = async () => {
37
+ let e = this.owner.context.currentLocation;
38
+ t(e?.url) || (e.scrollBehavior = "smooth", await this.load(e, !0), e.scrollBehavior = void 0);
39
+ }, this.delayReloadTime = 300, this.delayReload = o(this.reload, this.delayReloadTime), this.logger = this.owner.loggerFactory.getLogger(this.constructor.name), this.elementLocator = new g(this), this.rendererViewport = new _(e, this.readerContainer, this.owner.optionsProvider, i), this.documentsIntersectionObserver = new h(this), this.documentPreloader = new m(this.owner.events, this, () => this.loadingDoc, i);
40
+ }
41
+ getTransformContainer() {
42
+ return this.getRendererContainer().querySelector("." + d.TransformContainerCssName);
43
+ }
44
+ getRendererContainer() {
45
+ return this.rendererViewport.getRendererContainer();
46
+ }
47
+ getScrollElement() {
48
+ return this.rendererViewport.getScrollElement();
49
+ }
50
+ getLoadingDocument() {
51
+ return this.loadingDoc;
52
+ }
53
+ async createDocument(e, t, n) {
54
+ return new p(this.owner, this.rendererViewport, this.fileParser, e, t, this.htmlOptions);
55
+ }
56
+ async initialize(e) {
57
+ this.rendererViewport.applyCssVariables(), await super.initialize(e);
58
+ let t = this.getDocuments();
59
+ for (let e of t) e.getWrapperContainer().classList.add(d.FileContentContainerClassName, d.FileContentContainerHeightClassName);
60
+ }
61
+ async load(e, t) {
62
+ this.isInit ||= (await this.initialize(this.getTransformContainer()), this.documentsIntersectionObserver.register(), !0), e?.storeCurrent && await this.owner.onBeforeRedirect?.(this), t ??= !1;
63
+ let r = e?.url, i = this.getDocument(r);
64
+ if (!i) {
65
+ let t = this.getDocuments();
66
+ i = t[0], (t.length > 1 || !e) && (e = new n(i.url, 1, "ratio"), e.current = 0);
67
+ }
68
+ this.htmlOptions.flipMode == "page" ? this.appendPageStyles() : this.removePageStyles(), this.loadingDoc = i, this.owner.context.redirectingDocUrl = i.url;
69
+ try {
70
+ this.delayHideLoadingLayerTimer = setTimeout(async () => {
71
+ await this.owner.loading?.hide();
72
+ }, 2e3), this.owner.context.setUserChangedProgress(!t, e?.from), await this.gotoDoc(i, e, t), this.isFirstLoad && !t && (this.isFirstLoad = !1), await this.documentPreloader.preloadDocuments();
73
+ } finally {
74
+ setTimeout(() => {
75
+ this.loadingDoc = null, this.owner.context.redirectingDocUrl = void 0;
76
+ }, 166);
77
+ }
78
+ }
79
+ async gotoDoc(e, n, r) {
80
+ if (!n || (await e.load(), !e.getContentContainer())) return;
81
+ r ??= !1;
82
+ let a = this.htmlOptions.flipMode, o, s;
83
+ try {
84
+ let c = await this.findTarget(e, n);
85
+ s = c?.target;
86
+ let l = c?.pageNumber, d = c?.isDocumentStart;
87
+ if (!s && !l) return;
88
+ if (s && n?.textOffset >= 0) {
89
+ let e = s.textContent;
90
+ if (n?.textOffset < e.length && e.length < 3e3) {
91
+ u(s, "m");
92
+ let e = s.querySelectorAll("m");
93
+ o = i(s.firstElementChild?.tagName, "ST") && s.firstElementChild.getBoundingClientRect().width == 0 ? e.item(s.firstElementChild.textContent.length) : e.item(n.textOffset);
94
+ }
95
+ }
96
+ if (o ??= s, a == "scroll") await this.gotoScroll(e, n, o, d);
97
+ else {
98
+ if (r && o && !t(n.tagName)) this.resetTransformContainer(), l = await e.getPageNumber(o);
99
+ else if (n.unit === "page" && n.current != null && n.current > 0) {
100
+ l = n.current;
101
+ let t = await e.getNumberOfPages();
102
+ n.total > 1 && n.total != t && (l = Math.ceil(t * (n.current / n.total)));
103
+ } else l ||= await e.getPageNumber(o);
104
+ await this.transformPage(e, l, r ? void 0 : n.direction);
105
+ }
106
+ } finally {
107
+ s && l(s);
108
+ }
109
+ }
110
+ async gotoScroll(t, n, r, i) {
111
+ let a = r.getBoundingClientRect(), o = 0;
112
+ n?.ignoreOverlayHeader || (o = this.owner.optionsProvider.getHeaderHeight() + this.owner.options.redirectPositionOffset, r.clientHeight == 0 && a.height == 0 && (o += 50)), n.offsetTop && (o += n.offsetTop);
113
+ let s = this.getScrollElement(), l = a.y, u = t.getContentContainer().ownerDocument.defaultView?.frameElement, d = u?.getBoundingClientRect()?.y ?? 0, f = l + d, p = s.scrollTop;
114
+ if (n.useAbsoluteScrollTop) {
115
+ let e = p + f - o;
116
+ s.scrollTo(0, e);
117
+ } else if (i) this.scrollWrapperIntoView(t, !0);
118
+ else {
119
+ if (e.isSafari()) {
120
+ c(t.getWrapperContainer(), void 0, void 0, this.owner.getRootContainer()?.ownerDocument), p = s.scrollTop;
121
+ let e = u?.offsetTop ?? 0;
122
+ if (Math.abs(e + l - p) > 5) {
123
+ let e = p + t.getWrapperContainer().getBoundingClientRect().y + l;
124
+ s.scrollTo(0, e);
125
+ }
126
+ d = u?.getBoundingClientRect()?.y ?? 0, f = l + d;
127
+ } else o = f - o - s.getBoundingClientRect().top;
128
+ o > 0 ? s.scrollHeight - s.scrollTop - s.clientHeight > 0 ? s.scrollBy(0, o) : c(r, void 0, n?.scrollIntoViewIfNeeded, this.owner.getRootContainer()?.ownerDocument) : s.scrollBy(0, o), this.setDocumentVisible(t.getWrapperContainer(), !0);
129
+ }
130
+ }
131
+ async findTarget(e, t) {
132
+ return this.elementLocator.locateElement(e, t, this.htmlOptions);
133
+ }
134
+ async transformPage(e, t, n) {
135
+ let i = this.getTransformContainer(), a = i.getAttribute("data-target-transform"), o = 0;
136
+ o = a ? r(a, 0, "parseFloat") : s(i, "x");
137
+ let c = this.rendererViewport.getLayoutMetrics(), l = c.columnWidth + c.columnGap, u = e.getWrapperContainer().offsetLeft, d = Math.abs(u - o), f = d == 0 ? 0 : d % l, p = o;
138
+ f > 0 && (p = n == "previous" ? o - f : o + l - f);
139
+ let m = p;
140
+ try {
141
+ if (n == "previous") {
142
+ let e = p - c.pageMoveLength >= 0, n = u + (t - 1) * c.pageMoveLength;
143
+ m = e ? p - c.pageMoveLength : p <= c.pageMoveLength ? 0 : n;
144
+ } else if (n == "next") {
145
+ m = p + c.pageMoveLength;
146
+ let e = this.getDocuments(), t = e[e.length - 1];
147
+ if (t.getWrapperContainer().offsetLeft + t.getWrapperContainer().scrollWidth - m <= 0) return;
148
+ } else m = u + (t - 1) * c.pageMoveLength;
149
+ m < 0 && (m = 0);
150
+ let r = this.htmlOptions.writingMode ?? "horizontal-tb";
151
+ if ((this.isVerticalWriting(r) ? "y" : "x") == "x") !i.style.transition && this.htmlOptions.flipPageStyle == "slide" && (n == "next" || n == "previous") && (i.style.transition = "transform 0.2s ease"), i.style.transition && i.addEventListener("transitionend", this.removeElementTransitionEvent), i.setAttribute("data-target-transform", `${m}`), i.style.transform = "translate3d(-" + parseFloat(m.toFixed(10)) + "px,0,0)";
152
+ else {
153
+ i.style.transform = "translateX(" + -u + "px)";
154
+ let n = e.getContentContainer().ownerDocument.documentElement, r = s(n, "y") + (t - 1) * c.columnWidth;
155
+ n.style.transform = "translateY(-" + parseFloat(r.toFixed(10)) + "px)";
156
+ }
157
+ this.setCurrentPageNumber(e, t);
158
+ } finally {}
159
+ }
160
+ setCurrentPageNumber(e, t) {
161
+ let n = e.getContentContainer()?.ownerDocument?.documentElement;
162
+ n && n.setAttribute(d.HtmlDocumentCurrentPagePropertyName, t.toFixed(0));
163
+ }
164
+ getCurrentPageNumber(e) {
165
+ let t = e.getContentContainer()?.ownerDocument?.documentElement;
166
+ if (!t) return 1;
167
+ let n = t.getAttribute(d.HtmlDocumentCurrentPagePropertyName);
168
+ return r(n, 1, "parseInt");
169
+ }
170
+ isVerticalWriting(e) {
171
+ return e == "vertical-lr" || e == "vertical-rl";
172
+ }
173
+ appendPageStyles() {
174
+ this.getRendererContainer().classList.add(d.TransformPagesClassName);
175
+ }
176
+ removePageStyles() {
177
+ this.getRendererContainer().classList.remove(d.TransformPagesClassName);
178
+ let e = this.getTransformContainer();
179
+ e && e.style.removeProperty("transform");
180
+ }
181
+ async dispose() {
182
+ this.delayHideLoadingLayerTimer &&= (clearTimeout(this.delayHideLoadingLayerTimer), null), await this.documentsIntersectionObserver.dispose(), await this.documentPreloader.dispose(), await super.dispose(), this.readerContainer && a(this.readerContainer), this.isInit = !1;
183
+ }
209
184
  };
185
+ //#endregion
186
+ export { v as HtmlDocumentsProvider };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../../HtmlSettings.cjs"),h=require("../../../../kernal/EventNames.cjs"),c=require("perfect-debounce");class u{constructor(t,e,r,n){this.documentsProvider=t,this.rendererViewport=e,this.progressTracker=r,this.rendererLayout=n,this.resizeRendererContainer=async()=>{if(this.context){if(this.rendererContainer.clientWidth==0||this.rendererContainer.clientHeight==0){this.rendererContainer.lhx_pdf_hidden&&(this.rendererContainer.lhx_pdf_require_resize="true"),this.rendererContainer.lhx_pdf_hidden="true";return}if(this.rendererContainer.clientWidth>0&&this.rendererContainer.clientHeight>0&&this.rendererContainer.lhx_pdf_hidden){if(this.rendererContainer.lhx_pdf_hidden=void 0,!this.rendererContainer.lhx_pdf_require_resize)return;this.rendererContainer.lhx_pdf_require_resize=void 0}this.rendererViewport.applyCssVariables(),await this.rendererLayout.applyStyles();for(const i of this.documentsProvider.getLoadedDocuments())i.getContentContainer()?.ownerDocument?.documentElement?.removeAttribute(a.HtmlSettings.HtmlDocumentNumperOfPagesPropertyName);await this.documentsProvider.reload(),this.events.emit(h.EventNames.RendererContainerSizeChange,this.rendererContainer,this.context.userChangedProgress)}},this.delayResizeRendererContainer=c.debounce(this.resizeRendererContainer,100),this.rendererContainer=this.documentsProvider.getRendererContainer(),this.context=this.documentsProvider.owner.context,this.events=this.documentsProvider.owner.events}register(){this.rendererContainerResizeObserver=new ResizeObserver(async t=>{const e=t[0],r=e.target,n=parseFloat(r.getAttribute("data-client-width")),i=parseFloat(r.getAttribute("data-client-height")),s=e.contentRect?.width??e.borderBoxSize[0].inlineSize??0,o=e.contentRect?.height??e.borderBoxSize[0].blockSize??0;if(!(n==s&&i==o)){if(this.rendererContainer.setAttribute("data-client-width",`${s}`),this.rendererContainer.setAttribute("data-client-height",`${o}`),!this.context?.currentLocation?.precise){const d=await this.progressTracker.getProgress(!0);d&&(this.context.currentLocation=d.location)}this.context.setUserChangedProgress(!1),await this.delayResizeRendererContainer()}}),this.rendererContainerResizeObserver.observe(this.rendererContainer)}async dispose(){this.rendererContainerResizeObserver?.disconnect()}}exports.HtmlDocumentsResizeObserver=u;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/EventNames.cjs"),t=require("../../HtmlSettings.cjs");let n=require("perfect-debounce");var r=class{constructor(r,i,a,o){this.documentsProvider=r,this.rendererViewport=i,this.progressTracker=a,this.rendererLayout=o,this.resizeRendererContainer=async()=>{if(this.context){if(this.rendererContainer.clientWidth==0||this.rendererContainer.clientHeight==0){this.rendererContainer.lhx_pdf_hidden&&(this.rendererContainer.lhx_pdf_require_resize=`true`),this.rendererContainer.lhx_pdf_hidden=`true`;return}if(this.rendererContainer.clientWidth>0&&this.rendererContainer.clientHeight>0&&this.rendererContainer.lhx_pdf_hidden){if(this.rendererContainer.lhx_pdf_hidden=void 0,!this.rendererContainer.lhx_pdf_require_resize)return;this.rendererContainer.lhx_pdf_require_resize=void 0}this.rendererViewport.applyCssVariables(),await this.rendererLayout.applyStyles();for(let e of this.documentsProvider.getLoadedDocuments())e.getContentContainer()?.ownerDocument?.documentElement?.removeAttribute(t.HtmlSettings.HtmlDocumentNumperOfPagesPropertyName);await this.documentsProvider.reload(),this.events.emit(e.EventNames.RendererContainerSizeChange,this.rendererContainer,this.context.userChangedProgress)}},this.delayResizeRendererContainer=(0,n.debounce)(this.resizeRendererContainer,100),this.rendererContainer=this.documentsProvider.getRendererContainer(),this.context=this.documentsProvider.owner.context,this.events=this.documentsProvider.owner.events}register(){this.rendererContainerResizeObserver=new ResizeObserver(async e=>{let t=e[0],n=t.target,r=parseFloat(n.getAttribute(`data-client-width`)),i=parseFloat(n.getAttribute(`data-client-height`)),a=t.contentRect?.width??t.borderBoxSize[0].inlineSize??0,o=t.contentRect?.height??t.borderBoxSize[0].blockSize??0;if(r!=a||i!=o){if(this.rendererContainer.setAttribute(`data-client-width`,`${a}`),this.rendererContainer.setAttribute(`data-client-height`,`${o}`),!this.context?.currentLocation?.precise){let e=await this.progressTracker.getProgress(!0);e&&(this.context.currentLocation=e.location)}this.context.setUserChangedProgress(!1),await this.delayResizeRendererContainer()}}),this.rendererContainerResizeObserver.observe(this.rendererContainer)}async dispose(){this.rendererContainerResizeObserver?.disconnect()}};exports.HtmlDocumentsResizeObserver=r;
@@ -2,6 +2,7 @@ import { IDisposable, IDocumentsProvider, IProgressTracker } from '../../../../k
2
2
  import { HtmlLayoutMetrics } from '../layout/HtmlLayoutMetrics';
3
3
  import { IRendererViewport } from '../../../../kernal/IRendererViewport';
4
4
  import { IHtmlRendererLayout } from '../layout/IHtmlRendererLayout';
5
+ import { DebouncedReturn } from 'perfect-debounce';
5
6
 
6
7
  export declare class HtmlDocumentsResizeObserver implements IDisposable {
7
8
  private readonly documentsProvider;
@@ -15,6 +16,6 @@ export declare class HtmlDocumentsResizeObserver implements IDisposable {
15
16
  constructor(documentsProvider: IDocumentsProvider, rendererViewport: IRendererViewport<HtmlLayoutMetrics>, progressTracker: IProgressTracker, rendererLayout: IHtmlRendererLayout);
16
17
  register(): void;
17
18
  protected resizeRendererContainer: () => Promise<void>;
18
- protected delayResizeRendererContainer: () => Promise<void>;
19
+ protected delayResizeRendererContainer: DebouncedReturn<[], void>;
19
20
  dispose(): Promise<void>;
20
21
  }
@@ -1,42 +1,40 @@
1
- import { HtmlSettings as a } from "../../HtmlSettings.mjs";
2
- import { EventNames as h } from "../../../../kernal/EventNames.mjs";
3
- import { debounce as c } from "perfect-debounce";
4
- class m {
5
- constructor(t, e, r, i) {
6
- this.documentsProvider = t, this.rendererViewport = e, this.progressTracker = r, this.rendererLayout = i, this.resizeRendererContainer = async () => {
7
- if (this.context) {
8
- if (this.rendererContainer.clientWidth == 0 || this.rendererContainer.clientHeight == 0) {
9
- this.rendererContainer.lhx_pdf_hidden && (this.rendererContainer.lhx_pdf_require_resize = "true"), this.rendererContainer.lhx_pdf_hidden = "true";
10
- return;
11
- }
12
- if (this.rendererContainer.clientWidth > 0 && this.rendererContainer.clientHeight > 0 && this.rendererContainer.lhx_pdf_hidden) {
13
- if (this.rendererContainer.lhx_pdf_hidden = void 0, !this.rendererContainer.lhx_pdf_require_resize)
14
- return;
15
- this.rendererContainer.lhx_pdf_require_resize = void 0;
16
- }
17
- this.rendererViewport.applyCssVariables(), await this.rendererLayout.applyStyles();
18
- for (const n of this.documentsProvider.getLoadedDocuments())
19
- n.getContentContainer()?.ownerDocument?.documentElement?.removeAttribute(a.HtmlDocumentNumperOfPagesPropertyName);
20
- await this.documentsProvider.reload(), this.events.emit(h.RendererContainerSizeChange, this.rendererContainer, this.context.userChangedProgress);
21
- }
22
- }, this.delayResizeRendererContainer = c(this.resizeRendererContainer, 100), this.rendererContainer = this.documentsProvider.getRendererContainer(), this.context = this.documentsProvider.owner.context, this.events = this.documentsProvider.owner.events;
23
- }
24
- register() {
25
- this.rendererContainerResizeObserver = new ResizeObserver(async (t) => {
26
- const e = t[0], r = e.target, i = parseFloat(r.getAttribute("data-client-width")), n = parseFloat(r.getAttribute("data-client-height")), s = e.contentRect?.width ?? e.borderBoxSize[0].inlineSize ?? 0, o = e.contentRect?.height ?? e.borderBoxSize[0].blockSize ?? 0;
27
- if (!(i == s && n == o)) {
28
- if (this.rendererContainer.setAttribute("data-client-width", `${s}`), this.rendererContainer.setAttribute("data-client-height", `${o}`), !this.context?.currentLocation?.precise) {
29
- const d = await this.progressTracker.getProgress(!0);
30
- d && (this.context.currentLocation = d.location);
31
- }
32
- this.context.setUserChangedProgress(!1), await this.delayResizeRendererContainer();
33
- }
34
- }), this.rendererContainerResizeObserver.observe(this.rendererContainer);
35
- }
36
- async dispose() {
37
- this.rendererContainerResizeObserver?.disconnect();
38
- }
39
- }
40
- export {
41
- m as HtmlDocumentsResizeObserver
1
+ import { EventNames as e } from "../../../../kernal/EventNames.mjs";
2
+ import { asyncDebounce as t } from "../../../../kernal/Debounce.mjs";
3
+ import { HtmlSettings as n } from "../../HtmlSettings.mjs";
4
+ //#region mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.ts
5
+ var r = class {
6
+ constructor(r, i, a, o) {
7
+ this.documentsProvider = r, this.rendererViewport = i, this.progressTracker = a, this.rendererLayout = o, this.resizeRendererContainer = async () => {
8
+ if (this.context) {
9
+ if (this.rendererContainer.clientWidth == 0 || this.rendererContainer.clientHeight == 0) {
10
+ this.rendererContainer.lhx_pdf_hidden && (this.rendererContainer.lhx_pdf_require_resize = "true"), this.rendererContainer.lhx_pdf_hidden = "true";
11
+ return;
12
+ }
13
+ if (this.rendererContainer.clientWidth > 0 && this.rendererContainer.clientHeight > 0 && this.rendererContainer.lhx_pdf_hidden) {
14
+ if (this.rendererContainer.lhx_pdf_hidden = void 0, !this.rendererContainer.lhx_pdf_require_resize) return;
15
+ this.rendererContainer.lhx_pdf_require_resize = void 0;
16
+ }
17
+ this.rendererViewport.applyCssVariables(), await this.rendererLayout.applyStyles();
18
+ for (let e of this.documentsProvider.getLoadedDocuments()) e.getContentContainer()?.ownerDocument?.documentElement?.removeAttribute(n.HtmlDocumentNumperOfPagesPropertyName);
19
+ await this.documentsProvider.reload(), this.events.emit(e.RendererContainerSizeChange, this.rendererContainer, this.context.userChangedProgress);
20
+ }
21
+ }, this.delayResizeRendererContainer = t(this.resizeRendererContainer, 100), this.rendererContainer = this.documentsProvider.getRendererContainer(), this.context = this.documentsProvider.owner.context, this.events = this.documentsProvider.owner.events;
22
+ }
23
+ register() {
24
+ this.rendererContainerResizeObserver = new ResizeObserver(async (e) => {
25
+ let t = e[0], n = t.target, r = parseFloat(n.getAttribute("data-client-width")), i = parseFloat(n.getAttribute("data-client-height")), a = t.contentRect?.width ?? t.borderBoxSize[0].inlineSize ?? 0, o = t.contentRect?.height ?? t.borderBoxSize[0].blockSize ?? 0;
26
+ if (r != a || i != o) {
27
+ if (this.rendererContainer.setAttribute("data-client-width", `${a}`), this.rendererContainer.setAttribute("data-client-height", `${o}`), !this.context?.currentLocation?.precise) {
28
+ let e = await this.progressTracker.getProgress(!0);
29
+ e && (this.context.currentLocation = e.location);
30
+ }
31
+ this.context.setUserChangedProgress(!1), await this.delayResizeRendererContainer();
32
+ }
33
+ }), this.rendererContainerResizeObserver.observe(this.rendererContainer);
34
+ }
35
+ async dispose() {
36
+ this.rendererContainerResizeObserver?.disconnect();
37
+ }
42
38
  };
39
+ //#endregion
40
+ export { r as HtmlDocumentsResizeObserver };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../../../../kernal/common/encoding.cjs"),S=require("../../../../kernal/common/path.cjs"),f=require("../../../../kernal/common/text.cjs"),a=require("../../../../kernal/common/url.cjs"),k=require("../../../../kernal/common/buffer.cjs"),p=require("../../../../kernal/html/finder.cjs"),A=require("../../../../kernal/html/injector.cjs"),m=require("../../../../kernal/html/style.cjs"),C=require("../../HtmlSettings.cjs"),B=require("../../../../kernal/common/uuid.cjs"),w=require("../../../../kernal/Constants.cjs");class H{constructor(t){this.fileParser=t,this.childrenUrls=new Map,this.errorLinks=[],this.docBlobUrls=new Map,this.opaqueDocumentBaseUrls=[]}async preprocess(t){const l=(await t.getVirtualContentContainer())?.ownerDocument;l&&(this.format(l),this.injectBaseUrl(l,t.url),await this.resetCssHref(l,t),await this.resetScriptSrc(l,t))}format(t){const l=t.getElementsByTagName("*");let n=!1;for(let s=l.length-1;s>=0;s--){const e=l[s];if(e.textContent.trim()||e.classList.add("lhx-text-empty"),e.style&&(e.style.fontSize||e.style.textIndent)){let i=e.getAttribute("style");e.style.fontSize&&(i=m.replaceFontSize(i)),e.style.textIndent&&(i=m.removeTextIndent(i)),e.setAttribute("style",i)}p.compareTagName(e.tagName,"TABLE")&&(e.style.width="100%",e.style.height="auto"),n||(p.compareTagName(e.tagName,"SVG")||e.children.length==0&&!p.compareTagName(e.parentElement.tagName,"SVG"))&&(n=!0,e.setAttribute(w.LastElementAttributeName,"true")),e.getAttribute("epub:type")=="footnote"&&e.style.setProperty("display","none")}}async resetCssHref(t,l){const n=t.getElementsByTagName("link");for(let s=n.length-1;s>=0;s--){const e=n[s].getAttribute("href");if(!n[s].rel||n[s].rel.toLowerCase()!="stylesheet"||f.isNullOrWhiteSpace(e))continue;const{href:r,cssContent:i,isHref:c}=await this.getActualCssLink(e,l);if(c&&e)n[s].href=r,n[s].setAttribute(C.HtmlSettings.LinkOriginHrefPropertyName,e);else if(i){const u=B.getRandomId(!0);A.injectCssContent(t,i,!1,u),n[s].parentElement?.removeChild(n[s])}}}async getActualCssLink(t,l){if(f.isNullOrWhiteSpace(t))return{href:t,cssContent:"",isHref:!0};if(a.checkIsAbsoluteUrl(t))return{href:t,cssContent:"",isHref:!0};try{const n=await this.fileParser.getFile(t,l.url,"blob"),s=d.convertArrayBufferToString(await n.arrayBuffer()),e=s.matchAll(/url\(["']?(.*?)["']?\)/gi);for(const g of e){const o=g[1];if(this.childrenUrls.get(o))continue;const y=S.getExtension(o);if(y&&y.toLowerCase()==".css"){if(f.isNullOrWhiteSpace(o)||a.checkIsAbsoluteUrl(o))continue;const{href:h}=await this.getActualCssLink(o,l);this.childrenUrls.set(o,h)}else{const h=a.getFullUrl(o,t);if(!f.startsWithAny(h.toString(),!0,"http://","https://"))continue;const b=(h.pathname+h.search).substring(1);if(this.errorLinks.indexOf(b)>=0)continue;try{const U=await this.fileParser.getFile(b,"","blob"),L=URL.createObjectURL(U);this.childrenUrls.set(o,L)}catch(U){this.errorLinks.indexOf(b)<0&&this.errorLinks.push(b),this.logger.error(U),this.childrenUrls.set(o,h.toString())}}}let r=s.replace(/url\(["']?(.*?)["']?\)/gi,(g,o)=>a.checkIsAbsoluteUrl(o)?g:"");r=m.replaceFontSize(r),r=m.removeTextIndent(r),r=m.appendZeroTextIndentForCenterRightAlign(r);const i=d.convertStringToUint8Array(r),c=k.toBlob(i,{type:"text/css"}),u=URL.createObjectURL(c);return this.childrenUrls.set(t,u),{href:u,cssContent:r,isHref:!1}}catch(n){return this.logger.error(n),{href:t,cssContent:"",isHref:!0}}}async dispose(){this.childrenUrls.clear(),this.errorLinks&&this.errorLinks.splice(0),this.docBlobUrls.clear();for(const t of this.opaqueDocumentBaseUrls)try{URL.revokeObjectURL(t)}catch{}this.opaqueDocumentBaseUrls=[]}async resetScriptSrc(t,l){let n=l.getRoot();n||(n="");const s=t.getElementsByTagName("script");for(let e=0;e<s.length;e++){let r=s[e].getAttribute("src");if(!(!r||r.startsWith("/"))){if(!a.checkIsAbsoluteUrl(r)){const i=a.getFullUrl(r,n);a.checkIsAbsoluteUrl(n)?r=i.toString():(r=i.pathname+i.search,r=r.substring(1))}if(!a.checkIsAbsoluteUrl(r)){const i=a.getFullUrl(r,n);let c=i.pathname+i.search;c=c.substring(1);const u=await this.fileParser.getFile(r,l.url,"blob"),g=URL.createObjectURL(u);s[e].src=g,s[e].setAttribute(C.HtmlSettings.LinkOriginHrefPropertyName,r)}}}}injectBaseUrl(t,l){const n=t.getElementsByTagName("base");for(let c=0;c<n.length;c++)if(!f.isNullOrWhiteSpace(n[c].href))return;let s=l;!f.isNullOrWhiteSpace(s)&&a.checkIsAbsoluteUrl(s)||(s=this.createOpaqueDocumentBaseUrl());const r=A.createElement(t,"base",null,{href:s}),i=p.getDocumentHead(t);i.insertBefore(r,i.firstChild)}createOpaqueDocumentBaseUrl(){const t=URL.createObjectURL(new Blob(["<!doctype html><title></title>"],{type:"text/html"}));return this.opaqueDocumentBaseUrls.push(t),t}}exports.HtmlContentProcessor=H;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/common/uuid.cjs"),t=require("../../../../kernal/common/text.cjs"),n=require("../../../../kernal/common/url.cjs"),r=require("../../../../kernal/common/path.cjs"),i=require("../../../../kernal/common/buffer.cjs"),a=require("../../../../kernal/Constants.cjs"),o=require("../../../../kernal/html/finder.cjs"),s=require("../../../../kernal/html/injector.cjs"),c=require("../../../../kernal/html/style.cjs"),l=require("../../../../kernal/common/encoding.cjs"),u=require("../../HtmlSettings.cjs");var d=class{constructor(e){this.fileParser=e,this.childrenUrls=new Map,this.errorLinks=[],this.docBlobUrls=new Map,this.opaqueDocumentBaseUrls=[]}async preprocess(e){let t=(await e.getVirtualContentContainer())?.ownerDocument;t&&(this.format(t),this.injectBaseUrl(t,e.url),await this.resetCssHref(t,e),await this.resetScriptSrc(t,e))}format(e){let t=e.getElementsByTagName(`*`),n=!1;for(let e=t.length-1;e>=0;e--){let r=t[e];if(r.textContent.trim()||r.classList.add(`lhx-text-empty`),r.style&&(r.style.fontSize||r.style.textIndent)){let e=r.getAttribute(`style`);r.style.fontSize&&(e=c.replaceFontSize(e)),r.style.textIndent&&(e=c.removeTextIndent(e)),r.setAttribute(`style`,e)}o.compareTagName(r.tagName,`TABLE`)&&(r.style.width=`100%`,r.style.height=`auto`),n||(o.compareTagName(r.tagName,`SVG`)||r.children.length==0&&!o.compareTagName(r.parentElement.tagName,`SVG`))&&(n=!0,r.setAttribute(a.LastElementAttributeName,`true`)),r.getAttribute(`epub:type`)==`footnote`&&r.style.setProperty(`display`,`none`)}}async resetCssHref(n,r){let i=n.getElementsByTagName(`link`);for(let a=i.length-1;a>=0;a--){let o=i[a].getAttribute(`href`);if(!i[a].rel||i[a].rel.toLowerCase()!=`stylesheet`||t.isNullOrWhiteSpace(o))continue;let{href:c,cssContent:l,isHref:d}=await this.getActualCssLink(o,r);if(d&&o)i[a].href=c,i[a].setAttribute(u.HtmlSettings.LinkOriginHrefPropertyName,o);else if(l){let t=e.getRandomId(!0);s.injectCssContent(n,l,!1,t),i[a].parentElement?.removeChild(i[a])}}}async getActualCssLink(e,a){if(t.isNullOrWhiteSpace(e)||n.checkIsAbsoluteUrl(e))return{href:e,cssContent:``,isHref:!0};try{let o=await this.fileParser.getFile(e,a.url,`blob`),s=l.convertArrayBufferToString(await o.arrayBuffer()),u=s.matchAll(/url\(["']?(.*?)["']?\)/gi);for(let i of u){let o=i[1];if(this.childrenUrls.get(o))continue;let s=r.getExtension(o);if(s&&s.toLowerCase()==`.css`){if(t.isNullOrWhiteSpace(o)||n.checkIsAbsoluteUrl(o))continue;let{href:e}=await this.getActualCssLink(o,a);this.childrenUrls.set(o,e)}else{let r=n.getFullUrl(o,e);if(!t.startsWithAny(r.toString(),!0,`http://`,`https://`))continue;let i=(r.pathname+r.search).substring(1);if(this.errorLinks.indexOf(i)>=0)continue;try{let e=await this.fileParser.getFile(i,``,`blob`),t=URL.createObjectURL(e);this.childrenUrls.set(o,t)}catch(e){this.errorLinks.indexOf(i)<0&&this.errorLinks.push(i),this.logger.error(e),this.childrenUrls.set(o,r.toString())}}}let d=s.replace(/url\(["']?(.*?)["']?\)/gi,(e,t)=>n.checkIsAbsoluteUrl(t)?e:``);d=c.replaceFontSize(d),d=c.removeTextIndent(d),d=c.appendZeroTextIndentForCenterRightAlign(d);let f=l.convertStringToUint8Array(d),p=i.toBlob(f,{type:`text/css`}),m=URL.createObjectURL(p);return this.childrenUrls.set(e,m),{href:m,cssContent:d,isHref:!1}}catch(t){return this.logger.error(t),{href:e,cssContent:``,isHref:!0}}}async dispose(){this.childrenUrls.clear(),this.errorLinks&&this.errorLinks.splice(0),this.docBlobUrls.clear();for(let e of this.opaqueDocumentBaseUrls)try{URL.revokeObjectURL(e)}catch{}this.opaqueDocumentBaseUrls=[]}async resetScriptSrc(e,t){let r=t.getRoot();r||=``;let i=e.getElementsByTagName(`script`);for(let e=0;e<i.length;e++){let a=i[e].getAttribute(`src`);if(!(!a||a.startsWith(`/`))){if(!n.checkIsAbsoluteUrl(a)){let e=n.getFullUrl(a,r);n.checkIsAbsoluteUrl(r)?a=e.toString():(a=e.pathname+e.search,a=a.substring(1))}if(!n.checkIsAbsoluteUrl(a)){let o=n.getFullUrl(a,r),s=o.pathname+o.search;s=s.substring(1);let c=await this.fileParser.getFile(a,t.url,`blob`),l=URL.createObjectURL(c);i[e].src=l,i[e].setAttribute(u.HtmlSettings.LinkOriginHrefPropertyName,a)}}}}injectBaseUrl(e,r){let i=e.getElementsByTagName(`base`);for(let e=0;e<i.length;e++)if(!t.isNullOrWhiteSpace(i[e].href))return;let a=r;!t.isNullOrWhiteSpace(a)&&n.checkIsAbsoluteUrl(a)||(a=this.createOpaqueDocumentBaseUrl());let c=s.createElement(e,`base`,null,{href:a}),l=o.getDocumentHead(e);l.insertBefore(c,l.firstChild)}createOpaqueDocumentBaseUrl(){let e=URL.createObjectURL(new Blob([`<!doctype html><title></title>`],{type:`text/html`}));return this.opaqueDocumentBaseUrls.push(e),e}};exports.HtmlContentProcessor=d;