@foxycape/core 1.1.3 → 1.1.4

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 (501) 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.mjs +0 -1
  404. package/dist/mediaTypes/pdf/fileParser/PdfFileParser.cjs +1 -1
  405. package/dist/mediaTypes/pdf/fileParser/PdfFileParser.mjs +147 -170
  406. package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.cjs +1 -1
  407. package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.mjs +45 -52
  408. package/dist/mediaTypes/pdf/fileParser/PdfTextDocument.cjs +1 -1
  409. package/dist/mediaTypes/pdf/fileParser/PdfTextDocument.mjs +28 -28
  410. package/dist/mediaTypes/pdf/loadPdfDocument.cjs +1 -1
  411. package/dist/mediaTypes/pdf/loadPdfDocument.mjs +27 -23
  412. package/dist/mediaTypes/pdf/renderer/IPdfDocument.cjs +0 -1
  413. package/dist/mediaTypes/pdf/renderer/IPdfDocument.mjs +0 -1
  414. package/dist/mediaTypes/pdf/renderer/IPdfRenderer.cjs +0 -1
  415. package/dist/mediaTypes/pdf/renderer/IPdfRenderer.mjs +0 -1
  416. package/dist/mediaTypes/pdf/renderer/IPdfSvgBuilder.cjs +0 -1
  417. package/dist/mediaTypes/pdf/renderer/IPdfSvgBuilder.mjs +0 -1
  418. package/dist/mediaTypes/pdf/renderer/MultiPdfViewer.cjs +1 -1
  419. package/dist/mediaTypes/pdf/renderer/MultiPdfViewer.mjs +323 -625
  420. package/dist/mediaTypes/pdf/renderer/PdfCoreNavigator.cjs +1 -1
  421. package/dist/mediaTypes/pdf/renderer/PdfCoreNavigator.mjs +18 -18
  422. package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.cjs +1 -1
  423. package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.mjs +25 -6
  424. package/dist/mediaTypes/pdf/renderer/PdfDocument.cjs +1 -1
  425. package/dist/mediaTypes/pdf/renderer/PdfDocument.mjs +61 -70
  426. package/dist/mediaTypes/pdf/renderer/PdfNavPointNavigator.cjs +1 -1
  427. package/dist/mediaTypes/pdf/renderer/PdfNavPointNavigator.mjs +118 -122
  428. package/dist/mediaTypes/pdf/renderer/PdfNavPointProvider.cjs +1 -1
  429. package/dist/mediaTypes/pdf/renderer/PdfNavPointProvider.mjs +85 -111
  430. package/dist/mediaTypes/pdf/renderer/PdfNoopL10n.cjs +1 -1
  431. package/dist/mediaTypes/pdf/renderer/PdfNoopL10n.mjs +7 -10
  432. package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.cjs +1 -1
  433. package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.mjs +29 -32
  434. package/dist/mediaTypes/pdf/renderer/PdfRenderer.cjs +1 -1
  435. package/dist/mediaTypes/pdf/renderer/PdfRenderer.mjs +76 -79
  436. package/dist/mediaTypes/pdf/renderer/PdfSvgBuilder.cjs +1 -1
  437. package/dist/mediaTypes/pdf/renderer/PdfSvgBuilder.mjs +269 -236
  438. package/dist/mediaTypes/pdf/renderer/PdfViewerBuilder.cjs +1 -1
  439. package/dist/mediaTypes/pdf/renderer/PdfViewerBuilder.mjs +33 -36
  440. package/dist/mediaTypes/pdf/renderer/documents/IPdfDocumentsProvider.cjs +0 -1
  441. package/dist/mediaTypes/pdf/renderer/documents/IPdfDocumentsProvider.mjs +0 -1
  442. package/dist/mediaTypes/pdf/renderer/documents/PdfDocumentsProvider.cjs +2 -2
  443. package/dist/mediaTypes/pdf/renderer/documents/PdfDocumentsProvider.mjs +243 -290
  444. package/dist/mediaTypes/pdf/renderer/input/PdfDocumentEvents.cjs +1 -1
  445. package/dist/mediaTypes/pdf/renderer/input/PdfDocumentEvents.mjs +43 -50
  446. package/dist/mediaTypes/pdf/renderer/input/PdfKeyboardController.cjs +1 -1
  447. package/dist/mediaTypes/pdf/renderer/input/PdfKeyboardController.mjs +84 -105
  448. package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.cjs +1 -1
  449. package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.mjs +44 -59
  450. package/dist/mediaTypes/pdf/renderer/input/PdfZoomInputController.cjs +1 -1
  451. package/dist/mediaTypes/pdf/renderer/input/PdfZoomInputController.mjs +138 -177
  452. package/dist/mediaTypes/pdf/renderer/layout/IPdfRendererLayout.cjs +0 -1
  453. package/dist/mediaTypes/pdf/renderer/layout/IPdfRendererLayout.mjs +0 -1
  454. package/dist/mediaTypes/pdf/renderer/layout/PdfRendererLayout.cjs +1 -1
  455. package/dist/mediaTypes/pdf/renderer/layout/PdfRendererLayout.mjs +36 -42
  456. package/dist/mediaTypes/pdf/renderer/layout/PdfRendererViewport.cjs +1 -1
  457. package/dist/mediaTypes/pdf/renderer/layout/PdfRendererViewport.mjs +75 -82
  458. package/dist/mediaTypes/pdf/renderer/location/IPdfDestinationBuilder.cjs +0 -1
  459. package/dist/mediaTypes/pdf/renderer/location/IPdfDestinationBuilder.mjs +0 -1
  460. package/dist/mediaTypes/pdf/renderer/location/PdfDestinationBuilder.cjs +1 -1
  461. package/dist/mediaTypes/pdf/renderer/location/PdfDestinationBuilder.mjs +18 -21
  462. package/dist/mediaTypes/pdf/renderer/progress/IPdfProgressTracker.cjs +0 -1
  463. package/dist/mediaTypes/pdf/renderer/progress/IPdfProgressTracker.mjs +0 -1
  464. package/dist/mediaTypes/pdf/renderer/progress/PdfProgressTracker.cjs +1 -1
  465. package/dist/mediaTypes/pdf/renderer/progress/PdfProgressTracker.mjs +54 -68
  466. package/dist/mediaTypes/pdf/renderer/style/IPdfThemeApplier.cjs +0 -1
  467. package/dist/mediaTypes/pdf/renderer/style/IPdfThemeApplier.mjs +0 -1
  468. package/dist/mediaTypes/pdf/renderer/style/PdfThemeApplier.cjs +4 -4
  469. package/dist/mediaTypes/pdf/renderer/style/PdfThemeApplier.mjs +15 -15
  470. package/dist/mediaTypes/pdf/renderer/zoom/IPdfScalable.cjs +0 -1
  471. package/dist/mediaTypes/pdf/renderer/zoom/IPdfScalable.mjs +0 -1
  472. package/dist/mediaTypes/pdf/renderer/zoom/PdfScalable.cjs +1 -1
  473. package/dist/mediaTypes/pdf/renderer/zoom/PdfScalable.mjs +46 -41
  474. package/dist/mediaTypes/pdf/shared/geometry/index.cjs +1 -1
  475. package/dist/mediaTypes/pdf/shared/geometry/index.mjs +3 -13
  476. package/dist/mediaTypes/pdf/shared/geometry/selectionToFixedContentRange.cjs +1 -1
  477. package/dist/mediaTypes/pdf/shared/geometry/selectionToFixedContentRange.mjs +45 -45
  478. package/dist/mediaTypes/pdf/shared/geometry/textRects.cjs +1 -1
  479. package/dist/mediaTypes/pdf/shared/geometry/textRects.mjs +219 -263
  480. package/dist/mediaTypes/pdf/shared/range.cjs +1 -1
  481. package/dist/mediaTypes/pdf/shared/range.mjs +11 -14
  482. package/dist/mediaTypes/pdf/shared/selection/IPdfSelection.cjs +0 -1
  483. package/dist/mediaTypes/pdf/shared/selection/IPdfSelection.mjs +0 -1
  484. package/dist/mediaTypes/pdf/shared/selection/PdfSelection.cjs +2 -2
  485. package/dist/mediaTypes/pdf/shared/selection/PdfSelection.mjs +214 -236
  486. package/dist/mediaTypes/pdf/shared/selection/index.cjs +1 -1
  487. package/dist/mediaTypes/pdf/shared/selection/index.mjs +3 -6
  488. package/dist/mediaTypes/pdf/shared/text/bbox.cjs +1 -1
  489. package/dist/mediaTypes/pdf/shared/text/bbox.mjs +130 -142
  490. package/dist/mediaTypes/pdf/shared/text/pageText.cjs +5 -5
  491. package/dist/mediaTypes/pdf/shared/text/pageText.mjs +168 -185
  492. package/global.d.ts +17 -0
  493. package/package.json +19 -12
  494. package/types.d.ts +13 -0
  495. package/dist/kernal/logo-160x160.png.cjs +0 -1
  496. package/dist/kernal/logo-160x160.png.mjs +0 -4
  497. package/dist/mediaTypes/html/renderer/image/error-image.png.cjs +0 -1
  498. package/dist/mediaTypes/html/renderer/image/error-image.png.mjs +0 -4
  499. package/dist/mediaTypes/html/renderer/image/placeholder.png.cjs +0 -1
  500. package/dist/mediaTypes/html/renderer/image/placeholder.png.mjs +0 -4
  501. package/dist/mediaTypes/html/renderer/style/html-content.css.cjs +0 -316
