@foxycape/core 1.1.5 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.MD +0 -2
- package/README.zh.md +0 -2
- package/dist/ReaderHub.cjs +1 -0
- package/dist/ReaderHub.d.ts +20 -0
- package/dist/ReaderHub.mjs +59 -0
- package/dist/kernal/ContentRange.d.ts +1 -0
- package/dist/kernal/Context.cjs +1 -1
- package/dist/kernal/Context.mjs +13 -8
- package/dist/kernal/EventNames.cjs +1 -1
- package/dist/kernal/EventNames.d.ts +2 -0
- package/dist/kernal/EventNames.mjs +6 -0
- package/dist/kernal/FileLoader.cjs +1 -1
- package/dist/kernal/FileLoader.d.ts +3 -11
- package/dist/kernal/FileLoader.mjs +27 -22
- package/dist/kernal/JsonConvert.cjs +1 -1
- package/dist/kernal/JsonConvert.d.ts +0 -1
- package/dist/kernal/JsonConvert.mjs +17 -25
- package/dist/kernal/LifecycleHooks.d.ts +2 -1
- package/dist/kernal/Metadata.cjs +1 -1
- package/dist/kernal/Metadata.d.ts +34 -0
- package/dist/kernal/Metadata.mjs +47 -2
- package/dist/kernal/OpenOptions.d.ts +1 -0
- package/dist/kernal/Options.cjs +1 -1
- package/dist/kernal/Options.d.ts +2 -12
- package/dist/kernal/Options.mjs +1 -13
- package/dist/kernal/OptionsProvider.cjs +1 -1
- package/dist/kernal/OptionsProvider.d.ts +0 -2
- package/dist/kernal/OptionsProvider.mjs +6 -14
- package/dist/kernal/Reader.cjs +1 -1
- package/dist/kernal/Reader.d.ts +13 -12
- package/dist/kernal/Reader.mjs +119 -89
- package/dist/kernal/Theme.cjs +1 -1
- package/dist/kernal/Theme.mjs +1 -1
- package/dist/kernal/common/url.cjs +1 -1
- package/dist/kernal/common/url.d.ts +2 -0
- package/dist/kernal/common/url.mjs +2 -2
- package/dist/kernal/common/uuid.cjs +1 -1
- package/dist/kernal/common/uuid.mjs +7 -7
- package/dist/kernal/common/xxh64.cjs +1 -0
- package/dist/kernal/common/xxh64.d.ts +1 -0
- package/dist/kernal/common/xxh64.mjs +30 -0
- package/dist/kernal/crypto/MD5.cjs +1 -1
- package/dist/kernal/crypto/MD5.d.ts +0 -1
- package/dist/kernal/crypto/MD5.mjs +8 -9
- package/dist/kernal/crypto/WebCrypto.cjs +1 -1
- package/dist/kernal/crypto/WebCrypto.mjs +38 -35
- package/dist/kernal/deepClone/buffer.cjs +1 -1
- package/dist/kernal/deepClone/buffer.d.ts +8 -2
- package/dist/kernal/deepClone/buffer.mjs +1 -5
- package/dist/kernal/device/IDevice.d.ts +8 -2
- package/dist/kernal/device/WebBrowser.cjs +1 -1
- package/dist/kernal/device/WebBrowser.d.ts +12 -6
- package/dist/kernal/device/WebBrowser.mjs +70 -6
- package/dist/kernal/hostViewport.cjs +1 -0
- package/dist/kernal/hostViewport.d.ts +16 -0
- package/dist/kernal/hostViewport.mjs +44 -0
- package/dist/kernal/html/events.cjs +1 -1
- package/dist/kernal/html/events.mjs +35 -34
- package/dist/kernal/html/finder.cjs +1 -1
- package/dist/kernal/html/finder.d.ts +6 -2
- package/dist/kernal/html/finder.mjs +62 -51
- package/dist/kernal/html/geometry.cjs +1 -1
- package/dist/kernal/html/geometry.d.ts +26 -1
- package/dist/kernal/html/geometry.mjs +182 -121
- package/dist/kernal/html/manipulator.cjs +1 -1
- package/dist/kernal/html/manipulator.d.ts +1 -3
- package/dist/kernal/html/manipulator.mjs +34 -59
- package/dist/kernal/html/parser.cjs +1 -1
- package/dist/kernal/html/parser.mjs +3 -3
- package/dist/kernal/html/position.cjs +1 -1
- package/dist/kernal/html/position.d.ts +0 -18
- package/dist/kernal/html/position.mjs +2 -141
- package/dist/kernal/html/realm.cjs +1 -0
- package/dist/kernal/html/realm.d.ts +7 -0
- package/dist/kernal/html/realm.mjs +8 -0
- package/dist/kernal/html/selection.cjs +1 -1
- package/dist/kernal/html/selection.d.ts +1 -0
- package/dist/kernal/html/selection.mjs +33 -12
- package/dist/kernal/html/text.cjs +1 -1
- package/dist/kernal/html/text.d.ts +4 -3
- package/dist/kernal/html/text.mjs +24 -21
- package/dist/kernal/html/translationAnchor.cjs +1 -0
- package/dist/kernal/html/translationAnchor.d.ts +3 -0
- package/dist/kernal/html/translationAnchor.mjs +71 -0
- package/dist/kernal/i18n/DefaultLocale.cjs +1 -1
- package/dist/kernal/i18n/DefaultLocale.d.ts +2 -2
- package/dist/kernal/i18n/DefaultLocale.mjs +7 -12
- package/dist/kernal/i18n/ILocale.d.ts +0 -1
- package/dist/kernal/i18n/applyNamed.cjs +1 -0
- package/dist/kernal/i18n/applyNamed.d.ts +1 -0
- package/dist/kernal/i18n/applyNamed.mjs +9 -0
- package/dist/kernal/i18n/textDirection.cjs +1 -0
- package/dist/kernal/i18n/textDirection.d.ts +6 -0
- package/dist/kernal/i18n/textDirection.mjs +7 -0
- package/dist/kernal/index.cjs +1 -1
- package/dist/kernal/index.d.ts +6 -5
- package/dist/kernal/index.mjs +50 -45
- package/dist/kernal/mark/IHighlighter.cjs +1 -0
- package/dist/kernal/mark/IHighlighter.d.ts +43 -0
- package/dist/kernal/mark/IHighlighter.mjs +13 -0
- package/dist/kernal/mark/Mark.cjs +1 -1
- package/dist/kernal/mark/Mark.d.ts +33 -4
- package/dist/kernal/mark/Mark.mjs +43 -6
- package/dist/kernal/mark/index.cjs +1 -1
- package/dist/kernal/mark/index.d.ts +2 -0
- package/dist/kernal/mark/index.mjs +6 -3
- package/dist/kernal/mark/overlay.cjs +1 -0
- package/dist/kernal/mark/overlay.d.ts +31 -0
- package/dist/kernal/mark/overlay.mjs +102 -0
- package/dist/kernal/mark/types.cjs +1 -0
- package/dist/kernal/mark/types.d.ts +11 -2
- package/dist/kernal/mark/types.mjs +4 -0
- package/dist/kernal/navigator/INavigator.d.ts +3 -2
- package/dist/kernal/network/HttpClient.cjs +1 -1
- package/dist/kernal/network/HttpClient.mjs +80 -56
- package/dist/kernal/pipelines/FileLoadPipeline.cjs +1 -1
- package/dist/kernal/pipelines/FileLoadPipeline.mjs +55 -56
- package/dist/kernal/pipelines/InputFormatter.cjs +1 -1
- package/dist/kernal/pipelines/InputFormatter.mjs +43 -41
- package/dist/kernal/pipelines/metadata.cjs +1 -1
- package/dist/kernal/pipelines/metadata.d.ts +2 -1
- package/dist/kernal/pipelines/metadata.mjs +21 -30
- package/dist/kernal/plugins/keyboard/KeyboardPageTurning.cjs +1 -1
- package/dist/kernal/plugins/keyboard/KeyboardPageTurning.mjs +7 -6
- package/dist/kernal/plugins/mouse/WheelPageTurning.cjs +1 -1
- package/dist/kernal/plugins/mouse/WheelPageTurning.mjs +12 -11
- package/dist/kernal/progress/Progress.cjs +1 -1
- package/dist/kernal/progress/Progress.d.ts +5 -3
- package/dist/kernal/progress/Progress.mjs +2 -2
- package/dist/kernal/progress/userChangedProgress.cjs +1 -0
- package/dist/kernal/progress/userChangedProgress.d.ts +9 -0
- package/dist/kernal/progress/userChangedProgress.mjs +11 -0
- package/dist/kernal/screen/BrowserFullscreen.cjs +1 -0
- package/dist/kernal/screen/BrowserFullscreen.d.ts +9 -0
- package/dist/kernal/screen/BrowserFullscreen.mjs +47 -0
- package/dist/kernal/screen/IFullscreen.d.ts +6 -0
- package/dist/kernal/services/ServiceCollection.cjs +1 -1
- package/dist/kernal/services/ServiceCollection.d.ts +4 -6
- package/dist/kernal/services/ServiceCollection.mjs +18 -9
- package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.cjs +2 -2
- package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.d.ts +4 -2
- package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.mjs +31 -23
- package/dist/kernal/services/fileUrlParser/DefaultFileUrlParser.cjs +1 -1
- package/dist/kernal/services/fileUrlParser/DefaultFileUrlParser.mjs +52 -51
- package/dist/kernal/services/fileUrlParser/IFileUrlParser.d.ts +0 -1
- package/dist/kernal/services/font/IFontProvider.cjs +1 -1
- package/dist/kernal/services/font/IFontProvider.d.ts +3 -0
- package/dist/kernal/services/font/IFontProvider.mjs +1 -1
- package/dist/kernal/services/internalUrlBuilder/DefaultInternalUrlBuilder.cjs +1 -1
- package/dist/kernal/services/internalUrlBuilder/DefaultInternalUrlBuilder.mjs +8 -8
- package/dist/kernal/services/loading/DefaultLoading.cjs +1 -1
- package/dist/kernal/services/loading/DefaultLoading.d.ts +4 -0
- package/dist/kernal/services/loading/DefaultLoading.mjs +23 -24
- package/dist/kernal/services/text/splitter.cjs +1 -1
- package/dist/kernal/services/text/splitter.mjs +3 -3
- package/dist/kernal/types.d.ts +0 -5
- package/dist/kernal/web/BrowserCapabilities.cjs +1 -1
- package/dist/kernal/web/BrowserCapabilities.d.ts +0 -9
- package/dist/kernal/web/BrowserCapabilities.mjs +0 -49
- package/dist/kernal/{Debounce.mjs → web/debounce.mjs} +1 -1
- package/dist/kernal/web/scheduler.cjs +1 -0
- package/dist/kernal/web/scheduler.d.ts +3 -0
- package/dist/kernal/web/scheduler.mjs +7 -0
- package/dist/mediaTypes/base/fileParser/BaseFileParser.cjs +1 -1
- package/dist/mediaTypes/base/fileParser/BaseFileParser.mjs +59 -59
- package/dist/mediaTypes/html/DefaultHtmlSymbolMeasure.cjs +1 -0
- package/dist/mediaTypes/html/DefaultHtmlSymbolMeasure.d.ts +13 -0
- package/dist/mediaTypes/html/DefaultHtmlSymbolMeasure.mjs +109 -0
- package/dist/mediaTypes/html/HtmlOptions.cjs +1 -1
- package/dist/mediaTypes/html/HtmlOptions.d.ts +6 -12
- package/dist/mediaTypes/html/HtmlOptions.mjs +3 -14
- package/dist/mediaTypes/html/HtmlSettings.cjs +1 -1
- package/dist/mediaTypes/html/HtmlSettings.d.ts +16 -1
- package/dist/mediaTypes/html/HtmlSettings.mjs +46 -1
- package/dist/mediaTypes/html/IHtmlContentNormalizer.cjs +1 -0
- package/dist/mediaTypes/html/IHtmlContentNormalizer.d.ts +4 -0
- package/dist/mediaTypes/html/IHtmlContentNormalizer.mjs +4 -0
- package/dist/mediaTypes/html/IHtmlSymbolMeasure.d.ts +11 -0
- package/dist/mediaTypes/html/NoopHtmlContentNormalizer.cjs +1 -0
- package/dist/mediaTypes/html/NoopHtmlContentNormalizer.d.ts +5 -0
- package/dist/mediaTypes/html/NoopHtmlContentNormalizer.mjs +8 -0
- package/dist/mediaTypes/html/fileParser/HtmlFileParser.cjs +1 -1
- package/dist/mediaTypes/html/fileParser/HtmlFileParser.d.ts +5 -1
- package/dist/mediaTypes/html/fileParser/HtmlFileParser.mjs +15 -18
- package/dist/mediaTypes/html/fileParser/HtmlTextDocument.cjs +1 -1
- package/dist/mediaTypes/html/fileParser/HtmlTextDocument.mjs +25 -25
- package/dist/mediaTypes/html/fileParser/IHtmlFileParser.cjs +1 -0
- package/dist/mediaTypes/html/fileParser/IHtmlFileParser.d.ts +7 -3
- package/dist/mediaTypes/html/fileParser/IHtmlFileParser.mjs +4 -0
- package/dist/mediaTypes/html/renderer/HtmlRenderer.cjs +1 -1
- package/dist/mediaTypes/html/renderer/HtmlRenderer.d.ts +7 -1
- package/dist/mediaTypes/html/renderer/HtmlRenderer.mjs +65 -41
- package/dist/mediaTypes/html/renderer/IHtmlDocument.d.ts +6 -2
- package/dist/mediaTypes/html/renderer/IHtmlDocumentsProvider.d.ts +5 -0
- package/dist/mediaTypes/html/renderer/IHtmlRenderer.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/document/HtmlDocument.cjs +1 -1
- package/dist/mediaTypes/html/renderer/document/HtmlDocument.d.ts +29 -6
- package/dist/mediaTypes/html/renderer/document/HtmlDocument.mjs +233 -86
- package/dist/mediaTypes/html/renderer/document/HtmlDocumentResizeObserver.cjs +1 -1
- package/dist/mediaTypes/html/renderer/document/HtmlDocumentResizeObserver.d.ts +8 -0
- package/dist/mediaTypes/html/renderer/document/HtmlDocumentResizeObserver.mjs +41 -5
- package/dist/mediaTypes/html/renderer/document/HtmlPageCalculator.cjs +1 -1
- package/dist/mediaTypes/html/renderer/document/HtmlPageCalculator.d.ts +2 -4
- package/dist/mediaTypes/html/renderer/document/HtmlPageCalculator.mjs +22 -59
- package/dist/mediaTypes/html/renderer/document/HtmlSymbolCalclator.cjs +1 -1
- package/dist/mediaTypes/html/renderer/document/HtmlSymbolCalclator.d.ts +3 -5
- package/dist/mediaTypes/html/renderer/document/HtmlSymbolCalclator.mjs +7 -25
- package/dist/mediaTypes/html/renderer/documents/HtmlContainerBuilder.cjs +1 -1
- package/dist/mediaTypes/html/renderer/documents/HtmlContainerBuilder.d.ts +0 -2
- package/dist/mediaTypes/html/renderer/documents/HtmlContainerBuilder.mjs +18 -42
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsIntersectionObserver.cjs +1 -1
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsIntersectionObserver.d.ts +2 -0
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsIntersectionObserver.mjs +17 -4
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsPreloader.cjs +1 -1
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsPreloader.d.ts +16 -1
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsPreloader.mjs +128 -54
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.cjs +1 -1
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.d.ts +26 -3
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.mjs +227 -101
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.cjs +1 -1
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.d.ts +2 -0
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.mjs +45 -25
- package/dist/mediaTypes/html/renderer/documents/documentHiddenState.cjs +1 -0
- package/dist/mediaTypes/html/renderer/documents/documentHiddenState.d.ts +6 -0
- package/dist/mediaTypes/html/renderer/documents/documentHiddenState.mjs +6 -0
- package/dist/mediaTypes/html/renderer/documents/preloadNeighbors.cjs +1 -0
- package/dist/mediaTypes/html/renderer/documents/preloadNeighbors.d.ts +2 -0
- package/dist/mediaTypes/html/renderer/documents/preloadNeighbors.mjs +13 -0
- package/dist/mediaTypes/html/renderer/documents/wrapperVisibility.cjs +1 -0
- package/dist/mediaTypes/html/renderer/documents/wrapperVisibility.d.ts +11 -0
- package/dist/mediaTypes/html/renderer/documents/wrapperVisibility.mjs +8 -0
- package/dist/mediaTypes/html/renderer/html/HtmlContentProcessor.cjs +1 -1
- package/dist/mediaTypes/html/renderer/html/HtmlContentProcessor.mjs +62 -62
- package/dist/mediaTypes/html/renderer/html/template.cjs +1 -1
- package/dist/mediaTypes/html/renderer/html/template.d.ts +3 -1
- package/dist/mediaTypes/html/renderer/html/template.mjs +9 -9
- package/dist/mediaTypes/html/renderer/image/HtmlImageLoader.cjs +1 -1
- package/dist/mediaTypes/html/renderer/image/HtmlImageLoader.d.ts +22 -12
- package/dist/mediaTypes/html/renderer/image/HtmlImageLoader.mjs +380 -270
- package/dist/mediaTypes/html/renderer/image/HtmlImageObserver.cjs +1 -1
- package/dist/mediaTypes/html/renderer/image/HtmlImageObserver.mjs +27 -27
- package/dist/mediaTypes/html/renderer/image/IHtmlImageLoader.d.ts +8 -0
- package/dist/mediaTypes/html/renderer/image/error-image.cjs +1 -1
- package/dist/mediaTypes/html/renderer/image/error-image.mjs +1 -1
- package/dist/mediaTypes/html/renderer/image/htmlImageFitStyles.cjs +1 -0
- package/dist/mediaTypes/html/renderer/image/htmlImageFitStyles.d.ts +10 -0
- package/dist/mediaTypes/html/renderer/image/htmlImageFitStyles.mjs +15 -0
- package/dist/mediaTypes/html/renderer/image/htmlImagePlaceholderUrl.cjs +1 -0
- package/dist/mediaTypes/html/renderer/image/htmlImagePlaceholderUrl.d.ts +2 -0
- package/dist/mediaTypes/html/renderer/image/htmlImagePlaceholderUrl.mjs +12 -0
- package/dist/mediaTypes/html/renderer/layout/HtmlRendererLayout.cjs +1 -1
- package/dist/mediaTypes/html/renderer/layout/HtmlRendererLayout.d.ts +6 -10
- package/dist/mediaTypes/html/renderer/layout/HtmlRendererLayout.mjs +71 -62
- package/dist/mediaTypes/html/renderer/layout/HtmlRendererViewport.cjs +1 -1
- package/dist/mediaTypes/html/renderer/layout/HtmlRendererViewport.d.ts +4 -1
- package/dist/mediaTypes/html/renderer/layout/HtmlRendererViewport.mjs +113 -68
- package/dist/mediaTypes/html/renderer/layout/IHtmlRendererLayout.d.ts +8 -3
- package/dist/mediaTypes/html/renderer/layout/ViewportCssVariableNames.cjs +1 -1
- package/dist/mediaTypes/html/renderer/layout/ViewportCssVariableNames.d.ts +5 -1
- package/dist/mediaTypes/html/renderer/layout/ViewportCssVariableNames.mjs +15 -3
- package/dist/mediaTypes/html/renderer/layout/applyLayoutClasses.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/applyLayoutClasses.d.ts +8 -0
- package/dist/mediaTypes/html/renderer/layout/applyLayoutClasses.mjs +28 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-page-horizontal-tb-ltr.cjs +30 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-page-horizontal-tb-ltr.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-page-horizontal-tb-rtl.cjs +31 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-page-horizontal-tb-rtl.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-lr-ltr.cjs +30 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-lr-ltr.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-lr-rtl.cjs +30 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-lr-rtl.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-rl-ltr.cjs +30 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-rl-ltr.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-rl-rtl.cjs +30 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-page-vertical-rl-rtl.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-horizontal-tb-rtl.cjs +6 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-horizontal-tb-rtl.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-lr-ltr.cjs +10 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-lr-ltr.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-lr-rtl.cjs +10 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-lr-rtl.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-rl-ltr.cjs +10 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-rl-ltr.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-rl-rtl.cjs +10 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-content-scroll-vertical-rl-rtl.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-default.cjs +19 -0
- package/dist/mediaTypes/html/renderer/layout/css/document-default.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/hostLayoutCss.cjs +3 -0
- package/dist/mediaTypes/html/renderer/layout/css/hostLayoutCss.d.ts +2 -0
- package/dist/mediaTypes/html/renderer/layout/css/hostLayoutCss.mjs +56 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-default.cjs +64 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-default.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-horizontal-tb-ltr.cjs +33 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-horizontal-tb-ltr.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-horizontal-tb-rtl.cjs +33 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-horizontal-tb-rtl.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-lr-ltr.cjs +47 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-lr-ltr.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-lr-rtl.cjs +47 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-lr-rtl.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-rl-ltr.cjs +46 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-rl-ltr.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-rl-rtl.cjs +46 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-page-vertical-rl-rtl.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-horizontal-tb-rtl.cjs +7 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-horizontal-tb-rtl.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-lr-ltr.cjs +28 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-lr-ltr.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-lr-rtl.cjs +28 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-lr-rtl.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-rl-ltr.cjs +28 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-rl-ltr.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-rl-rtl.cjs +28 -0
- package/dist/mediaTypes/html/renderer/layout/css/renderer-layout-scroll-vertical-rl-rtl.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/css/root-direction.cjs +8 -0
- package/dist/mediaTypes/html/renderer/layout/css/root-direction.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/ILayoutGeometry.d.ts +128 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/formatTranslate3d.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/formatTranslate3d.d.ts +4 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/formatTranslate3d.mjs +7 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/getLayoutOffsetLeft.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/getLayoutOffsetLeft.d.ts +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/getLayoutOffsetLeft.mjs +13 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/index.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/index.d.ts +18 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/index.mjs +30 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbLtr.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbLtr.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbLtr.mjs +71 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbRtl.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbRtl.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageHorizontalTbRtl.mjs +74 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrLtr.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrLtr.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrLtr.mjs +71 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrRtl.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrRtl.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalLrRtl.mjs +71 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlLtr.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlLtr.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlLtr.mjs +71 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlRtl.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlRtl.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/pageVerticalRlRtl.mjs +71 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/restoreLayoutState.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/restoreLayoutState.d.ts +41 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/restoreLayoutState.mjs +53 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbLtr.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbLtr.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbLtr.mjs +71 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbRtl.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbRtl.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollHorizontalTbRtl.mjs +74 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrLtr.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrLtr.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrLtr.mjs +71 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrRtl.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrRtl.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalLrRtl.mjs +71 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlLtr.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlLtr.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlLtr.mjs +74 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlRtl.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlRtl.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/layout/geometry/scrollVerticalRlRtl.mjs +74 -0
- package/dist/mediaTypes/html/renderer/layout/layoutRouteIds.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/layoutRouteIds.d.ts +10 -0
- package/dist/mediaTypes/html/renderer/layout/layoutRouteIds.mjs +17 -0
- package/dist/mediaTypes/html/renderer/layout/pageStripRouteChange.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/pageStripRouteChange.d.ts +6 -0
- package/dist/mediaTypes/html/renderer/layout/pageStripRouteChange.mjs +24 -0
- package/dist/mediaTypes/html/renderer/layout/resolveContentWrapperMinWidth.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/resolveContentWrapperMinWidth.d.ts +9 -0
- package/dist/mediaTypes/html/renderer/layout/resolveContentWrapperMinWidth.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/resolveLayoutRoute.cjs +1 -0
- package/dist/mediaTypes/html/renderer/layout/resolveLayoutRoute.d.ts +11 -0
- package/dist/mediaTypes/html/renderer/layout/resolveLayoutRoute.mjs +9 -0
- package/dist/mediaTypes/html/renderer/location/HtmlElementLocator.cjs +1 -1
- package/dist/mediaTypes/html/renderer/location/HtmlElementLocator.mjs +32 -34
- package/dist/mediaTypes/html/renderer/location/HtmlLayoutStatePreserver.cjs +1 -0
- package/dist/mediaTypes/html/renderer/location/HtmlLayoutStatePreserver.d.ts +23 -0
- package/dist/mediaTypes/html/renderer/location/HtmlLayoutStatePreserver.mjs +164 -0
- package/dist/mediaTypes/html/renderer/location/remapStoredPageNumber.cjs +1 -0
- package/dist/mediaTypes/html/renderer/location/remapStoredPageNumber.d.ts +4 -0
- package/dist/mediaTypes/html/renderer/location/remapStoredPageNumber.mjs +13 -0
- package/dist/mediaTypes/html/renderer/location/scrollActivity.cjs +1 -0
- package/dist/mediaTypes/html/renderer/location/scrollActivity.d.ts +14 -0
- package/dist/mediaTypes/html/renderer/location/scrollActivity.mjs +18 -0
- package/dist/mediaTypes/html/renderer/navigator/HtmlCoreNavigator.cjs +1 -1
- package/dist/mediaTypes/html/renderer/navigator/HtmlCoreNavigator.mjs +2 -2
- package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointNavigator.cjs +1 -1
- package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointNavigator.mjs +3 -3
- package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointProvider.cjs +1 -1
- package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointProvider.mjs +55 -59
- package/dist/mediaTypes/html/renderer/navigator/HtmlPagingNavigator.cjs +1 -1
- package/dist/mediaTypes/html/renderer/navigator/HtmlPagingNavigator.d.ts +1 -0
- package/dist/mediaTypes/html/renderer/navigator/HtmlPagingNavigator.mjs +40 -39
- package/dist/mediaTypes/html/renderer/progress/HtmlProgressTracker.cjs +1 -1
- package/dist/mediaTypes/html/renderer/progress/HtmlProgressTracker.d.ts +2 -1
- package/dist/mediaTypes/html/renderer/progress/HtmlProgressTracker.mjs +36 -24
- package/dist/mediaTypes/html/renderer/style/ContentCssVariables.cjs +1 -1
- package/dist/mediaTypes/html/renderer/style/ContentCssVariables.d.ts +4 -0
- package/dist/mediaTypes/html/renderer/style/ContentCssVariables.mjs +19 -1
- package/dist/mediaTypes/html/renderer/style/ContentLayoutCssVariableNames.cjs +1 -1
- package/dist/mediaTypes/html/renderer/style/ContentLayoutCssVariableNames.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/style/ContentLayoutCssVariableNames.mjs +9 -0
- package/dist/mediaTypes/html/renderer/style/HtmlStyleProvider.cjs +1 -1
- package/dist/mediaTypes/html/renderer/style/HtmlStyleProvider.d.ts +3 -0
- package/dist/mediaTypes/html/renderer/style/HtmlStyleProvider.mjs +28 -16
- package/dist/mediaTypes/html/renderer/style/HtmlThemeApplier.cjs +1 -1
- package/dist/mediaTypes/html/renderer/style/HtmlThemeApplier.d.ts +2 -0
- package/dist/mediaTypes/html/renderer/style/HtmlThemeApplier.mjs +39 -34
- package/dist/mediaTypes/html/renderer/style/ILanguageHighlighter.cjs +0 -0
- package/dist/mediaTypes/html/renderer/style/ILanguageHighlighter.d.ts +6 -0
- package/dist/mediaTypes/html/renderer/style/ILanguageHighlighter.mjs +0 -0
- package/dist/mediaTypes/html/renderer/style/LanguageHighlighter.cjs +1 -0
- package/dist/mediaTypes/html/renderer/style/LanguageHighlighter.d.ts +18 -0
- package/dist/mediaTypes/html/renderer/style/LanguageHighlighter.mjs +52 -0
- package/dist/mediaTypes/html/renderer/style/html-content.cjs +38 -7
- package/dist/mediaTypes/html/renderer/style/html-content.mjs +1 -1
- package/dist/mediaTypes/pdf/ensurePdfWebWorker.cjs +1 -1
- package/dist/mediaTypes/pdf/ensurePdfWebWorker.mjs +6 -13
- package/dist/mediaTypes/pdf/fileParser/PdfFileParser.cjs +1 -1
- package/dist/mediaTypes/pdf/fileParser/PdfFileParser.d.ts +5 -4
- package/dist/mediaTypes/pdf/fileParser/PdfFileParser.mjs +7 -3
- package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.cjs +1 -1
- package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.d.ts +4 -4
- package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.mjs +24 -14
- package/dist/mediaTypes/pdf/highlighter/PdfHighlightConstants.cjs +1 -0
- package/dist/mediaTypes/pdf/highlighter/PdfHighlightConstants.d.ts +6 -0
- package/dist/mediaTypes/pdf/highlighter/PdfHighlightConstants.mjs +4 -0
- package/dist/mediaTypes/pdf/highlighter/pdfHighlightStyles.cjs +1 -0
- package/dist/mediaTypes/pdf/highlighter/pdfHighlightStyles.d.ts +10 -0
- package/dist/mediaTypes/pdf/highlighter/pdfHighlightStyles.mjs +33 -0
- package/dist/mediaTypes/pdf/loadPdfDocument.cjs +1 -1
- package/dist/mediaTypes/pdf/loadPdfDocument.mjs +18 -19
- package/dist/mediaTypes/pdf/renderer/IPdfRenderer.d.ts +2 -0
- package/dist/mediaTypes/pdf/renderer/MultiPdfViewer.mjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfCoreNavigator.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfCoreNavigator.mjs +2 -2
- package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.d.ts +0 -1
- package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.mjs +0 -3
- package/dist/mediaTypes/pdf/renderer/PdfDocument.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfDocument.mjs +3 -3
- package/dist/mediaTypes/pdf/renderer/PdfNavPointNavigator.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfNavPointNavigator.mjs +3 -3
- package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.d.ts +3 -3
- package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.mjs +20 -19
- package/dist/mediaTypes/pdf/renderer/PdfRenderer.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfRenderer.d.ts +1 -0
- package/dist/mediaTypes/pdf/renderer/PdfRenderer.mjs +20 -20
- package/dist/mediaTypes/pdf/renderer/PdfSvgBuilder.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfSvgBuilder.mjs +51 -50
- package/dist/mediaTypes/pdf/renderer/documents/PdfDocumentsProvider.cjs +2 -2
- package/dist/mediaTypes/pdf/renderer/documents/PdfDocumentsProvider.mjs +55 -56
- package/dist/mediaTypes/pdf/renderer/documents/resolvePdfLocationPageNumber.cjs +1 -0
- package/dist/mediaTypes/pdf/renderer/documents/resolvePdfLocationPageNumber.d.ts +3 -0
- package/dist/mediaTypes/pdf/renderer/documents/resolvePdfLocationPageNumber.mjs +12 -0
- package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.d.ts +4 -0
- package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.mjs +24 -5
- package/dist/mediaTypes/pdf/renderer/layout/PdfRendererViewport.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/layout/PdfRendererViewport.mjs +32 -32
- package/dist/mediaTypes/pdf/renderer/progress/PdfProgressTracker.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/progress/PdfProgressTracker.mjs +1 -1
- package/dist/mediaTypes/pdf/renderer/style/PdfThemeApplier.cjs +4 -4
- package/dist/mediaTypes/pdf/renderer/style/PdfThemeApplier.mjs +5 -5
- package/dist/mediaTypes/pdf/shared/geometry/index.cjs +1 -1
- package/dist/mediaTypes/pdf/shared/geometry/index.mjs +2 -2
- package/dist/mediaTypes/pdf/shared/geometry/selectionToFixedContentRange.cjs +1 -1
- package/dist/mediaTypes/pdf/shared/geometry/selectionToFixedContentRange.d.ts +14 -4
- package/dist/mediaTypes/pdf/shared/geometry/selectionToFixedContentRange.mjs +56 -24
- package/dist/mediaTypes/pdf/shared/text/pageText.cjs +2 -2
- package/dist/mediaTypes/pdf/shared/text/pageText.d.ts +14 -0
- package/dist/mediaTypes/pdf/shared/text/pageText.mjs +139 -47
- package/dist/node_modules/highlight.js/styles/github-dark.cjs +118 -0
- package/dist/node_modules/highlight.js/styles/github-dark.mjs +4 -0
- package/dist/node_modules/highlight.js/styles/github.cjs +118 -0
- package/dist/node_modules/highlight.js/styles/github.mjs +4 -0
- package/dist/pdfjs/package.json +1 -0
- package/global.d.ts +3 -1
- package/package.json +11 -5
- package/types.d.ts +48 -13
- package/dist/kernal/device/IEnvironment.d.ts +0 -5
- package/dist/kernal/device/IPlatform.d.ts +0 -7
- package/dist/kernal/device/WebEnvironment.cjs +0 -1
- package/dist/kernal/device/WebEnvironment.d.ts +0 -7
- package/dist/kernal/device/WebEnvironment.mjs +0 -22
- package/dist/kernal/device/WebPlatform.cjs +0 -1
- package/dist/kernal/device/WebPlatform.d.ts +0 -12
- package/dist/kernal/device/WebPlatform.mjs +0 -49
- package/dist/kernal/progress/IReadingProgressStore.d.ts +0 -7
- package/dist/kernal/progress/ReadingProgressStore.cjs +0 -1
- package/dist/kernal/progress/ReadingProgressStore.d.ts +0 -12
- package/dist/kernal/progress/ReadingProgressStore.mjs +0 -17
- package/dist/kernal/storage/IStorage.cjs +0 -1
- package/dist/kernal/storage/IStorage.d.ts +0 -21
- package/dist/kernal/storage/IStorage.mjs +0 -4
- package/dist/kernal/storage/WebStorage.cjs +0 -1
- package/dist/kernal/storage/WebStorage.d.ts +0 -31
- package/dist/kernal/storage/WebStorage.mjs +0 -165
- package/dist/mediaTypes/adjacent.cjs +0 -1
- package/dist/mediaTypes/adjacent.d.ts +0 -5
- package/dist/mediaTypes/adjacent.mjs +0 -42
- package/dist/mediaTypes/html/renderer/image/placeholder.cjs +0 -1
- package/dist/mediaTypes/html/renderer/image/placeholder.mjs +0 -4
- /package/dist/kernal/{device/IEnvironment.cjs → screen/IFullscreen.cjs} +0 -0
- /package/dist/kernal/{device/IEnvironment.mjs → screen/IFullscreen.mjs} +0 -0
- /package/dist/kernal/{Debounce.cjs → web/debounce.cjs} +0 -0
- /package/dist/kernal/{Debounce.d.ts → web/debounce.d.ts} +0 -0
- /package/dist/{kernal/device/IPlatform.cjs → mediaTypes/html/IHtmlSymbolMeasure.cjs} +0 -0
- /package/dist/{kernal/device/IPlatform.mjs → mediaTypes/html/IHtmlSymbolMeasure.mjs} +0 -0
- /package/dist/{kernal/progress/IReadingProgressStore.cjs → mediaTypes/html/renderer/layout/geometry/ILayoutGeometry.cjs} +0 -0
- /package/dist/{kernal/progress/IReadingProgressStore.mjs → mediaTypes/html/renderer/layout/geometry/ILayoutGeometry.mjs} +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { SpineFile as e } from "../../../kernal/IFileParser.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { getDocumentBody as t } from "../../../kernal/html/finder.mjs";
|
|
3
|
+
import { BaseFileParser as n } from "../../base/fileParser/BaseFileParser.mjs";
|
|
4
|
+
import { NoopHtmlContentNormalizer as r } from "../NoopHtmlContentNormalizer.mjs";
|
|
5
|
+
import { DefaultHtmlSymbolMeasure as i } from "../DefaultHtmlSymbolMeasure.mjs";
|
|
6
|
+
import { HtmlTextDocument as a } from "./HtmlTextDocument.mjs";
|
|
6
7
|
//#region mediaTypes/html/fileParser/HtmlFileParser.ts
|
|
7
|
-
var
|
|
8
|
-
constructor(e, t, n,
|
|
9
|
-
super(e, t, n,
|
|
8
|
+
var o = class extends n {
|
|
9
|
+
constructor(e, t, n, a, o, s, c, l, u, d) {
|
|
10
|
+
super(e, t, n, a, o, s, c), this.options = l, this.contentNormalizer = u ?? new r(), this.symbolMeasure = d ?? new i();
|
|
10
11
|
}
|
|
11
12
|
async parseUrl(t, n) {
|
|
12
13
|
let r = await super.parseUrl(t, n);
|
|
@@ -26,20 +27,16 @@ var a = class extends r {
|
|
|
26
27
|
this.textDocuments = [];
|
|
27
28
|
let e = await this.getSpineFiles();
|
|
28
29
|
for (let t = 0; t < e.length; t++) {
|
|
29
|
-
let n = e[t], r = new
|
|
30
|
+
let n = e[t], r = new a(this, n);
|
|
30
31
|
this.textDocuments.push(r);
|
|
31
32
|
}
|
|
32
33
|
return this.textDocuments;
|
|
33
34
|
}
|
|
34
|
-
async calculateSymbolCount(e,
|
|
35
|
-
let
|
|
36
|
-
|
|
37
|
-
let
|
|
38
|
-
return t(
|
|
39
|
-
removeHtmlWhitespace: this.options.removeHtmlWhitespace,
|
|
40
|
-
whitespaceRegex: this.options.whitespaceRegex,
|
|
41
|
-
nonWhiteSpaceSymbolTagNames: this.options.nonWhiteSpaceSymbolTagNames
|
|
42
|
-
});
|
|
35
|
+
async calculateSymbolCount(e, n) {
|
|
36
|
+
let r = await this.getTextDocument(e.url);
|
|
37
|
+
if (!r) return 1;
|
|
38
|
+
let i = await r.getFormattedDocument();
|
|
39
|
+
return this.symbolMeasure.count(t(i), n);
|
|
43
40
|
}
|
|
44
41
|
async dispose() {
|
|
45
42
|
if (this.textDocuments) {
|
|
@@ -50,4 +47,4 @@ var a = class extends r {
|
|
|
50
47
|
}
|
|
51
48
|
};
|
|
52
49
|
//#endregion
|
|
53
|
-
export {
|
|
50
|
+
export { o as HtmlFileParser };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../kernal/common/
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../kernal/common/encoding.cjs"),t=require("../../../kernal/common/uuid.cjs"),n=require("../../../kernal/common/text.cjs"),r=require("../../../kernal/Constants.cjs"),i=require("../../../kernal/html/finder.cjs"),a=require("../../../kernal/html/text.cjs"),o=require("../../../kernal/html/parser.cjs"),s=require("../../../kernal/html/manipulator.cjs");var c=class{constructor(e,t){this.texts=new Map,this.fileParser=e,this.spineFile=t}get url(){return this.spineFile.url}async getPlaintext(e){let r=t.computeUniqueId(JSON.stringify(e??{}));if(this.texts.has(r))return this.texts.get(r);let o=await this.getFormattedDocument(),s=a.getPureTextContent(i.getDocumentBody(o),e?.convertLFToWhitespace);return e&&(s=n.formatText(s,e)),this.texts.set(r,s),s}async getContent(){if(this.docContent)return this.docContent;let t=``;if(this.spineFile.data){if(this.spineFile.data instanceof ArrayBuffer)t=e.convertArrayBufferToString(this.spineFile.data);else if(this.spineFile.data instanceof Blob){let n=await this.spineFile.data.arrayBuffer();t=e.convertArrayBufferToString(n)}}else{let n=await this.fileParser.getFile(this.url);t=e.convertUint8ArrayToString(n)}return t=e.removeBomHeader(t??``),this.docContent=this.fileParser.contentNormalizer.normalize(t),this.docContent}async getFormattedDocument(){if(!this.formattedDocument){let e=await this.getContent(),t=await o.getFormatDocumentAsync(e,!0);s.wrapFloatingTextNodes(t,this.fileParser.options.wrapFullTextNode);let n=t.getElementsByTagName(`*`);for(let e=n.length-1;e>=0;e--)n[e].setAttribute(r.ElementInitialNumberName,e.toString());this.formattedDocument=t}return this.formattedDocument.cloneNode(!0)}async dispose(){this.texts&&this.texts.clear(),this.docContent=null,this.formattedDocument=null}};exports.HtmlTextDocument=c;
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
1
|
+
import { convertArrayBufferToString as e, convertUint8ArrayToString as t, removeBomHeader as n } from "../../../kernal/common/encoding.mjs";
|
|
2
|
+
import { computeUniqueId as r } from "../../../kernal/common/uuid.mjs";
|
|
3
|
+
import { formatText as i } from "../../../kernal/common/text.mjs";
|
|
4
|
+
import { ElementInitialNumberName as a } from "../../../kernal/Constants.mjs";
|
|
5
|
+
import { getDocumentBody as o } from "../../../kernal/html/finder.mjs";
|
|
6
|
+
import { getPureTextContent as s } from "../../../kernal/html/text.mjs";
|
|
7
|
+
import { getFormatDocumentAsync as c } from "../../../kernal/html/parser.mjs";
|
|
8
|
+
import { wrapFloatingTextNodes as l } from "../../../kernal/html/manipulator.mjs";
|
|
9
9
|
//#region mediaTypes/html/fileParser/HtmlTextDocument.ts
|
|
10
|
-
var
|
|
10
|
+
var u = class {
|
|
11
11
|
constructor(e, t) {
|
|
12
12
|
this.texts = /* @__PURE__ */ new Map(), this.fileParser = e, this.spineFile = t;
|
|
13
13
|
}
|
|
14
14
|
get url() {
|
|
15
15
|
return this.spineFile.url;
|
|
16
16
|
}
|
|
17
|
-
async getPlaintext(
|
|
18
|
-
let
|
|
19
|
-
if (this.texts.has(
|
|
20
|
-
let
|
|
21
|
-
return
|
|
17
|
+
async getPlaintext(e) {
|
|
18
|
+
let t = r(JSON.stringify(e ?? {}));
|
|
19
|
+
if (this.texts.has(t)) return this.texts.get(t);
|
|
20
|
+
let n = await this.getFormattedDocument(), a = s(o(n), e?.convertLFToWhitespace);
|
|
21
|
+
return e && (a = i(a, e)), this.texts.set(t, a), a;
|
|
22
22
|
}
|
|
23
23
|
async getContent() {
|
|
24
24
|
if (this.docContent) return this.docContent;
|
|
25
|
-
let
|
|
25
|
+
let r = "";
|
|
26
26
|
if (this.spineFile.data) {
|
|
27
|
-
if (this.spineFile.data instanceof ArrayBuffer)
|
|
27
|
+
if (this.spineFile.data instanceof ArrayBuffer) r = e(this.spineFile.data);
|
|
28
28
|
else if (this.spineFile.data instanceof Blob) {
|
|
29
29
|
let t = await this.spineFile.data.arrayBuffer();
|
|
30
|
-
|
|
30
|
+
r = e(t);
|
|
31
31
|
}
|
|
32
32
|
} else {
|
|
33
|
-
let
|
|
34
|
-
|
|
33
|
+
let e = await this.fileParser.getFile(this.url);
|
|
34
|
+
r = t(e);
|
|
35
35
|
}
|
|
36
|
-
return
|
|
36
|
+
return r = n(r ?? ""), this.docContent = this.fileParser.contentNormalizer.normalize(r), this.docContent;
|
|
37
37
|
}
|
|
38
38
|
async getFormattedDocument() {
|
|
39
39
|
if (!this.formattedDocument) {
|
|
40
|
-
let e = await this.getContent(), t = await
|
|
41
|
-
|
|
42
|
-
let
|
|
43
|
-
for (let e =
|
|
40
|
+
let e = await this.getContent(), t = await c(e, !0);
|
|
41
|
+
l(t, this.fileParser.options.wrapFullTextNode);
|
|
42
|
+
let n = t.getElementsByTagName("*");
|
|
43
|
+
for (let e = n.length - 1; e >= 0; e--) n[e].setAttribute(a, e.toString());
|
|
44
44
|
this.formattedDocument = t;
|
|
45
45
|
}
|
|
46
46
|
return this.formattedDocument.cloneNode(!0);
|
|
@@ -50,4 +50,4 @@ var d = class {
|
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
52
|
//#endregion
|
|
53
|
-
export {
|
|
53
|
+
export { u as HtmlTextDocument };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=e=>e;exports.asHtmlFileParser=e;
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { IFileParser
|
|
1
|
+
import { IFileParser } from '../../../kernal';
|
|
2
|
+
import { IHtmlContentNormalizer } from '../IHtmlContentNormalizer';
|
|
3
|
+
import { IHtmlSymbolMeasure } from '../IHtmlSymbolMeasure';
|
|
2
4
|
|
|
3
5
|
export interface IHtmlFileParser extends IFileParser {
|
|
4
6
|
options: HtmlFileParserOptions;
|
|
7
|
+
readonly contentNormalizer: IHtmlContentNormalizer;
|
|
8
|
+
readonly symbolMeasure: IHtmlSymbolMeasure;
|
|
5
9
|
}
|
|
6
|
-
export
|
|
7
|
-
|
|
10
|
+
export declare const asHtmlFileParser: (fileParser: IFileParser) => IHtmlFileParser;
|
|
11
|
+
export type HtmlFileParserOptions = {
|
|
8
12
|
wrapFullTextNode?: boolean;
|
|
9
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../kernal/
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../kernal/EventNames.cjs"),t=require("../../../kernal/common/uuid.cjs"),n=require("../../../kernal/Options.cjs"),r=require("../../../kernal/Theme.cjs"),i=require("../../../kernal/web/scheduler.cjs"),a=require("../../../kernal/html/events.cjs"),o=require("../HtmlOptions.cjs"),s=require("./navigator/HtmlCoreNavigator.cjs"),c=require("./layout/resolveLayoutRoute.cjs"),l=require("./navigator/HtmlPagingNavigator.cjs"),u=require("./navigator/HtmlNavPointNavigator.cjs"),d=require("./navigator/HtmlNavPointProvider.cjs"),f=require("./progress/HtmlProgressTracker.cjs"),p=require("./location/scrollActivity.cjs"),m=require("./documents/HtmlDocumentsProvider.cjs"),h=require("./layout/HtmlRendererLayout.cjs"),g=require("./style/HtmlStyleProvider.cjs"),_=require("./style/HtmlThemeApplier.cjs"),v=require("./documents/HtmlDocumentsResizeObserver.cjs"),y=require("./html/HtmlContentProcessor.cjs"),b=require("./image/HtmlImageLoader.cjs"),x=require("./image/HtmlImageObserver.cjs");var S=class extends m.HtmlDocumentsProvider{constructor(e,r,a,c){super(e,r,a,c),this.isInitRenderer=!1,this.injectProcessHandlers=()=>{this.addDocumentPreprocess(this.preprocessHandler)},this.preprocessHandler=async e=>{await this.contentProcessor.preprocess(e),await this.styleProvider.injectStyles(e);let t=await this.resolveCurrentTheme();t&&await this.themeApplier.applyToDocument(e,t),await this.rendererLayout.applyDocStyles(e),await this.imageLoader.preprocessImages(e);let n=await this.getHighlighter();n&&await n.highlight(e)},this.onPageChange=async()=>{this.progressTracker.notifyProgressChange()},this.onDocumentSizeChange=async()=>{this.owner.context.userChangedProgress||p.isProgrammaticScroll()||p.isUserScrollSettling()||await this.delayRestoreReadingPosition()},this.onOptionsChange=async e=>{let t=this.getRendererContainer();if(!(!t||!t.ownerDocument.defaultView)&&(n.isOptionKey(e)||o.isHtmlOptionKey(e))){let t=o.isHtmlOptionKey(e);if(t){if(!this.owner.context.currentLocation?.precise){let e=await this.progressTracker.getProgress(!0);e&&(this.owner.context.currentLocation=e.location)}this.owner.context.setUserChangedProgress(!1)}if(this.rendererViewport.applyCssVariables(),await i.yieldToMain(),t){for(let e of this.getLoadedDocuments())await this.rendererLayout.applyDocStyles(e);this.owner.context.userChangedProgress||await this.reload()}}},this.progressTracker=new f.HtmlProgressTracker(e,this,c),this.rendererLayout=new h.HtmlRendererLayout(e,this,this.rendererViewport,this.progressTracker,c),this.navPointProvider=new d.HtmlNavPointProvider(this,c),this.navigator=new s.HtmlCoreNavigator(this,c),this.navPointNavigator=new u.HtmlNavPointNavigator(e.locale,e.notifier,this,this.navigator,this.navPointProvider),this.pagingNavigator=new l.HtmlPagingNavigator(this,this.navigator,c),this.styleProvider=new g.HtmlStyleProvider(this),this.currentInstanceId=t.getRandomId(!0),this.themeApplier=new _.HtmlThemeApplier(this),this.documentsResizeObserver=new v.HtmlDocumentsResizeObserver(this,this.rendererViewport,this.progressTracker,this.rendererLayout),this.contentProcessor=new y.HtmlContentProcessor(r),this.imageLoader=this.createImageLoader(),this.imageObserver=new x.HtmlImageObserver(this,c),this.bindEvents(),this.bindScrollWatch(),this.injectProcessHandlers()}get id(){return this.currentInstanceId}createImageLoader(){return new b.HtmlImageLoader(this,this.rendererViewport,this.htmlOptions)}async resolveCurrentTheme(){return(await this.owner.services.get(`themeProvider`))?.getCurrentTheme()??new r.Theme}async getHighlighter(){if(this.htmlOptions.enableFormatCodeBlock){if(!this.languageHighlighter){let{LanguageHighlighter:e}=await Promise.resolve().then(()=>require("./style/LanguageHighlighter.cjs"));this.languageHighlighter=new e(this)}return this.languageHighlighter}}bindEvents(){this.owner.events.on(e.EventNames.OptionsChange,this.onOptionsChange),this.owner.events.on(e.EventNames.PageChange,this.onPageChange),this.owner.events.on(e.EventNames.DocumentSizeChange,this.onDocumentSizeChange)}unbindEvents(){this.owner.events.off(e.EventNames.OptionsChange,this.onOptionsChange),this.owner.events.off(e.EventNames.PageChange,this.onPageChange),this.owner.events.off(e.EventNames.DocumentSizeChange,this.onDocumentSizeChange)}bindScrollWatch(){let t=this.owner.getHostViewport();this.scrollWatchTarget=t.mode==`window`?t.scrollWatchTarget:this.getScrollElement(),this.scrollWatchTarget&&(this.scrollWatchState=a.watchScroll(this.scrollWatchTarget,this.owner.options.calcScrollDirection,async(t,n)=>{this.owner.events.emit(e.EventNames.ReaderDebounceScroll,t,n),this.progressTracker.notifyProgressChange()},t=>{p.isProgrammaticScroll()||!t.isTrusted||(this.owner.onProgressChangeGuard&&this.owner.context?.progress?.current&&(this.owner.onProgressChangeGuard(this.owner.context.progress.current)||t.preventDefault()),p.markUserScroll(),p.releaseAbsoluteLocate(),this.owner.events.emit(e.EventNames.ReaderOriginalScroll,t))}))}async load(e,t){e||=this.owner.context.progress?.location,this.isInitRenderer||(this.isInitRenderer=!0,this.documentsResizeObserver.register(),this.imageObserver.register()),await super.load(e,t)}getFileParser(){return this.fileParser}get writingMode(){return this.htmlOptions.writingMode??`horizontal-tb`}get direction(){return c.resolveHtmlTextDirection(this.htmlOptions)}get layout(){return this.rendererLayout}async applyTheme(e){await this.themeApplier.applyTheme(e);let t=await this.getHighlighter();t&&await t.applyTheme(e)}async dispose(){this.unbindEvents();let e=this.scrollWatchTarget??this.getScrollElement();e&&this.scrollWatchState?._eventHandler&&(e.removeEventListener(`scroll`,this.scrollWatchState._eventHandler,!0),this.scrollWatchState=void 0,this.scrollWatchTarget=void 0),await this.progressTracker.dispose(),await this.imageObserver.dispose(),await this.imageLoader.dispose(),await super.dispose(),await this.styleProvider?.dispose(),await this.languageHighlighter?.dispose(),this.languageHighlighter=void 0,await this.navPointProvider?.dispose(),await this.pagingNavigator?.dispose(),await this.documentsResizeObserver.dispose(),await this.contentProcessor.dispose()}};exports.HtmlRenderer=S;
|
|
@@ -6,6 +6,7 @@ import { HtmlOptions } from '../HtmlOptions';
|
|
|
6
6
|
import { IHtmlProgressTracker } from './progress/IHtmlIProgressTracker';
|
|
7
7
|
import { IHtmlRendererLayout } from './layout/IHtmlRendererLayout';
|
|
8
8
|
import { IHtmlDocument } from './IHtmlDocument';
|
|
9
|
+
import { IHtmlImageLoader } from './image/IHtmlImageLoader';
|
|
9
10
|
|
|
10
11
|
export declare class HtmlRenderer extends HtmlDocumentsProvider implements IHtmlRenderer {
|
|
11
12
|
readonly progressTracker: IHtmlProgressTracker;
|
|
@@ -20,18 +21,23 @@ export declare class HtmlRenderer extends HtmlDocumentsProvider implements IHtml
|
|
|
20
21
|
private readonly themeApplier;
|
|
21
22
|
private readonly documentsResizeObserver;
|
|
22
23
|
private readonly contentProcessor;
|
|
23
|
-
|
|
24
|
+
protected imageLoader: IHtmlImageLoader;
|
|
24
25
|
private readonly imageObserver;
|
|
26
|
+
private scrollWatchTarget?;
|
|
25
27
|
private scrollWatchState?;
|
|
26
28
|
constructor(owner: Reader, fileParser: IFileParser, readerContainer: HTMLElement, htmlOptions: HtmlOptions);
|
|
27
29
|
get id(): string;
|
|
30
|
+
protected createImageLoader(): IHtmlImageLoader;
|
|
28
31
|
private injectProcessHandlers;
|
|
29
32
|
private resolveCurrentTheme;
|
|
30
33
|
protected preprocessHandler: (doc: IHtmlDocument) => Promise<void>;
|
|
34
|
+
private languageHighlighter?;
|
|
35
|
+
private getHighlighter;
|
|
31
36
|
protected bindEvents(): void;
|
|
32
37
|
protected unbindEvents(): void;
|
|
33
38
|
private bindScrollWatch;
|
|
34
39
|
private onPageChange;
|
|
40
|
+
private onDocumentSizeChange;
|
|
35
41
|
private onOptionsChange;
|
|
36
42
|
load(location?: FileLocation, isReload?: boolean): Promise<void>;
|
|
37
43
|
getFileParser(): IFileParser;
|
|
@@ -1,66 +1,88 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
1
|
+
import { EventNames as e } from "../../../kernal/EventNames.mjs";
|
|
2
|
+
import { getRandomId as t } from "../../../kernal/common/uuid.mjs";
|
|
3
|
+
import { isOptionKey as n } from "../../../kernal/Options.mjs";
|
|
4
|
+
import { Theme as r } from "../../../kernal/Theme.mjs";
|
|
5
|
+
import { yieldToMain as i } from "../../../kernal/web/scheduler.mjs";
|
|
6
|
+
import { watchScroll as a } from "../../../kernal/html/events.mjs";
|
|
7
|
+
import { isHtmlOptionKey as o } from "../HtmlOptions.mjs";
|
|
8
|
+
import { HtmlCoreNavigator as s } from "./navigator/HtmlCoreNavigator.mjs";
|
|
9
|
+
import { resolveHtmlTextDirection as c } from "./layout/resolveLayoutRoute.mjs";
|
|
10
|
+
import { HtmlPagingNavigator as l } from "./navigator/HtmlPagingNavigator.mjs";
|
|
11
|
+
import { HtmlNavPointNavigator as u } from "./navigator/HtmlNavPointNavigator.mjs";
|
|
12
|
+
import { HtmlNavPointProvider as d } from "./navigator/HtmlNavPointProvider.mjs";
|
|
13
|
+
import { HtmlProgressTracker as f } from "./progress/HtmlProgressTracker.mjs";
|
|
14
|
+
import { isProgrammaticScroll as p, isUserScrollSettling as m, markUserScroll as h, releaseAbsoluteLocate as g } from "./location/scrollActivity.mjs";
|
|
15
|
+
import { HtmlDocumentsProvider as _ } from "./documents/HtmlDocumentsProvider.mjs";
|
|
16
|
+
import { HtmlRendererLayout as v } from "./layout/HtmlRendererLayout.mjs";
|
|
17
|
+
import { HtmlStyleProvider as y } from "./style/HtmlStyleProvider.mjs";
|
|
18
|
+
import { HtmlThemeApplier as b } from "./style/HtmlThemeApplier.mjs";
|
|
19
|
+
import { HtmlDocumentsResizeObserver as x } from "./documents/HtmlDocumentsResizeObserver.mjs";
|
|
20
|
+
import { HtmlContentProcessor as S } from "./html/HtmlContentProcessor.mjs";
|
|
21
|
+
import { HtmlImageLoader as C } from "./image/HtmlImageLoader.mjs";
|
|
22
|
+
import { HtmlImageObserver as w } from "./image/HtmlImageObserver.mjs";
|
|
20
23
|
//#region mediaTypes/html/renderer/HtmlRenderer.ts
|
|
21
|
-
var
|
|
22
|
-
constructor(
|
|
23
|
-
super(
|
|
24
|
+
var T = class extends _ {
|
|
25
|
+
constructor(e, r, a, c) {
|
|
26
|
+
super(e, r, a, c), this.isInitRenderer = !1, this.injectProcessHandlers = () => {
|
|
24
27
|
this.addDocumentPreprocess(this.preprocessHandler);
|
|
25
28
|
}, this.preprocessHandler = async (e) => {
|
|
26
29
|
await this.contentProcessor.preprocess(e), await this.styleProvider.injectStyles(e);
|
|
27
30
|
let t = await this.resolveCurrentTheme();
|
|
28
31
|
t && await this.themeApplier.applyToDocument(e, t), await this.rendererLayout.applyDocStyles(e), await this.imageLoader.preprocessImages(e);
|
|
32
|
+
let n = await this.getHighlighter();
|
|
33
|
+
n && await n.highlight(e);
|
|
29
34
|
}, this.onPageChange = async () => {
|
|
30
35
|
this.progressTracker.notifyProgressChange();
|
|
31
|
-
}, this.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
}, this.onDocumentSizeChange = async () => {
|
|
37
|
+
this.owner.context.userChangedProgress || p() || m() || await this.delayRestoreReadingPosition();
|
|
38
|
+
}, this.onOptionsChange = async (e) => {
|
|
39
|
+
let t = this.getRendererContainer();
|
|
40
|
+
if (!(!t || !t.ownerDocument.defaultView) && (n(e) || o(e))) {
|
|
41
|
+
let t = o(e);
|
|
42
|
+
if (t) {
|
|
36
43
|
if (!this.owner.context.currentLocation?.precise) {
|
|
37
44
|
let e = await this.progressTracker.getProgress(!0);
|
|
38
45
|
e && (this.owner.context.currentLocation = e.location);
|
|
39
46
|
}
|
|
40
47
|
this.owner.context.setUserChangedProgress(!1);
|
|
41
48
|
}
|
|
42
|
-
this.rendererViewport.applyCssVariables(),
|
|
49
|
+
if (this.rendererViewport.applyCssVariables(), await i(), t) {
|
|
50
|
+
for (let e of this.getLoadedDocuments()) await this.rendererLayout.applyDocStyles(e);
|
|
51
|
+
this.owner.context.userChangedProgress || await this.reload();
|
|
52
|
+
}
|
|
43
53
|
}
|
|
44
|
-
}, this.progressTracker = new
|
|
54
|
+
}, this.progressTracker = new f(e, this, c), this.rendererLayout = new v(e, this, this.rendererViewport, this.progressTracker, c), this.navPointProvider = new d(this, c), this.navigator = new s(this, c), this.navPointNavigator = new u(e.locale, e.notifier, this, this.navigator, this.navPointProvider), this.pagingNavigator = new l(this, this.navigator, c), this.styleProvider = new y(this), this.currentInstanceId = t(!0), this.themeApplier = new b(this), this.documentsResizeObserver = new x(this, this.rendererViewport, this.progressTracker, this.rendererLayout), this.contentProcessor = new S(r), this.imageLoader = this.createImageLoader(), this.imageObserver = new w(this, c), this.bindEvents(), this.bindScrollWatch(), this.injectProcessHandlers();
|
|
45
55
|
}
|
|
46
56
|
get id() {
|
|
47
57
|
return this.currentInstanceId;
|
|
48
58
|
}
|
|
59
|
+
createImageLoader() {
|
|
60
|
+
return new C(this, this.rendererViewport, this.htmlOptions);
|
|
61
|
+
}
|
|
49
62
|
async resolveCurrentTheme() {
|
|
50
|
-
return (await this.owner.services.get("themeProvider"))?.getCurrentTheme() ?? new
|
|
63
|
+
return (await this.owner.services.get("themeProvider"))?.getCurrentTheme() ?? new r();
|
|
64
|
+
}
|
|
65
|
+
async getHighlighter() {
|
|
66
|
+
if (this.htmlOptions.enableFormatCodeBlock) {
|
|
67
|
+
if (!this.languageHighlighter) {
|
|
68
|
+
let { LanguageHighlighter: e } = await import("./style/LanguageHighlighter.mjs");
|
|
69
|
+
this.languageHighlighter = new e(this);
|
|
70
|
+
}
|
|
71
|
+
return this.languageHighlighter;
|
|
72
|
+
}
|
|
51
73
|
}
|
|
52
74
|
bindEvents() {
|
|
53
|
-
this.owner.events.on(
|
|
75
|
+
this.owner.events.on(e.OptionsChange, this.onOptionsChange), this.owner.events.on(e.PageChange, this.onPageChange), this.owner.events.on(e.DocumentSizeChange, this.onDocumentSizeChange);
|
|
54
76
|
}
|
|
55
77
|
unbindEvents() {
|
|
56
|
-
this.owner.events.off(
|
|
78
|
+
this.owner.events.off(e.OptionsChange, this.onOptionsChange), this.owner.events.off(e.PageChange, this.onPageChange), this.owner.events.off(e.DocumentSizeChange, this.onDocumentSizeChange);
|
|
57
79
|
}
|
|
58
80
|
bindScrollWatch() {
|
|
59
|
-
let
|
|
60
|
-
|
|
61
|
-
this.owner.events.emit(
|
|
62
|
-
}, (
|
|
63
|
-
this.owner.onProgressChangeGuard && this.owner.context?.progress?.current && (this.owner.onProgressChangeGuard(this.owner.context.progress.current) ||
|
|
81
|
+
let t = this.owner.getHostViewport();
|
|
82
|
+
this.scrollWatchTarget = t.mode == "window" ? t.scrollWatchTarget : this.getScrollElement(), this.scrollWatchTarget && (this.scrollWatchState = a(this.scrollWatchTarget, this.owner.options.calcScrollDirection, async (t, n) => {
|
|
83
|
+
this.owner.events.emit(e.ReaderDebounceScroll, t, n), this.progressTracker.notifyProgressChange();
|
|
84
|
+
}, (t) => {
|
|
85
|
+
p() || !t.isTrusted || (this.owner.onProgressChangeGuard && this.owner.context?.progress?.current && (this.owner.onProgressChangeGuard(this.owner.context.progress.current) || t.preventDefault()), h(), g(), this.owner.events.emit(e.ReaderOriginalScroll, t));
|
|
64
86
|
}));
|
|
65
87
|
}
|
|
66
88
|
async load(e, t) {
|
|
@@ -73,19 +95,21 @@ var y = class extends d {
|
|
|
73
95
|
return this.htmlOptions.writingMode ?? "horizontal-tb";
|
|
74
96
|
}
|
|
75
97
|
get direction() {
|
|
76
|
-
return this.htmlOptions
|
|
98
|
+
return c(this.htmlOptions);
|
|
77
99
|
}
|
|
78
100
|
get layout() {
|
|
79
101
|
return this.rendererLayout;
|
|
80
102
|
}
|
|
81
103
|
async applyTheme(e) {
|
|
82
104
|
await this.themeApplier.applyTheme(e);
|
|
105
|
+
let t = await this.getHighlighter();
|
|
106
|
+
t && await t.applyTheme(e);
|
|
83
107
|
}
|
|
84
108
|
async dispose() {
|
|
85
109
|
this.unbindEvents();
|
|
86
|
-
let e = this.getScrollElement();
|
|
87
|
-
e && this.scrollWatchState?._eventHandler && (e.removeEventListener("scroll", this.scrollWatchState._eventHandler, !0), this.scrollWatchState = void 0), await this.progressTracker.dispose(), await this.imageObserver.dispose(), await this.imageLoader.dispose(), await super.dispose(), await this.styleProvider?.dispose(), await this.navPointProvider?.dispose(), await this.pagingNavigator?.dispose(), await this.documentsResizeObserver.dispose(), await this.contentProcessor.dispose();
|
|
110
|
+
let e = this.scrollWatchTarget ?? this.getScrollElement();
|
|
111
|
+
e && this.scrollWatchState?._eventHandler && (e.removeEventListener("scroll", this.scrollWatchState._eventHandler, !0), this.scrollWatchState = void 0, this.scrollWatchTarget = void 0), await this.progressTracker.dispose(), await this.imageObserver.dispose(), await this.imageLoader.dispose(), await super.dispose(), await this.styleProvider?.dispose(), await this.languageHighlighter?.dispose(), this.languageHighlighter = void 0, await this.navPointProvider?.dispose(), await this.pagingNavigator?.dispose(), await this.documentsResizeObserver.dispose(), await this.contentProcessor.dispose();
|
|
88
112
|
}
|
|
89
113
|
};
|
|
90
114
|
//#endregion
|
|
91
|
-
export {
|
|
115
|
+
export { T as HtmlRenderer };
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { IDocument } from '../../../kernal';
|
|
1
|
+
import { IDocument, ISymbolCalclator, LocationState } from '../../../kernal';
|
|
2
2
|
|
|
3
3
|
export interface IHtmlDocument extends IDocument {
|
|
4
4
|
getContent(): Promise<string>;
|
|
5
5
|
getNumberOfPages(): Promise<number>;
|
|
6
|
-
getPageNumber(
|
|
6
|
+
getPageNumber(target: Element | Range): Promise<number>;
|
|
7
|
+
readonly symbolCalclator: ISymbolCalclator;
|
|
7
8
|
getVirtualContentContainer(raw?: boolean): Promise<HTMLElement>;
|
|
8
9
|
getVisibleElements(fullVisibleInWindow?: boolean): Element[];
|
|
10
|
+
resetLayoutSizes(): void;
|
|
11
|
+
captureLayoutState(): LocationState;
|
|
12
|
+
restoreLayoutState(locationState: LocationState): Promise<void>;
|
|
9
13
|
}
|
|
@@ -3,4 +3,9 @@ import { IDocumentsProvider } from '../../../kernal';
|
|
|
3
3
|
|
|
4
4
|
export interface IHtmlDocumentsProvider extends IDocumentsProvider<IHtmlDocument> {
|
|
5
5
|
getCurrentPageNumber(doc: IHtmlDocument): number;
|
|
6
|
+
syncPageState(doc: IHtmlDocument): Promise<{
|
|
7
|
+
current: number;
|
|
8
|
+
total: number;
|
|
9
|
+
}>;
|
|
10
|
+
canAdvancePageTransform(doc: IHtmlDocument): boolean;
|
|
6
11
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Direction, IFileParser, INavPointNavigator, INavPointProvider, IPagingNavigator, IRenderer, IStyleProvider, WritingMode } from '../../../kernal';
|
|
2
|
+
import { HtmlOptions } from '../HtmlOptions';
|
|
2
3
|
import { IHtmlDocument } from './IHtmlDocument';
|
|
3
4
|
import { IHtmlRendererLayout } from './layout/IHtmlRendererLayout';
|
|
4
5
|
import { IHtmlProgressTracker } from './progress/IHtmlIProgressTracker';
|
|
@@ -12,4 +13,6 @@ export interface IHtmlRenderer<T extends IHtmlDocument = IHtmlDocument, W extend
|
|
|
12
13
|
get pagingNavigator(): IPagingNavigator | undefined;
|
|
13
14
|
get styleProvider(): IStyleProvider;
|
|
14
15
|
get layout(): IHtmlRendererLayout;
|
|
16
|
+
readonly htmlOptions: HtmlOptions;
|
|
17
|
+
getCurrentPageNumber(doc: IHtmlDocument): number;
|
|
15
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/web/BrowserCapabilities.cjs"),t=require("../../../../kernal/common/uuid.cjs"),n=require("../../../../kernal/EventNames.cjs"),r=require("../../../../kernal/Constants.cjs"),i=require("../../../../kernal/html/finder.cjs"),a=require("../../../../kernal/html/dom.cjs"),o=require("../../../../kernal/html/geometry.cjs"),s=require("../../HtmlSettings.cjs"),c=require("../../../base/renderer/BaseDocument.cjs"),l=require("../../../base/renderer/eventKeys.cjs"),u=require("../visibilityCandidates.cjs"),d=require("../html/template.cjs"),f=require("./HtmlPageCalculator.cjs"),p=require("./HtmlDocumentResizeObserver.cjs");var m=class extends c.BaseDocument{constructor(t,r,i,a,o,c){super(t,i,a,o),this.options=c,this.eventKeyMap=l.getEventKeyMap(),this.visibilityCandidates=null,this.callbacks=[],this.buildLoadingContent=async()=>{let e=await this.getFormattedVirtualDocument(),t=this.owner.getRenderer()?.documentPreprocesses??[];for(let e of t)try{await e(this)}catch(t){this.logger.error(`preprocess`,`function`,e?.name,t)}let n=e.documentElement.outerHTML;return this.owner.onRenderingFileInject&&(n=await this.owner.onRenderingFileInject(this.extension,n,this.url)),n=n.replace(/<([^<]*)\?xml([^>]*)\?.*?>/i,``),n.match(/<!DOCTYPE[^>]*>/i)||(n=`<!DOCTYPE html>`+n),n},this.processAfterLoaded=async()=>{let t=this.getContentContainer();if(!t)return;t.setAttribute(`data-url`,this.url),this.wrapperContainer.classList.remove(s.HtmlSettings.FileContentContainerHeightClassName);let r=this.owner.getRenderer()?.documentPostprocesses??[];for(let t of r)try{await t(this),await e.BrowserCapabilities.yieldToMain()}catch(e){this.logger.error(`postprocess`,`function`,t?.name,e)}this.loadingLayer?.removeLoadingLayer(),this.loadStatus=`success`,this.visibilityCandidates=null,this.bindDocumentEvents(),this.owner.events.emit(n.EventNames.DocumentLoad,this),await this.internalResetSizes(),this.resizeObserver.observeIframeSize(async()=>{await this.internalResetSizes(),this.getFlipMode()==`page`&&this.pageCalculator.calcNumberOfPages(!0)}),this.loadCompleted(!0)},this.loadCompleted=e=>{for(let t=0;t<this.callbacks.length;t++)try{e?this.callbacks[t].resolve():this.callbacks[t].reject()}catch{}this.callbacks=[]},this.internalResetSizes=async()=>{let e=this.getContentRootElement();if(!e)return;let t=this.getWritingMode();this.resetIframeMinWidthHeight(e,this.getFlipMode(),t)},this.capture=!0,this.eventListener=e=>{let t=this.eventKeyMap.get(e.type);t&&this.owner.events.emit(t,e,this)},this.pageCalculator=new f.HtmlPageCalculator(this,r,c),this.logger=this.owner.loggerFactory.getLogger(this.constructor.name),this.resizeObserver=new p.HtmlDocumentResizeObserver(this,this.owner.events)}get inIframe(){return!0}getWritingMode(){return this.options.writingMode??`horizontal-tb`}async load(){await new Promise(async(i,o)=>{if(this.loadStatus==`success`){i();return}if(this.callbacks.push({resolve:i,reject:o}),this.loadStatus!=`loading`){this.loadStatus=`loading`,this.loadingLayer=await this.owner.services.get(`loadLayer`),this.loadingLayer?.setDoc(this),a.emptyElement(this.wrapperContainer),this.loadingLayer.removeLoadingLayer(),this.loadingLayer.loadLoadingLayer();try{if(this.inIframe){if(!this.iframe){let i=r.readerPrefixName+t.getUuid(!0);this.iframe=d.createIframe(this.wrapperContainer.ownerDocument,i,this.options.forceScroll),this.options.forceScroll?this.iframe.removeAttribute(`scrolling`):this.iframe.setAttribute(`scrolling`,`no`);let a=await this.buildLoadingContent();await e.BrowserCapabilities.yieldToMain(),this.wrapperContainer.appendChild(this.iframe),await e.BrowserCapabilities.yieldToMain(),this.iframe.addEventListener(`load`,async()=>{await this.processAfterLoaded()},!1),this.iframe.addEventListener(`error`,e=>{this.loadingLayer?.removeLoadingLayer(),this.loadStatus=`fail`,this.iframe=void 0,this.loadingLayer?.setReloadButton(),this.logger.error(e),this.owner.events.emit(n.EventNames.DocumentLoadFailed,this,e),this.loadCompleted(!0)},!1);let o=this.iframe.contentDocument;this.options.preferSrcdoc&&`srcdoc`in this.iframe||!(`write`in o)?this.iframe.srcdoc=a:(o.open(),o.write(a),o.close(),await e.BrowserCapabilities.yieldToMain())}}else{let t=await this.buildLoadingContent();a.setElementHtml(this.wrapperContainer,t),await this.processAfterLoaded(),await e.BrowserCapabilities.yieldToMain()}}catch(e){this.logger.error(e),this.owner?.context?(this.loadingLayer?.removeLoadingLayer(),this.loadStatus=`fail`,this.iframe=void 0,this.loadingLayer?.setReloadButton(),this.owner.events.emit(n.EventNames.DocumentLoadFailed,this,e?.toString()),this.loadCompleted(!0)):this.loadCompleted(!0)}finally{await this.loadingLayer?.dispose(),this.loadingLayer=void 0}}})}resetIframeMinWidthHeight(e,t,n){if(e){if(t==`scroll`){if(this.iframe){if(this.isVerticalWriting(n)){let t=e.scrollHeight;this.iframe.style.willChange=`transform`,this.iframe.style.removeProperty(`min-width`),this.iframe.style.minHeight=t+`px`,this.iframe.style.removeProperty(`will-change`),this.iframe.style.removeProperty(`transform`)}else{let t=e.getBoundingClientRect().height;this.iframe.style.willChange=`transform`,this.iframe.style.removeProperty(`min-width`),this.iframe.style.minHeight=Math.round(t)+`px`,this.iframe.style.removeProperty(`will-change`),this.iframe.style.removeProperty(`transform`)}}}else if(this.iframe){this.iframe.style.removeProperty(`min-height`),this.iframe.style.removeProperty(`min-width`);let t=e.scrollWidth,n=i.getDocumentBody(e.ownerDocument).getBoundingClientRect().width,r=Math.min(t,n);this.iframe.style.minWidth=r+`px`}}}async getContent(){return this.docContent?this.docContent:(this.docContent=await(await this.fileParser.getTextDocument(this.url)).getPlaintext(),this.docContent.length>this.options.singleDocMaxSize?d.getTooBigHtmlTemplate(this.docContent.length):this.docContent)}async getFormattedVirtualDocument(){if(this.formattedVirtualDocument)return this.formattedVirtualDocument;let e=await this.fileParser.getTextDocument(this.url);return this.formattedVirtualDocument=await e.getFormattedDocument(),this.formattedVirtualDocument}async getText(e){return await(await this.fileParser.getTextDocument(this.url)).getPlaintext(e)}internalGetNumberOfPages(){let e=1;return this.getFlipMode()==`page`&&(e=this.pageCalculator.calcNumberOfPages()),e}async getNumberOfPages(){return await this.load(),this.internalGetNumberOfPages()}async getPageNumber(e){return this.pageCalculator.getPageNumber(e)}getContentRootElement(){return this.inIframe?this.iframe?.contentDocument?.documentElement:this.wrapperContainer}getContentContainer(){return this.inIframe?i.getDocumentBody(this.iframe?.contentDocument):this.wrapperContainer}async getVirtualContentContainer(e){if(e){let e=await this.fileParser.getTextDocument(this.url);return i.getDocumentBody(await e.getFormattedDocument())}let t=await this.getFormattedVirtualDocument();return i.getDocumentBody(t)}getVisibleElements(e){if(this.loadStatus!=`success`)return[];let t=this.getContentContainer(),n=t?.ownerDocument?.defaultView;if(!t||!n)return[];this.visibilityCandidates||=u.collectContentUnitElements(t,{htmlBlockTags:this.options.htmlBlockTags});let r=this.getFlipMode()==`scroll`?this.owner.optionsProvider.getHeaderHeight():0,i=o.resolveVisibleViewportInContentWindow(n,{topInset:r});return i?o.getOrderedElementsIntersectingRect(this.visibilityCandidates,i,{writingMode:this.getWritingMode(),fullVisible:e}):[]}async dispose(){this.owner.events.emit(n.EventNames.DocumentDisposing,this),this.unbindDocumentEvents(),this.resizeObserver.unobserveIframeSize(),this.callbacks?.splice(0),this.visibilityCandidates=null;let e=this.getWrapperContainer();e.classList.add(s.HtmlSettings.FileContentContainerHeightClassName),e.removeChild(this.iframe),a.emptyElement(this.wrapperContainer),this.iframe=void 0,this.formattedVirtualDocument=null,await super.dispose()}bindDocumentEvents(){let e=this.inIframe?this.getContentContainer().ownerDocument:this.getContentRootElement();for(let t of this.eventKeyMap.keys())e.addEventListener(t,this.eventListener,this.capture)}unbindDocumentEvents(){let e=this.inIframe?this.getContentContainer().ownerDocument:this.getContentRootElement();for(let t of this.eventKeyMap.keys())e.removeEventListener(t,this.eventListener,this.capture)}isVerticalWriting(e){return e==`vertical-lr`||e==`vertical-rl`}getFlipMode(){return this.options.forceScroll?`scroll`:this.options.flipMode}};exports.HtmlDocument=m;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/EventNames.cjs"),t=require("../../../../kernal/common/uuid.cjs"),n=require("../../../../kernal/web/BrowserCapabilities.cjs"),r=require("../../../../kernal/Constants.cjs"),i=require("../../../../kernal/html/finder.cjs"),a=require("../../../../kernal/html/dom.cjs"),o=require("../../../../kernal/web/scheduler.cjs"),s=require("../../../../kernal/html/geometry.cjs"),c=require("../../../base/renderer/BaseDocument.cjs"),l=require("../../HtmlSettings.cjs"),u=require("../../../base/renderer/eventKeys.cjs"),d=require("../visibilityCandidates.cjs"),f=require("../layout/resolveLayoutRoute.cjs"),p=require("../../fileParser/IHtmlFileParser.cjs"),m=require("../layout/ViewportCssVariableNames.cjs"),h=require("../html/template.cjs"),g=require("./HtmlPageCalculator.cjs"),_=require("./HtmlSymbolCalclator.cjs"),v=require("./HtmlDocumentResizeObserver.cjs"),y=require("../location/HtmlLayoutStatePreserver.cjs"),b=require("../location/remapStoredPageNumber.cjs");var x=class extends c.BaseDocument{constructor(t,n,r,i,a,s){super(t,r,i,a),this.options=s,this.eventKeyMap=u.getEventKeyMap(),this.visibilityCandidates=null,this.callbacks=[],this.retainLoadingLayer=!1,this.waitForRevealPaint=async()=>{await o.yieldToMain(),await new Promise(e=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>e())})}),await new Promise(e=>{window.setTimeout(e,120)}),await this.waitForVisibleImagesReady()},this.waitForVisibleImagesReady=async()=>{let e=this.getContentContainer(),t=e?.ownerDocument?.defaultView;if(!e||!t)return;let n=[...e.querySelectorAll(`img`),...e.getElementsByTagName(`image`)];if(n.length==0)return;let r=t.innerHeight||e.clientHeight,i=n.filter(e=>{let t=e.getBoundingClientRect();return t.bottom>-200&&t.top<r+200});i.length!=0&&await Promise.race([Promise.all(i.map(e=>this.waitForImageReady(e))),new Promise(e=>{window.setTimeout(e,800)})])},this.waitForImageReady=e=>this.isImageReady(e)?Promise.resolve():new Promise(t=>{let n=!1,r=()=>{n||(n=!0,e.removeEventListener(`load`,r),e.removeEventListener(`error`,r),i.disconnect(),t())},i=new MutationObserver(()=>{this.isImageReady(e)&&r()});i.observe(e,{attributes:!0,attributeFilter:[`src`,`href`,`data-load-state`]}),e.addEventListener(`load`,r),e.addEventListener(`error`,r),window.setTimeout(r,800)}),this.isImageReady=e=>{let t=e.getAttribute(`data-load-state`);if(t==`loaded`||t==`fail`)return!0;let n=e.ownerDocument.defaultView?.window.HTMLImageElement;if(!n||!(e instanceof n))return!1;let r=e.currentSrc||e.src;return!r||r.startsWith(`data:image/svg+xml`)?!1:e.complete&&e.naturalWidth>0},this.bringLoadingLayerToFront=()=>{let e=this.wrapperContainer.querySelector(`div[data-type='loading-layer']`);e&&this.wrapperContainer.appendChild(e)},this.fadeOutCover=async(e=200)=>{let t=this.wrapperContainer.querySelector(`div[data-type='loading-layer']`);if(!t)return;let n=Math.max(0,e);t.style.pointerEvents=`none`,t.style.transition=`opacity ${n}ms ease`,t.style.opacity=`0`,await new Promise(e=>{let r=!1,i=()=>{r||(r=!0,t.removeEventListener(`transitionend`,i),e())};t.addEventListener(`transitionend`,i),window.setTimeout(i,n+50)})},this.releaseLoadingLayer=async()=>{this.loadingLayer?.removeLoadingLayer(),await this.loadingLayer?.dispose(),this.loadingLayer=void 0},this.buildLoadingContent=async()=>{let e=await this.getFormattedVirtualDocument(),t=this.owner.getRenderer()?.documentPreprocesses??[];for(let e of t)try{await e(this)}catch(t){this.logger.error(`preprocess`,`function`,e?.name,t)}let n=e.documentElement.outerHTML.replace(/<([^<]*)\?xml([^>]*)\?.*?>/i,``);return n.match(/<!DOCTYPE[^>]*>/i)||(n=`<!DOCTYPE html>`+n),n},this.processAfterLoaded=async()=>{let t=this.getContentContainer();if(!t)return;t.setAttribute(`data-url`,this.url);let n=this.captureLayoutState(),r=f.getLayoutGeometry(this.options).iframeGrow==`width`;r||this.wrapperContainer.classList.remove(l.HtmlSettings.FileContentContainerHeightClassName);let i=this.owner.getRenderer()?.documentPostprocesses??[];for(let e of i)try{await e(this),await o.yieldToMain()}catch(t){this.logger.error(`postprocess`,`function`,e?.name,t)}await this.layoutStatePreserver.waitUntilPageTransformStable(),this.resetLayoutSizes(),r&&this.wrapperContainer.classList.remove(l.HtmlSettings.FileContentContainerHeightClassName),await this.restoreLayoutState(n),this.retainLoadingLayer||await this.releaseLoadingLayer(),this.loadStatus=`success`,this.visibilityCandidates=null,this.bindDocumentEvents(),this.owner.events.emit(e.EventNames.DocumentLoad,this),this.resizeObserver.observeIframeSize(async()=>{let e=b.shouldKeepPageEndOnContentGrow(this.owner.context.currentLocation,this.url),t=e?this.captureLayoutState():null;if(this.resetLayoutSizes(),this.getFlipMode()==`page`&&this.pageCalculator.calcNumberOfPages(!0),e&&t){await this.restoreLayoutState(t);let e=this.internalGetNumberOfPages(),n=this.owner.context.currentLocation;n?.url==this.url&&(n.current=e,n.total=e)}}),this.loadCompleted(!0)},this.loadCompleted=e=>{for(let t=0;t<this.callbacks.length;t++)try{e?this.callbacks[t].resolve():this.callbacks[t].reject()}catch{}this.callbacks=[]},this.capture=!0,this.eventListener=e=>{let t=this.eventKeyMap.get(e.type);t&&this.owner.events.emit(t,e,this)},this.pageCalculator=new g.HtmlPageCalculator(this,n,s),this.symbolCalclator=new _.HtmlSymbolCalclator(this,p.asHtmlFileParser(r).symbolMeasure),this.layoutStatePreserver=new y.HtmlLayoutStatePreserver(this,n,s),this.logger=this.owner.loggerFactory.getLogger(this.constructor.name),this.resizeObserver=new v.HtmlDocumentResizeObserver(this,this.owner.events)}get inIframe(){return!0}async load(){await new Promise(async(i,s)=>{if(this.loadStatus==`success`){i();return}if(this.callbacks.push({resolve:i,reject:s}),this.loadStatus!=`loading`){this.loadStatus=`loading`,this.loadingLayer=await this.owner.services.get(`loadLayer`),this.loadingLayer?.setDoc(this),a.emptyElement(this.wrapperContainer),this.loadingLayer.removeLoadingLayer(),this.loadingLayer.loadLoadingLayer(),await o.yieldToMain();try{if(this.inIframe){if(!this.iframe){let i=r.readerPrefixName+t.getUuid(!0);this.iframe=h.createIframe(this.wrapperContainer.ownerDocument,i,this.options.forceScroll,f.getLayoutGeometry(this.options)),this.options.forceScroll?this.iframe.removeAttribute(`scrolling`):this.iframe.setAttribute(`scrolling`,`no`);let a=await this.buildLoadingContent();await o.yieldToMain(),this.wrapperContainer.appendChild(this.iframe),this.bringLoadingLayerToFront(),await o.yieldToMain(),this.iframe.addEventListener(`load`,async()=>{await this.processAfterLoaded()},!1),this.iframe.addEventListener(`error`,t=>{this.retainLoadingLayer=!1,this.loadingLayer?.removeLoadingLayer(),this.loadStatus=`fail`,this.iframe=void 0,this.loadingLayer?.setReloadButton(),this.logger.error(t),this.owner.events.emit(e.EventNames.DocumentLoadFailed,this,t),this.loadCompleted(!0)},!1),n.BrowserCapabilities.isFirefox()&&(this.iframe.srcdoc=`<!DOCTYPE html><html><head></head><body></body></html>`);let s=this.iframe.contentDocument;this.options.preferSrcdoc&&`srcdoc`in this.iframe||!(`write`in s)?this.iframe.srcdoc=a:(s.open(),s.write(a),s.close(),await o.yieldToMain())}}else{let e=await this.buildLoadingContent();a.setElementHtml(this.wrapperContainer,e),await this.processAfterLoaded(),await o.yieldToMain()}}catch(t){this.logger.error(t),this.retainLoadingLayer=!1,this.owner?.context?(this.loadingLayer?.removeLoadingLayer(),this.loadStatus=`fail`,this.iframe=void 0,this.loadingLayer?.setReloadButton(),this.owner.events.emit(e.EventNames.DocumentLoadFailed,this,t?.toString()),this.loadCompleted(!0)):(await this.releaseLoadingLayer(),this.loadCompleted(!0))}}})}prepareCoveredLoad(){this.retainLoadingLayer=!0}async revealCoveredLoad(){this.retainLoadingLayer=!1;try{await this.waitForRevealPaint(),await this.fadeOutCover()}finally{await this.releaseLoadingLayer()}}resetLayoutSizes(){this.resetIframeMinSize()}captureLayoutState(){return this.layoutStatePreserver.capture()}async restoreLayoutState(e){await this.layoutStatePreserver.restore(e)}resetIframeMinSize(){let e=this.getContentRootElement();if(!e||!this.iframe)return;let t=f.getLayoutGeometry(this.options),n=i.getDocumentBody(e.ownerDocument);if(this.iframe.style.removeProperty(`transform`),this.iframe.style.removeProperty(`will-change`),t.useColumnLayout){this.growIframeToColumnOverflow(e,n,t.pageAxis),this.pageCalculator.calcNumberOfPages(!0);return}if(t.iframeGrow==`width`){this.iframe.style.removeProperty(`min-height`),this.iframe.style.removeProperty(`min-width`);let t=this.getParentContentHeight(this.iframe.parentElement)||this.iframe.clientHeight;this.iframe.style.height=t?t+`px`:`var(${m.ViewportCssVariableNames.ContentContainerHeight})`,this.iframe.style.width=`auto`,t&&(e.style.height=t+`px`,e.style.maxHeight=t+`px`,n&&(n.style.height=t+`px`,n.style.maxHeight=t+`px`)),this.iframe.offsetWidth,this.iframe.style.minWidth=Math.max(1,e.scrollWidth)+`px`;return}this.clearInlineContentBox(e,n),this.iframe.style.removeProperty(`min-width`),this.iframe.style.removeProperty(`min-height`),this.iframe.style.setProperty(`width`,this.options.forceScroll?`100%`:`var(${m.ViewportCssVariableNames.ContentContainerWidth})`),this.iframe.style.height=`auto`,this.iframe.offsetHeight;let r=Math.max(1,e.scrollHeight,n?.scrollHeight??0);this.iframe.style.setProperty(`height`,`var(${m.ViewportCssVariableNames.ContentContainerHeight})`),this.iframe.style.minHeight=Math.round(r)+`px`}growIframeToColumnOverflow(e,t,n){this.clearInlineContentBox(e,t),this.iframe.style.removeProperty(`min-width`),this.iframe.style.removeProperty(`min-height`);let r=this.getPageBoxSize();this.lockIframeToPageBox(r);let i=this.iframe.parentElement,a=i?.style.width??``,o=i?.style.minWidth??``,s=r.width;i&&n==`x`&&s>0&&(i.style.width=`${s}px`,i.style.minWidth=`${s}px`);let c=this.beginColumnOverflowMeasure(e,t,n);try{if(n==`y`){this.iframe.offsetHeight,e.offsetHeight;let n=this.measureOccupiedColumnLength(e,t,`y`,r.height);this.iframe.style.setProperty(`height`,`var(${m.ViewportCssVariableNames.ContentContainerHeight})`),this.iframe.style.minHeight=n+`px`;return}this.iframe.offsetWidth,e.offsetWidth;let i=this.measureOccupiedColumnLength(e,t,`x`,r.width);this.iframe.style.setProperty(`width`,`var(${m.ViewportCssVariableNames.ContentContainerWidth})`),this.iframe.style.minWidth=i+`px`}finally{c(),i&&(a?i.style.width=a:i.style.removeProperty(`width`),o?i.style.minWidth=o:i.style.removeProperty(`min-width`))}}measureOccupiedColumnLength(e,t,n,r){let i=r>0?r:1,a=this.getColumnGap(),o=i+a,s=this.measureContentExtent(e,t,n),c=Math.max(1,Math.floor(((s>1?s:i)-1)/o)+1);return Math.round(c*i+Math.max(0,c-1)*a)}measureContentExtent(e,t,n){let r=e.getBoundingClientRect(),i=this.getLastContentElement(t);if(i){let e=i.getBoundingClientRect(),t=n==`y`?e.bottom-r.top:e.right-r.left;if(t>1)return t}if(t){let e=t.getBoundingClientRect();return n==`y`?e.height:e.width}return n==`y`?e.scrollHeight:e.scrollWidth}getLastContentElement(e){if(!e)return null;let t=e.querySelector(`[${r.LastElementAttributeName}="true"]`);return t instanceof HTMLElement?t:e.lastElementChild instanceof HTMLElement?e.lastElementChild:null}getColumnGap(){let e=this.owner.getRenderer()?.getRendererContainer(),t=parseFloat(e?.getAttribute(`data-column-gap`)??``);return Number.isFinite(t)&&t>0?t:0}getPageBoxSize(){let e=this.owner.getRenderer()?.getRendererContainer(),t=parseFloat(e?.getAttribute(`data-column-width`)??``)||Math.round(this.iframe.getBoundingClientRect().width),n=parseFloat(e?.getAttribute(`data-page-height`)??``)||Math.round(this.iframe.getBoundingClientRect().height);return{width:Number.isFinite(t)?Math.round(t):0,height:Number.isFinite(n)?Math.round(n):0}}lockIframeToPageBox(e=this.getPageBoxSize()){e.width>0?this.iframe.style.width=`${e.width}px`:this.iframe.style.setProperty(`width`,`var(${m.ViewportCssVariableNames.ContentContainerWidth})`),e.height>0?this.iframe.style.height=`${e.height}px`:this.iframe.style.setProperty(`height`,`var(${m.ViewportCssVariableNames.ContentContainerHeight})`),this.iframe.offsetWidth}beginColumnOverflowMeasure(e,t,n){let r=e.style.minWidth,i=e.style.direction,a=t?.style.direction??``,o=e.classList.contains(l.HtmlSettings.RtlProgressionClassName),s=f.getLayoutGeometry(this.options).measureColumnsAsLtr;return e.style.setProperty(`min-width`,`0`,`important`),s&&(e.style.setProperty(`direction`,`ltr`,`important`),t?.style.setProperty(`direction`,`ltr`,`important`),e.classList.remove(l.HtmlSettings.RtlProgressionClassName)),()=>{r?e.style.minWidth=r:e.style.removeProperty(`min-width`),s&&(i?e.style.direction=i:e.style.removeProperty(`direction`),t&&(a?t.style.direction=a:t.style.removeProperty(`direction`)),o&&e.classList.add(l.HtmlSettings.RtlProgressionClassName))}}clearInlineContentBox(e,t){e.style.removeProperty(`height`),e.style.removeProperty(`max-height`),e.style.removeProperty(`width`),t&&(t.style.removeProperty(`height`),t.style.removeProperty(`max-height`),t.style.removeProperty(`width`))}getParentContentHeight(e){if(!e)return 0;let t=e.ownerDocument.defaultView?.getComputedStyle(e),n=parseFloat(t?.paddingTop??`0`)||0,r=parseFloat(t?.paddingBottom??`0`)||0;return Math.max(0,Math.round(e.clientHeight-n-r))}async getContent(){return this.docContent?this.docContent:(this.docContent=await(await this.fileParser.getTextDocument(this.url)).getPlaintext(),this.docContent.length>this.options.singleDocMaxSize?h.getTooBigHtmlTemplate(this.docContent.length):this.docContent)}async getFormattedVirtualDocument(){if(this.formattedVirtualDocument)return this.formattedVirtualDocument;let e=await this.fileParser.getTextDocument(this.url);return this.formattedVirtualDocument=await e.getFormattedDocument(),this.formattedVirtualDocument}async getText(e){return await(await this.fileParser.getTextDocument(this.url)).getPlaintext(e)}internalGetNumberOfPages(){let e=1;return this.getFlipMode()==`page`&&(e=this.pageCalculator.calcNumberOfPages()),e}async getNumberOfPages(){return await this.load(),this.internalGetNumberOfPages()}async getPageNumber(e){return this.pageCalculator.getPageNumber(e)}getContentRootElement(){return this.inIframe?this.iframe?.contentDocument?.documentElement:this.wrapperContainer}getContentContainer(){return this.inIframe?i.getDocumentBody(this.iframe?.contentDocument):this.wrapperContainer}async getVirtualContentContainer(e){if(e){let e=await this.fileParser.getTextDocument(this.url);return i.getDocumentBody(await e.getFormattedDocument())}let t=await this.getFormattedVirtualDocument();return i.getDocumentBody(t)}getVisibleElements(e){if(this.loadStatus!=`success`)return[];let t=this.getContentContainer(),n=t?.ownerDocument?.defaultView;if(!t||!n)return[];this.visibilityCandidates||=d.collectContentUnitElements(t,{htmlBlockTags:this.options.htmlBlockTags});let r=this.owner.getRenderer()?.getRendererContainer().getBoundingClientRect().top,i=s.resolveVisibleViewportInContentWindow(n,{topInset:r});return i?s.getOrderedElementsIntersectingRect(this.visibilityCandidates,i,{writingMode:f.getLayoutGeometry(this.options).writingMode,fullVisible:e}):[]}async dispose(){let t=this.captureLayoutState();this.owner.events.emit(e.EventNames.DocumentDisposing,this),this.unbindDocumentEvents(),this.resizeObserver.unobserveIframeSize(),this.callbacks?.splice(0),this.visibilityCandidates=null,this.retainLoadingLayer=!1,await this.releaseLoadingLayer();let n=this.getWrapperContainer();n.classList.add(l.HtmlSettings.FileContentContainerHeightClassName),this.iframe&&n.contains(this.iframe)&&n.removeChild(this.iframe),a.emptyElement(this.wrapperContainer),this.iframe=void 0,this.formattedVirtualDocument=null,await this.symbolCalclator.dispose(),await this.restoreLayoutState(t),await super.dispose()}bindDocumentEvents(){let e=this.inIframe?this.getContentContainer().ownerDocument:this.getContentRootElement();for(let t of this.eventKeyMap.keys())e.addEventListener(t,this.eventListener,this.capture)}unbindDocumentEvents(){let e=this.inIframe?this.getContentContainer()?.ownerDocument:this.getContentRootElement();if(e)for(let t of this.eventKeyMap.keys())e?.removeEventListener(t,this.eventListener,this.capture)}getFlipMode(){return this.options.forceScroll?`scroll`:this.options.flipMode}};exports.HtmlDocument=x;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { IFileParser, TextFormatOptions, SpineFile } from '../../../../kernal';
|
|
1
|
+
import { IFileParser, LocationState, TextFormatOptions, SpineFile } from '../../../../kernal';
|
|
2
2
|
import { Reader } from '../../../../kernal/Reader';
|
|
3
3
|
import { IHtmlDocument } from '../IHtmlDocument';
|
|
4
4
|
import { IRendererViewport } from '../../../../kernal/IRendererViewport';
|
|
5
5
|
import { BaseDocument } from '../../../base/renderer/BaseDocument';
|
|
6
6
|
import { HtmlOptions } from '../../HtmlOptions';
|
|
7
7
|
import { HtmlLayoutMetrics } from '../layout/HtmlLayoutMetrics';
|
|
8
|
+
import { HtmlSymbolCalclator } from './HtmlSymbolCalclator';
|
|
8
9
|
|
|
9
10
|
export declare class HtmlDocument extends BaseDocument implements IHtmlDocument {
|
|
10
11
|
private readonly options;
|
|
@@ -13,26 +14,49 @@ export declare class HtmlDocument extends BaseDocument implements IHtmlDocument
|
|
|
13
14
|
private iframe;
|
|
14
15
|
private loadingLayer;
|
|
15
16
|
private readonly pageCalculator;
|
|
17
|
+
readonly symbolCalclator: HtmlSymbolCalclator;
|
|
16
18
|
private readonly eventKeyMap;
|
|
17
19
|
private readonly resizeObserver;
|
|
20
|
+
private readonly layoutStatePreserver;
|
|
18
21
|
private visibilityCandidates;
|
|
19
22
|
constructor(owner: Reader, viewport: IRendererViewport<HtmlLayoutMetrics>, fileParser: IFileParser, wrapperContainer: HTMLElement, spineFile: SpineFile, options: HtmlOptions);
|
|
20
23
|
get inIframe(): boolean;
|
|
21
|
-
private getWritingMode;
|
|
22
24
|
private callbacks;
|
|
25
|
+
private retainLoadingLayer;
|
|
23
26
|
load(): Promise<void>;
|
|
27
|
+
prepareCoveredLoad(): void;
|
|
28
|
+
revealCoveredLoad(): Promise<void>;
|
|
29
|
+
private waitForRevealPaint;
|
|
30
|
+
private waitForVisibleImagesReady;
|
|
31
|
+
private waitForImageReady;
|
|
32
|
+
private isImageReady;
|
|
33
|
+
private bringLoadingLayerToFront;
|
|
34
|
+
private fadeOutCover;
|
|
35
|
+
private releaseLoadingLayer;
|
|
24
36
|
private buildLoadingContent;
|
|
25
37
|
private processAfterLoaded;
|
|
26
38
|
private loadCompleted;
|
|
27
|
-
|
|
28
|
-
|
|
39
|
+
resetLayoutSizes(): void;
|
|
40
|
+
captureLayoutState(): LocationState;
|
|
41
|
+
restoreLayoutState(locationState: LocationState): Promise<void>;
|
|
42
|
+
private resetIframeMinSize;
|
|
43
|
+
private growIframeToColumnOverflow;
|
|
44
|
+
private measureOccupiedColumnLength;
|
|
45
|
+
private measureContentExtent;
|
|
46
|
+
private getLastContentElement;
|
|
47
|
+
private getColumnGap;
|
|
48
|
+
private getPageBoxSize;
|
|
49
|
+
private lockIframeToPageBox;
|
|
50
|
+
private beginColumnOverflowMeasure;
|
|
51
|
+
private clearInlineContentBox;
|
|
52
|
+
private getParentContentHeight;
|
|
29
53
|
getContent(): Promise<string>;
|
|
30
54
|
private formattedVirtualDocument;
|
|
31
55
|
private getFormattedVirtualDocument;
|
|
32
56
|
getText(options?: TextFormatOptions): Promise<string>;
|
|
33
57
|
private internalGetNumberOfPages;
|
|
34
58
|
getNumberOfPages(): Promise<number>;
|
|
35
|
-
getPageNumber(
|
|
59
|
+
getPageNumber(target: Element | Range): Promise<number>;
|
|
36
60
|
private getContentRootElement;
|
|
37
61
|
getContentContainer(): HTMLElement;
|
|
38
62
|
getVirtualContentContainer(raw?: boolean): Promise<HTMLElement>;
|
|
@@ -42,6 +66,5 @@ export declare class HtmlDocument extends BaseDocument implements IHtmlDocument
|
|
|
42
66
|
private bindDocumentEvents;
|
|
43
67
|
private unbindDocumentEvents;
|
|
44
68
|
private eventListener;
|
|
45
|
-
private isVerticalWriting;
|
|
46
69
|
private getFlipMode;
|
|
47
70
|
}
|