@foxycape/core 1.1.6 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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/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/package.json +11 -5
- 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 +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/Constants.cjs"),n=require("../../../../kernal/html/finder.cjs"),r=require("../../../../kernal/web/scheduler.cjs");var i=class{constructor(e,i){this.documentsProvider=e,this.htmlOptions=i,this.docImagesMap=new Map,this.elementMap=new Map,this.visibleImages=new Set,this.preloadImageCount=5,this.onDocumentLoad=async e=>{await this.observe(e)},this.onDocumentDisposing=e=>{this.unobserve(e)},this.observeLoadedDocuments=async()=>{let e=this.documentsProvider.getLoadedDocuments();for(let t of e)await this.observe(t)},this.observedName=`observed`,this.observe=async e=>{if(!this.imageIntersectionObserver)return;let i=e.getContentContainer().ownerDocument,a=n.getDocumentBody(i);if(!a||a.getAttribute(this.observedName))return;a.setAttribute(this.observedName,`true`);let o=a.querySelectorAll(`img,image,svg`);for(let i=0;i<o.length;i++){let a=o[i],s=parseInt(a.getAttribute(t.ElementInitialNumberName));if(!(isNaN(s)||s<0)){if((n.compareTagName(a.tagName,`IMG`)||n.compareTagName(a.tagName,`IMAGE`)||n.compareTagName(a.tagName,`SVG`))&&!this.elementMap.has(a)){this.elementMap.set(a,e);let t=this.docImagesMap.get(e);t?t.push(a):this.docImagesMap.set(e,[a]),this.imageIntersectionObserver.observe(a)}i%100==0&&await r.yieldToMain()}}},this.events=this.documentsProvider.owner.events,this.bindEvents()}bindEvents(){this.events.on(e.EventNames.DocumentLoad,this.onDocumentLoad),this.events.on(e.EventNames.DocumentDisposing,this.onDocumentDisposing)}unbindEvents(){this.events.off(e.EventNames.DocumentLoad,this.onDocumentLoad),this.events.off(e.EventNames.DocumentDisposing,this.onDocumentDisposing)}async dispose(){this.unbindEvents(),this.unregister()}register(){this.imageIntersectionObserver=new IntersectionObserver(t=>{for(let e of t){let t=e.target;e.isIntersecting||e.intersectionRatio>0||n.compareTagName(t.tagName,`IMAGE`)?this.visibleImages.add(t):this.visibleImages.delete(t)}if(this.visibleImages.size==0)return;let r=new Map,i=new Set;for(let e of this.visibleImages){let t=this.elementMap.get(e);if(!t)continue;i.add(e);let n=r.get(t);n?n.push(e):r.set(t,[e])}if(r.size==0)return;let a=this.documentsProvider.getRendererContainer().clientWidth,o=this.htmlOptions.flipMode==`page`;for(let[e,t]of r.entries()){let n=this.docImagesMap.get(e);if(!n||n.length==0)continue;let r=new Set(t),s=t[0],c=t[t.length-1],l=n.indexOf(s),u=n.indexOf(c);if(l>0){let e=s.getBoundingClientRect();for(let s=0;s<l;s++){let c=n[l-s];if(c&&(!i.has(c)&&!r.has(c)&&(t.unshift(c),r.add(c)),s>0&&s%this.preloadImageCount==0&&(!o||Math.abs(c.getBoundingClientRect().x-e.x)>2*a)))break}}if(u>=0){let e=c.getBoundingClientRect(),s=n.length;for(let c=0;c<s-u;c++){let s=n[u+c];if(s&&(!i.has(s)&&!r.has(s)&&(t.push(s),r.add(s)),c>0&&c%this.preloadImageCount==0&&(!o||Math.abs(s.getBoundingClientRect().x-e.x)>2*a)))break}}}this.events.emit(e.EventNames.ImageElementsVisible,r)},{rootMargin:`1600px`}),this.observeLoadedDocuments()}unregister(){this.imageIntersectionObserver&&=(this.imageIntersectionObserver.disconnect(),void 0),this.docImagesMap.clear(),this.elementMap.clear(),this.visibleImages.clear()}unobserve(e){let t=this.docImagesMap.get(e)??[];for(let e of t)this.elementMap.delete(e),this.visibleImages.delete(e),this.imageIntersectionObserver?.unobserve(e);this.docImagesMap.delete(e)}};exports.HtmlImageObserver=i;
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { EventNames as e } from "../../../../kernal/EventNames.mjs";
|
|
2
|
+
import { ElementInitialNumberName as t } from "../../../../kernal/Constants.mjs";
|
|
3
|
+
import { compareTagName as n, getDocumentBody as r } from "../../../../kernal/html/finder.mjs";
|
|
4
|
+
import { yieldToMain as i } from "../../../../kernal/web/scheduler.mjs";
|
|
5
5
|
//#region mediaTypes/html/renderer/image/HtmlImageObserver.ts
|
|
6
6
|
var a = class {
|
|
7
|
-
constructor(
|
|
8
|
-
this.documentsProvider =
|
|
7
|
+
constructor(e, a) {
|
|
8
|
+
this.documentsProvider = e, this.htmlOptions = a, this.docImagesMap = /* @__PURE__ */ new Map(), this.elementMap = /* @__PURE__ */ new Map(), this.visibleImages = /* @__PURE__ */ new Set(), this.preloadImageCount = 5, this.onDocumentLoad = async (e) => {
|
|
9
9
|
await this.observe(e);
|
|
10
10
|
}, this.onDocumentDisposing = (e) => {
|
|
11
11
|
this.unobserve(e);
|
|
12
12
|
}, this.observeLoadedDocuments = async () => {
|
|
13
13
|
let e = this.documentsProvider.getLoadedDocuments();
|
|
14
14
|
for (let t of e) await this.observe(t);
|
|
15
|
-
}, this.observedName = "observed", this.observe = async (
|
|
15
|
+
}, this.observedName = "observed", this.observe = async (e) => {
|
|
16
16
|
if (!this.imageIntersectionObserver) return;
|
|
17
|
-
let a =
|
|
17
|
+
let a = e.getContentContainer().ownerDocument, o = r(a);
|
|
18
18
|
if (!o || o.getAttribute(this.observedName)) return;
|
|
19
19
|
o.setAttribute(this.observedName, "true");
|
|
20
20
|
let s = o.querySelectorAll("img,image,svg");
|
|
21
|
-
for (let
|
|
22
|
-
let a = s[
|
|
21
|
+
for (let r = 0; r < s.length; r++) {
|
|
22
|
+
let a = s[r], o = parseInt(a.getAttribute(t));
|
|
23
23
|
if (!(isNaN(o) || o < 0)) {
|
|
24
|
-
if ((
|
|
25
|
-
this.elementMap.set(a,
|
|
26
|
-
let
|
|
27
|
-
|
|
24
|
+
if ((n(a.tagName, "IMG") || n(a.tagName, "IMAGE") || n(a.tagName, "SVG")) && !this.elementMap.has(a)) {
|
|
25
|
+
this.elementMap.set(a, e);
|
|
26
|
+
let t = this.docImagesMap.get(e);
|
|
27
|
+
t ? t.push(a) : this.docImagesMap.set(e, [a]), this.imageIntersectionObserver.observe(a);
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
r % 100 == 0 && await i();
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
}, this.events = this.documentsProvider.owner.events, this.bindEvents();
|
|
33
33
|
}
|
|
34
34
|
bindEvents() {
|
|
35
|
-
this.events.on(
|
|
35
|
+
this.events.on(e.DocumentLoad, this.onDocumentLoad), this.events.on(e.DocumentDisposing, this.onDocumentDisposing);
|
|
36
36
|
}
|
|
37
37
|
unbindEvents() {
|
|
38
|
-
this.events.off(
|
|
38
|
+
this.events.off(e.DocumentLoad, this.onDocumentLoad), this.events.off(e.DocumentDisposing, this.onDocumentDisposing);
|
|
39
39
|
}
|
|
40
40
|
async dispose() {
|
|
41
41
|
this.unbindEvents(), this.unregister();
|
|
42
42
|
}
|
|
43
43
|
register() {
|
|
44
|
-
this.imageIntersectionObserver = new IntersectionObserver((
|
|
45
|
-
for (let
|
|
46
|
-
let
|
|
47
|
-
|
|
44
|
+
this.imageIntersectionObserver = new IntersectionObserver((t) => {
|
|
45
|
+
for (let e of t) {
|
|
46
|
+
let t = e.target;
|
|
47
|
+
e.isIntersecting || e.intersectionRatio > 0 || n(t.tagName, "IMAGE") ? this.visibleImages.add(t) : this.visibleImages.delete(t);
|
|
48
48
|
}
|
|
49
49
|
if (this.visibleImages.size == 0) return;
|
|
50
|
-
let
|
|
50
|
+
let r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set();
|
|
51
51
|
for (let e of this.visibleImages) {
|
|
52
52
|
let t = this.elementMap.get(e);
|
|
53
53
|
if (!t) continue;
|
|
54
54
|
i.add(e);
|
|
55
|
-
let
|
|
56
|
-
|
|
55
|
+
let n = r.get(t);
|
|
56
|
+
n ? n.push(e) : r.set(t, [e]);
|
|
57
57
|
}
|
|
58
|
-
if (
|
|
58
|
+
if (r.size == 0) return;
|
|
59
59
|
let a = this.documentsProvider.getRendererContainer().clientWidth, o = this.htmlOptions.flipMode == "page";
|
|
60
|
-
for (let [e, t] of
|
|
60
|
+
for (let [e, t] of r.entries()) {
|
|
61
61
|
let n = this.docImagesMap.get(e);
|
|
62
62
|
if (!n || n.length == 0) continue;
|
|
63
63
|
let r = new Set(t), s = t[0], c = t[t.length - 1], l = n.indexOf(s), u = n.indexOf(c);
|
|
@@ -76,7 +76,7 @@ var a = class {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
|
-
this.events.emit(
|
|
79
|
+
this.events.emit(e.ImageElementsVisible, r);
|
|
80
80
|
}, { rootMargin: "1600px" }), this.observeLoadedDocuments();
|
|
81
81
|
}
|
|
82
82
|
unregister() {
|
|
@@ -3,4 +3,12 @@ import { IDocument, IDisposable } from '../../../../kernal';
|
|
|
3
3
|
export interface IHtmlImageLoader extends IDisposable {
|
|
4
4
|
preprocessImages(doc: IDocument): Promise<void>;
|
|
5
5
|
loadImages(doc: IDocument, visibleElements: Element[]): Promise<void>;
|
|
6
|
+
persistImageSizes(doc: IDocument, sizes: ImageSizeDescriptor[]): Promise<void>;
|
|
7
|
+
loadImageSizes(doc: IDocument): Promise<ImageSizeDescriptor[]>;
|
|
6
8
|
}
|
|
9
|
+
export type ImageSizeDescriptor = {
|
|
10
|
+
url: string;
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
};
|
|
14
|
+
export type ImageElement = HTMLImageElement | SVGImageElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=`data:image/png;base64,
|
|
1
|
+
var e=`data:image/png;base64,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`;exports.default=e;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region mediaTypes/html/renderer/image/error-image.png
|
|
2
|
-
var e = "data:image/png;base64,
|
|
2
|
+
var e = "data:image/png;base64,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";
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../style/ContentLayoutCssVariableNames.cjs");var t=`var(${e.ContentLayoutCssVariableNames.ColumnBoxWidth})`,n=`var(${e.ContentLayoutCssVariableNames.ColumnBoxHeight})`,r=`var(${e.ContentLayoutCssVariableNames.MaxImageWidthRatio})`,i=`var(${e.ContentLayoutCssVariableNames.MaxImageHeightRatio})`,a=(e,i)=>{let a=`calc(${t} * ${r})`;return{width:a,height:`auto`,"max-width":a,"max-height":`min(${i}px,${n},calc(${t} / ${e} * ${i}))`,"aspect-ratio":`${e} / ${i}`,"object-fit":`contain`}},o=(e,r,i)=>`min(calc(${r}px * ${i}),calc(${n} * ${i}),calc(${t} / ${e} * ${r} * ${i}))`,s=(e,t)=>t&&e?`${e}`:i;exports.getImageFitStyles=a,exports.getImageForcedHeightCss=o,exports.getImageHeightRatioExpr=s;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const getImageFitStyles: (width: number, height: number) => {
|
|
2
|
+
width: string;
|
|
3
|
+
height: string;
|
|
4
|
+
"max-width": string;
|
|
5
|
+
"max-height": string;
|
|
6
|
+
"aspect-ratio": string;
|
|
7
|
+
"object-fit": string;
|
|
8
|
+
};
|
|
9
|
+
export declare const getImageForcedHeightCss: (width: number, height: number, ratioExpr: string) => string;
|
|
10
|
+
export declare const getImageHeightRatioExpr: (maxImageHeightRatio: number, preferRatioNumber?: boolean) => string;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ContentLayoutCssVariableNames as e } from "../style/ContentLayoutCssVariableNames.mjs";
|
|
2
|
+
//#region mediaTypes/html/renderer/image/htmlImageFitStyles.ts
|
|
3
|
+
var t = `var(${e.ColumnBoxWidth})`, n = `var(${e.ColumnBoxHeight})`, r = `var(${e.MaxImageWidthRatio})`, i = `var(${e.MaxImageHeightRatio})`, a = (e, i) => {
|
|
4
|
+
let a = `calc(${t} * ${r})`;
|
|
5
|
+
return {
|
|
6
|
+
width: a,
|
|
7
|
+
height: "auto",
|
|
8
|
+
"max-width": a,
|
|
9
|
+
"max-height": `min(${i}px,${n},calc(${t} / ${e} * ${i}))`,
|
|
10
|
+
"aspect-ratio": `${e} / ${i}`,
|
|
11
|
+
"object-fit": "contain"
|
|
12
|
+
};
|
|
13
|
+
}, o = (e, r, i) => `min(calc(${r}px * ${i}),calc(${n} * ${i}),calc(${t} / ${e} * ${r} * ${i}))`, s = (e, t) => t && e ? `${e}` : i;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { a as getImageFitStyles, o as getImageForcedHeightCss, s as getImageHeightRatioExpr };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/common/text.cjs");var t=`data:image/svg+xml`,n=`foxycape-S2VlcGNhcGU=`,r=(e,r)=>{let i=e>0?Math.round(e):1,a=r>0?Math.round(r):1,o=`<svg xmlns="http://www.w3.org/2000/svg" width="${i}" height="${a}" viewBox="0 0 ${i} ${a}" data-foxycape-placeholder="${n}"></svg>`;return`${t},${encodeURIComponent(o)}`},i=r=>{if(e.isNullOrWhiteSpace(r)||!r.startsWith(t))return!1;let i=r.includes(n);return i||=decodeURIComponent(r).includes(n),i};exports.createHtmlPlaceholderImageUrl=r,exports.isHtmlPlaceholderImageUrl=i;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { isNullOrWhiteSpace as e } from "../../../../kernal/common/text.mjs";
|
|
2
|
+
//#region mediaTypes/html/renderer/image/htmlImagePlaceholderUrl.ts
|
|
3
|
+
var t = "data:image/svg+xml", n = "foxycape-S2VlcGNhcGU=", r = (e, r) => {
|
|
4
|
+
let i = e > 0 ? Math.round(e) : 1, a = r > 0 ? Math.round(r) : 1, o = `<svg xmlns="http://www.w3.org/2000/svg" width="${i}" height="${a}" viewBox="0 0 ${i} ${a}" data-foxycape-placeholder="${n}"></svg>`;
|
|
5
|
+
return `${t},${encodeURIComponent(o)}`;
|
|
6
|
+
}, i = (r) => {
|
|
7
|
+
if (e(r) || !r.startsWith(t)) return !1;
|
|
8
|
+
let i = r.includes(n);
|
|
9
|
+
return i ||= decodeURIComponent(r).includes(n), i;
|
|
10
|
+
};
|
|
11
|
+
//#endregion
|
|
12
|
+
export { r as createHtmlPlaceholderImageUrl, i as isHtmlPlaceholderImageUrl };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/EventNames.cjs"),t=require("../../../../kernal/common/text.cjs"),n=require("../../../../kernal/progress/Progress.cjs"),r=require("../../../../kernal/html/finder.cjs"),i=require("../../../../kernal/html/injector.cjs"),a=require("../../../../kernal/Theme.cjs"),o=require("../../../../kernal/web/scheduler.cjs"),s=require("../../HtmlSettings.cjs"),c=require("./resolveLayoutRoute.cjs"),l=require("./css/hostLayoutCss.cjs"),u=require("./applyLayoutClasses.cjs"),d=require("../style/ContentLayoutCssVariableNames.cjs"),f=require("./pageStripRouteChange.cjs");var p=class{constructor(e,t,n,r,i){this.owner=e,this.documentsProvider=t,this.renererviewport=n,this.progress=r,this.htmlOptions=i}async applyStyles(){let e=this.documentsProvider.getLoadedDocuments();for(let t of e)await this.applyDocStyles(t)}async applyDocStyles(e){let t=(e.getContentContainer()??await e.getVirtualContentContainer()).ownerDocument.documentElement,n=c.getLayoutGeometry(this.htmlOptions),r=this.renererviewport.getLayoutMetrics();i.injectCssContent(t.ownerDocument,this.prepareDocStyles(t.ownerDocument),!0,`columns-layout-css`);let l=await this.owner.services.get(`themeProvider`),d=l?l.getCurrentTheme():new a.Theme,f=await this.getCssVariables(d,r,n);for(let[e,n]of f)t.style.setProperty(e,n);u.applyContentLayoutClass(t,n),t.removeAttribute(s.HtmlSettings.HtmlDocumentNumperOfPagesPropertyName),e.resetLayoutSizes(),await o.yieldToMain()}async getCssVariables(e,n,r){let i=r.flipMode==`scroll`?`none`:n.columnHeight+`px`,o=r.getColumnWidthForCss(n.columnWidth,n.pageHeight),s=new Map;return s.set(d.ContentLayoutCssVariableNames.ColumnWidth,o+`px`),s.set(d.ContentLayoutCssVariableNames.ColumnHeight,n.columnHeight+`px`),s.set(d.ContentLayoutCssVariableNames.ColumnMaxHeight,i),s.set(d.ContentLayoutCssVariableNames.ContentShadowWidth,n.shadowWidth+`px`),s.set(d.ContentLayoutCssVariableNames.ColumnWidthNumber,n.columnWidth.toString()),s.set(d.ContentLayoutCssVariableNames.ColumnHeightNumber,n.columnHeight.toString()),s.set(d.ContentLayoutCssVariableNames.ColumnBoxWidth,n.columnWidth+`px`),s.set(d.ContentLayoutCssVariableNames.ColumnBoxHeight,n.columnHeight+`px`),s.set(d.ContentLayoutCssVariableNames.PageWidth,n.pageWidth+`px`),s.set(d.ContentLayoutCssVariableNames.PageHeight,n.pageHeight+`px`),s.set(d.ContentLayoutCssVariableNames.PageMoveLength,n.pageMoveLength+`px`),s.set(d.ContentLayoutCssVariableNames.ColumnGap,this.htmlOptions.columnGap+`px`),this.htmlOptions.enableColumnRule&&this.htmlOptions.columns>1&&!t.isNullOrWhiteSpace(e.columnRuleColor)?s.set(a.Theme.ColumnRuleColor,e.columnRuleColor):s.set(a.Theme.ColumnRuleColor,`none`),s.set(d.ContentLayoutCssVariableNames.MaxImageHeightRatio,`${this.htmlOptions.maxImageHeightRatio}`),s.set(d.ContentLayoutCssVariableNames.MaxImageWidthRatio,`${this.htmlOptions.maxImageWidthRatio}`),s.set(d.ContentLayoutCssVariableNames.ImagePlaceholderColor,`color-mix(in srgb, var(${a.Theme.ContentTextColor}) 8%, var(${a.Theme.ContentBackground}))`),s}prepareDocStyles(e){let t=r.getDocumentBody(e).lastElementChild;return t&&t.classList.add(s.HtmlSettings.WithoutMarginBottomCssName),l.DOCUMENT_LAYOUT_CSS}async changeLayout(t){let n=t.flipMode!==void 0&&this.htmlOptions.flipMode!==t.flipMode,r=t.columns!==void 0&&(this.htmlOptions.columns!==t.columns.columns||this.htmlOptions.autoColumns!==t.columns.autoColumns),i=t.writingMode!==void 0&&this.htmlOptions.writingMode!==t.writingMode,a=t.direction!==void 0&&this.htmlOptions.direction!==t.direction;if(!n&&!r&&!i&&!a)return;if(!this.owner.context.currentLocation?.precise){let e=await this.progress.getProgress(!0);e&&(this.owner.context.currentLocation=e.location)}let o={};n&&(o.flipMode={previous:this.htmlOptions.flipMode,current:t.flipMode},this.htmlOptions.flipMode=t.flipMode),r&&t.columns&&(o.columns={previous:this.htmlOptions.columns,current:t.columns.columns},o.autoColumns={previous:this.htmlOptions.autoColumns,current:t.columns.autoColumns},this.htmlOptions.columns=t.columns.columns,this.htmlOptions.autoColumns=t.columns.autoColumns),i&&(o.writingMode={previous:this.htmlOptions.writingMode,current:t.writingMode},this.htmlOptions.writingMode=t.writingMode),a&&(o.direction={previous:this.htmlOptions.direction,current:t.direction},this.htmlOptions.direction=t.direction);let s=(a||i)&&c.getLayoutGeometry(this.htmlOptions).flipMode==`page`;s&&(this.capturePageReloadLocation(),f.freezePageStripForRouteChange(this.renererviewport.getRendererContainer()));try{this.renererviewport.applyCssVariables();let t=this.documentsProvider.getLoadedDocuments();for(let e of t)await this.applyDocStyles(e);if(this.owner.events.emit(e.EventNames.LayoutChange,o),this.pageReloadLocation){let e=this.pageReloadLocation;this.pageReloadLocation=void 0,await this.documentsProvider.load(e,!0);return}await this.documentsProvider.reload()}finally{if(s){let e=this.renererviewport.getRendererContainer();await f.waitForPageStripPaint(),f.unfreezePageStripForRouteChange(e)}}}capturePageReloadLocation(){let e=this.documentsProvider,t=this.owner.context.currentLocation,r=t?.url&&e.getDocument(t.url)||e.getFirstVisibleDocument();if(!r)return;let i=new n.FileLocation(r.url,1,`page`);i.current=Math.max(1,e.getCurrentPageNumber(r));let a=r.getContentContainer()?.ownerDocument?.documentElement,o=parseInt(a?.getAttribute(s.HtmlSettings.HtmlDocumentNumperOfPagesPropertyName)??``,10);Number.isFinite(o)&&o>0&&(i.total=o),this.pageReloadLocation=i}};exports.HtmlRendererLayout=p;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HtmlLayoutMetrics } from './HtmlLayoutMetrics';
|
|
2
2
|
import { HtmlOptions } from '../../HtmlOptions';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { IDocumentsProvider, IProgressTracker, Reader } from '../../../../kernal';
|
|
4
|
+
import { HtmlChangeLayoutOptions, IHtmlRendererLayout } from './IHtmlRendererLayout';
|
|
5
5
|
import { IRendererViewport } from '../../../../kernal/IRendererViewport';
|
|
6
6
|
import { IHtmlDocument } from '../IHtmlDocument';
|
|
7
7
|
|
|
@@ -11,16 +11,12 @@ export declare class HtmlRendererLayout implements IHtmlRendererLayout {
|
|
|
11
11
|
private readonly renererviewport;
|
|
12
12
|
private readonly progress;
|
|
13
13
|
private readonly htmlOptions;
|
|
14
|
-
private
|
|
15
|
-
private readonly DocumentPageModeCssName;
|
|
16
|
-
private readonly WritingVerticalScollDocumentLayoutCssName;
|
|
14
|
+
private pageReloadLocation;
|
|
17
15
|
constructor(owner: Reader, documentsProvider: IDocumentsProvider<IHtmlDocument>, renererviewport: IRendererViewport<HtmlLayoutMetrics>, progress: IProgressTracker, htmlOptions: HtmlOptions);
|
|
18
16
|
applyStyles(): Promise<void>;
|
|
19
17
|
applyDocStyles(doc: IHtmlDocument): Promise<void>;
|
|
20
18
|
private getCssVariables;
|
|
21
|
-
protected
|
|
22
|
-
|
|
23
|
-
private
|
|
24
|
-
changeFlipMode(flipMode: FlipMode): Promise<void>;
|
|
25
|
-
changeColumns(columnOptions: ColumnOptions): Promise<void>;
|
|
19
|
+
protected prepareDocStyles(doc: Document): string;
|
|
20
|
+
changeLayout(options: HtmlChangeLayoutOptions): Promise<void>;
|
|
21
|
+
private capturePageReloadLocation;
|
|
26
22
|
}
|
|
@@ -1,82 +1,91 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { EventNames as e } from "../../../../kernal/EventNames.mjs";
|
|
2
|
+
import { isNullOrWhiteSpace as t } from "../../../../kernal/common/text.mjs";
|
|
3
|
+
import { FileLocation as n } from "../../../../kernal/progress/Progress.mjs";
|
|
4
4
|
import { getDocumentBody as r } from "../../../../kernal/html/finder.mjs";
|
|
5
5
|
import { injectCssContent as i } from "../../../../kernal/html/injector.mjs";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { Theme as a } from "../../../../kernal/Theme.mjs";
|
|
7
|
+
import { yieldToMain as o } from "../../../../kernal/web/scheduler.mjs";
|
|
8
|
+
import { HtmlSettings as s } from "../../HtmlSettings.mjs";
|
|
9
|
+
import { getLayoutGeometry as c } from "./resolveLayoutRoute.mjs";
|
|
10
|
+
import { DOCUMENT_LAYOUT_CSS as l } from "./css/hostLayoutCss.mjs";
|
|
11
|
+
import { applyContentLayoutClass as u } from "./applyLayoutClasses.mjs";
|
|
12
|
+
import { ContentLayoutCssVariableNames as d } from "../style/ContentLayoutCssVariableNames.mjs";
|
|
13
|
+
import { freezePageStripForRouteChange as f, unfreezePageStripForRouteChange as p, waitForPageStripPaint as m } from "./pageStripRouteChange.mjs";
|
|
8
14
|
//#region mediaTypes/html/renderer/layout/HtmlRendererLayout.ts
|
|
9
|
-
var
|
|
15
|
+
var h = class {
|
|
10
16
|
constructor(e, t, n, r, i) {
|
|
11
|
-
this.owner = e, this.documentsProvider = t, this.renererviewport = n, this.progress = r, this.htmlOptions = i
|
|
17
|
+
this.owner = e, this.documentsProvider = t, this.renererviewport = n, this.progress = r, this.htmlOptions = i;
|
|
12
18
|
}
|
|
13
19
|
async applyStyles() {
|
|
14
20
|
let e = this.documentsProvider.getLoadedDocuments();
|
|
15
21
|
for (let t of e) await this.applyDocStyles(t);
|
|
16
22
|
}
|
|
17
|
-
async applyDocStyles(
|
|
18
|
-
let
|
|
19
|
-
i(
|
|
20
|
-
let l = await this.owner.services.get("themeProvider"),
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
for (let [e, t] of d) n.style.setProperty(e, t);
|
|
24
|
-
this.toggleColumnLayout(n, r, o, s);
|
|
23
|
+
async applyDocStyles(e) {
|
|
24
|
+
let t = (e.getContentContainer() ?? await e.getVirtualContentContainer()).ownerDocument.documentElement, n = c(this.htmlOptions), r = this.renererviewport.getLayoutMetrics();
|
|
25
|
+
i(t.ownerDocument, this.prepareDocStyles(t.ownerDocument), !0, "columns-layout-css");
|
|
26
|
+
let l = await this.owner.services.get("themeProvider"), d = l ? l.getCurrentTheme() : new a(), f = await this.getCssVariables(d, r, n);
|
|
27
|
+
for (let [e, n] of f) t.style.setProperty(e, n);
|
|
28
|
+
u(t, n), t.removeAttribute(s.HtmlDocumentNumperOfPagesPropertyName), e.resetLayoutSizes(), await o();
|
|
25
29
|
}
|
|
26
|
-
async getCssVariables(
|
|
27
|
-
let
|
|
28
|
-
|
|
29
|
-
let s = /* @__PURE__ */ new Map();
|
|
30
|
-
return s.set(o.ColumnWidth, r.columnWidth + "px"), s.set(o.ColumnHeight, r.columnHeight + "px"), s.set(o.ColumnMaxHeight, a), s.set(o.ContentShadowWidth, r.shadowWidth + "px"), s.set(o.ColumnWidthNumber, r.columnWidth.toString()), s.set(o.ColumnHeightNumber, r.columnHeight.toString()), s.set(o.PageWidth, r.pageWidth + "px"), s.set(o.PageHeight, r.pageHeight + "px"), s.set(o.PageMoveLength, r.pageMoveLength + "px"), s.set(o.ColumnGap, this.htmlOptions.columnGap + "px"), this.htmlOptions.enableColumnRule && this.htmlOptions.columns > 1 && !n(t.columnRuleColor) ? s.set(e.ColumnRuleColor, t.columnRuleColor) : s.set(e.ColumnRuleColor, "none"), s.set(o.MaxImageHeightRatio, `${this.htmlOptions.maxImageHeightRatio}`), s.set(o.MaxImageWidthRatio, `${this.htmlOptions.maxImageWidthRatio}`), s;
|
|
30
|
+
async getCssVariables(e, n, r) {
|
|
31
|
+
let i = r.flipMode == "scroll" ? "none" : n.columnHeight + "px", o = r.getColumnWidthForCss(n.columnWidth, n.pageHeight), s = /* @__PURE__ */ new Map();
|
|
32
|
+
return s.set(d.ColumnWidth, o + "px"), s.set(d.ColumnHeight, n.columnHeight + "px"), s.set(d.ColumnMaxHeight, i), s.set(d.ContentShadowWidth, n.shadowWidth + "px"), s.set(d.ColumnWidthNumber, n.columnWidth.toString()), s.set(d.ColumnHeightNumber, n.columnHeight.toString()), s.set(d.ColumnBoxWidth, n.columnWidth + "px"), s.set(d.ColumnBoxHeight, n.columnHeight + "px"), s.set(d.PageWidth, n.pageWidth + "px"), s.set(d.PageHeight, n.pageHeight + "px"), s.set(d.PageMoveLength, n.pageMoveLength + "px"), s.set(d.ColumnGap, this.htmlOptions.columnGap + "px"), this.htmlOptions.enableColumnRule && this.htmlOptions.columns > 1 && !t(e.columnRuleColor) ? s.set(a.ColumnRuleColor, e.columnRuleColor) : s.set(a.ColumnRuleColor, "none"), s.set(d.MaxImageHeightRatio, `${this.htmlOptions.maxImageHeightRatio}`), s.set(d.MaxImageWidthRatio, `${this.htmlOptions.maxImageWidthRatio}`), s.set(d.ImagePlaceholderColor, `color-mix(in srgb, var(${a.ContentTextColor}) 8%, var(${a.ContentBackground}))`), s;
|
|
31
33
|
}
|
|
32
|
-
|
|
33
|
-
let
|
|
34
|
-
|
|
35
|
-
let c = r(t).lastElementChild;
|
|
36
|
-
return c && (s += "." + a.WithoutMarginBottomCssName + "{margin-block-end:0 !important;}", c.classList.add(a.WithoutMarginBottomCssName)), s;
|
|
34
|
+
prepareDocStyles(e) {
|
|
35
|
+
let t = r(e).lastElementChild;
|
|
36
|
+
return t && t.classList.add(s.WithoutMarginBottomCssName), l;
|
|
37
37
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
isVerticalWriting(e) {
|
|
42
|
-
return e == "vertical-lr" || e == "vertical-rl";
|
|
43
|
-
}
|
|
44
|
-
async changeFlipMode(e) {
|
|
45
|
-
if (this.htmlOptions.flipMode === e) return;
|
|
46
|
-
let n = this.htmlOptions.flipMode;
|
|
47
|
-
if (!this.owner.context.currentLocation?.precise) {
|
|
48
|
-
let e = await this.progress.getProgress(!0);
|
|
49
|
-
e && (this.owner.context.currentLocation = e.location);
|
|
50
|
-
}
|
|
51
|
-
this.owner.context.setUserChangedProgress(!1), this.htmlOptions.flipMode = e, this.renererviewport.applyCssVariables();
|
|
52
|
-
let r = this.documentsProvider.getLoadedDocuments();
|
|
53
|
-
for (let e of r) await this.applyDocStyles(e);
|
|
54
|
-
this.owner.events.emit(t.LayoutChange, { flipMode: {
|
|
55
|
-
previous: n,
|
|
56
|
-
current: e
|
|
57
|
-
} }), await this.documentsProvider.reload();
|
|
58
|
-
}
|
|
59
|
-
async changeColumns(e) {
|
|
60
|
-
if (this.htmlOptions.columns === e.columns && this.htmlOptions.autoColumns === e.autoColumns) return;
|
|
61
|
-
let n = this.htmlOptions.columns, r = this.htmlOptions.autoColumns;
|
|
38
|
+
async changeLayout(t) {
|
|
39
|
+
let n = t.flipMode !== void 0 && this.htmlOptions.flipMode !== t.flipMode, r = t.columns !== void 0 && (this.htmlOptions.columns !== t.columns.columns || this.htmlOptions.autoColumns !== t.columns.autoColumns), i = t.writingMode !== void 0 && this.htmlOptions.writingMode !== t.writingMode, a = t.direction !== void 0 && this.htmlOptions.direction !== t.direction;
|
|
40
|
+
if (!n && !r && !i && !a) return;
|
|
62
41
|
if (!this.owner.context.currentLocation?.precise) {
|
|
63
42
|
let e = await this.progress.getProgress(!0);
|
|
64
43
|
e && (this.owner.context.currentLocation = e.location);
|
|
65
44
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
45
|
+
let o = {};
|
|
46
|
+
n && (o.flipMode = {
|
|
47
|
+
previous: this.htmlOptions.flipMode,
|
|
48
|
+
current: t.flipMode
|
|
49
|
+
}, this.htmlOptions.flipMode = t.flipMode), r && t.columns && (o.columns = {
|
|
50
|
+
previous: this.htmlOptions.columns,
|
|
51
|
+
current: t.columns.columns
|
|
52
|
+
}, o.autoColumns = {
|
|
53
|
+
previous: this.htmlOptions.autoColumns,
|
|
54
|
+
current: t.columns.autoColumns
|
|
55
|
+
}, this.htmlOptions.columns = t.columns.columns, this.htmlOptions.autoColumns = t.columns.autoColumns), i && (o.writingMode = {
|
|
56
|
+
previous: this.htmlOptions.writingMode,
|
|
57
|
+
current: t.writingMode
|
|
58
|
+
}, this.htmlOptions.writingMode = t.writingMode), a && (o.direction = {
|
|
59
|
+
previous: this.htmlOptions.direction,
|
|
60
|
+
current: t.direction
|
|
61
|
+
}, this.htmlOptions.direction = t.direction);
|
|
62
|
+
let s = (a || i) && c(this.htmlOptions).flipMode == "page";
|
|
63
|
+
s && (this.capturePageReloadLocation(), f(this.renererviewport.getRendererContainer()));
|
|
64
|
+
try {
|
|
65
|
+
this.renererviewport.applyCssVariables();
|
|
66
|
+
let t = this.documentsProvider.getLoadedDocuments();
|
|
67
|
+
for (let e of t) await this.applyDocStyles(e);
|
|
68
|
+
if (this.owner.events.emit(e.LayoutChange, o), this.pageReloadLocation) {
|
|
69
|
+
let e = this.pageReloadLocation;
|
|
70
|
+
this.pageReloadLocation = void 0, await this.documentsProvider.load(e, !0);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
await this.documentsProvider.reload();
|
|
74
|
+
} finally {
|
|
75
|
+
if (s) {
|
|
76
|
+
let e = this.renererviewport.getRendererContainer();
|
|
77
|
+
await m(), p(e);
|
|
77
78
|
}
|
|
78
|
-
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
capturePageReloadLocation() {
|
|
82
|
+
let e = this.documentsProvider, t = this.owner.context.currentLocation, r = t?.url && e.getDocument(t.url) || e.getFirstVisibleDocument();
|
|
83
|
+
if (!r) return;
|
|
84
|
+
let i = new n(r.url, 1, "page");
|
|
85
|
+
i.current = Math.max(1, e.getCurrentPageNumber(r));
|
|
86
|
+
let a = r.getContentContainer()?.ownerDocument?.documentElement, o = parseInt(a?.getAttribute(s.HtmlDocumentNumperOfPagesPropertyName) ?? "", 10);
|
|
87
|
+
Number.isFinite(o) && o > 0 && (i.total = o), this.pageReloadLocation = i;
|
|
79
88
|
}
|
|
80
89
|
};
|
|
81
90
|
//#endregion
|
|
82
|
-
export {
|
|
91
|
+
export { h as HtmlRendererLayout };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/html/injector.cjs"),t=require("../../HtmlSettings.cjs"),n=require("./ViewportCssVariableNames.cjs"),r=require("./HtmlLayoutMetrics.cjs"),i=require("../documents/HtmlContainerBuilder.cjs");var a=class{constructor(n,r,a,o){this.owner=n,this.readerContainer=r,this.getColumnWidth=()=>this.htmlOptions.maxColumnWidth?Math.abs(this.htmlOptions.maxColumnWidth):768,this.options=this.owner.options,this.device=this.owner.device,this.optionsProvider=a,this.htmlOptions=o,this.containerBuilder=new i.HtmlContainerBuilder(o);let{rendererContainer:s,rendererCss:c,otherCss:l}=this.containerBuilder.createContainers();e.injectCssContent(this.readerContainer.ownerDocument,c+l,!0,`html-renderer-style`),this.readerContainer.appendChild(s),this.rendererContainer=s,this.scrollElement=this.rendererContainer,this.contentsShadowContainer=this.rendererContainer.querySelector(`.`+t.HtmlSettings.ContentsShadowContainerCssName),this.contentsContainer=this.rendererContainer.querySelector(`.`+t.HtmlSettings.ContentsContainerCssName)}getRendererContainer(){return this.rendererContainer}getScrollElement(){return this.rendererContainer}getLayoutMetrics(){return this.layout||=(this.applyCssVariables(),this.buildLayoutMetrics()),this.layout}applyCssVariables(){let e=this.prepareRendererCssVariables(),t=this.prepareOtherCssVariables(),n=new Map;e.forEach((e,t)=>{n.set(t,e)}),t.forEach((e,t)=>{n.set(t,e)});let r=this.owner.getRootContainer();n.forEach((e,t)=>{r.style.setProperty(t,e)}),this.layout=this.buildLayoutMetrics()}prepareRendererCssVariables(){let e=this.getFlipMode(),t=e==`page`?`hidden`:`auto`,r=new Map,i=e==`page`?0:this.htmlOptions.contentWrapperMarginBottom??10,a=e==`page`?0:this.htmlOptions.contentWrapperMarginTop??10;return r.set(n.ViewportCssVariableNames.ContentWrapperMarginTop,a+`px`),r.set(n.ViewportCssVariableNames.ContentWrapperMarginBottom,i+`px`),r.set(n.ViewportCssVariableNames.ContentWrapperBorderRadius,(this.htmlOptions.contentWrapperBorderRadius??0)+`px`),r.set(n.ViewportCssVariableNames.ScrollElementOverflow,t),r}prepareOtherCssVariables(){let e=this.owner.getRootContainer(),t=this.getFlipMode();t==`page`&&this.scrollElement?.scrollTo(0,0);let r=this.htmlOptions.columnGap??40,i=this.contentsShadowContainer,a=this.rendererContainer.clientWidth,o=this.rendererContainer.clientHeight;this.rendererContainer.setAttribute(`data-client-width`,`${a}`),this.rendererContainer.setAttribute(`data-client-height`,`${o}`);let s=this.getContentsContainerWidth(),c=s+`px`,l=this.rendererContainer.offsetWidth-this.rendererContainer.clientWidth,u=this.rendererContainer.offsetHeight-this.rendererContainer.clientHeight,d=new Map;d.set(n.ViewportCssVariableNames.ScrollElementVerticalScrollBarWidth,l+`px`),d.set(n.ViewportCssVariableNames.ScrollElementHorizontalScrollBarHeight,u+`px`),e.style.setProperty(n.ViewportCssVariableNames.ContentsContainerWidth,c),d.set(n.ViewportCssVariableNames.ContentsContainerWidth,c);let f=0;t==`page`&&(f=0),a-s-2<2*f&&(f=0);let p=``;p=f>0?``+f+`px 0`:`0`,e.style.setProperty(n.ViewportCssVariableNames.ContentsContainerPadding,p),d.set(n.ViewportCssVariableNames.ContentsContainerPadding,p);let m=this.calculateColumns(s);this.htmlOptions.columns=m;let h=this.getContentPaddingFactor(),g=this.getContentsShadowMargin()+Math.min(20,s*h),{columnWidth:_,remainder:v}=this.getFinalColumnWidth(s-g*2,m,r);t==`page`?v==0?i.style.margin=`0 ${g}px`:i.style.margin=`0 ${g+v/2}px`:i.style.margin=`0px`;let y=i.getBoundingClientRect().width;this.rendererContainer.setAttribute(`data-transform-length`,(y+r).toString()),this.rendererContainer.setAttribute(`data-shadow-width`,y.toString()),this.rendererContainer.setAttribute(`data-column-width`,_.toString()),this.rendererContainer.setAttribute(`data-column-gap`,r.toString()),this.rendererContainer.setAttribute(`data-page-width`,`${_}`);let{contentWrapperPaddingBottomNumber:b,contentWrapperPaddingTopNumber:x,contentWrapperPadding:S,contentWrapperPaddingTopBottom:C}=this.getContentWrapperPadding(s,r);this.rendererContainer.setAttribute(`data-page-height`,`${o-x-b}`),d.set(n.ViewportCssVariableNames.ContentWrapperWidth,y+`px`),t==`scroll`?d.set(n.ViewportCssVariableNames.ContentWrapperMinWidth,y+`px`):d.set(n.ViewportCssVariableNames.ContentWrapperMinWidth,_+r/2+`px`),d.set(n.ViewportCssVariableNames.ContentWrapperHeight,this.getContentWrapperHeight()),d.set(n.ViewportCssVariableNames.ContentWrapperMinHeight,o+`px`),d.set(n.ViewportCssVariableNames.ContentWrapperMaxHeight,o+`px`),d.set(n.ViewportCssVariableNames.ContentWrapperPadding,S),t==`page`?d.set(n.ViewportCssVariableNames.ContentContainerWidth,_+`px`):d.set(n.ViewportCssVariableNames.ContentContainerWidth,`100%`);let w=`calc(var(${n.ViewportCssVariableNames.ContentWrapperHeight}) - ${C})`;return d.set(n.ViewportCssVariableNames.ContentContainerHeight,w),d.set(n.ViewportCssVariableNames.ContentColumnGap,r+`px`),this.rendererContainer&&(d.set(n.ViewportCssVariableNames.ContentsContainerOffsetLeft,`calc((`+this.rendererContainer.clientWidth+`px - `+c+`) / 2)`),this.updateCssVariablesTimeoutId=setTimeout(()=>{let t=new Map;t.set(n.ViewportCssVariableNames.ContentsContainerOffsetLeft,this.contentsContainer.offsetLeft+`px`),t.forEach((t,n)=>{e.style.setProperty(n,t)}),e&&t.forEach((t,n)=>{e.style.setProperty(n,t)})},1e3)),d}buildLayoutMetrics(){let e=this.getFlipMode(),t=new r.HtmlLayoutMetrics,n=this.rendererContainer,{clientWidth:i,clientHeight:a}=n,o=parseFloat(n.getAttribute(`data-transform-length`));t.clientWidth=i;let s;return s=e==`scroll`?this.rendererContainer.ownerDocument.defaultView.innerHeight-this.optionsProvider.getHeaderHeight()-this.optionsProvider.getFooterHeight():parseFloat(n.getAttribute(`data-page-height`)),t.clientHeight=a,t.pageHeight=s,t.columnHeight=s,t.columnGap=parseFloat(n.getAttribute(`data-column-gap`)),t.columnWidth=parseFloat(n.getAttribute(`data-column-width`)),t.pageWidth=parseFloat(n.getAttribute(`data-page-width`)),t.pageMoveLength=o,t.shadowWidth=parseFloat(n.getAttribute(`data-shadow-width`)),t}getContentWrapperHeight(){return this.getFlipMode()==`page`?`${this.rendererContainer.clientHeight}px`:this.owner.inIframe?`100%`:`auto`}getContentsShadowMargin(){return this.htmlOptions.contentsShadowMargin??10}getContentWrapperPadding(e,t){let n=this.getFlipMode(),r=this.getContentPaddingFactor(),i=n==`scroll`?30:0,a=this.getContentsShadowMargin();n==`page`&&(i+=a);let o=i+`px`,s=n==`scroll`?30:0;n==`page`&&(s+=a),n==`scroll`&&s<this.options.minFooterHeight&&(s=this.options.minFooterHeight);let c=this.getContentsShadowMargin()+Math.min(20,e*r),l=s+`px`;return{contentWrapperPaddingTop:o,contentWrapperPaddingLeft:n==`scroll`?`${c}px`:`0`,contentWrapperPaddingRight:n==`scroll`?`${c}px`:`0`,contentWrapperPaddingBottom:l,contentWrapperPaddingLeftRight:n==`scroll`?`${t}px`:`0`,contentWrapperPaddingTopBottom:`${i+s}px`,contentWrapperPadding:n==`scroll`?`${i}px ${c}px ${s}px ${c}px`:`${i}px 0 0 0px`,contentWrapperPaddingTopNumber:i,contentWrapperPaddingBottomNumber:s}}getContentsContainerWidth(){let{width:e}=this.rendererContainer.getBoundingClientRect(),t=e;if(this.device.getDeviceType()==`mobile`&&t<=768)return t;if(this.getFlipMode()==`scroll`)return this.htmlOptions.enableAutoFitPageWidth?t:this.htmlOptions.maxScrollContentWidth?Math.min(t,Math.abs(this.htmlOptions.maxScrollContentWidth)):Math.min(t,this.htmlOptions.columnWidth);let n=this.htmlOptions.columns,r=this.getColumnWidth();if(this.htmlOptions.autoColumns){if(!this.htmlOptions.maxColumns)return t;n=t<=r?1:this.htmlOptions.maxColumns}let i=this.getMultiColumnWidthFactor();return n>1?Math.min(t,n*r*i):Math.min(t,r)}calculateColumns(e){let t=this.htmlOptions.columns??1,n=this.getColumnWidth();if(this.htmlOptions.autoColumns){if(e<=n)t=1;else{t=Math.floor(e/n);let r=e%n;(r>n/5||r>t*50)&&(t+=1),this.htmlOptions.maxColumns&&t>this.htmlOptions.maxColumns&&(t=this.htmlOptions.maxColumns)}}return t}getFinalColumnWidth(e,t,n){let r=n*(t-1),i=(e-r)/t,a=0,o=Math.round(i);return o!=i&&(i=o,a=e-(t*o+r)),{columnWidth:i,remainder:a}}getContentPaddingFactor(){return this.device.getDeviceType()==`mobile`?.01:.05}getMultiColumnWidthFactor(){let e=this.htmlOptions.multiColumnWidthFactor;return e||=.8,e=Math.abs(e),e<.5&&(e=.5),e>1&&(e=1),e}getFlipMode(){return this.htmlOptions.forceScroll?`scroll`:this.htmlOptions.flipMode}async dispose(){this.updateCssVariablesTimeoutId&&=(clearTimeout(this.updateCssVariablesTimeoutId),null)}};exports.HtmlRendererViewport=a;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/html/injector.cjs"),t=require("../../../../kernal/html/realm.cjs"),n=require("../../HtmlSettings.cjs"),r=require("./resolveLayoutRoute.cjs"),i=require("./ViewportCssVariableNames.cjs"),a=require("./HtmlLayoutMetrics.cjs"),o=require("../documents/HtmlContainerBuilder.cjs"),s=require("./applyLayoutClasses.cjs"),c=require("./resolveContentWrapperMinWidth.cjs");var l=class{constructor(t,r,i,a){this.owner=t,this.readerContainer=r,this.getColumnWidth=()=>this.htmlOptions.maxColumnWidth?Math.abs(this.htmlOptions.maxColumnWidth):768,this.options=this.owner.options,this.device=this.owner.device,this.optionsProvider=i,this.htmlOptions=a,this.containerBuilder=new o.HtmlContainerBuilder(a);let{rendererContainer:s,rendererCss:c,otherCss:l}=this.containerBuilder.createContainers();e.injectCssContent(this.readerContainer.ownerDocument,c+l,!0,`html-renderer-style`),this.readerContainer.appendChild(s),this.rendererContainer=s,this.scrollElement=this.rendererContainer,this.contentsShadowContainer=this.rendererContainer.querySelector(`.`+n.HtmlSettings.ContentsShadowContainerCssName),this.rendererContainer.setAttribute(n.HtmlSettings.HostViewportModeAttribute,this.owner.getHostViewport().mode)}getRendererContainer(){return this.rendererContainer}getScrollElement(){let e=this.owner.getHostViewport();return e.mode==`window`?e.scrollElement:this.rendererContainer}getLayoutMetrics(){return this.layout||=(this.internlApplyCssVariables(),this.buildLayoutMetrics()),this.layout}applyCssVariables(){this.internlApplyCssVariables(),this.layout=this.buildLayoutMetrics()}internlApplyCssVariables(){this.owner.refreshHostViewport();let e=r.getLayoutGeometry(this.htmlOptions),t=this.getScrollElement(),n=e.flipMode==`scroll`&&t?{left:t.scrollLeft,top:t.scrollTop}:void 0;this.applyFlowClasses(e),this.syncPageTransformSign(e);let a=this.prepareRendererCssVariables(),o=this.prepareOtherCssVariables(),s=new Map;a.forEach((e,t)=>{s.set(t,e)}),o.forEach((e,t)=>{s.set(t,e)});let c=this.owner.getRootContainer();c.style.setProperty(`direction`,`var(${i.ViewportCssVariableNames.ReaderViewportDirection})`),s.forEach((e,t)=>{c.style.setProperty(t,e)}),n&&t&&t.scrollTo(n.left,n.top)}syncPageTransformSign(e){let r=this.rendererContainer.querySelector(`.`+n.HtmlSettings.TransformContainerCssName);if(!t.isHtmlElement(r))return;if(e.flipMode!=`page`){r.style.removeProperty(`transition`),r.style.removeProperty(`transform`),r.removeAttribute(`data-target-transform`);return}if(r.hasAttribute(n.HtmlSettings.PageMovingAttributeName))return;let i=r.getAttribute(`data-target-transform`);if(i==null||i===``)return;let a=parseFloat(i);Number.isFinite(a)&&(r.style.removeProperty(`transition`),r.style.transform=e.getPageTranslateCss(a))}prepareRendererCssVariables(){let e=r.getLayoutGeometry(this.htmlOptions),t=e.flipMode;this.rendererContainer.setAttribute(n.HtmlSettings.HostViewportModeAttribute,this.owner.getHostViewport().mode);let a=new Map,o=e.viewport.zeroWrapperMargins?0:this.htmlOptions.contentWrapperMarginBottom??10,s=e.viewport.zeroWrapperMargins?0:this.htmlOptions.contentWrapperMarginTop??10,c=e.viewport.zeroWrapperMargins?0:this.htmlOptions.contentWrapperGap??10;a.set(i.ViewportCssVariableNames.ContentWrapperMarginTop,s+`px`),a.set(i.ViewportCssVariableNames.ContentWrapperMarginBottom,o+`px`),a.set(i.ViewportCssVariableNames.ContentWrapperGap,c+`px`);let l=this.htmlOptions.enableContentWrapperBorderRadius&&t==`scroll`?this.htmlOptions.contentWrapperBorderRadius??0:0;a.set(i.ViewportCssVariableNames.ContentWrapperBorderRadius,l+`px`);let u=this.owner.getHostViewport().mode==`window`&&t==`scroll`;return a.set(i.ViewportCssVariableNames.ScrollElementOverflow,u?`visible`:e.overflowY),a.set(i.ViewportCssVariableNames.ScrollElementOverflowX,u?`visible`:e.overflowX),a.set(i.ViewportCssVariableNames.ReaderViewportDirection,e.direction==`ltr`?`unset`:e.direction),a}applyFlowClasses(e){s.applyRootDirectionClass(this.owner.getRootContainer(),e),s.applyRendererLayoutClass(this.rendererContainer,e)}prepareOtherCssVariables(){let e=this.owner.getRootContainer(),t=r.getLayoutGeometry(this.htmlOptions),n=t.flipMode;n==`page`&&this.scrollElement?.scrollTo(0,0);let a=this.htmlOptions.columnGap??40,o=this.contentsShadowContainer,s=this.rendererContainer.clientWidth||this.owner.getHostViewport().width,l=this.getViewportHeight();this.rendererContainer.setAttribute(`data-client-width`,`${s}`),this.rendererContainer.setAttribute(`data-client-height`,`${l}`);let u=this.getContentsContainerWidth(),d=t.viewport.contentsContainerWidthMode==`max-content`?`max-content`:u+`px`,f=this.rendererContainer.offsetWidth-this.rendererContainer.clientWidth,p=this.rendererContainer.offsetHeight-this.rendererContainer.clientHeight,m=new Map;m.set(i.ViewportCssVariableNames.ScrollElementVerticalScrollBarWidth,f+`px`),m.set(i.ViewportCssVariableNames.ScrollElementHorizontalScrollBarHeight,p+`px`),m.set(i.ViewportCssVariableNames.ReaderViewportWidth,s+`px`),m.set(i.ViewportCssVariableNames.ReaderViewportHeight,l+`px`),e.style.setProperty(i.ViewportCssVariableNames.ContentsContainerWidth,d),m.set(i.ViewportCssVariableNames.ContentsContainerWidth,d);let h=0;n==`page`&&(h=0),s-u-2<2*h&&(h=0);let g=``;g=h>0?``+h+`px 0`:`0`,e.style.setProperty(i.ViewportCssVariableNames.ContentsContainerPadding,g),m.set(i.ViewportCssVariableNames.ContentsContainerPadding,g);let _=t.viewport.forceSingleColumn?1:this.calculateColumns(u);t.viewport.forceSingleColumn||(this.htmlOptions.columns=_);let{marginInline:v,marginBlock:y}=this.getContentsShadowMargin(u),{columnWidth:b}=this.getFinalColumnWidth(u-v*2,_,a),x=v,S=y;n==`scroll`&&(x=0,S=0),o.style=n==`scroll`?`margin: ${S}px ${x}px;`:`margin: ${S}px ${x}px;height: ${l-2*y}px;`;let C=o.getBoundingClientRect().width,w=_*b+Math.max(0,_-1)*a,{contentWrapperPaddingBottomNumber:T,contentWrapperPaddingTopNumber:E,contentWrapperPadding:D,contentWrapperPaddingTopBottom:O}=this.getContentWrapperPadding(u,a),k=l-E-T,A=t.getPageMoveLength(w,k,a);this.rendererContainer.setAttribute(`data-transform-length`,A.toString()),this.rendererContainer.setAttribute(`data-shadow-width`,C.toString()),this.rendererContainer.setAttribute(`data-column-width`,b.toString()),this.rendererContainer.setAttribute(`data-column-gap`,a.toString()),this.rendererContainer.setAttribute(`data-page-width`,`${w}`),this.rendererContainer.setAttribute(`data-page-height`,`${k}`),m.set(i.ViewportCssVariableNames.ContentWrapperWidth,t.viewport.contentWrapperWidthMode==`auto`?`auto`:C+`px`),m.set(i.ViewportCssVariableNames.ContentWrapperMinWidth,c.resolveContentWrapperMinWidth(t.viewport.contentWrapperMinWidthMode,{shadowWidth:C,columnWidth:b,columnGap:a,viewportWidth:s})),m.set(i.ViewportCssVariableNames.ContentWrapperHeight,this.getContentWrapperHeight()),m.set(i.ViewportCssVariableNames.ContentWrapperMinHeight,l+`px`),m.set(i.ViewportCssVariableNames.ContentWrapperMaxHeight,t.viewport.contentWrapperMaxHeightMode==`none`?`none`:l+`px`),m.set(i.ViewportCssVariableNames.ContentWrapperPadding,D),t.viewport.contentContainerWidthMode==`auto`?m.set(i.ViewportCssVariableNames.ContentContainerWidth,`auto`):t.viewport.contentContainerWidthMode==`column`?m.set(i.ViewportCssVariableNames.ContentContainerWidth,b+`px`):m.set(i.ViewportCssVariableNames.ContentContainerWidth,`100%`);let j=t.viewport.contentContainerHeightMode==`page`?k+`px`:`calc(var(${i.ViewportCssVariableNames.ContentWrapperHeight}) - ${O})`;return m.set(i.ViewportCssVariableNames.ContentContainerHeight,j),m.set(i.ViewportCssVariableNames.ContentColumnGap,a+`px`),m}buildLayoutMetrics(){let e=this.getFlipMode(),t=new a.HtmlLayoutMetrics,n=this.rendererContainer,{clientWidth:r}=n,i=parseFloat(n.getAttribute(`data-transform-length`));t.clientWidth=r||this.owner.getHostViewport().width;let o;return o=e==`scroll`?this.getViewportHeight():parseFloat(n.getAttribute(`data-page-height`)),t.clientHeight=this.getViewportHeight(),t.pageHeight=o,t.columnHeight=o,t.columnGap=parseFloat(n.getAttribute(`data-column-gap`)),t.columnWidth=parseFloat(n.getAttribute(`data-column-width`)),t.pageWidth=parseFloat(n.getAttribute(`data-page-width`)),t.pageMoveLength=i,t.shadowWidth=parseFloat(n.getAttribute(`data-shadow-width`)),t}getContentWrapperHeight(){let e=r.getLayoutGeometry(this.htmlOptions);return e.viewport.contentWrapperHeightMode==`auto`?`auto`:e.viewport.contentWrapperHeightMode==`viewport`?`${this.getViewportHeight()}px`:this.owner.inIframe?`100%`:`auto`}getContentsShadowMargin(e){let t=this.htmlOptions.contentsShadowMargin??20,n=this.getContentPaddingFactor(),r=this.device.getDeviceType()==`mobile`?Math.round(t*.6):t;return{marginBlock:r,marginInline:r+Math.min(10,e*n)}}getContentWrapperPadding(e,t){let n=this.getFlipMode(),r=n==`scroll`?30:0,{marginBlock:i,marginInline:a}=this.getContentsShadowMargin(e);n==`page`&&(r+=i);let o=r+`px`,s=n==`scroll`?30:0;n==`page`&&(s+=i);let c=s+`px`;return{contentWrapperPaddingTop:o,contentWrapperPaddingLeft:n==`scroll`?`${a}px`:`0`,contentWrapperPaddingRight:n==`scroll`?`${a}px`:`0`,contentWrapperPaddingBottom:c,contentWrapperPaddingLeftRight:n==`scroll`?`${t}px`:`0`,contentWrapperPaddingTopBottom:`${r+s}px`,contentWrapperPadding:n==`scroll`?`${r}px ${a}px ${s}px ${a}px`:`0px`,contentWrapperPaddingTopNumber:r,contentWrapperPaddingBottomNumber:s}}getContentsContainerWidth(){let{width:e}=this.rendererContainer.getBoundingClientRect(),t=e;if(this.device.getDeviceType()==`mobile`&&t<=768)return t;if(this.getFlipMode()==`scroll`)return this.htmlOptions.enableAutoFitPageWidth?t:this.htmlOptions.maxScrollContentWidth?Math.min(t,Math.abs(this.htmlOptions.maxScrollContentWidth)):Math.min(t,this.htmlOptions.columnWidth);let n=this.htmlOptions.columns,r=this.getColumnWidth();if(this.htmlOptions.autoColumns){if(!this.htmlOptions.maxColumns)return t;n=t<=r?1:this.htmlOptions.maxColumns}let i=this.getMultiColumnWidthFactor();return n>1?Math.min(t,n*r*i):Math.min(t,r)}calculateColumns(e){let t=this.htmlOptions.columns??1,n=this.getColumnWidth();if(this.htmlOptions.autoColumns){if(e<=n)t=1;else{t=Math.floor(e/n);let r=e%n;(r>n/5||r>t*50)&&(t+=1),this.htmlOptions.maxColumns&&t>this.htmlOptions.maxColumns&&(t=this.htmlOptions.maxColumns)}}return t}getFinalColumnWidth(e,t,n){let r=n*(t-1),i=(e-r)/t,a=0,o=Math.round(i);return o!=i&&(i=o,a=e-(t*o+r)),{columnWidth:i,remainder:a}}getContentPaddingFactor(){return this.device.getDeviceType()==`mobile`?.01:.05}getMultiColumnWidthFactor(){let e=this.htmlOptions.multiColumnWidthFactor;return e||=.8,e=Math.abs(e),e<.5&&(e=.5),e>1&&(e=1),e}getViewportHeight(){let e=this.owner.getHostViewport();if(e.mode==`host`){let e=this.rendererContainer.clientHeight;if(e>=80&&e<33554400)return Math.round(e)}return e.height}getFlipMode(){return r.getLayoutGeometry(this.htmlOptions).flipMode}async dispose(){this.updateCssVariablesTimeoutId&&=(clearTimeout(this.updateCssVariablesTimeoutId),null)}};exports.HtmlRendererViewport=l;
|
|
@@ -13,7 +13,6 @@ export declare class HtmlRendererViewport implements IRendererViewport<HtmlLayou
|
|
|
13
13
|
private readonly rendererContainer;
|
|
14
14
|
private readonly scrollElement;
|
|
15
15
|
private readonly contentsShadowContainer;
|
|
16
|
-
private readonly contentsContainer;
|
|
17
16
|
private readonly device;
|
|
18
17
|
private updateCssVariablesTimeoutId;
|
|
19
18
|
private readonly optionsProvider;
|
|
@@ -24,7 +23,10 @@ export declare class HtmlRendererViewport implements IRendererViewport<HtmlLayou
|
|
|
24
23
|
getScrollElement(): HTMLElement;
|
|
25
24
|
getLayoutMetrics(): HtmlLayoutMetrics;
|
|
26
25
|
applyCssVariables(): void;
|
|
26
|
+
private internlApplyCssVariables;
|
|
27
|
+
private syncPageTransformSign;
|
|
27
28
|
private prepareRendererCssVariables;
|
|
29
|
+
private applyFlowClasses;
|
|
28
30
|
private prepareOtherCssVariables;
|
|
29
31
|
private buildLayoutMetrics;
|
|
30
32
|
private getContentWrapperHeight;
|
|
@@ -36,6 +38,7 @@ export declare class HtmlRendererViewport implements IRendererViewport<HtmlLayou
|
|
|
36
38
|
private getFinalColumnWidth;
|
|
37
39
|
private getContentPaddingFactor;
|
|
38
40
|
private getMultiColumnWidthFactor;
|
|
41
|
+
private getViewportHeight;
|
|
39
42
|
private getFlipMode;
|
|
40
43
|
dispose(): Promise<void>;
|
|
41
44
|
}
|