@yui540/comimi 0.1.0 → 0.2.0
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/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/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 +652 -316
- package/dist/manga-viewer.global.js +215 -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
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 yui540
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|
|
|
5
|
-
comimiは、TypeScript/JavaScript
|
|
5
|
+
comimiは、Webサイトに漫画ビューワーを組み込むことができるTypeScript/JavaScriptライブラリです。
|
|
6
6
|
|
|
7
7
|
ReactなどのUIライブラリに依存していないため、単体で動作します。
|
|
8
8
|
|
|
9
|
+
https://github.com/user-attachments/assets/3e37b9fb-6381-4f43-9b27-7ae8056a1905
|
|
10
|
+
|
|
9
11
|
[yui540.com/comimi](https://yui540.com/comimi)
|
|
10
12
|
|
|
11
13
|
## インストール
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { I18n } from "../i18n/i18n";
|
|
2
|
-
import type { ViewerState } from "../types";
|
|
2
|
+
import type { MascotOption, ViewerState } from "../types";
|
|
3
3
|
import type { RendererCallbacks } from "../renderer/renderer-callbacks";
|
|
4
4
|
export declare class ControlsDock {
|
|
5
5
|
private callbacks;
|
|
6
6
|
private i18n;
|
|
7
|
+
private mascot?;
|
|
7
8
|
private root;
|
|
8
9
|
private seekCurrent;
|
|
9
10
|
private seekTotal;
|
|
10
11
|
private seekBar;
|
|
11
12
|
private seekFill;
|
|
12
13
|
private seekInput;
|
|
14
|
+
private seekPreview;
|
|
15
|
+
private seekPreviewThumbs;
|
|
16
|
+
private seekPreviewLabel;
|
|
17
|
+
private seekPreviewKey?;
|
|
18
|
+
private currentState?;
|
|
13
19
|
private autoplayContainer;
|
|
14
20
|
private autoplayButton;
|
|
15
21
|
private autoplaySlider;
|
|
@@ -30,10 +36,12 @@ export declare class ControlsDock {
|
|
|
30
36
|
private settingsIcon;
|
|
31
37
|
private settingsTooltip;
|
|
32
38
|
private prevPageTurnMode?;
|
|
33
|
-
constructor(callbacks: RendererCallbacks, i18n: I18n);
|
|
39
|
+
constructor(callbacks: RendererCallbacks, i18n: I18n, mascot?: MascotOption | undefined);
|
|
34
40
|
getElement(): HTMLElement;
|
|
35
41
|
update(state: ViewerState, isMobile: boolean): void;
|
|
36
42
|
private buildSeek;
|
|
43
|
+
private updateSeekPreview;
|
|
44
|
+
private refreshSeekPreviewThumbs;
|
|
37
45
|
private buildRow;
|
|
38
46
|
private buildAutoplay;
|
|
39
47
|
private buildSide;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls-dock.d.ts","sourceRoot":"","sources":["../../src/components/controls-dock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"controls-dock.d.ts","sourceRoot":"","sources":["../../src/components/controls-dock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,EAEV,YAAY,EAEZ,WAAW,EACZ,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAMxE,qBAAa,YAAY;IAuCrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM,CAAC;IAxCjB,OAAO,CAAC,IAAI,CAAiB;IAE7B,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,YAAY,CAAC,CAAc;IAEnC,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAC1C,OAAO,CAAC,mBAAmB,CAAC,CAAkB;IAE9C,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,kBAAkB,CAAe;IACzC,OAAO,CAAC,qBAAqB,CAAmB;IAChD,OAAO,CAAC,qBAAqB,CAAmB;IAEhD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,eAAe,CAAmB;IAE1C,OAAO,CAAC,gBAAgB,CAAC,CAAe;gBAG9B,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,YAAY,YAAA;IAiB/B,UAAU,IAAI,WAAW;IAIzB,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAsEnD,OAAO,CAAC,SAAS;IA+DjB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,aAAa;IAkCrB,OAAO,CAAC,SAAS;IAqCjB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,iBAAiB;CAK1B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const controlsDockStyles = "\n/* --- Controls dock (bottom) ------------------------------------------- */\n\n.comimi-controls-dock {\n box-sizing: border-box;\n position: absolute;\n bottom: 24px;\n left: 24px;\n width: calc(100% - 48px);\n padding: 20px 24px;\n z-index: 40;\n pointer-events: auto;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-controls-dock[data-overlay=\"false\"] {\n transform: translateY(35px);\n opacity: 0;\n pointer-events: none;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-controls-bg {\n position: absolute;\n inset: 0;\n border-radius: 20px;\n background: var(--comimi-glass);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n transition: inset 0.36s var(--comimi-spring), border-radius 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-controls-dock:hover > .comimi-controls-bg {\n inset: -4px -4px 0 -4px;\n border-radius: 20px;\n }\n}\n\n.comimi-controls-row {\n position: relative;\n display: grid;\n grid-template-columns: auto auto;\n justify-content: space-between;\n align-items: center;\n}\n\n.comimi-controls-side {\n display: grid;\n grid-auto-flow: column;\n column-gap: 16px;\n justify-content: end;\n align-items: center;\n transition:\n opacity 0.2s ease-in-out,\n visibility 0.2s ease-in-out;\n}\n\n.comimi-controls-dock[data-autoplay=\"true\"] .comimi-controls-side {\n opacity: 0;\n visibility: hidden;\n}\n\n/* --- Seek bar --------------------------------------------------------- */\n\n.comimi-seek {\n position: relative;\n display: grid;\n grid-template-columns: auto 1fr;\n column-gap: 10px;\n align-items: center;\n margin-bottom: 10px;\n}\n\n.comimi-seek-text {\n display: grid;\n grid-template-columns: repeat(2, auto);\n justify-content: start;\n align-items: end;\n line-height: 14px;\n}\n\n.comimi-seek-current {\n color: #333;\n font-size: 12px;\n font-weight: 700;\n}\n\n.comimi-seek-total {\n color: #999;\n font-size: 12px;\n font-weight: 400;\n margin-left: 0.4em;\n}\n\n.comimi-seek-bar {\n position: relative;\n width: 100%;\n height: 18px;\n}\n\n.comimi-seek-track {\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 8px;\n border-radius: 999px;\n background: #e0e0e0;\n overflow: hidden;\n transform: translateY(-50%);\n transition: height 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-seek-bar:hover .comimi-seek-track {\n height: 12px;\n }\n}\n\n.comimi-seek-fill {\n position: absolute;\n top: 0;\n height: 100%;\n border-radius: 999px;\n background: #666;\n}\n\n.comimi-seek-bar[data-direction=\"rtl\"] .comimi-seek-fill {\n right: 0;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.comimi-seek-bar[data-direction=\"ltr\"] .comimi-seek-fill {\n left: 0;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.comimi-seek-input {\n position: absolute;\n inset: 0;\n z-index: 1;\n width: 100%;\n height: 18px;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n appearance: none;\n -webkit-appearance: none;\n cursor: pointer;\n}\n\n.comimi-seek-input::-webkit-slider-runnable-track {\n height: 8px;\n background: transparent;\n border: 0;\n}\n\n.comimi-seek-input::-webkit-slider-thumb {\n appearance: none;\n -webkit-appearance: none;\n width: 18px;\n height: 18px;\n margin-top: -5px;\n border: 0;\n border-radius: 50%;\n background: #666;\n box-shadow: none;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s ease-in-out;\n}\n\n.comimi-seek-input:hover::-webkit-slider-thumb {\n transform: scale(1.15);\n}\n\n.comimi-seek-input::-moz-range-track {\n height: 8px;\n background: transparent;\n border: 0;\n}\n\n.comimi-seek-input::-moz-range-thumb {\n width: 18px;\n height: 18px;\n border: 0;\n border-radius: 50%;\n background: #666;\n box-shadow: none;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s ease-in-out;\n}\n\n.comimi-seek-input:hover::-moz-range-thumb {\n transform: scale(1.15);\n}\n\n.comimi-seek-input:focus-visible {\n outline: none;\n}\n\n.comimi-seek-input:focus-visible::-webkit-slider-thumb {\n box-shadow: none;\n}\n\n.comimi-seek-input:focus-visible::-moz-range-thumb {\n box-shadow: none;\n}\n\n.comimi-seek-input[data-direction=\"rtl\"] {\n direction: rtl;\n}\n\n/* --- Auto Play -------------------------------------------------------- */\n\n.comimi-autoplay {\n position: relative;\n display: grid;\n grid-template-columns: auto auto;\n column-gap: 12px;\n justify-content: start;\n align-items: center;\n}\n\n.comimi-autoplay-button {\n position: relative;\n width: 24px;\n height: 24px;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n}\n\n.comimi-autoplay-window {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 20px;\n height: 20px;\n overflow: hidden;\n transform: translate(-50%, -50%);\n}\n\n.comimi-autoplay-slider {\n position: absolute;\n top: 0;\n right: 0;\n width: 200%;\n height: 100%;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-autoplay-slider[data-active=\"true\"] {\n transform: translateX(50%);\n}\n\n.comimi-autoplay-icon {\n position: absolute;\n top: 0;\n width: 50%;\n height: 100%;\n display: block;\n}\n\n.comimi-autoplay-icon-play {\n right: 0;\n}\n\n.comimi-autoplay-icon-pause {\n left: 0;\n}\n\n.comimi-autoplay-progress {\n position: relative;\n width: 140px;\n height: 6px;\n border-radius: 999px;\n background: #e0e0e0;\n overflow: hidden;\n}\n\n.comimi-autoplay-progress-bar {\n display: block;\n position: absolute;\n inset: 0;\n border-radius: 999px;\n background: #666;\n animation: comimi-autoplay-progress 3s linear 0s infinite;\n}\n\n/* --- Page Mode Toggle (single / spread) ------------------------------ */\n\n.comimi-page-mode {\n position: relative;\n width: 80px;\n height: 30px;\n}\n\n.comimi-page-mode-wrapper {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 80px;\n height: 30px;\n display: grid;\n grid-template-columns: 1fr 1fr;\n background: #eeeeee;\n border-radius: 8px;\n transform: translate(-50%, -50%);\n transition: width 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-page-mode-wrapper:hover {\n width: 95px;\n }\n}\n\n.comimi-page-mode-button {\n position: relative;\n display: grid;\n place-content: center;\n width: 100%;\n height: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n}\n\n.comimi-page-mode-icon {\n display: block;\n width: 20px;\n opacity: 0.3;\n transform-origin: center bottom;\n transition: opacity 0.2s ease-in-out;\n}\n\n.comimi-page-mode-button[data-selected=\"true\"] .comimi-page-mode-icon {\n opacity: 1;\n}\n\n.comimi-page-mode-icon.comimi-pop-animate {\n animation: comimi-pop 0.5s ease-in-out 0s both;\n}\n\n/* --- Settings (button + popover panel) ------------------------------- */\n\n.comimi-settings {\n position: relative;\n width: 24px;\n height: 24px;\n}\n\n.comimi-settings-button {\n position: absolute;\n inset: 0;\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n}\n\n.comimi-settings-icon {\n display: block;\n width: 100%;\n height: 100%;\n color: #666;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-settings[data-open=\"true\"] .comimi-settings-icon {\n transform: rotate(30deg);\n}\n\n@keyframes comimi-pop {\n from, to {\n transform: scale(1, 1);\n }\n 50% {\n transform: scale(0.95, 1.15);\n }\n 75% {\n transform: scale(1.15, 0.95);\n }\n}\n\n@keyframes comimi-autoplay-progress {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@media (max-width: 767px) {\n .comimi-controls-dock {\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 20px 16px calc(20px + env(safe-area-inset-bottom, 0px));\n }\n\n .comimi-controls-bg {\n border-radius: 20px 20px 0 0;\n }\n}\n";
|
|
1
|
+
export declare const controlsDockStyles = "\n/* --- Controls dock (bottom) ------------------------------------------- */\n\n.comimi-controls-dock {\n box-sizing: border-box;\n position: absolute;\n bottom: 24px;\n left: 24px;\n width: calc(100% - 48px);\n padding: 20px 24px;\n z-index: 40;\n pointer-events: auto;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-controls-dock[data-overlay=\"false\"] {\n transform: translateY(35px);\n opacity: 0;\n pointer-events: none;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-controls-bg {\n position: absolute;\n inset: 0;\n border-radius: 20px;\n background: var(--comimi-glass);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n transition: inset 0.36s var(--comimi-spring), border-radius 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-controls-dock:hover > .comimi-controls-bg {\n inset: -4px -4px 0 -4px;\n border-radius: 20px;\n }\n}\n\n.comimi-controls-row {\n position: relative;\n display: grid;\n grid-template-columns: auto auto;\n justify-content: space-between;\n align-items: center;\n}\n\n.comimi-controls-side {\n display: grid;\n grid-auto-flow: column;\n column-gap: 16px;\n justify-content: end;\n align-items: center;\n transition:\n opacity 0.2s ease-in-out,\n visibility 0.2s ease-in-out;\n}\n\n.comimi-controls-dock[data-autoplay=\"true\"] .comimi-controls-side {\n opacity: 0;\n visibility: hidden;\n}\n\n/* --- Seek bar --------------------------------------------------------- */\n\n.comimi-seek {\n position: relative;\n display: grid;\n grid-template-columns: auto 1fr;\n column-gap: 10px;\n align-items: center;\n margin-bottom: 10px;\n}\n\n.comimi-seek-text {\n display: grid;\n grid-template-columns: repeat(2, auto);\n justify-content: start;\n align-items: end;\n line-height: 14px;\n}\n\n.comimi-seek-current {\n color: #333;\n font-size: 12px;\n font-weight: 700;\n}\n\n.comimi-seek-total {\n color: #999;\n font-size: 12px;\n font-weight: 400;\n margin-left: 0.4em;\n}\n\n.comimi-seek-bar {\n position: relative;\n width: 100%;\n height: 18px;\n}\n\n.comimi-seek-track {\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 8px;\n border-radius: 999px;\n background: #e0e0e0;\n overflow: hidden;\n transform: translateY(-50%);\n transition: height 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-seek-bar:hover .comimi-seek-track {\n height: 12px;\n }\n}\n\n.comimi-seek-fill {\n position: absolute;\n top: 0;\n height: 100%;\n border-radius: 999px;\n background: #666;\n}\n\n.comimi-seek-bar[data-direction=\"rtl\"] .comimi-seek-fill {\n right: 0;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.comimi-seek-bar[data-direction=\"ltr\"] .comimi-seek-fill {\n left: 0;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.comimi-seek-input {\n position: absolute;\n inset: 0;\n z-index: 1;\n width: 100%;\n height: 18px;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n appearance: none;\n -webkit-appearance: none;\n cursor: pointer;\n}\n\n.comimi-seek-input::-webkit-slider-runnable-track {\n height: 8px;\n background: transparent;\n border: 0;\n}\n\n.comimi-seek-input::-webkit-slider-thumb {\n appearance: none;\n -webkit-appearance: none;\n width: 18px;\n height: 18px;\n margin-top: -5px;\n border: 0;\n border-radius: 50%;\n background: #666;\n box-shadow: none;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s ease-in-out;\n}\n\n.comimi-seek-input:hover::-webkit-slider-thumb {\n transform: scale(1.15);\n}\n\n.comimi-seek-input::-moz-range-track {\n height: 8px;\n background: transparent;\n border: 0;\n}\n\n.comimi-seek-input::-moz-range-thumb {\n width: 18px;\n height: 18px;\n border: 0;\n border-radius: 50%;\n background: #666;\n box-shadow: none;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s ease-in-out;\n}\n\n.comimi-seek-input:hover::-moz-range-thumb {\n transform: scale(1.15);\n}\n\n.comimi-seek-input:focus-visible {\n outline: none;\n}\n\n.comimi-seek-input:focus-visible::-webkit-slider-thumb {\n box-shadow: none;\n}\n\n.comimi-seek-input:focus-visible::-moz-range-thumb {\n box-shadow: none;\n}\n\n.comimi-seek-input[data-direction=\"rtl\"] {\n direction: rtl;\n}\n\n/* --- Seek preview ---------------------------------------------------- */\n\n.comimi-seek-preview {\n position: absolute;\n bottom: 100%;\n left: 0;\n margin-bottom: 14px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 6px;\n pointer-events: none;\n opacity: 0;\n transform: translateX(-50%);\n transition: opacity 0.16s linear;\n z-index: 5;\n}\n\n.comimi-seek-preview[data-show=\"true\"] {\n opacity: 1;\n}\n\n.comimi-seek-preview-thumbs {\n display: flex;\n flex-direction: row;\n gap: 4px;\n}\n\n.comimi-seek-preview-thumb {\n position: relative;\n width: 80px;\n aspect-ratio: 100 / 141;\n background: #fff;\n border-radius: 6px;\n overflow: hidden;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18);\n}\n\n.comimi-seek-preview-thumb img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n user-select: none;\n -webkit-user-drag: none;\n}\n\n.comimi-seek-preview-thumb[data-kind=\"html\"] {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n padding: 8px;\n color: #aaa;\n font-size: 11px;\n font-weight: 700;\n line-height: 1.4;\n text-align: center;\n}\n\n.comimi-seek-preview-label {\n color: #333;\n background: rgba(255, 255, 255, 0.5);\n backdrop-filter: blur(5px);\n box-shadow: var(--comimi-shadow);\n border-radius: 8px;\n padding: 4px 10px;\n font-size: 12px;\n font-weight: 600;\n}\n\n@media (hover: none) {\n .comimi-seek-preview {\n display: none;\n }\n}\n\n/* --- Auto Play -------------------------------------------------------- */\n\n.comimi-autoplay {\n position: relative;\n display: grid;\n grid-template-columns: auto auto;\n column-gap: 12px;\n justify-content: start;\n align-items: center;\n}\n\n.comimi-autoplay-button {\n position: relative;\n width: 24px;\n height: 24px;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n}\n\n.comimi-autoplay-window {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 20px;\n height: 20px;\n overflow: hidden;\n transform: translate(-50%, -50%);\n}\n\n.comimi-autoplay-slider {\n position: absolute;\n top: 0;\n right: 0;\n width: 200%;\n height: 100%;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-autoplay-slider[data-active=\"true\"] {\n transform: translateX(50%);\n}\n\n.comimi-autoplay-icon {\n position: absolute;\n top: 0;\n width: 50%;\n height: 100%;\n display: block;\n}\n\n.comimi-autoplay-icon-play {\n right: 0;\n}\n\n.comimi-autoplay-icon-pause {\n left: 0;\n}\n\n.comimi-autoplay-progress {\n position: relative;\n width: 140px;\n height: 6px;\n border-radius: 999px;\n background: #e0e0e0;\n overflow: hidden;\n}\n\n.comimi-autoplay-progress-bar {\n display: block;\n position: absolute;\n inset: 0;\n border-radius: 999px;\n background: #666;\n animation: comimi-autoplay-progress 3s linear 0s infinite;\n}\n\n/* --- Page Mode Toggle (single / spread) ------------------------------ */\n\n.comimi-page-mode {\n position: relative;\n width: 80px;\n height: 30px;\n}\n\n.comimi-page-mode-wrapper {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 80px;\n height: 30px;\n display: grid;\n grid-template-columns: 1fr 1fr;\n background: #eeeeee;\n border-radius: 8px;\n transform: translate(-50%, -50%);\n transition: width 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-page-mode-wrapper:hover {\n width: 95px;\n }\n}\n\n.comimi-page-mode-button {\n position: relative;\n display: grid;\n place-content: center;\n width: 100%;\n height: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n}\n\n.comimi-page-mode-icon {\n display: block;\n width: 20px;\n opacity: 0.3;\n transform-origin: center bottom;\n transition: opacity 0.2s ease-in-out;\n}\n\n.comimi-page-mode-button[data-selected=\"true\"] .comimi-page-mode-icon {\n opacity: 1;\n}\n\n.comimi-page-mode-icon.comimi-pop-animate {\n animation: comimi-pop 0.5s ease-in-out 0s both;\n}\n\n/* --- Settings (button + popover panel) ------------------------------- */\n\n.comimi-settings {\n position: relative;\n width: 24px;\n height: 24px;\n}\n\n.comimi-settings-button {\n position: absolute;\n inset: 0;\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n}\n\n.comimi-settings-icon {\n display: block;\n width: 100%;\n height: 100%;\n color: #666;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-settings[data-open=\"true\"] .comimi-settings-icon {\n transform: rotate(30deg);\n}\n\n@keyframes comimi-pop {\n from, to {\n transform: scale(1, 1);\n }\n 50% {\n transform: scale(0.95, 1.15);\n }\n 75% {\n transform: scale(1.15, 0.95);\n }\n}\n\n@keyframes comimi-autoplay-progress {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@media (max-width: 767px) {\n .comimi-controls-dock {\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 20px 16px calc(20px + env(safe-area-inset-bottom, 0px));\n }\n\n .comimi-controls-bg {\n border-radius: 20px 20px 0 0;\n }\n}\n";
|
|
2
2
|
//# sourceMappingURL=controls-dock.styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls-dock.styles.d.ts","sourceRoot":"","sources":["../../src/components/controls-dock.styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"controls-dock.styles.d.ts","sourceRoot":"","sources":["../../src/components/controls-dock.styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,48SAif9B,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { I18n } from "../i18n/i18n";
|
|
2
|
-
import type { ViewerState } from "../types";
|
|
2
|
+
import type { MascotOption, ViewerState } from "../types";
|
|
3
3
|
import type { RendererCallbacks } from "../renderer/renderer-callbacks";
|
|
4
4
|
export declare class MenuPanel {
|
|
5
5
|
private callbacks;
|
|
6
6
|
private i18n;
|
|
7
|
+
private options;
|
|
7
8
|
private root;
|
|
8
9
|
private titleEl;
|
|
9
10
|
private authorEl;
|
|
@@ -16,7 +17,10 @@ export declare class MenuPanel {
|
|
|
16
17
|
private currentState?;
|
|
17
18
|
private currentView;
|
|
18
19
|
private i18nTexts;
|
|
19
|
-
constructor(callbacks: RendererCallbacks, i18n: I18n
|
|
20
|
+
constructor(callbacks: RendererCallbacks, i18n: I18n, options?: {
|
|
21
|
+
lockLayoutMode?: boolean;
|
|
22
|
+
mascot?: MascotOption;
|
|
23
|
+
});
|
|
20
24
|
getElement(): HTMLElement;
|
|
21
25
|
private bindI18nText;
|
|
22
26
|
private refreshI18nTexts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-panel.d.ts","sourceRoot":"","sources":["../../src/components/menu-panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"menu-panel.d.ts","sourceRoot":"","sources":["../../src/components/menu-panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAOxE,qBAAa,SAAS;IAelB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,OAAO;IAhBjB,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,SAAS,CAA+C;gBAGtD,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,IAAI,EACV,OAAO,GAAE;QACf,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,MAAM,CAAC,EAAE,YAAY,CAAC;KAClB;IAkCR,UAAU,IAAI,WAAW;IAIzB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,gBAAgB;IAMxB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAiChC,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,eAAe;IA6CvB,OAAO,CAAC,QAAQ;IAqChB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,iBAAiB;IAoDzB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,gBAAgB;CA2BzB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const menuPanelStyles = "\n.comimi-menu-panel {\n position: absolute;\n top: 24px;\n left: 24px;\n width: 420px;\n z-index: 45;\n pointer-events: auto;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-menu-panel[data-overlay=\"false\"] {\n transform: translateY(-35px);\n opacity: 0;\n pointer-events: none;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-menu-bg {\n position: absolute;\n inset: 0;\n border-radius: 16px;\n background: var(--comimi-glass);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n transition: inset 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-menu-panel:hover > .comimi-menu-bg {\n inset: -5px;\n }\n}\n\n.comimi-menu-top {\n position: relative;\n display: grid;\n grid-template-columns: auto 1fr;\n column-gap: 13px;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n height: 62px;\n padding: 0 13px;\n border: 0;\n background: transparent;\n color: inherit;\n text-align: left;\n cursor: pointer;\n}\n\n.comimi-menu-button {\n position: relative;\n width: 34px;\n height: 34px;\n overflow: hidden;\n}\n\n.comimi-menu-button-inner {\n display: block;\n position: absolute;\n inset: 0;\n transition: transform 0.4s var(--comimi-spring);\n}\n\n.comimi-menu-panel[data-open=\"true\"] .comimi-menu-button-inner {\n transform: translateY(100%);\n}\n\n.comimi-menu-button-inner > * {\n position: absolute;\n inset: 0;\n}\n\n.comimi-menu-button-inner > *:nth-child(2) {\n transform: translateY(-100%);\n}\n\n.comimi-menu-title-wrap {\n min-width: 0;\n}\n\n.comimi-menu-title {\n display: block;\n width: 100%;\n color: #333;\n font-size: 15px;\n font-weight: 700;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.comimi-menu-author {\n display: block;\n width: 100%;\n color: #666;\n font-size: 12px;\n font-weight: 400;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.comimi-menu-bottom {\n position: relative;\n width: 100%;\n overflow: hidden;\n transition: height 0.24s ease-in-out;\n}\n\n.comimi-menu-border {\n width: 100%;\n height: 1px;\n background: #e0e0e0;\n}\n\n.comimi-menu-view {\n position: absolute;\n top: 1px;\n left: 0;\n width: 100%;\n transition: all 0.28s ease-in-out;\n opacity: 0;\n visibility: hidden;\n transform: scale(0.92);\n filter: blur(5px);\n}\n\n.comimi-menu-view-menu {\n position: relative;\n}\n\n.comimi-menu-panel[data-view=\"menu\"] .comimi-menu-view-menu,\n.comimi-menu-panel[data-view=\"shortcut\"] .comimi-menu-view-shortcut,\n.comimi-menu-panel[data-view=\"pageList\"] .comimi-menu-view-page-list {\n opacity: 1;\n visibility: visible;\n transform: scale(1);\n filter: blur(0);\n}\n\n.comimi-menu-list {\n position: relative;\n width: 100%;\n padding: 10px 0;\n}\n\n.comimi-menu-link {\n box-sizing: border-box;\n display: grid;\n grid-template-columns: 1fr auto;\n column-gap: 8px;\n align-items: center;\n width: 100%;\n padding: 10px 16px 10px 22px;\n border: 0;\n border-radius: 10px;\n background: transparent;\n color: #666;\n cursor: pointer;\n transition: background-color 0.24s linear;\n}\n\n.comimi-menu-link:hover {\n background: #f1f1f1;\n}\n\n.comimi-menu-link-text {\n color: #666;\n font-size: 14px;\n font-weight: 700;\n line-height: 1.45;\n text-align: left;\n}\n\n.comimi-menu-link-arrow {\n display: block;\n width: 20px;\n height: 20px;\n color: #aaa;\n}\n\n.comimi-menu-link-arrow > svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.comimi-page-list-inner {\n
|
|
1
|
+
export declare const menuPanelStyles = "\n.comimi-menu-panel {\n position: absolute;\n top: 24px;\n left: 24px;\n width: 420px;\n z-index: 45;\n pointer-events: auto;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-menu-panel[data-overlay=\"false\"] {\n transform: translateY(-35px);\n opacity: 0;\n pointer-events: none;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-menu-bg {\n position: absolute;\n inset: 0;\n border-radius: 16px;\n background: var(--comimi-glass);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n transition: inset 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-menu-panel:hover > .comimi-menu-bg {\n inset: -5px;\n }\n}\n\n.comimi-menu-top {\n position: relative;\n display: grid;\n grid-template-columns: auto 1fr;\n column-gap: 13px;\n align-items: center;\n box-sizing: border-box;\n width: 100%;\n height: 62px;\n padding: 0 13px;\n border: 0;\n background: transparent;\n color: inherit;\n text-align: left;\n cursor: pointer;\n}\n\n.comimi-menu-button {\n position: relative;\n width: 34px;\n height: 34px;\n overflow: hidden;\n}\n\n.comimi-menu-button-inner {\n display: block;\n position: absolute;\n inset: 0;\n transition: transform 0.4s var(--comimi-spring);\n}\n\n.comimi-menu-panel[data-open=\"true\"] .comimi-menu-button-inner {\n transform: translateY(100%);\n}\n\n.comimi-menu-button-inner > * {\n position: absolute;\n inset: 0;\n}\n\n.comimi-menu-button-inner > *:nth-child(2) {\n transform: translateY(-100%);\n}\n\n.comimi-menu-title-wrap {\n min-width: 0;\n}\n\n.comimi-menu-title {\n display: block;\n width: 100%;\n color: #333;\n font-size: 15px;\n font-weight: 700;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.comimi-menu-author {\n display: block;\n width: 100%;\n color: #666;\n font-size: 12px;\n font-weight: 400;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.comimi-menu-bottom {\n position: relative;\n width: 100%;\n overflow: hidden;\n transition: height 0.24s ease-in-out;\n}\n\n.comimi-menu-border {\n width: 100%;\n height: 1px;\n background: #e0e0e0;\n}\n\n.comimi-menu-view {\n position: absolute;\n top: 1px;\n left: 0;\n width: 100%;\n transition: all 0.28s ease-in-out;\n opacity: 0;\n visibility: hidden;\n transform: scale(0.92);\n filter: blur(5px);\n}\n\n.comimi-menu-view-menu {\n position: relative;\n}\n\n.comimi-menu-panel[data-view=\"menu\"] .comimi-menu-view-menu,\n.comimi-menu-panel[data-view=\"shortcut\"] .comimi-menu-view-shortcut,\n.comimi-menu-panel[data-view=\"pageList\"] .comimi-menu-view-page-list {\n opacity: 1;\n visibility: visible;\n transform: scale(1);\n filter: blur(0);\n}\n\n.comimi-menu-list {\n position: relative;\n width: 100%;\n padding: 10px 0;\n}\n\n.comimi-menu-link {\n box-sizing: border-box;\n display: grid;\n grid-template-columns: 1fr auto;\n column-gap: 8px;\n align-items: center;\n width: 100%;\n padding: 10px 16px 10px 22px;\n border: 0;\n border-radius: 10px;\n background: transparent;\n color: #666;\n cursor: pointer;\n transition: background-color 0.24s linear;\n}\n\n.comimi-menu-link:hover {\n background: #f1f1f1;\n}\n\n.comimi-menu-link-text {\n color: #666;\n font-size: 14px;\n font-weight: 700;\n line-height: 1.45;\n text-align: left;\n}\n\n.comimi-menu-link-arrow {\n display: block;\n width: 20px;\n height: 20px;\n color: #aaa;\n}\n\n.comimi-menu-link-arrow > svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.comimi-page-list-inner {\n box-sizing: border-box;\n padding: 0 22px;\n max-height: 315px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.comimi-page-list-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 20px;\n}\n\n.comimi-page-list-item {\n display: grid;\n row-gap: 4px;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n text-align: center;\n}\n\n.comimi-page-list-thumb {\n position: relative;\n display: block;\n width: 100%;\n aspect-ratio: 100 / 141;\n background: #fff;\n border-radius: 6px;\n outline: 3px solid #e0e0e0;\n}\n\n.comimi-page-list-thumb-html {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n padding: 8px;\n text-align: center;\n color: #aaa;\n font-size: 11px;\n font-weight: 700;\n line-height: 1.4;\n}\n\n.comimi-page-list-thumb img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n border-radius: 4px;\n user-select: none;\n -webkit-user-drag: none;\n}\n\n.comimi-page-list-text {\n color: #666;\n font-size: 14px;\n font-weight: 700;\n}\n\n.comimi-shortcut-inner {\n box-sizing: border-box;\n padding: 0 22px;\n max-height: 315px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.comimi-shortcut-grid {\n display: grid;\n row-gap: 22px;\n}\n\n.comimi-shortcut-section {\n display: grid;\n row-gap: 8px;\n}\n\n.comimi-shortcut-heading {\n color: #666;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n}\n\n.comimi-shortcut-list {\n display: grid;\n row-gap: 8px;\n justify-items: start;\n}\n\n.comimi-shortcut-column {\n display: flex;\n flex-wrap: wrap;\n gap: 8px 16px;\n align-items: center;\n}\n\n.comimi-shortcut-item {\n display: grid;\n grid-template-columns: repeat(2, auto);\n column-gap: 8px;\n align-items: center;\n width: fit-content;\n}\n\n.comimi-shortcut-badge {\n display: grid;\n grid-auto-flow: column;\n column-gap: 6px;\n align-items: center;\n padding: 4px 8px;\n border-radius: 7px;\n background: #eeeeee;\n}\n\n.comimi-shortcut-key {\n color: #666;\n font-size: 13px;\n font-weight: 700;\n line-height: 1.45;\n}\n\n.comimi-shortcut-or::before {\n content: \"or\";\n display: block;\n color: #666;\n font-size: 11px;\n font-weight: 400;\n line-height: 1.45;\n}\n\n.comimi-shortcut-label {\n color: #666;\n font-size: 13px;\n font-weight: 400;\n line-height: 1.45;\n}\n\n.comimi-back-button {\n position: relative;\n width: 100%;\n height: 56px;\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n}\n\n.comimi-back-inner {\n position: absolute;\n inset: 8px;\n}\n\n.comimi-back-bg {\n position: absolute;\n inset: 0;\n border-radius: 8px;\n background: #eeeeee;\n transition: inset 0.36s var(--comimi-spring), border-radius 0.36s var(--comimi-spring);\n}\n\n.comimi-back-button:hover .comimi-back-bg {\n inset: -4px;\n border-radius: 10px;\n}\n\n.comimi-back-text {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n color: #666;\n font-size: 14px;\n font-weight: 700;\n line-height: 1.45;\n pointer-events: none;\n}\n\n.comimi-back-arrow {\n position: absolute;\n top: 50%;\n left: 8px;\n width: 22px;\n height: 22px;\n color: #aaa;\n transform: translateY(-50%) scaleX(-1);\n pointer-events: none;\n}\n\n.comimi-back-arrow > svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n@media (max-width: 767px) {\n .comimi-menu-panel {\n top: 0;\n left: 0;\n width: 100%;\n }\n\n .comimi-menu-bg {\n border-radius: 0 0 16px 16px;\n }\n\n .comimi-menu-top {\n width: 100%;\n }\n\n .comimi-page-list-inner,\n .comimi-shortcut-inner {\n max-height: calc(var(--view-height, 100vh) - 62px - 56px);\n }\n}\n";
|
|
2
2
|
//# sourceMappingURL=menu-panel.styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-panel.styles.d.ts","sourceRoot":"","sources":["../../src/components/menu-panel.styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"menu-panel.styles.d.ts","sourceRoot":"","sources":["../../src/components/menu-panel.styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,01OA+Z3B,CAAC"}
|
|
@@ -12,4 +12,5 @@ export declare function getAdjacentPageIndexes(state: ViewerState, direction: Ad
|
|
|
12
12
|
export declare function getPreloadedPageGroups(state: ViewerState, isMobile: boolean): PageGroup[];
|
|
13
13
|
export declare function getPageGroupSide(state: ViewerState, placement: PageGroupPlacement): PageGroupSide;
|
|
14
14
|
export declare function isSwipeToNext(deltaX: number, direction: ReadingDirection): boolean;
|
|
15
|
+
export declare function getPageIndexesForPageIndex(state: ViewerState, pageIndex: number, isMobile: boolean): number[];
|
|
15
16
|
//# sourceMappingURL=page-layout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-layout.d.ts","sourceRoot":"","sources":["../../src/components/page-layout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE9D,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,MAAM,CAAC;AACpD,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAC/D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,OAAO,GAChB,MAAM,EAAE,CAEV;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,OAAO,GAChB,MAAM,EAAE,CAYV;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,OAAO,GAChB,SAAS,EAAE,CAwCb;AAYD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,kBAAkB,GAC5B,aAAa,CAQf;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAET"}
|
|
1
|
+
{"version":3,"file":"page-layout.d.ts","sourceRoot":"","sources":["../../src/components/page-layout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE9D,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,MAAM,CAAC;AACpD,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAC/D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,OAAO,GAChB,MAAM,EAAE,CAEV;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,OAAO,GAChB,MAAM,EAAE,CAYV;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,OAAO,GAChB,SAAS,EAAE,CAwCb;AAYD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,kBAAkB,GAC5B,aAAa,CAQf;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAET;AA0BD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,GAChB,MAAM,EAAE,CAoBV"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { AssetLoader } from "../core/asset-loader";
|
|
2
2
|
import { I18n } from "../i18n/i18n";
|
|
3
|
-
import type { ViewerState } from "../types";
|
|
3
|
+
import type { PageSrcResolver, ViewerState } from "../types";
|
|
4
4
|
export interface PageStageOptions {
|
|
5
5
|
assetLoader: AssetLoader;
|
|
6
6
|
i18n: I18n;
|
|
7
7
|
isMobileViewport: () => boolean;
|
|
8
|
+
resolvePageSrc?: PageSrcResolver;
|
|
8
9
|
}
|
|
9
10
|
export declare class PageStage {
|
|
10
11
|
private options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-stage.d.ts","sourceRoot":"","sources":["../../src/components/page-stage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"page-stage.d.ts","sourceRoot":"","sources":["../../src/components/page-stage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,EAGV,eAAe,EACf,WAAW,EACZ,MAAM,UAAU,CAAC;AASlB,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,cAAc,CAAC,EAAE,eAAe,CAAC;CAClC;AAOD,qBAAa,SAAS;IAMR,OAAO,CAAC,OAAO;IAL3B,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,eAAe,CAAsC;IAC7D,OAAO,CAAC,KAAK,CAAiC;gBAE1B,OAAO,EAAE,gBAAgB;IAK7C,UAAU,IAAI,cAAc;IAI5B,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,IAAI;IAKrD;;;;OAIG;IACH,aAAa,IAAI,IAAI;IAarB,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAqCnD,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,SAAS;CA2ElB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rabbit-mascot.d.ts","sourceRoot":"","sources":["../../src/components/rabbit-mascot.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"rabbit-mascot.d.ts","sourceRoot":"","sources":["../../src/components/rabbit-mascot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAgB7C,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,WAAW,GAAG,IAAI,CAyB5E"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const rabbitMascotStyles = "\n.comimi-rabbit {\n position: absolute;\n width: 50px;\n pointer-events: none;\n}\n\n.comimi-rabbit
|
|
1
|
+
export declare const rabbitMascotStyles = "\n.comimi-rabbit {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 50px;\n aspect-ratio: 1 / 1;\n z-index: 0;\n pointer-events: none;\n}\n\n.comimi-rabbit > * {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.comimi-controls-dock > .comimi-rabbit {\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.comimi-menu-panel > .comimi-rabbit {\n top: 12px;\n right: 20px;\n}\n\n@media (max-width: 767px) {\n .comimi-controls-dock > .comimi-rabbit {\n display: none;\n }\n}\n\n@media (min-width: 768px) {\n .comimi-menu-panel > .comimi-rabbit {\n display: none;\n }\n}\n";
|
|
2
2
|
//# sourceMappingURL=rabbit-mascot.styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rabbit-mascot.styles.d.ts","sourceRoot":"","sources":["../../src/components/rabbit-mascot.styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"rabbit-mascot.styles.d.ts","sourceRoot":"","sources":["../../src/components/rabbit-mascot.styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,grBAyC9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-fade.d.ts","sourceRoot":"","sources":["../../src/components/scroll-fade.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,CAyBpD"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const scrollFadeStyles = "\n.comimi-scrollfade {\n position: relative;\n}\n\n.comimi-scrollfade::before,\n.comimi-scrollfade::after {\n content: \"\";\n position: sticky;\n display: block;\n left: 0;\n width: 100%;\n height: 32px;\n z-index: 2;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.16s linear;\n}\n\n.comimi-scrollfade::before {\n top: 0;\n background: linear-gradient(to bottom, var(--comimi-bg), transparent);\n}\n\n.comimi-scrollfade::after {\n bottom: 0;\n background: linear-gradient(to top, var(--comimi-bg), transparent);\n}\n\n.comimi-scrollfade[data-scroll-up=\"true\"]::before {\n opacity: 1;\n}\n\n.comimi-scrollfade[data-scroll-down=\"true\"]::after {\n opacity: 1;\n}\n";
|
|
2
|
+
//# sourceMappingURL=scroll-fade.styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll-fade.styles.d.ts","sourceRoot":"","sources":["../../src/components/scroll-fade.styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,+rBAoC5B,CAAC"}
|
|
@@ -11,11 +11,13 @@ export declare class SettingsPanel {
|
|
|
11
11
|
private localeLabel;
|
|
12
12
|
private coverLabel;
|
|
13
13
|
private directionLabel;
|
|
14
|
+
private backgroundColorLabel;
|
|
14
15
|
private animationLabel;
|
|
15
16
|
private intervalLabel;
|
|
16
17
|
private localeSelect;
|
|
17
18
|
private coverToggle;
|
|
18
19
|
private directionSelect;
|
|
20
|
+
private backgroundColorSelect;
|
|
19
21
|
private animationToggle;
|
|
20
22
|
private intervalSlider;
|
|
21
23
|
constructor(callbacks: RendererCallbacks, i18n: I18n);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-panel.d.ts","sourceRoot":"","sources":["../../src/components/settings-panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"settings-panel.d.ts","sourceRoot":"","sources":["../../src/components/settings-panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,EAAqC,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAIxE,qBAAa,aAAa;IAqBtB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,IAAI;IArBd,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,KAAK,CAAiB;IAE9B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,oBAAoB,CAAiB;IAC7C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,aAAa,CAAiB;IAEtC,OAAO,CAAC,YAAY,CAAY;IAChC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,qBAAqB,CAAY;IACzC,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,cAAc,CAAc;gBAG1B,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,IAAI;IAsEpB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAiDhC,UAAU,IAAI,WAAW;IAIzB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,oBAAoB;CAa7B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const settingsPanelStyles = "\n.comimi-settings-panel {\n position: absolute;\n top: 0;\n right: -16px;\n width: 250px;\n height: 0;\n border-radius: 20px;\n overflow: hidden;\n background: var(--comimi-glass-strong);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n opacity: 0;\n transform: translateY(calc(-100% - 8px));\n transition:\n height 0.38s cubic-bezier(0.12, 1.06, 0.56, 1.02),\n opacity 0.38s cubic-bezier(0.12, 1.06, 0.56, 1.02);\n z-index: 10;\n}\n\n.comimi-settings-panel[data-open=\"true\"] {\n opacity: 1;\n height: var(--comimi-settings-height, 460px);\n}\n\n.comimi-settings-panel-body {\n position: relative;\n width: 100%;\n}\n\n.comimi-settings-panel-inner {\n box-sizing: border-box;\n position: relative;\n padding:
|
|
1
|
+
export declare const settingsPanelStyles = "\n.comimi-settings-panel {\n position: absolute;\n top: 0;\n right: -16px;\n width: 250px;\n height: 0;\n border-radius: 20px;\n overflow: hidden;\n background: var(--comimi-glass-strong);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n opacity: 0;\n transform: translateY(calc(-100% - 8px));\n transition:\n height 0.38s cubic-bezier(0.12, 1.06, 0.56, 1.02),\n opacity 0.38s cubic-bezier(0.12, 1.06, 0.56, 1.02);\n z-index: 10;\n}\n\n.comimi-settings-panel[data-open=\"true\"] {\n opacity: 1;\n height: var(--comimi-settings-height, 460px);\n}\n\n.comimi-settings-panel-body {\n position: relative;\n width: 100%;\n max-height: calc(var(--view-height, 100vh) - 62px - 56px);\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.comimi-settings-panel-inner {\n box-sizing: border-box;\n position: relative;\n padding: 0 20px;\n}\n\n.comimi-settings-panel-title {\n color: #333;\n font-size: 14px;\n font-weight: 700;\n text-align: center;\n}\n\n.comimi-settings-section {\n display: grid;\n row-gap: 8px;\n margin-top: 18px;\n}\n\n.comimi-settings-label {\n color: #333;\n font-size: 12px;\n font-weight: 400;\n}\n\n";
|
|
2
2
|
//# sourceMappingURL=settings-panel.styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-panel.styles.d.ts","sourceRoot":"","sources":["../../src/components/settings-panel.styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"settings-panel.styles.d.ts","sourceRoot":"","sources":["../../src/components/settings-panel.styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,wqCA0D/B,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { I18n } from "../i18n/i18n";
|
|
2
|
-
|
|
2
|
+
import type { MascotOption } from "../types";
|
|
3
|
+
export declare function renderSplashScreen(i18n: I18n, mascot?: MascotOption): HTMLElement;
|
|
3
4
|
//# sourceMappingURL=splash-screen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splash-screen.d.ts","sourceRoot":"","sources":["../../src/components/splash-screen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"splash-screen.d.ts","sourceRoot":"","sources":["../../src/components/splash-screen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAI7C,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,YAAY,GACpB,WAAW,CAyBb"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const splashScreenStyles = "\n.comimi-splash {\n position: absolute;\n inset: 0;\n z-index: 100;\n background-color: #e0e0e0;\n overflow: hidden;\n animation: comimi-splash-clip 1s cubic-bezier(0.82, 0.01, 0.48, 1.02) 1s both;\n pointer-events: none;\n}\n\n.comimi-splash-logo-wrap {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -60%);\n width: 260px;\n aspect-ratio: 290 / 99;\n}\n\n.comimi-splash-logo {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.72);\n width: 360px;\n aspect-ratio: 360 / 99;\n}\n\n.comimi-splash-symbol {\n position: absolute;\n top: 0;\n left: 0;\n width: 113px;\n display: block;\n transform-origin: center bottom;\n}\n\n.comimi-splash-typo-wrap {\n position: absolute;\n right: 7px;\n bottom: 11px;\n width: 229.5px;\n}\n\n.comimi-splash-typo {\n display: block;\n width: 100%;\n overflow: visible;\n}\n\n.comimi-splash-stroke {\n fill: none;\n stroke: #fff;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 10px;\n}\n\n.comimi-splash-mimi {\n transform-origin: 56px 43px;\n}\n\n.comimi-splash-mimi-left {\n animation: comimi-splash-mimi-left 0.4s ease-in-out 0.3s 2 forwards;\n}\n\n.comimi-splash-mimi-right {\n animation: comimi-splash-mimi-right 0.4s ease-in-out 0.3s 2 forwards;\n}\n\n.comimi-splash-eyes {\n transform: translateX(-7px);\n}\n\n.comimi-splash-eye {\n transform-origin: center;\n transform-box: fill-box;\n animation: comimi-splash-eye 0.4s ease-in-out 0.2s forwards;\n}\n\n.comimi-splash-heart {\n --size: 14px;\n position: absolute;\n top: -20px;\n width: var(--size);\n height: var(--size);\n}\n\n.comimi-splash-heart::before,\n.comimi-splash-heart::after {\n content: \"\";\n display: block;\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 150%;\n border-radius: 999px;\n transform-origin: center bottom;\n}\n\n.comimi-splash-heart::before {\n transform: translateX(-32%) rotate(45deg);\n background-color: #eee;\n}\n\n.comimi-splash-heart::after {\n transform: translateX(32%) rotate(-45deg);\n background-color: #fff;\n}\n\n.comimi-splash-heart-1 {\n right: -2px;\n}\n\n.comimi-splash-heart-2 {\n right: 76px;\n}\n\n.comimi-splash-text {\n position: absolute;\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 120%);\n color: #fff;\n font-size: 16px;\n font-weight: 700;\n line-height: 1.45;\n text-align: center;\n white-space: nowrap;\n}\n\n.comimi-splash-text span {\n display: inline-block;\n animation: comimi-splash-dot 0.8s ease-in-out 0s infinite both;\n}\n\n.comimi-splash-text span:nth-child(1) {\n animation-delay: 0s;\n}\n\n.comimi-splash-text span:nth-child(2) {\n animation-delay: 0.15s;\n}\n\n.comimi-splash-text span:nth-child(3) {\n animation-delay: 0.3s;\n}\n\n@keyframes comimi-splash-clip {\n from {\n clip-path: circle(70%);\n }\n to {\n clip-path: circle(0%);\n }\n}\n\n@keyframes comimi-splash-mimi-left {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(20deg);\n }\n}\n\n@keyframes comimi-splash-mimi-right {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(-20deg);\n }\n}\n\n@keyframes comimi-splash-eye {\n from, to {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(0.2);\n }\n}\n\n@keyframes comimi-splash-dot {\n from, 50%, to {\n opacity: 1;\n }\n 25% {\n opacity: 0;\n }\n}\n";
|
|
1
|
+
export declare const splashScreenStyles = "\n.comimi-splash {\n position: absolute;\n inset: 0;\n z-index: 100;\n background-color: #e0e0e0;\n overflow: hidden;\n animation: comimi-splash-clip 1s cubic-bezier(0.82, 0.01, 0.48, 1.02) 1s both;\n pointer-events: none;\n}\n\n.comimi-splash-logo-wrap {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -60%);\n width: 260px;\n aspect-ratio: 290 / 99;\n}\n\n.comimi-splash-logo {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.72);\n width: 360px;\n aspect-ratio: 360 / 99;\n}\n\n.comimi-splash-symbol {\n position: absolute;\n top: 0;\n left: 0;\n width: 113px;\n display: block;\n transform-origin: center bottom;\n}\n\n.comimi-splash-logo-wrap-custom {\n width: 120px;\n aspect-ratio: 1 / 1;\n}\n\n.comimi-splash-logo-wrap-custom .comimi-splash-text {\n transform: translate(-50%, calc(100% + 16px));\n}\n\n.comimi-splash-custom-logo {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 120px;\n aspect-ratio: 1 / 1;\n}\n\n.comimi-splash-custom-logo > * {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.comimi-splash-typo-wrap {\n position: absolute;\n right: 7px;\n bottom: 11px;\n width: 229.5px;\n}\n\n.comimi-splash-typo {\n display: block;\n width: 100%;\n overflow: visible;\n}\n\n.comimi-splash-stroke {\n fill: none;\n stroke: #fff;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 10px;\n}\n\n.comimi-splash-mimi {\n transform-origin: 56px 43px;\n}\n\n.comimi-splash-mimi-left {\n animation: comimi-splash-mimi-left 0.4s ease-in-out 0.3s 2 forwards;\n}\n\n.comimi-splash-mimi-right {\n animation: comimi-splash-mimi-right 0.4s ease-in-out 0.3s 2 forwards;\n}\n\n.comimi-splash-eyes {\n transform: translateX(-7px);\n}\n\n.comimi-splash-eye {\n transform-origin: center;\n transform-box: fill-box;\n animation: comimi-splash-eye 0.4s ease-in-out 0.2s forwards;\n}\n\n.comimi-splash-heart {\n --size: 14px;\n position: absolute;\n top: -20px;\n width: var(--size);\n height: var(--size);\n}\n\n.comimi-splash-heart::before,\n.comimi-splash-heart::after {\n content: \"\";\n display: block;\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 150%;\n border-radius: 999px;\n transform-origin: center bottom;\n}\n\n.comimi-splash-heart::before {\n transform: translateX(-32%) rotate(45deg);\n background-color: #eee;\n}\n\n.comimi-splash-heart::after {\n transform: translateX(32%) rotate(-45deg);\n background-color: #fff;\n}\n\n.comimi-splash-heart-1 {\n right: -2px;\n}\n\n.comimi-splash-heart-2 {\n right: 76px;\n}\n\n.comimi-splash-text {\n position: absolute;\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 120%);\n color: #fff;\n font-size: 16px;\n font-weight: 700;\n line-height: 1.45;\n text-align: center;\n white-space: nowrap;\n}\n\n.comimi-splash-text span {\n display: inline-block;\n animation: comimi-splash-dot 0.8s ease-in-out 0s infinite both;\n}\n\n.comimi-splash-text span:nth-child(1) {\n animation-delay: 0s;\n}\n\n.comimi-splash-text span:nth-child(2) {\n animation-delay: 0.15s;\n}\n\n.comimi-splash-text span:nth-child(3) {\n animation-delay: 0.3s;\n}\n\n@keyframes comimi-splash-clip {\n from {\n clip-path: circle(70%);\n }\n to {\n clip-path: circle(0%);\n }\n}\n\n@keyframes comimi-splash-mimi-left {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(20deg);\n }\n}\n\n@keyframes comimi-splash-mimi-right {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(-20deg);\n }\n}\n\n@keyframes comimi-splash-eye {\n from, to {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(0.2);\n }\n}\n\n@keyframes comimi-splash-dot {\n from, 50%, to {\n opacity: 1;\n }\n 25% {\n opacity: 0;\n }\n}\n";
|
|
2
2
|
//# sourceMappingURL=splash-screen.styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splash-screen.styles.d.ts","sourceRoot":"","sources":["../../src/components/splash-screen.styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"splash-screen.styles.d.ts","sourceRoot":"","sources":["../../src/components/splash-screen.styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,q0HA2N9B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const viewerRootStyles = "\n.comimi-root {\n --comimi-bg: #fff;\n --comimi-surface: #f7f7f7;\n --comimi-surface-2: #eeeeee;\n --comimi-fg: #333;\n --comimi-muted: #666;\n --comimi-soft: #999;\n --comimi-line: #e0e0e0;\n --comimi-shadow: 0 0 8px rgba(0, 0, 0, 0.1);\n --comimi-glass: rgba(255, 255, 255, 0.8);\n --comimi-glass-strong: rgba(255, 255, 255, 0.8);\n --comimi-spring: cubic-bezier(0.34, 1.56, 0.64, 1);\n background: var(--comimi-bg);\n color: var(--comimi-fg);\n font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n position: relative;\n width: calc(100% - 24px * 2);\n max-width: 900px;\n aspect-ratio: 900 / 636;\n margin: 0 auto;\n border-radius: 16px;\n box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.06);\n overflow: hidden;\n user-select: none;\n touch-action: none;\n transition
|
|
1
|
+
export declare const viewerRootStyles = "\n.comimi-root {\n --comimi-bg: #fff;\n --comimi-surface: #f7f7f7;\n --comimi-surface-2: #eeeeee;\n --comimi-fg: #333;\n --comimi-muted: #666;\n --comimi-soft: #999;\n --comimi-line: #e0e0e0;\n --comimi-shadow: 0 0 8px rgba(0, 0, 0, 0.1);\n --comimi-glass: rgba(255, 255, 255, 0.8);\n --comimi-glass-strong: rgba(255, 255, 255, 0.8);\n --comimi-spring: cubic-bezier(0.34, 1.56, 0.64, 1);\n background: var(--comimi-bg);\n color: var(--comimi-fg);\n font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n position: relative;\n width: calc(100% - 24px * 2);\n max-width: 900px;\n aspect-ratio: 900 / 636;\n margin: 0 auto;\n border-radius: 16px;\n box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.06);\n overflow: hidden;\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n touch-action: none;\n transition:\n box-shadow 0.24s ease-out,\n background-color 0.16s linear;\n}\n\n.comimi-root:focus {\n outline: none;\n box-shadow: 0 0 24px 0 rgba(0, 0, 0, 0.14);\n}\n\n@media (max-width: 767px) {\n .comimi-root {\n max-width: 500px;\n aspect-ratio: 390 / 490;\n }\n}\n\n.comimi-root[data-bg=\"black\"] {\n --comimi-bg: #000;\n}\n\n.comimi-root[data-layout=\"wide\"] {\n width: 100%;\n max-width: none;\n aspect-ratio: auto;\n min-height: 320px;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n}\n\n.comimi-root[data-layout=\"browserFullscreen\"],\n.comimi-root[data-layout=\"nativeFullscreen\"] {\n position: fixed;\n inset: 0;\n z-index: 999;\n width: 100vw;\n height: 100dvh;\n max-width: none;\n aspect-ratio: auto;\n margin: 0;\n border-radius: 0;\n box-shadow: none;\n}\n\n.comimi-resize-handle {\n position: relative;\n width: 100%;\n height: 20px;\n background: #fff;\n cursor: ns-resize;\n touch-action: none;\n}\n\n.comimi-resize-handle::after {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 40px;\n height: 3px;\n border-radius: 999px;\n background: #bbb;\n transition:\n width 0.36s cubic-bezier(0.34, 1.56, 0.64, 1),\n height 0.36s cubic-bezier(0.34, 1.56, 0.64, 1),\n background-color 0.2s linear;\n}\n\n@media (hover: hover) {\n .comimi-resize-handle:hover::after {\n width: 52px;\n height: 5px;\n background: #888;\n }\n}\n\n";
|
|
2
2
|
//# sourceMappingURL=viewer-root.styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer-root.styles.d.ts","sourceRoot":"","sources":["../../src/components/viewer-root.styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"viewer-root.styles.d.ts","sourceRoot":"","sources":["../../src/components/viewer-root.styles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,uyEAyG5B,CAAC"}
|
|
@@ -11,6 +11,7 @@ export declare class MangaViewerCore implements MangaViewerInstance {
|
|
|
11
11
|
private notificationTimers;
|
|
12
12
|
private autoTimer?;
|
|
13
13
|
private mobileMediaQuery?;
|
|
14
|
+
private lockLayoutMode;
|
|
14
15
|
constructor(container: HTMLElement, options: MangaViewerOptions);
|
|
15
16
|
destroy(): void;
|
|
16
17
|
setManga(manga: Manga): Promise<void>;
|
|
@@ -32,7 +33,7 @@ export declare class MangaViewerCore implements MangaViewerInstance {
|
|
|
32
33
|
private bindViewportChange;
|
|
33
34
|
private moveFromKey;
|
|
34
35
|
private setLayoutMode;
|
|
35
|
-
private
|
|
36
|
+
private setWideHeight;
|
|
36
37
|
private afterStateChange;
|
|
37
38
|
private syncAutoTimer;
|
|
38
39
|
private emitPageChangeIfNeeded;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manga-viewer-core.d.ts","sourceRoot":"","sources":["../../src/core/manga-viewer-core.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,KAAK,EACL,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAElB,eAAe,EACf,cAAc,EACd,WAAW,EACZ,MAAM,UAAU,CAAC;AAIlB,qBAAa,eAAgB,YAAW,mBAAmB;
|
|
1
|
+
{"version":3,"file":"manga-viewer-core.d.ts","sourceRoot":"","sources":["../../src/core/manga-viewer-core.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,KAAK,EACL,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAElB,eAAe,EACf,cAAc,EACd,WAAW,EACZ,MAAM,UAAU,CAAC;AAIlB,qBAAa,eAAgB,YAAW,mBAAmB;IAcvD,OAAO,CAAC,SAAS;IAbnB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAC1C,OAAO,CAAC,cAAc,CAAS;gBAGrB,SAAS,EAAE,WAAW,EAC9B,OAAO,EAAE,kBAAkB;IAqE7B,OAAO,IAAI,IAAI;IAaT,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjD,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC;IAI3B,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAatE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAejC,QAAQ,IAAI,IAAI;IAehB,YAAY,IAAI,IAAI;IAepB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,kBAAkB;IAW1B,aAAa,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI;IAMpC,kBAAkB,IAAI,IAAI;IAQpB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAevC,EAAE,CAAC,CAAC,SAAS,eAAe,EAC1B,SAAS,EAAE,CAAC,EACZ,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC7B,MAAM,IAAI;YAIC,SAAS;IA0CvB,OAAO,CAAC,YAAY;IAwGpB,OAAO,CAAC,yBAAyB;IAWjC,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,WAAW;YASL,aAAa;IA+B3B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,MAAM;CA0Bf"}
|
package/dist/defaults.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAElE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,eAAO,MAAM,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAElE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,eAAO,MAAM,eAAe,EAAE,cAc7B,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,cAAc,EACxB,SAAS,SAAI,GACZ,WAAW,CAuBb;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,cAAc,EACpB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAChC,cAAc,CAShB;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAU/E;AAED,wBAAgB,2BAA2B,CACzC,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,cAAc,GACvB,MAAM,EAAE,CAwBV"}
|
package/dist/i18n/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/i18n/i18n.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/i18n/i18n.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,qBAAa,IAAI;IACf,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAiC;gBAEzC,MAAM,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,cAAc;IAmB/D,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAM,GAAG,MAAM;CAQrE"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { MangaViewerInstance, MangaViewerOptions } from "./types";
|
|
2
2
|
export declare function createMangaViewer(container: HTMLElement, options: MangaViewerOptions): MangaViewerInstance;
|
|
3
|
-
export type { HtmlPage, ImagePage, LayoutMode, Manga, MangaPage, MangaViewerInstance, MangaViewerOptions, PageTurnMode, ReadingDirection, TranslationMap, ViewerEventHandler, ViewerEventMap, ViewerEventName, ViewerSettings, ViewerState } from "./types";
|
|
3
|
+
export type { HtmlPage, ImagePage, LayoutMode, Manga, MangaPage, MangaViewerInstance, MangaViewerOptions, PageTurnMode, ReadingDirection, TranslationMap, ViewerEventHandler, ViewerEventMap, ViewerEventName, ViewerSettings, ViewerState, } from "./types";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEvE,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,kBAAkB,GAC1B,mBAAmB,CAErB;AAED,YAAY,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,KAAK,EACL,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,cAAc,EACd,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEvE,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,kBAAkB,GAC1B,mBAAmB,CAErB;AAED,YAAY,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,KAAK,EACL,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,cAAc,EACd,WAAW,GACZ,MAAM,SAAS,CAAC"}
|