flipbookengine 0.6.5 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/CHANGELOG.md +24 -3
  2. package/README.md +136 -8
  3. package/dist/components/App.d.ts +19 -0
  4. package/dist/components/HotspotLayer.d.ts +14 -0
  5. package/dist/components/NotesPanel.d.ts +14 -0
  6. package/dist/components/PluginPanels.d.ts +5 -0
  7. package/dist/components/SearchPanel.d.ts +11 -0
  8. package/dist/components/Toolbar.d.ts +6 -0
  9. package/dist/components/Viewer.d.ts +6 -0
  10. package/dist/core/LayoutManager.d.ts +1 -1
  11. package/dist/core/PdfRenderer.d.ts +11 -0
  12. package/dist/core-entry.d.ts +13 -0
  13. package/dist/core.d.ts +1 -0
  14. package/dist/embed.d.ts +80 -0
  15. package/dist/engine-Dt2Fn6O-.js +4060 -0
  16. package/dist/engine-Dt2Fn6O-.js.map +1 -0
  17. package/dist/engine.d.ts +101 -0
  18. package/dist/feature-Cicli9ie.js +17 -0
  19. package/dist/feature-Cicli9ie.js.map +1 -0
  20. package/dist/flipbook-engine.core.js +8 -0
  21. package/dist/flipbook-engine.core.js.map +1 -0
  22. package/dist/flipbook-engine.css +1 -1
  23. package/dist/flipbook-engine.iife.js +56 -47
  24. package/dist/flipbook-engine.iife.js.map +1 -1
  25. package/dist/flipbook-engine.js +10 -6
  26. package/dist/flipbook-engine.js.map +1 -1
  27. package/dist/flipbook-engine.plugins-annotations.js +14 -0
  28. package/dist/flipbook-engine.plugins-annotations.js.map +1 -0
  29. package/dist/flipbook-engine.plugins-bookmarks.js +16 -0
  30. package/dist/flipbook-engine.plugins-bookmarks.js.map +1 -0
  31. package/dist/flipbook-engine.plugins-deep-link.js +14 -0
  32. package/dist/flipbook-engine.plugins-deep-link.js.map +1 -0
  33. package/dist/flipbook-engine.plugins-hotspots.js +15 -0
  34. package/dist/flipbook-engine.plugins-hotspots.js.map +1 -0
  35. package/dist/flipbook-engine.plugins-notes.js +16 -0
  36. package/dist/flipbook-engine.plugins-notes.js.map +1 -0
  37. package/dist/flipbook-engine.plugins-search.js +15 -0
  38. package/dist/flipbook-engine.plugins-search.js.map +1 -0
  39. package/dist/flipbook-engine.plugins-share.js +13 -0
  40. package/dist/flipbook-engine.plugins-share.js.map +1 -0
  41. package/dist/flipbook-engine.plugins-toc.js +14 -0
  42. package/dist/flipbook-engine.plugins-toc.js.map +1 -0
  43. package/dist/flipbook-engine.plugins.js +5 -0
  44. package/dist/flipbook-engine.plugins.js.map +1 -0
  45. package/dist/flipbook-engine.react.js +1 -1
  46. package/dist/flipbook-engine.vue.js +1 -1
  47. package/dist/i18n/locales/en.d.ts +17 -0
  48. package/dist/i18n/locales/tr.d.ts +17 -0
  49. package/dist/i18n/service.d.ts +51 -0
  50. package/dist/index-BhTR2SK6.js +366 -0
  51. package/dist/index-BhTR2SK6.js.map +1 -0
  52. package/dist/index.d.ts +7 -0
  53. package/dist/model/annotations.d.ts +14 -0
  54. package/dist/model/hotspots.d.ts +40 -0
  55. package/dist/model/search.d.ts +25 -0
  56. package/dist/plugins/annotations.d.ts +4 -0
  57. package/dist/plugins/bookmarks.d.ts +4 -0
  58. package/dist/plugins/deep-link.d.ts +4 -0
  59. package/dist/plugins/feature.d.ts +5 -0
  60. package/dist/plugins/hotspots.d.ts +4 -0
  61. package/dist/plugins/index.d.ts +65 -0
  62. package/dist/plugins/notes.d.ts +4 -0
  63. package/dist/plugins/search.d.ts +4 -0
  64. package/dist/plugins/share.d.ts +4 -0
  65. package/dist/plugins/toc.d.ts +4 -0
  66. package/dist/plugins-annotations.d.ts +1 -0
  67. package/dist/plugins-bookmarks.d.ts +1 -0
  68. package/dist/plugins-deep-link.d.ts +1 -0
  69. package/dist/plugins-hotspots.d.ts +1 -0
  70. package/dist/plugins-notes.d.ts +1 -0
  71. package/dist/plugins-search.d.ts +1 -0
  72. package/dist/plugins-share.d.ts +1 -0
  73. package/dist/plugins-toc.d.ts +1 -0
  74. package/dist/plugins.d.ts +1 -0
  75. package/dist/state/store.d.ts +19 -5
  76. package/dist/vue/index.d.ts +1 -1
  77. package/docs/api-reference.md +206 -0
  78. package/docs/frameworks.md +73 -0
  79. package/docs/getting-started.md +128 -0
  80. package/docs/i18n.md +47 -0
  81. package/docs/migration-0.4.0.md +24 -0
  82. package/docs/migration-0.5.0.md +25 -0
  83. package/docs/migration-1.0.0.md +59 -0
  84. package/docs/plugin-architecture.md +103 -0
  85. package/docs/release-checklist.md +37 -0
  86. package/docs/theming.md +61 -0
  87. package/package.json +165 -114
  88. package/dist/engine-DhQ2zxpm.js +0 -3535
  89. package/dist/engine-DhQ2zxpm.js.map +0 -1
