@foxycape/core 1.2.0 → 1.2.2
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/kernal/crypto/WebCrypto.cjs +1 -1
- package/dist/kernal/crypto/WebCrypto.mjs +36 -31
- package/dist/kernal/index.cjs +1 -1
- package/dist/kernal/index.d.ts +0 -3
- package/dist/kernal/index.mjs +35 -37
- package/dist/kernal/io/IByteSource.cjs +1 -1
- package/dist/kernal/io/IByteSource.mjs +16 -17
- package/dist/kernal/pipelines/FileLoadPipeline.cjs +1 -1
- package/dist/kernal/pipelines/FileLoadPipeline.mjs +2 -1
- package/dist/kernal/pipelines/InputFormatter.cjs +1 -1
- package/dist/kernal/pipelines/InputFormatter.d.ts +0 -1
- package/dist/kernal/pipelines/InputFormatter.mjs +47 -60
- package/dist/kernal/services/ServiceCollection.cjs +1 -1
- package/dist/kernal/services/ServiceCollection.mjs +0 -3
- package/dist/mediaTypes/html/renderer/HtmlRenderer.cjs +1 -1
- package/dist/mediaTypes/html/renderer/HtmlRenderer.d.ts +2 -2
- package/dist/mediaTypes/html/renderer/HtmlRenderer.mjs +2 -10
- package/package.json +1 -4
- package/dist/kernal/crypto/MD5.cjs +0 -1
- package/dist/kernal/crypto/MD5.d.ts +0 -4
- package/dist/kernal/crypto/MD5.mjs +0 -6
- package/dist/kernal/crypto/hash.cjs +0 -1
- package/dist/kernal/crypto/hash.d.ts +0 -21
- package/dist/kernal/crypto/hash.mjs +0 -48
- package/dist/kernal/plugins/keyboard/KeyboardPageTurning.cjs +0 -1
- package/dist/kernal/plugins/keyboard/KeyboardPageTurning.d.ts +0 -39
- package/dist/kernal/plugins/keyboard/KeyboardPageTurning.mjs +0 -136
- package/dist/mediaTypes/html/renderer/style/LanguageHighlighter.cjs +0 -1
- package/dist/mediaTypes/html/renderer/style/LanguageHighlighter.d.ts +0 -18
- package/dist/mediaTypes/html/renderer/style/LanguageHighlighter.mjs +0 -52
- package/dist/node_modules/highlight.js/styles/github-dark.cjs +0 -118
- package/dist/node_modules/highlight.js/styles/github-dark.mjs +0 -4
- package/dist/node_modules/highlight.js/styles/github.cjs +0 -118
- package/dist/node_modules/highlight.js/styles/github.mjs +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../kernal/EventNames.cjs"),t=require("../../../kernal/common/uuid.cjs"),n=require("../../../kernal/Options.cjs"),r=require("../../../kernal/Theme.cjs"),i=require("../../../kernal/web/scheduler.cjs"),a=require("../../../kernal/html/events.cjs"),o=require("../HtmlOptions.cjs"),s=require("./navigator/HtmlCoreNavigator.cjs"),c=require("./layout/resolveLayoutRoute.cjs"),l=require("./navigator/HtmlPagingNavigator.cjs"),u=require("./navigator/HtmlNavPointNavigator.cjs"),d=require("./navigator/HtmlNavPointProvider.cjs"),f=require("./progress/HtmlProgressTracker.cjs"),p=require("./location/scrollActivity.cjs"),m=require("./documents/HtmlDocumentsProvider.cjs"),h=require("./layout/HtmlRendererLayout.cjs"),g=require("./style/HtmlStyleProvider.cjs"),_=require("./style/HtmlThemeApplier.cjs"),v=require("./documents/HtmlDocumentsResizeObserver.cjs"),y=require("./html/HtmlContentProcessor.cjs"),b=require("./image/HtmlImageLoader.cjs"),x=require("./image/HtmlImageObserver.cjs");var S=class extends m.HtmlDocumentsProvider{constructor(e,r,a,c){super(e,r,a,c),this.isInitRenderer=!1,this.injectProcessHandlers=()=>{this.addDocumentPreprocess(this.preprocessHandler)},this.preprocessHandler=async e=>{await this.contentProcessor.preprocess(e),await this.styleProvider.injectStyles(e);let t=await this.resolveCurrentTheme();t&&await this.themeApplier.applyToDocument(e,t),await this.rendererLayout.applyDocStyles(e),await this.imageLoader.preprocessImages(e);let n=await this.getHighlighter();n&&await n.highlight(e)},this.onPageChange=async()=>{this.progressTracker.notifyProgressChange()},this.onDocumentSizeChange=async()=>{this.owner.context.userChangedProgress||p.isProgrammaticScroll()||p.isUserScrollSettling()||await this.delayRestoreReadingPosition()},this.onOptionsChange=async e=>{let t=this.getRendererContainer();if(!(!t||!t.ownerDocument.defaultView)&&(n.isOptionKey(e)||o.isHtmlOptionKey(e))){let t=o.isHtmlOptionKey(e);if(t){if(!this.owner.context.currentLocation?.precise){let e=await this.progressTracker.getProgress(!0);e&&(this.owner.context.currentLocation=e.location)}this.owner.context.setUserChangedProgress(!1)}if(this.rendererViewport.applyCssVariables(),await i.yieldToMain(),t){for(let e of this.getLoadedDocuments())await this.rendererLayout.applyDocStyles(e);this.owner.context.userChangedProgress||await this.reload()}}},this.progressTracker=new f.HtmlProgressTracker(e,this,c),this.rendererLayout=new h.HtmlRendererLayout(e,this,this.rendererViewport,this.progressTracker,c),this.navPointProvider=new d.HtmlNavPointProvider(this,c),this.navigator=new s.HtmlCoreNavigator(this,c),this.navPointNavigator=new u.HtmlNavPointNavigator(e.locale,e.notifier,this,this.navigator,this.navPointProvider),this.pagingNavigator=new l.HtmlPagingNavigator(this,this.navigator,c),this.styleProvider=new g.HtmlStyleProvider(this),this.currentInstanceId=t.getRandomId(!0),this.themeApplier=new _.HtmlThemeApplier(this),this.documentsResizeObserver=new v.HtmlDocumentsResizeObserver(this,this.rendererViewport,this.progressTracker,this.rendererLayout),this.contentProcessor=new y.HtmlContentProcessor(r),this.imageLoader=this.createImageLoader(),this.imageObserver=new x.HtmlImageObserver(this,c),this.bindEvents(),this.bindScrollWatch(),this.injectProcessHandlers()}get id(){return this.currentInstanceId}createImageLoader(){return new b.HtmlImageLoader(this,this.rendererViewport,this.htmlOptions)}async resolveCurrentTheme(){return(await this.owner.services.get(`themeProvider`))?.getCurrentTheme()??new r.Theme}async getHighlighter(){
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../kernal/EventNames.cjs"),t=require("../../../kernal/common/uuid.cjs"),n=require("../../../kernal/Options.cjs"),r=require("../../../kernal/Theme.cjs"),i=require("../../../kernal/web/scheduler.cjs"),a=require("../../../kernal/html/events.cjs"),o=require("../HtmlOptions.cjs"),s=require("./navigator/HtmlCoreNavigator.cjs"),c=require("./layout/resolveLayoutRoute.cjs"),l=require("./navigator/HtmlPagingNavigator.cjs"),u=require("./navigator/HtmlNavPointNavigator.cjs"),d=require("./navigator/HtmlNavPointProvider.cjs"),f=require("./progress/HtmlProgressTracker.cjs"),p=require("./location/scrollActivity.cjs"),m=require("./documents/HtmlDocumentsProvider.cjs"),h=require("./layout/HtmlRendererLayout.cjs"),g=require("./style/HtmlStyleProvider.cjs"),_=require("./style/HtmlThemeApplier.cjs"),v=require("./documents/HtmlDocumentsResizeObserver.cjs"),y=require("./html/HtmlContentProcessor.cjs"),b=require("./image/HtmlImageLoader.cjs"),x=require("./image/HtmlImageObserver.cjs");var S=class extends m.HtmlDocumentsProvider{constructor(e,r,a,c){super(e,r,a,c),this.isInitRenderer=!1,this.injectProcessHandlers=()=>{this.addDocumentPreprocess(this.preprocessHandler)},this.preprocessHandler=async e=>{await this.contentProcessor.preprocess(e),await this.styleProvider.injectStyles(e);let t=await this.resolveCurrentTheme();t&&await this.themeApplier.applyToDocument(e,t),await this.rendererLayout.applyDocStyles(e),await this.imageLoader.preprocessImages(e);let n=await this.getHighlighter();n&&await n.highlight(e)},this.onPageChange=async()=>{this.progressTracker.notifyProgressChange()},this.onDocumentSizeChange=async()=>{this.owner.context.userChangedProgress||p.isProgrammaticScroll()||p.isUserScrollSettling()||await this.delayRestoreReadingPosition()},this.onOptionsChange=async e=>{let t=this.getRendererContainer();if(!(!t||!t.ownerDocument.defaultView)&&(n.isOptionKey(e)||o.isHtmlOptionKey(e))){let t=o.isHtmlOptionKey(e);if(t){if(!this.owner.context.currentLocation?.precise){let e=await this.progressTracker.getProgress(!0);e&&(this.owner.context.currentLocation=e.location)}this.owner.context.setUserChangedProgress(!1)}if(this.rendererViewport.applyCssVariables(),await i.yieldToMain(),t){for(let e of this.getLoadedDocuments())await this.rendererLayout.applyDocStyles(e);this.owner.context.userChangedProgress||await this.reload()}}},this.progressTracker=new f.HtmlProgressTracker(e,this,c),this.rendererLayout=new h.HtmlRendererLayout(e,this,this.rendererViewport,this.progressTracker,c),this.navPointProvider=new d.HtmlNavPointProvider(this,c),this.navigator=new s.HtmlCoreNavigator(this,c),this.navPointNavigator=new u.HtmlNavPointNavigator(e.locale,e.notifier,this,this.navigator,this.navPointProvider),this.pagingNavigator=new l.HtmlPagingNavigator(this,this.navigator,c),this.styleProvider=new g.HtmlStyleProvider(this),this.currentInstanceId=t.getRandomId(!0),this.themeApplier=new _.HtmlThemeApplier(this),this.documentsResizeObserver=new v.HtmlDocumentsResizeObserver(this,this.rendererViewport,this.progressTracker,this.rendererLayout),this.contentProcessor=new y.HtmlContentProcessor(r),this.imageLoader=this.createImageLoader(),this.imageObserver=new x.HtmlImageObserver(this,c),this.bindEvents(),this.bindScrollWatch(),this.injectProcessHandlers()}get id(){return this.currentInstanceId}createImageLoader(){return new b.HtmlImageLoader(this,this.rendererViewport,this.htmlOptions)}async resolveCurrentTheme(){return(await this.owner.services.get(`themeProvider`))?.getCurrentTheme()??new r.Theme}async getHighlighter(){}bindEvents(){this.owner.events.on(e.EventNames.OptionsChange,this.onOptionsChange),this.owner.events.on(e.EventNames.PageChange,this.onPageChange),this.owner.events.on(e.EventNames.DocumentSizeChange,this.onDocumentSizeChange)}unbindEvents(){this.owner.events.off(e.EventNames.OptionsChange,this.onOptionsChange),this.owner.events.off(e.EventNames.PageChange,this.onPageChange),this.owner.events.off(e.EventNames.DocumentSizeChange,this.onDocumentSizeChange)}bindScrollWatch(){let t=this.owner.getHostViewport();this.scrollWatchTarget=t.mode==`window`?t.scrollWatchTarget:this.getScrollElement(),this.scrollWatchTarget&&(this.scrollWatchState=a.watchScroll(this.scrollWatchTarget,this.owner.options.calcScrollDirection,async(t,n)=>{this.owner.events.emit(e.EventNames.ReaderDebounceScroll,t,n),this.progressTracker.notifyProgressChange()},t=>{p.isProgrammaticScroll()||!t.isTrusted||(this.owner.onProgressChangeGuard&&this.owner.context?.progress?.current&&(this.owner.onProgressChangeGuard(this.owner.context.progress.current)||t.preventDefault()),p.markUserScroll(),p.releaseAbsoluteLocate(),this.owner.events.emit(e.EventNames.ReaderOriginalScroll,t))}))}async load(e,t){e||=this.owner.context.progress?.location,this.isInitRenderer||(this.isInitRenderer=!0,this.documentsResizeObserver.register(),this.imageObserver.register()),await super.load(e,t)}getFileParser(){return this.fileParser}get writingMode(){return this.htmlOptions.writingMode??`horizontal-tb`}get direction(){return c.resolveHtmlTextDirection(this.htmlOptions)}get layout(){return this.rendererLayout}async applyTheme(e){await this.themeApplier.applyTheme(e);let t=await this.getHighlighter();t&&await t.applyTheme(e)}async dispose(){this.unbindEvents();let e=this.scrollWatchTarget??this.getScrollElement();e&&this.scrollWatchState?._eventHandler&&(e.removeEventListener(`scroll`,this.scrollWatchState._eventHandler,!0),this.scrollWatchState=void 0,this.scrollWatchTarget=void 0),await this.progressTracker.dispose(),await this.imageObserver.dispose(),await this.imageLoader.dispose(),await super.dispose(),await this.styleProvider?.dispose(),await this.navPointProvider?.dispose(),await this.pagingNavigator?.dispose(),await this.documentsResizeObserver.dispose(),await this.contentProcessor.dispose()}};exports.HtmlRenderer=S;
|
|
@@ -6,6 +6,7 @@ import { HtmlOptions } from '../HtmlOptions';
|
|
|
6
6
|
import { IHtmlProgressTracker } from './progress/IHtmlIProgressTracker';
|
|
7
7
|
import { IHtmlRendererLayout } from './layout/IHtmlRendererLayout';
|
|
8
8
|
import { IHtmlDocument } from './IHtmlDocument';
|
|
9
|
+
import { ILanguageHighlighter } from './style/ILanguageHighlighter';
|
|
9
10
|
import { IHtmlImageLoader } from './image/IHtmlImageLoader';
|
|
10
11
|
|
|
11
12
|
export declare class HtmlRenderer extends HtmlDocumentsProvider implements IHtmlRenderer {
|
|
@@ -31,8 +32,7 @@ export declare class HtmlRenderer extends HtmlDocumentsProvider implements IHtml
|
|
|
31
32
|
private injectProcessHandlers;
|
|
32
33
|
private resolveCurrentTheme;
|
|
33
34
|
protected preprocessHandler: (doc: IHtmlDocument) => Promise<void>;
|
|
34
|
-
|
|
35
|
-
private getHighlighter;
|
|
35
|
+
protected getHighlighter(): Promise<ILanguageHighlighter | undefined>;
|
|
36
36
|
protected bindEvents(): void;
|
|
37
37
|
protected unbindEvents(): void;
|
|
38
38
|
private bindScrollWatch;
|
|
@@ -62,15 +62,7 @@ var T = class extends _ {
|
|
|
62
62
|
async resolveCurrentTheme() {
|
|
63
63
|
return (await this.owner.services.get("themeProvider"))?.getCurrentTheme() ?? new r();
|
|
64
64
|
}
|
|
65
|
-
async getHighlighter() {
|
|
66
|
-
if (this.htmlOptions.enableFormatCodeBlock) {
|
|
67
|
-
if (!this.languageHighlighter) {
|
|
68
|
-
let { LanguageHighlighter: e } = await import("./style/LanguageHighlighter.mjs");
|
|
69
|
-
this.languageHighlighter = new e(this);
|
|
70
|
-
}
|
|
71
|
-
return this.languageHighlighter;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
65
|
+
async getHighlighter() {}
|
|
74
66
|
bindEvents() {
|
|
75
67
|
this.owner.events.on(e.OptionsChange, this.onOptionsChange), this.owner.events.on(e.PageChange, this.onPageChange), this.owner.events.on(e.DocumentSizeChange, this.onDocumentSizeChange);
|
|
76
68
|
}
|
|
@@ -108,7 +100,7 @@ var T = class extends _ {
|
|
|
108
100
|
async dispose() {
|
|
109
101
|
this.unbindEvents();
|
|
110
102
|
let e = this.scrollWatchTarget ?? this.getScrollElement();
|
|
111
|
-
e && this.scrollWatchState?._eventHandler && (e.removeEventListener("scroll", this.scrollWatchState._eventHandler, !0), this.scrollWatchState = void 0, this.scrollWatchTarget = void 0), await this.progressTracker.dispose(), await this.imageObserver.dispose(), await this.imageLoader.dispose(), await super.dispose(), await this.styleProvider?.dispose(), await this.
|
|
103
|
+
e && this.scrollWatchState?._eventHandler && (e.removeEventListener("scroll", this.scrollWatchState._eventHandler, !0), this.scrollWatchState = void 0, this.scrollWatchTarget = void 0), await this.progressTracker.dispose(), await this.imageObserver.dispose(), await this.imageLoader.dispose(), await super.dispose(), await this.styleProvider?.dispose(), await this.navPointProvider?.dispose(), await this.pagingNavigator?.dispose(), await this.documentsResizeObserver.dispose(), await this.contentProcessor.dispose();
|
|
112
104
|
}
|
|
113
105
|
};
|
|
114
106
|
//#endregion
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@foxycape/core",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "Browser-side multi-format reader kernel with pluggable parsers, renderers, services, and plugins.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -78,9 +78,6 @@
|
|
|
78
78
|
],
|
|
79
79
|
"dependencies": {
|
|
80
80
|
"events": "^3.3.0",
|
|
81
|
-
"hash-wasm": "^4.12.0",
|
|
82
|
-
"highlight.js": "^11.12.0",
|
|
83
|
-
"hotkeys-js": "^4.0.4",
|
|
84
81
|
"js-base64": "^3.9.2",
|
|
85
82
|
"js-logger": "^1.6.1",
|
|
86
83
|
"perfect-debounce": "^2.1.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../common/uuid.cjs"),t=require("./hash.cjs");var n=async e=>t.digestStream(e,`MD5`),r=async n=>typeof n==`string`?e.computeUniqueId(n):t.digestStream(n,`MD5`,{maxBytes:t.SIMPLE_ID_BYTE_LENGTH});exports.computeMd5=n,exports.computeSimpleId=r;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { computeUniqueId as e } from "../common/uuid.mjs";
|
|
2
|
-
import { SIMPLE_ID_BYTE_LENGTH as t, digestStream as n } from "./hash.mjs";
|
|
3
|
-
//#region kernal/crypto/MD5.ts
|
|
4
|
-
var r = async (e) => n(e, "MD5"), i = async (r) => typeof r == "string" ? e(r) : n(r, "MD5", { maxBytes: t });
|
|
5
|
-
//#endregion
|
|
6
|
-
export { r as computeMd5, i as computeSimpleId };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("hash-wasm");var t=2097152,n=5242880,r=t=>{switch(t){case`MD5`:return(0,e.createMD5)();case`SHA-1`:return(0,e.createSHA1)();case`SHA-256`:return(0,e.createSHA256)();default:throw Error(`Unsupported hash algorithm: ${t}`)}},i=async e=>{let t=await r(e);return{update:e=>{t.update(e)},digest:()=>t.digest()}},a=e=>({size:e.byteLength,read:async(t,n)=>e.subarray(t,n)}),o=e=>({size:e.size,read:async(t,n)=>new Uint8Array(await e.slice(t,n).arrayBuffer())}),s=e=>typeof FileSystemFileHandle<`u`&&e instanceof FileSystemFileHandle,c=async e=>typeof e==`string`?a(new TextEncoder().encode(e)):e instanceof Uint8Array?a(e):e instanceof ArrayBuffer?a(new Uint8Array(e)):e instanceof Blob?o(e):s(e)?o(await e.getFile()):o(await e),l=async(e,t,n)=>{if(t.length===0)return[];let r=n?.chunkSize??2097152;if(r<=0)throw Error(`chunkSize must be greater than 0`);let a=await Promise.all(t.map(e=>i(e.algorithm))),o=t.map(e=>e.maxBytes??1/0),s=await c(e),l=Math.min(s.size,o.reduce((e,t)=>Math.max(e,t),0)),u=0;for(;u<l;){let e=Math.min(u+r,l),t=await s.read(u,e);for(let e=0;e<a.length;e++){let n=o[e];if(u>=n)continue;let r=Math.min(t.byteLength,n-u);r<=0||a[e].update(r===t.byteLength?t:t.subarray(0,r))}u=e}return a.map(e=>e.digest())},u=async(e,t,n)=>{let[r]=await l(e,[{algorithm:t,maxBytes:n?.maxBytes}],{chunkSize:n?.chunkSize});return r};exports.HASH_CHUNK_SIZE=t,exports.SIMPLE_ID_BYTE_LENGTH=n,exports.createHasher=i,exports.digestMany=l,exports.digestStream=u;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { HashAlgorithm } from './ICrypto';
|
|
2
|
-
|
|
3
|
-
export declare const HASH_CHUNK_SIZE: number;
|
|
4
|
-
export declare const SIMPLE_ID_BYTE_LENGTH: number;
|
|
5
|
-
export type DigestSource = string | Blob | Uint8Array | ArrayBuffer | Promise<Blob> | FileSystemFileHandle;
|
|
6
|
-
export type HashSpec = {
|
|
7
|
-
algorithm: HashAlgorithm;
|
|
8
|
-
maxBytes?: number;
|
|
9
|
-
};
|
|
10
|
-
export type StreamingHasher = {
|
|
11
|
-
update: (chunk: Uint8Array) => void;
|
|
12
|
-
digest: () => string;
|
|
13
|
-
};
|
|
14
|
-
export declare const createHasher: (algorithm: HashAlgorithm) => Promise<StreamingHasher>;
|
|
15
|
-
export declare const digestMany: (source: DigestSource, specs: readonly HashSpec[], options?: {
|
|
16
|
-
chunkSize?: number;
|
|
17
|
-
}) => Promise<string[]>;
|
|
18
|
-
export declare const digestStream: (source: DigestSource, algorithm: HashAlgorithm, options?: {
|
|
19
|
-
chunkSize?: number;
|
|
20
|
-
maxBytes?: number;
|
|
21
|
-
}) => Promise<string>;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { createMD5 as e, createSHA1 as t, createSHA256 as n } from "hash-wasm";
|
|
2
|
-
//#region kernal/crypto/hash.ts
|
|
3
|
-
var r = 2097152, i = 5242880, a = (r) => {
|
|
4
|
-
switch (r) {
|
|
5
|
-
case "MD5": return e();
|
|
6
|
-
case "SHA-1": return t();
|
|
7
|
-
case "SHA-256": return n();
|
|
8
|
-
default: throw Error(`Unsupported hash algorithm: ${r}`);
|
|
9
|
-
}
|
|
10
|
-
}, o = async (e) => {
|
|
11
|
-
let t = await a(e);
|
|
12
|
-
return {
|
|
13
|
-
update: (e) => {
|
|
14
|
-
t.update(e);
|
|
15
|
-
},
|
|
16
|
-
digest: () => t.digest()
|
|
17
|
-
};
|
|
18
|
-
}, s = (e) => ({
|
|
19
|
-
size: e.byteLength,
|
|
20
|
-
read: async (t, n) => e.subarray(t, n)
|
|
21
|
-
}), c = (e) => ({
|
|
22
|
-
size: e.size,
|
|
23
|
-
read: async (t, n) => new Uint8Array(await e.slice(t, n).arrayBuffer())
|
|
24
|
-
}), l = (e) => typeof FileSystemFileHandle < "u" && e instanceof FileSystemFileHandle, u = async (e) => typeof e == "string" ? s(new TextEncoder().encode(e)) : e instanceof Uint8Array ? s(e) : e instanceof ArrayBuffer ? s(new Uint8Array(e)) : e instanceof Blob ? c(e) : l(e) ? c(await e.getFile()) : c(await e), d = async (e, t, n) => {
|
|
25
|
-
if (t.length === 0) return [];
|
|
26
|
-
let r = n?.chunkSize ?? 2097152;
|
|
27
|
-
if (r <= 0) throw Error("chunkSize must be greater than 0");
|
|
28
|
-
let i = await Promise.all(t.map((e) => o(e.algorithm))), a = t.map((e) => e.maxBytes ?? Infinity), s = await u(e), c = Math.min(s.size, a.reduce((e, t) => Math.max(e, t), 0)), l = 0;
|
|
29
|
-
for (; l < c;) {
|
|
30
|
-
let e = Math.min(l + r, c), t = await s.read(l, e);
|
|
31
|
-
for (let e = 0; e < i.length; e++) {
|
|
32
|
-
let n = a[e];
|
|
33
|
-
if (l >= n) continue;
|
|
34
|
-
let r = Math.min(t.byteLength, n - l);
|
|
35
|
-
r <= 0 || i[e].update(r === t.byteLength ? t : t.subarray(0, r));
|
|
36
|
-
}
|
|
37
|
-
l = e;
|
|
38
|
-
}
|
|
39
|
-
return i.map((e) => e.digest());
|
|
40
|
-
}, f = async (e, t, n) => {
|
|
41
|
-
let [r] = await d(e, [{
|
|
42
|
-
algorithm: t,
|
|
43
|
-
maxBytes: n?.maxBytes
|
|
44
|
-
}], { chunkSize: n?.chunkSize });
|
|
45
|
-
return r;
|
|
46
|
-
};
|
|
47
|
-
//#endregion
|
|
48
|
-
export { r as HASH_CHUNK_SIZE, i as SIMPLE_ID_BYTE_LENGTH, o as createHasher, d as digestMany, f as digestStream };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../../EventNames.cjs"),n=require("../PluginCore.cjs");let r=require("hotkeys-js");r=e.__toESM(r,1);let i=require("perfect-debounce");var a=`left,up,pageup`,o=`right,down,pagedown`,s=class extends n.PluginCore{constructor(e,t){super(e,t),this.bindedFlipPageElements=[],this.bindedDocuments=[],this.heldKeys={},this.currentPauseFlipPageOnPressKey=!1,this.documentKeydownHandlers=new Map,this.documentKeyupHandlers=new Map,this.onDocumentLoad=async e=>{await this.bindDocument(e)},this.onPressPreviousKey=(e,t)=>{if(this.pluginOptions.flipMode==`page`){if(this.heldKeys[e.keyCode]>1)return;this.currentPauseFlipPageOnPressKey||(e.preventDefault(),e.stopImmediatePropagation(),this.reader.context.setUserChangedProgress(!0,`keyboard`),this.delayGotoPreviousPage(this.reader.getRenderer()))}else this.reader.context.setUserChangedProgress(!0,`keyboard`)},this.onPressNextKey=(e,t)=>{if(this.pluginOptions.flipMode==`page`){if(this.heldKeys[e.keyCode]>1)return;this.currentPauseFlipPageOnPressKey||(e.preventDefault(),e.stopImmediatePropagation(),this.reader.context.setUserChangedProgress(!0,`keyboard`),this.delayGotoNextPage(this.reader.getRenderer()))}else this.reader.context.setUserChangedProgress(!0,`keyboard`)},this.delayGotoPreviousPage=(0,i.debounce)(async e=>{if(e?.pagingNavigator){await e.pagingNavigator.gotoPreviousPage({trigger:`user`,triggerType:`keyboard`});return}await e?.gotoPreviousPage?.({trigger:`user`,triggerType:`keyboard`})},64),this.delayGotoNextPage=(0,i.debounce)(async e=>{if(e?.pagingNavigator){await e.pagingNavigator.gotoNextPage({trigger:`user`,triggerType:`keyboard`});return}await e?.gotoNextPage?.({trigger:`user`,triggerType:`keyboard`})},64),this.pluginOptions={flipMode:t?.flipMode??`page`,flipPagePreviousKeys:t?.flipPagePreviousKeys??a,flipPageNextKeys:t?.flipPageNextKeys??o}}get name(){return`keyboard-page-turning`}get title(){return`Keyboard Page Turning`}get description(){return`Keyboard page flip navigation`}get version(){return`1.0.0`}get supportedVersion(){return`>=1.0.0`}get supportedExtensions(){return[`.xml`,`.xhtml`,`.html`,`.epub`,`.mobi`,`.azw3`,`.fb2`,`.txt`,`.md`]}get supportedLanguages(){return[`*`]}get isUIPlugin(){return!1}getContainer(){}set pauseFlipPageOnPressKey(e){this.currentPauseFlipPageOnPressKey=e}get pauseFlipPageOnPressKey(){return this.currentPauseFlipPageOnPressKey}async load(){let e=this.reader.getReaderContainer();e&&(await this.bindFlipPageKeys(e.ownerDocument.documentElement),e.ownerDocument!==document&&await this.bindFlipPageKeys(document.documentElement));let n=this.reader.getRenderer()?.getLoadedDocuments?.()??this.reader.getRenderer()?.getDocuments?.()??[];for(let e of n)await this.bindDocument(e);this.reader.events.on(t.EventNames.DocumentLoad,this.onDocumentLoad)}async dispose(){this.reader.events.off(t.EventNames.DocumentLoad,this.onDocumentLoad);let e=this.pluginOptions.flipPagePreviousKeys,n=this.pluginOptions.flipPageNextKeys;this.bindedFlipPageElements.length>0&&(e&&r.default.unbind(e,`all`,this.onPressPreviousKey),n&&r.default.unbind(n,`all`,this.onPressNextKey));for(let e of this.bindedDocuments){let t=this.documentKeydownHandlers.get(e),n=this.documentKeyupHandlers.get(e);t&&e.removeEventListener(`keydown`,t,!0),n&&e.removeEventListener(`keyup`,n,!0)}this.documentKeydownHandlers.clear(),this.documentKeyupHandlers.clear(),this.bindedFlipPageElements=[],this.bindedDocuments=[],this.heldKeys={},this.currentPauseFlipPageOnPressKey=!1}async bindDocument(e){let t=e.getContentContainer()?.ownerDocument?.documentElement;t&&await this.bindFlipPageKeys(t)}async bindFlipPageKeys(e){if(this.bindedFlipPageElements.includes(e))return;let t=this.pluginOptions.flipPagePreviousKeys,n=this.pluginOptions.flipPageNextKeys;t&&(0,r.default)(t,{element:e,scope:`all`},this.onPressPreviousKey),n&&(0,r.default)(n,{element:e,scope:`all`},this.onPressNextKey);let i=e.ownerDocument;if(!this.bindedDocuments.includes(i)){this.bindedDocuments.push(i);let e=e=>{this.heldKeys[e.keyCode]=(this.heldKeys[e.keyCode]??0)+1},t=e=>{this.heldKeys[e.keyCode]=0};this.documentKeydownHandlers.set(i,e),this.documentKeyupHandlers.set(i,t),i.addEventListener(`keydown`,e,!0),i.addEventListener(`keyup`,t,!0)}this.bindedFlipPageElements.push(e)}};exports.KeyboardPageTurning=s;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { PluginCore } from '../PluginCore';
|
|
2
|
-
import { Reader } from '../../Reader';
|
|
3
|
-
import { FlipMode } from '../../types';
|
|
4
|
-
|
|
5
|
-
export type KeyboardPageTurningOptions = {
|
|
6
|
-
flipPagePreviousKeys?: string;
|
|
7
|
-
flipPageNextKeys?: string;
|
|
8
|
-
flipMode?: FlipMode;
|
|
9
|
-
};
|
|
10
|
-
export declare class KeyboardPageTurning extends PluginCore {
|
|
11
|
-
private readonly pluginOptions;
|
|
12
|
-
private bindedFlipPageElements;
|
|
13
|
-
private bindedDocuments;
|
|
14
|
-
private heldKeys;
|
|
15
|
-
private currentPauseFlipPageOnPressKey;
|
|
16
|
-
private readonly documentKeydownHandlers;
|
|
17
|
-
private readonly documentKeyupHandlers;
|
|
18
|
-
constructor(reader: Reader, options?: KeyboardPageTurningOptions);
|
|
19
|
-
get name(): string;
|
|
20
|
-
get title(): string;
|
|
21
|
-
get description(): string;
|
|
22
|
-
get version(): string;
|
|
23
|
-
get supportedVersion(): string;
|
|
24
|
-
get supportedExtensions(): string[];
|
|
25
|
-
get supportedLanguages(): string[];
|
|
26
|
-
get isUIPlugin(): boolean;
|
|
27
|
-
getContainer(): HTMLElement | undefined;
|
|
28
|
-
set pauseFlipPageOnPressKey(value: boolean);
|
|
29
|
-
get pauseFlipPageOnPressKey(): boolean;
|
|
30
|
-
load(): Promise<void>;
|
|
31
|
-
dispose(): Promise<void>;
|
|
32
|
-
private onDocumentLoad;
|
|
33
|
-
private bindDocument;
|
|
34
|
-
private bindFlipPageKeys;
|
|
35
|
-
private onPressPreviousKey;
|
|
36
|
-
private onPressNextKey;
|
|
37
|
-
private delayGotoPreviousPage;
|
|
38
|
-
private delayGotoNextPage;
|
|
39
|
-
}
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { EventNames as e } from "../../EventNames.mjs";
|
|
2
|
-
import { PluginCore as t } from "../PluginCore.mjs";
|
|
3
|
-
import { asyncDebounce as n } from "../../web/debounce.mjs";
|
|
4
|
-
import r from "hotkeys-js";
|
|
5
|
-
//#region kernal/plugins/keyboard/KeyboardPageTurning.ts
|
|
6
|
-
var i = "left,up,pageup", a = "right,down,pagedown", o = class extends t {
|
|
7
|
-
constructor(e, t) {
|
|
8
|
-
super(e, t), this.bindedFlipPageElements = [], this.bindedDocuments = [], this.heldKeys = {}, this.currentPauseFlipPageOnPressKey = !1, this.documentKeydownHandlers = /* @__PURE__ */ new Map(), this.documentKeyupHandlers = /* @__PURE__ */ new Map(), this.onDocumentLoad = async (e) => {
|
|
9
|
-
await this.bindDocument(e);
|
|
10
|
-
}, this.onPressPreviousKey = (e, t) => {
|
|
11
|
-
if (this.pluginOptions.flipMode == "page") {
|
|
12
|
-
if (this.heldKeys[e.keyCode] > 1) return;
|
|
13
|
-
this.currentPauseFlipPageOnPressKey || (e.preventDefault(), e.stopImmediatePropagation(), this.reader.context.setUserChangedProgress(!0, "keyboard"), this.delayGotoPreviousPage(this.reader.getRenderer()));
|
|
14
|
-
} else this.reader.context.setUserChangedProgress(!0, "keyboard");
|
|
15
|
-
}, this.onPressNextKey = (e, t) => {
|
|
16
|
-
if (this.pluginOptions.flipMode == "page") {
|
|
17
|
-
if (this.heldKeys[e.keyCode] > 1) return;
|
|
18
|
-
this.currentPauseFlipPageOnPressKey || (e.preventDefault(), e.stopImmediatePropagation(), this.reader.context.setUserChangedProgress(!0, "keyboard"), this.delayGotoNextPage(this.reader.getRenderer()));
|
|
19
|
-
} else this.reader.context.setUserChangedProgress(!0, "keyboard");
|
|
20
|
-
}, this.delayGotoPreviousPage = n(async (e) => {
|
|
21
|
-
if (e?.pagingNavigator) {
|
|
22
|
-
await e.pagingNavigator.gotoPreviousPage({
|
|
23
|
-
trigger: "user",
|
|
24
|
-
triggerType: "keyboard"
|
|
25
|
-
});
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
await e?.gotoPreviousPage?.({
|
|
29
|
-
trigger: "user",
|
|
30
|
-
triggerType: "keyboard"
|
|
31
|
-
});
|
|
32
|
-
}, 64), this.delayGotoNextPage = n(async (e) => {
|
|
33
|
-
if (e?.pagingNavigator) {
|
|
34
|
-
await e.pagingNavigator.gotoNextPage({
|
|
35
|
-
trigger: "user",
|
|
36
|
-
triggerType: "keyboard"
|
|
37
|
-
});
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
await e?.gotoNextPage?.({
|
|
41
|
-
trigger: "user",
|
|
42
|
-
triggerType: "keyboard"
|
|
43
|
-
});
|
|
44
|
-
}, 64), this.pluginOptions = {
|
|
45
|
-
flipMode: t?.flipMode ?? "page",
|
|
46
|
-
flipPagePreviousKeys: t?.flipPagePreviousKeys ?? i,
|
|
47
|
-
flipPageNextKeys: t?.flipPageNextKeys ?? a
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
get name() {
|
|
51
|
-
return "keyboard-page-turning";
|
|
52
|
-
}
|
|
53
|
-
get title() {
|
|
54
|
-
return "Keyboard Page Turning";
|
|
55
|
-
}
|
|
56
|
-
get description() {
|
|
57
|
-
return "Keyboard page flip navigation";
|
|
58
|
-
}
|
|
59
|
-
get version() {
|
|
60
|
-
return "1.0.0";
|
|
61
|
-
}
|
|
62
|
-
get supportedVersion() {
|
|
63
|
-
return ">=1.0.0";
|
|
64
|
-
}
|
|
65
|
-
get supportedExtensions() {
|
|
66
|
-
return [
|
|
67
|
-
".xml",
|
|
68
|
-
".xhtml",
|
|
69
|
-
".html",
|
|
70
|
-
".epub",
|
|
71
|
-
".mobi",
|
|
72
|
-
".azw3",
|
|
73
|
-
".fb2",
|
|
74
|
-
".txt",
|
|
75
|
-
".md"
|
|
76
|
-
];
|
|
77
|
-
}
|
|
78
|
-
get supportedLanguages() {
|
|
79
|
-
return ["*"];
|
|
80
|
-
}
|
|
81
|
-
get isUIPlugin() {
|
|
82
|
-
return !1;
|
|
83
|
-
}
|
|
84
|
-
getContainer() {}
|
|
85
|
-
set pauseFlipPageOnPressKey(e) {
|
|
86
|
-
this.currentPauseFlipPageOnPressKey = e;
|
|
87
|
-
}
|
|
88
|
-
get pauseFlipPageOnPressKey() {
|
|
89
|
-
return this.currentPauseFlipPageOnPressKey;
|
|
90
|
-
}
|
|
91
|
-
async load() {
|
|
92
|
-
let t = this.reader.getReaderContainer();
|
|
93
|
-
t && (await this.bindFlipPageKeys(t.ownerDocument.documentElement), t.ownerDocument !== document && await this.bindFlipPageKeys(document.documentElement));
|
|
94
|
-
let n = this.reader.getRenderer()?.getLoadedDocuments?.() ?? this.reader.getRenderer()?.getDocuments?.() ?? [];
|
|
95
|
-
for (let e of n) await this.bindDocument(e);
|
|
96
|
-
this.reader.events.on(e.DocumentLoad, this.onDocumentLoad);
|
|
97
|
-
}
|
|
98
|
-
async dispose() {
|
|
99
|
-
this.reader.events.off(e.DocumentLoad, this.onDocumentLoad);
|
|
100
|
-
let t = this.pluginOptions.flipPagePreviousKeys, n = this.pluginOptions.flipPageNextKeys;
|
|
101
|
-
this.bindedFlipPageElements.length > 0 && (t && r.unbind(t, "all", this.onPressPreviousKey), n && r.unbind(n, "all", this.onPressNextKey));
|
|
102
|
-
for (let e of this.bindedDocuments) {
|
|
103
|
-
let t = this.documentKeydownHandlers.get(e), n = this.documentKeyupHandlers.get(e);
|
|
104
|
-
t && e.removeEventListener("keydown", t, !0), n && e.removeEventListener("keyup", n, !0);
|
|
105
|
-
}
|
|
106
|
-
this.documentKeydownHandlers.clear(), this.documentKeyupHandlers.clear(), this.bindedFlipPageElements = [], this.bindedDocuments = [], this.heldKeys = {}, this.currentPauseFlipPageOnPressKey = !1;
|
|
107
|
-
}
|
|
108
|
-
async bindDocument(e) {
|
|
109
|
-
let t = e.getContentContainer()?.ownerDocument?.documentElement;
|
|
110
|
-
t && await this.bindFlipPageKeys(t);
|
|
111
|
-
}
|
|
112
|
-
async bindFlipPageKeys(e) {
|
|
113
|
-
if (this.bindedFlipPageElements.includes(e)) return;
|
|
114
|
-
let t = this.pluginOptions.flipPagePreviousKeys, n = this.pluginOptions.flipPageNextKeys;
|
|
115
|
-
t && r(t, {
|
|
116
|
-
element: e,
|
|
117
|
-
scope: "all"
|
|
118
|
-
}, this.onPressPreviousKey), n && r(n, {
|
|
119
|
-
element: e,
|
|
120
|
-
scope: "all"
|
|
121
|
-
}, this.onPressNextKey);
|
|
122
|
-
let i = e.ownerDocument;
|
|
123
|
-
if (!this.bindedDocuments.includes(i)) {
|
|
124
|
-
this.bindedDocuments.push(i);
|
|
125
|
-
let e = (e) => {
|
|
126
|
-
this.heldKeys[e.keyCode] = (this.heldKeys[e.keyCode] ?? 0) + 1;
|
|
127
|
-
}, t = (e) => {
|
|
128
|
-
this.heldKeys[e.keyCode] = 0;
|
|
129
|
-
};
|
|
130
|
-
this.documentKeydownHandlers.set(i, e), this.documentKeyupHandlers.set(i, t), i.addEventListener("keydown", e, !0), i.addEventListener("keyup", t, !0);
|
|
131
|
-
}
|
|
132
|
-
this.bindedFlipPageElements.push(e);
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
//#endregion
|
|
136
|
-
export { o as KeyboardPageTurning };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../kernal/html/finder.cjs"),t=require("../../../../kernal/html/injector.cjs"),n=require("../../../../kernal/Theme.cjs"),r=require("../../../../kernal/html/image.cjs"),i=require("./ContentLayoutCssVariableNames.cjs");var a=`no-text-intent`,o=class{constructor(r){this.documentsProvider=r,this.languagesHighlightCssId=`languages-highlight-css`,this.highlightedDocuments=new Map,this.injectCss=async(n,r)=>{if(!e.getDocumentBody(r))return;let i=await this.getHighlightCss(n);t.injectCssContent(r,i,!0,this.languagesHighlightCssId)},this.getHighlightJs=async()=>{if(this.loadedHljs)return this.loadedHljs;let{default:e}=await import(`highlight.js`);return this.loadedHljs=e,this.loadedHljs},this.getHighlightCss=async e=>{if(e.colorMode===`dark`){let{default:e}=await Promise.resolve().then(()=>require("../../../../node_modules/highlight.js/styles/github-dark.cjs"));return e.toString()}let{default:t}=await Promise.resolve().then(()=>require("../../../../node_modules/highlight.js/styles/github.cjs"));return t.toString()},this.resolveCurrentTheme=async()=>(await this.documentsProvider.owner.services.get(`themeProvider`))?.getCurrentTheme()??new n.Theme}async dispose(){this.highlightedDocuments.clear(),this.loadedHljs=void 0}async applyTheme(e){let n=this.documentsProvider.getLoadedDocuments();for(let r of n){let n=r.getContentContainer()?.ownerDocument;n&&(e.colorMode===`dark`||this.highlightedDocuments.get(r)?await this.injectCss(e,n):t.removeElement(n,this.languagesHighlightCssId))}}async highlight(e){let t=(await e.getVirtualContentContainer())?.ownerDocument;if(!t)return;let n=t.getElementsByTagName(`pre`);for(let e=0;e<n.length;e++){let t=n[e];t.classList.add(a),t.style.setProperty(`max-height`,`var(${i.ContentLayoutCssVariableNames.ColumnMaxHeight})`,`important`),t.firstElementChild&&t.firstElementChild.classList.add(a)}let o=r.getRequireHighlightCodeElements(t),s=o.length>0;if(this.highlightedDocuments.set(e,s),!s)return;let c=await this.getHighlightJs(),l=await this.resolveCurrentTheme();await this.injectCss(l,t);for(let e of o)c.highlightElement(e)}};exports.LanguageHighlighter=o;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { IDocument, IDocumentsProvider, Theme } from '../../../../kernal';
|
|
2
|
-
import { IHtmlDocument } from '../IHtmlDocument';
|
|
3
|
-
import { ILanguageHighlighter } from './ILanguageHighlighter';
|
|
4
|
-
|
|
5
|
-
export declare class LanguageHighlighter implements ILanguageHighlighter {
|
|
6
|
-
private readonly documentsProvider;
|
|
7
|
-
private readonly languagesHighlightCssId;
|
|
8
|
-
private readonly highlightedDocuments;
|
|
9
|
-
private loadedHljs?;
|
|
10
|
-
constructor(documentsProvider: IDocumentsProvider<IHtmlDocument>);
|
|
11
|
-
dispose(): Promise<void>;
|
|
12
|
-
applyTheme(theme: Theme): Promise<void>;
|
|
13
|
-
highlight(doc: IDocument): Promise<void>;
|
|
14
|
-
private injectCss;
|
|
15
|
-
private getHighlightJs;
|
|
16
|
-
private getHighlightCss;
|
|
17
|
-
private resolveCurrentTheme;
|
|
18
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { getDocumentBody as e } from "../../../../kernal/html/finder.mjs";
|
|
2
|
-
import { injectCssContent as t, removeElement as n } from "../../../../kernal/html/injector.mjs";
|
|
3
|
-
import { Theme as r } from "../../../../kernal/Theme.mjs";
|
|
4
|
-
import { getRequireHighlightCodeElements as i } from "../../../../kernal/html/image.mjs";
|
|
5
|
-
import { ContentLayoutCssVariableNames as a } from "./ContentLayoutCssVariableNames.mjs";
|
|
6
|
-
//#region mediaTypes/html/renderer/style/LanguageHighlighter.ts
|
|
7
|
-
var o = "no-text-intent", s = class {
|
|
8
|
-
constructor(n) {
|
|
9
|
-
this.documentsProvider = n, this.languagesHighlightCssId = "languages-highlight-css", this.highlightedDocuments = /* @__PURE__ */ new Map(), this.injectCss = async (n, r) => {
|
|
10
|
-
if (!e(r)) return;
|
|
11
|
-
let i = await this.getHighlightCss(n);
|
|
12
|
-
t(r, i, !0, this.languagesHighlightCssId);
|
|
13
|
-
}, this.getHighlightJs = async () => {
|
|
14
|
-
if (this.loadedHljs) return this.loadedHljs;
|
|
15
|
-
let { default: e } = await import("highlight.js");
|
|
16
|
-
return this.loadedHljs = e, this.loadedHljs;
|
|
17
|
-
}, this.getHighlightCss = async (e) => {
|
|
18
|
-
if (e.colorMode === "dark") {
|
|
19
|
-
let { default: e } = await import("../../../../node_modules/highlight.js/styles/github-dark.mjs");
|
|
20
|
-
return e.toString();
|
|
21
|
-
}
|
|
22
|
-
let { default: t } = await import("../../../../node_modules/highlight.js/styles/github.mjs");
|
|
23
|
-
return t.toString();
|
|
24
|
-
}, this.resolveCurrentTheme = async () => (await this.documentsProvider.owner.services.get("themeProvider"))?.getCurrentTheme() ?? new r();
|
|
25
|
-
}
|
|
26
|
-
async dispose() {
|
|
27
|
-
this.highlightedDocuments.clear(), this.loadedHljs = void 0;
|
|
28
|
-
}
|
|
29
|
-
async applyTheme(e) {
|
|
30
|
-
let t = this.documentsProvider.getLoadedDocuments();
|
|
31
|
-
for (let r of t) {
|
|
32
|
-
let t = r.getContentContainer()?.ownerDocument;
|
|
33
|
-
t && (e.colorMode === "dark" || this.highlightedDocuments.get(r) ? await this.injectCss(e, t) : n(t, this.languagesHighlightCssId));
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
async highlight(e) {
|
|
37
|
-
let t = (await e.getVirtualContentContainer())?.ownerDocument;
|
|
38
|
-
if (!t) return;
|
|
39
|
-
let n = t.getElementsByTagName("pre");
|
|
40
|
-
for (let e = 0; e < n.length; e++) {
|
|
41
|
-
let t = n[e];
|
|
42
|
-
t.classList.add(o), t.style.setProperty("max-height", `var(${a.ColumnMaxHeight})`, "important"), t.firstElementChild && t.firstElementChild.classList.add(o);
|
|
43
|
-
}
|
|
44
|
-
let r = i(t), s = r.length > 0;
|
|
45
|
-
if (this.highlightedDocuments.set(e, s), !s) return;
|
|
46
|
-
let c = await this.getHighlightJs(), l = await this.resolveCurrentTheme();
|
|
47
|
-
await this.injectCss(l, t);
|
|
48
|
-
for (let e of r) c.highlightElement(e);
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
//#endregion
|
|
52
|
-
export { s as LanguageHighlighter };
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
var e=`pre code.hljs {
|
|
2
|
-
display: block;
|
|
3
|
-
overflow-x: auto;
|
|
4
|
-
padding: 1em
|
|
5
|
-
}
|
|
6
|
-
code.hljs {
|
|
7
|
-
padding: 3px 5px
|
|
8
|
-
}
|
|
9
|
-
/*!
|
|
10
|
-
Theme: GitHub Dark
|
|
11
|
-
Description: Dark theme as seen on github.com
|
|
12
|
-
Author: github.com
|
|
13
|
-
Maintainer: @Hirse
|
|
14
|
-
Updated: 2021-05-15
|
|
15
|
-
|
|
16
|
-
Outdated base version: https://github.com/primer/github-syntax-dark
|
|
17
|
-
Current colors taken from GitHub's CSS
|
|
18
|
-
*/
|
|
19
|
-
.hljs {
|
|
20
|
-
color: #c9d1d9;
|
|
21
|
-
background: #0d1117
|
|
22
|
-
}
|
|
23
|
-
.hljs-doctag,
|
|
24
|
-
.hljs-keyword,
|
|
25
|
-
.hljs-meta .hljs-keyword,
|
|
26
|
-
.hljs-template-tag,
|
|
27
|
-
.hljs-template-variable,
|
|
28
|
-
.hljs-type,
|
|
29
|
-
.hljs-variable.language_ {
|
|
30
|
-
/* prettylights-syntax-keyword */
|
|
31
|
-
color: #ff7b72
|
|
32
|
-
}
|
|
33
|
-
.hljs-title,
|
|
34
|
-
.hljs-title.class_,
|
|
35
|
-
.hljs-title.class_.inherited__,
|
|
36
|
-
.hljs-title.function_ {
|
|
37
|
-
/* prettylights-syntax-entity */
|
|
38
|
-
color: #d2a8ff
|
|
39
|
-
}
|
|
40
|
-
.hljs-attr,
|
|
41
|
-
.hljs-attribute,
|
|
42
|
-
.hljs-literal,
|
|
43
|
-
.hljs-meta,
|
|
44
|
-
.hljs-number,
|
|
45
|
-
.hljs-operator,
|
|
46
|
-
.hljs-variable,
|
|
47
|
-
.hljs-selector-attr,
|
|
48
|
-
.hljs-selector-class,
|
|
49
|
-
.hljs-selector-id {
|
|
50
|
-
/* prettylights-syntax-constant */
|
|
51
|
-
color: #79c0ff
|
|
52
|
-
}
|
|
53
|
-
.hljs-regexp,
|
|
54
|
-
.hljs-string,
|
|
55
|
-
.hljs-meta .hljs-string {
|
|
56
|
-
/* prettylights-syntax-string */
|
|
57
|
-
color: #a5d6ff
|
|
58
|
-
}
|
|
59
|
-
.hljs-built_in,
|
|
60
|
-
.hljs-symbol {
|
|
61
|
-
/* prettylights-syntax-variable */
|
|
62
|
-
color: #ffa657
|
|
63
|
-
}
|
|
64
|
-
.hljs-comment,
|
|
65
|
-
.hljs-code,
|
|
66
|
-
.hljs-formula {
|
|
67
|
-
/* prettylights-syntax-comment */
|
|
68
|
-
color: #8b949e
|
|
69
|
-
}
|
|
70
|
-
.hljs-name,
|
|
71
|
-
.hljs-quote,
|
|
72
|
-
.hljs-selector-tag,
|
|
73
|
-
.hljs-selector-pseudo {
|
|
74
|
-
/* prettylights-syntax-entity-tag */
|
|
75
|
-
color: #7ee787
|
|
76
|
-
}
|
|
77
|
-
.hljs-subst {
|
|
78
|
-
/* prettylights-syntax-storage-modifier-import */
|
|
79
|
-
color: #c9d1d9
|
|
80
|
-
}
|
|
81
|
-
.hljs-section {
|
|
82
|
-
/* prettylights-syntax-markup-heading */
|
|
83
|
-
color: #1f6feb;
|
|
84
|
-
font-weight: bold
|
|
85
|
-
}
|
|
86
|
-
.hljs-bullet {
|
|
87
|
-
/* prettylights-syntax-markup-list */
|
|
88
|
-
color: #f2cc60
|
|
89
|
-
}
|
|
90
|
-
.hljs-emphasis {
|
|
91
|
-
/* prettylights-syntax-markup-italic */
|
|
92
|
-
color: #c9d1d9;
|
|
93
|
-
font-style: italic
|
|
94
|
-
}
|
|
95
|
-
.hljs-strong {
|
|
96
|
-
/* prettylights-syntax-markup-bold */
|
|
97
|
-
color: #c9d1d9;
|
|
98
|
-
font-weight: bold
|
|
99
|
-
}
|
|
100
|
-
.hljs-addition {
|
|
101
|
-
/* prettylights-syntax-markup-inserted */
|
|
102
|
-
color: #aff5b4;
|
|
103
|
-
background-color: #033a16
|
|
104
|
-
}
|
|
105
|
-
.hljs-deletion {
|
|
106
|
-
/* prettylights-syntax-markup-deleted */
|
|
107
|
-
color: #ffdcd7;
|
|
108
|
-
background-color: #67060c
|
|
109
|
-
}
|
|
110
|
-
.hljs-char.escape_,
|
|
111
|
-
.hljs-link,
|
|
112
|
-
.hljs-params,
|
|
113
|
-
.hljs-property,
|
|
114
|
-
.hljs-punctuation,
|
|
115
|
-
.hljs-tag {
|
|
116
|
-
/* purposely ignored */
|
|
117
|
-
|
|
118
|
-
}`;exports.default=e;
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
//#region node_modules/highlight.js/styles/github-dark.css?raw
|
|
2
|
-
var e = "pre code.hljs {\n display: block;\n overflow-x: auto;\n padding: 1em\n}\ncode.hljs {\n padding: 3px 5px\n}\n/*!\n Theme: GitHub Dark\n Description: Dark theme as seen on github.com\n Author: github.com\n Maintainer: @Hirse\n Updated: 2021-05-15\n\n Outdated base version: https://github.com/primer/github-syntax-dark\n Current colors taken from GitHub's CSS\n*/\n.hljs {\n color: #c9d1d9;\n background: #0d1117\n}\n.hljs-doctag,\n.hljs-keyword,\n.hljs-meta .hljs-keyword,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-type,\n.hljs-variable.language_ {\n /* prettylights-syntax-keyword */\n color: #ff7b72\n}\n.hljs-title,\n.hljs-title.class_,\n.hljs-title.class_.inherited__,\n.hljs-title.function_ {\n /* prettylights-syntax-entity */\n color: #d2a8ff\n}\n.hljs-attr,\n.hljs-attribute,\n.hljs-literal,\n.hljs-meta,\n.hljs-number,\n.hljs-operator,\n.hljs-variable,\n.hljs-selector-attr,\n.hljs-selector-class,\n.hljs-selector-id {\n /* prettylights-syntax-constant */\n color: #79c0ff\n}\n.hljs-regexp,\n.hljs-string,\n.hljs-meta .hljs-string {\n /* prettylights-syntax-string */\n color: #a5d6ff\n}\n.hljs-built_in,\n.hljs-symbol {\n /* prettylights-syntax-variable */\n color: #ffa657\n}\n.hljs-comment,\n.hljs-code,\n.hljs-formula {\n /* prettylights-syntax-comment */\n color: #8b949e\n}\n.hljs-name,\n.hljs-quote,\n.hljs-selector-tag,\n.hljs-selector-pseudo {\n /* prettylights-syntax-entity-tag */\n color: #7ee787\n}\n.hljs-subst {\n /* prettylights-syntax-storage-modifier-import */\n color: #c9d1d9\n}\n.hljs-section {\n /* prettylights-syntax-markup-heading */\n color: #1f6feb;\n font-weight: bold\n}\n.hljs-bullet {\n /* prettylights-syntax-markup-list */\n color: #f2cc60\n}\n.hljs-emphasis {\n /* prettylights-syntax-markup-italic */\n color: #c9d1d9;\n font-style: italic\n}\n.hljs-strong {\n /* prettylights-syntax-markup-bold */\n color: #c9d1d9;\n font-weight: bold\n}\n.hljs-addition {\n /* prettylights-syntax-markup-inserted */\n color: #aff5b4;\n background-color: #033a16\n}\n.hljs-deletion {\n /* prettylights-syntax-markup-deleted */\n color: #ffdcd7;\n background-color: #67060c\n}\n.hljs-char.escape_,\n.hljs-link,\n.hljs-params,\n.hljs-property,\n.hljs-punctuation,\n.hljs-tag {\n /* purposely ignored */\n \n}";
|
|
3
|
-
//#endregion
|
|
4
|
-
export { e as default };
|