@foxycape/core 1.1.3 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.cjs +1 -0
- package/dist/core.css +2 -1
- package/dist/kernal/Constants.cjs +1 -1
- package/dist/kernal/Constants.mjs +4 -12
- package/dist/kernal/ContentRange.cjs +1 -1
- package/dist/kernal/ContentRange.mjs +4 -6
- package/dist/kernal/Context.cjs +1 -1
- package/dist/kernal/Context.mjs +31 -35
- package/dist/kernal/Debounce.cjs +1 -1
- package/dist/kernal/Debounce.mjs +31 -37
- package/dist/kernal/EventEmitter.cjs +1 -1
- package/dist/kernal/EventEmitter.mjs +58 -67
- package/dist/kernal/EventNames.cjs +1 -1
- package/dist/kernal/EventNames.mjs +178 -6
- package/dist/kernal/FileLoader.cjs +1 -1
- package/dist/kernal/FileLoader.d.ts +2 -0
- package/dist/kernal/FileLoader.mjs +91 -94
- package/dist/kernal/IDisposable.cjs +0 -1
- package/dist/kernal/IDisposable.mjs +0 -1
- package/dist/kernal/IDocument.cjs +1 -1
- package/dist/kernal/IDocument.mjs +12 -36
- package/dist/kernal/IDocumentsProvider.cjs +0 -1
- package/dist/kernal/IDocumentsProvider.mjs +0 -1
- package/dist/kernal/IEventEmitter.cjs +0 -1
- package/dist/kernal/IEventEmitter.mjs +0 -1
- package/dist/kernal/IFileParser.cjs +1 -1
- package/dist/kernal/IFileParser.mjs +12 -21
- package/dist/kernal/IRenderer.cjs +0 -1
- package/dist/kernal/IRenderer.mjs +0 -1
- package/dist/kernal/IRendererViewport.cjs +1 -1
- package/dist/kernal/IRendererViewport.mjs +4 -5
- package/dist/kernal/IStyleProvider.cjs +0 -1
- package/dist/kernal/IStyleProvider.mjs +0 -1
- package/dist/kernal/ISymbolCalclator.cjs +0 -1
- package/dist/kernal/ISymbolCalclator.mjs +0 -1
- package/dist/kernal/ITextDocument.cjs +0 -1
- package/dist/kernal/ITextDocument.mjs +0 -1
- package/dist/kernal/IThemeProvider.cjs +0 -1
- package/dist/kernal/IThemeProvider.mjs +0 -1
- package/dist/kernal/IWallpaperProvider.cjs +1 -1
- package/dist/kernal/IWallpaperProvider.mjs +7 -7
- package/dist/kernal/JsonConvert.cjs +1 -1
- package/dist/kernal/JsonConvert.mjs +51 -56
- package/dist/kernal/LifecycleHooks.cjs +0 -1
- package/dist/kernal/LifecycleHooks.mjs +0 -1
- package/dist/kernal/LocationState.cjs +1 -1
- package/dist/kernal/LocationState.mjs +4 -5
- package/dist/kernal/MediaTypeRegistry.cjs +1 -1
- package/dist/kernal/MediaTypeRegistry.mjs +39 -64
- package/dist/kernal/Metadata.cjs +1 -1
- package/dist/kernal/Metadata.mjs +7 -7
- package/dist/kernal/OpenOptions.cjs +1 -1
- package/dist/kernal/OpenOptions.mjs +4 -5
- package/dist/kernal/Options.cjs +1 -1
- package/dist/kernal/Options.mjs +39 -16
- package/dist/kernal/OptionsProvider.cjs +1 -1
- package/dist/kernal/OptionsProvider.mjs +22 -24
- package/dist/kernal/Reader.cjs +1 -1
- package/dist/kernal/Reader.mjs +238 -284
- package/dist/kernal/ReaderInfo.cjs +1 -1
- package/dist/kernal/ReaderInfo.mjs +25 -31
- package/dist/kernal/Theme.cjs +1 -1
- package/dist/kernal/Theme.mjs +80 -29
- package/dist/kernal/common/array.cjs +1 -1
- package/dist/kernal/common/array.mjs +11 -13
- package/dist/kernal/common/buffer.cjs +1 -1
- package/dist/kernal/common/buffer.mjs +32 -43
- package/dist/kernal/common/data.cjs +1 -1
- package/dist/kernal/common/data.mjs +20 -13
- package/dist/kernal/common/date.cjs +1 -1
- package/dist/kernal/common/date.mjs +40 -50
- package/dist/kernal/common/encoding.cjs +1 -1
- package/dist/kernal/common/encoding.mjs +29 -36
- package/dist/kernal/common/geometry.cjs +1 -1
- package/dist/kernal/common/geometry.mjs +28 -30
- package/dist/kernal/common/mimetypes.cjs +1 -1
- package/dist/kernal/common/mimetypes.mjs +99 -34
- package/dist/kernal/common/naming.cjs +1 -1
- package/dist/kernal/common/naming.mjs +4 -4
- package/dist/kernal/common/number.cjs +1 -1
- package/dist/kernal/common/number.mjs +42 -53
- package/dist/kernal/common/object.cjs +1 -1
- package/dist/kernal/common/object.mjs +20 -25
- package/dist/kernal/common/path.cjs +1 -1
- package/dist/kernal/common/path.mjs +45 -52
- package/dist/kernal/common/regex.cjs +1 -1
- package/dist/kernal/common/regex.mjs +15 -25
- package/dist/kernal/common/text.cjs +4 -4
- package/dist/kernal/common/text.mjs +67 -88
- package/dist/kernal/common/tree.cjs +1 -1
- package/dist/kernal/common/tree.mjs +13 -13
- package/dist/kernal/common/url.cjs +1 -1
- package/dist/kernal/common/url.mjs +78 -104
- package/dist/kernal/common/uuid.cjs +1 -1
- package/dist/kernal/common/uuid.mjs +24 -28
- package/dist/kernal/crypto/ICrypto.cjs +1 -1
- package/dist/kernal/crypto/ICrypto.mjs +4 -5
- package/dist/kernal/crypto/MD5.cjs +1 -1
- package/dist/kernal/crypto/MD5.mjs +26 -34
- package/dist/kernal/crypto/WebCrypto.cjs +1 -1
- package/dist/kernal/crypto/WebCrypto.mjs +77 -105
- package/dist/kernal/deepClone/buffer.cjs +1 -1
- package/dist/kernal/deepClone/buffer.mjs +7 -25
- package/dist/kernal/deepClone/clone.cjs +1 -1
- package/dist/kernal/deepClone/clone.mjs +52 -116
- package/dist/kernal/deepClone/collection.cjs +1 -1
- package/dist/kernal/deepClone/collection.mjs +43 -56
- package/dist/kernal/deepClone/detector.cjs +1 -1
- package/dist/kernal/deepClone/detector.mjs +8 -16
- package/dist/kernal/deepClone/index.cjs +1 -1
- package/dist/kernal/deepClone/index.mjs +24 -38
- package/dist/kernal/device/IDevice.cjs +1 -1
- package/dist/kernal/device/IDevice.d.ts +0 -2
- package/dist/kernal/device/IDevice.mjs +4 -5
- package/dist/kernal/device/IEnvironment.cjs +0 -1
- package/dist/kernal/device/IEnvironment.mjs +0 -1
- package/dist/kernal/device/IPlatform.cjs +0 -1
- package/dist/kernal/device/IPlatform.mjs +0 -1
- package/dist/kernal/device/WebBrowser.cjs +1 -1
- package/dist/kernal/device/WebBrowser.d.ts +0 -1
- package/dist/kernal/device/WebBrowser.mjs +54 -65
- package/dist/kernal/device/WebEnvironment.cjs +1 -1
- package/dist/kernal/device/WebEnvironment.mjs +21 -21
- package/dist/kernal/device/WebPlatform.cjs +1 -1
- package/dist/kernal/device/WebPlatform.mjs +48 -63
- package/dist/kernal/html/detector.cjs +1 -1
- package/dist/kernal/html/detector.mjs +38 -46
- package/dist/kernal/html/dom.cjs +1 -0
- package/dist/kernal/html/dom.d.ts +3 -0
- package/dist/kernal/html/dom.mjs +13 -0
- package/dist/kernal/html/events.cjs +1 -1
- package/dist/kernal/html/events.mjs +62 -67
- package/dist/kernal/html/finder.cjs +1 -1
- package/dist/kernal/html/finder.mjs +93 -134
- package/dist/kernal/html/geometry.cjs +1 -1
- package/dist/kernal/html/geometry.mjs +340 -384
- package/dist/kernal/html/image.cjs +1 -1
- package/dist/kernal/html/image.mjs +166 -181
- package/dist/kernal/html/injector.cjs +3 -3
- package/dist/kernal/html/injector.mjs +92 -109
- package/dist/kernal/html/manipulator.cjs +1 -1
- package/dist/kernal/html/manipulator.mjs +96 -116
- package/dist/kernal/html/parser.cjs +1 -1
- package/dist/kernal/html/parser.mjs +61 -60
- package/dist/kernal/html/position.cjs +1 -1
- package/dist/kernal/html/position.mjs +146 -193
- package/dist/kernal/html/selection.cjs +7 -7
- package/dist/kernal/html/selection.mjs +206 -238
- package/dist/kernal/html/style.cjs +1 -1
- package/dist/kernal/html/style.mjs +59 -79
- package/dist/kernal/html/text.cjs +2 -2
- package/dist/kernal/html/text.mjs +50 -65
- package/dist/kernal/html/types.cjs +1 -1
- package/dist/kernal/html/types.mjs +7 -7
- package/dist/kernal/i18n/DefaultLocale.cjs +1 -1
- package/dist/kernal/i18n/DefaultLocale.mjs +36 -41
- package/dist/kernal/i18n/ILocale.cjs +1 -1
- package/dist/kernal/i18n/ILocale.mjs +7 -14
- package/dist/kernal/index.cjs +1 -1
- package/dist/kernal/index.mjs +44 -127
- package/dist/kernal/logger/DefaultLogger.cjs +1 -1
- package/dist/kernal/logger/DefaultLogger.mjs +67 -67
- package/dist/kernal/logger/ILogger.cjs +1 -1
- package/dist/kernal/logger/ILogger.mjs +2 -5
- package/dist/kernal/logger/ILoggerFactory.cjs +0 -1
- package/dist/kernal/logger/ILoggerFactory.mjs +0 -1
- package/dist/kernal/logger/LogLevel.cjs +1 -1
- package/dist/kernal/logger/LogLevel.mjs +33 -11
- package/dist/kernal/logger/LoggerFactory.cjs +1 -1
- package/dist/kernal/logger/LoggerFactory.mjs +12 -12
- package/dist/kernal/logo-160x160.cjs +1 -0
- package/dist/kernal/logo-160x160.mjs +4 -0
- package/dist/kernal/mark/IMarker.cjs +0 -1
- package/dist/kernal/mark/IMarker.mjs +0 -1
- package/dist/kernal/mark/Mark.cjs +1 -1
- package/dist/kernal/mark/Mark.mjs +18 -19
- package/dist/kernal/mark/MarkConstants.cjs +1 -1
- package/dist/kernal/mark/MarkConstants.mjs +4 -7
- package/dist/kernal/mark/index.cjs +1 -1
- package/dist/kernal/mark/index.mjs +3 -10
- package/dist/kernal/mark/types.cjs +0 -1
- package/dist/kernal/mark/types.mjs +0 -1
- package/dist/kernal/nav/INavPointProvider.cjs +0 -1
- package/dist/kernal/nav/INavPointProvider.mjs +0 -1
- package/dist/kernal/nav/Nav.cjs +1 -1
- package/dist/kernal/nav/Nav.mjs +16 -18
- package/dist/kernal/navigator/INavPointNavigator.cjs +0 -1
- package/dist/kernal/navigator/INavPointNavigator.mjs +0 -1
- package/dist/kernal/navigator/INavigator.cjs +1 -1
- package/dist/kernal/navigator/INavigator.mjs +4 -5
- package/dist/kernal/navigator/IPagingNavigator.cjs +1 -1
- package/dist/kernal/navigator/IPagingNavigator.mjs +4 -8
- package/dist/kernal/network/HttpClient.cjs +1 -1
- package/dist/kernal/network/HttpClient.mjs +121 -146
- package/dist/kernal/network/IHttpClient.cjs +1 -1
- package/dist/kernal/network/IHttpClient.mjs +4 -5
- package/dist/kernal/pipelines/FileLoadPipeline.cjs +1 -1
- package/dist/kernal/pipelines/FileLoadPipeline.mjs +65 -84
- package/dist/kernal/pipelines/InputFormatter.cjs +1 -1
- package/dist/kernal/pipelines/InputFormatter.mjs +140 -160
- package/dist/kernal/pipelines/metadata.cjs +1 -1
- package/dist/kernal/pipelines/metadata.mjs +44 -49
- package/dist/kernal/plugins/PluginCore.cjs +1 -1
- package/dist/kernal/plugins/PluginCore.mjs +7 -8
- package/dist/kernal/plugins/PluginManager.cjs +1 -1
- package/dist/kernal/plugins/PluginManager.mjs +79 -105
- package/dist/kernal/plugins/PluginRegistry.cjs +1 -1
- package/dist/kernal/plugins/PluginRegistry.mjs +55 -91
- package/dist/kernal/plugins/keyboard/KeyboardPageTurning.cjs +1 -1
- package/dist/kernal/plugins/keyboard/KeyboardPageTurning.mjs +134 -133
- package/dist/kernal/plugins/mouse/WheelPageTurning.cjs +1 -1
- package/dist/kernal/plugins/mouse/WheelPageTurning.mjs +134 -127
- package/dist/kernal/progress/IProgressTracker.cjs +0 -1
- package/dist/kernal/progress/IProgressTracker.mjs +0 -1
- package/dist/kernal/progress/IReadingProgressStore.cjs +0 -1
- package/dist/kernal/progress/IReadingProgressStore.mjs +0 -1
- package/dist/kernal/progress/Progress.cjs +1 -1
- package/dist/kernal/progress/Progress.mjs +23 -40
- package/dist/kernal/progress/ReadingProgressStore.cjs +1 -1
- package/dist/kernal/progress/ReadingProgressStore.mjs +16 -16
- package/dist/kernal/services/ServiceCollection.cjs +1 -1
- package/dist/kernal/services/ServiceCollection.mjs +63 -88
- package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.cjs +2 -2
- package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.d.ts +1 -1
- package/dist/kernal/services/docLoadLayer/HtmlLoadLayer.mjs +63 -68
- package/dist/kernal/services/docLoadLayer/IHtmlLoadLayer.cjs +0 -1
- package/dist/kernal/services/docLoadLayer/IHtmlLoadLayer.mjs +0 -1
- package/dist/kernal/services/file/IFileDecrypter.cjs +1 -1
- package/dist/kernal/services/file/IFileDecrypter.mjs +11 -24
- package/dist/kernal/services/file/IFileProvider.cjs +0 -1
- package/dist/kernal/services/file/IFileProvider.mjs +0 -1
- package/dist/kernal/services/file/IFileUrlProvider.cjs +0 -1
- package/dist/kernal/services/file/IFileUrlProvider.mjs +0 -1
- package/dist/kernal/services/fileUrlParser/DefaultFileUrlParser.cjs +1 -1
- package/dist/kernal/services/fileUrlParser/DefaultFileUrlParser.mjs +109 -118
- package/dist/kernal/services/fileUrlParser/IFileUrlParser.cjs +1 -1
- package/dist/kernal/services/fileUrlParser/IFileUrlParser.mjs +7 -10
- package/dist/kernal/services/font/IFontProvider.cjs +1 -1
- package/dist/kernal/services/font/IFontProvider.mjs +19 -33
- package/dist/kernal/services/internalUrlBuilder/DefaultInternalUrlBuilder.cjs +1 -1
- package/dist/kernal/services/internalUrlBuilder/DefaultInternalUrlBuilder.mjs +14 -21
- package/dist/kernal/services/internalUrlBuilder/IInternalUrlBuilder.cjs +0 -1
- package/dist/kernal/services/internalUrlBuilder/IInternalUrlBuilder.mjs +0 -1
- package/dist/kernal/services/loading/DefaultLoading.cjs +1 -1
- package/dist/kernal/services/loading/DefaultLoading.mjs +46 -41
- package/dist/kernal/services/loading/ILoading.cjs +1 -1
- package/dist/kernal/services/loading/ILoading.mjs +4 -5
- package/dist/kernal/services/notifier/DefaultNotifier.cjs +1 -1
- package/dist/kernal/services/notifier/DefaultNotifier.mjs +63 -65
- package/dist/kernal/services/notifier/INotifier.cjs +0 -1
- package/dist/kernal/services/notifier/INotifier.mjs +0 -1
- package/dist/kernal/services/notifier/notyf/index.cjs +1 -1
- package/dist/kernal/services/notifier/notyf/index.mjs +5 -13
- package/dist/kernal/services/notifier/notyf/notyf.cjs +1 -1
- package/dist/kernal/services/notifier/notyf/notyf.mjs +79 -97
- package/dist/kernal/services/notifier/notyf/notyf.models.cjs +1 -1
- package/dist/kernal/services/notifier/notyf/notyf.models.mjs +39 -41
- package/dist/kernal/services/notifier/notyf/notyf.options.cjs +1 -1
- package/dist/kernal/services/notifier/notyf/notyf.options.mjs +30 -30
- package/dist/kernal/services/notifier/notyf/notyf.view.cjs +1 -1
- package/dist/kernal/services/notifier/notyf/notyf.view.mjs +146 -177
- package/dist/kernal/services/text/ITextDecoder.cjs +0 -1
- package/dist/kernal/services/text/ITextDecoder.mjs +0 -1
- package/dist/kernal/services/text/splitter.cjs +5 -5
- package/dist/kernal/services/text/splitter.mjs +184 -207
- package/dist/kernal/shape/ShapeSorter.cjs +1 -1
- package/dist/kernal/shape/ShapeSorter.mjs +77 -77
- package/dist/kernal/shape/SimpleMatrix.cjs +1 -1
- package/dist/kernal/shape/SimpleMatrix.mjs +20 -13
- package/dist/kernal/shape/definitions.cjs +0 -1
- package/dist/kernal/shape/definitions.mjs +0 -1
- package/dist/kernal/storage/IStorage.cjs +1 -1
- package/dist/kernal/storage/IStorage.mjs +4 -5
- package/dist/kernal/storage/WebStorage.cjs +1 -1
- package/dist/kernal/storage/WebStorage.mjs +164 -201
- package/dist/kernal/types.cjs +0 -1
- package/dist/kernal/types.mjs +0 -1
- package/dist/kernal/web/BrowserCapabilities.cjs +1 -1
- package/dist/kernal/web/BrowserCapabilities.mjs +167 -191
- package/dist/kernal/web/ua.cjs +1 -1
- package/dist/kernal/web/ua.mjs +5 -5
- package/dist/mediaTypes/adjacent.cjs +1 -1
- package/dist/mediaTypes/adjacent.mjs +41 -48
- package/dist/mediaTypes/base/fileParser/BaseFileParser.cjs +1 -1
- package/dist/mediaTypes/base/fileParser/BaseFileParser.mjs +184 -227
- package/dist/mediaTypes/base/index.cjs +1 -1
- package/dist/mediaTypes/base/index.mjs +4 -8
- package/dist/mediaTypes/base/renderer/BaseDocument.cjs +1 -1
- package/dist/mediaTypes/base/renderer/BaseDocument.mjs +41 -49
- package/dist/mediaTypes/base/renderer/BaseDocumentsProvider.cjs +1 -1
- package/dist/mediaTypes/base/renderer/BaseDocumentsProvider.mjs +64 -71
- package/dist/mediaTypes/base/renderer/eventKeys.cjs +1 -1
- package/dist/mediaTypes/base/renderer/eventKeys.mjs +7 -7
- package/dist/mediaTypes/html/HtmlOptions.cjs +1 -1
- package/dist/mediaTypes/html/HtmlOptions.mjs +34 -12
- package/dist/mediaTypes/html/HtmlSettings.cjs +1 -1
- package/dist/mediaTypes/html/HtmlSettings.mjs +43 -6
- package/dist/mediaTypes/html/fileParser/HtmlFileParser.cjs +1 -1
- package/dist/mediaTypes/html/fileParser/HtmlFileParser.mjs +52 -54
- package/dist/mediaTypes/html/fileParser/HtmlTextDocument.cjs +1 -1
- package/dist/mediaTypes/html/fileParser/HtmlTextDocument.mjs +52 -57
- package/dist/mediaTypes/html/fileParser/IHtmlFileParser.cjs +0 -1
- package/dist/mediaTypes/html/fileParser/IHtmlFileParser.mjs +0 -1
- package/dist/mediaTypes/html/renderer/HtmlRenderer.cjs +1 -1
- package/dist/mediaTypes/html/renderer/HtmlRenderer.mjs +89 -89
- package/dist/mediaTypes/html/renderer/IHtmlDocument.cjs +0 -1
- package/dist/mediaTypes/html/renderer/IHtmlDocument.mjs +0 -1
- package/dist/mediaTypes/html/renderer/IHtmlDocumentsProvider.cjs +0 -1
- package/dist/mediaTypes/html/renderer/IHtmlDocumentsProvider.mjs +0 -1
- package/dist/mediaTypes/html/renderer/IHtmlRenderer.cjs +0 -1
- package/dist/mediaTypes/html/renderer/IHtmlRenderer.mjs +0 -1
- package/dist/mediaTypes/html/renderer/IHtmlTextDocument.cjs +0 -1
- package/dist/mediaTypes/html/renderer/IHtmlTextDocument.mjs +0 -1
- package/dist/mediaTypes/html/renderer/document/HtmlDocument.cjs +1 -1
- package/dist/mediaTypes/html/renderer/document/HtmlDocument.mjs +183 -196
- package/dist/mediaTypes/html/renderer/document/HtmlDocumentResizeObserver.cjs +1 -1
- package/dist/mediaTypes/html/renderer/document/HtmlDocumentResizeObserver.mjs +28 -28
- package/dist/mediaTypes/html/renderer/document/HtmlPageCalculator.cjs +1 -1
- package/dist/mediaTypes/html/renderer/document/HtmlPageCalculator.mjs +77 -82
- package/dist/mediaTypes/html/renderer/document/HtmlSymbolCalclator.cjs +1 -1
- package/dist/mediaTypes/html/renderer/document/HtmlSymbolCalclator.mjs +87 -97
- package/dist/mediaTypes/html/renderer/documents/HtmlContainerBuilder.cjs +1 -1
- package/dist/mediaTypes/html/renderer/documents/HtmlContainerBuilder.mjs +49 -64
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsIntersectionObserver.cjs +1 -1
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsIntersectionObserver.mjs +29 -32
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsPreloader.cjs +1 -1
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsPreloader.mjs +76 -84
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.cjs +1 -1
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.d.ts +2 -1
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsProvider.mjs +185 -208
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.cjs +1 -1
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.d.ts +2 -1
- package/dist/mediaTypes/html/renderer/documents/HtmlDocumentsResizeObserver.mjs +39 -41
- package/dist/mediaTypes/html/renderer/documents/IHtmlDocumentsPreloader.cjs +0 -1
- package/dist/mediaTypes/html/renderer/documents/IHtmlDocumentsPreloader.mjs +0 -1
- package/dist/mediaTypes/html/renderer/html/HtmlContentProcessor.cjs +1 -1
- package/dist/mediaTypes/html/renderer/html/HtmlContentProcessor.mjs +130 -182
- package/dist/mediaTypes/html/renderer/html/IHtmlContentProcessor.cjs +0 -1
- package/dist/mediaTypes/html/renderer/html/IHtmlContentProcessor.mjs +0 -1
- package/dist/mediaTypes/html/renderer/html/template.cjs +1 -1
- package/dist/mediaTypes/html/renderer/html/template.mjs +13 -16
- package/dist/mediaTypes/html/renderer/image/HtmlImageLoader.cjs +1 -1
- package/dist/mediaTypes/html/renderer/image/HtmlImageLoader.mjs +371 -447
- package/dist/mediaTypes/html/renderer/image/HtmlImageObserver.cjs +1 -1
- package/dist/mediaTypes/html/renderer/image/HtmlImageObserver.mjs +91 -103
- package/dist/mediaTypes/html/renderer/image/IHtmlImageLoader.cjs +0 -1
- package/dist/mediaTypes/html/renderer/image/IHtmlImageLoader.mjs +0 -1
- package/dist/mediaTypes/html/renderer/image/error-image.cjs +1 -0
- package/dist/mediaTypes/html/renderer/image/error-image.mjs +4 -0
- package/dist/mediaTypes/html/renderer/image/placeholder.cjs +1 -0
- package/dist/mediaTypes/html/renderer/image/placeholder.mjs +4 -0
- package/dist/mediaTypes/html/renderer/layout/HtmlLayoutMetrics.cjs +1 -1
- package/dist/mediaTypes/html/renderer/layout/HtmlLayoutMetrics.mjs +5 -6
- package/dist/mediaTypes/html/renderer/layout/HtmlRendererLayout.cjs +1 -1
- package/dist/mediaTypes/html/renderer/layout/HtmlRendererLayout.mjs +81 -90
- package/dist/mediaTypes/html/renderer/layout/HtmlRendererViewport.cjs +1 -1
- package/dist/mediaTypes/html/renderer/layout/HtmlRendererViewport.mjs +142 -169
- package/dist/mediaTypes/html/renderer/layout/IHtmlRendererLayout.cjs +0 -1
- package/dist/mediaTypes/html/renderer/layout/IHtmlRendererLayout.mjs +0 -1
- package/dist/mediaTypes/html/renderer/layout/ViewportCssVariableNames.cjs +1 -1
- package/dist/mediaTypes/html/renderer/layout/ViewportCssVariableNames.mjs +61 -6
- package/dist/mediaTypes/html/renderer/location/HtmlElementLocator.cjs +1 -1
- package/dist/mediaTypes/html/renderer/location/HtmlElementLocator.mjs +106 -118
- package/dist/mediaTypes/html/renderer/location/HtmlLocationCalculator.cjs +1 -1
- package/dist/mediaTypes/html/renderer/location/HtmlLocationCalculator.mjs +28 -34
- package/dist/mediaTypes/html/renderer/location/IHtmlElementLocator.cjs +0 -1
- package/dist/mediaTypes/html/renderer/location/IHtmlElementLocator.mjs +0 -1
- package/dist/mediaTypes/html/renderer/location/IHtmlLocationCalculator.cjs +0 -1
- package/dist/mediaTypes/html/renderer/location/IHtmlLocationCalculator.mjs +0 -1
- package/dist/mediaTypes/html/renderer/navigator/HtmlCoreNavigator.cjs +1 -1
- package/dist/mediaTypes/html/renderer/navigator/HtmlCoreNavigator.mjs +39 -42
- package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointNavigator.cjs +1 -1
- package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointNavigator.mjs +121 -125
- package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointProvider.cjs +1 -1
- package/dist/mediaTypes/html/renderer/navigator/HtmlNavPointProvider.mjs +151 -178
- package/dist/mediaTypes/html/renderer/navigator/HtmlPagingNavigator.cjs +1 -1
- package/dist/mediaTypes/html/renderer/navigator/HtmlPagingNavigator.mjs +78 -85
- package/dist/mediaTypes/html/renderer/progress/HtmlProgressTracker.cjs +1 -1
- package/dist/mediaTypes/html/renderer/progress/HtmlProgressTracker.mjs +119 -137
- package/dist/mediaTypes/html/renderer/progress/IHtmlIProgressTracker.cjs +0 -1
- package/dist/mediaTypes/html/renderer/progress/IHtmlIProgressTracker.mjs +0 -1
- package/dist/mediaTypes/html/renderer/progress/adjacent.cjs +1 -1
- package/dist/mediaTypes/html/renderer/progress/adjacent.mjs +41 -48
- package/dist/mediaTypes/html/renderer/style/ContentCssVariables.cjs +1 -1
- package/dist/mediaTypes/html/renderer/style/ContentCssVariables.mjs +40 -9
- package/dist/mediaTypes/html/renderer/style/ContentLayoutCssVariableNames.cjs +1 -1
- package/dist/mediaTypes/html/renderer/style/ContentLayoutCssVariableNames.mjs +40 -6
- package/dist/mediaTypes/html/renderer/style/HtmlStyleProvider.cjs +1 -1
- package/dist/mediaTypes/html/renderer/style/HtmlStyleProvider.mjs +62 -74
- package/dist/mediaTypes/html/renderer/style/HtmlThemeApplier.cjs +1 -1
- package/dist/mediaTypes/html/renderer/style/HtmlThemeApplier.mjs +58 -68
- package/dist/mediaTypes/html/renderer/style/IHtmlThemeApplier.cjs +0 -1
- package/dist/mediaTypes/html/renderer/style/IHtmlThemeApplier.mjs +0 -1
- package/dist/mediaTypes/html/renderer/style/{html-content.css.mjs → html-content.cjs} +2 -5
- package/dist/mediaTypes/html/renderer/style/html-content.mjs +4 -0
- package/dist/mediaTypes/html/renderer/visibilityCandidates.cjs +1 -1
- package/dist/mediaTypes/html/renderer/visibilityCandidates.mjs +116 -111
- package/dist/mediaTypes/pdf/PdfOptions.cjs +1 -1
- package/dist/mediaTypes/pdf/PdfOptions.mjs +7 -7
- package/dist/mediaTypes/pdf/ensurePdfWebWorker.cjs +1 -1
- package/dist/mediaTypes/pdf/ensurePdfWebWorker.mjs +16 -26
- package/dist/mediaTypes/pdf/fileParser/IPdfFileParser.cjs +0 -1
- package/dist/mediaTypes/pdf/fileParser/IPdfFileParser.d.ts +2 -0
- package/dist/mediaTypes/pdf/fileParser/IPdfFileParser.mjs +0 -1
- package/dist/mediaTypes/pdf/fileParser/PdfFileParser.cjs +1 -1
- package/dist/mediaTypes/pdf/fileParser/PdfFileParser.mjs +148 -170
- package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.cjs +1 -1
- package/dist/mediaTypes/pdf/fileParser/PdfPasswordProvider.mjs +45 -52
- package/dist/mediaTypes/pdf/fileParser/PdfTextDocument.cjs +1 -1
- package/dist/mediaTypes/pdf/fileParser/PdfTextDocument.mjs +28 -28
- package/dist/mediaTypes/pdf/loadPdfDocument.cjs +1 -1
- package/dist/mediaTypes/pdf/loadPdfDocument.mjs +27 -23
- package/dist/mediaTypes/pdf/renderer/IPdfDocument.cjs +0 -1
- package/dist/mediaTypes/pdf/renderer/IPdfDocument.mjs +0 -1
- package/dist/mediaTypes/pdf/renderer/IPdfRenderer.cjs +0 -1
- package/dist/mediaTypes/pdf/renderer/IPdfRenderer.mjs +0 -1
- package/dist/mediaTypes/pdf/renderer/IPdfSvgBuilder.cjs +0 -1
- package/dist/mediaTypes/pdf/renderer/IPdfSvgBuilder.mjs +0 -1
- package/dist/mediaTypes/pdf/renderer/MultiPdfViewer.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/MultiPdfViewer.mjs +323 -625
- package/dist/mediaTypes/pdf/renderer/PdfCoreNavigator.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfCoreNavigator.mjs +18 -18
- package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfCssVariableNames.mjs +25 -6
- package/dist/mediaTypes/pdf/renderer/PdfDocument.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfDocument.mjs +61 -70
- package/dist/mediaTypes/pdf/renderer/PdfNavPointNavigator.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfNavPointNavigator.mjs +118 -122
- package/dist/mediaTypes/pdf/renderer/PdfNavPointProvider.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfNavPointProvider.mjs +85 -111
- package/dist/mediaTypes/pdf/renderer/PdfNoopL10n.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfNoopL10n.mjs +7 -10
- package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfPagingNavigator.mjs +29 -32
- package/dist/mediaTypes/pdf/renderer/PdfRenderer.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfRenderer.mjs +76 -79
- package/dist/mediaTypes/pdf/renderer/PdfSvgBuilder.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfSvgBuilder.mjs +269 -236
- package/dist/mediaTypes/pdf/renderer/PdfViewerBuilder.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/PdfViewerBuilder.mjs +33 -36
- package/dist/mediaTypes/pdf/renderer/documents/IPdfDocumentsProvider.cjs +0 -1
- package/dist/mediaTypes/pdf/renderer/documents/IPdfDocumentsProvider.mjs +0 -1
- package/dist/mediaTypes/pdf/renderer/documents/PdfDocumentsProvider.cjs +2 -2
- package/dist/mediaTypes/pdf/renderer/documents/PdfDocumentsProvider.mjs +243 -290
- package/dist/mediaTypes/pdf/renderer/input/PdfDocumentEvents.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/input/PdfDocumentEvents.mjs +43 -50
- package/dist/mediaTypes/pdf/renderer/input/PdfKeyboardController.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/input/PdfKeyboardController.mjs +84 -105
- package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/input/PdfViewerEvents.mjs +44 -59
- package/dist/mediaTypes/pdf/renderer/input/PdfZoomInputController.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/input/PdfZoomInputController.mjs +138 -177
- package/dist/mediaTypes/pdf/renderer/layout/IPdfRendererLayout.cjs +0 -1
- package/dist/mediaTypes/pdf/renderer/layout/IPdfRendererLayout.mjs +0 -1
- package/dist/mediaTypes/pdf/renderer/layout/PdfRendererLayout.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/layout/PdfRendererLayout.mjs +36 -42
- package/dist/mediaTypes/pdf/renderer/layout/PdfRendererViewport.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/layout/PdfRendererViewport.mjs +75 -82
- package/dist/mediaTypes/pdf/renderer/location/IPdfDestinationBuilder.cjs +0 -1
- package/dist/mediaTypes/pdf/renderer/location/IPdfDestinationBuilder.mjs +0 -1
- package/dist/mediaTypes/pdf/renderer/location/PdfDestinationBuilder.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/location/PdfDestinationBuilder.mjs +18 -21
- package/dist/mediaTypes/pdf/renderer/progress/IPdfProgressTracker.cjs +0 -1
- package/dist/mediaTypes/pdf/renderer/progress/IPdfProgressTracker.mjs +0 -1
- package/dist/mediaTypes/pdf/renderer/progress/PdfProgressTracker.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/progress/PdfProgressTracker.mjs +54 -68
- package/dist/mediaTypes/pdf/renderer/style/IPdfThemeApplier.cjs +0 -1
- package/dist/mediaTypes/pdf/renderer/style/IPdfThemeApplier.mjs +0 -1
- package/dist/mediaTypes/pdf/renderer/style/PdfThemeApplier.cjs +4 -4
- package/dist/mediaTypes/pdf/renderer/style/PdfThemeApplier.mjs +15 -15
- package/dist/mediaTypes/pdf/renderer/zoom/IPdfScalable.cjs +0 -1
- package/dist/mediaTypes/pdf/renderer/zoom/IPdfScalable.mjs +0 -1
- package/dist/mediaTypes/pdf/renderer/zoom/PdfScalable.cjs +1 -1
- package/dist/mediaTypes/pdf/renderer/zoom/PdfScalable.mjs +46 -41
- package/dist/mediaTypes/pdf/shared/geometry/index.cjs +1 -1
- package/dist/mediaTypes/pdf/shared/geometry/index.mjs +3 -13
- package/dist/mediaTypes/pdf/shared/geometry/selectionToFixedContentRange.cjs +1 -1
- package/dist/mediaTypes/pdf/shared/geometry/selectionToFixedContentRange.mjs +45 -45
- package/dist/mediaTypes/pdf/shared/geometry/textRects.cjs +1 -1
- package/dist/mediaTypes/pdf/shared/geometry/textRects.mjs +219 -263
- package/dist/mediaTypes/pdf/shared/range.cjs +1 -1
- package/dist/mediaTypes/pdf/shared/range.mjs +11 -14
- package/dist/mediaTypes/pdf/shared/selection/IPdfSelection.cjs +0 -1
- package/dist/mediaTypes/pdf/shared/selection/IPdfSelection.mjs +0 -1
- package/dist/mediaTypes/pdf/shared/selection/PdfSelection.cjs +2 -2
- package/dist/mediaTypes/pdf/shared/selection/PdfSelection.mjs +214 -236
- package/dist/mediaTypes/pdf/shared/selection/index.cjs +1 -1
- package/dist/mediaTypes/pdf/shared/selection/index.mjs +3 -6
- package/dist/mediaTypes/pdf/shared/text/bbox.cjs +1 -1
- package/dist/mediaTypes/pdf/shared/text/bbox.mjs +130 -142
- package/dist/mediaTypes/pdf/shared/text/pageText.cjs +5 -5
- package/dist/mediaTypes/pdf/shared/text/pageText.mjs +168 -185
- package/global.d.ts +17 -0
- package/package.json +19 -12
- package/types.d.ts +13 -0
- package/dist/kernal/logo-160x160.png.cjs +0 -1
- package/dist/kernal/logo-160x160.png.mjs +0 -4
- package/dist/mediaTypes/html/renderer/image/error-image.png.cjs +0 -1
- package/dist/mediaTypes/html/renderer/image/error-image.png.mjs +0 -4
- package/dist/mediaTypes/html/renderer/image/placeholder.png.cjs +0 -1
- package/dist/mediaTypes/html/renderer/image/placeholder.png.mjs +0 -4
- package/dist/mediaTypes/html/renderer/style/html-content.css.cjs +0 -316
|
@@ -1,183 +1,131 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { toBlob as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
this.opaqueDocumentBaseUrls = [];
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Reset script path
|
|
133
|
-
* @param virtualDocument
|
|
134
|
-
* @returns
|
|
135
|
-
*/
|
|
136
|
-
async resetScriptSrc(e, o) {
|
|
137
|
-
let n = o.getRoot();
|
|
138
|
-
n || (n = "");
|
|
139
|
-
const r = e.getElementsByTagName("script");
|
|
140
|
-
for (let t = 0; t < r.length; t++) {
|
|
141
|
-
let s = r[t].getAttribute("src");
|
|
142
|
-
if (!(!s || s.startsWith("/"))) {
|
|
143
|
-
if (!c(s)) {
|
|
144
|
-
const i = b(s, n);
|
|
145
|
-
c(n) ? s = i.toString() : (s = i.pathname + i.search, s = s.substring(1));
|
|
146
|
-
}
|
|
147
|
-
if (!c(s)) {
|
|
148
|
-
const i = b(s, n);
|
|
149
|
-
let a = i.pathname + i.search;
|
|
150
|
-
a = a.substring(1);
|
|
151
|
-
const f = await this.fileParser.getFile(s, o.url, "blob"), u = URL.createObjectURL(f);
|
|
152
|
-
r[t].src = u, r[t].setAttribute(C.LinkOriginHrefPropertyName, s);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Add baseUrl, for relative address parsing within the page.
|
|
159
|
-
* about:blank / srcdoc inherit the host page baseURI; an explicit <base>
|
|
160
|
-
* must not point at the host origin or relative assets will load the test page.
|
|
161
|
-
*/
|
|
162
|
-
injectBaseUrl(e, o) {
|
|
163
|
-
const n = e.getElementsByTagName("base");
|
|
164
|
-
for (let a = 0; a < n.length; a++)
|
|
165
|
-
if (!m(n[a].href))
|
|
166
|
-
return;
|
|
167
|
-
let r = o;
|
|
168
|
-
!m(r) && c(r) || (r = this.createOpaqueDocumentBaseUrl());
|
|
169
|
-
const s = E(e, "base", null, {
|
|
170
|
-
href: r
|
|
171
|
-
}), i = R(e);
|
|
172
|
-
i.insertBefore(s, i.firstChild);
|
|
173
|
-
}
|
|
174
|
-
createOpaqueDocumentBaseUrl() {
|
|
175
|
-
const e = URL.createObjectURL(new Blob(["<!doctype html><title></title>"], {
|
|
176
|
-
type: "text/html"
|
|
177
|
-
}));
|
|
178
|
-
return this.opaqueDocumentBaseUrls.push(e), e;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
export {
|
|
182
|
-
K as HtmlContentProcessor
|
|
1
|
+
import { getRandomId as e } from "../../../../kernal/common/uuid.mjs";
|
|
2
|
+
import { isNullOrWhiteSpace as t, startsWithAny as n } from "../../../../kernal/common/text.mjs";
|
|
3
|
+
import { checkIsAbsoluteUrl as r, getFullUrl as i } from "../../../../kernal/common/url.mjs";
|
|
4
|
+
import { getExtension as a } from "../../../../kernal/common/path.mjs";
|
|
5
|
+
import { toBlob as o } from "../../../../kernal/common/buffer.mjs";
|
|
6
|
+
import { LastElementAttributeName as s } from "../../../../kernal/Constants.mjs";
|
|
7
|
+
import { compareTagName as c, getDocumentHead as l } from "../../../../kernal/html/finder.mjs";
|
|
8
|
+
import { createElement as u, injectCssContent as d } from "../../../../kernal/html/injector.mjs";
|
|
9
|
+
import { appendZeroTextIndentForCenterRightAlign as f, removeTextIndent as p, replaceFontSize as m } from "../../../../kernal/html/style.mjs";
|
|
10
|
+
import { convertArrayBufferToString as h, convertStringToUint8Array as g } from "../../../../kernal/common/encoding.mjs";
|
|
11
|
+
import { HtmlSettings as _ } from "../../HtmlSettings.mjs";
|
|
12
|
+
//#region mediaTypes/html/renderer/html/HtmlContentProcessor.ts
|
|
13
|
+
var v = class {
|
|
14
|
+
constructor(e) {
|
|
15
|
+
this.fileParser = e, this.childrenUrls = /* @__PURE__ */ new Map(), this.errorLinks = [], this.docBlobUrls = /* @__PURE__ */ new Map(), this.opaqueDocumentBaseUrls = [];
|
|
16
|
+
}
|
|
17
|
+
async preprocess(e) {
|
|
18
|
+
let t = (await e.getVirtualContentContainer())?.ownerDocument;
|
|
19
|
+
t && (this.format(t), this.injectBaseUrl(t, e.url), await this.resetCssHref(t, e), await this.resetScriptSrc(t, e));
|
|
20
|
+
}
|
|
21
|
+
format(e) {
|
|
22
|
+
let t = e.getElementsByTagName("*"), n = !1;
|
|
23
|
+
for (let e = t.length - 1; e >= 0; e--) {
|
|
24
|
+
let r = t[e];
|
|
25
|
+
if (r.textContent.trim() || r.classList.add("lhx-text-empty"), r.style && (r.style.fontSize || r.style.textIndent)) {
|
|
26
|
+
let e = r.getAttribute("style");
|
|
27
|
+
r.style.fontSize && (e = m(e)), r.style.textIndent && (e = p(e)), r.setAttribute("style", e);
|
|
28
|
+
}
|
|
29
|
+
c(r.tagName, "TABLE") && (r.style.width = "100%", r.style.height = "auto"), n || (c(r.tagName, "SVG") || r.children.length == 0 && !c(r.parentElement.tagName, "SVG")) && (n = !0, r.setAttribute(s, "true")), r.getAttribute("epub:type") == "footnote" && r.style.setProperty("display", "none");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async resetCssHref(n, r) {
|
|
33
|
+
let i = n.getElementsByTagName("link");
|
|
34
|
+
for (let a = i.length - 1; a >= 0; a--) {
|
|
35
|
+
let o = i[a].getAttribute("href");
|
|
36
|
+
if (!i[a].rel || i[a].rel.toLowerCase() != "stylesheet" || t(o)) continue;
|
|
37
|
+
let { href: s, cssContent: c, isHref: l } = await this.getActualCssLink(o, r);
|
|
38
|
+
if (l && o) i[a].href = s, i[a].setAttribute(_.LinkOriginHrefPropertyName, o);
|
|
39
|
+
else if (c) {
|
|
40
|
+
let t = e(!0);
|
|
41
|
+
d(n, c, !1, t), i[a].parentElement?.removeChild(i[a]);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async getActualCssLink(e, s) {
|
|
46
|
+
if (t(e) || r(e)) return {
|
|
47
|
+
href: e,
|
|
48
|
+
cssContent: "",
|
|
49
|
+
isHref: !0
|
|
50
|
+
};
|
|
51
|
+
try {
|
|
52
|
+
let c = await this.fileParser.getFile(e, s.url, "blob"), l = h(await c.arrayBuffer()), u = l.matchAll(/url\(["']?(.*?)["']?\)/gi);
|
|
53
|
+
for (let o of u) {
|
|
54
|
+
let c = o[1];
|
|
55
|
+
if (this.childrenUrls.get(c)) continue;
|
|
56
|
+
let l = a(c);
|
|
57
|
+
if (l && l.toLowerCase() == ".css") {
|
|
58
|
+
if (t(c) || r(c)) continue;
|
|
59
|
+
let { href: e } = await this.getActualCssLink(c, s);
|
|
60
|
+
this.childrenUrls.set(c, e);
|
|
61
|
+
} else {
|
|
62
|
+
let t = i(c, e);
|
|
63
|
+
if (!n(t.toString(), !0, "http://", "https://")) continue;
|
|
64
|
+
let r = (t.pathname + t.search).substring(1);
|
|
65
|
+
if (this.errorLinks.indexOf(r) >= 0) continue;
|
|
66
|
+
try {
|
|
67
|
+
let e = await this.fileParser.getFile(r, "", "blob"), t = URL.createObjectURL(e);
|
|
68
|
+
this.childrenUrls.set(c, t);
|
|
69
|
+
} catch (e) {
|
|
70
|
+
this.errorLinks.indexOf(r) < 0 && this.errorLinks.push(r), this.logger.error(e), this.childrenUrls.set(c, t.toString());
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
let d = l.replace(/url\(["']?(.*?)["']?\)/gi, (e, t) => r(t) ? e : "");
|
|
75
|
+
d = m(d), d = p(d), d = f(d);
|
|
76
|
+
let _ = g(d), v = o(_, { type: "text/css" }), y = URL.createObjectURL(v);
|
|
77
|
+
return this.childrenUrls.set(e, y), {
|
|
78
|
+
href: y,
|
|
79
|
+
cssContent: d,
|
|
80
|
+
isHref: !1
|
|
81
|
+
};
|
|
82
|
+
} catch (t) {
|
|
83
|
+
return this.logger.error(t), {
|
|
84
|
+
href: e,
|
|
85
|
+
cssContent: "",
|
|
86
|
+
isHref: !0
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async dispose() {
|
|
91
|
+
this.childrenUrls.clear(), this.errorLinks && this.errorLinks.splice(0), this.docBlobUrls.clear();
|
|
92
|
+
for (let e of this.opaqueDocumentBaseUrls) try {
|
|
93
|
+
URL.revokeObjectURL(e);
|
|
94
|
+
} catch {}
|
|
95
|
+
this.opaqueDocumentBaseUrls = [];
|
|
96
|
+
}
|
|
97
|
+
async resetScriptSrc(e, t) {
|
|
98
|
+
let n = t.getRoot();
|
|
99
|
+
n ||= "";
|
|
100
|
+
let a = e.getElementsByTagName("script");
|
|
101
|
+
for (let e = 0; e < a.length; e++) {
|
|
102
|
+
let o = a[e].getAttribute("src");
|
|
103
|
+
if (!(!o || o.startsWith("/"))) {
|
|
104
|
+
if (!r(o)) {
|
|
105
|
+
let e = i(o, n);
|
|
106
|
+
r(n) ? o = e.toString() : (o = e.pathname + e.search, o = o.substring(1));
|
|
107
|
+
}
|
|
108
|
+
if (!r(o)) {
|
|
109
|
+
let r = i(o, n), s = r.pathname + r.search;
|
|
110
|
+
s = s.substring(1);
|
|
111
|
+
let c = await this.fileParser.getFile(o, t.url, "blob"), l = URL.createObjectURL(c);
|
|
112
|
+
a[e].src = l, a[e].setAttribute(_.LinkOriginHrefPropertyName, o);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
injectBaseUrl(e, n) {
|
|
118
|
+
let i = e.getElementsByTagName("base");
|
|
119
|
+
for (let e = 0; e < i.length; e++) if (!t(i[e].href)) return;
|
|
120
|
+
let a = n;
|
|
121
|
+
!t(a) && r(a) || (a = this.createOpaqueDocumentBaseUrl());
|
|
122
|
+
let o = u(e, "base", null, { href: a }), s = l(e);
|
|
123
|
+
s.insertBefore(o, s.firstChild);
|
|
124
|
+
}
|
|
125
|
+
createOpaqueDocumentBaseUrl() {
|
|
126
|
+
let e = URL.createObjectURL(new Blob(["<!doctype html><title></title>"], { type: "text/html" }));
|
|
127
|
+
return this.opaqueDocumentBaseUrls.push(e), e;
|
|
128
|
+
}
|
|
183
129
|
};
|
|
130
|
+
//#endregion
|
|
131
|
+
export { v as HtmlContentProcessor };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/web/BrowserCapabilities.cjs"),t=require("../../../../kernal/html/injector.cjs"),n=require("../../../../kernal/common/data.cjs"),r=require("../layout/ViewportCssVariableNames.cjs");var i=`<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><title></title></head><body>{custom-htmls}</body></html>`,a=e=>i.replace(`{custom-htmls}`,e),o=e=>{let t=`<div style="min-height:50px;display:flex;justify-content:center;align-items:center;">The document is too big(`+n.formatFileSize(e)+`), can't be loaded.</div>`;return i.replace(`{custom-htmls}`,t)},s=(n,i,a)=>{let o=t.createElement(n,`iframe`,i);return e.BrowserCapabilities.isFirefox()?o.setAttribute(`src`,`javascript:`):o.setAttribute(`src`,`about:blank`),o.setAttribute(`data-role`,`content`),o.setAttribute(`frameborder`,`0`),o.setAttribute(`border`,`0`),o.setAttribute(`width`,`100%`),o.setAttribute(`height`,`100%`),o.setAttribute(`style`,`display:block`),a?o.style.setProperty(`width`,`100%`):o.style.setProperty(`width`,`var(`+r.ViewportCssVariableNames.ContentContainerWidth+`)`),o.style.setProperty(`height`,`var(`+r.ViewportCssVariableNames.ContentContainerHeight+`)`),o};exports.createIframe=s,exports.getHtmlTemplate=a,exports.getTooBigHtmlTemplate=o,exports.htmlTemplate=i;
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { ViewportCssVariableNames as
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export {
|
|
13
|
-
u as createIframe,
|
|
14
|
-
b as getHtmlTemplate,
|
|
15
|
-
d as getTooBigHtmlTemplate,
|
|
16
|
-
o as htmlTemplate
|
|
1
|
+
import { BrowserCapabilities as e } from "../../../../kernal/web/BrowserCapabilities.mjs";
|
|
2
|
+
import { createElement as t } from "../../../../kernal/html/injector.mjs";
|
|
3
|
+
import { formatFileSize as n } from "../../../../kernal/common/data.mjs";
|
|
4
|
+
import { ViewportCssVariableNames as r } from "../layout/ViewportCssVariableNames.mjs";
|
|
5
|
+
//#region mediaTypes/html/renderer/html/template.ts
|
|
6
|
+
var i = "<?xml version=\"1.0\" encoding=\"utf-8\"?><!DOCTYPE html><html xmlns=\"http://www.w3.org/1999/xhtml\"><head><title></title></head><body>{custom-htmls}</body></html>", a = (e) => i.replace("{custom-htmls}", e), o = (e) => {
|
|
7
|
+
let t = "<div style=\"min-height:50px;display:flex;justify-content:center;align-items:center;\">The document is too big(" + n(e) + "), can't be loaded.</div>";
|
|
8
|
+
return i.replace("{custom-htmls}", t);
|
|
9
|
+
}, s = (n, i, a) => {
|
|
10
|
+
let o = t(n, "iframe", i);
|
|
11
|
+
return e.isFirefox() ? o.setAttribute("src", "javascript:") : o.setAttribute("src", "about:blank"), o.setAttribute("data-role", "content"), o.setAttribute("frameborder", "0"), o.setAttribute("border", "0"), o.setAttribute("width", "100%"), o.setAttribute("height", "100%"), o.setAttribute("style", "display:block"), a ? o.style.setProperty("width", "100%") : o.style.setProperty("width", "var(" + r.ContentContainerWidth + ")"), o.style.setProperty("height", "var(" + r.ContentContainerHeight + ")"), o;
|
|
17
12
|
};
|
|
13
|
+
//#endregion
|
|
14
|
+
export { s as createIframe, a as getHtmlTemplate, o as getTooBigHtmlTemplate, i as htmlTemplate };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("../../../../kernal/common/encoding.cjs"),y=require("../../../../kernal/common/number.cjs"),d=require("../../../../kernal/common/text.cjs"),A=require("../../../../kernal/common/url.cjs"),h=require("../../../../kernal/html/finder.cjs"),C=require("../../../../kernal/html/image.cjs"),L=require("../../../../kernal/html/injector.cjs"),U=require("../../../../kernal/html/parser.cjs"),B=require("../../HtmlSettings.cjs"),f=require("../style/ContentLayoutCssVariableNames.cjs"),E=require("./error-image.png.cjs"),x=require("perfect-debounce"),I=require("../../../../kernal/EventNames.cjs"),S=require("../../../../kernal/web/BrowserCapabilities.cjs"),v=require("../../../../kernal/Constants.cjs"),H=T=>Object.freeze(Object.defineProperty({__proto__:null,default:T},Symbol.toStringTag,{value:"Module"})),D="lhx-svg",P="imageSizes-",V=5;class M{constructor(e,i,a){this.documentsProvider=e,this.rendererViewport=i,this.htmlOptions=a,this.documentImageSizesSummaries=new Map,this.blobUrls=new Map,this.isDisposed=!1,this.resetImageSizeTasks=[],this.onDocumentDisposing=t=>{this.revokeDocumentBlobUrls(t)},this.onImageElementsVisible=async t=>{for(const[r,s]of t.entries())await this.loadImages(r,s)},this.delayLoadOnImageElementsVisible=x.debounce(this.onImageElementsVisible,100),this.onLayoutChange=async()=>{await this.delayResetAllImageSize()},this.resetAllImageSize=async()=>{for(const t of this.documentsProvider.getLoadedDocuments())await this.resetImageSize(t)},this.delayResetAllImageSize=x.debounce(this.resetAllImageSize,100),this.prepareImageSize=async(t,r)=>{const s=`.${D} {width: 100% !important; height: auto !important; }`;L.injectCssContent(r,s,!1,"lhx-svg-style");const n=[...r.getElementsByTagName("img"),...r.getElementsByTagName("image")],o=this.getImageSizesSummary(r);o.total=n.length;const l=this.documentsProvider.getDocuments().indexOf(t),m=this.getResourceId(),c=await this.getStorage();let u=null;l>=0&&c&&m&&(u=await c.get(P+m,l.toString()));const w=n.length>100;for(let b=0;b<n.length;b++){if(this.isDisposed)return;try{const p=n[b];p.parentElement&&h.compareTagName(p.parentElement.tagName,"SVG")&&p.parentElement.classList.add(D);const z=this.getImageUrl(p);let N=u?.find(O=>O.url==z);N||(N=await this.prefetchImageSize(t,p,!0)),N&&(this.resetImageStyles(p,N.width,N.height),this.resetInlineImageSize(p)),w&&b%10==0&&(this.events.emit(I.EventNames.ProcessedImageCount,{doc:t,totalImageCount:n.length,processedImageCount:b}),await S.BrowserCapabilities.yieldToMain())}catch(p){this.logger.error(p)}}l>=0&&c&&m&&await this.persistImageSizes(c,m,l.toString(),u,o)},this.getImageUrl=t=>{const r=t.getAttribute("data-preset-preview-url")=="true";return h.compareTagName(t.tagName,"IMAGE")?r?t.getAttribute("data-src")??t.getAttribute("xlink:href")??t.getAttribute("href"):t.getAttribute("xlink:href")??t.getAttribute("href"):r?t.getAttribute("data-src"):t.getAttribute("src")},this.resetImageStyles=(t,r,s)=>{if(r<=0||s<=0||!S.BrowserCapabilities.supportCssAspectRatio())return;this.setWidthAndHeight(t,r,s);let n=t;if(h.compareTagName(t.tagName,"IMAGE")&&(n=t.parentElement),!n)return;n.setAttribute("width",`${r}`),n.setAttribute("height",`${s}`);const o=r/s,{columnWidth:g,columnHeight:l}=this.getColumnMetrics();let m=s;g>0&&r>g&&(m=g/r*s);const c=l>0?`min(${m}px,${l}px)`:`${m}px`,u=`calc(100% * var(${f.ContentLayoutCssVariableNames.MaxImageWidthRatio}))`;n.getAttribute("style")?(n.style.width=u,n.style.height="auto",n.style.maxWidth=u,n.style.maxHeight=c,n.style.aspectRatio=`${o}`):n.setAttribute("style",`max-width:${u};height:auto;max-height:${c};aspect-ratio:${o};width:${u}`)},this.resetImageWidthHeight=t=>{t.image.style?(t.image.style.setProperty("width","auto","important"),t.image.style.setProperty("max-width","100%","important"),t.image.style.setProperty("max-height","100%","important")):t.image.setAttribute("style","width:auto !important;max-width:100% !important;max-height:100% !important"),this.resetImageHeight(t.image,t.columnWidth,t.columnHeight,this.htmlOptions.maxImageHeightRatio)},this.flushResetImageSizeTasks=async()=>{if(S.BrowserCapabilities.supportCssAspectRatio()){this.resetImageSizeTasks=[];return}for(;this.resetImageSizeTasks.length>0;){if(this.isDisposed){this.resetImageSizeTasks=[];return}const t=this.resetImageSizeTasks.shift();if(!t)break;this.resetImageWidthHeight(t),await S.BrowserCapabilities.yieldToMain()}},this.resetImageSize=async t=>{const r=t.getContentContainer()?.ownerDocument;if(!r||!h.getDocumentBody(r))return;const{columnWidth:s,columnHeight:n}=this.getColumnMetrics(),o=[...r.getElementsByTagName("img"),...r.getElementsByTagName("image")];if(this.checkIsOnlyOneImageInDocument(r)){const g=o[0];this.handleOnlyOneImageInDocument(s,n,g),await this.loadSingleImage(t,g);return}for(const g of o)this.resetImageSizeTasks.push({image:g,columnWidth:s,columnHeight:n});await this.flushResetImageSizeTasks();for(let g=0;g<Math.min(V,o.length);g++)await this.loadSingleImage(t,o[g])},this.events=this.documentsProvider.owner.events,this.logger=this.documentsProvider.owner.loggerFactory.getLogger(this.constructor.name),this.bindEvents()}bindEvents(){this.events.on(I.EventNames.LayoutChange,this.onLayoutChange),this.events.on(I.EventNames.DocumentDisposing,this.onDocumentDisposing),this.events.on(I.EventNames.ImageElementsVisible,this.delayLoadOnImageElementsVisible)}unbindEvents(){this.events.off(I.EventNames.LayoutChange,this.onLayoutChange),this.events.off(I.EventNames.DocumentDisposing,this.onDocumentDisposing),this.events.off(I.EventNames.ImageElementsVisible,this.delayLoadOnImageElementsVisible)}addBlobUrl(e,i){if(!A.checkIsBlobUrl(i))return;const a=this.blobUrls.get(e);a?a.push(i):this.blobUrls.set(e,[i])}revokeDocumentBlobUrls(e){const i=this.blobUrls.get(e);if(i){for(const a of i)this.revokeObjectURL(a);this.blobUrls.delete(e)}}async preprocessImages(e){const i=e,a=(await i.getVirtualContentContainer())?.ownerDocument;a&&(await this.prepareImageSize(i,a),await this.setImagePreviewUrl(a))}async setImagePreviewUrl(e){const{default:i}=await Promise.resolve().then(()=>H(require("./placeholder.png.cjs"))),a=e.getElementsByTagName("img"),t=e.getElementsByTagName("image");for(let r=0;r<a.length;r++)this.applyPreviewUrl(a[r],a[r].getAttribute("src"),i,!1);for(let r=0;r<t.length;r++){const s=t[r],n=s.getAttribute("xlink:href")??s.getAttribute("href");this.applyPreviewUrl(s,n,i,!0)}}applyPreviewUrl(e,i,a,t){let r=e.getAttribute("data-preview-src");d.isNullOrWhiteSpace(r)&&(r=a,e.setAttribute("data-preview-src",a)),i!=a?e.getAttribute("data-src")!=a&&e.setAttribute("data-src",i??""):e.removeAttribute("data-loaded"),t?e.setAttribute("xlink:href",r):e.src=r,e.setAttribute("data-preset-preview-url","true"),this.setImageStyle(e)}setImageStyle(e){const i=e.parentElement;i&&i.children.length==1&&d.isNullOrWhiteSpace(i.innerText)&&(S.BrowserCapabilities.supportCssHas()||i.classList.add(B.HtmlSettings.BreakInsideAvoid),i.style.removeProperty("width"),i.style.removeProperty("height"))}async persistImageSizes(e,i,a,t,r){const s=Array.from(r.descriptors.values()).filter(o=>o.width>0);if(s.length==0)return;const n=P+i;if(t&&t.length>0){const o=new Set(t.map(l=>l.url)),g=s.filter(l=>!o.has(l.url));g.length>0&&(t.push(...g),await e.set(n,a,t))}else await e.set(n,a,s)}getResourceId(){const e=this.documentsProvider.owner.context;return d.isNullOrWhiteSpace(e.simpleId)?e.id:e.simpleId}async getStorage(){return await this.documentsProvider.owner.services.get("storage")}getImageSizesSummary(e){let i=this.documentImageSizesSummaries.get(e);return i||(i={total:0,checkedCount:0,descriptors:new Map},this.documentImageSizesSummaries.set(e,i)),i}async prefetchImageSize(e,i,a){const t=this.getImageUrl(i),r=i.getAttribute("data-width");if(r!=null){const l=y.parseNumber(i.getAttribute("data-height"),0);return this.addImageDescriptor(i,t,y.parseNumber(r,0),l,!0)}if(!a)return this.addImageDescriptor(i,t,0,0,!1);const n=this.getImageSizesSummary(i.ownerDocument).descriptors.get(t);if(n)return n;let o=0,g=0;try{if(A.checkIsAbsoluteUrl(t)){const l=await C.getImageSize(t);o=l.width,g=l.height}else{const l=await e.fileParser.getFile(t,e.url,"blob"),m=l&&l.size>0?l:E;try{const c=await C.getImageSize(m);o=c.width,g=c.height}catch{}}}catch(l){this.logger.error(l)}return this.addImageDescriptor(i,t,o,g,o<=0)}revokeObjectURL(e){if(!(!e||!d.startsWith(e,"blob:",!0)))try{URL.revokeObjectURL(e)}catch{}}addImageDescriptor(e,i,a,t,r){const s=this.getImageSizesSummary(e.ownerDocument);let n=s.descriptors.get(i);return n?(!n.checked&&r&&(s.checkedCount+=1),n.width=a,n.height=t,n.url=i,n.checked=r,n):(n={url:i,width:a,height:t,checked:r},r&&(s.checkedCount+=1),s.descriptors.set(i,n),n)}setWidthAndHeight(e,i,a){i>0&&a>0&&y.parseNumber(e.getAttribute("data-width"),0,"parseInt")<=0&&(e.setAttribute("data-width",`${i}`),e.setAttribute("data-height",`${a}`))}getColumnMetrics(){const e=this.rendererViewport.getLayoutMetrics();return{columnWidth:e.columnWidth,columnHeight:e.columnHeight}}resetInlineImageSize(e){const i=y.parseNumber(e.getAttribute("data-width"),0),a=y.parseNumber(e.getAttribute("data-height"),0);if(i<=0||a<=0)return;let t=!1;a<=200?t=this.checkIsInlineImage(e,i,a).foundInlineImage:(e.previousSibling?.nodeType==Node.TEXT_NODE&&e.previousSibling.textContent?.trim()?.length>0||e.nextSibling?.nodeType==Node.TEXT_NODE&&e.nextSibling.textContent?.trim()?.length>0)&&(t=this.checkIsInlineImage(e,i,a).foundInlineImage);const r=h.compareTagName(e.tagName,"IMG")?e:e.parentElement;if(!t||!r)return;const s="1em";e.getAttribute("style")?(e.style.setProperty("width","auto","important"),e.style.setProperty("max-width","100%","important"),e.style.setProperty("height",s,"important"),e.style.setProperty("margin-block-start","0","important"),e.style.setProperty("margin-block-end","0","important")):e.setAttribute("style",`width:auto !important;max-width:100% !important;height:${s} !important;margin-block-start:0 !important;margin-block-end:0 !important;`),r.style.setProperty("vertical-align","-0.2em","important"),r.setAttribute("data-inline-image","true")}handleOnlyOneImageInDocument(e,i,a){const t=a.ownerDocument,r=h.getDocumentBody(t);if(!d.isNullOrWhiteSpace(r.getAttribute("data-handled-one-image")))return;r.setAttribute("data-handled-one-image","true"),r.style.setProperty("display","flex","important"),r.style.setProperty("height","100%","important"),r.style.setProperty("justify-content","center","important"),r.style.setProperty("align-items","center","important");let s=a;h.compareTagName(a.parentElement?.tagName,"SVG")&&(s=a.parentElement,a.style.setProperty("width","auto","important"),a.style.setProperty("max-width","100%","important"),a.style.setProperty("max-height",i+"px","important"),a.style.setProperty("display","block","important")),s.style.setProperty("width","auto","important"),s.style.setProperty("max-width","100%","important"),s.style.setProperty("display","block","important"),s.parentElement&&(s.parentElement.style.textAlign="center"),this.resetImageHeight(a,e,i,.95,!0)}resetImageHeight(e,i,a,t,r){const s=h.compareTagName(e.tagName,"IMAGE")?e.parentElement:e;if(!s)return;const n=y.parseNumber(e.getAttribute("data-width"),0),o=y.parseNumber(e.getAttribute("data-height"),0);n<=0||o<=0||this.forceSetImageHeight(s,i,a,n,o,t,r)}forceSetImageHeight(e,i,a,t,r,s,n){if(S.BrowserCapabilities.supportCssMinMaxFunction()){let o;s&&n?o=`min(calc(${r}px * ${s}),calc(var(${f.ContentLayoutCssVariableNames.ColumnHeight}) * ${s}),calc(var(${f.ContentLayoutCssVariableNames.ColumnWidth}) / ${t} * ${r} * ${s}))`:o=`min(calc(${r}px * var(${f.ContentLayoutCssVariableNames.MaxImageHeightRatio})),calc(var(${f.ContentLayoutCssVariableNames.ColumnHeight}) * var(${f.ContentLayoutCssVariableNames.MaxImageHeightRatio})),calc(var(${f.ContentLayoutCssVariableNames.ColumnWidth}) / ${t} * ${r} * var(${f.ContentLayoutCssVariableNames.MaxImageHeightRatio})))`,e.style.setProperty("height",o,"important")}else{const o=this.calcImageHeight(i,a,t,r)*s;e.style.setProperty("height",o+"px","important")}}calcImageHeight(e,i,a,t){if(i>=t&&e>=a)return t;const r=e/i,s=a/t;return r<=s?e/a*t:i}checkIsOnlyOneImageInDocument(e){const i=h.getDocumentBody(e);return!i||i.textContent.trim()?!1:i.getElementsByTagName("img").length==1||i.getElementsByTagName("image").length==1}checkIsInlineTag(e){const i=e.nodeName;return d.isNullOrWhiteSpace(i)?!1:this.htmlOptions.htmlInlineTags.indexOf(i.toLowerCase())>=0}checkIsInlineImage(e,i,a){let{foundInlineImage:t,imageHeight:r}=this.getInlineImageProperties(e,a);if(t)return{foundInlineImage:t,imageHeight:r};let s=e.parentElement,n=e;for(;s&&!h.compareTagName(s.tagName,"BODY");){if(s.children.length>1||s.children.length==1&&s.textContent.trim().length>0)return this.getInlineImageProperties(n,a);n=s,s=s.parentElement}return{foundInlineImage:t,imageHeight:r}}findSiblingNodes(e){let i=e.previousSibling,a=e.nextSibling;for(;i!=null&&!(!d.isNullOrWhiteSpace(i.textContent)||i.nodeType==Node.ELEMENT_NODE);)i=i.previousSibling;for(;a!=null&&!(!d.isNullOrWhiteSpace(a.textContent)||a.nodeType==Node.ELEMENT_NODE);)a=a.nextSibling;return{previousSiblingNode:i,nextSiblingNode:a}}getInlineImageProperties(e,i){const{previousSiblingNode:a,nextSiblingNode:t}=this.findSiblingNodes(e);let r=!1,s;if(!a&&!t)return{foundInlineImage:r,imageHeight:s};const n=a?.ownerDocument?.defaultView??t?.ownerDocument?.defaultView;let o;if(a?.nodeType==Node.TEXT_NODE&&!d.isNullOrWhiteSpace(a.nodeValue)?o=a.parentElement:t?.nodeType==Node.TEXT_NODE&&!d.isNullOrWhiteSpace(t.nodeValue)?o=t.parentElement:a&&this.checkIsInlineTag(a)?o=a:t&&this.checkIsInlineTag(t)&&(o=t),!o)return{foundInlineImage:r,imageHeight:s};const g=1.25,l=n?.getComputedStyle(o);let m,c,u;l?(m=parseFloat(l.fontSize),c=parseFloat(l.lineHeight),u=parseFloat(l.height)):(m=20,c=m*g,u=c);const w=c>m*g?m*g:c;return this.checkElementIsFootnote(e)||h.compareTagName(e.parentElement?.tagName,"A")&&(h.compareTagName(e.parentElement?.parentElement?.tagName,"SUB")||h.compareTagName(e.parentElement?.parentElement?.tagName,"SUP"))?s=m:u&&u<=w?s=u:s=w,i&&i<s&&(s=i),r=!0,{foundInlineImage:r,imageHeight:s}}checkElementIsFootnote(e){return e.getAttribute("class")?.indexOf("footnote")>=0||e.getAttribute("epub:type")=="noteref"||h.compareTagName(e.tagName,"SUB")||h.compareTagName(e.tagName,"SUP")?!0:e.children.length>0?this.checkElementIsFootnote(e.children[0]):!1}async loadImages(e,i){const a=e;if(!(!a||!i?.length))for(const t of i){if(this.isDisposed||!t)return;const r=t.ownerDocument.defaultView;if(r)if(t instanceof r.HTMLImageElement||t instanceof r.SVGImageElement){const s=t.getAttribute(v.ElementInitialNumberName),n=t.ownerDocument.querySelector(`[${v.ElementInitialNumberName}='${s}']`);n&&await this.loadSingleImage(a,n)}else{const s=t.getElementsByTagName("img");for(let l=0;l<s.length;l++)await this.loadSingleImage(a,s[l]);const n=t.getAttribute(v.ElementInitialNumberName),o=e.getContentContainer()?.querySelector(`[${v.ElementInitialNumberName}='${n}']`),g=o&&o!=t?o.getElementsByTagName("image"):t.getElementsByTagName("image");for(let l=0;l<g.length;l++)await this.loadSingleImage(a,g[l])}}}async loadSingleImage(e,i){if(!i||!e)return;const a=i.getAttribute("data-load-state");if(a=="loaded"||a=="loading"||a=="fail")return;i.setAttribute("data-load-state","loading"),i.onload=()=>{i.setAttribute("data-load-state","loaded")},i.onerror=()=>{i.setAttribute("data-load-state","fail")};let t=i.getAttribute("src")??"";const r=i.getAttribute("data-src")??"";d.isNullOrWhiteSpace(r)||(t=r);let s=t;if(!A.checkIsAbsoluteUrl(s)){const n=await e.fileParser.getFile(s,e.url,"blob");if(n&&n.size>0)if(n.type?.toLowerCase()=="image/svg+xml"){const o=k.convertArrayBufferToString(await n.arrayBuffer()),l=U.getFormatDocument(o).querySelector("image");if(l){s=l.getAttribute("xlink:href")??l.getAttribute("href");try{const m=await C.getImageSize(s),c=m.width,u=m.height;i.setAttribute("data-width",c.toString()),i.setAttribute("data-height",u.toString());const{columnWidth:w,columnHeight:b}=this.getColumnMetrics();this.forceSetImageHeight(i,w,b,c,u,this.htmlOptions.maxImageHeightRatio)}catch(m){this.logger.error(m)}}else s="data:image/svg+xml,"+encodeURIComponent(o)}else s=URL.createObjectURL(n),this.addBlobUrl(e,s);else s=E}if(h.compareTagName(i.tagName,"IMG")){const n=i;if(n.src=s,n.decode)try{await n.decode()}catch(o){this.logger.error("image decode failed","imageUrl",s,o),this.revokeObjectURL(s),setTimeout(async()=>{try{const g=await e.fileParser.getFile(t,e.url,"blob");if(g&&g.size>0){const l=URL.createObjectURL(g);this.addBlobUrl(e,l),n.src=l}else n.src=E}catch(g){this.logger.error(g),n.src=E}},500)}}else S.BrowserCapabilities.isSafari()?i.href.baseVal=s:i.setAttribute("xlink:href",s)}async dispose(){this.isDisposed=!0,this.unbindEvents(),this.documentImageSizesSummaries.clear(),this.resetImageSizeTasks=[];for(const e of[...this.blobUrls.keys()])this.revokeDocumentBlobUrls(e);this.blobUrls.clear()}}exports.HtmlImageLoader=M;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/web/BrowserCapabilities.cjs"),t=require("../../../../kernal/EventNames.cjs"),n=require("../../../../kernal/common/text.cjs"),r=require("../../../../kernal/common/url.cjs"),i=require("../../../../kernal/Constants.cjs"),a=require("../../../../kernal/common/number.cjs"),o=require("../../../../kernal/html/finder.cjs"),s=require("../../../../kernal/html/injector.cjs"),c=require("../../../../kernal/html/parser.cjs"),l=require("../../../../kernal/html/image.cjs"),u=require("../../../../kernal/common/encoding.cjs"),d=require("../../HtmlSettings.cjs"),f=require("../style/ContentLayoutCssVariableNames.cjs"),p=require("./error-image.cjs");let m=require("perfect-debounce");var h=`lhx-svg`,g=`imageSizes-`,_=5,v=class{constructor(n,r,i){this.documentsProvider=n,this.rendererViewport=r,this.htmlOptions=i,this.documentImageSizesSummaries=new Map,this.blobUrls=new Map,this.isDisposed=!1,this.resetImageSizeTasks=[],this.onDocumentDisposing=e=>{this.revokeDocumentBlobUrls(e)},this.onImageElementsVisible=async e=>{for(let[t,n]of e.entries())await this.loadImages(t,n)},this.delayLoadOnImageElementsVisible=(0,m.debounce)(this.onImageElementsVisible,100),this.onLayoutChange=async()=>{await this.delayResetAllImageSize()},this.resetAllImageSize=async()=>{for(let e of this.documentsProvider.getLoadedDocuments())await this.resetImageSize(e)},this.delayResetAllImageSize=(0,m.debounce)(this.resetAllImageSize,100),this.prepareImageSize=async(n,r)=>{s.injectCssContent(r,`.${h} {width: 100% !important; height: auto !important; }`,!1,`lhx-svg-style`);let i=[...r.getElementsByTagName(`img`),...r.getElementsByTagName(`image`)],a=this.getImageSizesSummary(r);a.total=i.length;let c=this.documentsProvider.getDocuments().indexOf(n),l=this.getResourceId(),u=await this.getStorage(),d=null;c>=0&&u&&l&&(d=await u.get(g+l,c.toString()));let f=i.length>100;for(let r=0;r<i.length;r++){if(this.isDisposed)return;try{let a=i[r];a.parentElement&&o.compareTagName(a.parentElement.tagName,`SVG`)&&a.parentElement.classList.add(h);let s=this.getImageUrl(a),c=d?.find(e=>e.url==s);c||=await this.prefetchImageSize(n,a,!0),c&&(this.resetImageStyles(a,c.width,c.height),this.resetInlineImageSize(a)),f&&r%10==0&&(this.events.emit(t.EventNames.ProcessedImageCount,{doc:n,totalImageCount:i.length,processedImageCount:r}),await e.BrowserCapabilities.yieldToMain())}catch(e){this.logger.error(e)}}c>=0&&u&&l&&await this.persistImageSizes(u,l,c.toString(),d,a)},this.getImageUrl=e=>{let t=e.getAttribute(`data-preset-preview-url`)==`true`;return o.compareTagName(e.tagName,`IMAGE`)?t?e.getAttribute(`data-src`)??e.getAttribute(`xlink:href`)??e.getAttribute(`href`):e.getAttribute(`xlink:href`)??e.getAttribute(`href`):t?e.getAttribute(`data-src`):e.getAttribute(`src`)},this.resetImageStyles=(t,n,r)=>{if(n<=0||r<=0||!e.BrowserCapabilities.supportCssAspectRatio())return;this.setWidthAndHeight(t,n,r);let i=t;if(o.compareTagName(t.tagName,`IMAGE`)&&(i=t.parentElement),!i)return;i.setAttribute(`width`,`${n}`),i.setAttribute(`height`,`${r}`);let a=n/r,{columnWidth:s,columnHeight:c}=this.getColumnMetrics(),l=r;s>0&&n>s&&(l=s/n*r);let u=c>0?`min(${l}px,${c}px)`:`${l}px`,d=`calc(100% * var(${f.ContentLayoutCssVariableNames.MaxImageWidthRatio}))`;i.getAttribute(`style`)?(i.style.width=d,i.style.height=`auto`,i.style.maxWidth=d,i.style.maxHeight=u,i.style.aspectRatio=`${a}`):i.setAttribute(`style`,`max-width:${d};height:auto;max-height:${u};aspect-ratio:${a};width:${d}`)},this.resetImageWidthHeight=e=>{e.image.style?(e.image.style.setProperty(`width`,`auto`,`important`),e.image.style.setProperty(`max-width`,`100%`,`important`),e.image.style.setProperty(`max-height`,`100%`,`important`)):e.image.setAttribute(`style`,`width:auto !important;max-width:100% !important;max-height:100% !important`),this.resetImageHeight(e.image,e.columnWidth,e.columnHeight,this.htmlOptions.maxImageHeightRatio)},this.flushResetImageSizeTasks=async()=>{if(e.BrowserCapabilities.supportCssAspectRatio()){this.resetImageSizeTasks=[];return}for(;this.resetImageSizeTasks.length>0;){if(this.isDisposed){this.resetImageSizeTasks=[];return}let t=this.resetImageSizeTasks.shift();if(!t)break;this.resetImageWidthHeight(t),await e.BrowserCapabilities.yieldToMain()}},this.resetImageSize=async e=>{let t=e.getContentContainer()?.ownerDocument;if(!t||!o.getDocumentBody(t))return;let{columnWidth:n,columnHeight:r}=this.getColumnMetrics(),i=[...t.getElementsByTagName(`img`),...t.getElementsByTagName(`image`)];if(this.checkIsOnlyOneImageInDocument(t)){let t=i[0];this.handleOnlyOneImageInDocument(n,r,t),await this.loadSingleImage(e,t);return}for(let e of i)this.resetImageSizeTasks.push({image:e,columnWidth:n,columnHeight:r});await this.flushResetImageSizeTasks();for(let t=0;t<Math.min(_,i.length);t++)await this.loadSingleImage(e,i[t])},this.events=this.documentsProvider.owner.events,this.logger=this.documentsProvider.owner.loggerFactory.getLogger(this.constructor.name),this.bindEvents()}bindEvents(){this.events.on(t.EventNames.LayoutChange,this.onLayoutChange),this.events.on(t.EventNames.DocumentDisposing,this.onDocumentDisposing),this.events.on(t.EventNames.ImageElementsVisible,this.delayLoadOnImageElementsVisible)}unbindEvents(){this.events.off(t.EventNames.LayoutChange,this.onLayoutChange),this.events.off(t.EventNames.DocumentDisposing,this.onDocumentDisposing),this.events.off(t.EventNames.ImageElementsVisible,this.delayLoadOnImageElementsVisible)}addBlobUrl(e,t){if(!r.checkIsBlobUrl(t))return;let n=this.blobUrls.get(e);n?n.push(t):this.blobUrls.set(e,[t])}revokeDocumentBlobUrls(e){let t=this.blobUrls.get(e);if(t){for(let e of t)this.revokeObjectURL(e);this.blobUrls.delete(e)}}async preprocessImages(e){let t=e,n=(await t.getVirtualContentContainer())?.ownerDocument;n&&(await this.prepareImageSize(t,n),await this.setImagePreviewUrl(n))}async setImagePreviewUrl(e){let{default:t}=await Promise.resolve().then(()=>require("./placeholder.cjs")),n=e.getElementsByTagName(`img`),r=e.getElementsByTagName(`image`);for(let e=0;e<n.length;e++)this.applyPreviewUrl(n[e],n[e].getAttribute(`src`),t,!1);for(let e=0;e<r.length;e++){let n=r[e],i=n.getAttribute(`xlink:href`)??n.getAttribute(`href`);this.applyPreviewUrl(n,i,t,!0)}}applyPreviewUrl(e,t,r,i){let a=e.getAttribute(`data-preview-src`);n.isNullOrWhiteSpace(a)&&(a=r,e.setAttribute(`data-preview-src`,r)),t==r?e.removeAttribute(`data-loaded`):e.getAttribute(`data-src`)!=r&&e.setAttribute(`data-src`,t??``),i?e.setAttribute(`xlink:href`,a):e.src=a,e.setAttribute(`data-preset-preview-url`,`true`),this.setImageStyle(e)}setImageStyle(t){let r=t.parentElement;r&&r.children.length==1&&n.isNullOrWhiteSpace(r.innerText)&&(e.BrowserCapabilities.supportCssHas()||r.classList.add(d.HtmlSettings.BreakInsideAvoid),r.style.removeProperty(`width`),r.style.removeProperty(`height`))}async persistImageSizes(e,t,n,r,i){let a=Array.from(i.descriptors.values()).filter(e=>e.width>0);if(a.length==0)return;let o=g+t;if(r&&r.length>0){let t=new Set(r.map(e=>e.url)),i=a.filter(e=>!t.has(e.url));i.length>0&&(r.push(...i),await e.set(o,n,r))}else await e.set(o,n,a)}getResourceId(){let e=this.documentsProvider.owner.context;return n.isNullOrWhiteSpace(e.simpleId)?e.id:e.simpleId}async getStorage(){return await this.documentsProvider.owner.services.get(`storage`)}getImageSizesSummary(e){let t=this.documentImageSizesSummaries.get(e);return t||(t={total:0,checkedCount:0,descriptors:new Map},this.documentImageSizesSummaries.set(e,t)),t}async prefetchImageSize(e,t,n){let i=this.getImageUrl(t),o=t.getAttribute(`data-width`);if(o!=null){let e=a.parseNumber(t.getAttribute(`data-height`),0);return this.addImageDescriptor(t,i,a.parseNumber(o,0),e,!0)}if(!n)return this.addImageDescriptor(t,i,0,0,!1);let s=this.getImageSizesSummary(t.ownerDocument).descriptors.get(i);if(s)return s;let c=0,u=0;try{if(r.checkIsAbsoluteUrl(i)){let e=await l.getImageSize(i);c=e.width,u=e.height}else{let t=await e.fileParser.getFile(i,e.url,`blob`),n=t&&t.size>0?t:p.default;try{let e=await l.getImageSize(n);c=e.width,u=e.height}catch{}}}catch(e){this.logger.error(e)}return this.addImageDescriptor(t,i,c,u,c<=0)}revokeObjectURL(e){if(!(!e||!n.startsWith(e,`blob:`,!0)))try{URL.revokeObjectURL(e)}catch{}}addImageDescriptor(e,t,n,r,i){let a=this.getImageSizesSummary(e.ownerDocument),o=a.descriptors.get(t);return o?(!o.checked&&i&&(a.checkedCount+=1),o.width=n,o.height=r,o.url=t,o.checked=i,o):(o={url:t,width:n,height:r,checked:i},i&&(a.checkedCount+=1),a.descriptors.set(t,o),o)}setWidthAndHeight(e,t,n){t>0&&n>0&&a.parseNumber(e.getAttribute(`data-width`),0,`parseInt`)<=0&&(e.setAttribute(`data-width`,`${t}`),e.setAttribute(`data-height`,`${n}`))}getColumnMetrics(){let e=this.rendererViewport.getLayoutMetrics();return{columnWidth:e.columnWidth,columnHeight:e.columnHeight}}resetInlineImageSize(e){let t=a.parseNumber(e.getAttribute(`data-width`),0),n=a.parseNumber(e.getAttribute(`data-height`),0);if(t<=0||n<=0)return;let r=!1;(n<=200||e.previousSibling?.nodeType==Node.TEXT_NODE&&e.previousSibling.textContent?.trim()?.length>0||e.nextSibling?.nodeType==Node.TEXT_NODE&&e.nextSibling.textContent?.trim()?.length>0)&&(r=this.checkIsInlineImage(e,t,n).foundInlineImage);let i=o.compareTagName(e.tagName,`IMG`)?e:e.parentElement;!r||!i||(e.getAttribute(`style`)?(e.style.setProperty(`width`,`auto`,`important`),e.style.setProperty(`max-width`,`100%`,`important`),e.style.setProperty(`height`,`1em`,`important`),e.style.setProperty(`margin-block-start`,`0`,`important`),e.style.setProperty(`margin-block-end`,`0`,`important`)):e.setAttribute(`style`,`width:auto !important;max-width:100% !important;height:1em !important;margin-block-start:0 !important;margin-block-end:0 !important;`),i.style.setProperty(`vertical-align`,`-0.2em`,`important`),i.setAttribute(`data-inline-image`,`true`))}handleOnlyOneImageInDocument(e,t,r){let i=r.ownerDocument,a=o.getDocumentBody(i);if(!n.isNullOrWhiteSpace(a.getAttribute(`data-handled-one-image`)))return;a.setAttribute(`data-handled-one-image`,`true`),a.style.setProperty(`display`,`flex`,`important`),a.style.setProperty(`height`,`100%`,`important`),a.style.setProperty(`justify-content`,`center`,`important`),a.style.setProperty(`align-items`,`center`,`important`);let s=r;o.compareTagName(r.parentElement?.tagName,`SVG`)&&(s=r.parentElement,r.style.setProperty(`width`,`auto`,`important`),r.style.setProperty(`max-width`,`100%`,`important`),r.style.setProperty(`max-height`,t+`px`,`important`),r.style.setProperty(`display`,`block`,`important`)),s.style.setProperty(`width`,`auto`,`important`),s.style.setProperty(`max-width`,`100%`,`important`),s.style.setProperty(`display`,`block`,`important`),s.parentElement&&(s.parentElement.style.textAlign=`center`),this.resetImageHeight(r,e,t,.95,!0)}resetImageHeight(e,t,n,r,i){let s=o.compareTagName(e.tagName,`IMAGE`)?e.parentElement:e;if(!s)return;let c=a.parseNumber(e.getAttribute(`data-width`),0),l=a.parseNumber(e.getAttribute(`data-height`),0);c<=0||l<=0||this.forceSetImageHeight(s,t,n,c,l,r,i)}forceSetImageHeight(t,n,r,i,a,o,s){if(e.BrowserCapabilities.supportCssMinMaxFunction()){let e;e=o&&s?`min(calc(${a}px * ${o}),calc(var(${f.ContentLayoutCssVariableNames.ColumnHeight}) * ${o}),calc(var(${f.ContentLayoutCssVariableNames.ColumnWidth}) / ${i} * ${a} * ${o}))`:`min(calc(${a}px * var(${f.ContentLayoutCssVariableNames.MaxImageHeightRatio})),calc(var(${f.ContentLayoutCssVariableNames.ColumnHeight}) * var(${f.ContentLayoutCssVariableNames.MaxImageHeightRatio})),calc(var(${f.ContentLayoutCssVariableNames.ColumnWidth}) / ${i} * ${a} * var(${f.ContentLayoutCssVariableNames.MaxImageHeightRatio})))`,t.style.setProperty(`height`,e,`important`)}else{let e=this.calcImageHeight(n,r,i,a)*o;t.style.setProperty(`height`,e+`px`,`important`)}}calcImageHeight(e,t,n,r){return t>=r&&e>=n?r:e/t<=n/r?e/n*r:t}checkIsOnlyOneImageInDocument(e){let t=o.getDocumentBody(e);return!t||t.textContent.trim()?!1:t.getElementsByTagName(`img`).length==1||t.getElementsByTagName(`image`).length==1}checkIsInlineTag(e){let t=e.nodeName;return!n.isNullOrWhiteSpace(t)&&this.htmlOptions.htmlInlineTags.indexOf(t.toLowerCase())>=0}checkIsInlineImage(e,t,n){let{foundInlineImage:r,imageHeight:i}=this.getInlineImageProperties(e,n);if(r)return{foundInlineImage:r,imageHeight:i};let a=e.parentElement,s=e;for(;a&&!o.compareTagName(a.tagName,`BODY`);){if(a.children.length>1||a.children.length==1&&a.textContent.trim().length>0)return this.getInlineImageProperties(s,n);s=a,a=a.parentElement}return{foundInlineImage:r,imageHeight:i}}findSiblingNodes(e){let t=e.previousSibling,r=e.nextSibling;for(;t!=null&&!(!n.isNullOrWhiteSpace(t.textContent)||t.nodeType==Node.ELEMENT_NODE);)t=t.previousSibling;for(;r!=null&&!(!n.isNullOrWhiteSpace(r.textContent)||r.nodeType==Node.ELEMENT_NODE);)r=r.nextSibling;return{previousSiblingNode:t,nextSiblingNode:r}}getInlineImageProperties(e,t){let{previousSiblingNode:r,nextSiblingNode:i}=this.findSiblingNodes(e),a=!1,s;if(!r&&!i)return{foundInlineImage:a,imageHeight:s};let c=r?.ownerDocument?.defaultView??i?.ownerDocument?.defaultView,l;if(r?.nodeType==Node.TEXT_NODE&&!n.isNullOrWhiteSpace(r.nodeValue)?l=r.parentElement:i?.nodeType==Node.TEXT_NODE&&!n.isNullOrWhiteSpace(i.nodeValue)?l=i.parentElement:r&&this.checkIsInlineTag(r)?l=r:i&&this.checkIsInlineTag(i)&&(l=i),!l)return{foundInlineImage:a,imageHeight:s};let u=1.25,d=c?.getComputedStyle(l),f,p,m;d?(f=parseFloat(d.fontSize),p=parseFloat(d.lineHeight),m=parseFloat(d.height)):(f=20,p=f*u,m=p);let h=p>f*u?f*u:p;return s=this.checkElementIsFootnote(e)||o.compareTagName(e.parentElement?.tagName,`A`)&&(o.compareTagName(e.parentElement?.parentElement?.tagName,`SUB`)||o.compareTagName(e.parentElement?.parentElement?.tagName,`SUP`))?f:m&&m<=h?m:h,t&&t<s&&(s=t),a=!0,{foundInlineImage:a,imageHeight:s}}checkElementIsFootnote(e){return e.getAttribute(`class`)?.indexOf(`footnote`)>=0||e.getAttribute(`epub:type`)==`noteref`||o.compareTagName(e.tagName,`SUB`)||o.compareTagName(e.tagName,`SUP`)?!0:e.children.length>0&&this.checkElementIsFootnote(e.children[0])}async loadImages(e,t){let n=e;if(!(!n||!t?.length))for(let r of t){if(this.isDisposed||!r)return;let t=r.ownerDocument.defaultView;if(t){if(r instanceof t.HTMLImageElement||r instanceof t.SVGImageElement){let e=r.getAttribute(i.ElementInitialNumberName),t=r.ownerDocument.querySelector(`[${i.ElementInitialNumberName}='${e}']`);t&&await this.loadSingleImage(n,t)}else{let t=r.getElementsByTagName(`img`);for(let e=0;e<t.length;e++)await this.loadSingleImage(n,t[e]);let a=r.getAttribute(i.ElementInitialNumberName),o=e.getContentContainer()?.querySelector(`[${i.ElementInitialNumberName}='${a}']`),s=o&&o!=r?o.getElementsByTagName(`image`):r.getElementsByTagName(`image`);for(let e=0;e<s.length;e++)await this.loadSingleImage(n,s[e])}}}}async loadSingleImage(t,i){if(!i||!t)return;let a=i.getAttribute(`data-load-state`);if(a==`loaded`||a==`loading`||a==`fail`)return;i.setAttribute(`data-load-state`,`loading`),i.onload=()=>{i.setAttribute(`data-load-state`,`loaded`)},i.onerror=()=>{i.setAttribute(`data-load-state`,`fail`)};let s=i.getAttribute(`src`)??``,d=i.getAttribute(`data-src`)??``;n.isNullOrWhiteSpace(d)||(s=d);let f=s;if(!r.checkIsAbsoluteUrl(f)){let e=await t.fileParser.getFile(f,t.url,`blob`);if(e&&e.size>0){if(e.type?.toLowerCase()==`image/svg+xml`){let t=u.convertArrayBufferToString(await e.arrayBuffer()),n=c.getFormatDocument(t).querySelector(`image`);if(n){f=n.getAttribute(`xlink:href`)??n.getAttribute(`href`);try{let e=await l.getImageSize(f),t=e.width,n=e.height;i.setAttribute(`data-width`,t.toString()),i.setAttribute(`data-height`,n.toString());let{columnWidth:r,columnHeight:a}=this.getColumnMetrics();this.forceSetImageHeight(i,r,a,t,n,this.htmlOptions.maxImageHeightRatio)}catch(e){this.logger.error(e)}}else f=`data:image/svg+xml,`+encodeURIComponent(t)}else f=URL.createObjectURL(e),this.addBlobUrl(t,f)}else f=p.default}if(o.compareTagName(i.tagName,`IMG`)){let e=i;if(e.src=f,e.decode)try{await e.decode()}catch(n){this.logger.error(`image decode failed`,`imageUrl`,f,n),this.revokeObjectURL(f),setTimeout(async()=>{try{let n=await t.fileParser.getFile(s,t.url,`blob`);if(n&&n.size>0){let r=URL.createObjectURL(n);this.addBlobUrl(t,r),e.src=r}else e.src=p.default}catch(t){this.logger.error(t),e.src=p.default}},500)}}else e.BrowserCapabilities.isSafari()?i.href.baseVal=f:i.setAttribute(`xlink:href`,f)}async dispose(){this.isDisposed=!0,this.unbindEvents(),this.documentImageSizesSummaries.clear(),this.resetImageSizeTasks=[];for(let e of[...this.blobUrls.keys()])this.revokeDocumentBlobUrls(e);this.blobUrls.clear()}};exports.HtmlImageLoader=v;
|