@yui540/comimi 0.1.1 → 0.2.1
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/LICENSE +21 -0
- package/README.md +3 -1
- package/dist/components/controls-dock.d.ts +10 -2
- package/dist/components/controls-dock.d.ts.map +1 -1
- package/dist/components/controls-dock.styles.d.ts +1 -1
- package/dist/components/controls-dock.styles.d.ts.map +1 -1
- package/dist/components/inputs.styles.d.ts +1 -1
- package/dist/components/inputs.styles.d.ts.map +1 -1
- package/dist/components/menu-panel.d.ts +6 -2
- package/dist/components/menu-panel.d.ts.map +1 -1
- package/dist/components/menu-panel.styles.d.ts +1 -1
- package/dist/components/menu-panel.styles.d.ts.map +1 -1
- package/dist/components/page-layout.d.ts +1 -0
- package/dist/components/page-layout.d.ts.map +1 -1
- package/dist/components/page-stage.d.ts +2 -1
- package/dist/components/page-stage.d.ts.map +1 -1
- package/dist/components/page-stage.styles.d.ts +1 -1
- package/dist/components/page-stage.styles.d.ts.map +1 -1
- package/dist/components/rabbit-mascot.d.ts +2 -1
- package/dist/components/rabbit-mascot.d.ts.map +1 -1
- package/dist/components/rabbit-mascot.styles.d.ts +1 -1
- package/dist/components/rabbit-mascot.styles.d.ts.map +1 -1
- package/dist/components/scroll-fade.d.ts +2 -0
- package/dist/components/scroll-fade.d.ts.map +1 -0
- package/dist/components/scroll-fade.styles.d.ts +2 -0
- package/dist/components/scroll-fade.styles.d.ts.map +1 -0
- package/dist/components/settings-panel.d.ts +2 -0
- package/dist/components/settings-panel.d.ts.map +1 -1
- package/dist/components/settings-panel.styles.d.ts +1 -1
- package/dist/components/settings-panel.styles.d.ts.map +1 -1
- package/dist/components/splash-screen.d.ts +2 -1
- package/dist/components/splash-screen.d.ts.map +1 -1
- package/dist/components/splash-screen.styles.d.ts +1 -1
- package/dist/components/splash-screen.styles.d.ts.map +1 -1
- package/dist/components/viewer-root.styles.d.ts +1 -1
- package/dist/components/viewer-root.styles.d.ts.map +1 -1
- package/dist/core/manga-viewer-core.d.ts +2 -1
- package/dist/core/manga-viewer-core.d.ts.map +1 -1
- package/dist/defaults.d.ts.map +1 -1
- package/dist/i18n/i18n.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +653 -317
- package/dist/manga-viewer.global.js +225 -47
- package/dist/renderer/renderer-callbacks.d.ts +1 -1
- package/dist/renderer/renderer-callbacks.d.ts.map +1 -1
- package/dist/renderer/viewer-renderer.d.ts +4 -2
- package/dist/renderer/viewer-renderer.d.ts.map +1 -1
- package/dist/styles/style-registry.d.ts.map +1 -1
- package/dist/types.d.ts +20 -3
- package/dist/types.d.ts.map +1 -1
- package/docs/USAGE.md +169 -12
- package/locales/en.json +6 -1
- package/locales/id.json +42 -0
- package/locales/ja.json +6 -1
- package/locales/ko.json +42 -0
- package/locales/th.json +42 -0
- package/locales/zh-CN.json +42 -0
- package/package.json +1 -1
|
@@ -9,7 +9,7 @@ export interface RendererCallbacks {
|
|
|
9
9
|
toggleAutoPageTurn(): void;
|
|
10
10
|
updateSettings(settings: Partial<ViewerSettings>): void;
|
|
11
11
|
setLayoutMode(layoutMode: LayoutMode): void;
|
|
12
|
-
|
|
12
|
+
setWideHeight(heightPx: number): void;
|
|
13
13
|
setPanel(panel: ViewerState["panel"]): void;
|
|
14
14
|
setZoom(scale: number, panX?: number, panY?: number): void;
|
|
15
15
|
setPan(panX: number, panY: number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-callbacks.d.ts","sourceRoot":"","sources":["../../src/renderer/renderer-callbacks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAExE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,IAAI,IAAI,CAAC;IACjB,YAAY,IAAI,IAAI,CAAC;IACrB,cAAc,IAAI,IAAI,CAAC;IACvB,kBAAkB,IAAI,IAAI,CAAC;IAC3B,aAAa,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,kBAAkB,IAAI,IAAI,CAAC;IAC3B,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IACxD,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5C,
|
|
1
|
+
{"version":3,"file":"renderer-callbacks.d.ts","sourceRoot":"","sources":["../../src/renderer/renderer-callbacks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAExE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,IAAI,IAAI,CAAC;IACjB,YAAY,IAAI,IAAI,CAAC;IACrB,cAAc,IAAI,IAAI,CAAC;IACvB,kBAAkB,IAAI,IAAI,CAAC;IAC3B,aAAa,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,kBAAkB,IAAI,IAAI,CAAC;IAC3B,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IACxD,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5C,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,SAAS,IAAI,IAAI,CAAC;CACnB"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { AssetLoader } from "../core/asset-loader";
|
|
2
2
|
import { I18n } from "../i18n/i18n";
|
|
3
|
-
import type { ViewerState } from "../types";
|
|
3
|
+
import type { MascotOption, PageSrcResolver, ViewerState } from "../types";
|
|
4
4
|
import type { RendererCallbacks } from "./renderer-callbacks";
|
|
5
5
|
export declare class ViewerRenderer {
|
|
6
6
|
private container;
|
|
7
7
|
private callbacks;
|
|
8
8
|
private assetLoader;
|
|
9
9
|
private i18n;
|
|
10
|
+
private lockLayoutMode;
|
|
11
|
+
private mascot?;
|
|
10
12
|
private root;
|
|
11
13
|
private cleanup;
|
|
12
14
|
private mouseStart?;
|
|
@@ -25,7 +27,7 @@ export declare class ViewerRenderer {
|
|
|
25
27
|
private controlsDock?;
|
|
26
28
|
private resizeHandle?;
|
|
27
29
|
private viewSizeObserver?;
|
|
28
|
-
constructor(container: HTMLElement, callbacks: RendererCallbacks, assetLoader: AssetLoader, i18n: I18n, className?: string);
|
|
30
|
+
constructor(container: HTMLElement, callbacks: RendererCallbacks, assetLoader: AssetLoader, i18n: I18n, className?: string, resolvePageSrc?: PageSrcResolver, lockLayoutMode?: boolean, mascot?: MascotOption | undefined);
|
|
29
31
|
private observeViewSize;
|
|
30
32
|
update(state: ViewerState): void;
|
|
31
33
|
private applyOverlayVisibility;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer-renderer.d.ts","sourceRoot":"","sources":["../../src/renderer/viewer-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAgBnD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"viewer-renderer.d.ts","sourceRoot":"","sources":["../../src/renderer/viewer-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAgBnD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAY9D,qBAAa,cAAc;IAqBvB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,IAAI;IAGZ,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,MAAM,CAAC;IA3BjB,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,UAAU,CAAC,CAAY;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAY;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAsC;IACzD,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,MAAM,CAAC,CAAc;IAC7B,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,gBAAgB,CAAC,CAAiB;gBAGhC,SAAS,EAAE,WAAW,EACtB,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,eAAe,EACxB,cAAc,UAAQ,EACtB,MAAM,CAAC,EAAE,YAAY,YAAA;IAc/B,OAAO,CAAC,eAAe;IAqBvB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IA6GhC,OAAO,CAAC,sBAAsB;IAW9B,UAAU,IAAI,IAAI;IAalB,OAAO,IAAI,IAAI;IAgBf,UAAU,IAAI,WAAW;IAIzB,mBAAmB,IAAI,OAAO;IAI9B,eAAe,CACb,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,UAAU,GAAG,MAAM,EAC9B,UAAU,EAAE,MAAM,IAAI,GACrB,OAAO;IAsBV,gBAAgB,IAAI,OAAO;IAI3B,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,kBAAkB;IAmC1B,OAAO,CAAC,YAAY;IAoOpB,OAAO,CAAC,cAAc;IAoCtB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,mBAAmB;CAuB5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style-registry.d.ts","sourceRoot":"","sources":["../../src/styles/style-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"style-registry.d.ts","sourceRoot":"","sources":["../../src/styles/style-registry.ts"],"names":[],"mappings":"AAwCA,wBAAgB,kBAAkB,IAAI,IAAI,CAUzC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export type ReadingDirection = "rtl" | "ltr";
|
|
2
2
|
export type PageTurnMode = "single" | "spread";
|
|
3
|
-
export type
|
|
3
|
+
export type BackgroundColor = "white" | "black";
|
|
4
|
+
export type LayoutMode = "inline" | "wide" | "browserFullscreen" | "nativeFullscreen";
|
|
4
5
|
export interface Manga {
|
|
5
6
|
id: string;
|
|
6
7
|
title: string;
|
|
@@ -35,6 +36,7 @@ export interface ViewerSettings {
|
|
|
35
36
|
layoutMode: LayoutMode;
|
|
36
37
|
autoPageTurnIntervalMs: number;
|
|
37
38
|
pageTurnAnimation: boolean;
|
|
39
|
+
backgroundColor: BackgroundColor;
|
|
38
40
|
zoom: {
|
|
39
41
|
min: number;
|
|
40
42
|
max: number;
|
|
@@ -59,7 +61,7 @@ export interface ViewerState {
|
|
|
59
61
|
settings: ViewerSettings;
|
|
60
62
|
layout: {
|
|
61
63
|
mode: LayoutMode;
|
|
62
|
-
|
|
64
|
+
wideHeightPx?: number;
|
|
63
65
|
};
|
|
64
66
|
notifications: ViewerNotification[];
|
|
65
67
|
panel: "none" | "settings" | "menu" | "pages" | "shortcuts";
|
|
@@ -77,7 +79,22 @@ export interface MangaViewerOptions {
|
|
|
77
79
|
};
|
|
78
80
|
className?: string;
|
|
79
81
|
events?: Partial<ViewerEventHandlersMap>;
|
|
82
|
+
resolvePageSrc?: PageSrcResolver;
|
|
83
|
+
lockLayoutMode?: boolean;
|
|
84
|
+
mascot?: MascotOption;
|
|
80
85
|
}
|
|
86
|
+
export type MascotOption = {
|
|
87
|
+
src: string;
|
|
88
|
+
alt?: string;
|
|
89
|
+
} | {
|
|
90
|
+
render: () => HTMLElement;
|
|
91
|
+
} | false;
|
|
92
|
+
export interface PageSrcContext {
|
|
93
|
+
page: ImagePage;
|
|
94
|
+
pageIndex: number;
|
|
95
|
+
isSpread: boolean;
|
|
96
|
+
}
|
|
97
|
+
export type PageSrcResolver = (context: PageSrcContext) => string | Promise<string>;
|
|
81
98
|
export interface MangaViewerInstance {
|
|
82
99
|
destroy(): void;
|
|
83
100
|
setManga(manga: Manga): Promise<void>;
|
|
@@ -136,7 +153,7 @@ export type ViewerAction = {
|
|
|
136
153
|
type: "setLayoutMode";
|
|
137
154
|
layoutMode: LayoutMode;
|
|
138
155
|
} | {
|
|
139
|
-
type: "
|
|
156
|
+
type: "setWideHeight";
|
|
140
157
|
heightPx: number;
|
|
141
158
|
} | {
|
|
142
159
|
type: "setZoom";
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,KAAK,CAAC;AAC7C,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC/C,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/docs/USAGE.md
CHANGED
|
@@ -78,7 +78,7 @@ interface MangaViewerInstance {
|
|
|
78
78
|
interface MangaViewerOptions {
|
|
79
79
|
manga: Manga;
|
|
80
80
|
initialPageIndex?: number;
|
|
81
|
-
locale?: string; // "ja" | "en"
|
|
81
|
+
locale?: string; // "ja" | "en" | "zh-CN" | "ko" | "th" | "id"、または独自キー
|
|
82
82
|
translations?: TranslationMap;
|
|
83
83
|
settings?: Partial<ViewerSettings>;
|
|
84
84
|
storage?: { enabled?: boolean; databaseName?: string };
|
|
@@ -90,6 +90,16 @@ interface MangaViewerOptions {
|
|
|
90
90
|
layoutChange: (e: { layoutMode: LayoutMode }) => void;
|
|
91
91
|
destroy: () => void;
|
|
92
92
|
}>;
|
|
93
|
+
resolvePageSrc?: (ctx: {
|
|
94
|
+
page: ImagePage;
|
|
95
|
+
pageIndex: number;
|
|
96
|
+
isSpread: boolean;
|
|
97
|
+
}) => string | Promise<string>;
|
|
98
|
+
lockLayoutMode?: boolean;
|
|
99
|
+
mascot?:
|
|
100
|
+
| { src: string; alt?: string }
|
|
101
|
+
| { render: () => HTMLElement }
|
|
102
|
+
| false;
|
|
93
103
|
}
|
|
94
104
|
```
|
|
95
105
|
|
|
@@ -129,9 +139,10 @@ interface HtmlPage {
|
|
|
129
139
|
| `hasCover` | `true` | 表紙ありモード(見開き時、1ページ目を単独表示) |
|
|
130
140
|
| `readingDirection` | `"rtl"` | `"rtl"`(右→左、日本語漫画)/ `"ltr"` |
|
|
131
141
|
| `pageTurnMode` | `"single"` | `"single"` / `"spread"`(2ページ見開き) |
|
|
132
|
-
| `layoutMode` | `"inline"` | `"inline"`, `"
|
|
142
|
+
| `layoutMode` | `"inline"` | `"inline"`, `"wide"`, `"browserFullscreen"`, `"nativeFullscreen"` |
|
|
133
143
|
| `autoPageTurnIntervalMs` | `5000` | 自動再生の間隔 (ms) |
|
|
134
144
|
| `pageTurnAnimation` | `true` | ページめくり時のスライドアニメ |
|
|
145
|
+
| `backgroundColor` | `"white"` | `"white"` / `"black"`(ビューワー本体の背景色) |
|
|
135
146
|
| `zoom.min` / `.max` / `.step` | `1` / `4` / `0.25` | ズームの範囲とステップ |
|
|
136
147
|
|
|
137
148
|
## レイアウトモード
|
|
@@ -139,10 +150,30 @@ interface HtmlPage {
|
|
|
139
150
|
| モード | 挙動 |
|
|
140
151
|
|---|---|
|
|
141
152
|
| `inline` | 親要素内に収まる(デスクトップ max 900px / モバイル max 500px)。アスペクト比固定・角丸・薄影あり |
|
|
142
|
-
| `
|
|
153
|
+
| `wide` | 横幅100%、下のハンドルをドラッグして高さ可変 |
|
|
143
154
|
| `browserFullscreen` | `position: fixed; inset: 0` — Fullscreen API を使わずブラウザいっぱいに表示 |
|
|
144
155
|
| `nativeFullscreen` | Fullscreen API を使用。失敗時は `browserFullscreen` にフォールバック |
|
|
145
156
|
|
|
157
|
+
### レイアウトモードを固定する
|
|
158
|
+
|
|
159
|
+
`lockLayoutMode: true` を渡すと、`settings.layoutMode` で指定したモードに固定されます。
|
|
160
|
+
|
|
161
|
+
- 表示モード切替の UI(コントロールドックの switcher)を非表示
|
|
162
|
+
- メニュー > キーボードショートカット一覧から「表示モード」セクションを非表示
|
|
163
|
+
- キーボードの `N` / `W` / `F` / `Esc` のレイアウト変更系を無効化
|
|
164
|
+
- `viewer.toggleFullscreen()` / `updateSettings({ layoutMode })` も noop
|
|
165
|
+
- IndexedDB に保存された前回の `layoutMode` も無視され、必ず `settings.layoutMode` が適用される
|
|
166
|
+
|
|
167
|
+
例: 全画面で固定(DRM ビューワー組み込みや単機能ページ向け)
|
|
168
|
+
|
|
169
|
+
```ts
|
|
170
|
+
createMangaViewer(container, {
|
|
171
|
+
manga,
|
|
172
|
+
settings: { layoutMode: "browserFullscreen" },
|
|
173
|
+
lockLayoutMode: true
|
|
174
|
+
});
|
|
175
|
+
```
|
|
176
|
+
|
|
146
177
|
## キーボードショートカット
|
|
147
178
|
|
|
148
179
|
ビューワーのルート要素にフォーカスがある時のみ有効です。
|
|
@@ -152,36 +183,35 @@ interface HtmlPage {
|
|
|
152
183
|
| `←` / `Space` | 左に移動(`readingDirection` に応じて前/次ページ) |
|
|
153
184
|
| `→` / `Shift+Space` | 右に移動 |
|
|
154
185
|
| `A` | 自動再生のトグル |
|
|
155
|
-
| `N` | レイアウト: 標準 (inline) |
|
|
156
|
-
| `W` | レイアウト: ワイド (
|
|
186
|
+
| `N` / `Esc` | レイアウト: 標準 (inline) |
|
|
187
|
+
| `W` | レイアウト: ワイド (wide) |
|
|
157
188
|
| `F` | レイアウト: 全画面 (browserFullscreen) |
|
|
158
189
|
| `P` | 1ページ ↔ 見開きの切替 |
|
|
159
190
|
| `M` | メニューパネルのトグル |
|
|
191
|
+
| `O` | オーバーレイ表示のトグル |
|
|
160
192
|
| `S` | 設定パネルのトグル |
|
|
161
|
-
| `Escape` | 開いているパネルを閉じる / フルスクリーンを解除 |
|
|
162
193
|
|
|
163
194
|
## ジェスチャー
|
|
164
195
|
|
|
165
|
-
-
|
|
166
|
-
-
|
|
167
|
-
- スワイプ:
|
|
196
|
+
- 中央 60% のクリック / タップ: オーバーレイの表示切替
|
|
197
|
+
- 左 20% / 右 20% のクリック / タップ(オーバーレイ閉時のみ): 前 / 次ページ(`readingDirection` に応じて向きが変わる)
|
|
198
|
+
- スワイプ: ページ移動(しきい値 40px、横方向優先)
|
|
168
199
|
- ピンチ: ズーム(`zoom.min`〜`zoom.max` でクランプ)
|
|
169
200
|
- ズーム中のドラッグ: パン(ページの範囲内にクランプ)
|
|
170
|
-
- ダブルクリック / ダブルタップ: 1x ↔ 2x の切替
|
|
171
201
|
|
|
172
202
|
## 永続化 (IndexedDB)
|
|
173
203
|
|
|
174
204
|
`storage.enabled` を `false` にしない限り、`indexedDB` が利用可能な環境では以下を自動で保存します。
|
|
175
205
|
|
|
176
206
|
- 全体設定(locale, readingDirection, hasCover, pageTurnMode, animation, autoPageTurnIntervalMs)
|
|
177
|
-
- 現在のレイアウトモードと
|
|
207
|
+
- 現在のレイアウトモードと wide の高さ
|
|
178
208
|
- 漫画ごとの現在ページ(`manga.id` をキーに保存)
|
|
179
209
|
|
|
180
210
|
データベース名は既定で `manga-viewer`。`storage.databaseName` で上書きできます。
|
|
181
211
|
|
|
182
212
|
## i18n
|
|
183
213
|
|
|
184
|
-
ビルトインのロケールは `ja`
|
|
214
|
+
ビルトインのロケールは `ja` / `en` / `zh-CN` / `ko` / `th` / `id` です。`translations` オプションでキーを上書き/追加できます。
|
|
185
215
|
|
|
186
216
|
```ts
|
|
187
217
|
createMangaViewer(container, {
|
|
@@ -197,6 +227,133 @@ createMangaViewer(container, {
|
|
|
197
227
|
|
|
198
228
|
全キーは `locales/ja.json` を参照してください。未定義キーは `ja` → キー文字列自体、の順でフォールバックします。
|
|
199
229
|
|
|
230
|
+
## ページソースの解決(DRM / 認証付き取得)
|
|
231
|
+
|
|
232
|
+
`resolvePageSrc` オプションを渡すと、各ページ画像の `src` を確定する直前にあなたの関数が呼ばれ、戻り値の文字列が `<img>` の `src` に使われます。Data URL / Blob URL / 通常 URL のいずれも返せます。
|
|
233
|
+
|
|
234
|
+
```ts
|
|
235
|
+
type PageSrcResolver = (ctx: {
|
|
236
|
+
page: ImagePage;
|
|
237
|
+
pageIndex: number;
|
|
238
|
+
isSpread: boolean;
|
|
239
|
+
}) => string | Promise<string>;
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
- 未指定: 既存どおりそのまま `page.src` を使用(パフォーマンス影響なし)
|
|
243
|
+
- 指定: 解決完了までローディングアイコン表示、reject 時は error-icon
|
|
244
|
+
- 解決済みの結果は `page.id` 単位でキャッシュされ、同じページの再表示で再呼び出しは走りません
|
|
245
|
+
|
|
246
|
+
### 例: 暗号化バイナリの復号 → Blob URL
|
|
247
|
+
|
|
248
|
+
```ts
|
|
249
|
+
const blobUrls = new Map<string, string>();
|
|
250
|
+
|
|
251
|
+
createMangaViewer(container, {
|
|
252
|
+
manga,
|
|
253
|
+
resolvePageSrc: async ({ page }) => {
|
|
254
|
+
if (blobUrls.has(page.id)) return blobUrls.get(page.id)!;
|
|
255
|
+
|
|
256
|
+
const res = await fetch(page.src, { credentials: "include" });
|
|
257
|
+
const encrypted = await res.arrayBuffer();
|
|
258
|
+
const decrypted = await decrypt(encrypted); // 利用者独自
|
|
259
|
+
const blob = new Blob([decrypted], { type: "image/webp" });
|
|
260
|
+
const url = URL.createObjectURL(blob);
|
|
261
|
+
blobUrls.set(page.id, url);
|
|
262
|
+
return url;
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
// 不要になったら自前で revoke
|
|
267
|
+
window.addEventListener("beforeunload", () => {
|
|
268
|
+
for (const url of blobUrls.values()) URL.revokeObjectURL(url);
|
|
269
|
+
});
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### 例: 認証トークン付き fetch → Data URL
|
|
273
|
+
|
|
274
|
+
```ts
|
|
275
|
+
createMangaViewer(container, {
|
|
276
|
+
manga,
|
|
277
|
+
resolvePageSrc: async ({ page }) => {
|
|
278
|
+
const res = await fetch(page.src, {
|
|
279
|
+
headers: { Authorization: `Bearer ${getToken()}` }
|
|
280
|
+
});
|
|
281
|
+
const blob = await res.blob();
|
|
282
|
+
return await new Promise<string>((resolve, reject) => {
|
|
283
|
+
const reader = new FileReader();
|
|
284
|
+
reader.onload = () => resolve(reader.result as string);
|
|
285
|
+
reader.onerror = () => reject(reader.error);
|
|
286
|
+
reader.readAsDataURL(blob);
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### 注意点
|
|
293
|
+
|
|
294
|
+
- **Blob URL の revoke はライブラリ側で行いません。** 利用側で自前管理してください
|
|
295
|
+
- 解決結果は `manga.id + page.id` 単位でキャッシュされるので、`isSpread` が後から変わっても再解決は走りません。レイアウトに応じて解像度を変えたい場合は、利用側で別キーで管理してください
|
|
296
|
+
- CORS: 通常 URL を返す場合は元の `<img>` 経路と同じ制約
|
|
297
|
+
|
|
298
|
+
## マスコット画像の差し替え
|
|
299
|
+
|
|
300
|
+
`mascot` オプションで、コントロールドック・メニュー・スプラッシュ画面のうさぎイラストを任意の画像に置き換えられます。
|
|
301
|
+
|
|
302
|
+
```ts
|
|
303
|
+
type MascotOption =
|
|
304
|
+
| { src: string; alt?: string } // 画像 URL で差し替え
|
|
305
|
+
| { render: () => HTMLElement } // 完全カスタム
|
|
306
|
+
| false; // 非表示
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
- 未指定 → デフォルトのうさぎ SVG
|
|
310
|
+
- `{ src }` → `<img>` に変換して表示
|
|
311
|
+
- `{ render }` → 関数が返す `HTMLElement` を表示(毎回呼ばれるので、コントロールドック / メニュー / スプラッシュで別インスタンス)
|
|
312
|
+
- `false` → マスコットおよびスプラッシュのロゴ部分を非表示
|
|
313
|
+
|
|
314
|
+
スプラッシュ画面では、`mascot` が指定されているとデフォルトの「うさぎロゴ + comimi タイポ」が消え、120×120 のカスタムアイコンのみが表示されます。
|
|
315
|
+
|
|
316
|
+
### 例: 画像 URL で差し替え
|
|
317
|
+
|
|
318
|
+
```ts
|
|
319
|
+
createMangaViewer(container, {
|
|
320
|
+
manga,
|
|
321
|
+
mascot: { src: "/assets/my-mascot.png", alt: "Site mascot" }
|
|
322
|
+
});
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### 例: SVG を直接埋め込み
|
|
326
|
+
|
|
327
|
+
```ts
|
|
328
|
+
const ICON_SVG = `<svg viewBox="0 0 50 50" ...>...</svg>`;
|
|
329
|
+
|
|
330
|
+
createMangaViewer(container, {
|
|
331
|
+
manga,
|
|
332
|
+
mascot: {
|
|
333
|
+
render: () => {
|
|
334
|
+
const wrap = document.createElement("div");
|
|
335
|
+
wrap.innerHTML = ICON_SVG;
|
|
336
|
+
return wrap.firstElementChild as HTMLElement;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### 例: マスコットを非表示にする
|
|
343
|
+
|
|
344
|
+
```ts
|
|
345
|
+
createMangaViewer(container, {
|
|
346
|
+
manga,
|
|
347
|
+
mascot: false
|
|
348
|
+
});
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### 配置とサイズ
|
|
352
|
+
|
|
353
|
+
- コントロールドック / メニューパネル内のマスコット枠は `50×50`(`aspect-ratio: 1/1`)
|
|
354
|
+
- スプラッシュ画面のロゴ差し替え枠は `120×120`
|
|
355
|
+
- 中身は `width:100% / height:100% / object-fit: contain` で枠にフィット
|
|
356
|
+
|
|
200
357
|
## イベント
|
|
201
358
|
|
|
202
359
|
```ts
|
package/locales/en.json
CHANGED
|
@@ -11,11 +11,14 @@
|
|
|
11
11
|
"pageMode.single": "Single",
|
|
12
12
|
"pageMode.spread": "Spread",
|
|
13
13
|
"layout.inline": "Standard",
|
|
14
|
-
"layout.
|
|
14
|
+
"layout.wide": "Wide",
|
|
15
15
|
"layout.browserFullscreen": "Fullscreen",
|
|
16
16
|
"settings.title": "Settings",
|
|
17
17
|
"settings.cover": "Has cover",
|
|
18
18
|
"settings.direction": "Page turn direction",
|
|
19
|
+
"settings.backgroundColor": "Background color",
|
|
20
|
+
"settings.backgroundColor.white": "White",
|
|
21
|
+
"settings.backgroundColor.black": "Black",
|
|
19
22
|
"settings.interval": "Auto play interval",
|
|
20
23
|
"settings.interval.unit": "s",
|
|
21
24
|
"settings.animation": "Page turn animation",
|
|
@@ -24,6 +27,7 @@
|
|
|
24
27
|
"menu.openShortcuts": "Keyboard shortcuts",
|
|
25
28
|
"menu.openPages": "Page list",
|
|
26
29
|
"menu.back": "Back",
|
|
30
|
+
"pageList.htmlContent": "HTML content",
|
|
27
31
|
"shortcut.section.page": "Page navigation",
|
|
28
32
|
"shortcut.section.viewMode": "View mode",
|
|
29
33
|
"shortcut.section.general": "General",
|
|
@@ -31,6 +35,7 @@
|
|
|
31
35
|
"shortcut.moveRight": "Move right",
|
|
32
36
|
"shortcut.autoPageTurnLabel": "Auto play",
|
|
33
37
|
"shortcut.pageModeToggle": "Toggle spread",
|
|
38
|
+
"shortcut.overlayToggle": "Toggle overlay",
|
|
34
39
|
"seek.previewAlt": "Preview of page {{page}}",
|
|
35
40
|
"loading": "Loading",
|
|
36
41
|
"error.pageRequestFailed": "Request failed for page {{page}}"
|
package/locales/id.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"overlay.autoPageTurn": "Putar otomatis",
|
|
3
|
+
"overlay.layout": "Mode tampilan",
|
|
4
|
+
"overlay.settings": "Pengaturan",
|
|
5
|
+
"overlay.menu": "Menu",
|
|
6
|
+
"overlay.centerHint.desktop": "Klik bagian tengah untuk menutup",
|
|
7
|
+
"overlay.centerHint.mobile": "Ketuk bagian tengah untuk menutup",
|
|
8
|
+
"splash.loading": "Memulai viewer",
|
|
9
|
+
"autoplay.start": "Putar otomatis dimulai",
|
|
10
|
+
"autoplay.stop": "Putar otomatis dihentikan",
|
|
11
|
+
"pageMode.single": "Satu halaman",
|
|
12
|
+
"pageMode.spread": "Dua halaman",
|
|
13
|
+
"layout.inline": "Standar",
|
|
14
|
+
"layout.wide": "Lebar",
|
|
15
|
+
"layout.browserFullscreen": "Layar penuh",
|
|
16
|
+
"settings.title": "Pengaturan",
|
|
17
|
+
"settings.cover": "Ada sampul",
|
|
18
|
+
"settings.direction": "Arah balik halaman",
|
|
19
|
+
"settings.backgroundColor": "Warna latar",
|
|
20
|
+
"settings.backgroundColor.white": "Putih",
|
|
21
|
+
"settings.backgroundColor.black": "Hitam",
|
|
22
|
+
"settings.interval": "Interval putar otomatis",
|
|
23
|
+
"settings.interval.unit": "dtk",
|
|
24
|
+
"settings.animation": "Animasi balik halaman",
|
|
25
|
+
"settings.direction.rtl": "Kanan",
|
|
26
|
+
"settings.direction.ltr": "Kiri",
|
|
27
|
+
"menu.openShortcuts": "Pintasan keyboard",
|
|
28
|
+
"menu.openPages": "Daftar halaman",
|
|
29
|
+
"menu.back": "Kembali",
|
|
30
|
+
"pageList.htmlContent": "Konten HTML",
|
|
31
|
+
"shortcut.section.page": "Navigasi halaman",
|
|
32
|
+
"shortcut.section.viewMode": "Mode tampilan",
|
|
33
|
+
"shortcut.section.general": "Umum",
|
|
34
|
+
"shortcut.moveLeft": "Geser kiri",
|
|
35
|
+
"shortcut.moveRight": "Geser kanan",
|
|
36
|
+
"shortcut.autoPageTurnLabel": "Putar otomatis",
|
|
37
|
+
"shortcut.pageModeToggle": "Alih dua halaman",
|
|
38
|
+
"shortcut.overlayToggle": "Alih overlay",
|
|
39
|
+
"seek.previewAlt": "Pratinjau halaman {{page}}",
|
|
40
|
+
"loading": "Memuat",
|
|
41
|
+
"error.pageRequestFailed": "Permintaan halaman {{page}} gagal"
|
|
42
|
+
}
|
package/locales/ja.json
CHANGED
|
@@ -11,11 +11,14 @@
|
|
|
11
11
|
"pageMode.single": "1ページ",
|
|
12
12
|
"pageMode.spread": "見開き",
|
|
13
13
|
"layout.inline": "標準",
|
|
14
|
-
"layout.
|
|
14
|
+
"layout.wide": "ワイド",
|
|
15
15
|
"layout.browserFullscreen": "全画面",
|
|
16
16
|
"settings.title": "設定",
|
|
17
17
|
"settings.cover": "表紙あり",
|
|
18
18
|
"settings.direction": "ページ移動方向",
|
|
19
|
+
"settings.backgroundColor": "背景色",
|
|
20
|
+
"settings.backgroundColor.white": "白",
|
|
21
|
+
"settings.backgroundColor.black": "黒",
|
|
19
22
|
"settings.interval": "自動再生の秒数",
|
|
20
23
|
"settings.interval.unit": "秒",
|
|
21
24
|
"settings.animation": "ページ移動アニメーション",
|
|
@@ -24,6 +27,7 @@
|
|
|
24
27
|
"menu.openShortcuts": "キーボードショートカット",
|
|
25
28
|
"menu.openPages": "ページ一覧",
|
|
26
29
|
"menu.back": "もどる",
|
|
30
|
+
"pageList.htmlContent": "HTMLコンテンツ",
|
|
27
31
|
"shortcut.section.page": "ページ移動",
|
|
28
32
|
"shortcut.section.viewMode": "表示モード",
|
|
29
33
|
"shortcut.section.general": "全般",
|
|
@@ -31,6 +35,7 @@
|
|
|
31
35
|
"shortcut.moveRight": "右に移動",
|
|
32
36
|
"shortcut.autoPageTurnLabel": "自動再生",
|
|
33
37
|
"shortcut.pageModeToggle": "見開き切り替え",
|
|
38
|
+
"shortcut.overlayToggle": "オーバーレイ切り替え",
|
|
34
39
|
"seek.previewAlt": "{{page}}ページのプレビュー",
|
|
35
40
|
"loading": "読み込み中",
|
|
36
41
|
"error.pageRequestFailed": "{{page}}ページのリクエストに失敗しました"
|
package/locales/ko.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"overlay.autoPageTurn": "자동 재생",
|
|
3
|
+
"overlay.layout": "표시 모드",
|
|
4
|
+
"overlay.settings": "설정",
|
|
5
|
+
"overlay.menu": "메뉴",
|
|
6
|
+
"overlay.centerHint.desktop": "화면 중앙을 클릭하여 닫기",
|
|
7
|
+
"overlay.centerHint.mobile": "화면 중앙을 탭하여 닫기",
|
|
8
|
+
"splash.loading": "뷰어를 시작 중",
|
|
9
|
+
"autoplay.start": "자동 재생 시작",
|
|
10
|
+
"autoplay.stop": "자동 재생 정지",
|
|
11
|
+
"pageMode.single": "한 페이지",
|
|
12
|
+
"pageMode.spread": "양면 보기",
|
|
13
|
+
"layout.inline": "표준",
|
|
14
|
+
"layout.wide": "와이드",
|
|
15
|
+
"layout.browserFullscreen": "전체 화면",
|
|
16
|
+
"settings.title": "설정",
|
|
17
|
+
"settings.cover": "표지 있음",
|
|
18
|
+
"settings.direction": "페이지 이동 방향",
|
|
19
|
+
"settings.backgroundColor": "배경색",
|
|
20
|
+
"settings.backgroundColor.white": "흰색",
|
|
21
|
+
"settings.backgroundColor.black": "검정",
|
|
22
|
+
"settings.interval": "자동 재생 간격",
|
|
23
|
+
"settings.interval.unit": "초",
|
|
24
|
+
"settings.animation": "페이지 넘김 애니메이션",
|
|
25
|
+
"settings.direction.rtl": "오른쪽",
|
|
26
|
+
"settings.direction.ltr": "왼쪽",
|
|
27
|
+
"menu.openShortcuts": "키보드 단축키",
|
|
28
|
+
"menu.openPages": "페이지 목록",
|
|
29
|
+
"menu.back": "뒤로",
|
|
30
|
+
"pageList.htmlContent": "HTML 콘텐츠",
|
|
31
|
+
"shortcut.section.page": "페이지 이동",
|
|
32
|
+
"shortcut.section.viewMode": "표시 모드",
|
|
33
|
+
"shortcut.section.general": "일반",
|
|
34
|
+
"shortcut.moveLeft": "왼쪽으로 이동",
|
|
35
|
+
"shortcut.moveRight": "오른쪽으로 이동",
|
|
36
|
+
"shortcut.autoPageTurnLabel": "자동 재생",
|
|
37
|
+
"shortcut.pageModeToggle": "양면 보기 전환",
|
|
38
|
+
"shortcut.overlayToggle": "오버레이 전환",
|
|
39
|
+
"seek.previewAlt": "{{page}}페이지 미리보기",
|
|
40
|
+
"loading": "로딩 중",
|
|
41
|
+
"error.pageRequestFailed": "{{page}}페이지 요청 실패"
|
|
42
|
+
}
|
package/locales/th.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"overlay.autoPageTurn": "เล่นอัตโนมัติ",
|
|
3
|
+
"overlay.layout": "โหมดการแสดงผล",
|
|
4
|
+
"overlay.settings": "ตั้งค่า",
|
|
5
|
+
"overlay.menu": "เมนู",
|
|
6
|
+
"overlay.centerHint.desktop": "คลิกตรงกลางเพื่อปิด",
|
|
7
|
+
"overlay.centerHint.mobile": "แตะตรงกลางเพื่อปิด",
|
|
8
|
+
"splash.loading": "กำลังเปิดโปรแกรมอ่าน",
|
|
9
|
+
"autoplay.start": "เริ่มเล่นอัตโนมัติแล้ว",
|
|
10
|
+
"autoplay.stop": "หยุดเล่นอัตโนมัติแล้ว",
|
|
11
|
+
"pageMode.single": "หน้าเดียว",
|
|
12
|
+
"pageMode.spread": "สองหน้า",
|
|
13
|
+
"layout.inline": "มาตรฐาน",
|
|
14
|
+
"layout.wide": "กว้าง",
|
|
15
|
+
"layout.browserFullscreen": "เต็มจอ",
|
|
16
|
+
"settings.title": "ตั้งค่า",
|
|
17
|
+
"settings.cover": "มีหน้าปก",
|
|
18
|
+
"settings.direction": "ทิศทางการพลิกหน้า",
|
|
19
|
+
"settings.backgroundColor": "สีพื้นหลัง",
|
|
20
|
+
"settings.backgroundColor.white": "ขาว",
|
|
21
|
+
"settings.backgroundColor.black": "ดำ",
|
|
22
|
+
"settings.interval": "ระยะเวลาเล่นอัตโนมัติ",
|
|
23
|
+
"settings.interval.unit": "วินาที",
|
|
24
|
+
"settings.animation": "อนิเมชันการพลิกหน้า",
|
|
25
|
+
"settings.direction.rtl": "ขวา",
|
|
26
|
+
"settings.direction.ltr": "ซ้าย",
|
|
27
|
+
"menu.openShortcuts": "คีย์ลัด",
|
|
28
|
+
"menu.openPages": "รายการหน้า",
|
|
29
|
+
"menu.back": "ย้อนกลับ",
|
|
30
|
+
"pageList.htmlContent": "เนื้อหา HTML",
|
|
31
|
+
"shortcut.section.page": "การเลื่อนหน้า",
|
|
32
|
+
"shortcut.section.viewMode": "โหมดการแสดงผล",
|
|
33
|
+
"shortcut.section.general": "ทั่วไป",
|
|
34
|
+
"shortcut.moveLeft": "เลื่อนซ้าย",
|
|
35
|
+
"shortcut.moveRight": "เลื่อนขวา",
|
|
36
|
+
"shortcut.autoPageTurnLabel": "เล่นอัตโนมัติ",
|
|
37
|
+
"shortcut.pageModeToggle": "สลับสองหน้า",
|
|
38
|
+
"shortcut.overlayToggle": "สลับโอเวอร์เลย์",
|
|
39
|
+
"seek.previewAlt": "ตัวอย่างหน้า {{page}}",
|
|
40
|
+
"loading": "กำลังโหลด",
|
|
41
|
+
"error.pageRequestFailed": "ขอหน้า {{page}} ไม่สำเร็จ"
|
|
42
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"overlay.autoPageTurn": "自动播放",
|
|
3
|
+
"overlay.layout": "显示模式",
|
|
4
|
+
"overlay.settings": "设置",
|
|
5
|
+
"overlay.menu": "菜单",
|
|
6
|
+
"overlay.centerHint.desktop": "点击中央以关闭",
|
|
7
|
+
"overlay.centerHint.mobile": "点按中央以关闭",
|
|
8
|
+
"splash.loading": "正在启动阅读器",
|
|
9
|
+
"autoplay.start": "已开始自动播放",
|
|
10
|
+
"autoplay.stop": "已停止自动播放",
|
|
11
|
+
"pageMode.single": "单页",
|
|
12
|
+
"pageMode.spread": "跨页",
|
|
13
|
+
"layout.inline": "标准",
|
|
14
|
+
"layout.wide": "宽屏",
|
|
15
|
+
"layout.browserFullscreen": "全屏",
|
|
16
|
+
"settings.title": "设置",
|
|
17
|
+
"settings.cover": "有封面",
|
|
18
|
+
"settings.direction": "翻页方向",
|
|
19
|
+
"settings.backgroundColor": "背景颜色",
|
|
20
|
+
"settings.backgroundColor.white": "白色",
|
|
21
|
+
"settings.backgroundColor.black": "黑色",
|
|
22
|
+
"settings.interval": "自动播放间隔",
|
|
23
|
+
"settings.interval.unit": "秒",
|
|
24
|
+
"settings.animation": "翻页动画",
|
|
25
|
+
"settings.direction.rtl": "向右",
|
|
26
|
+
"settings.direction.ltr": "向左",
|
|
27
|
+
"menu.openShortcuts": "键盘快捷键",
|
|
28
|
+
"menu.openPages": "页面列表",
|
|
29
|
+
"menu.back": "返回",
|
|
30
|
+
"pageList.htmlContent": "HTML 内容",
|
|
31
|
+
"shortcut.section.page": "翻页",
|
|
32
|
+
"shortcut.section.viewMode": "显示模式",
|
|
33
|
+
"shortcut.section.general": "通用",
|
|
34
|
+
"shortcut.moveLeft": "向左移动",
|
|
35
|
+
"shortcut.moveRight": "向右移动",
|
|
36
|
+
"shortcut.autoPageTurnLabel": "自动播放",
|
|
37
|
+
"shortcut.pageModeToggle": "切换跨页",
|
|
38
|
+
"shortcut.overlayToggle": "切换控制层",
|
|
39
|
+
"seek.previewAlt": "第 {{page}} 页预览",
|
|
40
|
+
"loading": "加载中",
|
|
41
|
+
"error.pageRequestFailed": "第 {{page}} 页请求失败"
|
|
42
|
+
}
|