html-flip-book-react 0.0.0-alpha.48 → 0.0.0-alpha.49

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.
@@ -1,7 +1,8 @@
1
- import { type HistoryMapper, type MouseMode, type PageFlipParams, type PageSemantics } from "html-flip-book-vanilla";
1
+ import { type BookmarkProvider as BaseBookmarkProvider, type HistoryMapper, type MouseMode, type PageFlipParams, type PageSemantics } from "html-flip-book-vanilla";
2
2
  import "../../base/src/mouse-mode.scss";
3
3
  import type { DownloadConfig } from "html-flip-book-vanilla/download";
4
4
  import type React from "react";
5
+ export type BookmarkProvider = BaseBookmarkProvider<React.ReactNode>;
5
6
  export interface FlipBookHandle {
6
7
  flipNext: () => Promise<void>;
7
8
  flipPrev: () => Promise<void>;
@@ -36,6 +37,8 @@ export interface FlipBookProps {
36
37
  pages: React.ReactNode[];
37
38
  className: string;
38
39
  pageSemantics?: PageSemantics;
40
+ bookmarkProvider?: BookmarkProvider;
41
+ enableBookmarks?: boolean;
39
42
  debug?: boolean;
40
43
  direction?: "rtl" | "ltr";
41
44
  mouseMode?: MouseMode;
@@ -64,7 +67,7 @@ export interface FlipBookProps {
64
67
  }
65
68
  declare const FlipBookReact: React.ForwardRefExoticComponent<FlipBookProps & React.RefAttributes<FlipBookHandle>>;
66
69
  export { FlipBookReact as FlipBook };
67
- export type { FlipPageSemantic, HistoryMapper, MouseMode, PageFlipParams, PageSemantics, } from "html-flip-book-vanilla";
70
+ export type { Bookmark, BookmarkContext, BookmarkPlacement, FlipPageSemantic, HistoryMapper, MouseMode, PageFlipParams, PageSemantics, } from "html-flip-book-vanilla";
68
71
  export type { TocEntry, TocPageProps } from "./TocPage";
69
72
  export { TocPage } from "./TocPage";
70
73
  //# sourceMappingURL=FlipBook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FlipBook.d.ts","sourceRoot":"","sources":["../src/FlipBook.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FlipBook.d.ts","sourceRoot":"","sources":["../src/FlipBook.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- .flipbook--select-text .page:not(.page--flipping){-webkit-user-select:text;user-select:text}.toc-page{background-color:#fffef8;font-family:inherit;line-height:1.6;height:100%;box-sizing:border-box;container-type:inline-size;overflow:hidden;display:flex;flex-direction:column;padding:8% 6%}.toc-page__scroll{flex:1;min-width:0;min-height:0;overflow-x:hidden;overflow-y:auto}.toc-heading{text-align:center;overflow-wrap:anywhere;margin-bottom:24px;color:#2c1810;font-size:1.4rem;border-bottom:none}.toc-list{list-style:none;padding:0;margin:0}.toc-list li{margin-bottom:8px}.toc-link{display:flex;flex-direction:row;align-items:baseline;width:100%;box-sizing:border-box;padding:8px 4px;background:none;border:none;cursor:pointer;font-family:inherit;font-size:.75em;text-align:inherit;color:inherit;text-decoration:none;transition:background-color .15s ease}.toc-link:hover{background-color:#0000000d}.toc-link:focus{outline:2px solid #1a3a5c;outline-offset:2px}.toc-title{flex:0 1 auto;min-width:0;overflow-wrap:anywhere}.toc-dots{flex-grow:1;border-bottom:1px dotted #999;margin:0 8px;min-width:20px}.toc-page-num{flex-shrink:0;white-space:nowrap;font-weight:600;color:#1a3a5c}@container (max-width: 160px){.toc-link{flex-wrap:wrap}.toc-title{flex-basis:100%}.toc-dots{min-width:0;margin:0;margin-inline-end:8px}}.flipbook-toolbar-download-wrap{position:relative;display:inline-flex}.flipbook-toolbar-download-trigger{display:flex;align-items:center;justify-content:center}.flipbook-toolbar-download-menu{position:absolute;top:100%;inset-inline-end:0;inset-inline-start:auto;margin-top:6px;min-width:min(320px,90vw);width:max-content;max-width:min(400px,95vw);max-height:min(70vh,480px);overflow-y:auto;padding:8px 0;background-color:#18181cfa;border-radius:12px;box-shadow:0 8px 30px #00000059,0 1px 3px #00000026;z-index:10000;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.flipbook-toolbar-download-menu--open-up{top:auto;bottom:100%;margin-top:0;margin-bottom:6px}.flipbook-toolbar-download-mode{display:flex;flex-direction:column;gap:2px;padding:4px 8px;border:none;margin:0;min-width:0}.flipbook-toolbar-download-radio-label{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;color:#ffffffeb;font-size:14px;cursor:pointer;transition:background-color .15s ease;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;min-width:0}.flipbook-toolbar-download-radio-label span{flex:0 1 auto;min-width:min-content;overflow:visible;white-space:nowrap}.flipbook-toolbar-download-radio-label:hover{background-color:#ffffff14}.flipbook-toolbar-download-radio-label:active{background-color:#ffffff1f}.flipbook-toolbar-download-radio{width:18px;height:18px;accent-color:#6ea8fe;flex-shrink:0}.flipbook-toolbar-download-range{display:flex;flex-wrap:wrap;flex-direction:row;align-items:center;gap:10px;padding:12px 16px;border-top:1px solid rgba(255,255,255,.1);margin-top:4px}.flipbook-toolbar-download-range-label{display:inline-flex;align-items:center;gap:8px;color:#ffffffbf;font-size:13px;font-weight:500;letter-spacing:.02em;text-transform:uppercase}.flipbook-toolbar-download-range-select{padding:8px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.18);background:#ffffff0f;color:#fff;font-family:inherit;font-size:14px;min-width:5ch;text-align:start;direction:inherit;transition:border-color .15s ease;outline:none}.flipbook-toolbar-download-range-select:focus{border-color:#6ea8fe99}.flipbook-toolbar-download-range-select option{color:#000;background:#fff}.flipbook-toolbar-download-menuitem{display:block;width:calc(100% - 16px);margin:4px 8px 0;padding:12px 16px;border:none;background:#6ea8fe2e;color:#6ea8fe;font-family:inherit;font-size:14px;font-weight:600;text-align:center;cursor:pointer;border-radius:8px;transition:background-color .15s ease,transform .1s ease;-webkit-tap-highlight-color:transparent}.flipbook-toolbar-download-menuitem:hover:not(:disabled){background-color:#6ea8fe47}.flipbook-toolbar-download-menuitem:active:not(:disabled){transform:scale(.97);background-color:#6ea8fe59}.flipbook-toolbar-download-menuitem:disabled{opacity:.5;cursor:not-allowed}.flipbook-toolbar-download-primary{margin-top:8px}.flipbook-toolbar-download-range-download{padding:10px 16px;border:none;border-radius:8px;background:#ffffff26;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:background-color .15s ease}.flipbook-toolbar-download-range-download:hover:not(:disabled){background:#ffffff40}.flipbook-toolbar-download-range-download:disabled{opacity:.5;cursor:not-allowed}.flipbook-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 16px;min-height:48px;box-sizing:border-box;background-color:#000000b3;border-radius:8px;-webkit-user-select:none;user-select:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.flipbook-toolbar-start{display:flex;align-items:center;gap:8px;flex:1;justify-content:flex-start}.flipbook-toolbar-nav-cluster{display:flex;align-items:center;gap:8px;flex-shrink:0}.flipbook-toolbar--rtl .flipbook-toolbar-button>*{transform:scaleX(-1)}.flipbook-toolbar--rtl .flipbook-toolbar-mouse-mode>*{transform:none}.flipbook-toolbar-end{display:flex;align-items:center;gap:8px;flex:1;justify-content:flex-end}.flipbook-toolbar-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;border-radius:6px;background-color:transparent;color:#fff;font-size:20px;cursor:pointer;transition:background-color .2s ease,opacity .2s ease}.flipbook-toolbar-button:hover:not(:disabled){background-color:#ffffff26}.flipbook-toolbar-button:active:not(:disabled){background-color:#ffffff40}.flipbook-toolbar-button:focus-visible{outline:2px solid #fff;outline-offset:2px}.flipbook-toolbar-button:disabled{opacity:.4;cursor:not-allowed}.flipbook-toolbar-mouse-mode[aria-pressed=true]{background-color:#ffffff40}.flipbook-toolbar-mouse-mode-icon{display:inline-flex;align-items:center;gap:3px;font-size:15px;font-weight:600;line-height:1}.flipbook-toolbar-mouse-mode-caret{display:inline-block;width:9px;height:18px;background:currentColor;-webkit-mask:url(data:image/png;base64,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) center / 18px 18px no-repeat;mask:url(data:image/png;base64,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) center / 18px 18px no-repeat}.flipbook-toolbar-prev,.flipbook-toolbar-next{font-size:28px;font-weight:700}.flipbook-toolbar-first,.flipbook-toolbar-last{font-size:16px}.flipbook-toolbar-fullscreen{font-size:18px}.flipbook-toolbar-fullscreen--active{background-color:#ffffff1a}.flipbook-toc-icon--flip-h{transform:scaleX(-1)}span.flipbook-toolbar-indicator{display:inline-flex;align-items:center;justify-content:center;color:inherit;font-size:14px;font-weight:500;text-align:center;padding:0 4px;white-space:nowrap}input.flipbook-toolbar-indicator{display:inline-block;font-family:inherit;font-size:14px;font-weight:500;text-align:center;box-sizing:border-box;border:1px solid transparent;border-radius:4px;padding:4px 8px;min-width:3ch;color:inherit;white-space:nowrap;transition:background-color .2s ease,color .2s ease}input.flipbook-toolbar-indicator--editing{background:#fff;color:#1a1a1a}input.flipbook-toolbar-indicator:focus{outline:2px solid currentColor;outline-offset:2px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
1
+ .flipbook--select-text .page:not(.page--flipping){-webkit-user-select:text;user-select:text}.toc-page{background-color:#fffef8;font-family:inherit;line-height:1.6;height:100%;box-sizing:border-box;container-type:inline-size;overflow:hidden;display:flex;flex-direction:column;padding:8% 6%}.toc-page__scroll{flex:1;min-width:0;min-height:0;overflow-x:hidden;overflow-y:auto}.flipbook-page-content .toc-page__scroll{flex:0 0 auto;overflow:visible}.toc-heading{text-align:center;overflow-wrap:anywhere;margin-bottom:24px;color:#2c1810;font-size:1.4rem;border-bottom:none}.toc-list{list-style:none;padding:0;margin:0}.toc-list li{margin-bottom:8px}.toc-link{display:flex;flex-direction:row;align-items:baseline;width:100%;box-sizing:border-box;padding:8px 4px;background:none;border:none;cursor:pointer;font-family:inherit;font-size:.75em;text-align:inherit;color:inherit;text-decoration:none;transition:background-color .15s ease}.toc-link:hover{background-color:#0000000d}.toc-link:focus{outline:2px solid #1a3a5c;outline-offset:2px}.toc-title{flex:0 1 auto;min-width:0;overflow-wrap:anywhere}.toc-dots{flex-grow:1;border-bottom:1px dotted #999;margin:0 8px;min-width:20px}.toc-page-num{flex-shrink:0;white-space:nowrap;font-weight:600;color:#1a3a5c}@container (max-width: 160px){.toc-link{flex-wrap:wrap}.toc-title{flex-basis:100%}.toc-dots{min-width:0;margin:0;margin-inline-end:8px}}.flipbook-toolbar-download-wrap{position:relative;display:inline-flex}.flipbook-toolbar-download-trigger{display:flex;align-items:center;justify-content:center}.flipbook-toolbar-download-menu{position:fixed;margin:0;box-sizing:border-box;min-width:min(320px,90vw);width:max-content;max-width:min(400px,95vw);max-height:min(70vh,480px);overflow-y:auto;padding:8px 0;background-color:#18181cfa;border-radius:12px;box-shadow:0 8px 30px #00000059,0 1px 3px #00000026;z-index:10000;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.flipbook-toolbar-download-menu--open-up{margin:0}.flipbook-toolbar-download-mode{display:flex;flex-direction:column;gap:2px;padding:4px 8px;border:none;margin:0;min-width:0}.flipbook-toolbar-download-radio-label{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;color:#ffffffeb;font-size:14px;cursor:pointer;transition:background-color .15s ease;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;min-width:0}.flipbook-toolbar-download-radio-label span{flex:0 1 auto;min-width:min-content;overflow:visible;white-space:nowrap}.flipbook-toolbar-download-radio-label:hover{background-color:#ffffff14}.flipbook-toolbar-download-radio-label:active{background-color:#ffffff1f}.flipbook-toolbar-download-radio{width:18px;height:18px;accent-color:#6ea8fe;flex-shrink:0}.flipbook-toolbar-download-range{display:flex;flex-wrap:wrap;flex-direction:row;align-items:center;gap:10px;padding:12px 16px;border-top:1px solid rgba(255,255,255,.1);margin-top:4px}.flipbook-toolbar-download-range-label{display:inline-flex;align-items:center;gap:8px;color:#ffffffbf;font-size:13px;font-weight:500;letter-spacing:.02em;text-transform:uppercase}.flipbook-toolbar-download-range-select{padding:8px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.18);background:#ffffff0f;color:#fff;font-family:inherit;font-size:14px;min-width:5ch;text-align:start;direction:inherit;transition:border-color .15s ease;outline:none}.flipbook-toolbar-download-range-select:focus{border-color:#6ea8fe99}.flipbook-toolbar-download-range-select option{color:#000;background:#fff}.flipbook-toolbar-download-menuitem{display:block;width:calc(100% - 16px);margin:4px 8px 0;padding:12px 16px;border:none;background:#6ea8fe2e;color:#6ea8fe;font-family:inherit;font-size:14px;font-weight:600;text-align:center;cursor:pointer;border-radius:8px;transition:background-color .15s ease,transform .1s ease;-webkit-tap-highlight-color:transparent}.flipbook-toolbar-download-menuitem:hover:not(:disabled){background-color:#6ea8fe47}.flipbook-toolbar-download-menuitem:active:not(:disabled){transform:scale(.97);background-color:#6ea8fe59}.flipbook-toolbar-download-menuitem:disabled{opacity:.5;cursor:not-allowed}.flipbook-toolbar-download-primary{margin-top:8px}.flipbook-toolbar-download-range-download{padding:10px 16px;border:none;border-radius:8px;background:#ffffff26;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:background-color .15s ease}.flipbook-toolbar-download-range-download:hover:not(:disabled){background:#ffffff40}.flipbook-toolbar-download-range-download:disabled{opacity:.5;cursor:not-allowed}.flipbook-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 16px;min-height:48px;box-sizing:border-box;background-color:#000000b3;border-radius:8px;-webkit-user-select:none;user-select:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.flipbook-toolbar-start{display:flex;align-items:center;gap:8px;flex:1;justify-content:flex-start}.flipbook-toolbar-nav-cluster{display:flex;align-items:center;gap:8px;flex-shrink:0}.flipbook-toolbar--rtl .flipbook-toolbar-button>*{transform:scaleX(-1)}.flipbook-toolbar--rtl .flipbook-toolbar-mouse-mode>*{transform:none}.flipbook-toolbar-end{display:flex;align-items:center;gap:8px;flex:1;justify-content:flex-end}.flipbook-toolbar-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;border-radius:6px;background-color:transparent;color:#fff;font-size:20px;cursor:pointer;transition:background-color .2s ease,opacity .2s ease}.flipbook-toolbar-button:hover:not(:disabled){background-color:#ffffff26}.flipbook-toolbar-button:active:not(:disabled){background-color:#ffffff40}.flipbook-toolbar-button:focus-visible{outline:2px solid #fff;outline-offset:2px}.flipbook-toolbar-button:disabled{opacity:.4;cursor:not-allowed}.flipbook-toolbar-mouse-mode[aria-pressed=true]{background-color:#ffffff40}.flipbook-toolbar-mouse-mode-icon{display:inline-flex;align-items:center;gap:3px;font-size:15px;font-weight:600;line-height:1}.flipbook-toolbar-mouse-mode-caret{display:inline-block;width:9px;height:18px;background:currentColor;-webkit-mask:url(data:image/png;base64,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) center / 18px 18px no-repeat;mask:url(data:image/png;base64,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) center / 18px 18px no-repeat}.flipbook-toolbar-prev,.flipbook-toolbar-next{font-size:28px;font-weight:700}.flipbook-toolbar-first,.flipbook-toolbar-last{font-size:16px}.flipbook-toolbar-fullscreen{font-size:18px}.flipbook-toolbar-fullscreen--active{background-color:#ffffff1a}.flipbook-toc-icon--flip-h{transform:scaleX(-1)}span.flipbook-toolbar-indicator{display:inline-flex;align-items:center;justify-content:center;color:inherit;font-size:14px;font-weight:500;text-align:center;padding:0 4px;white-space:nowrap}input.flipbook-toolbar-indicator{display:inline-block;font-family:inherit;font-size:14px;font-weight:500;text-align:center;box-sizing:border-box;border:1px solid transparent;border-radius:4px;padding:4px 8px;min-width:3ch;color:inherit;white-space:nowrap;transition:background-color .2s ease,color .2s ease}input.flipbook-toolbar-indicator--editing{background:#fff;color:#1a1a1a}input.flipbook-toolbar-indicator:focus{outline:2px solid currentColor;outline-offset:2px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
package/dist/flip-book.js CHANGED
@@ -1,129 +1,133 @@
1
- import { jsx as a, jsxs as A, Fragment as ee } from "react/jsx-runtime";
2
- import { FlipBook as te } from "html-flip-book-vanilla";
3
- import { forwardRef as ne, useState as re, useRef as v, useEffect as $, useImperativeHandle as oe, Children as se } from "react";
4
- const ae = (g) => g.title.length > 0, ge = ({
5
- onNavigate: g,
6
- totalPages: c,
7
- pageSemantics: x,
8
- heading: M = "Table of Contents",
9
- className: S,
10
- direction: l = "ltr",
11
- filter: E = ae,
12
- getHref: f,
13
- renderEntry: k
1
+ import { jsx as c, jsxs as O, Fragment as ae } from "react/jsx-runtime";
2
+ import { FlipBook as ce } from "html-flip-book-vanilla";
3
+ import { forwardRef as le, useState as W, useRef as F, useEffect as S, useImperativeHandle as ie, Children as ue } from "react";
4
+ import { createPortal as de } from "react-dom";
5
+ const pe = (k) => k.title.length > 0, Ie = ({
6
+ onNavigate: k,
7
+ totalPages: d,
8
+ pageSemantics: T,
9
+ heading: B = "Table of Contents",
10
+ className: y,
11
+ direction: p = "ltr",
12
+ filter: $ = pe,
13
+ getHref: g,
14
+ renderEntry: f
14
15
  }) => {
15
- const d = [];
16
- for (let n = 0; n < c; n++) {
17
- const i = x?.indexToTitle(n) ?? "", u = x?.indexToSemanticName(n) ?? "", r = { pageIndex: n, title: i, semanticName: u };
18
- E(r, n) && d.push(r);
16
+ const x = [];
17
+ for (let n = 0; n < d; n++) {
18
+ const u = T?.indexToTitle(n) ?? "", m = T?.indexToSemanticName(n) ?? "", N = { pageIndex: n, title: u, semanticName: m };
19
+ $(N, n) && x.push(N);
19
20
  }
20
- const C = (n, i, u) => {
21
- const r = n.title || n.semanticName || `Page ${n.pageIndex + 1}`, F = n.semanticName || String(n.pageIndex + 1), T = /* @__PURE__ */ A(ee, { children: [
22
- /* @__PURE__ */ a("span", { className: "toc-title", children: r }),
23
- /* @__PURE__ */ a("span", { className: "toc-dots", "aria-hidden": !0 }),
24
- /* @__PURE__ */ a("span", { className: "toc-page-num", children: F })
21
+ const L = (n, u, m) => {
22
+ const N = n.title || n.semanticName || `Page ${n.pageIndex + 1}`, D = n.semanticName || String(n.pageIndex + 1), a = /* @__PURE__ */ O(ae, { children: [
23
+ /* @__PURE__ */ c("span", { className: "toc-title", children: N }),
24
+ /* @__PURE__ */ c("span", { className: "toc-dots", "aria-hidden": !0 }),
25
+ /* @__PURE__ */ c("span", { className: "toc-page-num", children: D })
25
26
  ] });
26
- return /* @__PURE__ */ a("li", { children: u ? /* @__PURE__ */ a(
27
+ return /* @__PURE__ */ c("li", { children: m ? /* @__PURE__ */ c(
27
28
  "a",
28
29
  {
29
- href: u,
30
+ href: m,
30
31
  className: "toc-link",
31
- onClick: (p) => {
32
- p.button !== 0 || p.ctrlKey || p.metaKey || p.shiftKey || p.altKey || (p.preventDefault(), i());
32
+ onClick: (h) => {
33
+ h.button !== 0 || h.ctrlKey || h.metaKey || h.shiftKey || h.altKey || (h.preventDefault(), u());
33
34
  },
34
- children: T
35
+ children: a
35
36
  }
36
- ) : /* @__PURE__ */ a("button", { type: "button", className: "toc-link", onClick: i, children: T }) }, n.pageIndex);
37
+ ) : /* @__PURE__ */ c("button", { type: "button", className: "toc-link", onClick: u, children: a }) }, n.pageIndex);
37
38
  };
38
- return /* @__PURE__ */ a(
39
+ return /* @__PURE__ */ c(
39
40
  "div",
40
41
  {
41
- className: `toc-page ${S ?? ""}`.trim(),
42
- style: { direction: l, textAlign: l === "rtl" ? "right" : "left" },
43
- children: /* @__PURE__ */ A("div", { className: "toc-page__scroll", children: [
44
- /* @__PURE__ */ a("h2", { className: "toc-heading", children: M }),
45
- /* @__PURE__ */ a("ul", { className: "toc-list", children: d.map((n) => {
46
- const i = () => g(n.pageIndex), u = f?.(n) ?? void 0;
47
- return k ? k(n, i, u) : C(n, i, u);
42
+ className: `toc-page ${y ?? ""}`.trim(),
43
+ style: { direction: p, textAlign: p === "rtl" ? "right" : "left" },
44
+ children: /* @__PURE__ */ O("div", { className: "toc-page__scroll", children: [
45
+ /* @__PURE__ */ c("h2", { className: "toc-heading", children: B }),
46
+ /* @__PURE__ */ c("ul", { className: "toc-list", children: x.map((n) => {
47
+ const u = () => k(n.pageIndex), m = g?.(n) ?? void 0;
48
+ return f ? f(n, u, m) : L(n, u, m);
48
49
  }) })
49
50
  ] })
50
51
  }
51
52
  );
52
- }, ce = ne(
53
+ }, ge = le(
53
54
  ({
54
- pages: g,
55
- className: c,
56
- debug: x = !1,
57
- direction: M = "ltr",
58
- mouseMode: S = "turn",
59
- mouseModeStorageKey: l,
60
- pageSemantics: E = void 0,
61
- initialTurnedLeaves: f = [],
62
- fastDeltaThreshold: k,
63
- leavesBuffer: d,
64
- pageShadow: C = !0,
65
- snapshotDuringFlip: n = !0,
66
- enableHistory: i,
67
- enableDownload: u,
68
- coverConfig: r,
69
- of: F,
70
- leafAspectRatio: T,
71
- coverAspectRatio: p,
72
- handlers: j,
73
- historyMapper: U,
74
- tocPageIndex: H,
75
- downloadConfig: V
76
- }, W) => {
77
- const [z, y] = re(() => {
78
- if (f && f.length > 0) {
79
- const t = Math.max(...f) * 2 + 1;
80
- return t >= g.length ? (Math.ceil(g.length / 2) - 1) * 2 : t;
55
+ pages: k,
56
+ className: d,
57
+ debug: T = !1,
58
+ direction: B = "ltr",
59
+ mouseMode: y = "turn",
60
+ mouseModeStorageKey: p,
61
+ pageSemantics: $ = void 0,
62
+ bookmarkProvider: g,
63
+ enableBookmarks: f = !1,
64
+ initialTurnedLeaves: x = [],
65
+ fastDeltaThreshold: L,
66
+ leavesBuffer: n,
67
+ pageShadow: u = !0,
68
+ snapshotDuringFlip: m = !0,
69
+ enableHistory: N,
70
+ enableDownload: D,
71
+ coverConfig: a,
72
+ of: h,
73
+ leafAspectRatio: z,
74
+ coverAspectRatio: G,
75
+ handlers: A,
76
+ historyMapper: J,
77
+ tocPageIndex: K,
78
+ downloadConfig: Q
79
+ }, X) => {
80
+ const [Y, _] = W(() => {
81
+ if (x && x.length > 0) {
82
+ const t = Math.max(...x) * 2 + 1;
83
+ return t >= k.length ? (Math.ceil(k.length / 2) - 1) * 2 : t;
81
84
  }
82
85
  return 0;
83
- }), R = v(y);
84
- R.current = y;
85
- const L = v(F);
86
- L.current = F;
87
- const G = 80, m = v(null), O = v((e) => {
88
- R.current?.(e);
86
+ }), w = F(_), [Z, U] = W([]);
87
+ w.current = _;
88
+ const j = F(h);
89
+ j.current = h;
90
+ const ee = 80, v = F(null), H = F((e) => {
91
+ w.current?.(e);
89
92
  });
90
- O.current = (e) => {
91
- if (m.current != null && clearTimeout(m.current), d == null) {
92
- R.current?.(e);
93
+ H.current = (e) => {
94
+ if (v.current != null && clearTimeout(v.current), n == null) {
95
+ w.current?.(e);
93
96
  return;
94
97
  }
95
- m.current = setTimeout(() => {
96
- m.current = null, R.current?.(e);
97
- }, G);
98
- }, $(() => () => {
99
- m.current != null && clearTimeout(m.current);
98
+ v.current = setTimeout(() => {
99
+ v.current = null, w.current?.(e);
100
+ }, ee);
101
+ }, S(() => () => {
102
+ v.current != null && clearTimeout(v.current);
100
103
  }, []);
101
- const s = v(
102
- new te({
103
- pageSemantics: E,
104
- pagesCount: g.length,
105
- direction: M,
106
- mouseMode: S,
107
- initialTurnedLeaves: f,
108
- fastDeltaThreshold: k,
109
- leavesBuffer: d,
110
- leafAspectRatio: T,
111
- coverAspectRatio: p,
112
- coverPageIndices: r?.coverIndices,
113
- onPageChanged: (e) => O.current(e),
114
- onPageFlipping: j?.onPageFlipping,
115
- onPageFlipped: j?.onPageFlipped,
116
- historyMapper: U,
117
- tocPageIndex: H ?? 4,
118
- downloadConfig: V,
119
- pageShadow: C,
120
- snapshotDuringFlip: n,
121
- enableHistory: i,
122
- enableDownload: u
104
+ const s = F(
105
+ new ce({
106
+ pageSemantics: $,
107
+ enableBookmarks: f,
108
+ pagesCount: k.length,
109
+ direction: B,
110
+ mouseMode: y,
111
+ initialTurnedLeaves: x,
112
+ fastDeltaThreshold: L,
113
+ leavesBuffer: n,
114
+ leafAspectRatio: z,
115
+ coverAspectRatio: G,
116
+ coverPageIndices: a?.coverIndices,
117
+ onPageChanged: (e) => H.current(e),
118
+ onPageFlipping: A?.onPageFlipping,
119
+ onPageFlipped: A?.onPageFlipped,
120
+ historyMapper: J,
121
+ tocPageIndex: K ?? 4,
122
+ downloadConfig: Q,
123
+ pageShadow: u,
124
+ snapshotDuringFlip: m,
125
+ enableHistory: N,
126
+ enableDownload: D
123
127
  })
124
128
  );
125
- oe(
126
- W,
129
+ ie(
130
+ X,
127
131
  () => ({
128
132
  flipNext: () => s.current.flipNext(),
129
133
  flipPrev: () => s.current.flipPrev(),
@@ -131,96 +135,141 @@ const ae = (g) => g.title.length > 0, ge = ({
131
135
  jumpToPage: (e) => s.current.jumpToPage(e),
132
136
  restorePage: (e) => s.current.restorePage(e),
133
137
  toggleDebugBar: () => {
134
- const e = c.split(/\s+/)[0], o = document.querySelector(`.${e}`)?.querySelector(".flipbook-debug-bar");
135
- o && o.classList.toggle("flipbook-debug-bar--hidden");
138
+ const e = d.split(/\s+/)[0], r = document.querySelector(`.${e}`)?.querySelector(".flipbook-debug-bar");
139
+ r && r.classList.toggle("flipbook-debug-bar--hidden");
136
140
  },
137
141
  getCurrentPageIndex: () => s.current.currentPageIndex,
138
142
  getTotalPages: () => s.current.totalPages,
139
- getOf: () => L.current !== void 0 ? L.current : s.current.totalPages,
143
+ getOf: () => j.current !== void 0 ? j.current : s.current.totalPages,
140
144
  isFirstPage: () => s.current.isFirstPage,
141
145
  isLastPage: () => s.current.isLastPage,
142
146
  getDownloadConfig: () => s.current.getDownloadConfig(),
143
147
  getTocPageIndex: () => s.current.getTocPageIndex(),
144
148
  getMouseMode: () => s.current.getMouseMode(),
145
149
  setMouseMode: (e) => {
146
- if (s.current.setMouseMode(e), l)
150
+ if (s.current.setMouseMode(e), p)
147
151
  try {
148
- localStorage.setItem(l, e);
152
+ localStorage.setItem(p, e);
149
153
  } catch {
150
154
  }
151
155
  }
152
156
  }),
153
- [c, l]
154
- ), $(() => {
155
- const e = s.current, t = c.split(/\s+/)[0];
156
- if (e.render(`.${t}`, x), l)
157
+ [d, p]
158
+ ), S(() => {
159
+ const e = s.current, t = d.split(/\s+/)[0];
160
+ if (e.render(`.${t}`, T), p)
157
161
  try {
158
- const o = localStorage.getItem(l);
159
- (o === "turn" || o === "select") && e.setMouseMode(o);
162
+ const r = localStorage.getItem(p);
163
+ (r === "turn" || r === "select") && e.setMouseMode(r);
160
164
  } catch {
161
165
  }
162
- return y(e.currentPageIndex), () => {
166
+ return _(e.currentPageIndex), () => {
163
167
  e.destroy();
164
168
  };
165
- }, [c, x, l]), $(() => {
166
- const e = c.split(/\s+/)[0], t = document.querySelector(`.${e}`);
167
- t && (C ? t.classList.remove("flipbook--no-page-shadow") : t.classList.add("flipbook--no-page-shadow"));
168
- }, [c, C]);
169
- const w = se.toArray(g), P = w.length, N = new Set(
170
- r?.coverIndices === "auto" ? [0, P - 1] : r?.coverIndices ?? [0]
171
- ), J = (e) => N.has(e), B = /* @__PURE__ */ new Map();
172
- if (r?.interiorCoverClassName || r?.frontInteriorCoverClassName || r?.backInteriorCoverClassName)
173
- for (const e of N) {
169
+ }, [d, T, p]);
170
+ const V = F(f);
171
+ S(() => {
172
+ V.current !== f && (V.current = f, s.current.setBookmarksEnabled(f));
173
+ }, [f]), S(() => {
174
+ const e = s.current;
175
+ if (!g) {
176
+ U([]);
177
+ return;
178
+ }
179
+ let t = !0;
180
+ const r = /* @__PURE__ */ new Map(), l = (i, C) => {
181
+ const P = `${C ? "expanded" : "brief"}:${i.id}`;
182
+ let o = r.get(P);
183
+ return o || (o = {
184
+ key: P,
185
+ bookmark: i,
186
+ element: document.createElement("span"),
187
+ renderer: C ? g.renderExpandedBookmark : g.renderBookmark
188
+ }, r.set(P, o)), o.bookmark = i, o.element;
189
+ }, b = {
190
+ ...g,
191
+ getBookmarks: (i) => {
192
+ const C = g.getBookmarks(i), P = new Set(C.map((o) => o.id));
193
+ for (const [o, I] of r)
194
+ P.has(I.bookmark.id) || r.delete(o);
195
+ return queueMicrotask(() => {
196
+ if (t) {
197
+ for (const [o, I] of r)
198
+ I.element.isConnected || r.delete(o);
199
+ U([...r.values()]);
200
+ }
201
+ }), C;
202
+ },
203
+ renderBookmark: (i) => l(i, !1),
204
+ renderExpandedBookmark: g.renderExpandedBookmark ? (i) => l(i, !0) : void 0
205
+ };
206
+ return e.setBookmarkProvider(b), () => {
207
+ t = !1, e.setBookmarkProvider(void 0);
208
+ };
209
+ }, [g]), S(() => {
210
+ const e = d.split(/\s+/)[0], t = document.querySelector(`.${e}`);
211
+ t && (u ? t.classList.remove("flipbook--no-page-shadow") : t.classList.add("flipbook--no-page-shadow"));
212
+ }, [d, u]);
213
+ const R = ue.toArray(k), M = R.length, E = new Set(
214
+ a?.coverIndices === "auto" ? [0, M - 1] : a?.coverIndices ?? [0]
215
+ ), te = (e) => E.has(e), q = /* @__PURE__ */ new Map();
216
+ if (a?.interiorCoverClassName || a?.frontInteriorCoverClassName || a?.backInteriorCoverClassName)
217
+ for (const e of E) {
174
218
  const t = e % 2 === 0 ? e + 1 : e - 1;
175
- if (t >= 0 && t < P && !N.has(t)) {
176
- const o = e === Math.min(...N) ? "front" : "back";
177
- B.set(t, o);
219
+ if (t >= 0 && t < M && !E.has(t)) {
220
+ const r = e === Math.min(...E) ? "front" : "back";
221
+ q.set(t, r);
178
222
  }
179
223
  }
180
- const K = r?.coverInset ?? "5%", Q = (e) => {
224
+ const re = a?.coverInset ?? "5%", ne = (e) => {
181
225
  const t = ["page"];
182
- J(e) && (t.push("page--cover"), r?.hardCovers && t.push("page--hard"), r?.noShadow && t.push("page--no-shadow"));
183
- const o = B.get(e);
184
- if (o) {
226
+ te(e) && (t.push("page--cover"), a?.hardCovers && t.push("page--hard"), a?.noShadow && t.push("page--no-shadow"));
227
+ const r = q.get(e);
228
+ if (r) {
185
229
  t.push("page--cover-interior");
186
- const I = o === "front" ? r?.frontInteriorCoverClassName ?? r?.interiorCoverClassName : r?.backInteriorCoverClassName ?? r?.interiorCoverClassName;
187
- I && t.push(I);
230
+ const l = r === "front" ? a?.frontInteriorCoverClassName ?? a?.interiorCoverClassName : a?.backInteriorCoverClassName ?? a?.interiorCoverClassName;
231
+ l && t.push(l);
188
232
  }
189
233
  return t.join(" ");
190
- }, X = d != null && P > 0 ? (() => {
191
- const e = Math.floor(z / 2), t = Math.ceil(P / 2), o = 2, I = Math.max(0, e - d - o), D = Math.min(t - 1, e + d + o), q = I * 2, Z = Math.min(P - 1, D * 2 + 1), _ = new Set(
192
- Array.from({ length: Z - q + 1 }, (h, b) => q + b)
234
+ }, oe = n != null && M > 0 ? (() => {
235
+ const e = Math.floor(Y / 2), t = Math.ceil(M / 2), r = 2, l = Math.max(0, e - n - r), b = Math.min(t - 1, e + n + r), i = l * 2, C = Math.min(M - 1, b * 2 + 1), P = new Set(
236
+ Array.from({ length: C - i + 1 }, (o, I) => i + I)
193
237
  );
194
- for (const h of N) {
195
- _.add(h);
196
- const b = h % 2 === 0 ? h + 1 : h - 1;
197
- b >= 0 && b < P && _.add(b);
238
+ for (const o of E) {
239
+ P.add(o);
240
+ const I = o % 2 === 0 ? o + 1 : o - 1;
241
+ I >= 0 && I < M && P.add(I);
198
242
  }
199
- return (h) => _.has(h) ? w[h] : null;
200
- })() : (e) => w[e], Y = (e) => {
201
- const t = X(e);
202
- if (B.has(e)) {
203
- const I = e % 2 === 1 !== (M === "rtl"), D = {
204
- "--cover-inset": K,
205
- ...I ? { "--cover-inset-right": "0px" } : { "--cover-inset-left": "0px" }
243
+ return (o) => P.has(o) ? R[o] : null;
244
+ })() : (e) => R[e], se = (e) => {
245
+ const t = oe(e);
246
+ if (q.has(e)) {
247
+ const l = e % 2 === 1 !== (B === "rtl"), b = {
248
+ "--cover-inset": re,
249
+ ...l ? { "--cover-inset-right": "0px" } : { "--cover-inset-left": "0px" }
206
250
  };
207
- return /* @__PURE__ */ a("div", { className: "page--cover-interior-inset", style: D, children: t });
251
+ return /* @__PURE__ */ c("div", { className: "page--cover-interior-inset", style: b, children: t });
208
252
  }
209
253
  return t;
210
254
  };
211
- return /* @__PURE__ */ a("div", { className: c, children: w.map((e, t) => /* @__PURE__ */ a(
212
- "div",
213
- {
214
- className: Q(t),
215
- children: Y(t)
216
- },
217
- `page-${t}`
218
- )) });
255
+ return /* @__PURE__ */ O("div", { className: d, children: [
256
+ R.map((e, t) => /* @__PURE__ */ c(
257
+ "div",
258
+ {
259
+ className: ne(t),
260
+ children: /* @__PURE__ */ c("div", { className: "flipbook-page-scrollport", children: /* @__PURE__ */ c("div", { className: "flipbook-page-content", dir: B, children: se(t) }) })
261
+ },
262
+ `page-${t}`
263
+ )),
264
+ Z.map(
265
+ ({ key: e, bookmark: t, element: r, renderer: l }) => de(l ? l(t) : t.label, r, e)
266
+ )
267
+ ] });
219
268
  }
220
269
  );
221
- ce.displayName = "FlipBook";
270
+ ge.displayName = "FlipBook";
222
271
  export {
223
- ce as FlipBook,
224
- ge as TocPage
272
+ ge as FlipBook,
273
+ Ie as TocPage
225
274
  };
226
275
  //# sourceMappingURL=flip-book.js.map