@@ -1,179 +1,152 @@
1
- import { containValues as N } from "../../../../kernal/common/array.mjs";
2
- import { deepClone as d } from "../../../../kernal/common/object.mjs";
3
- import { isNullOrWhiteSpace as u } from "../../../../kernal/common/text.mjs";
4
- import { getElementIndex as P } from "../../../../kernal/html/finder.mjs";
5
- import { getElementByProgress as p } from "../../../../kernal/html/position.mjs";
6
- import { BrowserCapabilities as m } from "../../../../kernal/web/BrowserCapabilities.mjs";
7
- class W {
8
- constructor(o, n) {
9
- this.documentsProvider = o, this.options = n, this.flattingNavPoints = [], this.isInitNav = !1, this.navUrlWithAnchors = /* @__PURE__ */ new Map(), this.navPointsByDocUrl = /* @__PURE__ */ new Map(), this.navPointByFullUrl = /* @__PURE__ */ new Map(), this.isInitNavUrlWithAnchors = !1, this.toDocUrlKey = (t) => (t ?? "").toLowerCase(), this.clearNavUrlIndexes = () => {
10
- this.isInitNavUrlWithAnchors = !1, this.navUrlWithAnchors = /* @__PURE__ */ new Map(), this.navPointsByDocUrl = /* @__PURE__ */ new Map(), this.navPointByFullUrl = /* @__PURE__ */ new Map();
11
- }, this.getNavPointsForDocUrl = (t) => t ? this.navPointsByDocUrl.get(this.toDocUrlKey(t)) ?? [] : [], this.getAnchorsForDocUrl = (t) => {
12
- if (t)
13
- return this.navUrlWithAnchors.get(this.toDocUrlKey(t));
14
- }, this.findNavPointByFullUrl = (t, i) => {
15
- const s = this.navPointByFullUrl.get(t);
16
- return s || (i ?? this.flattingNavPoints).find((e) => e.url.indexOf(t) >= 0);
17
- }, this.cloneNavPoint = (t) => {
18
- if (t)
19
- return d(t);
20
- }, this.resolveNavPointByElements = (t, i, s, r) => {
21
- const e = this.getNavPointsForDocUrl(t);
22
- if (e.length == 0) return;
23
- if (!r && s.length == 0)
24
- return this.cloneNavPoint(e[e.length - 1]);
25
- const l = this.getAnchorsForDocUrl(t);
26
- if (!l || l.length == 1 && l[0] == "")
27
- return this.cloneNavPoint(this.findNavPointByFullUrl(t, e));
28
- if (s.length > 0) {
29
- const c = new Set(this.getElementIds(s));
30
- if (c.size > 0) {
31
- const v = l.find((f) => f != "" && c.has(f));
32
- if (v)
33
- return this.cloneNavPoint(this.findNavPointByFullUrl(t + "#" + v, e));
34
- }
35
- }
36
- const h = r ?? s[0];
37
- if (!h) return this.cloneNavPoint(e[e.length - 1]);
38
- const a = P(i, h, "all"), g = /* @__PURE__ */ new Map();
39
- for (let c = 0; c < l.length; c++) {
40
- const v = l[c];
41
- if (v == "" || g.has(v)) continue;
42
- const f = i.getElementById(v);
43
- f && g.set(v, P(i, f, "all"));
44
- }
45
- for (let c = l.length - 1; c >= 0; c--) {
46
- const v = l[c];
47
- if (v == "")
48
- return this.cloneNavPoint(this.findNavPointByFullUrl(t, e));
49
- const f = g.get(v);
50
- if (f !== void 0 && f <= a)
51
- return this.cloneNavPoint(this.findNavPointByFullUrl(t + "#" + v, e));
52
- }
53
- return this.cloneNavPoint(e[0]);
54
- }, this.findGroupNavPoint = (t) => {
55
- for (let i = t.length - 1; i >= 0; i--) {
56
- const s = this.getNavPointsForDocUrl(t[i]);
57
- if (s.length > 0)
58
- return s[0];
59
- }
60
- return null;
61
- }, this.fileParser = o.fileParser;
62
- }
63
- async getFlattingNavPoints() {
64
- return await this.getInternalFlattingNavPoints();
65
- }
66
- async getInternalFlattingNavPoints(o) {
67
- if (!this.isInitNav) {
68
- const n = await this.fileParser.getNav();
69
- this.initialNav(n), this.isInitNav = !0;
70
- }
71
- return o ? this.reversedFlattingNavPoints ? this.reversedFlattingNavPoints : this.flattingNavPoints && this.flattingNavPoints.length > 0 ? (this.reversedFlattingNavPoints = d(this.flattingNavPoints).reverse(), this.reversedFlattingNavPoints) : (this.reversedFlattingNavPoints = [], this.reversedFlattingNavPoints) : this.flattingNavPoints;
72
- }
73
- initialNav(o) {
74
- this.flattingNavPoints = [], this.reversedFlattingNavPoints = void 0, this.clearNavUrlIndexes(), N(o?.navPoints) && this.initialNavPoints(o.navPoints);
75
- }
76
- initialNavPoints(o) {
77
- o.length != 0 && o.forEach((n) => {
78
- (!u(n.url) || n.startPageNumber > 0) && this.flattingNavPoints.push(n), N(n.children) && this.initialNavPoints(n.children);
79
- });
80
- }
81
- async findPreviousDocNavPoint(o) {
82
- const n = await this.fileParser.getTextDocuments(), t = n.findIndex((i) => this.toDocUrlKey(i.url) == this.toDocUrlKey(o));
83
- if (!(t < 0))
84
- for (let i = t; i >= 0; i--) {
85
- const s = this.getNavPointsForDocUrl(n[i].url);
86
- if (s.length > 0)
87
- return this.cloneNavPoint(s[s.length - 1]);
88
- }
89
- }
90
- async getCurrentNavPoint() {
91
- if ((await this.getFlattingNavPoints()).length == 0) return;
92
- await this.initNavUrlWithAnchors(), await m.yieldToMain();
93
- const n = this.documentsProvider.getFirstVisibleDocument();
94
- if (!n)
95
- return;
96
- const t = n.url ?? "", i = this.getNavPointsForDocUrl(t);
97
- if (i.length > 0) {
98
- const r = n.getVisibleElements();
99
- if (r.length == 0)
100
- return this.cloneNavPoint(i[i.length - 1]);
101
- const e = this.getAnchorsForDocUrl(t);
102
- if (!e || e.length == 1 && e[0] == "")
103
- return this.cloneNavPoint(this.findNavPointByFullUrl(t, i));
104
- const l = n.getVisibleElements(!0), h = l.length > 0 ? l[0] : r[r.length - 1], a = n.getContentContainer()?.ownerDocument;
105
- return a ? this.resolveNavPointByElements(t, a, l, h) : void 0;
106
- }
107
- const s = this.documentsProvider.getDocuments();
108
- try {
109
- const r = s.indexOf(n), e = [], l = 25;
110
- let h = [];
111
- for (let a = 0; a <= r; a++)
112
- h.push(s[a].url), a > 0 && a % l == l - 1 && (e.push(h), h = []);
113
- h.length > 0 && e.push(h), e.reverse();
114
- for (let a = 0; a < e.length; a++) {
115
- const g = e[a], c = this.findGroupNavPoint(g);
116
- if (await m.yieldToMain(), c)
117
- return this.cloneNavPoint(c);
118
- }
119
- return;
120
- } catch {
121
- return;
122
- }
123
- }
124
- async getNavPoint(o, n, t) {
125
- if ((await this.getFlattingNavPoints()).length == 0) return;
126
- await this.initNavUrlWithAnchors();
127
- let s, r;
128
- const e = o;
129
- if (typeof n == "number") {
130
- const h = await this.fileParser.getTextDocument(o);
131
- if (!h || (s = await h.getFormattedDocument(), !s))
132
- return;
133
- r = p(s, n, t, {
134
- removeHtmlWhitespace: this.options.removeHtmlWhitespace,
135
- whitespaceRegex: this.options.whitespaceRegex,
136
- nonWhiteSpaceSymbolTagNames: this.options.nonWhiteSpaceSymbolTagNames
137
- }).element;
138
- } else
139
- s = n.ownerDocument, r = n;
140
- const l = this.getNavPointsForDocUrl(e);
141
- return l.length > 0 ? r ? this.resolveNavPointByElements(e, s, [r], r) : this.cloneNavPoint(l[l.length - 1]) : await this.findPreviousDocNavPoint(e);
142
- }
143
- async initNavUrlWithAnchors() {
144
- if (this.isInitNavUrlWithAnchors) return;
145
- const o = await this.getFlattingNavPoints();
146
- this.navUrlWithAnchors = /* @__PURE__ */ new Map(), this.navPointsByDocUrl = /* @__PURE__ */ new Map(), this.navPointByFullUrl = /* @__PURE__ */ new Map(), o.forEach((n) => {
147
- const t = n.url;
148
- if (u(t)) return;
149
- this.navPointByFullUrl.set(t, n);
150
- const i = t.lastIndexOf("#"), s = i > 0 ? t.substring(0, i) : t, r = i > 0 ? t.substring(i + 1) : "", e = this.toDocUrlKey(s);
151
- this.navUrlWithAnchors.has(e) ? this.navUrlWithAnchors.get(e).push(r) : this.navUrlWithAnchors.set(e, [r]), this.navPointsByDocUrl.has(e) ? this.navPointsByDocUrl.get(e).push(n) : this.navPointsByDocUrl.set(e, [n]);
152
- }), this.isInitNavUrlWithAnchors = !0;
153
- }
154
- /**
155
- * Collect ids related to the given elements
156
- * @param elements
157
- * @returns
158
- */
159
- getElementIds(o) {
160
- const n = [];
161
- for (let t = 0; t < o.length; t++) {
162
- const i = o[t];
163
- u(i.id) || n.push(i.id), i.parentElement && i.parentElement.children.length == 1 && !u(i.parentElement.id) && n.push(i.parentElement.id), this.getChildrenIds(i.children, n);
164
- }
165
- return n;
166
- }
167
- getChildrenIds(o, n) {
168
- for (let t = 0; t < o.length; t++) {
169
- const i = o[t];
170
- u(i.id) || n.push(i.id), i.children.length > 0 && this.getChildrenIds(i.children, n);
171
- }
172
- }
173
- async dispose() {
174
- this.docUrls && this.docUrls.splice(0), this.flattingNavPoints && this.flattingNavPoints.splice(0), this.reversedFlattingNavPoints && this.reversedFlattingNavPoints.splice(0), this.clearNavUrlIndexes();
175
- }
176
- }
177
- export {
178
- W as HtmlNavPointProvider
1
+ import { BrowserCapabilities as e } from "../../../../kernal/web/BrowserCapabilities.mjs";
2
+ import { deepClone as t } from "../../../../kernal/common/object.mjs";
3
+ import { isNullOrWhiteSpace as n } from "../../../../kernal/common/text.mjs";
4
+ import { getElementIndex as r } from "../../../../kernal/html/finder.mjs";
5
+ import { getElementByProgress as i } from "../../../../kernal/html/position.mjs";
6
+ import { containValues as a } from "../../../../kernal/common/array.mjs";
7
+ //#region mediaTypes/html/renderer/navigator/HtmlNavPointProvider.ts
8
+ var o = class {
9
+ constructor(e, n) {
10
+ this.documentsProvider = e, this.options = n, this.flattingNavPoints = [], this.isInitNav = !1, this.navUrlWithAnchors = /* @__PURE__ */ new Map(), this.navPointsByDocUrl = /* @__PURE__ */ new Map(), this.navPointByFullUrl = /* @__PURE__ */ new Map(), this.isInitNavUrlWithAnchors = !1, this.toDocUrlKey = (e) => (e ?? "").toLowerCase(), this.clearNavUrlIndexes = () => {
11
+ this.isInitNavUrlWithAnchors = !1, this.navUrlWithAnchors = /* @__PURE__ */ new Map(), this.navPointsByDocUrl = /* @__PURE__ */ new Map(), this.navPointByFullUrl = /* @__PURE__ */ new Map();
12
+ }, this.getNavPointsForDocUrl = (e) => e ? this.navPointsByDocUrl.get(this.toDocUrlKey(e)) ?? [] : [], this.getAnchorsForDocUrl = (e) => {
13
+ if (e) return this.navUrlWithAnchors.get(this.toDocUrlKey(e));
14
+ }, this.findNavPointByFullUrl = (e, t) => this.navPointByFullUrl.get(e) || (t ?? this.flattingNavPoints).find((t) => t.url.indexOf(e) >= 0), this.cloneNavPoint = (e) => {
15
+ if (e) return t(e);
16
+ }, this.resolveNavPointByElements = (e, t, n, i) => {
17
+ let a = this.getNavPointsForDocUrl(e);
18
+ if (a.length == 0) return;
19
+ if (!i && n.length == 0) return this.cloneNavPoint(a[a.length - 1]);
20
+ let o = this.getAnchorsForDocUrl(e);
21
+ if (!o || o.length == 1 && o[0] == "") return this.cloneNavPoint(this.findNavPointByFullUrl(e, a));
22
+ if (n.length > 0) {
23
+ let t = new Set(this.getElementIds(n));
24
+ if (t.size > 0) {
25
+ let n = o.find((e) => e != "" && t.has(e));
26
+ if (n) return this.cloneNavPoint(this.findNavPointByFullUrl(e + "#" + n, a));
27
+ }
28
+ }
29
+ let s = i ?? n[0];
30
+ if (!s) return this.cloneNavPoint(a[a.length - 1]);
31
+ let c = r(t, s, "all"), l = /* @__PURE__ */ new Map();
32
+ for (let e = 0; e < o.length; e++) {
33
+ let n = o[e];
34
+ if (n == "" || l.has(n)) continue;
35
+ let i = t.getElementById(n);
36
+ i && l.set(n, r(t, i, "all"));
37
+ }
38
+ for (let t = o.length - 1; t >= 0; t--) {
39
+ let n = o[t];
40
+ if (n == "") return this.cloneNavPoint(this.findNavPointByFullUrl(e, a));
41
+ let r = l.get(n);
42
+ if (r !== void 0 && r <= c) return this.cloneNavPoint(this.findNavPointByFullUrl(e + "#" + n, a));
43
+ }
44
+ return this.cloneNavPoint(a[0]);
45
+ }, this.findGroupNavPoint = (e) => {
46
+ for (let t = e.length - 1; t >= 0; t--) {
47
+ let n = this.getNavPointsForDocUrl(e[t]);
48
+ if (n.length > 0) return n[0];
49
+ }
50
+ return null;
51
+ }, this.fileParser = e.fileParser;
52
+ }
53
+ async getFlattingNavPoints() {
54
+ return await this.getInternalFlattingNavPoints();
55
+ }
56
+ async getInternalFlattingNavPoints(e) {
57
+ if (!this.isInitNav) {
58
+ let e = await this.fileParser.getNav();
59
+ this.initialNav(e), this.isInitNav = !0;
60
+ }
61
+ return e ? this.reversedFlattingNavPoints ? this.reversedFlattingNavPoints : this.flattingNavPoints && this.flattingNavPoints.length > 0 ? (this.reversedFlattingNavPoints = t(this.flattingNavPoints).reverse(), this.reversedFlattingNavPoints) : (this.reversedFlattingNavPoints = [], this.reversedFlattingNavPoints) : this.flattingNavPoints;
62
+ }
63
+ initialNav(e) {
64
+ this.flattingNavPoints = [], this.reversedFlattingNavPoints = void 0, this.clearNavUrlIndexes(), a(e?.navPoints) && this.initialNavPoints(e.navPoints);
65
+ }
66
+ initialNavPoints(e) {
67
+ e.length != 0 && e.forEach((e) => {
68
+ (!n(e.url) || e.startPageNumber > 0) && this.flattingNavPoints.push(e), a(e.children) && this.initialNavPoints(e.children);
69
+ });
70
+ }
71
+ async findPreviousDocNavPoint(e) {
72
+ let t = await this.fileParser.getTextDocuments(), n = t.findIndex((t) => this.toDocUrlKey(t.url) == this.toDocUrlKey(e));
73
+ if (!(n < 0)) for (let e = n; e >= 0; e--) {
74
+ let n = this.getNavPointsForDocUrl(t[e].url);
75
+ if (n.length > 0) return this.cloneNavPoint(n[n.length - 1]);
76
+ }
77
+ }
78
+ async getCurrentNavPoint() {
79
+ if ((await this.getFlattingNavPoints()).length == 0) return;
80
+ await this.initNavUrlWithAnchors(), await e.yieldToMain();
81
+ let t = this.documentsProvider.getFirstVisibleDocument();
82
+ if (!t) return;
83
+ let n = t.url ?? "", r = this.getNavPointsForDocUrl(n);
84
+ if (r.length > 0) {
85
+ let e = t.getVisibleElements();
86
+ if (e.length == 0) return this.cloneNavPoint(r[r.length - 1]);
87
+ let i = this.getAnchorsForDocUrl(n);
88
+ if (!i || i.length == 1 && i[0] == "") return this.cloneNavPoint(this.findNavPointByFullUrl(n, r));
89
+ let a = t.getVisibleElements(!0), o = a.length > 0 ? a[0] : e[e.length - 1], s = t.getContentContainer()?.ownerDocument;
90
+ return s ? this.resolveNavPointByElements(n, s, a, o) : void 0;
91
+ }
92
+ let i = this.documentsProvider.getDocuments();
93
+ try {
94
+ let n = i.indexOf(t), r = [], a = [];
95
+ for (let e = 0; e <= n; e++) a.push(i[e].url), e > 0 && e % 25 == 24 && (r.push(a), a = []);
96
+ a.length > 0 && r.push(a), r.reverse();
97
+ for (let t = 0; t < r.length; t++) {
98
+ let n = r[t], i = this.findGroupNavPoint(n);
99
+ if (await e.yieldToMain(), i) return this.cloneNavPoint(i);
100
+ }
101
+ return;
102
+ } catch {
103
+ return;
104
+ }
105
+ }
106
+ async getNavPoint(e, t, n) {
107
+ if ((await this.getFlattingNavPoints()).length == 0) return;
108
+ await this.initNavUrlWithAnchors();
109
+ let r, a, o = e;
110
+ if (typeof t == "number") {
111
+ let o = await this.fileParser.getTextDocument(e);
112
+ if (!o || (r = await o.getFormattedDocument(), !r)) return;
113
+ a = i(r, t, n, {
114
+ removeHtmlWhitespace: this.options.removeHtmlWhitespace,
115
+ whitespaceRegex: this.options.whitespaceRegex,
116
+ nonWhiteSpaceSymbolTagNames: this.options.nonWhiteSpaceSymbolTagNames
117
+ }).element;
118
+ } else r = t.ownerDocument, a = t;
119
+ let s = this.getNavPointsForDocUrl(o);
120
+ return s.length > 0 ? a ? this.resolveNavPointByElements(o, r, [a], a) : this.cloneNavPoint(s[s.length - 1]) : await this.findPreviousDocNavPoint(o);
121
+ }
122
+ async initNavUrlWithAnchors() {
123
+ if (this.isInitNavUrlWithAnchors) return;
124
+ let e = await this.getFlattingNavPoints();
125
+ this.navUrlWithAnchors = /* @__PURE__ */ new Map(), this.navPointsByDocUrl = /* @__PURE__ */ new Map(), this.navPointByFullUrl = /* @__PURE__ */ new Map(), e.forEach((e) => {
126
+ let t = e.url;
127
+ if (n(t)) return;
128
+ this.navPointByFullUrl.set(t, e);
129
+ let r = t.lastIndexOf("#"), i = r > 0 ? t.substring(0, r) : t, a = r > 0 ? t.substring(r + 1) : "", o = this.toDocUrlKey(i);
130
+ this.navUrlWithAnchors.has(o) ? this.navUrlWithAnchors.get(o).push(a) : this.navUrlWithAnchors.set(o, [a]), this.navPointsByDocUrl.has(o) ? this.navPointsByDocUrl.get(o).push(e) : this.navPointsByDocUrl.set(o, [e]);
131
+ }), this.isInitNavUrlWithAnchors = !0;
132
+ }
133
+ getElementIds(e) {
134
+ let t = [];
135
+ for (let r = 0; r < e.length; r++) {
136
+ let i = e[r];
137
+ n(i.id) || t.push(i.id), i.parentElement && i.parentElement.children.length == 1 && !n(i.parentElement.id) && t.push(i.parentElement.id), this.getChildrenIds(i.children, t);
138
+ }
139
+ return t;
140
+ }
141
+ getChildrenIds(e, t) {
142
+ for (let r = 0; r < e.length; r++) {
143
+ let i = e[r];
144
+ n(i.id) || t.push(i.id), i.children.length > 0 && this.getChildrenIds(i.children, t);
145
+ }
146
+ }
147
+ async dispose() {
148
+ this.docUrls && this.docUrls.splice(0), this.flattingNavPoints && this.flattingNavPoints.splice(0), this.reversedFlattingNavPoints && this.reversedFlattingNavPoints.splice(0), this.clearNavUrlIndexes();
149
+ }
179
150
  };
151
+ //#endregion
152
+ export { o as HtmlNavPointProvider };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("../../../../kernal/navigator/IPagingNavigator.cjs"),l=require("../../../../kernal/EventNames.cjs"),u=require("../../../../kernal/progress/Progress.cjs");class d{constructor(i,t,r){this.documentsProvider=i,this.htmlCoreNavigator=t,this.options=r,this.notify=async(n,a,o)=>{const e=new h.PageChangeOptions;if(e.doc=n,e.pageNumber=a,e.extra=o,this.state){const c=this.documentsProvider.getDocuments(),s=c.indexOf(this.state.doc),g=c.indexOf(n);s==g?a>this.state.pageNumber?e.direction="next":e.direction="previous":g>s?e.direction="next":e.direction="previous",this.owner.events.emit(l.EventNames.PageChange,e),this.state={doc:n,pageNumber:a}}else this.state={doc:n,pageNumber:a},e.direction="next",this.owner.events.emit(l.EventNames.PageChange,e)},this.owner=i.owner,this.locale=this.owner.locale,this.logger=this.owner.loggerFactory.getLogger(this.constructor.name)}async dispose(){this.state=null}async gotoPage(i,t,r){return await this.internalGotoPage(i,t,null,r)}async internalGotoPage(i,t,r,n){if(this.options.flipMode=="scroll")return this.logger.warn(this.locale?.getText("unsupportTurnPageWhenScrolling","Page turning is not supported in scroll mode")),!1;await i.load();const a=await i.getNumberOfPages();let o=new u.FileLocation(i.url,a,"page");if(o.current=t,o.direction=r,t<=0){const e=this.documentsProvider.getDocuments(),c=e.indexOf(i);if(c==0)return this.owner.notifier.info(this.locale.getText("navigotor_alreadyisfirstpage","Already at the first page")),!1;const s=e[c-1];await s.load();const g=await s.getNumberOfPages();return o=new u.FileLocation(s.url,g,"page"),o.current=g,o.direction="previous",await this.htmlCoreNavigator.goto(o),await this.notify(s,g,n),!0}if(t>a){const e=this.documentsProvider.getDocuments(),c=e.indexOf(i);if(c==e.length-1)return this.owner.notifier.info(this.locale.getText("navigotor_alreadyislastpage","Already at the last page")),!1;const s=e[c+1];await s.load();const g=await s.getNumberOfPages();return o=new u.FileLocation(s.url,g,"page"),o.current=1,o.direction="next",await this.htmlCoreNavigator.goto(o),await this.notify(s,1,n),!0}return await this.htmlCoreNavigator.goto(o),await this.notify(i,t,n),!0}async gotoNextPage(i){if(this.options.flipMode=="scroll")return!1;let t=this.documentsProvider.getFirstVisibleDocument();if(!t){const a=this.documentsProvider.getDocuments();t=a[a.length-1]}await t.load();const r=this.documentsProvider.getCurrentPageNumber(t);this.state={doc:t,pageNumber:r};const n=r+1;return await this.internalGotoPage(t,n,"next",i)}async gotoPreviousPage(i){if(this.options.flipMode=="scroll")return!1;let t=this.documentsProvider.getLastVisibleDocument();t||(t=this.documentsProvider.getDocuments()[0]),await t.load();const r=this.documentsProvider.getCurrentPageNumber(t);this.state={doc:t,pageNumber:r};const n=r-1;return await this.internalGotoPage(t,n,"previous",i)}}exports.HtmlPagingNavigator=d;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/EventNames.cjs"),t=require("../../../../kernal/progress/Progress.cjs"),n=require("../../../../kernal/navigator/IPagingNavigator.cjs");var r=class{constructor(t,r,i){this.documentsProvider=t,this.htmlCoreNavigator=r,this.options=i,this.notify=async(t,r,i)=>{let a=new n.PageChangeOptions;if(a.doc=t,a.pageNumber=r,a.extra=i,this.state){let n=this.documentsProvider.getDocuments(),i=n.indexOf(this.state.doc),o=n.indexOf(t);a.direction=i==o?r>this.state.pageNumber?`next`:`previous`:o>i?`next`:`previous`,this.owner.events.emit(e.EventNames.PageChange,a),this.state={doc:t,pageNumber:r}}else this.state={doc:t,pageNumber:r},a.direction=`next`,this.owner.events.emit(e.EventNames.PageChange,a)},this.owner=t.owner,this.locale=this.owner.locale,this.logger=this.owner.loggerFactory.getLogger(this.constructor.name)}async dispose(){this.state=null}async gotoPage(e,t,n){return await this.internalGotoPage(e,t,null,n)}async internalGotoPage(e,n,r,i){if(this.options.flipMode==`scroll`)return this.logger.warn(this.locale?.getText(`unsupportTurnPageWhenScrolling`,`Page turning is not supported in scroll mode`)),!1;await e.load();let a=await e.getNumberOfPages(),o=new t.FileLocation(e.url,a,`page`);if(o.current=n,o.direction=r,n<=0){let n=this.documentsProvider.getDocuments(),r=n.indexOf(e);if(r==0)return this.owner.notifier.info(this.locale.getText(`navigotor_alreadyisfirstpage`,`Already at the first page`)),!1;let a=n[r-1];await a.load();let s=await a.getNumberOfPages();return o=new t.FileLocation(a.url,s,`page`),o.current=s,o.direction=`previous`,await this.htmlCoreNavigator.goto(o),await this.notify(a,s,i),!0}if(n>a){let n=this.documentsProvider.getDocuments(),r=n.indexOf(e);if(r==n.length-1)return this.owner.notifier.info(this.locale.getText(`navigotor_alreadyislastpage`,`Already at the last page`)),!1;let a=n[r+1];await a.load();let s=await a.getNumberOfPages();return o=new t.FileLocation(a.url,s,`page`),o.current=1,o.direction=`next`,await this.htmlCoreNavigator.goto(o),await this.notify(a,1,i),!0}return await this.htmlCoreNavigator.goto(o),await this.notify(e,n,i),!0}async gotoNextPage(e){if(this.options.flipMode==`scroll`)return!1;let t=this.documentsProvider.getFirstVisibleDocument();if(!t){let e=this.documentsProvider.getDocuments();t=e[e.length-1]}await t.load();let n=this.documentsProvider.getCurrentPageNumber(t);this.state={doc:t,pageNumber:n};let r=n+1;return await this.internalGotoPage(t,r,`next`,e)}async gotoPreviousPage(e){if(this.options.flipMode==`scroll`)return!1;let t=this.documentsProvider.getLastVisibleDocument();t||=this.documentsProvider.getDocuments()[0],await t.load();let n=this.documentsProvider.getCurrentPageNumber(t);this.state={doc:t,pageNumber:n};let r=n-1;return await this.internalGotoPage(t,r,`previous`,e)}};exports.HtmlPagingNavigator=r;
@@ -1,86 +1,79 @@
1
- import { PageChangeOptions as h } from "../../../../kernal/navigator/IPagingNavigator.mjs";
2
- import { EventNames as l } from "../../../../kernal/EventNames.mjs";
3
- import { FileLocation as g } from "../../../../kernal/progress/Progress.mjs";
4
- class p {
5
- constructor(o, t, r) {
6
- this.documentsProvider = o, this.htmlCoreNavigator = t, this.options = r, this.notify = async (s, a, i) => {
7
- const e = new h();
8
- if (e.doc = s, e.pageNumber = a, e.extra = i, this.state) {
9
- const c = this.documentsProvider.getDocuments(), n = c.indexOf(this.state.doc), u = c.indexOf(s);
10
- n == u ? a > this.state.pageNumber ? e.direction = "next" : e.direction = "previous" : u > n ? e.direction = "next" : e.direction = "previous", this.owner.events.emit(l.PageChange, e), this.state = {
11
- doc: s,
12
- pageNumber: a
13
- };
14
- } else
15
- this.state = {
16
- doc: s,
17
- pageNumber: a
18
- }, e.direction = "next", this.owner.events.emit(l.PageChange, e);
19
- }, this.owner = o.owner, this.locale = this.owner.locale, this.logger = this.owner.loggerFactory.getLogger(this.constructor.name);
20
- }
21
- async dispose() {
22
- this.state = null;
23
- }
24
- async gotoPage(o, t, r) {
25
- return await this.internalGotoPage(o, t, null, r);
26
- }
27
- async internalGotoPage(o, t, r, s) {
28
- if (this.options.flipMode == "scroll")
29
- return this.logger.warn(this.locale?.getText("unsupportTurnPageWhenScrolling", "Page turning is not supported in scroll mode")), !1;
30
- await o.load();
31
- const a = await o.getNumberOfPages();
32
- let i = new g(o.url, a, "page");
33
- if (i.current = t, i.direction = r, t <= 0) {
34
- const e = this.documentsProvider.getDocuments(), c = e.indexOf(o);
35
- if (c == 0)
36
- return this.owner.notifier.info(this.locale.getText("navigotor_alreadyisfirstpage", "Already at the first page")), !1;
37
- const n = e[c - 1];
38
- await n.load();
39
- const u = await n.getNumberOfPages();
40
- return i = new g(n.url, u, "page"), i.current = u, i.direction = "previous", await this.htmlCoreNavigator.goto(i), await this.notify(n, u, s), !0;
41
- }
42
- if (t > a) {
43
- const e = this.documentsProvider.getDocuments(), c = e.indexOf(o);
44
- if (c == e.length - 1)
45
- return this.owner.notifier.info(this.locale.getText("navigotor_alreadyislastpage", "Already at the last page")), !1;
46
- const n = e[c + 1];
47
- await n.load();
48
- const u = await n.getNumberOfPages();
49
- return i = new g(n.url, u, "page"), i.current = 1, i.direction = "next", await this.htmlCoreNavigator.goto(i), await this.notify(n, 1, s), !0;
50
- }
51
- return await this.htmlCoreNavigator.goto(i), await this.notify(o, t, s), !0;
52
- }
53
- async gotoNextPage(o) {
54
- if (this.options.flipMode == "scroll")
55
- return !1;
56
- let t = this.documentsProvider.getFirstVisibleDocument();
57
- if (!t) {
58
- const a = this.documentsProvider.getDocuments();
59
- t = a[a.length - 1];
60
- }
61
- await t.load();
62
- const r = this.documentsProvider.getCurrentPageNumber(t);
63
- this.state = {
64
- doc: t,
65
- pageNumber: r
66
- };
67
- const s = r + 1;
68
- return await this.internalGotoPage(t, s, "next", o);
69
- }
70
- async gotoPreviousPage(o) {
71
- if (this.options.flipMode == "scroll")
72
- return !1;
73
- let t = this.documentsProvider.getLastVisibleDocument();
74
- t || (t = this.documentsProvider.getDocuments()[0]), await t.load();
75
- const r = this.documentsProvider.getCurrentPageNumber(t);
76
- this.state = {
77
- doc: t,
78
- pageNumber: r
79
- };
80
- const s = r - 1;
81
- return await this.internalGotoPage(t, s, "previous", o);
82
- }
83
- }
84
- export {
85
- p as HtmlPagingNavigator
1
+ import { EventNames as e } from "../../../../kernal/EventNames.mjs";
2
+ import { FileLocation as t } from "../../../../kernal/progress/Progress.mjs";
3
+ import { PageChangeOptions as n } from "../../../../kernal/navigator/IPagingNavigator.mjs";
4
+ //#region mediaTypes/html/renderer/navigator/HtmlPagingNavigator.ts
5
+ var r = class {
6
+ constructor(t, r, i) {
7
+ this.documentsProvider = t, this.htmlCoreNavigator = r, this.options = i, this.notify = async (t, r, i) => {
8
+ let a = new n();
9
+ if (a.doc = t, a.pageNumber = r, a.extra = i, this.state) {
10
+ let n = this.documentsProvider.getDocuments(), i = n.indexOf(this.state.doc), o = n.indexOf(t);
11
+ a.direction = i == o ? r > this.state.pageNumber ? "next" : "previous" : o > i ? "next" : "previous", this.owner.events.emit(e.PageChange, a), this.state = {
12
+ doc: t,
13
+ pageNumber: r
14
+ };
15
+ } else this.state = {
16
+ doc: t,
17
+ pageNumber: r
18
+ }, a.direction = "next", this.owner.events.emit(e.PageChange, a);
19
+ }, this.owner = t.owner, this.locale = this.owner.locale, this.logger = this.owner.loggerFactory.getLogger(this.constructor.name);
20
+ }
21
+ async dispose() {
22
+ this.state = null;
23
+ }
24
+ async gotoPage(e, t, n) {
25
+ return await this.internalGotoPage(e, t, null, n);
26
+ }
27
+ async internalGotoPage(e, n, r, i) {
28
+ if (this.options.flipMode == "scroll") return this.logger.warn(this.locale?.getText("unsupportTurnPageWhenScrolling", "Page turning is not supported in scroll mode")), !1;
29
+ await e.load();
30
+ let a = await e.getNumberOfPages(), o = new t(e.url, a, "page");
31
+ if (o.current = n, o.direction = r, n <= 0) {
32
+ let n = this.documentsProvider.getDocuments(), r = n.indexOf(e);
33
+ if (r == 0) return this.owner.notifier.info(this.locale.getText("navigotor_alreadyisfirstpage", "Already at the first page")), !1;
34
+ let a = n[r - 1];
35
+ await a.load();
36
+ let s = await a.getNumberOfPages();
37
+ return o = new t(a.url, s, "page"), o.current = s, o.direction = "previous", await this.htmlCoreNavigator.goto(o), await this.notify(a, s, i), !0;
38
+ }
39
+ if (n > a) {
40
+ let n = this.documentsProvider.getDocuments(), r = n.indexOf(e);
41
+ if (r == n.length - 1) return this.owner.notifier.info(this.locale.getText("navigotor_alreadyislastpage", "Already at the last page")), !1;
42
+ let a = n[r + 1];
43
+ await a.load();
44
+ let s = await a.getNumberOfPages();
45
+ return o = new t(a.url, s, "page"), o.current = 1, o.direction = "next", await this.htmlCoreNavigator.goto(o), await this.notify(a, 1, i), !0;
46
+ }
47
+ return await this.htmlCoreNavigator.goto(o), await this.notify(e, n, i), !0;
48
+ }
49
+ async gotoNextPage(e) {
50
+ if (this.options.flipMode == "scroll") return !1;
51
+ let t = this.documentsProvider.getFirstVisibleDocument();
52
+ if (!t) {
53
+ let e = this.documentsProvider.getDocuments();
54
+ t = e[e.length - 1];
55
+ }
56
+ await t.load();
57
+ let n = this.documentsProvider.getCurrentPageNumber(t);
58
+ this.state = {
59
+ doc: t,
60
+ pageNumber: n
61
+ };
62
+ let r = n + 1;
63
+ return await this.internalGotoPage(t, r, "next", e);
64
+ }
65
+ async gotoPreviousPage(e) {
66
+ if (this.options.flipMode == "scroll") return !1;
67
+ let t = this.documentsProvider.getLastVisibleDocument();
68
+ t ||= this.documentsProvider.getDocuments()[0], await t.load();
69
+ let n = this.documentsProvider.getCurrentPageNumber(t);
70
+ this.state = {
71
+ doc: t,
72
+ pageNumber: n
73
+ };
74
+ let r = n - 1;
75
+ return await this.internalGotoPage(t, r, "previous", e);
76
+ }
86
77
  };
78
+ //#endregion
79
+ export { r as HtmlPagingNavigator };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("../../../../kernal/html/finder.cjs"),d=require("../../../../kernal/common/text.cjs"),p=require("../../../../kernal/common/url.cjs"),w=require("../document/HtmlSymbolCalclator.cjs"),y=require("./adjacent.cjs"),b=require("../../../../kernal/EventNames.cjs"),C=require("../../../../kernal/Debounce.cjs"),f=require("../../../../kernal/progress/Progress.cjs"),E=require("../../../../kernal/Constants.cjs");class D{constructor(t,e,r){this.owner=t,this.documentsProvider=e,this.options=r,this.updateProgress=async()=>{if(!this.owner.context.userChangedProgress)return;const n=await this.getProgress(!0);n&&(this.owner.context.progress=n,this.owner.context.currentLocation=n.location,!(this.owner.onProgressChangeGuard&&!this.owner.onProgressChangeGuard(n.current))&&this.owner.events.emit(b.EventNames.ProgressChange,n))},this.delayUpdateProgress=C.throttle(this.updateProgress,300,!0),this.logger=t.loggerFactory.getLogger(this.constructor.name)}notifyProgressChange(){this.delayUpdateProgress()}async calcProgress(t){try{const e=await this.getTotalPercentage(t);if(e>=0){const r=new f.Progress(1,e);return r.location=t,r}return null}catch(e){return this.logger.error(e),null}}async getTotalPercentage(t){try{if(!t?.url)return null;let e;const r=p.getUrlFragment(t.url),n=r.urlWithoutAnchor,i=r.anchor;if(t.tagName)e=await this.getPassedPercentage(n,{tagName:t.tagName,tagIndex:t.tagIndex},!0);else if(t.current>=0){const a=t.current;e=await this.getPassedPercentage(n,a,!0)}else{const s=this.documentsProvider.getDocument(n).getContentContainer().ownerDocument;let o=h.getDocumentBody(s);if(!d.isNullOrWhiteSpace(i)){const c=s.getElementById(i);c!=null&&(o=c)}e=await this.getPassedPercentage(n,o,!0)}return e}catch(e){return this.logger.error(e),null}}async getProgress(t){if(!t&&this.owner.context.progress)return this.owner.context.progress;const e=this.documentsProvider.getFirstVisibleDocument(!0);if(!e)return null;const r=e.getVisibleElements(!0);if(r.length===0)return null;let n=r[0];const i=n.getBoundingClientRect();if(i.width===0&&i.height===0)return null;const a=e.getContentContainer()?.ownerDocument?.fullscreenElement;a&&(n=a);const s=this.createElementLocation(e,n);if(s.offsetTop=this.calcVisibleElementOffsetTop(n,e,!!a),s.precise=!0,s.ignoreOverlayHeader=!0,s.scrollBehavior="smooth",s.text=y.getAdjacentText(this.documentsProvider,this.options.htmlBlockTags,e.extension,n),this.options.flipMode==="page"){const m=this.documentsProvider.getCurrentPageNumber(e),P=await e.getNumberOfPages();s.unit="page",s.current=m,s.total=P}let o;const c=this.documentsProvider.getLastVisibleDocument(!0),g=c?.getVisibleElements()??[],l=g[g.length-1];c&&l?o=await this.getPassedPercentage(c.url,l,!0):o=await this.getTotalPercentage(s);const u=new f.Progress(1,o);return u.location=s,u}createElementLocation(t,e){const r=new f.FileLocation(t.url,1,"ratio");return r.tagName=e.tagName,r.tagIndex=h.getElementIndex(e.ownerDocument,e),r}calcVisibleElementOffsetTop(t,e,r){if(r)return 50;const n=t.getBoundingClientRect(),a=e.getContentContainer()?.ownerDocument?.defaultView?.frameElement?.getBoundingClientRect().top??0;let s=this.options.flipMode==="scroll"?n.top+a:n.top;const o=this.documentsProvider.getScrollElement();return o&&(s-=o.getBoundingClientRect().top),s||void 0}async getPassedPercentage(t,e,r){const n=await this.documentsProvider.fileParser.getSpineFiles(),i=!d.isNullOrWhiteSpace(t)&&!isNaN(t)?parseInt(t):n.findIndex(l=>l.url==t),a=n[i],s=this.documentsProvider.getDocument(t),o=i==n.length-1,c=await this.getDocumentPercentage(s,e);if(o&&typeof e!="number"&&r){let l=s.getContentContainer();l||(l=h.getDocumentBody((await s.getVirtualContentContainer())?.ownerDocument));const u=l?.querySelector("["+E.LastElementAttributeName+"='true']"),m=s.getVisibleElements(!0);if(u&&m.includes(u)||c>=1)return 1}const g=c*a.ratio;return o&&c>=1?1:a.startProgress+g}async getDocumentPercentage(t,e){if(typeof e=="number"){if(e<1)return e;if(this.options.flipMode==="scroll")return e<=1?e:0;await t.load();const n=await t.getNumberOfPages();return n<=0?0:Math.min(Math.max(e,0),n)/n}const r=new w.HtmlSymbolCalclator(t,this.options);try{return await r.getProgressByElement(e,this.options.symbolType)}finally{await r.dispose()}}async getPercentage(t,e){if(d.isNullOrWhiteSpace(t))throw new Error(this.owner.locale?.getText("missingLocationUrl","missing location url"));return await this.getPassedPercentage(t,e)}async dispose(){}}exports.HtmlProgressTracker=D;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/EventNames.cjs"),t=require("../../../../kernal/common/text.cjs"),n=require("../../../../kernal/common/url.cjs"),r=require("../../../../kernal/progress/Progress.cjs"),i=require("../../../../kernal/Constants.cjs"),a=require("../../../../kernal/html/finder.cjs"),o=require("../../../../kernal/Debounce.cjs"),s=require("../document/HtmlSymbolCalclator.cjs"),c=require("./adjacent.cjs");var l=class{constructor(t,n,r){this.owner=t,this.documentsProvider=n,this.options=r,this.updateProgress=async()=>{if(!this.owner.context.userChangedProgress)return;let t=await this.getProgress(!0);t&&(this.owner.context.progress=t,this.owner.context.currentLocation=t.location,!(this.owner.onProgressChangeGuard&&!this.owner.onProgressChangeGuard(t.current))&&this.owner.events.emit(e.EventNames.ProgressChange,t))},this.delayUpdateProgress=o.throttle(this.updateProgress,300,!0),this.logger=t.loggerFactory.getLogger(this.constructor.name)}notifyProgressChange(){this.delayUpdateProgress()}async calcProgress(e){try{let t=await this.getTotalPercentage(e);if(t>=0){let n=new r.Progress(1,t);return n.location=e,n}return null}catch(e){return this.logger.error(e),null}}async getTotalPercentage(e){try{if(!e?.url)return null;let r,i=n.getUrlFragment(e.url),o=i.urlWithoutAnchor,s=i.anchor;if(e.tagName)r=await this.getPassedPercentage(o,{tagName:e.tagName,tagIndex:e.tagIndex},!0);else if(e.current>=0){let t=e.current;r=await this.getPassedPercentage(o,t,!0)}else{let e=this.documentsProvider.getDocument(o).getContentContainer().ownerDocument,n=a.getDocumentBody(e);if(!t.isNullOrWhiteSpace(s)){let t=e.getElementById(s);t!=null&&(n=t)}r=await this.getPassedPercentage(o,n,!0)}return r}catch(e){return this.logger.error(e),null}}async getProgress(e){if(!e&&this.owner.context.progress)return this.owner.context.progress;let t=this.documentsProvider.getFirstVisibleDocument(!0);if(!t)return null;let n=t.getVisibleElements(!0);if(n.length===0)return null;let i=n[0],a=i.getBoundingClientRect();if(a.width===0&&a.height===0)return null;let o=t.getContentContainer()?.ownerDocument?.fullscreenElement;o&&(i=o);let s=this.createElementLocation(t,i);if(s.offsetTop=this.calcVisibleElementOffsetTop(i,t,!!o),s.precise=!0,s.ignoreOverlayHeader=!0,s.scrollBehavior=`smooth`,s.text=c.getAdjacentText(this.documentsProvider,this.options.htmlBlockTags,t.extension,i),this.options.flipMode===`page`){let e=this.documentsProvider.getCurrentPageNumber(t),n=await t.getNumberOfPages();s.unit=`page`,s.current=e,s.total=n}let l,u=this.documentsProvider.getLastVisibleDocument(!0),d=u?.getVisibleElements()??[],f=d[d.length-1];l=u&&f?await this.getPassedPercentage(u.url,f,!0):await this.getTotalPercentage(s);let p=new r.Progress(1,l);return p.location=s,p}createElementLocation(e,t){let n=new r.FileLocation(e.url,1,`ratio`);return n.tagName=t.tagName,n.tagIndex=a.getElementIndex(t.ownerDocument,t),n}calcVisibleElementOffsetTop(e,t,n){if(n)return 50;let r=e.getBoundingClientRect(),i=(t.getContentContainer()?.ownerDocument?.defaultView?.frameElement)?.getBoundingClientRect().top??0,a=this.options.flipMode===`scroll`?r.top+i:r.top,o=this.documentsProvider.getScrollElement();return o&&(a-=o.getBoundingClientRect().top),a||void 0}async getPassedPercentage(e,n,r){let o=await this.documentsProvider.fileParser.getSpineFiles(),s=!t.isNullOrWhiteSpace(e)&&!isNaN(e)?parseInt(e):o.findIndex(t=>t.url==e),c=o[s],l=this.documentsProvider.getDocument(e),u=s==o.length-1,d=await this.getDocumentPercentage(l,n);if(u&&typeof n!=`number`&&r){let e=l.getContentContainer();e||=a.getDocumentBody((await l.getVirtualContentContainer())?.ownerDocument);let t=e?.querySelector(`[`+i.LastElementAttributeName+`='true']`),n=l.getVisibleElements(!0);if(t&&n.includes(t)||d>=1)return 1}let f=d*c.ratio;return u&&d>=1?1:c.startProgress+f}async getDocumentPercentage(e,t){if(typeof t==`number`){if(t<1)return t;if(this.options.flipMode===`scroll`)return t<=1?t:0;await e.load();let n=await e.getNumberOfPages();return n<=0?0:Math.min(Math.max(t,0),n)/n}let n=new s.HtmlSymbolCalclator(e,this.options);try{return await n.getProgressByElement(t,this.options.symbolType)}finally{await n.dispose()}}async getPercentage(e,n){if(t.isNullOrWhiteSpace(e))throw Error(this.owner.locale?.getText(`missingLocationUrl`,`missing location url`));return await this.getPassedPercentage(e,n)}async dispose(){}};exports.HtmlProgressTracker=l;