@@ -0,0 +1,366 @@
1
+ var C = Object.defineProperty;
2
+ var B = (t, i, e) => i in t ? C(t, i, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[i] = e;
3
+ var p = (t, i, e) => B(t, typeof i != "symbol" ? i + "" : i, e);
4
+ var q = Symbol.for("preact-signals");
5
+ function S() {
6
+ if (u > 1)
7
+ u--;
8
+ else {
9
+ var t, i = !1;
10
+ for (function() {
11
+ var o = w;
12
+ for (w = void 0; o !== void 0; )
13
+ o.S.v === o.v && (o.S.i = o.i), o = o.o;
14
+ }(); c !== void 0; ) {
15
+ var e = c;
16
+ for (c = void 0, y++; e !== void 0; ) {
17
+ var r = e.u;
18
+ if (e.u = void 0, e.f &= -3, !(8 & e.f) && m(e)) try {
19
+ e.c();
20
+ } catch (o) {
21
+ i || (t = o, i = !0);
22
+ }
23
+ e = r;
24
+ }
25
+ }
26
+ if (y = 0, u--, i) throw t;
27
+ }
28
+ }
29
+ var s = void 0;
30
+ function b(t) {
31
+ var i = s;
32
+ s = void 0;
33
+ try {
34
+ return t();
35
+ } finally {
36
+ s = i;
37
+ }
38
+ }
39
+ var c = void 0, u = 0, y = 0, E = 0, w = void 0, g = 0;
40
+ function x(t) {
41
+ if (s !== void 0) {
42
+ var i = t.n;
43
+ if (i === void 0 || i.t !== s)
44
+ return i = { i: 0, S: t, p: s.s, n: void 0, t: s, e: void 0, x: void 0, r: i }, s.s !== void 0 && (s.s.n = i), s.s = i, t.n = i, 32 & s.f && t.S(i), i;
45
+ if (i.i === -1)
46
+ return i.i = 0, i.n !== void 0 && (i.n.p = i.p, i.p !== void 0 && (i.p.n = i.n), i.p = s.s, i.n = void 0, s.s.n = i, s.s = i), i;
47
+ }
48
+ }
49
+ function h(t, i) {
50
+ this.v = t, this.i = 0, this.n = void 0, this.t = void 0, this.l = 0, this.W = i == null ? void 0 : i.watched, this.Z = i == null ? void 0 : i.unwatched, this.name = i == null ? void 0 : i.name;
51
+ }
52
+ h.prototype.brand = q;
53
+ h.prototype.h = function() {
54
+ return !0;
55
+ };
56
+ h.prototype.S = function(t) {
57
+ var i = this, e = this.t;
58
+ e !== t && t.e === void 0 && (t.x = e, this.t = t, e !== void 0 ? e.e = t : b(function() {
59
+ var r;
60
+ (r = i.W) == null || r.call(i);
61
+ }));
62
+ };
63
+ h.prototype.U = function(t) {
64
+ var i = this;
65
+ if (this.t !== void 0) {
66
+ var e = t.e, r = t.x;
67
+ e !== void 0 && (e.x = r, t.e = void 0), r !== void 0 && (r.e = e, t.x = void 0), t === this.t && (this.t = r, r === void 0 && b(function() {
68
+ var o;
69
+ (o = i.Z) == null || o.call(i);
70
+ }));
71
+ }
72
+ };
73
+ h.prototype.subscribe = function(t) {
74
+ var i = this;
75
+ return F(function() {
76
+ var e = i.value;
77
+ b(function() {
78
+ return t(e);
79
+ });
80
+ }, { name: "sub" });
81
+ };
82
+ h.prototype.valueOf = function() {
83
+ return this.value;
84
+ };
85
+ h.prototype.toString = function() {
86
+ return this.value + "";
87
+ };
88
+ h.prototype.toJSON = function() {
89
+ return this.value;
90
+ };
91
+ h.prototype.peek = function() {
92
+ var t = this;
93
+ return b(function() {
94
+ return t.value;
95
+ });
96
+ };
97
+ Object.defineProperty(h.prototype, "value", { get: function() {
98
+ var t = x(this);
99
+ return t !== void 0 && (t.i = this.i), this.v;
100
+ }, set: function(t) {
101
+ if (t !== this.v) {
102
+ if (y > 100) throw new Error("Cycle detected");
103
+ (function(e) {
104
+ u !== 0 && y === 0 && e.l !== E && (e.l = E, w = { S: e, v: e.v, i: e.i, o: w });
105
+ })(this), this.v = t, this.i++, g++, u++;
106
+ try {
107
+ for (var i = this.t; i !== void 0; i = i.x) i.t.N();
108
+ } finally {
109
+ S();
110
+ }
111
+ }
112
+ } });
113
+ function I(t, i) {
114
+ return new h(t, i);
115
+ }
116
+ function m(t) {
117
+ for (var i = t.s; i !== void 0; i = i.n) if (i.S.i !== i.i || !i.S.h() || i.S.i !== i.i) return !0;
118
+ return !1;
119
+ }
120
+ function k(t) {
121
+ for (var i = t.s; i !== void 0; i = i.n) {
122
+ var e = i.S.n;
123
+ if (e !== void 0 && (i.r = e), i.S.n = i, i.i = -1, i.n === void 0) {
124
+ t.s = i;
125
+ break;
126
+ }
127
+ }
128
+ }
129
+ function $(t) {
130
+ for (var i = t.s, e = void 0; i !== void 0; ) {
131
+ var r = i.p;
132
+ i.i === -1 ? (i.S.U(i), r !== void 0 && (r.n = i.n), i.n !== void 0 && (i.n.p = r)) : e = i, i.S.n = i.r, i.r !== void 0 && (i.r = void 0), i = r;
133
+ }
134
+ t.s = e;
135
+ }
136
+ function l(t, i) {
137
+ h.call(this, void 0, i), this.x = t, this.s = void 0, this.g = g - 1, this.f = 4;
138
+ }
139
+ l.prototype = new h();
140
+ l.prototype.h = function() {
141
+ if (this.f &= -3, 1 & this.f) return !1;
142
+ if ((36 & this.f) == 32 || (this.f &= -5, this.g === g)) return !0;
143
+ if (this.g = g, this.f |= 1, this.i > 0 && !m(this))
144
+ return this.f &= -2, !0;
145
+ var t = s;
146
+ try {
147
+ k(this), s = this;
148
+ var i = this.x();
149
+ (16 & this.f || this.v !== i || this.i === 0) && (this.v = i, this.f &= -17, this.i++);
150
+ } catch (e) {
151
+ this.v = e, this.f |= 16, this.i++;
152
+ }
153
+ return s = t, $(this), this.f &= -2, !0;
154
+ };
155
+ l.prototype.S = function(t) {
156
+ if (this.t === void 0) {
157
+ this.f |= 36;
158
+ for (var i = this.s; i !== void 0; i = i.n) i.S.S(i);
159
+ }
160
+ h.prototype.S.call(this, t);
161
+ };
162
+ l.prototype.U = function(t) {
163
+ if (this.t !== void 0 && (h.prototype.U.call(this, t), this.t === void 0)) {
164
+ this.f &= -33;
165
+ for (var i = this.s; i !== void 0; i = i.n) i.S.U(i);
166
+ }
167
+ };
168
+ l.prototype.N = function() {
169
+ if (!(2 & this.f)) {
170
+ this.f |= 6;
171
+ for (var t = this.t; t !== void 0; t = t.x) t.t.N();
172
+ }
173
+ };
174
+ Object.defineProperty(l.prototype, "value", { get: function() {
175
+ if (1 & this.f) throw new Error("Cycle detected");
176
+ var t = x(this);
177
+ if (this.h(), t !== void 0 && (t.i = this.i), 16 & this.f) throw this.v;
178
+ return this.v;
179
+ } });
180
+ function M(t, i) {
181
+ return new l(t, i);
182
+ }
183
+ function A(t) {
184
+ var i = t.m;
185
+ if (t.m = void 0, typeof i == "function") {
186
+ u++;
187
+ var e = s;
188
+ s = void 0;
189
+ try {
190
+ i();
191
+ } catch (r) {
192
+ throw t.f &= -2, t.f |= 8, P(t), r;
193
+ } finally {
194
+ s = e, S();
195
+ }
196
+ }
197
+ }
198
+ function P(t) {
199
+ for (var i = t.s; i !== void 0; i = i.n) i.S.U(i);
200
+ t.x = void 0, t.s = void 0, A(t);
201
+ }
202
+ function U(t) {
203
+ if (s !== this) throw new Error("Out-of-order effect");
204
+ $(this), s = t, this.f &= -2, 8 & this.f && P(this), S();
205
+ }
206
+ function d(t, i) {
207
+ this.x = t, this.m = void 0, this.s = void 0, this.u = void 0, this.f = 32, this.name = i == null ? void 0 : i.name;
208
+ }
209
+ d.prototype.c = function() {
210
+ var t = this.S();
211
+ try {
212
+ if (8 & this.f || this.x === void 0) return;
213
+ var i = this.x();
214
+ typeof i == "function" && (this.m = i);
215
+ } finally {
216
+ t();
217
+ }
218
+ };
219
+ d.prototype.S = function() {
220
+ if (1 & this.f) throw new Error("Cycle detected");
221
+ this.f |= 1, this.f &= -9, A(this), k(this), u++;
222
+ var t = s;
223
+ return s = this, U.bind(this, t);
224
+ };
225
+ d.prototype.N = function() {
226
+ 2 & this.f || (this.f |= 2, this.u = c, c = this);
227
+ };
228
+ d.prototype.d = function() {
229
+ this.f |= 8, 1 & this.f || P(this);
230
+ };
231
+ d.prototype.dispose = function() {
232
+ this.d();
233
+ };
234
+ function F(t, i) {
235
+ var e = new d(t, i);
236
+ try {
237
+ e.c();
238
+ } catch (o) {
239
+ throw e.d(), o;
240
+ }
241
+ var r = e.d.bind(e);
242
+ return r[Symbol.dispose] = r, r;
243
+ }
244
+ /**
245
+ * @license FlipbookEngine v1.0.0
246
+ * Copyright (c) 2026 Murat Dogan
247
+ * SPDX-License-Identifier: AGPL-3.0-or-later
248
+ */
249
+ class N {
250
+ constructor() {
251
+ p(this, "version", I(0));
252
+ p(this, "activePanelId", I(null));
253
+ p(this, "plugins", /* @__PURE__ */ new Map());
254
+ }
255
+ install(i, e) {
256
+ const r = String((e == null ? void 0 : e.name) || "").trim();
257
+ if (!r) throw new Error("Flipbook plugin name is required.");
258
+ if (this.plugins.has(r)) throw new Error(`Flipbook plugin "${r}" is already installed.`);
259
+ const o = {
260
+ plugin: e,
261
+ context: void 0,
262
+ cleanups: /* @__PURE__ */ new Set(),
263
+ toolbarButtons: /* @__PURE__ */ new Map(),
264
+ panels: /* @__PURE__ */ new Map(),
265
+ apis: /* @__PURE__ */ new Map()
266
+ }, v = {
267
+ engine: i,
268
+ pluginName: r,
269
+ activePanelId: this.activePanelId,
270
+ registerToolbarButton: (n) => {
271
+ const a = this.requireContributionId(n == null ? void 0 : n.id, "toolbar button");
272
+ if (o.toolbarButtons.has(a)) throw new Error(`Plugin "${r}" already registered toolbar button "${a}".`);
273
+ return o.toolbarButtons.set(a, n), this.version.value++, () => {
274
+ o.toolbarButtons.delete(a) && this.version.value++;
275
+ };
276
+ },
277
+ registerPanel: (n) => {
278
+ const a = this.requireContributionId(n == null ? void 0 : n.id, "panel");
279
+ if (o.panels.has(a)) throw new Error(`Plugin "${r}" already registered panel "${a}".`);
280
+ return o.panels.set(a, n), this.version.value++, () => {
281
+ o.panels.delete(a) && (this.activePanelId.value === this.key(r, a) && (this.activePanelId.value = null), this.version.value++);
282
+ };
283
+ },
284
+ registerApi: (n, a) => {
285
+ const f = this.requireContributionId(n, "API");
286
+ if (o.apis.has(f)) throw new Error(`Plugin "${r}" already registered API "${f}".`);
287
+ return o.apis.set(f, a), this.version.value++, () => {
288
+ o.apis.delete(f) && this.version.value++;
289
+ };
290
+ },
291
+ on: (n, a) => {
292
+ const f = i.on(n, a);
293
+ return o.cleanups.add(f), () => {
294
+ o.cleanups.delete(f), f();
295
+ };
296
+ },
297
+ openPanel: (n) => {
298
+ const a = this.requireContributionId(n, "panel");
299
+ if (!o.panels.has(a)) throw new Error(`Plugin "${r}" has no panel "${a}".`);
300
+ this.activePanelId.value = this.key(r, a);
301
+ },
302
+ closePanel: (n) => {
303
+ const a = n ? this.key(r, n) : null;
304
+ (!n || this.activePanelId.value === a) && (this.activePanelId.value = null);
305
+ },
306
+ addCleanup: (n) => {
307
+ typeof n == "function" && o.cleanups.add(n);
308
+ }
309
+ };
310
+ o.context = v, this.plugins.set(r, o);
311
+ try {
312
+ const n = e.install(i, v);
313
+ typeof n == "function" && o.cleanups.add(n);
314
+ } catch (n) {
315
+ throw this.plugins.delete(r), o.cleanups.forEach((a) => a()), n;
316
+ }
317
+ this.version.value++;
318
+ }
319
+ uninstall(i) {
320
+ var r;
321
+ const e = this.plugins.get(i);
322
+ return e ? ((r = this.activePanelId.value) != null && r.startsWith(i + ":") && (this.activePanelId.value = null), e.cleanups.forEach((o) => o()), e.toolbarButtons.clear(), e.panels.clear(), e.apis.clear(), this.plugins.delete(i), this.version.value++, !0) : !1;
323
+ }
324
+ clear() {
325
+ Array.from(this.plugins.keys()).forEach((i) => this.uninstall(i));
326
+ }
327
+ getPluginNames() {
328
+ return Array.from(this.plugins.keys());
329
+ }
330
+ getToolbarButtons() {
331
+ const i = [];
332
+ return this.plugins.forEach((e, r) => e.toolbarButtons.forEach((o, v) => {
333
+ i.push({ ...o, pluginName: r, key: this.key(r, v) });
334
+ })), i;
335
+ }
336
+ getPanels() {
337
+ const i = [];
338
+ return this.plugins.forEach((e, r) => e.panels.forEach((o, v) => {
339
+ i.push({ ...o, pluginName: r, key: this.key(r, v) });
340
+ })), i;
341
+ }
342
+ getApi(i, e) {
343
+ var r;
344
+ return (r = this.plugins.get(i)) == null ? void 0 : r.apis.get(e);
345
+ }
346
+ async callApi(i, e, ...r) {
347
+ const o = this.getApi(i, e);
348
+ if (!o) throw new Error(`Plugin API "${i}.${e}" is not registered.`);
349
+ return await o(...r);
350
+ }
351
+ key(i, e) {
352
+ return `${i}:${e}`;
353
+ }
354
+ requireContributionId(i, e) {
355
+ const r = String(i || "").trim();
356
+ if (!r) throw new Error(`Flipbook plugin ${e} id is required.`);
357
+ return r;
358
+ }
359
+ }
360
+ export {
361
+ N as F,
362
+ M as g,
363
+ F as j,
364
+ I as y
365
+ };
366
+ //# sourceMappingURL=index-BhTR2SK6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BhTR2SK6.js","sources":["../node_modules/@preact/signals-core/dist/signals-core.module.js","../src/plugins/index.ts"],"sourcesContent":["var i=Symbol.for(\"preact-signals\");function t(){if(!(s>1)){var i,t=!1;!function(){var i=c;c=void 0;while(void 0!==i){if(i.S.v===i.v)i.S.i=i.i;i=i.o}}();while(void 0!==h){var n=h;h=void 0;v++;while(void 0!==n){var r=n.u;n.u=void 0;n.f&=-3;if(!(8&n.f)&&w(n))try{n.c()}catch(n){if(!t){i=n;t=!0}}n=r}}v=0;s--;if(t)throw i}else s--}function n(i){if(s>0)return i();e=++u;s++;try{return i()}finally{t()}}var r=void 0;function o(i){var t=r;r=void 0;try{return i()}finally{r=t}}var f,h=void 0,s=0,v=0,u=0,e=0,c=void 0,d=0;function a(i){if(void 0!==r){var t=i.n;if(void 0===t||t.t!==r){t={i:0,S:i,p:r.s,n:void 0,t:r,e:void 0,x:void 0,r:t};if(void 0!==r.s)r.s.n=t;r.s=t;i.n=t;if(32&r.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=r.s;t.n=void 0;r.s.n=t;r.s=t}return t}}}function l(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.l=0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name}l.prototype.brand=i;l.prototype.h=function(){return!0};l.prototype.S=function(i){var t=this,n=this.t;if(n!==i&&void 0===i.e){i.x=n;this.t=i;if(void 0!==n)n.e=i;else o(function(){var i;null==(i=t.W)||i.call(t)})}};l.prototype.U=function(i){var t=this;if(void 0!==this.t){var n=i.e,r=i.x;if(void 0!==n){n.x=r;i.e=void 0}if(void 0!==r){r.e=n;i.x=void 0}if(i===this.t){this.t=r;if(void 0===r)o(function(){var i;null==(i=t.Z)||i.call(t)})}}};l.prototype.subscribe=function(i){var t=this;return j(function(){var n=t.value;o(function(){return i(n)})},{name:\"sub\"})};l.prototype.valueOf=function(){return this.value};l.prototype.toString=function(){return this.value+\"\"};l.prototype.toJSON=function(){return this.value};l.prototype.peek=function(){var i=this;return o(function(){return i.value})};Object.defineProperty(l.prototype,\"value\",{get:function(){var i=a(this);if(void 0!==i)i.i=this.i;return this.v},set:function(i){if(i!==this.v){if(v>100)throw new Error(\"Cycle detected\");!function(i){if(0!==s&&0===v)if(i.l!==e){i.l=e;c={S:i,v:i.v,i:i.i,o:c}}}(this);this.v=i;this.i++;d++;s++;try{for(var n=this.t;void 0!==n;n=n.x)n.t.N()}finally{t()}}}});function y(i,t){return new l(i,t)}function w(i){for(var t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function _(i){for(var t=i.s;void 0!==t;t=t.n){var n=t.S.n;if(void 0!==n)t.r=n;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function b(i){var t=i.s,n=void 0;while(void 0!==t){var r=t.p;if(-1===t.i){t.S.U(t);if(void 0!==r)r.n=t.n;if(void 0!==t.n)t.n.p=r}else n=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=r}i.s=n}function p(i,t){l.call(this,void 0,t);this.x=i;this.s=void 0;this.g=d-1;this.f=4}p.prototype=new l;p.prototype.h=function(){this.f&=-3;if(1&this.f)return!1;if(32==(36&this.f))return!0;this.f&=-5;if(this.g===d)return!0;this.g=d;this.f|=1;if(this.i>0&&!w(this)){this.f&=-2;return!0}var i=r;try{_(this);r=this;var t=this.x();if(16&this.f||this.v!==t||0===this.i){this.v=t;this.f&=-17;this.i++}}catch(i){this.v=i;this.f|=16;this.i++}r=i;b(this);this.f&=-2;return!0};p.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t)}l.prototype.S.call(this,i)};p.prototype.U=function(i){if(void 0!==this.t){l.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t)}}};p.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var i=this.t;void 0!==i;i=i.x)i.t.N()}};Object.defineProperty(p.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=a(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function g(i,t){return new p(i,t)}function S(i){var n=i.m;i.m=void 0;if(\"function\"==typeof n){s++;var o=r;r=void 0;try{n()}catch(t){i.f&=-2;i.f|=8;m(i);throw t}finally{r=o;t()}}}function m(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;S(i)}function x(i){if(r!==this)throw new Error(\"Out-of-order effect\");b(this);r=i;this.f&=-2;if(8&this.f)m(this);t()}function E(i,t){this.x=i;this.m=void 0;this.s=void 0;this.u=void 0;this.f=32;this.name=null==t?void 0:t.name;if(f)f.push(this)}E.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if(\"function\"==typeof t)this.m=t}finally{i()}};E.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;S(this);_(this);s++;var i=r;r=this;return x.bind(this,i)};E.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.u=h;h=this}};E.prototype.d=function(){this.f|=8;if(!(1&this.f))m(this)};E.prototype.dispose=function(){this.d()};function j(i,t){var n=new E(i,t);try{n.c()}catch(i){n.d();throw i}var r=n.d.bind(n);r[Symbol.dispose]=r;return r}function C(i){return function(){var t=arguments,r=this;return n(function(){return o(function(){return i.apply(r,[].slice.call(t))})})}}function O(){var i=f;f=[];return function(){var t=f;if(f&&i)i=i.concat(f);f=i;return t}}var k=function(i){for(var t in i){var n=i[t];if(\"function\"==typeof n)i[t]=C(n);else if(\"object\"==typeof n&&null!==n&&!(\"brand\"in n))k(n)}};function T(i){return function(){var t,n,r=O();try{n=i.apply(void 0,[].slice.call(arguments))}catch(i){f=void 0;throw i}finally{t=r()}k(n);n[Symbol.dispose]=C(function(){if(t)for(var i=0;i<t.length;i++)t[i].dispose();t=void 0});return n}}export{p as Computed,E as Effect,l as Signal,C as action,n as batch,g as computed,T as createModel,j as effect,y as signal,o as untracked};//# sourceMappingURL=signals-core.module.js.map\n","/**\n * @license FlipbookEngine v1.0.0\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { signal, type Signal } from '@preact/signals-core';\nimport type {\n FlipbookEngine,\n FlipbookEngineEventMap,\n FlipbookEngineEventName\n} from '../engine';\n\nexport type FlipbookPluginEventHandler<T extends FlipbookEngineEventName> =\n (payload: FlipbookEngineEventMap[T]) => void;\n\nexport interface FlipbookPluginToolbarButton {\n /** Stable identifier within the plugin namespace. */\n id: string;\n /** Visible label. Keep this short; hosts can localize it before registration. */\n label: string;\n title?: string;\n /** Optional text/icon token rendered by the built-in toolbar. */\n icon?: string;\n /** Toolbar group placement. */\n placement?: 'start' | 'end';\n disabled?: boolean | (() => boolean);\n onClick: () => void;\n}\n\nexport interface FlipbookPluginPanel {\n /** Stable identifier within the plugin namespace. */\n id: string;\n title?: string;\n /** Called when the panel is mounted. Return a cleanup function when needed. */\n render: (container: HTMLElement) => void | (() => void);\n}\n\nexport type FlipbookPluginApiHandler = (...args: any[]) => unknown | Promise<unknown>;\n\nexport interface FlipbookPluginContext {\n readonly engine: FlipbookEngine;\n readonly pluginName: string;\n readonly activePanelId: Signal<string | null>;\n registerToolbarButton(button: FlipbookPluginToolbarButton): () => void;\n registerPanel(panel: FlipbookPluginPanel): () => void;\n registerApi<T extends FlipbookPluginApiHandler>(name: string, handler: T): () => void;\n on<T extends FlipbookEngineEventName>(eventName: T, handler: FlipbookPluginEventHandler<T>): () => void;\n openPanel(id: string): void;\n closePanel(id?: string): void;\n addCleanup(cleanup: () => void): void;\n}\n\nexport interface FlipbookPlugin {\n /** Stable plugin namespace. Duplicate names are rejected. */\n name: string;\n /** Installs contributions and may return an additional cleanup callback. */\n install: (engine: FlipbookEngine, context: FlipbookPluginContext) => void | (() => void);\n}\n\ninterface RegisteredPlugin {\n plugin: FlipbookPlugin;\n context: FlipbookPluginContext;\n cleanups: Set<() => void>;\n toolbarButtons: Map<string, FlipbookPluginToolbarButton>;\n panels: Map<string, FlipbookPluginPanel>;\n apis: Map<string, FlipbookPluginApiHandler>;\n}\n\n/** Internal registry exposed to UI components through the engine. */\nexport class FlipbookPluginRegistry {\n readonly version = signal(0);\n readonly activePanelId = signal<string | null>(null);\n private readonly plugins = new Map<string, RegisteredPlugin>();\n\n install(engine: FlipbookEngine, plugin: FlipbookPlugin): void {\n const name = String(plugin?.name || '').trim();\n if (!name) throw new Error('Flipbook plugin name is required.');\n if (this.plugins.has(name)) throw new Error(`Flipbook plugin \"${name}\" is already installed.`);\n\n const registered: RegisteredPlugin = {\n plugin,\n context: undefined as unknown as FlipbookPluginContext,\n cleanups: new Set(),\n toolbarButtons: new Map(),\n panels: new Map(),\n apis: new Map()\n };\n\n const context: FlipbookPluginContext = {\n engine,\n pluginName: name,\n activePanelId: this.activePanelId,\n registerToolbarButton: (button) => {\n const id = this.requireContributionId(button?.id, 'toolbar button');\n if (registered.toolbarButtons.has(id)) throw new Error(`Plugin \"${name}\" already registered toolbar button \"${id}\".`);\n registered.toolbarButtons.set(id, button);\n this.version.value++;\n return () => {\n if (registered.toolbarButtons.delete(id)) this.version.value++;\n };\n },\n registerPanel: (panel) => {\n const id = this.requireContributionId(panel?.id, 'panel');\n if (registered.panels.has(id)) throw new Error(`Plugin \"${name}\" already registered panel \"${id}\".`);\n registered.panels.set(id, panel);\n this.version.value++;\n return () => {\n if (registered.panels.delete(id)) {\n if (this.activePanelId.value === this.key(name, id)) this.activePanelId.value = null;\n this.version.value++;\n }\n };\n },\n registerApi: (id, handler) => {\n const apiId = this.requireContributionId(id, 'API');\n if (registered.apis.has(apiId)) throw new Error(`Plugin \"${name}\" already registered API \"${apiId}\".`);\n registered.apis.set(apiId, handler);\n this.version.value++;\n return () => {\n if (registered.apis.delete(apiId)) this.version.value++;\n };\n },\n on: (eventName, handler) => {\n const unsubscribe = engine.on(eventName, handler);\n registered.cleanups.add(unsubscribe);\n return () => {\n registered.cleanups.delete(unsubscribe);\n unsubscribe();\n };\n },\n openPanel: (id) => {\n const panelId = this.requireContributionId(id, 'panel');\n if (!registered.panels.has(panelId)) throw new Error(`Plugin \"${name}\" has no panel \"${panelId}\".`);\n this.activePanelId.value = this.key(name, panelId);\n },\n closePanel: (id) => {\n const expected = id ? this.key(name, id) : null;\n if (!id || this.activePanelId.value === expected) this.activePanelId.value = null;\n },\n addCleanup: (cleanup) => {\n if (typeof cleanup === 'function') registered.cleanups.add(cleanup);\n }\n };\n\n registered.context = context;\n this.plugins.set(name, registered);\n try {\n const cleanup = plugin.install(engine, context);\n if (typeof cleanup === 'function') registered.cleanups.add(cleanup);\n }\n catch (error) {\n this.plugins.delete(name);\n registered.cleanups.forEach((cleanup) => cleanup());\n throw error;\n }\n this.version.value++;\n }\n\n uninstall(name: string): boolean {\n const registered = this.plugins.get(name);\n if (!registered) return false;\n if (this.activePanelId.value?.startsWith(name + ':')) this.activePanelId.value = null;\n registered.cleanups.forEach((cleanup) => cleanup());\n registered.toolbarButtons.clear();\n registered.panels.clear();\n registered.apis.clear();\n this.plugins.delete(name);\n this.version.value++;\n return true;\n }\n\n clear(): void {\n Array.from(this.plugins.keys()).forEach((name) => this.uninstall(name));\n }\n\n getPluginNames(): string[] {\n return Array.from(this.plugins.keys());\n }\n\n getToolbarButtons(): Array<FlipbookPluginToolbarButton & { pluginName: string; key: string }> {\n const result: Array<FlipbookPluginToolbarButton & { pluginName: string; key: string }> = [];\n this.plugins.forEach((registered, pluginName) => registered.toolbarButtons.forEach((button, id) => {\n result.push({ ...button, pluginName, key: this.key(pluginName, id) });\n }));\n return result;\n }\n\n getPanels(): Array<FlipbookPluginPanel & { pluginName: string; key: string }> {\n const result: Array<FlipbookPluginPanel & { pluginName: string; key: string }> = [];\n this.plugins.forEach((registered, pluginName) => registered.panels.forEach((panel, id) => {\n result.push({ ...panel, pluginName, key: this.key(pluginName, id) });\n }));\n return result;\n }\n\n getApi<T extends FlipbookPluginApiHandler>(pluginName: string, id: string): T | undefined {\n return this.plugins.get(pluginName)?.apis.get(id) as T | undefined;\n }\n\n async callApi<T = unknown>(pluginName: string, id: string, ...args: any[]): Promise<T> {\n const handler = this.getApi(pluginName, id);\n if (!handler) throw new Error(`Plugin API \"${pluginName}.${id}\" is not registered.`);\n return await handler(...args) as T;\n }\n\n private key(pluginName: string, id: string): string {\n return `${pluginName}:${id}`;\n }\n\n private requireContributionId(id: string | undefined, kind: string): string {\n const normalized = String(id || '').trim();\n if (!normalized) throw new Error(`Flipbook plugin ${kind} id is required.`);\n return normalized;\n }\n}\n\n"],"names":["i","t","s","c","h","n","v","w","r","o","e","d","a","l","j","y","_","b","p","g","S","m","x","E","FlipbookPluginRegistry","__publicField","signal","engine","plugin","name","registered","context","button","id","panel","handler","apiId","eventName","unsubscribe","panelId","expected","cleanup","error","_a","result","pluginName","args","kind","normalized"],"mappings":"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","x_google_ignoreList":[0]}
package/dist/index.d.ts CHANGED
@@ -7,9 +7,16 @@
7
7
  export { FlipbookEngine, type FlipbookEngineOptions, type FlipbookLocaleMessages, type PageImages, type FlipbookEngineEventMap, type FlipbookEngineEventName } from './engine';
8
8
  export type { FlipbookPageAsset, FlipbookPageKind, FlipbookCropMode, FlipbookSplitDirection, NormalizedFlipbookPage } from './model/pages';
9
9
  export type { FlipbookTocEntry } from './model/toc';
10
+ export type { FlipbookSearchHighlight, FlipbookSearchResult, FlipbookSearchOptions } from './model/search';
11
+ export type { FlipbookHotspot, FlipbookHotspotKind, FlipbookHotspotMedia, FlipbookHotspotMediaType, FlipbookHotspotGalleryItem } from './model/hotspots';
12
+ export type { FlipbookAnnotation } from './model/annotations';
13
+ export { FlipbookPluginRegistry } from './plugins';
14
+ export type { FlipbookPlugin, FlipbookPluginContext, FlipbookPluginApiHandler, FlipbookPluginEventHandler, FlipbookPluginPanel, FlipbookPluginToolbarButton } from './plugins';
10
15
  export { normalizeFlipbookToc } from './model/toc';
11
16
  export { normalizeFlipbookPages, isFlipbookPageAsset } from './model/pages';
12
17
  export type { FlipbookLocale, FlipbookMessages, PartialFlipbookMessages } from './i18n/service';
13
18
  export type { FlipbookThemeMode, FlipbookBackgroundStyle, FlipbookBackgrounds } from './theme/theme';
14
19
  export type { PdfPageMode, PdfPageLayout } from './core/PdfRenderer';
15
20
  export { isA3Landscape } from './core/PdfRenderer';
21
+ export { FlipbookEmbedBridge, createFlipbookEmbedController } from './embed';
22
+ export type { FlipbookEmbedOptions, FlipbookEmbedCommandName, FlipbookEmbedCommand, FlipbookEmbedEvent, FlipbookEmbedResponse, FlipbookEmbedState, FlipbookEmbedController } from './embed';
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license FlipbookEngine v1.0.0
3
+ * Copyright (c) 2026 Murat Dogan
4
+ * SPDX-License-Identifier: AGPL-3.0-or-later
5
+ */
6
+ /** A host-provided note marker anchored to a logical page using 0..1 coordinates. */
7
+ export interface FlipbookAnnotation {
8
+ id: string;
9
+ pageIndex: number;
10
+ x: number;
11
+ y: number;
12
+ text: string;
13
+ color?: string;
14
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @license FlipbookEngine v1.0.0
3
+ * Copyright (c) 2026 Murat Dogan
4
+ * SPDX-License-Identifier: AGPL-3.0-or-later
5
+ */
6
+ export type FlipbookHotspotKind = 'info' | 'media' | 'gallery' | 'commerce';
7
+ export type FlipbookHotspotMediaType = 'image' | 'video' | 'audio';
8
+ export interface FlipbookHotspotMedia {
9
+ type: FlipbookHotspotMediaType;
10
+ src: string;
11
+ alt?: string;
12
+ poster?: string;
13
+ }
14
+ export interface FlipbookHotspotGalleryItem {
15
+ src: string;
16
+ alt?: string;
17
+ href?: string;
18
+ target?: string;
19
+ }
20
+ /** An interactive overlay anchored to a logical page. Coordinates are 0..1. */
21
+ export interface FlipbookHotspot {
22
+ id: string;
23
+ pageIndex: number;
24
+ x: number;
25
+ y: number;
26
+ width: number;
27
+ height: number;
28
+ label: string;
29
+ /** Controls the semantic presentation in the popup. */
30
+ kind?: FlipbookHotspotKind;
31
+ /** Plain-text description; HTML is never interpreted. */
32
+ content?: string;
33
+ /** Optional commerce/product destination. */
34
+ href?: string;
35
+ target?: string;
36
+ /** Optional single image, video, or audio preview. */
37
+ media?: FlipbookHotspotMedia;
38
+ /** Optional gallery of image previews. */
39
+ gallery?: FlipbookHotspotGalleryItem[];
40
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license FlipbookEngine v1.0.0
3
+ * Copyright (c) 2026 Murat Dogan
4
+ * SPDX-License-Identifier: AGPL-3.0-or-later
5
+ */
6
+ /** A normalized text rectangle returned by the client-side PDF text search. */
7
+ export interface FlipbookSearchHighlight {
8
+ x: number;
9
+ y: number;
10
+ width: number;
11
+ height: number;
12
+ }
13
+ /** A page-level match returned by the client-side PDF text search. */
14
+ export interface FlipbookSearchResult {
15
+ pageIndex: number;
16
+ pageNumber: number;
17
+ matches: number;
18
+ snippet: string;
19
+ sourcePageNumber?: number;
20
+ highlights?: FlipbookSearchHighlight[];
21
+ }
22
+ export interface FlipbookSearchOptions {
23
+ caseSensitive?: boolean;
24
+ maxResults?: number;
25
+ }
@@ -0,0 +1,4 @@
1
+ import { FlipbookPlugin } from './index';
2
+
3
+ export declare function createAnnotationsPlugin(): FlipbookPlugin;
4
+ export declare const annotationsPlugin: FlipbookPlugin;
@@ -0,0 +1,4 @@
1
+ import { FlipbookPlugin } from './index';
2
+
3
+ export declare function createBookmarksPlugin(): FlipbookPlugin;
4
+ export declare const bookmarksPlugin: FlipbookPlugin;
@@ -0,0 +1,4 @@
1
+ import { FlipbookPlugin } from './index';
2
+
3
+ export declare function createDeepLinkPlugin(): FlipbookPlugin;
4
+ export declare const deepLinkPlugin: FlipbookPlugin;
@@ -0,0 +1,5 @@
1
+ import { FlipbookEngine } from '../engine';
2
+ import { FlipbookPlugin, FlipbookPluginApiHandler, FlipbookPluginContext } from './index';
3
+
4
+ export type FeatureApiFactory = (engine: FlipbookEngine, context: FlipbookPluginContext) => Record<string, FlipbookPluginApiHandler>;
5
+ export declare function createFeaturePlugin(name: string, factory: FeatureApiFactory): FlipbookPlugin;
@@ -0,0 +1,4 @@
1
+ import { FlipbookPlugin } from './index';
2
+
3
+ export declare function createHotspotsPlugin(): FlipbookPlugin;
4
+ export declare const hotspotsPlugin: FlipbookPlugin;
@@ -0,0 +1,65 @@
1
+ import { Signal } from '@preact/signals-core';
2
+ import { FlipbookEngine, FlipbookEngineEventMap, FlipbookEngineEventName } from '../engine';
3
+
4
+ export type FlipbookPluginEventHandler<T extends FlipbookEngineEventName> = (payload: FlipbookEngineEventMap[T]) => void;
5
+ export interface FlipbookPluginToolbarButton {
6
+ /** Stable identifier within the plugin namespace. */
7
+ id: string;
8
+ /** Visible label. Keep this short; hosts can localize it before registration. */
9
+ label: string;
10
+ title?: string;
11
+ /** Optional text/icon token rendered by the built-in toolbar. */
12
+ icon?: string;
13
+ /** Toolbar group placement. */
14
+ placement?: 'start' | 'end';
15
+ disabled?: boolean | (() => boolean);
16
+ onClick: () => void;
17
+ }
18
+ export interface FlipbookPluginPanel {
19
+ /** Stable identifier within the plugin namespace. */
20
+ id: string;
21
+ title?: string;
22
+ /** Called when the panel is mounted. Return a cleanup function when needed. */
23
+ render: (container: HTMLElement) => void | (() => void);
24
+ }
25
+ export type FlipbookPluginApiHandler = (...args: any[]) => unknown | Promise<unknown>;
26
+ export interface FlipbookPluginContext {
27
+ readonly engine: FlipbookEngine;
28
+ readonly pluginName: string;
29
+ readonly activePanelId: Signal<string | null>;
30
+ registerToolbarButton(button: FlipbookPluginToolbarButton): () => void;
31
+ registerPanel(panel: FlipbookPluginPanel): () => void;
32
+ registerApi<T extends FlipbookPluginApiHandler>(name: string, handler: T): () => void;
33
+ on<T extends FlipbookEngineEventName>(eventName: T, handler: FlipbookPluginEventHandler<T>): () => void;
34
+ openPanel(id: string): void;
35
+ closePanel(id?: string): void;
36
+ addCleanup(cleanup: () => void): void;
37
+ }
38
+ export interface FlipbookPlugin {
39
+ /** Stable plugin namespace. Duplicate names are rejected. */
40
+ name: string;
41
+ /** Installs contributions and may return an additional cleanup callback. */
42
+ install: (engine: FlipbookEngine, context: FlipbookPluginContext) => void | (() => void);
43
+ }
44
+ /** Internal registry exposed to UI components through the engine. */
45
+ export declare class FlipbookPluginRegistry {
46
+ readonly version: Signal<number>;
47
+ readonly activePanelId: Signal<string | null>;
48
+ private readonly plugins;
49
+ install(engine: FlipbookEngine, plugin: FlipbookPlugin): void;
50
+ uninstall(name: string): boolean;
51
+ clear(): void;
52
+ getPluginNames(): string[];
53
+ getToolbarButtons(): Array<FlipbookPluginToolbarButton & {
54
+ pluginName: string;
55
+ key: string;
56
+ }>;
57
+ getPanels(): Array<FlipbookPluginPanel & {
58
+ pluginName: string;
59
+ key: string;
60
+ }>;
61
+ getApi<T extends FlipbookPluginApiHandler>(pluginName: string, id: string): T | undefined;
62
+ callApi<T = unknown>(pluginName: string, id: string, ...args: any[]): Promise<T>;
63
+ private key;
64
+ private requireContributionId;
65
+ }
@@ -0,0 +1,4 @@
1
+ import { FlipbookPlugin } from './index';
2
+
3
+ export declare function createNotesPlugin(): FlipbookPlugin;
4
+ export declare const notesPlugin: FlipbookPlugin;
@@ -0,0 +1,4 @@
1
+ import { FlipbookPlugin } from './index';
2
+
3
+ export declare function createSearchPlugin(): FlipbookPlugin;
4
+ export declare const searchPlugin: FlipbookPlugin;
@@ -0,0 +1,4 @@
1
+ import { FlipbookPlugin } from './index';
2
+
3
+ export declare function createSharePlugin(): FlipbookPlugin;
4
+ export declare const sharePlugin: FlipbookPlugin;
@@ -0,0 +1,4 @@
1
+ import { FlipbookPlugin } from './index';
2
+
3
+ export declare function createTocPlugin(): FlipbookPlugin;
4
+ export declare const tocPlugin: FlipbookPlugin;
@@ -0,0 +1 @@
1
+ export * from './plugins/annotations'
@@ -0,0 +1 @@
1
+ export * from './plugins/bookmarks'
@@ -0,0 +1 @@
1
+ export * from './plugins/deep-link'
@@ -0,0 +1 @@
1
+ export * from './plugins/hotspots'
@@ -0,0 +1 @@
1
+ export * from './plugins/notes'
@@ -0,0 +1 @@
1
+ export * from './plugins/search'