@yui540/comimi 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -214,7 +214,7 @@ var o = {
214
214
  "seek.previewAlt": "{{page}}페이지 미리보기",
215
215
  loading: "로딩 중",
216
216
  "error.pageRequestFailed": "{{page}}페이지 요청 실패"
217
- }, u = {
217
+ }, ee = {
218
218
  "overlay.autoPageTurn": "เล่นอัตโนมัติ",
219
219
  "overlay.layout": "โหมดการแสดงผล",
220
220
  "overlay.settings": "ตั้งค่า",
@@ -254,7 +254,7 @@ var o = {
254
254
  "seek.previewAlt": "ตัวอย่างหน้า {{page}}",
255
255
  loading: "กำลังโหลด",
256
256
  "error.pageRequestFailed": "ขอหน้า {{page}} ไม่สำเร็จ"
257
- }, ee = {
257
+ }, te = {
258
258
  "overlay.autoPageTurn": "自动播放",
259
259
  "overlay.layout": "显示模式",
260
260
  "overlay.settings": "设置",
@@ -294,16 +294,16 @@ var o = {
294
294
  "seek.previewAlt": "第 {{page}} 页预览",
295
295
  loading: "加载中",
296
296
  "error.pageRequestFailed": "第 {{page}} 页请求失败"
297
- }, te = class {
297
+ }, ne = class {
298
298
  locale;
299
299
  translations;
300
300
  constructor(e, t) {
301
301
  this.locale = e, this.translations = {
302
302
  ja: c,
303
303
  en: o,
304
- "zh-CN": ee,
304
+ "zh-CN": te,
305
305
  ko: l,
306
- th: u,
306
+ th: ee,
307
307
  id: s
308
308
  }, t && (this.translations[e] = {
309
309
  ...this.translations[e] ?? {},
@@ -319,75 +319,79 @@ var o = {
319
319
  };
320
320
  //#endregion
321
321
  //#region src/components/icons.ts
322
- function d(e, t) {
322
+ function u(e, t) {
323
323
  switch (e) {
324
- case "arrow": return f("0 0 20 20", [p("M7.28685 6.64194L10.7742 10.0838L7.3011 13.3098C7.06547 13.5391 6.9336 13.8467 6.9336 14.1669C6.9336 14.4871 7.06547 14.7945 7.3011 15.0239C7.41902 15.1378 7.55971 15.2282 7.7149 15.29C7.87009 15.3517 8.03669 15.3835 8.20498 15.3835C8.37328 15.3835 8.53987 15.3517 8.69506 15.29C8.85025 15.2282 8.99095 15.1378 9.10887 15.0239L13.4787 10.9746C13.7134 10.7475 13.845 10.4422 13.845 10.1243C13.845 9.80629 13.7134 9.50107 13.4787 9.27399L9.10886 4.96826C8.86878 4.74159 8.54377 4.61426 8.20498 4.61426C7.86619 4.61426 7.54118 4.74159 7.3011 4.96826C7.18102 5.08007 7.08568 5.2134 7.02057 5.36056C6.95546 5.50772 6.92188 5.6657 6.92188 5.82528C6.92188 5.98487 6.95546 6.14293 7.02057 6.29009C7.08568 6.43725 7.18102 6.57058 7.3011 6.68239L7.28685 6.64194Z")], t);
325
- case "default": return f("0 0 20 20", [m("1", "4", "18", "12", "3")], t);
326
- case "wide": return f("0 0 20 20", [m("1", "2.5", "18", "15", "3"), p("M5.5719 6.31811C5.88754 6.00907 6.39381 6.01422 6.70294 6.3298C7.01206 6.64539 7.00674 7.15165 6.69124 7.46084L5.06993 9.04896L14.7642 9.16988L13.1761 7.54857C12.867 7.23293 12.8722 6.72667 13.1878 6.41754C13.5034 6.10841 14.0096 6.11374 14.3188 6.42923L17.2579 9.42977C17.5671 9.7454 17.5619 10.2516 17.2462 10.5608L14.2457 13.4999C13.93 13.809 13.4238 13.8038 13.1146 13.4882C12.8055 13.1726 12.8109 12.6664 13.1263 12.3572L14.7477 10.7691L5.0534 10.6481L6.64152 12.2695C6.95055 12.5851 6.94541 13.0914 6.62982 13.4005C6.31424 13.7096 5.80797 13.7043 5.49879 13.3888L2.55967 10.3883C2.2505 10.0726 2.25573 9.5664 2.57136 9.25723L5.5719 6.31811Z")], t);
327
- case "fullscreen": return f("0 0 20 20", [m("1", "1", "18", "18", "3"), p("M8.69922 3.7002C9.14096 3.7003 9.49902 4.05824 9.49902 4.5C9.49902 4.94176 9.14096 5.2997 8.69922 5.2998H6.42969L14.6992 13.5693V11.2998C14.6993 10.8581 15.0573 10.5 15.499 10.5C15.9408 10.5 16.2987 10.8581 16.2988 11.2998V15.5C16.2988 15.9418 15.9409 16.2998 15.499 16.2998H11.2988C10.8571 16.2997 10.499 15.9418 10.499 15.5C10.499 15.0582 10.8571 14.7003 11.2988 14.7002H13.5684L5.29883 6.43066V8.7002C5.29872 9.14193 4.94079 9.5 4.49902 9.5C4.05726 9.5 3.69932 9.14193 3.69922 8.7002V4.5C3.69922 4.05817 4.0572 3.7002 4.49902 3.7002H8.69922Z")], t);
328
- case "one": return f("0 0 20 20", [m("1", "2", "18", "16", "3"), h("6", "4", "8", "12", "1.5")], t);
329
- case "two": return f("0 0 20 20", [
330
- m("1", "2", "18", "16", "3"),
331
- p("M3 5.5C3 4.67157 3.67157 4 4.5 4H9.5V16H4.5C3.67157 16 3 15.3284 3 14.5V5.5Z"),
332
- p("M10.5 4H15.5C16.3284 4 17 4.67157 17 5.5V14.5C17 15.3284 16.3284 16 15.5 16H10.5V4Z")
324
+ case "arrow": return d("0 0 20 20", [f("M7.28685 6.64194L10.7742 10.0838L7.3011 13.3098C7.06547 13.5391 6.9336 13.8467 6.9336 14.1669C6.9336 14.4871 7.06547 14.7945 7.3011 15.0239C7.41902 15.1378 7.55971 15.2282 7.7149 15.29C7.87009 15.3517 8.03669 15.3835 8.20498 15.3835C8.37328 15.3835 8.53987 15.3517 8.69506 15.29C8.85025 15.2282 8.99095 15.1378 9.10887 15.0239L13.4787 10.9746C13.7134 10.7475 13.845 10.4422 13.845 10.1243C13.845 9.80629 13.7134 9.50107 13.4787 9.27399L9.10886 4.96826C8.86878 4.74159 8.54377 4.61426 8.20498 4.61426C7.86619 4.61426 7.54118 4.74159 7.3011 4.96826C7.18102 5.08007 7.08568 5.2134 7.02057 5.36056C6.95546 5.50772 6.92188 5.6657 6.92188 5.82528C6.92188 5.98487 6.95546 6.14293 7.02057 6.29009C7.08568 6.43725 7.18102 6.57058 7.3011 6.68239L7.28685 6.64194Z")], t);
325
+ case "default": return d("0 0 20 20", [p("1", "4", "18", "12", "3")], t);
326
+ case "wide": return d("0 0 20 20", [p("1", "2.5", "18", "15", "3"), f("M5.5719 6.31811C5.88754 6.00907 6.39381 6.01422 6.70294 6.3298C7.01206 6.64539 7.00674 7.15165 6.69124 7.46084L5.06993 9.04896L14.7642 9.16988L13.1761 7.54857C12.867 7.23293 12.8722 6.72667 13.1878 6.41754C13.5034 6.10841 14.0096 6.11374 14.3188 6.42923L17.2579 9.42977C17.5671 9.7454 17.5619 10.2516 17.2462 10.5608L14.2457 13.4999C13.93 13.809 13.4238 13.8038 13.1146 13.4882C12.8055 13.1726 12.8109 12.6664 13.1263 12.3572L14.7477 10.7691L5.0534 10.6481L6.64152 12.2695C6.95055 12.5851 6.94541 13.0914 6.62982 13.4005C6.31424 13.7096 5.80797 13.7043 5.49879 13.3888L2.55967 10.3883C2.2505 10.0726 2.25573 9.5664 2.57136 9.25723L5.5719 6.31811Z")], t);
327
+ case "fullscreen": return d("0 0 20 20", [p("1", "1", "18", "18", "3"), f("M8.69922 3.7002C9.14096 3.7003 9.49902 4.05824 9.49902 4.5C9.49902 4.94176 9.14096 5.2997 8.69922 5.2998H6.42969L14.6992 13.5693V11.2998C14.6993 10.8581 15.0573 10.5 15.499 10.5C15.9408 10.5 16.2987 10.8581 16.2988 11.2998V15.5C16.2988 15.9418 15.9409 16.2998 15.499 16.2998H11.2988C10.8571 16.2997 10.499 15.9418 10.499 15.5C10.499 15.0582 10.8571 14.7003 11.2988 14.7002H13.5684L5.29883 6.43066V8.7002C5.29872 9.14193 4.94079 9.5 4.49902 9.5C4.05726 9.5 3.69932 9.14193 3.69922 8.7002V4.5C3.69922 4.05817 4.0572 3.7002 4.49902 3.7002H8.69922Z")], t);
328
+ case "one": return d("0 0 20 20", [p("1", "2", "18", "16", "3"), m("6", "4", "8", "12", "1.5")], t);
329
+ case "two": return d("0 0 20 20", [
330
+ p("1", "2", "18", "16", "3"),
331
+ f("M3 5.5C3 4.67157 3.67157 4 4.5 4H9.5V16H4.5C3.67157 16 3 15.3284 3 14.5V5.5Z"),
332
+ f("M10.5 4H15.5C16.3284 4 17 4.67157 17 5.5V14.5C17 15.3284 16.3284 16 15.5 16H10.5V4Z")
333
333
  ], t);
334
- case "play": return f("0 0 20 20", [p("M17.0385 7.78428L6.49809 1.19667C4.68077 0.190227 2.5 1.37966 2.5 3.48403V16.5678C2.5 18.5806 4.68077 19.8616 6.49809 18.7636L17.0385 12.176C18.7649 11.1696 18.7649 8.79072 17.0385 7.78428Z")], t);
335
- case "pause": return f("0 0 20 20", [p("M6.14289 18.3332H4.68573C3.47144 18.3332 2.5 17.3332 2.5 16.0832V3.9165C2.5 2.6665 3.47144 1.6665 4.68573 1.6665H6.14289C7.35718 1.6665 8.32862 2.6665 8.32862 3.9165V15.9998C8.40957 17.3332 7.43814 18.3332 6.14289 18.3332Z"), p("M15.3138 18.3332H13.8555C12.6402 18.3332 11.668 17.3332 11.668 16.0832V3.9165C11.668 2.6665 12.6402 1.6665 13.8555 1.6665H15.3138C16.5291 1.6665 17.5013 2.6665 17.5013 3.9165V15.9998C17.5013 17.3332 16.5291 18.3332 15.3138 18.3332Z")], t);
336
- case "settings": return f("0 0 24 24", [p("M10.0144 1.34782C11.2164 0.658798 12.6836 0.658798 13.8856 1.34782C13.8947 1.35299 13.9036 1.35831 13.9125 1.36376L20.1001 5.17383C21.3211 5.88071 22 7.15791 22 8.54376V15.56C22 16.9 21.3552 18.2127 20.1836 18.8369L14.0125 22.6368C14.0036 22.6423 13.9947 22.6476 13.9856 22.6527C12.7836 23.3418 11.3164 23.3418 10.1144 22.6527C10.1053 22.6476 10.0964 22.6423 10.0875 22.6368L3.89984 18.8267C2.67884 18.1198 2 16.8426 2 15.4568V8.54376C2 7.15919 2.6776 5.88306 3.8965 5.17578L9.98139 1.36758C9.99225 1.36078 10.0032 1.35419 10.0144 1.34782ZM11.0006 3.14323L4.91861 6.94964C4.90775 6.95644 4.89675 6.96302 4.88564 6.96939C4.31578 7.29605 4 7.87148 4 8.54376V15.4568C4 16.1291 4.31578 16.7045 4.88564 17.0312C4.89466 17.0364 4.9036 17.0417 4.91246 17.0471L11.0978 20.8558C11.6895 21.1893 12.4105 21.1893 13.0022 20.8558L19.1875 17.0471C19.2088 17.034 19.2306 17.0217 19.2528 17.0103C19.6582 16.8011 20 16.2698 20 15.56V8.54376C20 7.87148 19.6842 7.29605 19.1144 6.96939C19.1053 6.96422 19.0964 6.95891 19.0875 6.95346L12.9022 3.14482C12.3115 2.8118 11.5918 2.81127 11.0006 3.14323ZM12 9.8851C10.8402 9.8851 9.89999 10.8552 9.89999 12.0519C9.89999 13.2486 10.8402 14.2187 12 14.2187C13.1598 14.2187 14.1 13.2486 14.1 12.0519C14.1 10.8552 13.1598 9.8851 12 9.8851ZM7.89999 12.0519C7.89999 9.7155 9.73563 7.8215 12 7.8215C14.2644 7.8215 16.1 9.7155 16.1 12.0519C16.1 14.3883 14.2644 16.2823 12 16.2823C9.73563 16.2823 7.89999 14.3883 7.89999 12.0519Z")], t);
337
- case "menu": return g(t);
338
- case "close": return _(t);
334
+ case "play": return d("0 0 20 20", [f("M17.0385 7.78428L6.49809 1.19667C4.68077 0.190227 2.5 1.37966 2.5 3.48403V16.5678C2.5 18.5806 4.68077 19.8616 6.49809 18.7636L17.0385 12.176C18.7649 11.1696 18.7649 8.79072 17.0385 7.78428Z")], t);
335
+ case "pause": return d("0 0 20 20", [f("M6.14289 18.3332H4.68573C3.47144 18.3332 2.5 17.3332 2.5 16.0832V3.9165C2.5 2.6665 3.47144 1.6665 4.68573 1.6665H6.14289C7.35718 1.6665 8.32862 2.6665 8.32862 3.9165V15.9998C8.40957 17.3332 7.43814 18.3332 6.14289 18.3332Z"), f("M15.3138 18.3332H13.8555C12.6402 18.3332 11.668 17.3332 11.668 16.0832V3.9165C11.668 2.6665 12.6402 1.6665 13.8555 1.6665H15.3138C16.5291 1.6665 17.5013 2.6665 17.5013 3.9165V15.9998C17.5013 17.3332 16.5291 18.3332 15.3138 18.3332Z")], t);
336
+ case "settings": return d("0 0 24 24", [f("M10.0144 1.34782C11.2164 0.658798 12.6836 0.658798 13.8856 1.34782C13.8947 1.35299 13.9036 1.35831 13.9125 1.36376L20.1001 5.17383C21.3211 5.88071 22 7.15791 22 8.54376V15.56C22 16.9 21.3552 18.2127 20.1836 18.8369L14.0125 22.6368C14.0036 22.6423 13.9947 22.6476 13.9856 22.6527C12.7836 23.3418 11.3164 23.3418 10.1144 22.6527C10.1053 22.6476 10.0964 22.6423 10.0875 22.6368L3.89984 18.8267C2.67884 18.1198 2 16.8426 2 15.4568V8.54376C2 7.15919 2.6776 5.88306 3.8965 5.17578L9.98139 1.36758C9.99225 1.36078 10.0032 1.35419 10.0144 1.34782ZM11.0006 3.14323L4.91861 6.94964C4.90775 6.95644 4.89675 6.96302 4.88564 6.96939C4.31578 7.29605 4 7.87148 4 8.54376V15.4568C4 16.1291 4.31578 16.7045 4.88564 17.0312C4.89466 17.0364 4.9036 17.0417 4.91246 17.0471L11.0978 20.8558C11.6895 21.1893 12.4105 21.1893 13.0022 20.8558L19.1875 17.0471C19.2088 17.034 19.2306 17.0217 19.2528 17.0103C19.6582 16.8011 20 16.2698 20 15.56V8.54376C20 7.87148 19.6842 7.29605 19.1144 6.96939C19.1053 6.96422 19.0964 6.95891 19.0875 6.95346L12.9022 3.14482C12.3115 2.8118 11.5918 2.81127 11.0006 3.14323ZM12 9.8851C10.8402 9.8851 9.89999 10.8552 9.89999 12.0519C9.89999 13.2486 10.8402 14.2187 12 14.2187C13.1598 14.2187 14.1 13.2486 14.1 12.0519C14.1 10.8552 13.1598 9.8851 12 9.8851ZM7.89999 12.0519C7.89999 9.7155 9.73563 7.8215 12 7.8215C14.2644 7.8215 16.1 9.7155 16.1 12.0519C16.1 14.3883 14.2644 16.2823 12 16.2823C9.73563 16.2823 7.89999 14.3883 7.89999 12.0519Z")], t);
337
+ case "menu": return h(t);
338
+ case "close": return g(t);
339
339
  }
340
340
  }
341
- function f(e, t, n) {
341
+ function d(e, t, n) {
342
342
  let r = document.createElementNS("http://www.w3.org/2000/svg", "svg");
343
343
  return r.setAttribute("viewBox", e), r.setAttribute("fill", "none"), r.classList.add("comimi-icon"), n && r.classList.add(n), r.append(...t), r;
344
344
  }
345
- function p(e) {
345
+ function f(e) {
346
346
  let t = document.createElementNS("http://www.w3.org/2000/svg", "path");
347
347
  return t.setAttribute("d", e), t.classList.add("comimi-icon-fill"), t;
348
348
  }
349
- function m(e, t, n, r, i) {
349
+ function p(e, t, n, r, i) {
350
350
  let a = document.createElementNS("http://www.w3.org/2000/svg", "rect");
351
351
  return a.setAttribute("x", e), a.setAttribute("y", t), a.setAttribute("width", n), a.setAttribute("height", r), a.setAttribute("rx", i), a.classList.add("comimi-icon-stroke"), a;
352
352
  }
353
- function h(e, t, n, r, i) {
353
+ function m(e, t, n, r, i) {
354
354
  let a = document.createElementNS("http://www.w3.org/2000/svg", "rect");
355
355
  return a.setAttribute("x", e), a.setAttribute("y", t), a.setAttribute("width", n), a.setAttribute("height", r), a.setAttribute("rx", i), a.classList.add("comimi-icon-fill"), a;
356
356
  }
357
- function g(e) {
357
+ function h(e) {
358
358
  let t = document.createElement("span");
359
359
  t.className = `comimi-menu-svg ${e ?? ""}`.trim();
360
360
  for (let e = 0; e < 3; e += 1) t.append(document.createElement("span"));
361
361
  return t;
362
362
  }
363
- function _(e) {
363
+ function g(e) {
364
364
  let t = document.createElement("span");
365
365
  return t.className = `comimi-close-svg ${e ?? ""}`.trim(), t.append(document.createElement("span"), document.createElement("span")), t;
366
366
  }
367
367
  //#endregion
368
368
  //#region src/components/arrow-buttons.ts
369
- function ne({ state: e, callbacks: t }) {
369
+ function _({ state: e, callbacks: t }) {
370
370
  let n = document.createElement("div");
371
- return n.className = "comimi-arrows", n.dataset.overlay = String(e.overlayVisible), n.dataset.autoplay = String(e.autoPageTurnEnabled), n.append(v("prev", () => y(e, t, "left")), v("next", () => y(e, t, "right"))), n;
371
+ return n.className = "comimi-arrows", n.dataset.overlay = String(e.overlayVisible), n.dataset.autoplay = String(e.autoPageTurnEnabled), n.append(v("prev", e, () => y(e, t, "left")), v("next", e, () => y(e, t, "right"))), n;
372
372
  }
373
- function v(e, t) {
374
- let n = document.createElement("button");
375
- n.type = "button", n.className = `comimi-arrow-button comimi-arrow-${e}`, n.setAttribute("aria-label", e === "next" ? "Next page" : "Previous page"), n.addEventListener("click", (e) => {
376
- e.stopPropagation(), t();
373
+ function v(e, t, n) {
374
+ let r = document.createElement("button");
375
+ r.type = "button", r.className = `comimi-arrow-button comimi-arrow-${e}`, r.setAttribute("aria-label", e === "next" ? "Next page" : "Previous page"), re(t, e === "prev" ? "left" : "right") || (r.dataset.disabled = "true"), r.addEventListener("click", (e) => {
376
+ e.stopPropagation(), n();
377
377
  });
378
- let r = document.createElement("span");
379
- r.className = "comimi-arrow-inner";
380
378
  let i = document.createElement("span");
381
- i.className = "comimi-arrow-bg";
382
- let a = d("arrow");
383
- return a.classList.add("comimi-arrow-icon"), r.append(i, a), n.append(r), n;
379
+ i.className = "comimi-arrow-inner";
380
+ let a = document.createElement("span");
381
+ a.className = "comimi-arrow-bg";
382
+ let o = u("arrow");
383
+ return o.classList.add("comimi-arrow-icon"), i.append(a, o), r.append(i), r;
384
384
  }
385
385
  function y(e, t, n) {
386
- re(n, e.settings.readingDirection) ? t.nextPage() : t.previousPage();
386
+ b(n, e.settings.readingDirection) ? t.nextPage() : t.previousPage();
387
387
  }
388
- function re(e, t) {
388
+ function b(e, t) {
389
389
  return t === "rtl" ? e === "left" : e === "right";
390
390
  }
391
+ function re(e, t) {
392
+ let n = b(t, e.settings.readingDirection), { currentPageIndex: r } = e;
393
+ return n ? r + i(e.settings, r) < e.manga.pages.length : r > 0;
394
+ }
391
395
  //#endregion
392
396
  //#region src/components/center-message.ts
393
397
  function ie(e, t) {
@@ -400,60 +404,60 @@ function ie(e, t) {
400
404
  }
401
405
  //#endregion
402
406
  //#region src/components/page-layout.ts
403
- function b(e, t) {
404
- return D(e, e.currentPageIndex, t);
407
+ function x(e, t) {
408
+ return O(e, e.currentPageIndex, t);
405
409
  }
406
- function x(e, t, n) {
407
- let r = b(e, n), i = t === "previous" ? Math.min(...r) - 1 : Math.max(...r) + 1;
408
- return i < 0 || i >= e.manga.pages.length ? [] : D(e, i, n);
410
+ function S(e, t, n) {
411
+ let r = x(e, n), i = t === "previous" ? Math.min(...r) - 1 : Math.max(...r) + 1;
412
+ return i < 0 || i >= e.manga.pages.length ? [] : O(e, i, n);
409
413
  }
410
- function S(e, t) {
414
+ function C(e, t) {
411
415
  let n = [];
412
416
  for (let r = 1; r >= 1; --r) {
413
- let i = E(e, "previous", r, t);
417
+ let i = D(e, "previous", r, t);
414
418
  i.length > 0 && n.push({
415
419
  indexes: i,
416
420
  placement: "previous",
417
- offset: C(e, "previous", r)
421
+ offset: w(e, "previous", r)
418
422
  });
419
423
  }
420
424
  n.push({
421
- indexes: b(e, t),
425
+ indexes: x(e, t),
422
426
  placement: "current",
423
427
  offset: 0
424
428
  });
425
429
  for (let r = 1; r <= 1; r += 1) {
426
- let i = E(e, "next", r, t);
430
+ let i = D(e, "next", r, t);
427
431
  i.length > 0 && n.push({
428
432
  indexes: i,
429
433
  placement: "next",
430
- offset: C(e, "next", r)
434
+ offset: w(e, "next", r)
431
435
  });
432
436
  }
433
437
  return n;
434
438
  }
435
- function C(e, t, n) {
439
+ function w(e, t, n) {
436
440
  let r = e.settings.readingDirection === "rtl" ? -1 : 1;
437
441
  return (t === "next" ? r : -r) * n;
438
442
  }
439
- function w(e, t) {
443
+ function T(e, t) {
440
444
  if (t === "current") return "center";
441
445
  let n = e.settings.readingDirection === "rtl" ? "left" : "right";
442
446
  return t === "next" ? n : n === "left" ? "right" : "left";
443
447
  }
444
- function T(e, t) {
448
+ function E(e, t) {
445
449
  return t === "rtl" ? e > 0 : e < 0;
446
450
  }
447
- function E(e, t, n, r) {
448
- let i = b(e, r);
451
+ function D(e, t, n, r) {
452
+ let i = x(e, r);
449
453
  for (let a = 0; a < n; a += 1) {
450
454
  let n = t === "previous" ? Math.min(...i) - 1 : Math.max(...i) + 1;
451
455
  if (n < 0 || n >= e.manga.pages.length) return [];
452
- i = D(e, n, r);
456
+ i = O(e, n, r);
453
457
  }
454
458
  return i;
455
459
  }
456
- function D(e, t, n) {
460
+ function O(e, t, n) {
457
461
  let { manga: r, settings: i } = e;
458
462
  if (n || i.pageTurnMode !== "spread" || i.hasCover && t === 0) return [t];
459
463
  let a = [t, ae(e, t)].filter((e) => e >= 0 && e < r.pages.length), o = [...new Set(a)].sort((e, t) => e - t);
@@ -465,7 +469,7 @@ function ae(e, t) {
465
469
  //#endregion
466
470
  //#region src/components/rabbit-mascot.ts
467
471
  var oe = "<svg viewBox=\"0 0 50 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"comimi-rabbit-svg\">\n <mask id=\"comimi-rabbit-mask\" style=\"mask-type:alpha\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"50\" height=\"50\">\n <rect width=\"50\" height=\"50\" fill=\"#D9D9D9\"/>\n </mask>\n <g mask=\"url(#comimi-rabbit-mask)\">\n <path d=\"M3 41V50H47L48 46.5L47.5 41.5L46 36L42.5 32V29.5L43 23L41 14L36 10.5L29 12L25 16.5L21 12L15 10.5L9.5 14L7.5 22L7 33L3 41Z\" fill=\"white\"/>\n <path d=\"M44.4296 30.6958C44.6658 29.2364 44.8262 27.5939 44.9287 25.6301C45.1827 20.7786 44.6212 16.8733 43.2531 14.0123C41.4929 10.3257 38.3601 8.25926 34.1979 8.04056C30.3119 7.84418 27.1881 9.20546 24.9822 12.0396C22.3752 8.56275 18.828 7.87096 16.0027 8.01824C11.5152 8.25479 4.09982 10.8568 4.87077 25.6301C4.98218 27.759 5.1426 29.4372 5.37433 30.9011C1.8984 34.6592 0 39.3143 0 44.1301C0 46.2814 0.374332 48.4103 1.11854 50.4589C1.44831 51.365 2.30392 51.9318 3.21301 51.9318C3.46702 51.9318 3.72103 51.8872 3.97504 51.7979C5.13369 51.3784 5.73084 50.0974 5.31194 48.937C4.74599 47.3793 4.46078 45.7636 4.46078 44.1301C4.46078 40.1534 6.18984 36.2838 9.32709 33.2399C9.87077 32.7087 10.1114 31.9411 9.95989 31.1957C9.65241 29.6827 9.46078 27.8929 9.32709 25.398C9.16667 22.3005 8.67202 12.8742 16.2433 12.477C19.3717 12.3119 21.4349 13.807 22.7139 17.1589V27.4689C22.7139 28.7008 23.7121 29.7005 24.9421 29.7005C26.172 29.7005 27.1702 28.7008 27.1702 27.4689V17.1812C28.5294 13.8204 30.6907 12.3297 33.9706 12.4993C36.5107 12.6332 38.1863 13.7267 39.2424 15.9404C40.2807 18.1185 40.6996 21.2963 40.4857 25.398C40.3699 27.6608 40.1604 29.4952 39.8529 31.0038C39.697 31.7581 39.9465 32.5436 40.5036 33.0703C43.7522 36.1454 45.5392 40.073 45.5392 44.1301C45.5392 45.7592 45.254 47.3793 44.6881 48.937C44.2692 50.0974 44.8663 51.3739 46.025 51.7979C47.1836 52.2174 48.4581 51.6194 48.8815 50.4589C49.6212 48.4103 50 46.2814 50 44.1301C50 39.2161 48.0348 34.4896 44.4385 30.6958H44.4296Z\" fill=\"#E0E0E0\"/>\n <path d=\"M15.6152 45.4779C17.0919 45.4779 18.289 44.279 18.289 42.8C18.289 41.321 17.0919 40.1221 15.6152 40.1221C14.1385 40.1221 12.9414 41.321 12.9414 42.8C12.9414 44.279 14.1385 45.4779 15.6152 45.4779Z\" fill=\"#E0E0E0\"/>\n <path d=\"M29.6113 45.4779C31.088 45.4779 32.2851 44.279 32.2851 42.8C32.2851 41.321 31.088 40.1221 29.6113 40.1221C28.1346 40.1221 26.9375 41.321 26.9375 42.8C26.9375 44.279 28.1346 45.4779 29.6113 45.4779Z\" fill=\"#E0E0E0\"/>\n </g>\n</svg>";
468
- function O(e) {
472
+ function k(e) {
469
473
  if (e === !1) return null;
470
474
  let t = document.createElement("div");
471
475
  if (t.className = "comimi-rabbit", e && "render" in e) return t.append(e.render()), t;
@@ -502,7 +506,7 @@ var se = class {
502
506
  getElement() {
503
507
  return this.root;
504
508
  }
505
- }, k = class {
509
+ }, A = class {
506
510
  root;
507
511
  select;
508
512
  label;
@@ -514,7 +518,7 @@ var se = class {
514
518
  let t = this.options.find((e) => String(e.value) === this.select.value);
515
519
  t && e(t.value);
516
520
  }), this.label = document.createElement("span"), this.label.className = "comimi-selectbox-label";
517
- let n = d("arrow");
521
+ let n = u("arrow");
518
522
  n.classList.add("comimi-selectbox-arrow"), this.root.append(t, this.select, this.label, n);
519
523
  }
520
524
  setOptions(e) {
@@ -569,7 +573,7 @@ var se = class {
569
573
  };
570
574
  //#endregion
571
575
  //#region src/components/scroll-fade.ts
572
- function A(e) {
576
+ function j(e) {
573
577
  e.classList.add("comimi-scrollfade");
574
578
  let t = () => {
575
579
  let { scrollTop: t, scrollHeight: n, clientHeight: r } = e;
@@ -583,7 +587,7 @@ function A(e) {
583
587
  }
584
588
  //#endregion
585
589
  //#region src/components/settings-panel.ts
586
- var j = class {
590
+ var M = class {
587
591
  callbacks;
588
592
  i18n;
589
593
  root;
@@ -601,7 +605,7 @@ var j = class {
601
605
  backgroundColorSelect;
602
606
  intervalSlider;
603
607
  constructor(e, t) {
604
- this.callbacks = e, this.i18n = t, this.root = document.createElement("div"), this.root.className = "comimi-settings-panel", this.root.dataset.open = "false", this.root.setAttribute("role", "dialog"), this.root.addEventListener("click", (e) => e.stopPropagation()), this.body = document.createElement("div"), this.body.className = "comimi-settings-panel-body", this.inner = document.createElement("div"), this.inner.className = "comimi-settings-panel-inner", this.titleEl = document.createElement("div"), this.titleEl.className = "comimi-settings-panel-title", this.localeSelect = new k((e) => this.callbacks.updateSettings({ locale: String(e) })), this.coverToggle = new se((e) => this.callbacks.updateSettings({ hasCover: e })), this.directionSelect = new k((e) => this.callbacks.updateSettings({ readingDirection: e })), this.backgroundColorSelect = new k((e) => this.callbacks.updateSettings({ backgroundColor: e })), this.intervalSlider = new ce((e) => this.callbacks.updateSettings({ autoPageTurnIntervalMs: Math.max(1, e) * 1e3 })), this.intervalSlider.setRange(3, 30, 1), this.localeLabel = this.createLabel(), this.coverLabel = this.createLabel(), this.directionLabel = this.createLabel(), this.backgroundColorLabel = this.createLabel(), this.intervalLabel = this.createLabel(), this.inner.append(this.titleEl, this.section(this.localeLabel, this.localeSelect.getElement()), this.section(this.coverLabel, this.coverToggle.getElement()), this.section(this.directionLabel, this.directionSelect.getElement()), this.section(this.intervalLabel, this.intervalSlider.getElement()), this.section(this.backgroundColorLabel, this.backgroundColorSelect.getElement())), this.body.append(this.inner), this.root.append(this.body), A(this.body);
608
+ this.callbacks = e, this.i18n = t, this.root = document.createElement("div"), this.root.className = "comimi-settings-panel", this.root.dataset.open = "false", this.root.setAttribute("role", "dialog"), this.root.addEventListener("click", (e) => e.stopPropagation()), this.body = document.createElement("div"), this.body.className = "comimi-settings-panel-body", this.inner = document.createElement("div"), this.inner.className = "comimi-settings-panel-inner", this.titleEl = document.createElement("div"), this.titleEl.className = "comimi-settings-panel-title", this.localeSelect = new A((e) => this.callbacks.updateSettings({ locale: String(e) })), this.coverToggle = new se((e) => this.callbacks.updateSettings({ hasCover: e })), this.directionSelect = new A((e) => this.callbacks.updateSettings({ readingDirection: e })), this.backgroundColorSelect = new A((e) => this.callbacks.updateSettings({ backgroundColor: e })), this.intervalSlider = new ce((e) => this.callbacks.updateSettings({ autoPageTurnIntervalMs: Math.max(1, e) * 1e3 })), this.intervalSlider.setRange(3, 30, 1), this.localeLabel = this.createLabel(), this.coverLabel = this.createLabel(), this.directionLabel = this.createLabel(), this.backgroundColorLabel = this.createLabel(), this.intervalLabel = this.createLabel(), this.inner.append(this.titleEl, this.section(this.localeLabel, this.localeSelect.getElement()), this.section(this.coverLabel, this.coverToggle.getElement()), this.section(this.directionLabel, this.directionSelect.getElement()), this.section(this.intervalLabel, this.intervalSlider.getElement()), this.section(this.backgroundColorLabel, this.backgroundColorSelect.getElement())), this.body.append(this.inner), this.root.append(this.body), j(this.body);
605
609
  }
606
610
  update(e) {
607
611
  this.titleEl.textContent = this.i18n.t("settings.title"), this.localeLabel.textContent = "Language", this.coverLabel.textContent = this.i18n.t("settings.cover"), this.directionLabel.textContent = this.i18n.t("settings.direction"), this.backgroundColorLabel.textContent = this.i18n.t("settings.backgroundColor"), this.intervalLabel.textContent = this.i18n.t("settings.interval"), this.localeSelect.setOptions([
@@ -660,7 +664,7 @@ var j = class {
660
664
  };
661
665
  typeof requestAnimationFrame == "function" ? requestAnimationFrame(() => requestAnimationFrame(e)) : setTimeout(e, 0);
662
666
  }
663
- }, M = class {
667
+ }, N = class {
664
668
  callbacks;
665
669
  i18n;
666
670
  mascot;
@@ -699,7 +703,7 @@ var j = class {
699
703
  this.callbacks = e, this.i18n = t, this.mascot = n, this.root = document.createElement("div"), this.root.className = "comimi-controls-dock", this.root.dataset.overlay = "false", this.root.dataset.autoplay = "false";
700
704
  let r = document.createElement("div");
701
705
  r.className = "comimi-controls-bg";
702
- let i = O(this.mascot), a = [r];
706
+ let i = k(this.mascot), a = [r];
703
707
  i && a.push(i), a.push(this.buildSeek(), this.buildRow()), this.root.append(...a);
704
708
  }
705
709
  getElement() {
@@ -739,7 +743,7 @@ var j = class {
739
743
  if (n === 0) return;
740
744
  let r = this.seekBar.getBoundingClientRect();
741
745
  if (r.width === 0) return;
742
- let i = Math.max(0, Math.min(r.width, e.clientX - r.left)), a = i / r.width, o = t.settings.readingDirection === "rtl" ? 1 - a : a, s = D(t, Math.min(n - 1, Math.max(0, Math.floor(o * n))), !1), c = s.map((e) => t.manga.pages[e]).filter((e) => !!e);
746
+ let i = Math.max(0, Math.min(r.width, e.clientX - r.left)), a = i / r.width, o = t.settings.readingDirection === "rtl" ? 1 - a : a, s = O(t, Math.min(n - 1, Math.max(0, Math.floor(o * n))), !1), c = s.map((e) => t.manga.pages[e]).filter((e) => !!e);
743
747
  this.refreshSeekPreviewThumbs(s, c);
744
748
  let l = [...s].sort((e, t) => e - t);
745
749
  this.seekPreviewLabel.textContent = l.length > 1 ? `${l[0] + 1} - ${l[l.length - 1] + 1}` : String(l[0] + 1), this.seekPreview.style.left = `${i}px`, this.seekPreview.dataset.show = "true";
@@ -771,22 +775,22 @@ var j = class {
771
775
  });
772
776
  let e = document.createElement("span");
773
777
  e.className = "comimi-autoplay-window", this.autoplaySlider = document.createElement("span"), this.autoplaySlider.className = "comimi-autoplay-slider", this.autoplaySlider.dataset.active = "false";
774
- let t = d("play");
778
+ let t = u("play");
775
779
  t.classList.add("comimi-autoplay-icon", "comimi-autoplay-icon-play");
776
- let n = d("pause");
780
+ let n = u("pause");
777
781
  return n.classList.add("comimi-autoplay-icon", "comimi-autoplay-icon-pause"), this.autoplaySlider.append(t, n), e.append(this.autoplaySlider), this.autoplayTooltip = document.createElement("span"), this.autoplayTooltip.className = "comimi-tooltip", this.autoplayButton.append(e, this.autoplayTooltip), this.autoplayContainer.append(this.autoplayButton), this.autoplayContainer;
778
782
  }
779
783
  buildSide() {
780
784
  this.side = document.createElement("div"), this.side.className = "comimi-controls-side", this.pageMode = document.createElement("div"), this.pageMode.className = "comimi-page-mode";
781
785
  let e = document.createElement("div");
782
- return e.className = "comimi-page-mode-wrapper", [this.pageModeSingleBtn, this.pageModeSingleIcon, this.pageModeSingleTooltip] = this.buildPageModeButton("single", "one"), [this.pageModeSpreadBtn, this.pageModeSpreadIcon, this.pageModeSpreadTooltip] = this.buildPageModeButton("spread", "two"), e.append(this.pageModeSingleBtn, this.pageModeSpreadBtn), this.pageMode.append(e), [this.settingsContainer, this.settingsButton, this.settingsIcon, this.settingsTooltip] = this.buildSettings(), this.settings = new j(this.callbacks, this.i18n), this.settingsContainer.append(this.settings.getElement()), this.side.append(this.pageMode, this.settingsContainer), this.side;
786
+ return e.className = "comimi-page-mode-wrapper", [this.pageModeSingleBtn, this.pageModeSingleIcon, this.pageModeSingleTooltip] = this.buildPageModeButton("single", "one"), [this.pageModeSpreadBtn, this.pageModeSpreadIcon, this.pageModeSpreadTooltip] = this.buildPageModeButton("spread", "two"), e.append(this.pageModeSingleBtn, this.pageModeSpreadBtn), this.pageMode.append(e), [this.settingsContainer, this.settingsButton, this.settingsIcon, this.settingsTooltip] = this.buildSettings(), this.settings = new M(this.callbacks, this.i18n), this.settingsContainer.append(this.settings.getElement()), this.side.append(this.pageMode, this.settingsContainer), this.side;
783
787
  }
784
788
  buildPageModeButton(e, t) {
785
789
  let n = document.createElement("button");
786
790
  n.type = "button", n.className = "comimi-page-mode-button comimi-has-tooltip", n.dataset.selected = "false", n.addEventListener("click", (t) => {
787
791
  t.stopPropagation(), this.callbacks.updateSettings({ pageTurnMode: e });
788
792
  });
789
- let r = d(t);
793
+ let r = u(t);
790
794
  r.classList.add("comimi-page-mode-icon");
791
795
  let i = document.createElement("span");
792
796
  return i.className = "comimi-tooltip", n.append(r, i), [
@@ -804,7 +808,7 @@ var j = class {
804
808
  let n = e.dataset.open === "true";
805
809
  this.callbacks.setPanel(n ? "none" : "settings");
806
810
  });
807
- let n = d("settings");
811
+ let n = u("settings");
808
812
  n.classList.add("comimi-settings-icon");
809
813
  let r = document.createElement("span");
810
814
  return r.className = "comimi-tooltip", t.append(n, r), e.append(t), [
@@ -817,7 +821,7 @@ var j = class {
817
821
  applyPopAnimation(e) {
818
822
  e.classList.remove("comimi-pop-animate"), e.offsetWidth, e.classList.add("comimi-pop-animate");
819
823
  }
820
- }, N = class {
824
+ }, P = class {
821
825
  callbacks;
822
826
  i18n;
823
827
  options;
@@ -841,7 +845,7 @@ var j = class {
841
845
  [this.titleEl, this.authorEl] = this.findTitleNodes(i), this.bottomEl = document.createElement("div"), this.bottomEl.className = "comimi-menu-bottom", this.bottomEl.style.height = "0px";
842
846
  let a = document.createElement("div");
843
847
  a.className = "comimi-menu-border", this.viewMenu = this.buildMenuView(), this.viewShortcut = this.buildShortcutView(), [this.viewPageList, this.pageListInner] = this.buildPageListView(), this.bottomEl.append(a, this.viewMenu, this.viewShortcut, this.viewPageList);
844
- let o = O(this.options.mascot), s = [r];
848
+ let o = k(this.options.mascot), s = [r];
845
849
  o && s.push(o), s.push(i, this.bottomEl), this.root.append(...s);
846
850
  }
847
851
  getElement() {
@@ -897,7 +901,7 @@ var j = class {
897
901
  let t = document.createElement("span");
898
902
  t.className = "comimi-menu-button";
899
903
  let n = document.createElement("span");
900
- n.className = "comimi-menu-button-inner", n.append(d("menu"), d("close")), t.append(n);
904
+ n.className = "comimi-menu-button-inner", n.append(u("menu"), u("close")), t.append(n);
901
905
  let r = document.createElement("span");
902
906
  r.className = "comimi-menu-title-wrap";
903
907
  let i = document.createElement("span");
@@ -924,7 +928,7 @@ var j = class {
924
928
  let r = document.createElement("span");
925
929
  r.className = "comimi-menu-link-text", this.bindI18nText(r, e);
926
930
  let i = document.createElement("span");
927
- return i.className = "comimi-menu-link-arrow", i.append(d("arrow")), n.append(r, i), n;
931
+ return i.className = "comimi-menu-link-arrow", i.append(u("arrow")), n.append(r, i), n;
928
932
  }
929
933
  buildShortcutView() {
930
934
  let e = document.createElement("div");
@@ -932,7 +936,7 @@ var j = class {
932
936
  let t = document.createElement("div");
933
937
  t.className = "comimi-shortcut-inner";
934
938
  let n = document.createElement("div");
935
- return n.className = "comimi-shortcut-grid", t.append(n), A(t), n.append(this.shortcutSection("shortcut.section.page", [
939
+ return n.className = "comimi-shortcut-grid", t.append(n), j(t), n.append(this.shortcutSection("shortcut.section.page", [
936
940
  [["←", "Space"], "shortcut.moveLeft"],
937
941
  [["→", "Space + Shift"], "shortcut.moveRight"],
938
942
  [["A"], "shortcut.autoPageTurnLabel"]
@@ -953,7 +957,7 @@ var j = class {
953
957
  let t = document.createElement("div");
954
958
  t.className = "comimi-page-list-inner";
955
959
  let n = document.createElement("div");
956
- return n.className = "comimi-page-list-grid", t.append(n), A(t), e.append(t, this.renderBackButton()), [e, n];
960
+ return n.className = "comimi-page-list-grid", t.append(n), j(t), e.append(t, this.renderBackButton()), [e, n];
957
961
  }
958
962
  shortcutSection(e, t, n = !1) {
959
963
  let r = document.createElement("div");
@@ -992,9 +996,9 @@ var j = class {
992
996
  let r = document.createElement("span");
993
997
  r.className = "comimi-back-text", this.bindI18nText(r, "menu.back");
994
998
  let i = document.createElement("span");
995
- return i.className = "comimi-back-arrow", i.append(d("arrow")), t.append(n, r, i), e.append(t), e;
999
+ return i.className = "comimi-back-arrow", i.append(u("arrow")), t.append(n, r, i), e.append(t), e;
996
1000
  }
997
- }, P = class {
1001
+ }, F = class {
998
1002
  callbacks;
999
1003
  i18n;
1000
1004
  root;
@@ -1028,7 +1032,7 @@ var j = class {
1028
1032
  });
1029
1033
  let a = document.createElement("span");
1030
1034
  a.className = "comimi-view-switcher-icon-wrap";
1031
- let o = d(r);
1035
+ let o = u(r);
1032
1036
  o.classList.add("comimi-view-switcher-icon"), a.append(o);
1033
1037
  let s = document.createElement("span");
1034
1038
  return s.className = "comimi-view-switcher-label", s.textContent = t.t(n), i.append(a, s), this.root.append(i), {
@@ -1054,23 +1058,23 @@ var j = class {
1054
1058
  }
1055
1059
  this.tooltip.textContent = this.i18n.t("overlay.layout"), this.prevMode = e.layout.mode;
1056
1060
  }
1057
- }, F = "\n<svg viewBox=\"0 0 112.19 99.01\" class=\"comimi-error-svg\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path class=\"comimi-error-stroke\" d=\"M17.43,53.54c-7.74,7.51-12.43,17.29-12.43,27.99,0,4.34.78,8.53,2.21,12.48\" />\n <path class=\"comimi-error-stroke\" d=\"M104.98,94.01c1.43-3.95,2.21-8.14,2.21-12.48,0-10.91-4.87-20.85-12.87-28.42\" />\n <path class=\"comimi-error-stroke comimi-error-mimi comimi-error-mimi-left\" d=\"M55.79,43.81v-24.02c3.43-9.18,9.81-15.08,20.52-14.52,16.12.84,20.31,15.9,19.35,34.15-.25,4.75-.69,9.25-1.51,13.3\" />\n <path class=\"comimi-error-stroke comimi-error-mimi comimi-error-mimi-right\" d=\"M55.79,43.62v-24.02c-3.25-9.2-9.34-15.11-19.78-14.56-16.53.87-21.21,15.95-20.25,34.2.26,4.91.67,9.56,1.51,13.72\" />\n <path fill=\"#fff\" d=\"M80.44,49.41H31.46c-12.97,6.71-21.6,18.57-21.6,32.1,0,5.8,1.59,11.3,4.43,16.21h83.34c2.83-4.92,4.43-10.41,4.43-16.21,0-13.53-8.63-25.4-21.6-32.1Z\" />\n <g class=\"comimi-error-eyes\">\n <path class=\"comimi-error-eye\" d=\"M45.85,75.85c1.92,1.92,1.92,5.05,0,6.97s-5.05,1.92-6.97,0l-1.74-1.74-1.74,1.74c-1.92,1.92-5.05,1.92-6.97,0-1.92-1.92-1.92-5.05,0-6.97l1.74-1.74-1.74-1.74c-1.92-1.92-1.92-5.05,0-6.97s5.05-1.92,6.97,0l1.74,1.74,1.74-1.74c1.92-1.92,5.05-1.92,6.97,0,1.93,1.92,1.93,5.05,0,6.97l-1.74,1.74,1.74,1.74Z\" />\n <path class=\"comimi-error-eye\" d=\"M77.89,75.85c1.92,1.92,1.92,5.05,0,6.97-1.92,1.92-5.05,1.92-6.97,0l-1.74-1.74-1.74,1.74c-1.92,1.92-5.05,1.92-6.97,0-1.92-1.92-1.92-5.05,0-6.97l1.74-1.74-1.74-1.74c-1.92-1.92-1.92-5.05,0-6.97,1.92-1.92,5.05-1.92,6.97,0l1.74,1.74,1.74-1.74c1.92-1.92,5.05-1.92,6.97,0,1.92,1.92,1.92,5.05,0,6.97l-1.74,1.74,1.74,1.74Z\" />\n </g>\n </g>\n</svg>\n";
1058
- function I(e, t) {
1061
+ }, I = "\n<svg viewBox=\"0 0 112.19 99.01\" class=\"comimi-error-svg\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path class=\"comimi-error-stroke\" d=\"M17.43,53.54c-7.74,7.51-12.43,17.29-12.43,27.99,0,4.34.78,8.53,2.21,12.48\" />\n <path class=\"comimi-error-stroke\" d=\"M104.98,94.01c1.43-3.95,2.21-8.14,2.21-12.48,0-10.91-4.87-20.85-12.87-28.42\" />\n <path class=\"comimi-error-stroke comimi-error-mimi comimi-error-mimi-left\" d=\"M55.79,43.81v-24.02c3.43-9.18,9.81-15.08,20.52-14.52,16.12.84,20.31,15.9,19.35,34.15-.25,4.75-.69,9.25-1.51,13.3\" />\n <path class=\"comimi-error-stroke comimi-error-mimi comimi-error-mimi-right\" d=\"M55.79,43.62v-24.02c-3.25-9.2-9.34-15.11-19.78-14.56-16.53.87-21.21,15.95-20.25,34.2.26,4.91.67,9.56,1.51,13.72\" />\n <path fill=\"#fff\" d=\"M80.44,49.41H31.46c-12.97,6.71-21.6,18.57-21.6,32.1,0,5.8,1.59,11.3,4.43,16.21h83.34c2.83-4.92,4.43-10.41,4.43-16.21,0-13.53-8.63-25.4-21.6-32.1Z\" />\n <g class=\"comimi-error-eyes\">\n <path class=\"comimi-error-eye\" d=\"M45.85,75.85c1.92,1.92,1.92,5.05,0,6.97s-5.05,1.92-6.97,0l-1.74-1.74-1.74,1.74c-1.92,1.92-5.05,1.92-6.97,0-1.92-1.92-1.92-5.05,0-6.97l1.74-1.74-1.74-1.74c-1.92-1.92-1.92-5.05,0-6.97s5.05-1.92,6.97,0l1.74,1.74,1.74-1.74c1.92-1.92,5.05-1.92,6.97,0,1.93,1.92,1.93,5.05,0,6.97l-1.74,1.74,1.74,1.74Z\" />\n <path class=\"comimi-error-eye\" d=\"M77.89,75.85c1.92,1.92,1.92,5.05,0,6.97-1.92,1.92-5.05,1.92-6.97,0l-1.74-1.74-1.74,1.74c-1.92,1.92-5.05,1.92-6.97,0-1.92-1.92-1.92-5.05,0-6.97l1.74-1.74-1.74-1.74c-1.92-1.92-1.92-5.05,0-6.97,1.92-1.92,5.05-1.92,6.97,0l1.74,1.74,1.74-1.74c1.92-1.92,5.05-1.92,6.97,0,1.92,1.92,1.92,5.05,0,6.97l-1.74,1.74,1.74,1.74Z\" />\n </g>\n </g>\n</svg>\n";
1062
+ function L(e, t) {
1059
1063
  let n = document.createElement("div");
1060
1064
  n.className = "comimi-error-icon";
1061
1065
  let r = document.createElement("div");
1062
- r.className = "comimi-error-icon-svg", r.innerHTML = F;
1066
+ r.className = "comimi-error-icon-svg", r.innerHTML = I;
1063
1067
  let i = document.createElement("div");
1064
1068
  return i.className = "comimi-error-icon-text", i.textContent = e.t("error.pageRequestFailed", { page: t }), n.append(r, i), n;
1065
1069
  }
1066
1070
  //#endregion
1067
1071
  //#region src/components/loading-icon.ts
1068
- var L = "\n<svg viewBox=\"0 0 112.19 99.01\" class=\"comimi-loading-svg\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path class=\"comimi-loading-stroke\" d=\"M17.43,53.54c-7.74,7.51-12.43,17.29-12.43,27.99,0,4.34.78,8.53,2.21,12.48\" />\n <path class=\"comimi-loading-stroke\" d=\"M104.98,94.01c1.43-3.95,2.21-8.14,2.21-12.48,0-10.91-4.87-20.85-12.87-28.42\" />\n <path class=\"comimi-loading-stroke comimi-loading-mimi comimi-loading-mimi-left\" d=\"M55.79,43.81v-24.02c3.43-9.18,9.81-15.08,20.52-14.52,16.12.84,20.31,15.9,19.35,34.15-.25,4.75-.69,9.25-1.51,13.3\" />\n <path class=\"comimi-loading-stroke comimi-loading-mimi comimi-loading-mimi-right\" d=\"M55.79,43.62v-24.02c-3.25-9.2-9.34-15.11-19.78-14.56-16.53.87-21.21,15.95-20.25,34.2.26,4.91.67,9.56,1.51,13.72\" />\n <path fill=\"#fff\" d=\"M80.44,49.41H31.46c-12.97,6.71-21.6,18.57-21.6,32.1,0,5.8,1.59,11.3,4.43,16.21h83.34c2.83-4.92,4.43-10.41,4.43-16.21,0-13.53-8.63-25.4-21.6-32.1Z\" />\n <g class=\"comimi-loading-eyes\">\n <circle class=\"comimi-loading-eye\" cx=\"40.17\" cy=\"78.21\" r=\"6\" />\n <circle class=\"comimi-loading-eye\" cx=\"71.58\" cy=\"78.21\" r=\"6\" />\n </g>\n </g>\n</svg>\n", R = 3e3;
1069
- function z(e) {
1072
+ var R = "\n<svg viewBox=\"0 0 112.19 99.01\" class=\"comimi-loading-svg\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path class=\"comimi-loading-stroke\" d=\"M17.43,53.54c-7.74,7.51-12.43,17.29-12.43,27.99,0,4.34.78,8.53,2.21,12.48\" />\n <path class=\"comimi-loading-stroke\" d=\"M104.98,94.01c1.43-3.95,2.21-8.14,2.21-12.48,0-10.91-4.87-20.85-12.87-28.42\" />\n <path class=\"comimi-loading-stroke comimi-loading-mimi comimi-loading-mimi-left\" d=\"M55.79,43.81v-24.02c3.43-9.18,9.81-15.08,20.52-14.52,16.12.84,20.31,15.9,19.35,34.15-.25,4.75-.69,9.25-1.51,13.3\" />\n <path class=\"comimi-loading-stroke comimi-loading-mimi comimi-loading-mimi-right\" d=\"M55.79,43.62v-24.02c-3.25-9.2-9.34-15.11-19.78-14.56-16.53.87-21.21,15.95-20.25,34.2.26,4.91.67,9.56,1.51,13.72\" />\n <path fill=\"#fff\" d=\"M80.44,49.41H31.46c-12.97,6.71-21.6,18.57-21.6,32.1,0,5.8,1.59,11.3,4.43,16.21h83.34c2.83-4.92,4.43-10.41,4.43-16.21,0-13.53-8.63-25.4-21.6-32.1Z\" />\n <g class=\"comimi-loading-eyes\">\n <circle class=\"comimi-loading-eye\" cx=\"40.17\" cy=\"78.21\" r=\"6\" />\n <circle class=\"comimi-loading-eye\" cx=\"71.58\" cy=\"78.21\" r=\"6\" />\n </g>\n </g>\n</svg>\n", z = 3e3;
1073
+ function B(e) {
1070
1074
  let t = document.createElement("div");
1071
1075
  t.className = "comimi-loading-icon";
1072
1076
  let n = document.createElement("div");
1073
- n.className = "comimi-loading-icon-svg", n.innerHTML = L;
1077
+ n.className = "comimi-loading-icon-svg", n.innerHTML = R;
1074
1078
  let r = document.createElement("div");
1075
1079
  r.className = "comimi-loading-icon-text", r.append(document.createTextNode(e.t("loading")));
1076
1080
  for (let e = 0; e < 3; e += 1) {
@@ -1083,13 +1087,13 @@ function z(e) {
1083
1087
  window.clearInterval(i);
1084
1088
  return;
1085
1089
  }
1086
- n.innerHTML = L;
1087
- }, R);
1090
+ n.innerHTML = R;
1091
+ }, z);
1088
1092
  return t;
1089
1093
  }
1090
1094
  //#endregion
1091
1095
  //#region src/components/page-stage.ts
1092
- var B = class {
1096
+ var V = class {
1093
1097
  options;
1094
1098
  root;
1095
1099
  imageSources = /* @__PURE__ */ new Map();
@@ -1110,16 +1114,16 @@ var B = class {
1110
1114
  }) : this.root.style.transition = "";
1111
1115
  }
1112
1116
  update(e, t) {
1113
- let n = S(e, t), r = [];
1117
+ let n = C(e, t), r = [];
1114
1118
  for (let t of n) {
1115
1119
  let n = document.createElement("div");
1116
- n.className = "comimi-page-group", n.dataset.placement = t.placement, n.dataset.side = w(e, t.placement), n.style.transform = `translateX(${t.offset * 100}%)`;
1120
+ n.className = "comimi-page-group", n.dataset.placement = t.placement, n.dataset.side = T(e, t.placement), n.style.transform = `translateX(${t.offset * 100}%)`;
1117
1121
  let i = t.indexes.length > 1;
1118
1122
  for (let [r, a] of t.indexes.entries()) {
1119
1123
  let t = e.manga.pages[a];
1120
1124
  if (!t) continue;
1121
1125
  let o = this.getOrBuildSlot(e, t, a, i);
1122
- o.slot.dataset.spread = String(i), o.slot.dataset.position = i ? r === 0 ? "left" : "right" : "single", o.slot.dataset.pageIndex = String(a), o.img && (o.img.style.transform = V(e)), n.append(o.slot);
1126
+ o.slot.dataset.spread = String(i), o.slot.dataset.position = i ? r === 0 ? "left" : "right" : "single", o.slot.dataset.pageIndex = String(a), o.img && (o.img.style.transform = H(e)), n.append(o.slot);
1123
1127
  }
1124
1128
  r.push(n);
1125
1129
  }
@@ -1135,21 +1139,21 @@ var B = class {
1135
1139
  let i = document.createElement("div");
1136
1140
  if (i.className = "comimi-page", t.type === "html") {
1137
1141
  let n = document.createElement("div");
1138
- return n.className = "comimi-html-page", n.innerHTML = t.html, n.style.transform = V(e), i.append(n), {
1142
+ return n.className = "comimi-html-page", t.element ? n.append(t.element) : t.html != null && (n.innerHTML = t.html), n.style.transform = H(e), i.append(n), {
1139
1143
  slot: i,
1140
1144
  img: null
1141
1145
  };
1142
1146
  }
1143
1147
  let a = document.createElement("img");
1144
- a.alt = t.alt ?? t.label ?? `${n + 1}`, a.draggable = !1, a.style.transform = V(e), a.addEventListener("error", () => {
1145
- i.replaceChildren(I(this.options.i18n, n + 1));
1148
+ a.alt = t.alt ?? t.label ?? `${n + 1}`, a.draggable = !1, a.style.transform = H(e), a.addEventListener("error", () => {
1149
+ i.replaceChildren(L(this.options.i18n, n + 1));
1146
1150
  }), a.addEventListener("contextmenu", (e) => e.preventDefault()), i.append(a);
1147
1151
  let o = `${e.manga.id}:${t.id}`, s = this.imageSources.get(o);
1148
1152
  if (s) return a.src = s, {
1149
1153
  slot: i,
1150
1154
  img: a
1151
1155
  };
1152
- let c = z(this.options.i18n);
1156
+ let c = B(this.options.i18n);
1153
1157
  i.append(c), a.style.visibility = "hidden";
1154
1158
  let l = this.resolvePromises.get(o);
1155
1159
  if (!l) {
@@ -1169,19 +1173,19 @@ var B = class {
1169
1173
  a.style.visibility = "", c.remove();
1170
1174
  }, { once: !0 }), a.src = e;
1171
1175
  }).catch(() => {
1172
- c.remove(), i.replaceChildren(I(this.options.i18n, n + 1));
1176
+ c.remove(), i.replaceChildren(L(this.options.i18n, n + 1));
1173
1177
  }), {
1174
1178
  slot: i,
1175
1179
  img: a
1176
1180
  };
1177
1181
  }
1178
1182
  };
1179
- function V(e) {
1183
+ function H(e) {
1180
1184
  return `translate(${e.panX}px, ${e.panY}px) scale(${e.zoomScale})`;
1181
1185
  }
1182
1186
  //#endregion
1183
1187
  //#region src/components/notifications.ts
1184
- function H(e) {
1188
+ function U(e) {
1185
1189
  let t = document.createElement("div");
1186
1190
  t.className = "comimi-notifications";
1187
1191
  for (let n of e.notifications) {
@@ -1196,13 +1200,13 @@ function H(e) {
1196
1200
  }
1197
1201
  //#endregion
1198
1202
  //#region src/components/splash-screen.ts
1199
- var U = "http://www.w3.org/2000/svg";
1200
- function W(e, t) {
1203
+ var W = "http://www.w3.org/2000/svg";
1204
+ function G(e, t) {
1201
1205
  let n = document.createElement("div");
1202
1206
  n.className = "comimi-splash";
1203
1207
  let r = document.createElement("div");
1204
1208
  r.className = "comimi-splash-logo-wrap", t && r.classList.add("comimi-splash-logo-wrap-custom");
1205
- let i = G(t);
1209
+ let i = le(t);
1206
1210
  i && r.append(i);
1207
1211
  let a = document.createElement("div");
1208
1212
  a.className = "comimi-splash-text", a.append(document.createTextNode(e.t("splash.loading")));
@@ -1212,7 +1216,7 @@ function W(e, t) {
1212
1216
  }
1213
1217
  return r.append(a), n.append(r), n;
1214
1218
  }
1215
- function G(e) {
1219
+ function le(e) {
1216
1220
  if (e === !1) return null;
1217
1221
  if (e) {
1218
1222
  let t = document.createElement("div");
@@ -1224,25 +1228,25 @@ function G(e) {
1224
1228
  return t;
1225
1229
  }
1226
1230
  let t = document.createElement("div");
1227
- return t.className = "comimi-splash-logo", t.append(le(), ue()), t;
1231
+ return t.className = "comimi-splash-logo", t.append(ue(), de()), t;
1228
1232
  }
1229
- function le() {
1230
- let e = document.createElementNS(U, "svg");
1233
+ function ue() {
1234
+ let e = document.createElementNS(W, "svg");
1231
1235
  e.setAttribute("viewBox", "0 0 112.19 99.01"), e.setAttribute("class", "comimi-splash-symbol"), K(e, "M17.43,53.54c-7.74,7.51-12.43,17.29-12.43,27.99,0,4.34.78,8.53,2.21,12.48"), K(e, "M104.98,94.01c1.43-3.95,2.21-8.14,2.21-12.48,0-10.91-4.87-20.85-12.87-28.42"), K(e, "M55.79,43.81v-24.02c3.43-9.18,9.81-15.08,20.52-14.52,16.12.84,20.31,15.9,19.35,34.15-.25,4.75-.69,9.25-1.51,13.3", "comimi-splash-mimi comimi-splash-mimi-left"), K(e, "M55.79,43.62v-24.02c-3.25-9.2-9.34-15.11-19.78-14.56-16.53.87-21.21,15.95-20.25,34.2.26,4.91.67,9.56,1.51,13.72", "comimi-splash-mimi comimi-splash-mimi-right");
1232
- let t = document.createElementNS(U, "path");
1236
+ let t = document.createElementNS(W, "path");
1233
1237
  t.setAttribute("d", "M80.44,49.41H31.46c-12.97,6.71-21.6,18.57-21.6,32.1,0,5.8,1.59,11.3,4.43,16.21h83.34c2.83-4.92,4.43-10.41,4.43-16.21,0-13.53-8.63-25.4-21.6-32.1Z"), t.setAttribute("fill", "#e0e0e0"), e.append(t);
1234
- let n = document.createElementNS(U, "g");
1238
+ let n = document.createElementNS(W, "g");
1235
1239
  n.setAttribute("class", "comimi-splash-eyes");
1236
1240
  for (let e of ["40.17", "71.58"]) {
1237
- let t = document.createElementNS(U, "circle");
1241
+ let t = document.createElementNS(W, "circle");
1238
1242
  t.setAttribute("class", "comimi-splash-eye"), t.setAttribute("cx", e), t.setAttribute("cy", "78.21"), t.setAttribute("r", "6"), t.setAttribute("fill", "#fff"), n.append(t);
1239
1243
  }
1240
1244
  return e.append(n), e;
1241
1245
  }
1242
- function ue() {
1246
+ function de() {
1243
1247
  let e = document.createElement("div");
1244
1248
  e.className = "comimi-splash-typo-wrap";
1245
- let t = document.createElementNS(U, "svg");
1249
+ let t = document.createElementNS(W, "svg");
1246
1250
  t.setAttribute("viewBox", "0 0 227.74 38.52"), t.setAttribute("class", "comimi-splash-typo");
1247
1251
  for (let e of [
1248
1252
  "M12.53,14.42c-3.15,3.27-3.15,8.45,0,11.6,1.58,1.58,3.6,2.36,5.74,2.36,2.25,0,4.28-.79,5.86-2.36,1.91-1.91,5.18-1.91,7.21,0,1.91,2.03,1.91,5.18,0,7.21-3.49,3.49-8.11,5.29-13.07,5.29s-9.46-1.8-12.95-5.29C-1.77,26.02-1.77,14.42,5.32,7.32,12.53.11,24.13.11,31.34,7.32c1.91,1.91,1.91,5.18,0,7.1-2.03,2.03-5.29,2.03-7.21,0-3.15-3.15-8.45-3.15-11.6,0Z",
@@ -1252,7 +1256,7 @@ function ue() {
1252
1256
  "M208.61,15.88v17.57c0,2.82-2.25,5.07-5.07,5.07s-5.07-2.25-5.07-5.07V15.88c0-2.36-2.03-4.39-4.51-4.39-1.13,0-2.25.45-3.15,1.24-.79.9-1.24,2.03-1.24,3.15v14.57c0,2.82-2.25,5.07-5.07,5.07s-5.07-2.25-5.07-5.07v-14.57c0-2.36-2.03-4.39-4.5-4.39s-4.39,1.92-4.39,4.39v17.68c0,2.7-2.25,4.96-5.07,4.96s-5.07-2.25-5.07-5.07V15.88c0-8,6.53-14.53,14.53-14.53,3.72,0,6.98,1.35,9.57,3.49,2.59-2.25,5.97-3.49,9.46-3.49,8.11,0,14.64,6.53,14.64,14.53Z",
1253
1257
  "M227.74,5.07v28.38c0,2.82-2.25,5.07-5.07,5.07s-5.07-2.25-5.07-5.07V5.07c0-2.7,2.25-5.07,5.07-5.07s5.07,2.36,5.07,5.07Z"
1254
1258
  ]) {
1255
- let n = document.createElementNS(U, "path");
1259
+ let n = document.createElementNS(W, "path");
1256
1260
  n.setAttribute("d", e), n.setAttribute("fill", "#fff"), t.append(n);
1257
1261
  }
1258
1262
  e.append(t);
@@ -1262,44 +1266,44 @@ function ue() {
1262
1266
  return r.className = "comimi-splash-heart comimi-splash-heart-2", e.append(n, r), e;
1263
1267
  }
1264
1268
  function K(e, t, n) {
1265
- let r = document.createElementNS(U, "path");
1269
+ let r = document.createElementNS(W, "path");
1266
1270
  r.setAttribute("d", t), r.setAttribute("class", `comimi-splash-stroke ${n ?? ""}`.trim()), e.append(r);
1267
1271
  }
1268
1272
  //#endregion
1269
1273
  //#region src/components/viewer-root.ts
1270
- function de({ className: e } = {}) {
1274
+ function fe({ className: e } = {}) {
1271
1275
  let t = document.createElement("div");
1272
1276
  return t.className = e ? `comimi-root ${e}` : "comimi-root", t.tabIndex = 0, t.setAttribute("role", "region"), t.setAttribute("aria-label", "Manga viewer"), t;
1273
1277
  }
1274
1278
  //#endregion
1275
1279
  //#region src/components/arrow-buttons.styles.ts
1276
- var fe = "\n.comimi-arrows {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 30;\n}\n\n.comimi-arrow-button {\n position: absolute;\n top: 50%;\n width: 46px;\n height: 46px;\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n pointer-events: auto;\n transform: translateY(-50%);\n}\n\n.comimi-arrow-next {\n right: 24px;\n}\n\n.comimi-arrow-prev {\n left: 24px;\n}\n\n.comimi-arrow-inner {\n position: absolute;\n inset: 0;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-arrows[data-overlay=\"false\"] .comimi-arrow-next .comimi-arrow-inner,\n.comimi-arrows[data-autoplay=\"true\"] .comimi-arrow-next .comimi-arrow-inner {\n transform: translateX(35px);\n opacity: 0;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-arrows[data-overlay=\"false\"] .comimi-arrow-prev .comimi-arrow-inner,\n.comimi-arrows[data-autoplay=\"true\"] .comimi-arrow-prev .comimi-arrow-inner {\n transform: translateX(-35px);\n opacity: 0;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-arrows[data-overlay=\"false\"],\n.comimi-arrows[data-autoplay=\"true\"] {\n pointer-events: none;\n}\n\n.comimi-arrow-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), border-radius 0.36s var(--comimi-spring);\n}\n\n.comimi-arrow-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 20px;\n height: 20px;\n color: #666;\n transform: translate(-50%, -50%);\n pointer-events: none;\n}\n\n.comimi-arrow-prev .comimi-arrow-icon {\n transform: translate(-50%, -50%) scaleX(-1);\n}\n\n@keyframes comimi-arrow-bounce {\n from, to {\n transform: translate(-50%, -50%);\n }\n 40% {\n transform: translate(calc(-50% + 3px), -50%);\n }\n 70% {\n transform: translate(calc(-50% - 1.5px), -50%);\n }\n}\n\n@keyframes comimi-arrow-bounce-prev {\n from, to {\n transform: translate(-50%, -50%) scaleX(-1);\n }\n 40% {\n transform: translate(calc(-50% - 3px), -50%) scaleX(-1);\n }\n 70% {\n transform: translate(calc(-50% + 1.5px), -50%) scaleX(-1);\n }\n}\n\n@media (hover: hover) {\n .comimi-arrow-button:hover .comimi-arrow-bg {\n inset: -3px;\n border-radius: 20px;\n }\n\n .comimi-arrow-next:hover .comimi-arrow-icon {\n animation: comimi-arrow-bounce 0.5s ease-in-out 0.1s both;\n }\n\n .comimi-arrow-prev:hover .comimi-arrow-icon {\n animation: comimi-arrow-bounce-prev 0.5s ease-in-out 0.1s both;\n }\n}\n\n@media (max-width: 767px) {\n .comimi-arrow-button {\n width: 36px;\n height: 50px;\n }\n\n .comimi-arrow-next {\n right: 0;\n }\n\n .comimi-arrow-prev {\n left: 0;\n }\n\n .comimi-arrow-next .comimi-arrow-bg {\n border-radius: 16px 0 0 16px;\n }\n\n .comimi-arrow-prev .comimi-arrow-bg {\n border-radius: 0 16px 16px 0;\n }\n}\n", pe = "\n.comimi-center-message {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n z-index: 20;\n transition: opacity 0.3s linear;\n}\n\n.comimi-center-message[data-overlay=\"false\"] {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.comimi-center-message-text {\n box-sizing: border-box;\n padding: 6px 12px;\n border-radius: 8px;\n background: rgba(255, 255, 255, 0.5);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n color: #bbb;\n font-size: 12px;\n font-weight: 400;\n line-height: 1.45;\n text-align: center;\n white-space: nowrap;\n}\n\n.comimi-center-message-mobile {\n display: none;\n}\n\n@media (max-width: 767px) {\n .comimi-center-message {\n width: calc(100% - 60px * 2);\n max-width: max-content;\n }\n\n .comimi-center-message-desktop {\n display: none;\n }\n\n .comimi-center-message-mobile {\n display: block;\n }\n}\n", me = "\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/* --- Autoplay progress shown outside the dock (overlay closed) -------- */\n\n.comimi-autoplay-overlay-progress {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 3px;\n z-index: 50;\n pointer-events: none;\n overflow: hidden;\n background: rgba(0, 0, 0, 0.06);\n opacity: 0;\n transition: opacity 0.16s linear;\n}\n\n.comimi-autoplay-overlay-progress[data-visible=\"true\"] {\n opacity: 1;\n}\n\n.comimi-autoplay-overlay-progress-bar {\n display: block;\n position: absolute;\n inset: 0;\n background: #666;\n animation: comimi-autoplay-progress 3s linear 0s infinite;\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", he = "\n.comimi-error-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: grid;\n gap: 10px;\n justify-items: center;\n width: 80px;\n}\n\n.comimi-error-icon-svg {\n width: 80px;\n}\n\n.comimi-error-svg {\n display: block;\n width: 100%;\n transform-origin: center bottom;\n animation: comimi-error-fall 0.8s ease-in-out 0s both;\n}\n\n.comimi-error-stroke {\n fill: none;\n stroke: #ccc;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 10px;\n}\n\n.comimi-error-mimi {\n transform-origin: 56px 43px;\n}\n\n.comimi-error-mimi-left {\n animation:\n comimi-error-mimi-left-intro 0.8s ease-in-out 0s both,\n comimi-error-mimi-left-loop 1.5s ease-in-out 0.8s infinite forwards;\n}\n\n.comimi-error-mimi-right {\n animation:\n comimi-error-mimi-right-intro 0.8s ease-in-out 0s both,\n comimi-error-mimi-right-loop 1.5s ease-in-out 0.8s infinite forwards;\n}\n\n.comimi-error-eye {\n fill: #ccc;\n transform-origin: center;\n transform-box: fill-box;\n animation: comimi-error-eye 1.5s ease-in-out 0.8s infinite forwards;\n}\n\n.comimi-error-icon-text {\n color: #aaa;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n text-align: center;\n}\n\n@keyframes comimi-error-fall {\n from {\n opacity: 0;\n transform: translateY(-40%) rotate(10deg);\n }\n 20% {\n opacity: 1;\n }\n 40% {\n transform: translateY(0) rotate(0);\n }\n 60% {\n transform: translateY(0) scale(1.1, 0.95);\n }\n 80% {\n transform: translateY(0) scale(0.95, 1.1);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes comimi-error-mimi-left-intro {\n from {\n transform: rotate(0deg);\n }\n 60% {\n transform: rotate(20deg);\n }\n to {\n transform: rotate(10deg);\n }\n}\n\n@keyframes comimi-error-mimi-left-loop {\n from, to {\n transform: rotate(10deg);\n }\n 50% {\n transform: rotate(30deg);\n }\n}\n\n@keyframes comimi-error-mimi-right-intro {\n from {\n transform: rotate(0deg);\n }\n 60% {\n transform: rotate(-20deg);\n }\n to {\n transform: rotate(-10deg);\n }\n}\n\n@keyframes comimi-error-mimi-right-loop {\n from, to {\n transform: rotate(-10deg);\n }\n 50% {\n transform: rotate(-30deg);\n }\n}\n\n@keyframes comimi-error-eye {\n from, to {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(4px);\n }\n}\n", ge = "\n.comimi-icon {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.comimi-icon-fill {\n fill: currentColor;\n transition: fill .2s linear;\n}\n\n.comimi-icon-stroke {\n fill: none;\n stroke: currentColor;\n stroke-width: 1.6;\n transition: stroke .2s linear;\n}\n\n.comimi-menu-svg,\n.comimi-close-svg {\n display: block;\n position: relative;\n width: 34px;\n height: 34px;\n}\n\n.comimi-menu-svg span,\n.comimi-close-svg span {\n position: absolute;\n left: 50%;\n width: 17px;\n height: 3px;\n border-radius: 999px;\n background: #666;\n}\n\n.comimi-menu-svg span:nth-child(1) {\n top: 9px;\n transform: translateX(-50%);\n}\n\n.comimi-menu-svg span:nth-child(2) {\n top: 50%;\n transform: translate(-50%, -50%);\n}\n\n.comimi-menu-svg span:nth-child(3) {\n bottom: 9px;\n transform: translateX(-50%);\n}\n\n.comimi-close-svg span {\n top: 50%;\n}\n\n.comimi-close-svg span:nth-child(1) {\n transform: translate(-50%, -50%) rotate(45deg);\n}\n\n.comimi-close-svg span:nth-child(2) {\n transform: translate(-50%, -50%) rotate(-45deg);\n}\n", _e = "\n.comimi-selectbox {\n position: relative;\n display: inline-block;\n width: 100%;\n}\n\n.comimi-selectbox-bg {\n position: absolute;\n inset: 0;\n border-radius: 8px;\n background: #eeeeee;\n transition: inset 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-selectbox:hover .comimi-selectbox-bg {\n inset: -3px;\n }\n}\n\n.comimi-selectbox-select {\n position: absolute;\n inset: 0;\n z-index: 2;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n appearance: none;\n -webkit-appearance: none;\n color: transparent;\n font: inherit;\n cursor: pointer;\n opacity: 0;\n}\n\n.comimi-selectbox-select:disabled {\n cursor: not-allowed;\n}\n\n.comimi-selectbox-select option {\n color: #333;\n background-color: #fff;\n}\n\n.comimi-selectbox-label {\n position: relative;\n display: block;\n box-sizing: border-box;\n width: 100%;\n padding: 8px 32px 8px 12px;\n color: #333;\n font-size: 12px;\n font-weight: 400;\n line-height: 1.45;\n cursor: pointer;\n pointer-events: none;\n}\n\n.comimi-selectbox-arrow {\n position: absolute;\n top: 50%;\n right: 12px;\n z-index: 1;\n width: 16px;\n height: 16px;\n color: #aaa;\n transform: translateY(-50%) rotate(90deg);\n pointer-events: none;\n}\n\n@media (hover: hover) {\n .comimi-selectbox:hover .comimi-selectbox-arrow {\n animation: comimi-selectbox-arrow 0.5s ease-in-out 0s both;\n }\n}\n\n@keyframes comimi-selectbox-arrow {\n from, to {\n transform: translateY(-50%) rotate(90deg);\n }\n 40% {\n transform: translateY(calc(-50% + 3px)) rotate(90deg);\n }\n 70% {\n transform: translateY(calc(-50% - 1.5px)) rotate(90deg);\n }\n}\n\n.comimi-toggle-switch {\n display: grid;\n grid-template-columns: repeat(2, auto);\n column-gap: 6px;\n justify-content: start;\n align-items: center;\n width: 100%;\n padding: 2px;\n border: 0;\n background: transparent;\n cursor: pointer;\n}\n\n.comimi-toggle-track {\n position: relative;\n width: 32px;\n height: 18px;\n border-radius: 999px;\n background: #eeeeee;\n transition: background-color 0.2s linear;\n}\n\n.comimi-toggle-switch[data-checked=\"true\"] .comimi-toggle-track {\n background: #666;\n}\n\n.comimi-toggle-knob {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background: #666;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s linear;\n}\n\n.comimi-toggle-switch[data-checked=\"true\"] .comimi-toggle-knob {\n background: #fff;\n transform: translateX(100%);\n}\n\n.comimi-toggle-label-wrap {\n position: relative;\n width: 22px;\n height: 12px;\n overflow: hidden;\n}\n\n.comimi-toggle-label-inner {\n position: absolute;\n inset: 0;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-toggle-switch[data-checked=\"false\"] .comimi-toggle-label-inner {\n transform: translateX(-100%);\n}\n\n.comimi-toggle-label {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n font-size: 11px;\n font-weight: 400;\n line-height: 12px;\n text-align: center;\n}\n\n.comimi-toggle-label-on {\n color: #333;\n}\n\n.comimi-toggle-label-off {\n color: #aaa;\n transform: translateX(100%);\n}\n\n.comimi-range-slider {\n display: grid;\n grid-template-columns: 1fr auto;\n column-gap: 8px;\n align-items: center;\n width: 100%;\n}\n\n.comimi-range-slider[data-disabled=\"true\"] {\n opacity: 0.6;\n}\n\n.comimi-range-slider-wrap {\n position: relative;\n display: grid;\n align-items: center;\n min-width: 0;\n height: 18px;\n}\n\n.comimi-range-slider-track {\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 6px;\n border-radius: 999px;\n background: #eeeeee;\n overflow: hidden;\n transform: translateY(-50%);\n transition: height 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-range-slider-wrap:hover .comimi-range-slider-track {\n height: 10px;\n }\n}\n\n.comimi-range-slider-fill {\n display: block;\n height: 100%;\n background: #666;\n border-radius: inherit;\n}\n\n.comimi-range-slider-input {\n position: relative;\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-range-slider-input::-webkit-slider-runnable-track {\n height: 6px;\n background: transparent;\n border: 0;\n}\n\n.comimi-range-slider-input::-webkit-slider-thumb {\n appearance: none;\n -webkit-appearance: none;\n width: 18px;\n height: 18px;\n margin-top: -6px;\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-range-slider-input:hover:not(:disabled)::-webkit-slider-thumb {\n transform: scale(1.15);\n}\n\n.comimi-range-slider-input::-moz-range-track {\n height: 6px;\n background: transparent;\n border: 0;\n}\n\n.comimi-range-slider-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-range-slider-input:hover:not(:disabled)::-moz-range-thumb {\n transform: scale(1.15);\n}\n\n.comimi-range-slider-input:focus-visible {\n outline: none;\n}\n\n.comimi-range-slider-input:focus-visible::-webkit-slider-thumb {\n box-shadow: none;\n}\n\n.comimi-range-slider-input:focus-visible::-moz-range-thumb {\n box-shadow: none;\n}\n\n.comimi-range-slider-value {\n width: 36px;\n color: #666;\n font-size: 11px;\n font-weight: 400;\n line-height: 1;\n text-align: right;\n white-space: nowrap;\n}\n", ve = "\n.comimi-loading-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: grid;\n gap: 10px;\n justify-items: center;\n width: 80px;\n}\n\n.comimi-loading-icon-svg {\n width: 80px;\n}\n\n.comimi-loading-svg {\n display: block;\n width: 100%;\n transform-origin: center bottom;\n}\n\n.comimi-loading-stroke {\n fill: none;\n stroke: #ccc;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 10px;\n}\n\n.comimi-loading-mimi {\n transform-origin: 56px 43px;\n}\n\n.comimi-loading-mimi-left {\n animation:\n comimi-loading-mimi-left 0.4s ease-in-out 0.1s 2 forwards,\n comimi-loading-mimi-left 0.4s ease-in-out 1.7s 2 forwards;\n}\n\n.comimi-loading-mimi-right {\n animation:\n comimi-loading-mimi-right 0.4s ease-in-out 0.1s 2 forwards,\n comimi-loading-mimi-right 0.4s ease-in-out 1.7s 2 forwards;\n}\n\n.comimi-loading-eyes {\n transform: translateX(-7px);\n animation:\n comimi-loading-eyes-move 0.4s ease-in-out 1.2s both,\n comimi-loading-eyes-move 0.4s ease-in-out 2.6s reverse forwards;\n}\n\n.comimi-loading-eye {\n fill: #ccc;\n transform-origin: center;\n transform-box: fill-box;\n animation:\n comimi-loading-eye 0.4s ease-in-out 0s forwards,\n comimi-loading-eye 0.4s ease-in-out 1.6s forwards;\n}\n\n.comimi-loading-icon-text {\n color: #aaa;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n text-align: center;\n}\n\n.comimi-loading-icon-text span {\n display: inline-block;\n animation: comimi-loading-dot 0.8s ease-in-out 0s infinite both;\n}\n\n.comimi-loading-icon-text span:nth-child(1) {\n animation-delay: 0s;\n}\n\n.comimi-loading-icon-text span:nth-child(2) {\n animation-delay: 0.15s;\n}\n\n.comimi-loading-icon-text span:nth-child(3) {\n animation-delay: 0.3s;\n}\n\n@keyframes comimi-loading-mimi-left {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(20deg);\n }\n}\n\n@keyframes comimi-loading-mimi-right {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(-20deg);\n }\n}\n\n@keyframes comimi-loading-eyes-move {\n from {\n transform: translateX(-7px);\n }\n to {\n transform: translateX(7px);\n }\n}\n\n@keyframes comimi-loading-eye {\n from, to {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(0.2);\n }\n}\n\n@keyframes comimi-loading-dot {\n from, 50%, to {\n opacity: 1;\n }\n 25% {\n opacity: 0;\n }\n}\n", ye = "\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", be = "\n.comimi-notifications {\n position: absolute;\n bottom: 140px;\n left: 50%;\n transform: translateX(-50%);\n display: grid;\n row-gap: 8px;\n justify-items: center;\n pointer-events: none;\n z-index: 35;\n}\n\n.comimi-toast {\n display: grid;\n grid-template-columns: auto auto;\n gap: 5px;\n align-items: center;\n justify-content: center;\n width: fit-content;\n padding: 6px 13px 6px 8px;\n border-radius: 999px;\n background-color: #666;\n animation: comimi-toast-popup 0.37s ease-in-out 0s both;\n}\n\n.comimi-toast-dot {\n display: block;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: #888;\n}\n\n.comimi-toast-text {\n color: #fff;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n}\n\n@keyframes comimi-toast-popup {\n from {\n transform: translateY(6px) scale(0.2, 0.8);\n opacity: 0;\n }\n 60% {\n transform: translateY(-1px) scale(1.1, 1.05);\n opacity: 1;\n }\n to {\n transform: scale(1, 1);\n opacity: 1;\n }\n}\n\n@media (max-width: 767px) {\n .comimi-notifications {\n bottom: calc(120px + env(safe-area-inset-bottom, 0px));\n }\n}\n", xe = "\n.comimi-stage {\n position: absolute;\n inset: 0;\n will-change: transform;\n transition: transform .18s ease;\n}\n\n.comimi-stage[data-dragging=\"true\"] {\n transition: none;\n}\n\n.comimi-page-group {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n box-sizing: border-box;\n}\n\n.comimi-page {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n min-width: 0;\n min-height: 0;\n background: transparent;\n overflow: hidden;\n flex: 0 0 auto;\n}\n\n.comimi-page[data-spread=\"true\"] {\n width: 50%;\n height: 100%;\n}\n\n.comimi-page[data-spread=\"false\"] {\n width: 100%;\n height: 100%;\n}\n\n.comimi-page[data-position=\"left\"] {\n justify-content: flex-end;\n}\n\n.comimi-page[data-position=\"right\"] {\n justify-content: flex-start;\n}\n\n.comimi-page img,\n.comimi-html-page {\n display: block;\n max-width: 100%;\n max-height: 100%;\n width: 100%;\n height: 100%;\n object-fit: contain;\n transform-origin: center center;\n user-select: none;\n -webkit-user-select: none;\n -webkit-user-drag: none;\n -webkit-touch-callout: none;\n}\n\n.comimi-page img {\n pointer-events: none;\n}\n\n.comimi-page[data-spread=\"true\"] img,\n.comimi-page[data-spread=\"true\"] .comimi-html-page {\n width: 100%;\n height: 100%;\n}\n\n.comimi-page[data-position=\"left\"] img,\n.comimi-page[data-position=\"left\"] .comimi-html-page {\n object-position: right center;\n}\n\n.comimi-page[data-position=\"right\"] img,\n.comimi-page[data-position=\"right\"] .comimi-html-page {\n object-position: left center;\n}\n\n.comimi-html-page {\n width: min(100%, 960px);\n height: min(100%, 680px);\n background: #fff;\n color: #111;\n overflow: auto;\n}\n\n", Se = "\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", Ce = "\n.comimi-scrollfade {\n position: relative;\n overscroll-behavior: contain;\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, #fff, transparent);\n}\n\n.comimi-scrollfade::after {\n bottom: 0;\n background: linear-gradient(to top, #fff, 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", we = "\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", Te = "\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", Ee = "\n.comimi-tooltip {\n position: absolute;\n bottom: 0;\n left: 50%;\n padding: 6px 10px;\n border-radius: 8px;\n background: rgba(255, 255, 255, 0.5);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n color: #333;\n font-size: 12px;\n font-weight: 600;\n line-height: 1.45;\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n opacity: 0;\n transform: translate(-50%, calc(100% + 6px)) scale(0.88);\n transform-origin: center top;\n transition:\n opacity 0.1s ease-in-out,\n transform 0.16s ease-in-out;\n z-index: 5;\n}\n\n@media (hover: hover) {\n .comimi-has-tooltip:hover > .comimi-tooltip {\n opacity: 1;\n transform: translate(-50%, calc(100% + 6px)) scale(1);\n }\n}\n", De = "\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", Oe = "\n.comimi-view-switcher {\n position: absolute;\n top: 20px;\n right: 20px;\n display: grid;\n grid-template-columns: repeat(3, 60px);\n width: 180px;\n border-radius: 16px;\n background: var(--comimi-glass);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n pointer-events: auto;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-view-switcher[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@media (hover: hover) {\n .comimi-view-switcher:hover {\n transform: scaleX(1.03);\n }\n}\n\n.comimi-view-switcher-indicator {\n position: absolute;\n top: 0;\n left: 0;\n width: 60px;\n height: 100%;\n border-radius: 16px;\n background: #666;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-view-switcher-button {\n position: relative;\n display: grid;\n row-gap: 5px;\n justify-items: center;\n align-content: center;\n height: 58px;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n transition: color 0.2s linear;\n}\n\n.comimi-view-switcher-button[data-selected=\"true\"] {\n color: #fff;\n}\n\n.comimi-view-switcher-icon-wrap {\n width: 20px;\n height: 20px;\n transform-origin: center bottom;\n}\n\n.comimi-view-switcher-icon {\n display: block;\n width: 100%;\n height: 100%;\n color: currentColor;\n}\n\n.comimi-view-switcher-icon-wrap.comimi-pop-animate {\n animation: comimi-pop 0.5s ease-in-out 0.1s both;\n}\n\n.comimi-view-switcher-label {\n color: currentColor;\n font-size: 10px;\n font-weight: 500;\n text-align: center;\n transition: color 0.2s linear;\n}\n\n@media (max-width: 767px) {\n .comimi-view-switcher {\n top: 70px;\n right: auto;\n left: calc(50% - 90px);\n }\n}\n", q = !1, ke = [
1280
+ var pe = "\n.comimi-arrows {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 30;\n}\n\n.comimi-arrow-button {\n position: absolute;\n top: 50%;\n width: 46px;\n height: 46px;\n padding: 0;\n border: 0;\n background: transparent;\n cursor: pointer;\n pointer-events: auto;\n transform: translateY(-50%);\n}\n\n.comimi-arrow-next {\n right: 24px;\n}\n\n.comimi-arrow-prev {\n left: 24px;\n}\n\n.comimi-arrow-inner {\n position: absolute;\n inset: 0;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-arrows[data-overlay=\"false\"] .comimi-arrow-next .comimi-arrow-inner,\n.comimi-arrows[data-autoplay=\"true\"] .comimi-arrow-next .comimi-arrow-inner {\n transform: translateX(35px);\n opacity: 0;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-arrows[data-overlay=\"false\"] .comimi-arrow-prev .comimi-arrow-inner,\n.comimi-arrows[data-autoplay=\"true\"] .comimi-arrow-prev .comimi-arrow-inner {\n transform: translateX(-35px);\n opacity: 0;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-arrows[data-overlay=\"false\"],\n.comimi-arrows[data-autoplay=\"true\"] {\n pointer-events: none;\n}\n\n.comimi-arrow-button[data-disabled=\"true\"] {\n pointer-events: none;\n}\n\n.comimi-arrow-next[data-disabled=\"true\"] .comimi-arrow-inner {\n transform: translateX(35px);\n opacity: 0;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-arrow-prev[data-disabled=\"true\"] .comimi-arrow-inner {\n transform: translateX(-35px);\n opacity: 0;\n transition:\n transform 0.3s var(--comimi-spring),\n opacity 0.15s linear;\n}\n\n.comimi-arrow-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), border-radius 0.36s var(--comimi-spring);\n}\n\n.comimi-arrow-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 20px;\n height: 20px;\n color: #666;\n transform: translate(-50%, -50%);\n pointer-events: none;\n}\n\n.comimi-arrow-prev .comimi-arrow-icon {\n transform: translate(-50%, -50%) scaleX(-1);\n}\n\n@keyframes comimi-arrow-bounce {\n from, to {\n transform: translate(-50%, -50%);\n }\n 40% {\n transform: translate(calc(-50% + 3px), -50%);\n }\n 70% {\n transform: translate(calc(-50% - 1.5px), -50%);\n }\n}\n\n@keyframes comimi-arrow-bounce-prev {\n from, to {\n transform: translate(-50%, -50%) scaleX(-1);\n }\n 40% {\n transform: translate(calc(-50% - 3px), -50%) scaleX(-1);\n }\n 70% {\n transform: translate(calc(-50% + 1.5px), -50%) scaleX(-1);\n }\n}\n\n@media (hover: hover) {\n .comimi-arrow-button:hover .comimi-arrow-bg {\n inset: -3px;\n border-radius: 20px;\n }\n\n .comimi-arrow-next:hover .comimi-arrow-icon {\n animation: comimi-arrow-bounce 0.5s ease-in-out 0.1s both;\n }\n\n .comimi-arrow-prev:hover .comimi-arrow-icon {\n animation: comimi-arrow-bounce-prev 0.5s ease-in-out 0.1s both;\n }\n}\n\n@media (max-width: 767px) {\n .comimi-arrow-button {\n width: 36px;\n height: 50px;\n }\n\n .comimi-arrow-next {\n right: 0;\n }\n\n .comimi-arrow-prev {\n left: 0;\n }\n\n .comimi-arrow-next .comimi-arrow-bg {\n border-radius: 16px 0 0 16px;\n }\n\n .comimi-arrow-prev .comimi-arrow-bg {\n border-radius: 0 16px 16px 0;\n }\n}\n", me = "\n.comimi-center-message {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n z-index: 20;\n transition: opacity 0.3s linear;\n}\n\n.comimi-center-message[data-overlay=\"false\"] {\n opacity: 0;\n transition: opacity 0.15s linear;\n}\n\n.comimi-center-message-text {\n box-sizing: border-box;\n padding: 6px 12px;\n border-radius: 8px;\n background: rgba(255, 255, 255, 0.5);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n color: #999;\n font-size: 12px;\n font-weight: 400;\n line-height: 1.45;\n text-align: center;\n white-space: nowrap;\n}\n\n.comimi-center-message-mobile {\n display: none;\n}\n\n@media (max-width: 767px) {\n .comimi-center-message {\n width: calc(100% - 60px * 2);\n max-width: max-content;\n }\n\n .comimi-center-message-desktop {\n display: none;\n }\n\n .comimi-center-message-mobile {\n display: block;\n }\n}\n", he = "\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/* --- Autoplay progress shown outside the dock (overlay closed) -------- */\n\n.comimi-autoplay-overlay-progress {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 3px;\n z-index: 50;\n pointer-events: none;\n overflow: hidden;\n background: rgba(0, 0, 0, 0.06);\n opacity: 0;\n transition: opacity 0.16s linear;\n}\n\n.comimi-autoplay-overlay-progress[data-visible=\"true\"] {\n opacity: 1;\n}\n\n.comimi-autoplay-overlay-progress-bar {\n display: block;\n position: absolute;\n inset: 0;\n background: #666;\n animation: comimi-autoplay-progress 3s linear 0s infinite;\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", ge = "\n.comimi-error-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: grid;\n gap: 10px;\n justify-items: center;\n width: 80px;\n}\n\n.comimi-error-icon-svg {\n width: 80px;\n}\n\n.comimi-error-svg {\n display: block;\n width: 100%;\n transform-origin: center bottom;\n animation: comimi-error-fall 0.8s ease-in-out 0s both;\n}\n\n.comimi-error-stroke {\n fill: none;\n stroke: #ccc;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 10px;\n}\n\n.comimi-error-mimi {\n transform-origin: 56px 43px;\n}\n\n.comimi-error-mimi-left {\n animation:\n comimi-error-mimi-left-intro 0.8s ease-in-out 0s both,\n comimi-error-mimi-left-loop 1.5s ease-in-out 0.8s infinite forwards;\n}\n\n.comimi-error-mimi-right {\n animation:\n comimi-error-mimi-right-intro 0.8s ease-in-out 0s both,\n comimi-error-mimi-right-loop 1.5s ease-in-out 0.8s infinite forwards;\n}\n\n.comimi-error-eye {\n fill: #ccc;\n transform-origin: center;\n transform-box: fill-box;\n animation: comimi-error-eye 1.5s ease-in-out 0.8s infinite forwards;\n}\n\n.comimi-error-icon-text {\n color: #aaa;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n text-align: center;\n}\n\n@keyframes comimi-error-fall {\n from {\n opacity: 0;\n transform: translateY(-40%) rotate(10deg);\n }\n 20% {\n opacity: 1;\n }\n 40% {\n transform: translateY(0) rotate(0);\n }\n 60% {\n transform: translateY(0) scale(1.1, 0.95);\n }\n 80% {\n transform: translateY(0) scale(0.95, 1.1);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes comimi-error-mimi-left-intro {\n from {\n transform: rotate(0deg);\n }\n 60% {\n transform: rotate(20deg);\n }\n to {\n transform: rotate(10deg);\n }\n}\n\n@keyframes comimi-error-mimi-left-loop {\n from, to {\n transform: rotate(10deg);\n }\n 50% {\n transform: rotate(30deg);\n }\n}\n\n@keyframes comimi-error-mimi-right-intro {\n from {\n transform: rotate(0deg);\n }\n 60% {\n transform: rotate(-20deg);\n }\n to {\n transform: rotate(-10deg);\n }\n}\n\n@keyframes comimi-error-mimi-right-loop {\n from, to {\n transform: rotate(-10deg);\n }\n 50% {\n transform: rotate(-30deg);\n }\n}\n\n@keyframes comimi-error-eye {\n from, to {\n transform: translateY(0);\n }\n 50% {\n transform: translateY(4px);\n }\n}\n", _e = "\n.comimi-icon {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.comimi-icon-fill {\n fill: currentColor;\n transition: fill .2s linear;\n}\n\n.comimi-icon-stroke {\n fill: none;\n stroke: currentColor;\n stroke-width: 1.6;\n transition: stroke .2s linear;\n}\n\n.comimi-menu-svg,\n.comimi-close-svg {\n display: block;\n position: relative;\n width: 34px;\n height: 34px;\n}\n\n.comimi-menu-svg span,\n.comimi-close-svg span {\n position: absolute;\n left: 50%;\n width: 17px;\n height: 3px;\n border-radius: 999px;\n background: #666;\n}\n\n.comimi-menu-svg span:nth-child(1) {\n top: 9px;\n transform: translateX(-50%);\n}\n\n.comimi-menu-svg span:nth-child(2) {\n top: 50%;\n transform: translate(-50%, -50%);\n}\n\n.comimi-menu-svg span:nth-child(3) {\n bottom: 9px;\n transform: translateX(-50%);\n}\n\n.comimi-close-svg span {\n top: 50%;\n}\n\n.comimi-close-svg span:nth-child(1) {\n transform: translate(-50%, -50%) rotate(45deg);\n}\n\n.comimi-close-svg span:nth-child(2) {\n transform: translate(-50%, -50%) rotate(-45deg);\n}\n", ve = "\n.comimi-selectbox {\n position: relative;\n display: inline-block;\n width: 100%;\n}\n\n.comimi-selectbox-bg {\n position: absolute;\n inset: 0;\n border-radius: 8px;\n background: #eeeeee;\n transition: inset 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-selectbox:hover .comimi-selectbox-bg {\n inset: -3px;\n }\n}\n\n.comimi-selectbox-select {\n position: absolute;\n inset: 0;\n z-index: 2;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n appearance: none;\n -webkit-appearance: none;\n color: transparent;\n font: inherit;\n cursor: pointer;\n opacity: 0;\n}\n\n.comimi-selectbox-select:disabled {\n cursor: not-allowed;\n}\n\n.comimi-selectbox-select option {\n color: #333;\n background-color: #fff;\n}\n\n.comimi-selectbox-label {\n position: relative;\n display: block;\n box-sizing: border-box;\n width: 100%;\n padding: 8px 32px 8px 12px;\n color: #333;\n font-size: 12px;\n font-weight: 400;\n line-height: 1.45;\n cursor: pointer;\n pointer-events: none;\n}\n\n.comimi-selectbox-arrow {\n position: absolute;\n top: 50%;\n right: 12px;\n z-index: 1;\n width: 16px;\n height: 16px;\n color: #aaa;\n transform: translateY(-50%) rotate(90deg);\n pointer-events: none;\n}\n\n@media (hover: hover) {\n .comimi-selectbox:hover .comimi-selectbox-arrow {\n animation: comimi-selectbox-arrow 0.5s ease-in-out 0s both;\n }\n}\n\n@keyframes comimi-selectbox-arrow {\n from, to {\n transform: translateY(-50%) rotate(90deg);\n }\n 40% {\n transform: translateY(calc(-50% + 3px)) rotate(90deg);\n }\n 70% {\n transform: translateY(calc(-50% - 1.5px)) rotate(90deg);\n }\n}\n\n.comimi-toggle-switch {\n display: grid;\n grid-template-columns: repeat(2, auto);\n column-gap: 6px;\n justify-content: start;\n align-items: center;\n width: 100%;\n padding: 2px;\n border: 0;\n background: transparent;\n cursor: pointer;\n}\n\n.comimi-toggle-track {\n position: relative;\n width: 32px;\n height: 18px;\n border-radius: 999px;\n background: #eeeeee;\n transition: background-color 0.2s linear;\n}\n\n.comimi-toggle-switch[data-checked=\"true\"] .comimi-toggle-track {\n background: #666;\n}\n\n.comimi-toggle-knob {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background: #666;\n transition:\n transform 0.36s var(--comimi-spring),\n background-color 0.2s linear;\n}\n\n.comimi-toggle-switch[data-checked=\"true\"] .comimi-toggle-knob {\n background: #fff;\n transform: translateX(100%);\n}\n\n.comimi-toggle-label-wrap {\n position: relative;\n width: 22px;\n height: 12px;\n overflow: hidden;\n}\n\n.comimi-toggle-label-inner {\n position: absolute;\n inset: 0;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-toggle-switch[data-checked=\"false\"] .comimi-toggle-label-inner {\n transform: translateX(-100%);\n}\n\n.comimi-toggle-label {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n font-size: 11px;\n font-weight: 400;\n line-height: 12px;\n text-align: center;\n}\n\n.comimi-toggle-label-on {\n color: #333;\n}\n\n.comimi-toggle-label-off {\n color: #aaa;\n transform: translateX(100%);\n}\n\n.comimi-range-slider {\n display: grid;\n grid-template-columns: 1fr auto;\n column-gap: 8px;\n align-items: center;\n width: 100%;\n}\n\n.comimi-range-slider[data-disabled=\"true\"] {\n opacity: 0.6;\n}\n\n.comimi-range-slider-wrap {\n position: relative;\n display: grid;\n align-items: center;\n min-width: 0;\n height: 18px;\n}\n\n.comimi-range-slider-track {\n position: absolute;\n top: 50%;\n left: 0;\n right: 0;\n height: 6px;\n border-radius: 999px;\n background: #eeeeee;\n overflow: hidden;\n transform: translateY(-50%);\n transition: height 0.36s var(--comimi-spring);\n}\n\n@media (hover: hover) {\n .comimi-range-slider-wrap:hover .comimi-range-slider-track {\n height: 10px;\n }\n}\n\n.comimi-range-slider-fill {\n display: block;\n height: 100%;\n background: #666;\n border-radius: inherit;\n}\n\n.comimi-range-slider-input {\n position: relative;\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-range-slider-input::-webkit-slider-runnable-track {\n height: 6px;\n background: transparent;\n border: 0;\n}\n\n.comimi-range-slider-input::-webkit-slider-thumb {\n appearance: none;\n -webkit-appearance: none;\n width: 18px;\n height: 18px;\n margin-top: -6px;\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-range-slider-input:hover:not(:disabled)::-webkit-slider-thumb {\n transform: scale(1.15);\n}\n\n.comimi-range-slider-input::-moz-range-track {\n height: 6px;\n background: transparent;\n border: 0;\n}\n\n.comimi-range-slider-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-range-slider-input:hover:not(:disabled)::-moz-range-thumb {\n transform: scale(1.15);\n}\n\n.comimi-range-slider-input:focus-visible {\n outline: none;\n}\n\n.comimi-range-slider-input:focus-visible::-webkit-slider-thumb {\n box-shadow: none;\n}\n\n.comimi-range-slider-input:focus-visible::-moz-range-thumb {\n box-shadow: none;\n}\n\n.comimi-range-slider-value {\n width: 36px;\n color: #666;\n font-size: 11px;\n font-weight: 400;\n line-height: 1;\n text-align: right;\n white-space: nowrap;\n}\n", ye = "\n.comimi-loading-icon {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: grid;\n gap: 10px;\n justify-items: center;\n width: 80px;\n}\n\n.comimi-loading-icon-svg {\n width: 80px;\n}\n\n.comimi-loading-svg {\n display: block;\n width: 100%;\n transform-origin: center bottom;\n}\n\n.comimi-loading-stroke {\n fill: none;\n stroke: #ccc;\n stroke-linecap: round;\n stroke-linejoin: round;\n stroke-width: 10px;\n}\n\n.comimi-loading-mimi {\n transform-origin: 56px 43px;\n}\n\n.comimi-loading-mimi-left {\n animation:\n comimi-loading-mimi-left 0.4s ease-in-out 0.1s 2 forwards,\n comimi-loading-mimi-left 0.4s ease-in-out 1.7s 2 forwards;\n}\n\n.comimi-loading-mimi-right {\n animation:\n comimi-loading-mimi-right 0.4s ease-in-out 0.1s 2 forwards,\n comimi-loading-mimi-right 0.4s ease-in-out 1.7s 2 forwards;\n}\n\n.comimi-loading-eyes {\n transform: translateX(-7px);\n animation:\n comimi-loading-eyes-move 0.4s ease-in-out 1.2s both,\n comimi-loading-eyes-move 0.4s ease-in-out 2.6s reverse forwards;\n}\n\n.comimi-loading-eye {\n fill: #ccc;\n transform-origin: center;\n transform-box: fill-box;\n animation:\n comimi-loading-eye 0.4s ease-in-out 0s forwards,\n comimi-loading-eye 0.4s ease-in-out 1.6s forwards;\n}\n\n.comimi-loading-icon-text {\n color: #aaa;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n text-align: center;\n}\n\n.comimi-loading-icon-text span {\n display: inline-block;\n animation: comimi-loading-dot 0.8s ease-in-out 0s infinite both;\n}\n\n.comimi-loading-icon-text span:nth-child(1) {\n animation-delay: 0s;\n}\n\n.comimi-loading-icon-text span:nth-child(2) {\n animation-delay: 0.15s;\n}\n\n.comimi-loading-icon-text span:nth-child(3) {\n animation-delay: 0.3s;\n}\n\n@keyframes comimi-loading-mimi-left {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(20deg);\n }\n}\n\n@keyframes comimi-loading-mimi-right {\n from, to {\n transform: rotate(0deg);\n }\n 50% {\n transform: rotate(-20deg);\n }\n}\n\n@keyframes comimi-loading-eyes-move {\n from {\n transform: translateX(-7px);\n }\n to {\n transform: translateX(7px);\n }\n}\n\n@keyframes comimi-loading-eye {\n from, to {\n transform: scaleY(1);\n }\n 50% {\n transform: scaleY(0.2);\n }\n}\n\n@keyframes comimi-loading-dot {\n from, 50%, to {\n opacity: 1;\n }\n 25% {\n opacity: 0;\n }\n}\n", be = "\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", xe = "\n.comimi-notifications {\n position: absolute;\n bottom: 140px;\n left: 50%;\n transform: translateX(-50%);\n display: grid;\n row-gap: 8px;\n justify-items: center;\n pointer-events: none;\n z-index: 35;\n}\n\n.comimi-toast {\n display: grid;\n grid-template-columns: auto auto;\n gap: 5px;\n align-items: center;\n justify-content: center;\n width: fit-content;\n padding: 6px 13px 6px 8px;\n border-radius: 999px;\n background-color: #666;\n animation: comimi-toast-popup 0.37s ease-in-out 0s both;\n}\n\n.comimi-toast-dot {\n display: block;\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: #888;\n}\n\n.comimi-toast-text {\n color: #fff;\n font-size: 12px;\n font-weight: 700;\n line-height: 1.45;\n}\n\n@keyframes comimi-toast-popup {\n from {\n transform: translateY(6px) scale(0.2, 0.8);\n opacity: 0;\n }\n 60% {\n transform: translateY(-1px) scale(1.1, 1.05);\n opacity: 1;\n }\n to {\n transform: scale(1, 1);\n opacity: 1;\n }\n}\n\n@media (max-width: 767px) {\n .comimi-notifications {\n bottom: calc(120px + env(safe-area-inset-bottom, 0px));\n }\n}\n", Se = "\n.comimi-stage {\n position: absolute;\n inset: 0;\n will-change: transform;\n transition: transform .18s ease;\n}\n\n.comimi-stage[data-dragging=\"true\"] {\n transition: none;\n}\n\n.comimi-page-group {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n box-sizing: border-box;\n}\n\n.comimi-page {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n min-width: 0;\n min-height: 0;\n background: transparent;\n overflow: hidden;\n flex: 0 0 auto;\n}\n\n.comimi-page[data-spread=\"true\"] {\n width: 50%;\n height: 100%;\n}\n\n.comimi-page[data-spread=\"false\"] {\n width: 100%;\n height: 100%;\n}\n\n.comimi-page[data-position=\"left\"] {\n justify-content: flex-end;\n}\n\n.comimi-page[data-position=\"right\"] {\n justify-content: flex-start;\n}\n\n.comimi-page img,\n.comimi-html-page {\n display: block;\n max-width: 100%;\n max-height: 100%;\n width: 100%;\n height: 100%;\n object-fit: contain;\n transform-origin: center center;\n user-select: none;\n -webkit-user-select: none;\n -webkit-user-drag: none;\n -webkit-touch-callout: none;\n}\n\n.comimi-page img {\n pointer-events: none;\n}\n\n.comimi-page[data-spread=\"true\"] img,\n.comimi-page[data-spread=\"true\"] .comimi-html-page {\n width: 100%;\n height: 100%;\n}\n\n.comimi-page[data-position=\"left\"] img,\n.comimi-page[data-position=\"left\"] .comimi-html-page {\n object-position: right center;\n}\n\n.comimi-page[data-position=\"right\"] img,\n.comimi-page[data-position=\"right\"] .comimi-html-page {\n object-position: left center;\n}\n\n.comimi-html-page {\n width: min(100%, 960px);\n height: min(100%, 680px);\n background: #fff;\n color: #111;\n overflow: auto;\n}\n\n", Ce = "\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", we = "\n.comimi-scrollfade {\n position: relative;\n overscroll-behavior: contain;\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, #fff, transparent);\n}\n\n.comimi-scrollfade::after {\n bottom: 0;\n background: linear-gradient(to top, #fff, 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", Te = "\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", Ee = "\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", De = "\n.comimi-tooltip {\n position: absolute;\n bottom: 0;\n left: 50%;\n padding: 6px 10px;\n border-radius: 8px;\n background: rgba(255, 255, 255, 0.5);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n color: #333;\n font-size: 12px;\n font-weight: 600;\n line-height: 1.45;\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n opacity: 0;\n transform: translate(-50%, calc(100% + 6px)) scale(0.88);\n transform-origin: center top;\n transition:\n opacity 0.1s ease-in-out,\n transform 0.16s ease-in-out;\n z-index: 5;\n}\n\n@media (hover: hover) {\n .comimi-has-tooltip:hover > .comimi-tooltip {\n opacity: 1;\n transform: translate(-50%, calc(100% + 6px)) scale(1);\n }\n}\n", Oe = "\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", ke = "\n.comimi-view-switcher {\n position: absolute;\n top: 20px;\n right: 20px;\n display: grid;\n grid-template-columns: repeat(3, 60px);\n width: 180px;\n border-radius: 16px;\n background: var(--comimi-glass);\n box-shadow: var(--comimi-shadow);\n backdrop-filter: blur(5px);\n pointer-events: auto;\n transition:\n transform 0.6s var(--comimi-spring),\n opacity 0.3s linear;\n}\n\n.comimi-view-switcher[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@media (hover: hover) {\n .comimi-view-switcher:hover {\n transform: scaleX(1.03);\n }\n}\n\n.comimi-view-switcher-indicator {\n position: absolute;\n top: 0;\n left: 0;\n width: 60px;\n height: 100%;\n border-radius: 16px;\n background: #666;\n transition: transform 0.36s var(--comimi-spring);\n}\n\n.comimi-view-switcher-button {\n position: relative;\n display: grid;\n row-gap: 5px;\n justify-items: center;\n align-content: center;\n height: 58px;\n padding: 0;\n border: 0;\n background: transparent;\n color: #666;\n cursor: pointer;\n transition: color 0.2s linear;\n}\n\n.comimi-view-switcher-button[data-selected=\"true\"] {\n color: #fff;\n}\n\n.comimi-view-switcher-icon-wrap {\n width: 20px;\n height: 20px;\n transform-origin: center bottom;\n}\n\n.comimi-view-switcher-icon {\n display: block;\n width: 100%;\n height: 100%;\n color: currentColor;\n}\n\n.comimi-view-switcher-icon-wrap.comimi-pop-animate {\n animation: comimi-pop 0.5s ease-in-out 0.1s both;\n}\n\n.comimi-view-switcher-label {\n color: currentColor;\n font-size: 10px;\n font-weight: 500;\n text-align: center;\n transition: color 0.2s linear;\n}\n\n@media (max-width: 767px) {\n .comimi-view-switcher {\n top: 70px;\n right: auto;\n left: calc(50% - 90px);\n }\n}\n", q = !1, Ae = [
1281
+ Oe,
1282
+ _e,
1277
1283
  De,
1284
+ Se,
1285
+ ye,
1278
1286
  ge,
1279
- Ee,
1280
- xe,
1281
- ve,
1282
- he,
1283
- fe,
1284
1287
  pe,
1285
- Oe,
1286
1288
  me,
1287
- _e,
1288
- we,
1289
- ye,
1290
- be,
1291
- Se,
1289
+ ke,
1290
+ he,
1291
+ ve,
1292
1292
  Te,
1293
- Ce
1293
+ be,
1294
+ xe,
1295
+ Ce,
1296
+ Ee,
1297
+ we
1294
1298
  ].join("\n");
1295
- function Ae() {
1299
+ function je() {
1296
1300
  if (q || typeof document > "u") return;
1297
1301
  let e = document.createElement("style");
1298
- e.dataset.comimiViewer = "true", e.textContent = ke, document.head.append(e), q = !0;
1302
+ e.dataset.comimiViewer = "true", e.textContent = Ae, document.head.append(e), q = !0;
1299
1303
  }
1300
1304
  //#endregion
1301
1305
  //#region src/renderer/viewer-renderer.ts
1302
- var je = 180, Me = 2e3, J = class {
1306
+ var Me = 180, Ne = 2e3, Pe = class {
1303
1307
  container;
1304
1308
  callbacks;
1305
1309
  assetLoader;
@@ -1327,12 +1331,12 @@ var je = 180, Me = 2e3, J = class {
1327
1331
  autoplayOverlayProgress;
1328
1332
  autoplayOverlayProgressBar;
1329
1333
  constructor(e, t, n, r, i, a, o = !1, s) {
1330
- this.container = e, this.callbacks = t, this.assetLoader = n, this.i18n = r, this.lockLayoutMode = o, this.mascot = s, Ae(), this.pageStage = new B({
1334
+ this.container = e, this.callbacks = t, this.assetLoader = n, this.i18n = r, this.lockLayoutMode = o, this.mascot = s, je(), this.pageStage = new V({
1331
1335
  assetLoader: this.assetLoader,
1332
1336
  i18n: this.i18n,
1333
1337
  isMobileViewport: () => this.isMobileViewport(),
1334
1338
  resolvePageSrc: a
1335
- }), this.root = de({ className: i }), this.container.replaceChildren(this.root), this.observeViewSize();
1339
+ }), this.root = fe({ className: i }), this.container.replaceChildren(this.root), this.observeViewSize();
1336
1340
  }
1337
1341
  observeViewSize() {
1338
1342
  let e = () => {
@@ -1347,21 +1351,21 @@ var je = 180, Me = 2e3, J = class {
1347
1351
  ...e,
1348
1352
  overlayVisible: this.prevOverlayVisible
1349
1353
  } : e;
1350
- this.menuPanel ||= new N(this.callbacks, this.i18n, {
1354
+ this.menuPanel ||= new P(this.callbacks, this.i18n, {
1351
1355
  lockLayoutMode: this.lockLayoutMode,
1352
1356
  mascot: this.mascot
1353
- }), !this.viewModeSwitcher && !this.lockLayoutMode && (this.viewModeSwitcher = new P(this.callbacks, this.i18n)), this.controlsDock ||= new M(this.callbacks, this.i18n, this.mascot);
1357
+ }), !this.viewModeSwitcher && !this.lockLayoutMode && (this.viewModeSwitcher = new F(this.callbacks, this.i18n)), this.controlsDock ||= new N(this.callbacks, this.i18n, this.mascot);
1354
1358
  let r = this.pageStage.getElement(), i = this.menuPanel.getElement(), a = this.viewModeSwitcher?.getElement(), o = this.controlsDock.getElement();
1355
1359
  Array.from(this.root.children).forEach((e) => {
1356
1360
  e !== r && e !== i && e !== a && e !== o && e !== this.splash && e !== this.autoplayOverlayProgress && e.remove();
1357
1361
  }), r.parentNode !== this.root && this.root.prepend(r), this.pageStage.update(e, this.isMobileViewport()), this.pageStage.snapTransform();
1358
1362
  let s = [
1359
1363
  ie(n, this.i18n),
1360
- ne({
1364
+ _({
1361
1365
  state: n,
1362
1366
  callbacks: this.callbacks
1363
1367
  }),
1364
- H(e)
1368
+ U(e)
1365
1369
  ];
1366
1370
  this.syncResizeHandle(e.layout.mode === "wide");
1367
1371
  let c = i.parentNode === this.root ? i : null;
@@ -1380,9 +1384,9 @@ var je = 180, Me = 2e3, J = class {
1380
1384
  });
1381
1385
  }
1382
1386
  showSplash() {
1383
- this.splash || (this.splash = W(this.i18n, this.mascot), this.root.append(this.splash), this.splashRemoveTimer = window.setTimeout(() => {
1387
+ this.splash || (this.splash = G(this.i18n, this.mascot), this.root.append(this.splash), this.splashRemoveTimer = window.setTimeout(() => {
1384
1388
  this.splash?.remove(), this.splash = void 0;
1385
- }, Me));
1389
+ }, Ne));
1386
1390
  }
1387
1391
  destroy() {
1388
1392
  window.clearTimeout(this.pageTurnTimer), window.clearTimeout(this.splashRemoveTimer), this.overlayApplyRaf !== void 0 && (cancelAnimationFrame(this.overlayApplyRaf), this.overlayApplyRaf = void 0), this.cleanup.forEach((e) => e()), this.cleanup = [], this.viewSizeObserver?.disconnect(), this.viewSizeObserver = void 0, this.resizeHandle?.remove(), this.resizeHandle = void 0, this.root.remove();
@@ -1394,9 +1398,9 @@ var je = 180, Me = 2e3, J = class {
1394
1398
  return this.isPageTurnAnimating;
1395
1399
  }
1396
1400
  animatePageTurn(e, t, n) {
1397
- return window.clearTimeout(this.pageTurnTimer), this.isPageTurnAnimating || x(e, t, this.isMobileViewport()).length === 0 ? !1 : (this.isPageTurnAnimating = !0, this.setStageDragOffset(this.getPageTurnTargetOffset(e, t), !0), this.pageTurnTimer = window.setTimeout(() => {
1401
+ return window.clearTimeout(this.pageTurnTimer), this.isPageTurnAnimating || S(e, t, this.isMobileViewport()).length === 0 ? !1 : (this.isPageTurnAnimating = !0, this.setStageDragOffset(this.getPageTurnTargetOffset(e, t), !0), this.pageTurnTimer = window.setTimeout(() => {
1398
1402
  this.isPageTurnAnimating = !1, n();
1399
- }, je), !0);
1403
+ }, Me), !0);
1400
1404
  }
1401
1405
  isMobileViewport() {
1402
1406
  return window.matchMedia("(max-width: 767px)").matches;
@@ -1413,7 +1417,7 @@ var je = 180, Me = 2e3, J = class {
1413
1417
  x: 0,
1414
1418
  y: 0
1415
1419
  };
1416
- let i = b(r, this.isMobileViewport()).length > 1 ? this.root.offsetWidth / 2 : this.root.offsetWidth, a = this.root.offsetHeight, o = i * (n - 1) / 2, s = a * (n - 1) / 2;
1420
+ let i = x(r, this.isMobileViewport()).length > 1 ? this.root.offsetWidth / 2 : this.root.offsetWidth, a = this.root.offsetHeight, o = i * (n - 1) / 2, s = a * (n - 1) / 2;
1417
1421
  return {
1418
1422
  x: Math.min(Math.max(e, -o), o),
1419
1423
  y: Math.min(Math.max(t, -s), s)
@@ -1484,7 +1488,7 @@ var je = 180, Me = 2e3, J = class {
1484
1488
  if (this.isPageTurnAnimating) return;
1485
1489
  if (t.touches.length === 2) {
1486
1490
  t.preventDefault(), this.touchStart = void 0, this.pinchStart = {
1487
- distance: Y(t),
1491
+ distance: J(t),
1488
1492
  scale: e.zoomScale
1489
1493
  };
1490
1494
  return;
@@ -1500,7 +1504,7 @@ var je = 180, Me = 2e3, J = class {
1500
1504
  }, s = (t) => {
1501
1505
  if (this.pinchStart && t.touches.length === 2) {
1502
1506
  t.preventDefault();
1503
- let n = this.pinchStart.scale * (Y(t) / this.pinchStart.distance), r = this.clampedZoom(n, e), i = this.clampPan(e.panX, e.panY, r, e);
1507
+ let n = this.pinchStart.scale * (J(t) / this.pinchStart.distance), r = this.clampedZoom(n, e), i = this.clampPan(e.panX, e.panY, r, e);
1504
1508
  this.callbacks.setZoom(r, i.x, i.y);
1505
1509
  return;
1506
1510
  }
@@ -1536,8 +1540,8 @@ var je = 180, Me = 2e3, J = class {
1536
1540
  this.setStageDragOffset(0, !0);
1537
1541
  return;
1538
1542
  }
1539
- let r = T(e, n.settings.readingDirection) ? "next" : "previous";
1540
- if (!(x(n, r, this.isMobileViewport()).length > 0)) {
1543
+ let r = E(e, n.settings.readingDirection) ? "next" : "previous";
1544
+ if (!(S(n, r, this.isMobileViewport()).length > 0)) {
1541
1545
  this.setStageDragOffset(0, !0);
1542
1546
  return;
1543
1547
  }
@@ -1549,7 +1553,7 @@ var je = 180, Me = 2e3, J = class {
1549
1553
  });
1550
1554
  }
1551
1555
  constrainDragOffset(e, t, n) {
1552
- return Math.abs(t) > Math.abs(e) ? 0 : x(n, T(e, n.settings.readingDirection) ? "next" : "previous", this.isMobileViewport()).length > 0 ? e : this.applyEdgeResistance(e);
1556
+ return Math.abs(t) > Math.abs(e) ? 0 : S(n, E(e, n.settings.readingDirection) ? "next" : "previous", this.isMobileViewport()).length > 0 ? e : this.applyEdgeResistance(e);
1553
1557
  }
1554
1558
  applyEdgeResistance(e) {
1555
1559
  let t = Math.sign(e), n = Math.abs(e), r = Math.max(this.root.clientWidth, 1), i = Math.min(r * .22, 140);
@@ -1559,7 +1563,7 @@ var je = 180, Me = 2e3, J = class {
1559
1563
  this.pageStage.setDragOffset(e, t);
1560
1564
  }
1561
1565
  getPageTurnTargetOffset(e, t) {
1562
- return w(e, t) === "left" ? this.root.clientWidth : -this.root.clientWidth;
1566
+ return T(e, t) === "left" ? this.root.clientWidth : -this.root.clientWidth;
1563
1567
  }
1564
1568
  isInteractiveTarget(e) {
1565
1569
  return e instanceof Element ? !!e.closest([
@@ -1577,13 +1581,13 @@ var je = 180, Me = 2e3, J = class {
1577
1581
  ].join(",")) : !1;
1578
1582
  }
1579
1583
  };
1580
- function Y(e) {
1584
+ function J(e) {
1581
1585
  let [t, n] = Array.from(e.touches);
1582
1586
  return !t || !n ? 1 : Math.hypot(t.clientX - n.clientX, t.clientY - n.clientY);
1583
1587
  }
1584
1588
  //#endregion
1585
1589
  //#region src/storage/indexed-db-storage.ts
1586
- var Ne = class {
1590
+ var Y = class {
1587
1591
  enabled;
1588
1592
  databaseName;
1589
1593
  dbPromise;
@@ -1722,7 +1726,7 @@ function Q(e, t) {
1722
1726
  };
1723
1727
  case "setZoom": return {
1724
1728
  ...e,
1725
- zoomScale: Pe(t.scale, e),
1729
+ zoomScale: Fe(t.scale, e),
1726
1730
  panX: t.panX ?? e.panX,
1727
1731
  panY: t.panY ?? e.panY
1728
1732
  };
@@ -1758,12 +1762,12 @@ function $(e) {
1758
1762
  visiblePageIndexes: a(e.currentPageIndex, e.manga.pages.length, e.settings)
1759
1763
  };
1760
1764
  }
1761
- function Pe(e, t) {
1765
+ function Fe(e, t) {
1762
1766
  return Math.min(Math.max(e, t.settings.zoom.min), t.settings.zoom.max);
1763
1767
  }
1764
1768
  //#endregion
1765
1769
  //#region src/store/store.ts
1766
- var Fe = class {
1770
+ var Ie = class {
1767
1771
  state;
1768
1772
  listeners = /* @__PURE__ */ new Set();
1769
1773
  constructor(e) {
@@ -1784,7 +1788,7 @@ var Fe = class {
1784
1788
  this.listeners.delete(e);
1785
1789
  };
1786
1790
  }
1787
- }, Ie = class {
1791
+ }, Le = class {
1788
1792
  objectUrls = /* @__PURE__ */ new Set();
1789
1793
  async resolveImageSource(e, t) {
1790
1794
  return t.src;
@@ -1793,7 +1797,7 @@ var Fe = class {
1793
1797
  for (let e of this.objectUrls) URL.revokeObjectURL(e);
1794
1798
  this.objectUrls.clear();
1795
1799
  }
1796
- }, Le = class {
1800
+ }, Re = class {
1797
1801
  handlers = /* @__PURE__ */ new Map();
1798
1802
  on(e, t) {
1799
1803
  let n = this.handlers.get(e);
@@ -1812,14 +1816,14 @@ var Fe = class {
1812
1816
  clear() {
1813
1817
  this.handlers.clear();
1814
1818
  }
1815
- }, Re = class {
1819
+ }, ze = class {
1816
1820
  container;
1817
1821
  store;
1818
1822
  storage;
1819
1823
  assetLoader;
1820
1824
  renderer;
1821
1825
  i18n;
1822
- events = new Le();
1826
+ events = new Re();
1823
1827
  unsubscribers = [];
1824
1828
  notificationTimers = /* @__PURE__ */ new Map();
1825
1829
  autoTimer;
@@ -1831,7 +1835,7 @@ var Fe = class {
1831
1835
  ...i.settings,
1832
1836
  locale: i.locale ?? i.settings?.locale ?? e.locale
1833
1837
  });
1834
- this.lockLayoutMode = i.lockLayoutMode ?? !1, this.storage = new Ne(i.storage), this.assetLoader = new Ie(), this.i18n = new te(a.locale, i.translations), this.store = new Fe(t(i.manga, a, i.initialPageIndex));
1838
+ this.lockLayoutMode = i.lockLayoutMode ?? !1, this.storage = new Y(i.storage), this.assetLoader = new Le(), this.i18n = new ne(a.locale, i.translations), this.store = new Ie(t(i.manga, a, i.initialPageIndex));
1835
1839
  let o = {
1836
1840
  goToPage: (e) => {
1837
1841
  this.store.getState().autoPageTurnEnabled || this.goToPage(e);
@@ -1870,7 +1874,7 @@ var Fe = class {
1870
1874
  }),
1871
1875
  resetZoom: () => this.store.dispatch({ type: "resetZoom" })
1872
1876
  };
1873
- this.renderer = new J(this.container, o, this.assetLoader, this.i18n, i.className, i.resolvePageSrc, this.lockLayoutMode, i.mascot);
1877
+ this.renderer = new Pe(this.container, o, this.assetLoader, this.i18n, i.className, i.resolvePageSrc, this.lockLayoutMode, i.mascot);
1874
1878
  for (let [e, t] of Object.entries(i.events ?? {})) this.on(e, t);
1875
1879
  this.unsubscribers.push(this.store.subscribe((e, t) => {
1876
1880
  this.renderer.update(e), this.afterStateChange(e, t);
@@ -2151,8 +2155,8 @@ var Fe = class {
2151
2155
  };
2152
2156
  //#endregion
2153
2157
  //#region src/index.ts
2154
- function ze(e, t) {
2155
- return new Re(e, t);
2158
+ function Be(e, t) {
2159
+ return new ze(e, t);
2156
2160
  }
2157
2161
  //#endregion
2158
- export { ze as createMangaViewer };
2162
+ export { Be as createMangaViewer };