flipbookengine 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -30
- package/COMMERCIAL_LICENSE.md +45 -45
- package/LICENSE +661 -661
- package/README.md +257 -252
- package/THIRD-PARTY-NOTICES.md +117 -117
- package/TRADEMARK_POLICY.md +50 -50
- package/dist/adapters/PageFlipAdapter.d.ts +1 -0
- package/dist/components/TableOfContents.d.ts +8 -0
- package/dist/components/Toolbar.d.ts +1 -0
- package/dist/core/LayoutManager.d.ts +3 -1
- package/dist/{engine-BuVkDIh-.js → engine-MdZzt6R9.js} +899 -803
- package/dist/engine-MdZzt6R9.js.map +1 -0
- package/dist/engine.d.ts +10 -1
- package/dist/flipbook-engine.css +1 -1
- package/dist/flipbook-engine.iife.js +34 -34
- package/dist/flipbook-engine.iife.js.map +1 -1
- package/dist/flipbook-engine.js +5 -4
- package/dist/flipbook-engine.react.js +1 -1
- package/dist/flipbook-engine.react.js.map +1 -1
- package/dist/flipbook-engine.vue.js +1 -1
- package/dist/flipbook-engine.vue.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +1 -0
- package/dist/i18n/locales/tr.d.ts +1 -0
- package/dist/i18n/service.d.ts +3 -0
- package/dist/index.d.ts +3 -1
- package/dist/model/toc.d.ts +13 -0
- package/dist/state/store.d.ts +6 -2
- package/package.json +1 -1
- package/react/package.json +5 -5
- package/vue/package.json +5 -5
- package/dist/engine-BuVkDIh-.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flipbook-engine.iife.js","sources":["../node_modules/@preact/signals-core/dist/signals-core.module.js","../node_modules/@serenity-is/domwise/dist/index.js","../src/i18n/service.ts","../src/i18n/locales/en.ts","../src/i18n/locales/tr.ts","../src/components/Toolbar.tsx","../src/components/Thumbnails.tsx","../src/components/Viewer.tsx","../src/components/NavigationArrows.tsx","../src/components/App.tsx","../node_modules/page-flip/dist/js/page-flip.browser.js","../src/adapters/PageFlipAdapter.ts","../src/core/LayoutManager.ts","../src/core/InteractionManager.ts","../src/state/store.ts","../src/model/pages.ts","../src/theme/theme.ts","../src/core/PdfRenderCache.ts","../src/core/PdfRenderer.ts","../src/engine.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","// src/bind-this.ts\nvar hasOwnProperty = Object.hasOwnProperty;\nvar bindThisHandler = {\n get: (target, property) => {\n if (hasOwnProperty.call(target, property)) {\n return target[property];\n }\n const m2 = target[property];\n if (typeof m2 === \"function\") {\n return target[property] = m2.bind(target);\n }\n return m2;\n }\n};\nvar bindThisProxyMap = /* @__PURE__ */ new WeakMap();\nfunction bindThis(obj) {\n let proxy = bindThisProxyMap.get(obj);\n if (!proxy) {\n proxy = new Proxy(obj, bindThisHandler);\n bindThisProxyMap.set(obj, proxy);\n }\n return proxy;\n}\n\n// src/prop-hook.ts\nvar initPropHookSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.initPropHook\");\n\n// src/util.ts\nfunction isElement(val) {\n return !!(val && typeof val.nodeType === \"number\");\n}\nfunction isString(val) {\n return typeof val === \"string\";\n}\nfunction isNumber(val) {\n return typeof val === \"number\";\n}\nfunction isObject(val) {\n return typeof val === \"object\" && val !== null;\n}\nfunction isComponentClass(val) {\n return !!(val && val.isComponent);\n}\nfunction isArrayLike(val) {\n return isObject(val) && typeof val.length === \"number\" && typeof val.nodeType !== \"number\";\n}\nfunction isPropHook(value) {\n return typeof value === \"function\" && typeof value[initPropHookSymbol] === \"function\";\n}\nfunction isVisibleChild(val) {\n return val != null && typeof val !== \"boolean\";\n}\n\n// src/class-name.ts\nfunction className(value) {\n if (Array.isArray(value)) {\n return value.map(className).filter(Boolean).join(\" \");\n } else if (isObject(value)) {\n if (Symbol.iterator in value) {\n return className(Array.from(value));\n }\n return Object.keys(value).filter((k) => value[k]).join(\" \");\n } else if (isVisibleChild(value)) {\n return \"\" + value;\n } else {\n return \"\";\n }\n}\n\n// src/ref.ts\nfunction createRef() {\n return Object.seal({ current: null });\n}\nfunction isRefObject(maybeRef) {\n return maybeRef != null && typeof maybeRef === \"object\" && \"current\" in maybeRef;\n}\nfunction setRef(ref, current) {\n if (isRefObject(ref)) {\n ref.current = current;\n } else if (typeof ref === \"function\") {\n ref(current);\n }\n}\n\n// src/component.ts\nvar Component = class {\n static {\n this.isComponent = true;\n }\n constructor(props) {\n this.props = props;\n }\n render() {\n return null;\n }\n};\nfunction initComponentClass(Class, attr, children) {\n attr = { ...attr, children };\n const instance = new Class(attr);\n const node = instance.render();\n if (\"ref\" in attr) {\n setRef(attr.ref, instance);\n }\n return node;\n}\n\n// src/mathml-consts.ts\nvar MathMLNamespace = \"http://www.w3.org/1998/Math/MathML\";\nvar mathMLOnlyTags = /* @__PURE__ */ new Set([\"math\", \"annotation\", \"annotation-xml\", \"maction\", \"merror\", \"mfrac\", \"mi\", \"mmultiscripts\", \"mn\", \"mo\", \"mover\", \"mpadded\", \"mphantom\", \"mprescripts\", \"mroot\", \"mrow\", \"ms\", \"mspace\", \"msqrt\", \"mstyle\", \"msub\", \"msubsup\", \"msup\", \"mtable\", \"mtd\", \"mtext\", \"mtr\", \"munder\", \"munderover\", \"semantics\", \"menclose\", \"mfenced\"]);\n\n// src/svg-consts.ts\nvar svgOnlyTags = /* @__PURE__ */ new Set([\n // \"a\",\n \"animate\",\n \"animateMotion\",\n \"animateTransform\",\n \"circle\",\n \"clipPath\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"filter\",\n \"foreignObject\",\n \"g\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"mpath\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n // \"script\",\n \"set\",\n \"stop\",\n // \"style\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"textPath\",\n // \"title\",\n \"tref\",\n \"tspan\",\n \"use\",\n \"view\"\n]);\nvar nonPresentationSVGAttributes = /^(a(ll|t|u)|base[FP]|c(al|lipPathU|on)|di|ed|ex|filter[RU]|g(lyphR|r)|ke|l(en|im)|ma(rker[HUW]|s)|n|pat|pr|point[^e]|re[^n]|s[puy]|st[^or]|ta|textL|vi|xC|y|z)/;\nvar SVGNamespace = \"http://www.w3.org/2000/svg\";\n\n// src/in-namespace-uri.ts\nvar jsxNamespaceURISymbol = /* @__PURE__ */ Symbol.for(\"Serenity.jsxNamespaceURI\");\nfunction currentNamespaceURI(value) {\n const current = globalThis[jsxNamespaceURISymbol];\n if (!arguments.length) {\n return current;\n }\n globalThis[jsxNamespaceURISymbol] = value;\n return current;\n}\nfunction inNamespaceURI(namespaceURI, children) {\n const prev = currentNamespaceURI(namespaceURI);\n let result;\n try {\n result = children();\n } finally {\n currentNamespaceURI(prev);\n }\n return result;\n}\nfunction inSVGNamespace(fn) {\n return inNamespaceURI(SVGNamespace, fn);\n}\nfunction inMathMLNamespace(fn) {\n return inNamespaceURI(MathMLNamespace, fn);\n}\nfunction inHTMLNamespace(fn) {\n return inNamespaceURI(null, fn);\n}\n\n// src/shadow.ts\nvar jsxTypeKeySymbol = /* @__PURE__ */ Symbol.for(\"Serenity.jsxTypeKey\");\nvar shadowRootKey = \"ShadowRoot\";\nfunction ShadowRootNode({\n children,\n ref,\n ...attr\n}) {\n return {\n [jsxTypeKeySymbol]: shadowRootKey,\n ref,\n attr,\n children\n };\n}\nfunction isShadowRoot(el) {\n return el != null && el[jsxTypeKeySymbol] === shadowRootKey;\n}\n\n// src/disposing-listener.ts\nvar disposingListenersSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.disposingListeners\");\nvar lifecycleRootSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.lifecycleRoot\");\nfunction getDisposingListeners() {\n return globalThis[disposingListenersSymbol] ||= /* @__PURE__ */ new WeakMap();\n}\nfunction disposingEventListener(ev) {\n if (ev && ev.target && (!ev.currentTarget || ev.currentTarget === ev.target))\n invokeDisposingListeners(ev?.target);\n}\nfunction dispatchDisposingEvent(target, opt) {\n if (!target || typeof CustomEvent !== \"function\")\n return;\n const event = new CustomEvent(\"disposing\", {\n bubbles: opt?.bubbles ?? false,\n cancelable: opt?.cancelable ?? false\n });\n target.dispatchEvent(event);\n}\nfunction invokeDisposingListeners(node, opt) {\n if (!node)\n return;\n const disposingListeners = getDisposingListeners();\n function invokeFor(el) {\n const listeners = disposingListeners.get(el);\n if (!listeners)\n return;\n disposingListeners.delete(el);\n el.removeEventListener(\"disposing\", disposingEventListener);\n for (const disposer of listeners) {\n try {\n disposer.callback(el);\n } catch {\n }\n }\n }\n if (opt?.descendants && node instanceof Element && node.hasChildNodes()) {\n const descendants = [];\n const iterator = document.createNodeIterator(\n node,\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT\n );\n let currentNode;\n while (currentNode = iterator.nextNode()) {\n if (currentNode !== node) {\n descendants.push(currentNode);\n }\n }\n for (let i2 = 0; i2 < descendants.length; i2++) {\n invokeFor(descendants[i2]);\n }\n }\n if (!opt?.excludeSelf) {\n invokeFor(node);\n }\n}\nfunction addDisposingListener(target, handler, regKey) {\n if (!target || !handler)\n return target;\n const disposingListeners = getDisposingListeners();\n let listeners = disposingListeners.get(target);\n if (!listeners) {\n if (typeof target.addEventListener !== \"function\")\n return target;\n disposingListeners.set(target, listeners = [{\n callback: handler,\n regKey\n }]);\n target.addEventListener(\"disposing\", disposingEventListener, { once: true });\n return target;\n }\n const existing = listeners.find((x2) => x2.callback === handler);\n if (existing) {\n if (existing.regKey && regKey && existing.regKey !== regKey) {\n throw new Error(\"A disposing listener with the same callback but different regKey is already registered on the target element.\");\n }\n if (regKey && !existing.regKey) {\n existing.regKey = regKey;\n }\n return target;\n }\n listeners.push({ callback: handler, regKey });\n return target;\n}\nfunction removeDisposingListener(target, handler, regKey) {\n if (!target || !handler && !regKey)\n return target;\n const disposingListeners = getDisposingListeners();\n const listeners = disposingListeners.get(target);\n if (listeners) {\n for (let index = listeners.length - 1; index >= 0; index--) {\n const listener = listeners[index];\n if (regKey && listener.regKey === regKey || handler && handler === listener.callback) {\n listeners.splice(index, 1);\n }\n }\n if (listeners.length === 0) {\n disposingListeners.delete(target);\n if (typeof target.removeEventListener === \"function\") {\n target.removeEventListener(\"disposing\", disposingEventListener);\n }\n }\n }\n return target;\n}\nfunction currentLifecycleRoot(...args) {\n if (args.length > 0) {\n const prev = globalThis[lifecycleRootSymbol] || null;\n globalThis[lifecycleRootSymbol] = args[0] || null;\n return prev;\n }\n return globalThis[lifecycleRootSymbol] || null;\n}\n\n// src/signal-util.ts\nfunction isSignalLike(obj) {\n return obj != null && typeof obj === \"object\" && typeof obj.subscribe === \"function\" && typeof obj.peek === \"function\" && \"value\" in obj;\n}\nvar SignalObserveArgsImpl = class {\n #dispose;\n #node;\n constructor(signal2, lifecycleRoot, lifecycleNode) {\n this.signal = signal2;\n this.isInitial = true;\n this.hasChanged = false;\n this.lifecycleRoot = lifecycleRoot;\n this.#node = lifecycleNode;\n }\n get lifecycleNode() {\n return this.#node;\n }\n #delDispose() {\n removeDisposingListener(this.#node, this.effectDisposer);\n removeDisposingListener(this.#node, this.signal?.derivedDisposer);\n }\n #addDispose() {\n addDisposingListener(this.#node, this.effectDisposer);\n addDisposingListener(this.#node, this.signal?.derivedDisposer);\n }\n get effectDisposer() {\n return this.#dispose;\n }\n set effectDisposer(value) {\n this.#delDispose();\n this.#dispose = value;\n this.#addDispose();\n }\n set lifecycleNode(value) {\n if (value !== this.#node) {\n this.#delDispose();\n this.#node = value;\n this.#addDispose();\n }\n }\n};\nfunction observeSignal(signal2, callback, opt) {\n const lifecycleRoot = opt?.useLifecycleRoot ? currentLifecycleRoot() : void 0;\n const args = new SignalObserveArgsImpl(signal2, lifecycleRoot, opt?.lifecycleNode);\n const disposer = args.signal.subscribe(function(value) {\n args.newValue = value;\n if (args.isInitial && this?.dispose) {\n args.effectDisposer = this.dispose.bind(this);\n }\n args.hasChanged = !args.isInitial && args.prevValue !== args.newValue;\n try {\n callback(args);\n } finally {\n args.prevValue = args.newValue;\n args.isInitial = false;\n }\n });\n if (disposer && !args.effectDisposer) {\n args.effectDisposer = disposer;\n }\n return args.effectDisposer;\n}\nfunction derivedSignal(input, fn) {\n if (!isSignalLike(input)) {\n throw new Error(\"Input must be a SignalLike\");\n }\n const callback = () => fn(input.value);\n if (typeof input.constructor === \"function\" && input.constructor !== {}.constructor) {\n try {\n let derived = new input.constructor(callback);\n let disposer2;\n if (isSignalLike(derived)) {\n if (derived.peek() === callback) {\n disposer2 = input.subscribe(() => {\n derived.value = callback();\n });\n }\n if (disposer2) {\n derived.derivedDisposer = function() {\n disposer2();\n delete derived.derivedDisposer;\n };\n }\n return derived;\n }\n } catch (error) {\n }\n }\n let primitive;\n const disposer = input.subscribe(() => {\n if (!primitive) {\n primitive = new PrimitiveComputed(callback);\n return;\n }\n primitive.update();\n });\n if (disposer) {\n primitive.derivedDisposer = function() {\n disposer();\n delete primitive.derivedDisposer;\n };\n }\n return primitive;\n}\nvar PrimitiveComputed = class {\n #subs = /* @__PURE__ */ new Set();\n #value;\n #fn;\n constructor(fn) {\n this.#fn = fn;\n this.update(true);\n }\n update(force) {\n const newValue = this.#fn();\n if (newValue !== this.#value || force) {\n this.#value = newValue;\n this.#subs.forEach((sub) => sub(newValue));\n }\n }\n subscribe(callback) {\n callback(this.#value);\n this.#subs.add(callback);\n return () => this.#subs.delete(callback);\n }\n peek() {\n return this.#value;\n }\n get value() {\n return this.#value;\n }\n};\n\n// src/jsx-append-children.ts\nfunction appendChild(parent, child) {\n if (parent instanceof window.HTMLTemplateElement) {\n parent.content.appendChild(child);\n } else {\n parent.appendChild(child);\n }\n}\nvar fragmentPlaceholderIdx = 0;\nvar placeholderPrefix = \"__domwisefrag_\";\nfunction isPlaceholder(node) {\n return node instanceof Comment && node.data.startsWith(placeholderPrefix);\n}\nfunction isFragmentWithPlaceholder(node) {\n return node instanceof DocumentFragment && isPlaceholder(node.firstChild);\n}\nfunction replaceNode(oldNode, newNode) {\n if (typeof oldNode.replaceWith === \"function\")\n oldNode.replaceWith(newNode);\n else\n oldNode.parentNode?.replaceChild(newNode, oldNode);\n}\nfunction wrapAsNode(value) {\n if (value instanceof DocumentFragment) {\n ++fragmentPlaceholderIdx;\n value.prepend(document.createComment(placeholderPrefix + fragmentPlaceholderIdx));\n value.append(document.createComment(placeholderPrefix + fragmentPlaceholderIdx));\n return value;\n }\n if (value instanceof Node) {\n return value;\n }\n if (!isVisibleChild(value)) {\n return document.createComment(\"\");\n }\n return document.createTextNode(value);\n}\nfunction appendChildrenWithSignal(parent, signal2) {\n let prevNode;\n observeSignal(signal2, (args) => {\n if (args.isInitial) {\n prevNode = wrapAsNode(args.newValue);\n let prevNodeNew2 = isFragmentWithPlaceholder(prevNode) ? prevNode.firstChild : prevNode;\n appendChildren(parent, prevNode);\n args.lifecycleNode = (prevNode = prevNodeNew2) ?? parent;\n return;\n }\n if (!args.hasChanged) {\n return;\n }\n const newNode = wrapAsNode(args.newValue);\n if (isPlaceholder(prevNode)) {\n let n2;\n while (n2 = prevNode.nextSibling) {\n n2.parentNode?.removeChild(n2);\n if (n2 instanceof Comment && n2.data === prevNode.data) {\n break;\n }\n }\n }\n let prevNodeNew = isFragmentWithPlaceholder(newNode) ? newNode.firstChild : newNode;\n replaceNode(prevNode, newNode);\n args.lifecycleNode = (prevNode = prevNodeNew) ?? parent;\n });\n}\nfunction appendChildren(parent, children) {\n if (!isVisibleChild(children)) return;\n if (isArrayLike(children)) {\n for (const child of [...children]) {\n appendChildren(parent, child);\n }\n } else if (isString(children) || isNumber(children)) {\n appendChild(parent, document.createTextNode(children));\n } else if (isElement(children)) {\n appendChild(parent, children);\n } else if (isShadowRoot(children)) {\n const shadowRoot = parent.attachShadow(children.attr);\n appendChildren(shadowRoot, children.children);\n setRef(children.ref, shadowRoot);\n } else if (isSignalLike(children)) {\n appendChildrenWithSignal(parent, children);\n }\n}\n\n// src/jsx-assign-class.ts\nfunction unsignalizePrevClass(prev) {\n if (prev == null)\n return prev;\n if (isArrayLike(prev)) {\n prev = Array.from(prev).map((item) => {\n if (isSignalLike(item))\n return item.peek();\n return item;\n });\n } else if (isObject(prev)) {\n prev = { ...prev };\n Object.entries(prev).forEach(([key, val]) => {\n if (isSignalLike(val))\n prev[key] = val.peek();\n });\n }\n return prev;\n}\nfunction clearPrevClass(node, prev) {\n if (prev == null || prev === false || prev === true)\n return;\n prev = unsignalizePrevClass(prev);\n const prevClassNames = (className(prev) ?? \"\").split(\" \");\n for (let cls of prevClassNames) {\n if (cls) {\n node.classList.remove(cls);\n }\n }\n}\nfunction assignClass(node, value, prev) {\n if (value == null || value === false) {\n clearPrevClass(node, prev);\n return;\n }\n prev = unsignalizePrevClass(prev);\n if (isArrayLike(value)) {\n value = Array.from(value).map((x2) => {\n let val = x2;\n if (isSignalLike(x2)) {\n observeSignal(x2, (args) => {\n if (args.isInitial) {\n val = args.newValue;\n return;\n }\n applyClassName(node, args.newValue, args.prevValue);\n }, {\n lifecycleNode: node\n });\n }\n return val;\n });\n } else if (isObject(value)) {\n value = { ...value };\n Object.entries(value).forEach(([key, val]) => {\n if (isSignalLike(val)) {\n observeSignal(val, (args) => {\n if (args.isInitial) {\n value[key] = args.newValue;\n return;\n }\n applyClassName(node, Boolean(args.newValue) && key, Boolean(args.prevValue) && key);\n }, {\n lifecycleNode: node\n });\n }\n });\n }\n applyClassName(node, value, prev);\n}\nfunction applyClassName(node, value, prev) {\n const newList = (className(value) ?? \"\").split(\" \");\n if (prev) {\n const prevList = (className(prev) ?? \"\").split(\" \");\n for (let cls of prevList) {\n if (cls && !newList.includes(cls)) {\n node.classList.remove(cls);\n }\n }\n }\n for (let cls of newList) {\n cls && node.classList.add(cls);\n }\n}\n\n// src/jsx-assign-style.ts\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\nvar isUnitlessNumber = /* @__PURE__ */ (() => {\n let rec = {\n animationIterationCount: 0,\n borderImageOutset: 0,\n borderImageSlice: 0,\n borderImageWidth: 0,\n boxFlex: 0,\n boxFlexGroup: 0,\n boxOrdinalGroup: 0,\n columnCount: 0,\n columns: 0,\n flex: 0,\n flexGrow: 0,\n flexPositive: 0,\n flexShrink: 0,\n flexNegative: 0,\n flexOrder: 0,\n gridArea: 0,\n gridRow: 0,\n gridRowEnd: 0,\n gridRowSpan: 0,\n gridRowStart: 0,\n gridColumn: 0,\n gridColumnEnd: 0,\n gridColumnSpan: 0,\n gridColumnStart: 0,\n fontWeight: 0,\n lineClamp: 0,\n lineHeight: 0,\n opacity: 0,\n order: 0,\n orphans: 0,\n tabSize: 0,\n widows: 0,\n zIndex: 0,\n zoom: 0,\n // SVG-related properties\n fillOpacity: 0,\n floodOpacity: 0,\n stopOpacity: 0,\n strokeDasharray: 0,\n strokeDashoffset: 0,\n strokeMiterlimit: 0,\n strokeOpacity: 0,\n strokeWidth: 0\n };\n const prefixes = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\n Object.keys(rec).forEach((prop) => {\n prefixes.forEach((prefix) => {\n rec[prefixKey(prefix, prop)] = 0;\n });\n });\n return rec;\n})();\nfunction setStylePropValue(node, key, val) {\n if (key.indexOf(\"-\") === 0) {\n node.style.setProperty(key, val);\n } else if (isNumber(val) && isUnitlessNumber[key] !== 0) {\n node.style[key] = val + \"px\";\n } else {\n node.style[key] = val;\n }\n}\nfunction clearPrevStyle(node, prev) {\n if (prev == null || prev === false || prev === true)\n return;\n if (isString(prev)) {\n node.removeAttribute(\"style\");\n return;\n }\n if (isObject(prev)) {\n Object.keys(prev).forEach((key) => {\n setStylePropValue(node, key, \"\");\n });\n }\n}\nfunction assignStyle(node, value, prev) {\n if (value == null || value === false || value === true) {\n clearPrevStyle(node, prev);\n return;\n }\n if (isString(value)) {\n node.setAttribute(\"style\", value);\n return;\n }\n if (isObject(value)) {\n if (isObject(prev)) {\n value = { ...value };\n Object.keys(prev).forEach((key) => {\n if (!(key in value))\n value[key] = \"\";\n });\n } else\n clearPrevStyle(node, prev);\n Object.entries(value).forEach(([key, val]) => {\n if (isSignalLike(val)) {\n observeSignal(val, (args) => setStylePropValue(node, key, args.newValue), {\n lifecycleNode: node\n });\n } else {\n setStylePropValue(node, key, val);\n }\n });\n return;\n }\n}\n\n// src/jsx-assign-props.ts\nvar XLinkNamespace = \"http://www.w3.org/1999/xlink\";\nvar XMLNamespace = \"http://www.w3.org/XML/1998/namespace\";\nfunction normalizeAttribute(s2, separator) {\n return s2.replace(/[A-Z]/g, (match) => separator + match.toLowerCase());\n}\nvar mappedKeys = /* @__PURE__ */ new Map([\n [\"autoComplete\", \"autocomplete\"],\n [\"autoFocus\", \"autofocus\"],\n [\"className\", \"class\"],\n [\"colSpan\", \"colspan\"],\n [\"contentEditable\", \"contenteditable\"],\n [\"formNoValidate\", \"formnovalidate\"],\n [\"htmlFor\", \"for\"],\n [\"innerText\", \"textContent\"],\n [\"minLength\", \"minlength\"],\n [\"maxLength\", \"maxlength\"],\n [\"readOnly\", \"readonly\"],\n [\"reffererPolicy\", \"referrerpolicy\"],\n [\"rowSpan\", \"rowspan\"],\n [\"spellCheck\", \"spellcheck\"],\n [\"tabIndex\", \"tabindex\"],\n [\"onDoubleClick\", \"onDblClick\"],\n [\"onDoubleClickCapture\", \"onDblClickCapture\"]\n]);\nfunction assignProp(node, key, value, prev) {\n switch (key) {\n case \"dataset\":\n if (prev != null) {\n Object.entries(prev).forEach(([k, v2]) => {\n if (v2 != null) {\n delete node.dataset[k];\n }\n });\n }\n Object.entries(value).forEach(([dataKey, dataValue]) => {\n if (dataValue != null) {\n node.dataset[dataKey] = dataValue;\n }\n });\n return;\n case \"textContent\":\n if (isVisibleChild(value)) {\n node[key] = value;\n } else if (isVisibleChild(prev)) {\n node[key] = \"\";\n }\n return;\n case \"dangerouslySetInnerHTML\":\n if (isObject(value)) {\n node.innerHTML = value[\"__html\"];\n } else if (isObject(prev)) {\n node.innerHTML = \"\";\n }\n return;\n case \"value\":\n if (value == null) {\n if (prev != null) {\n node[key] = null;\n }\n return;\n } else if (node instanceof window.HTMLSelectElement) {\n return;\n } else if (node instanceof window.HTMLTextAreaElement) {\n node.value = value;\n return;\n }\n break;\n case \"class\":\n assignClass(node, value, prev);\n return;\n case \"spellcheck\":\n node.spellcheck = value === \"\" || value === true || value === \"true\" ? true : value === false || value === \"false\" ? false : value;\n return;\n case \"draggable\":\n if (value === false || value === \"false\")\n value = \"false\";\n else if (value === \"\")\n value = null;\n else if (value === true || value === \"true\")\n value = \"true\";\n break;\n case \"contenteditable\":\n if (value === false)\n value = \"false\";\n else if (value === \"\" || value === true)\n value = \"true\";\n break;\n case \"ref\":\n case \"namespaceURI\":\n return;\n case \"style\":\n assignStyle(node, value, prev);\n return;\n case \"on\":\n case \"onCapture\":\n const useCapture = key === \"onCapture\";\n if (prev != null) {\n Object.entries(prev).forEach(([eventName, eventHandler]) => {\n if (value == null || value[eventName] !== eventHandler) {\n node.removeEventListener(eventName, eventHandler, useCapture);\n }\n });\n }\n Object.entries(value).forEach(([eventName, eventHandler]) => {\n if (prev == null || prev[eventName] !== eventHandler) {\n node.addEventListener(eventName, eventHandler, useCapture);\n }\n });\n return;\n case \"xlinkActuate\":\n case \"xlinkArcrole\":\n case \"xlinkHref\":\n case \"xlinkRole\":\n case \"xlinkShow\":\n case \"xlinkTitle\":\n case \"xlinkType\":\n node.setAttributeNS(XLinkNamespace, normalizeAttribute(key, \":\"), value);\n return;\n case \"xmlnsXlink\":\n node.setAttribute(\"xmlns:xlink\", value);\n return;\n case \"xmlBase\":\n case \"xmlLang\":\n case \"xmlSpace\":\n node.setAttributeNS(XMLNamespace, normalizeAttribute(key, \":\"), value);\n return;\n }\n if (typeof value === \"function\") {\n if (key[0] === \"o\" && key[1] === \"n\") {\n if (prev != null && prev === value)\n return;\n let attribute = key.toLowerCase();\n const useCapture = attribute.endsWith(\"capture\");\n let eventName;\n if (!useCapture && (node[attribute] === null || prev != null && node[attribute] === prev)) {\n node[attribute] = value;\n addDisposingListener(node, nodeEventPropDisposer.bind(node, attribute));\n } else if (useCapture) {\n eventName = attribute.substring(2, attribute.length - 7);\n if (prev != null) {\n node.removeEventListener(eventName, prev, true);\n }\n node.addEventListener(eventName, value, true);\n } else {\n if (attribute in window) {\n const standardEventName = attribute.substring(2);\n eventName = standardEventName;\n } else {\n const customEventName = attribute[2] + key.slice(3);\n eventName = customEventName;\n }\n if (prev != null) {\n node.removeEventListener(eventName, prev);\n }\n node.addEventListener(eventName, value);\n }\n } else {\n console.warn(`A function was provided for JSX ${node.tagName} element ${key} which does not start with \"on\":`, value, node.tagName);\n }\n return;\n }\n if (isObject(prev)) {\n if (prev === value) {\n return;\n }\n delete node[key];\n }\n if (prev === true) {\n if (prev === value) {\n return;\n }\n node.removeAttribute(key);\n }\n if (prev !== false && prev != null) {\n if (prev === value) {\n return;\n }\n if (node instanceof SVGElement && !nonPresentationSVGAttributes.test(key)) {\n node.removeAttributeNS(normalizeAttribute(key, \"-\"), value);\n } else {\n node.removeAttribute(key);\n }\n }\n if (isObject(value)) {\n node[key] = value;\n return;\n }\n if (value === true) {\n node.setAttribute(key, \"\");\n return;\n }\n if (value !== false && value != null) {\n if (node instanceof SVGElement && !nonPresentationSVGAttributes.test(key)) {\n node.setAttribute(normalizeAttribute(key, \"-\"), value);\n } else {\n node.setAttribute(key, value);\n }\n }\n}\nfunction assignProps(node, props) {\n for (let [key, value] of Object.entries(props)) {\n key = mappedKeys.get(key) ?? key;\n if (isSignalLike(value)) {\n observeSignal(value, (args) => assignProp(node, key, args.newValue, args.prevValue), {\n lifecycleNode: node\n });\n } else if (isPropHook(value)) {\n value[initPropHookSymbol](node, key);\n } else {\n assignProp(node, key, value);\n }\n }\n return node;\n}\nfunction nodeEventPropDisposer(key) {\n this[key] = null;\n}\n\n// src/jsx-factory.ts\nfunction jsx(tag, props) {\n let { children, ...attr } = props || {};\n let ns = attr.namespaceURI;\n if (!ns) {\n if (svgOnlyTags.has(tag))\n ns = SVGNamespace;\n else if (mathMLOnlyTags.has(tag))\n ns = MathMLNamespace;\n else\n ns = currentNamespaceURI();\n }\n let node;\n if (isString(tag)) {\n node = ns ? document.createElementNS(ns, tag) : document.createElement(tag);\n assignProps(node, attr);\n appendChildren(node, children);\n if (node instanceof window.HTMLSelectElement && attr.value != null) {\n if (attr.multiple === true && Array.isArray(attr.value)) {\n const values = attr.value.map((value) => String(value));\n node.querySelectorAll(\"option\").forEach((option) => option.selected = values.includes(option.value));\n } else {\n node.value = attr.value;\n }\n }\n setRef(attr.ref, node);\n } else if (typeof tag === \"function\") {\n if (isObject(tag.defaultProps)) {\n attr = { ...tag.defaultProps, ...attr };\n }\n node = isComponentClass(tag) ? initComponentClass(tag, attr, children) : tag({ ...attr, children });\n } else {\n throw new TypeError(`Invalid JSX element type: ${tag}`);\n }\n return node;\n}\n\n// src/compat-api.ts\nfunction createElement(tag, attr, ...children) {\n if (isString(attr) || Array.isArray(attr)) {\n children.unshift(attr);\n attr = {};\n }\n attr = attr || {};\n if (attr.children != null && !children.length) {\n ({ children, ...attr } = attr);\n }\n return jsx(tag, { ...attr, children });\n}\nfunction useImperativeHandle(ref, init) {\n setRef(ref, init());\n}\n\n// src/fragment.ts\nfunction Fragment(attr) {\n const fragment = document.createDocumentFragment();\n appendChildren(fragment, attr.children);\n return fragment;\n}\n\n// src/hooks.ts\nfunction useClassList(initialValue) {\n let temp = document.createElement(\"div\");\n if (initialValue != null) {\n temp.className = className(initialValue);\n }\n let list = temp.classList;\n function ClassList() {\n return list;\n }\n function dispose() {\n list = null;\n temp = null;\n }\n Object.defineProperties(\n ClassList,\n Object.getOwnPropertyDescriptors({\n [initPropHookSymbol](node, prop) {\n if (prop !== \"class\")\n throw new Error(\"useClassList can only be used for 'class' attribute.\");\n temp && removeDisposingListener(temp, dispose);\n list && node?.setAttribute(\"class\", list.value);\n addDisposingListener(temp = node, dispose);\n list = node?.classList ?? list;\n },\n get size() {\n return list.length;\n },\n get value() {\n return list.value;\n },\n add(...tokens) {\n list.add(...tokens);\n },\n remove(...tokens) {\n list.remove(...tokens);\n },\n toggle(token, force) {\n list.toggle(token, force);\n },\n contains(token) {\n return list.contains(token);\n }\n })\n );\n return ClassList;\n}\nfunction propBinding(value) {\n if (arguments.length && value !== this.value) {\n this.node && this.prop && assignProp(this.node, this.prop, value, this.value);\n this.value = value;\n }\n return this.value;\n}\nfunction propBindingDispose() {\n delete this.node;\n}\nfunction propBindingInit(el, key) {\n if (this.node && el && this.node !== el || this.prop && key && this.prop !== key) {\n throw new Error(\"usePropBinding can only be used with one element and one attribute. Create a new setter for each element / prop.\");\n }\n if (this.node)\n removeDisposingListener(this.node, this.dispose);\n this.node = el;\n if (this.node) {\n addDisposingListener(this.node, this.dispose);\n assignProp(this.node, this.prop ??= key, this.value);\n }\n}\nfunction usePropBinding(initialValue) {\n const accessorThis = {\n value: initialValue\n };\n accessorThis.dispose = propBindingDispose.bind(accessorThis);\n const hook = propBinding.bind(accessorThis);\n hook[initPropHookSymbol] = propBindingInit.bind(accessorThis);\n return hook;\n}\nfunction useText(initialValue) {\n const text = new Text();\n Object.defineProperty(text, \"toString\", {\n value() {\n return this.textContent;\n }\n });\n function setText(value) {\n text.textContent = value;\n }\n if (initialValue != null) {\n setText(initialValue);\n }\n return [text, setText];\n}\n\n// ../../node_modules/.pnpm/@preact+signals-core@1.14.1/node_modules/@preact/signals-core/dist/signals-core.module.js\nvar i = /* @__PURE__ */ Symbol.for(\"preact-signals\");\nfunction t() {\n if (!(s > 1)) {\n var i2, t2 = false;\n !(function() {\n var i3 = c;\n c = void 0;\n while (void 0 !== i3) {\n if (i3.S.v === i3.v) i3.S.i = i3.i;\n i3 = i3.o;\n }\n })();\n while (void 0 !== h) {\n var n2 = h;\n h = void 0;\n v++;\n while (void 0 !== n2) {\n var r2 = n2.u;\n n2.u = void 0;\n n2.f &= -3;\n if (!(8 & n2.f) && w(n2)) try {\n n2.c();\n } catch (n3) {\n if (!t2) {\n i2 = n3;\n t2 = true;\n }\n }\n n2 = r2;\n }\n }\n v = 0;\n s--;\n if (t2) throw i2;\n } else s--;\n}\nfunction n(i2) {\n if (s > 0) return i2();\n e = ++u;\n s++;\n try {\n return i2();\n } finally {\n t();\n }\n}\nvar r = void 0;\nfunction o(i2) {\n var t2 = r;\n r = void 0;\n try {\n return i2();\n } finally {\n r = t2;\n }\n}\nvar f;\nvar h = void 0;\nvar s = 0;\nvar v = 0;\nvar u = 0;\nvar e = 0;\nvar c = void 0;\nvar d = 0;\nfunction a(i2) {\n if (void 0 !== r) {\n var t2 = i2.n;\n if (void 0 === t2 || t2.t !== r) {\n t2 = { i: 0, S: i2, p: r.s, n: void 0, t: r, e: void 0, x: void 0, r: t2 };\n if (void 0 !== r.s) r.s.n = t2;\n r.s = t2;\n i2.n = t2;\n if (32 & r.f) i2.S(t2);\n return t2;\n } else if (-1 === t2.i) {\n t2.i = 0;\n if (void 0 !== t2.n) {\n t2.n.p = t2.p;\n if (void 0 !== t2.p) t2.p.n = t2.n;\n t2.p = r.s;\n t2.n = void 0;\n r.s.n = t2;\n r.s = t2;\n }\n return t2;\n }\n }\n}\nfunction l(i2, t2) {\n this.v = i2;\n this.i = 0;\n this.n = void 0;\n this.t = void 0;\n this.l = 0;\n this.W = null == t2 ? void 0 : t2.watched;\n this.Z = null == t2 ? void 0 : t2.unwatched;\n this.name = null == t2 ? void 0 : t2.name;\n}\nl.prototype.brand = i;\nl.prototype.h = function() {\n return true;\n};\nl.prototype.S = function(i2) {\n var t2 = this, n2 = this.t;\n if (n2 !== i2 && void 0 === i2.e) {\n i2.x = n2;\n this.t = i2;\n if (void 0 !== n2) n2.e = i2;\n else o(function() {\n var i3;\n null == (i3 = t2.W) || i3.call(t2);\n });\n }\n};\nl.prototype.U = function(i2) {\n var t2 = this;\n if (void 0 !== this.t) {\n var n2 = i2.e, r2 = i2.x;\n if (void 0 !== n2) {\n n2.x = r2;\n i2.e = void 0;\n }\n if (void 0 !== r2) {\n r2.e = n2;\n i2.x = void 0;\n }\n if (i2 === this.t) {\n this.t = r2;\n if (void 0 === r2) o(function() {\n var i3;\n null == (i3 = t2.Z) || i3.call(t2);\n });\n }\n }\n};\nl.prototype.subscribe = function(i2) {\n var t2 = this;\n return j(function() {\n var n2 = t2.value, o2 = r;\n r = void 0;\n try {\n i2(n2);\n } finally {\n r = o2;\n }\n }, { name: \"sub\" });\n};\nl.prototype.valueOf = function() {\n return this.value;\n};\nl.prototype.toString = function() {\n return this.value + \"\";\n};\nl.prototype.toJSON = function() {\n return this.value;\n};\nl.prototype.peek = function() {\n var i2 = r;\n r = void 0;\n try {\n return this.value;\n } finally {\n r = i2;\n }\n};\nObject.defineProperty(l.prototype, \"value\", { get: function() {\n var i2 = a(this);\n if (void 0 !== i2) i2.i = this.i;\n return this.v;\n}, set: function(i2) {\n if (i2 !== this.v) {\n if (v > 100) throw new Error(\"Cycle detected\");\n !(function(i3) {\n if (0 !== s && 0 === v) {\n if (i3.l !== e) {\n i3.l = e;\n c = { S: i3, v: i3.v, i: i3.i, o: c };\n }\n }\n })(this);\n this.v = i2;\n this.i++;\n d++;\n s++;\n try {\n for (var n2 = this.t; void 0 !== n2; n2 = n2.x) n2.t.N();\n } finally {\n t();\n }\n }\n} });\nfunction y(i2, t2) {\n return new l(i2, t2);\n}\nfunction w(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) if (t2.S.i !== t2.i || !t2.S.h() || t2.S.i !== t2.i) return true;\n return false;\n}\nfunction _(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) {\n var n2 = t2.S.n;\n if (void 0 !== n2) t2.r = n2;\n t2.S.n = t2;\n t2.i = -1;\n if (void 0 === t2.n) {\n i2.s = t2;\n break;\n }\n }\n}\nfunction b(i2) {\n var t2 = i2.s, n2 = void 0;\n while (void 0 !== t2) {\n var r2 = t2.p;\n if (-1 === t2.i) {\n t2.S.U(t2);\n if (void 0 !== r2) r2.n = t2.n;\n if (void 0 !== t2.n) t2.n.p = r2;\n } else n2 = t2;\n t2.S.n = t2.r;\n if (void 0 !== t2.r) t2.r = void 0;\n t2 = r2;\n }\n i2.s = n2;\n}\nfunction p(i2, t2) {\n l.call(this, void 0);\n this.x = i2;\n this.s = void 0;\n this.g = d - 1;\n this.f = 4;\n this.W = null == t2 ? void 0 : t2.watched;\n this.Z = null == t2 ? void 0 : t2.unwatched;\n this.name = null == t2 ? void 0 : t2.name;\n}\np.prototype = new l();\np.prototype.h = function() {\n this.f &= -3;\n if (1 & this.f) return false;\n if (32 == (36 & this.f)) return true;\n this.f &= -5;\n if (this.g === d) return true;\n this.g = d;\n this.f |= 1;\n if (this.i > 0 && !w(this)) {\n this.f &= -2;\n return true;\n }\n var i2 = r;\n try {\n _(this);\n r = this;\n var t2 = this.x();\n if (16 & this.f || this.v !== t2 || 0 === this.i) {\n this.v = t2;\n this.f &= -17;\n this.i++;\n }\n } catch (i3) {\n this.v = i3;\n this.f |= 16;\n this.i++;\n }\n r = i2;\n b(this);\n this.f &= -2;\n return true;\n};\np.prototype.S = function(i2) {\n if (void 0 === this.t) {\n this.f |= 36;\n for (var t2 = this.s; void 0 !== t2; t2 = t2.n) t2.S.S(t2);\n }\n l.prototype.S.call(this, i2);\n};\np.prototype.U = function(i2) {\n if (void 0 !== this.t) {\n l.prototype.U.call(this, i2);\n if (void 0 === this.t) {\n this.f &= -33;\n for (var t2 = this.s; void 0 !== t2; t2 = t2.n) t2.S.U(t2);\n }\n }\n};\np.prototype.N = function() {\n if (!(2 & this.f)) {\n this.f |= 6;\n for (var i2 = this.t; void 0 !== i2; i2 = i2.x) i2.t.N();\n }\n};\nObject.defineProperty(p.prototype, \"value\", { get: function() {\n if (1 & this.f) throw new Error(\"Cycle detected\");\n var i2 = a(this);\n this.h();\n if (void 0 !== i2) i2.i = this.i;\n if (16 & this.f) throw this.v;\n return this.v;\n} });\nfunction g(i2, t2) {\n return new p(i2, t2);\n}\nfunction S(i2) {\n var n2 = i2.m;\n i2.m = void 0;\n if (\"function\" == typeof n2) {\n s++;\n var o2 = r;\n r = void 0;\n try {\n n2();\n } catch (t2) {\n i2.f &= -2;\n i2.f |= 8;\n m(i2);\n throw t2;\n } finally {\n r = o2;\n t();\n }\n }\n}\nfunction m(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) t2.S.U(t2);\n i2.x = void 0;\n i2.s = void 0;\n S(i2);\n}\nfunction x(i2) {\n if (r !== this) throw new Error(\"Out-of-order effect\");\n b(this);\n r = i2;\n this.f &= -2;\n if (8 & this.f) m(this);\n t();\n}\nfunction E(i2, t2) {\n this.x = i2;\n this.m = void 0;\n this.s = void 0;\n this.u = void 0;\n this.f = 32;\n this.name = null == t2 ? void 0 : t2.name;\n if (f) f.push(this);\n}\nE.prototype.c = function() {\n var i2 = this.S();\n try {\n if (8 & this.f) return;\n if (void 0 === this.x) return;\n var t2 = this.x();\n if (\"function\" == typeof t2) this.m = t2;\n } finally {\n i2();\n }\n};\nE.prototype.S = function() {\n if (1 & this.f) throw new Error(\"Cycle detected\");\n this.f |= 1;\n this.f &= -9;\n S(this);\n _(this);\n s++;\n var i2 = r;\n r = this;\n return x.bind(this, i2);\n};\nE.prototype.N = function() {\n if (!(2 & this.f)) {\n this.f |= 2;\n this.u = h;\n h = this;\n }\n};\nE.prototype.d = function() {\n this.f |= 8;\n if (!(1 & this.f)) m(this);\n};\nE.prototype.dispose = function() {\n this.d();\n};\nfunction j(i2, t2) {\n var n2 = new E(i2, t2);\n try {\n n2.c();\n } catch (i3) {\n n2.d();\n throw i3;\n }\n var r2 = n2.d.bind(n2);\n r2[Symbol.dispose] = r2;\n return r2;\n}\n\n// src/signals.ts\nvar signal = y;\nvar computed = g;\nvar effect = j;\nvar batch = n;\nvar untracked = o;\nfunction useSignal(initialValue) {\n return signal(initialValue);\n}\nfunction useUpdatableComputed() {\n const updater = signal(0);\n const factory = (fn) => {\n return computed(() => {\n updater.value;\n return fn();\n });\n };\n const update = () => {\n updater.value++;\n };\n return { computed: factory, update };\n}\nexport {\n Component,\n Fragment,\n MathMLNamespace,\n SVGNamespace,\n ShadowRootNode,\n addDisposingListener,\n batch,\n bindThis,\n className,\n computed,\n createElement,\n createRef,\n currentLifecycleRoot,\n currentNamespaceURI,\n derivedSignal,\n dispatchDisposingEvent,\n effect,\n createElement as h,\n inHTMLNamespace,\n inMathMLNamespace,\n inNamespaceURI,\n inSVGNamespace,\n initPropHookSymbol,\n invokeDisposingListeners,\n isSignalLike,\n jsx,\n jsx as jsxs,\n observeSignal,\n removeDisposingListener,\n setRef,\n signal,\n untracked,\n useClassList,\n useImperativeHandle,\n usePropBinding,\n createRef as useRef,\n useSignal,\n useText,\n useUpdatableComputed\n};\n//# sourceMappingURL=index.js.map\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nimport { enMessages } from './locales/en';\nimport { trMessages } from './locales/tr';\n\nexport interface FlipbookMessages {\n emptyStateTitle: string;\n thumbnails: string;\n singlePageMode: string;\n pages: string;\n previous: string;\n next: string;\n zoomOut: string;\n zoomIn: string;\n fullscreen: string;\n settings: string;\n downloadCatalog: string;\n play: string;\n pause: string;\n}\n\nexport const builtInMessages = {\n en: enMessages,\n tr: trMessages\n} as const;\n\nexport type FlipbookLocale = keyof typeof builtInMessages;\nexport type PartialFlipbookMessages = Partial<FlipbookMessages>;\n\nexport interface I18nConfiguration {\n locale?: FlipbookLocale | string;\n messages?: Partial<Record<string, PartialFlipbookMessages>>;\n}\n\nexport function resolveMessages(config: I18nConfiguration = {}): FlipbookMessages {\n const locale = config.locale ?? 'en';\n const builtIn = builtInMessages[locale as FlipbookLocale] ?? builtInMessages.en;\n const custom = config.messages?.[locale] ?? {};\n return {\n ...builtInMessages.en,\n ...builtIn,\n ...custom\n };\n}\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport const enMessages = {\n emptyStateTitle: 'No data available.',\n thumbnails: 'Thumbnails',\n singlePageMode: 'Single Page Mode',\n pages: 'Pages',\n previous: 'Previous',\n next: 'Next',\n zoomOut: 'Zoom Out',\n zoomIn: 'Zoom In',\n fullscreen: 'Fullscreen',\n settings: 'Settings',\n downloadCatalog: 'Download Catalog',\n play: 'Play',\n pause: 'Pause'\n} as const;\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport const trMessages = {\n emptyStateTitle: 'Veri bulunamadi.',\n thumbnails: 'Küçük Resimler',\n singlePageMode: 'Tek Sayfa Modu',\n pages: 'Sayfalar',\n previous: 'Önceki',\n next: 'Sonraki',\n zoomOut: 'Uzaklaş',\n zoomIn: 'Yaklaş',\n fullscreen: 'Tam Ekran',\n settings: 'Ayarlar',\n downloadCatalog: 'Kataloğu İndir',\n play: 'Otomatik Oynat',\n pause: 'Duraklat'\n} as const;\n","/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n *\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n *\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n *\n * 2. Commercial License: If you wish to use this software in commercial,\n * closed-source, or SaaS products without the AGPLv3 obligations,\n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\n\r\nimport { computed } from '@preact/signals-core';\r\nimport type { FlipbookStore } from '../state/store';\r\nimport { resolveMessages } from '../i18n/service';\r\ninterface ToolbarProps {\r\n store: FlipbookStore;\n onToggleThumbs: () => void;\n onToggleSingleMode: () => void;\n onZoomIn: () => void;\n onZoomOut: () => void;\n onDownload?: () => void;\n onSoundToggle: () => void;\n onNextPage: () => void;\n onPrevPage: () => void;\n onToggleAutoPlay: () => void;\n onToggleFullscreen: () => void;\n}\n\nexport function Toolbar(props: ToolbarProps) {\n const messages = computed(() => resolveMessages({ locale: props.store.locale.value, messages: props.store.messages.value }));\n\n return (\n <div class=\"bk-toolbar\" role=\"toolbar\" aria-label=\"Flipbook controls\">\n <div class=\"bk-btn-group\">\n <button type=\"button\"\n class={computed(() => `bk-btn ${props.store.showThumbs.value ? 'active' : ''}`)}\n onClick={props.onToggleThumbs}\n aria-label={computed(() => messages.value.thumbnails || 'Thumbnails')} aria-pressed={computed(() => props.store.showThumbs.value ? 'true' : 'false')} title={computed(() => messages.value.thumbnails || 'Thumbnails')}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect></svg>\n </button>\n\n <button type=\"button\"\n class={computed(() => `bk-btn bz-hide-mobile ${props.store.isSingleMode.value ? 'active' : ''}`)}\n onClick={props.onToggleSingleMode}\n aria-label={computed(() => messages.value.singlePageMode || 'Single Page')} aria-pressed={computed(() => props.store.isSingleMode.value ? 'true' : 'false')} title={computed(() => messages.value.singlePageMode || 'Single Page')}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line><polyline points=\"10 9 9 9 8 9\"></polyline></svg>\n </button>\n\n <button type=\"button\"\n class={computed(() => `bk-btn ${props.store.isAutoPlaying.value ? 'active' : ''}`)}\n onClick={props.onToggleAutoPlay}\n aria-label={computed(() => props.store.isAutoPlaying.value ? (messages.value.pause || 'Pause') : (messages.value.play || 'Play'))} aria-pressed={computed(() => props.store.isAutoPlaying.value ? 'true' : 'false')} title={computed(() => props.store.isAutoPlaying.value ? (messages.value.pause || 'Pause') : (messages.value.play || 'Play'))}\n >\n <svg style={{ display: computed(() => props.store.isAutoPlaying.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"6\" y=\"4\" width=\"4\" height=\"16\"></rect><rect x=\"14\" y=\"4\" width=\"4\" height=\"16\"></rect></svg>\n\n <svg style={{ display: computed(() => !props.store.isAutoPlaying.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"></polygon></svg>\n </button>\n </div>\n\n <div class=\"bk-btn-group bk-btn-group--center\">\n <button type=\"button\" class=\"bk-btn\" onClick={props.onPrevPage} aria-label={computed(() => messages.value.previous || 'Previous')} title={computed(() => messages.value.previous || 'Previous')}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"15 18 9 12 15 6\"></polyline></svg>\n </button>\n <span class=\"bz-page-info\" aria-live=\"polite\" aria-atomic=\"true\">\n {computed(() => {\n const current = props.store.currentPage.value;\n const total = props.store.totalPages.value;\n if (props.store.isSingleMode.value || current === 0 || current >= total - 1) {\n return `${current + 1} / ${total}`;\n }\n const left = current % 2 === 1 ? current : current - 1;\n return `${left + 1}-${left + 2} / ${total}`;\n })}\n </span>\n <button type=\"button\" class=\"bk-btn\" onClick={props.onNextPage} aria-label={computed(() => messages.value.next || 'Next')} title={computed(() => messages.value.next || 'Next')}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"></polyline></svg>\n </button>\n </div>\n\n <div class=\"bk-btn-group\">\n <button type=\"button\" class=\"bk-btn\" onClick={props.onZoomIn} aria-label={computed(() => messages.value.zoomIn || 'Zoom In')} title={computed(() => messages.value.zoomIn || 'Zoom In')}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line></svg>\n </button>\n <button type=\"button\"\n class={computed(() => `bk-btn ${props.store.isZoomed.value ? 'active' : ''}`)}\n onClick={props.onZoomOut}\n aria-label={computed(() => messages.value.zoomOut || 'Zoom Out')} title={computed(() => messages.value.zoomOut || 'Zoom Out')}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line></svg>\n </button>\n\n <button type=\"button\" class=\"bk-btn bk-btn--fullscreen\" onClick={props.onToggleFullscreen} aria-label={computed(() => messages.value.fullscreen || 'Fullscreen')} title={computed(() => messages.value.fullscreen || 'Fullscreen')}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"></path></svg>\n </button>\n\n {computed(() => {\n if (props.store.allowDownload.value && props.store.hasDownloadUrl.value && props.onDownload) {\n return (\n <button type=\"button\" class=\"bk-btn bk-btn--download\" onClick={props.onDownload} aria-label={computed(() => messages.value.downloadCatalog || 'Download')} title={computed(() => messages.value.downloadCatalog || 'Download')}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"7 10 12 15 17 10\"></polyline><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line></svg>\n </button>\n );\n }\n return null;\n })}\n\n <button type=\"button\"\n // @ts-ignore\n class={computed(() => `bk-btn ${!props.store.soundEnabled.value ? 'muted' : ''}`)}\n onClick={props.onSoundToggle}\n aria-label=\"Sound\" aria-pressed={computed(() => props.store.soundEnabled.value ? 'true' : 'false')} title=\"Sound\"\n >\n <svg style={{ display: computed(() => props.store.soundEnabled.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><path d=\"M15.54 8.46a5 5 0 0 1 0 7.07\"></path><path d=\"M19.07 4.93a10 10 0 0 1 0 14.14\"></path></svg>\n\n <svg style={{ display: computed(() => !props.store.soundEnabled.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><line x1=\"23\" y1=\"9\" x2=\"17\" y2=\"15\"></line><line x1=\"17\" y1=\"9\" x2=\"23\" y2=\"15\"></line></svg>\n </button>\n </div>\n </div>\n );\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","/**\r\n * @license FlipbookEngine v0.2.4\r\n * Copyright (c) 2026 Murat Dogan\r\n *\r\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\r\n *\r\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\r\n * under the terms of the GNU Affero General Public License v3.0.\r\n *\r\n * 2. Commercial License: If you wish to use this software in commercial,\r\n * closed-source, or SaaS products without the AGPLv3 obligations,\r\n * you must purchase a Commercial License from:\r\n * https://flipbookengine.com/pricing\r\n */\r\n\r\n\r\nimport { computed } from '@preact/signals-core';\r\nimport type { FlipbookStore } from '../state/store';\r\n\r\ninterface ThumbnailsProps {\r\n store: FlipbookStore;\r\n onThumbClick: (pageIndex: number) => void;\r\n}\r\n\r\nexport function Thumbnails(props: ThumbnailsProps) {\r\n return (\r\n <div class=\"bk-thumbs\" style={computed(() => props.store.showThumbs.value ? 'display:flex;' : 'display:none;')}>\r\n {props.store.pages.value.map((page, index) => {\r\n const isActive = () => {\r\n const current = props.store.currentPage.value;\r\n if (props.store.isSingleMode.value || current === 0 || current >= props.store.pages.value.length - 1) {\r\n return current === index;\r\n }\r\n const left = current % 2 === 1 ? current : current - 1;\r\n return index === left || index === left + 1;\r\n };\r\n\r\n return (\r\n <div\r\n // @ts-ignore\r\n class={computed(() => `thumb-item ${isActive() ? 'active' : ''}`)}\r\n role=\"button\"\r\n tabindex=\"0\"\r\n aria-label={`Go to page ${index + 1}`}\r\n aria-current={computed(() => isActive() ? 'page' : undefined)}\r\n onClick={() => props.onThumbClick(index)}\r\n onKeyDown={(event: KeyboardEvent) => {\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n props.onThumbClick(index);\r\n }\r\n }}\r\n >\r\n <div class=\"thumb-img-wrapper\">\r\n <img\r\n data-pdf-page={page.assetId.startsWith('pdf-page-') ? page.pageNumber : undefined}\r\n class=\"thumb-img\"\r\n src={page.thumb || page.low || page.normal}\r\n alt={`Page ${index + 1}`}\r\n loading=\"lazy\"\r\n onError={(e: any) => { e.currentTarget.style.display = 'none'; }}\r\n />\r\n </div>\r\n <span>{index + 1}</span>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\n\r\n","/**\r\n * @license FlipbookEngine v0.2.4\r\n * Copyright (c) 2026 Murat Dogan\r\n *\r\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\r\n *\r\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\r\n * under the terms of the GNU Affero General Public License v3.0.\r\n *\r\n * 2. Commercial License: If you wish to use this software in commercial,\r\n * closed-source, or SaaS products without the AGPLv3 obligations,\r\n * you must purchase a Commercial License from:\r\n * https://flipbookengine.com/pricing\r\n */\r\n\r\n\r\nimport { computed } from '@preact/signals-core';\r\nimport type { FlipbookStore } from '../state/store';\r\n\r\ninterface ViewerProps {\r\n store: FlipbookStore;\r\n bookWrapperRef: (el: HTMLElement) => void;\r\n bookSizerRef: (el: HTMLElement) => void;\r\n bookContainerRef: (el: HTMLElement) => void;\r\n}\r\n\r\nexport function Viewer(props: ViewerProps) {\r\n return (\r\n <div\r\n role=\"region\"\r\n aria-label=\"Flipbook viewer\"\r\n class={computed(() => {\r\n let classes = 'bk-book-wrapper ';\r\n if (props.store.isDoublePageLayout.value) classes += 'double-mode ';\r\n if (props.store.isFrontCover.value) classes += 'bk-is-cover ';\r\n if (props.store.isBackCover.value) classes += 'bk-is-back-cover ';\r\n if (props.store.zoomState.value.isActive) classes += 'zoomed ';\r\n return classes.trim();\r\n })}\r\n ref={props.bookWrapperRef}\r\n >\r\n <div\r\n class=\"bk-book-sizer\"\r\n ref={props.bookSizerRef}\r\n >\r\n <div\r\n ref={props.bookContainerRef}\r\n class={computed(() => 'bk-book ' + (props.store.flipState.value !== 'read' ? 'is-flipping' : ''))}\r\n style={computed(() => `display: ${props.store.isSingleMode.value ? 'none' : 'block'};`)}\r\n >\r\n {props.store.pages.value.map((page, index) => {\r\n const isHard = index === 0 || index === props.store.pages.value.length - 1;\r\n\r\n return (\r\n <div\r\n // @ts-ignore\r\n class={`bz-page ${index === 0 ? 'bz-page--cover' : ''} ${index === props.store.pages.value.length - 1 ? 'bz-page--back' : ''}`}\r\n data-density={isHard ? \"hard\" : \"soft\"}\r\n data-idx={index}\r\n >\r\n <div class=\"bz-page-content\" style=\"position:relative; width:100%; height:100%; overflow:hidden;\">\r\n <img\r\n data-pdf-page={page.assetId.startsWith('pdf-page-') ? page.pageNumber : undefined}\r\n src={page.low || page.normal}\r\n data-src={page.normal}\r\n class={`page-content ${page.cropMode !== 'full' ? 'page-content--split page-content--' + page.cropMode : ''}`}\r\n alt={`Page ${index + 1}`}\r\n loading=\"lazy\"\r\n />\r\n <div class=\"page-shadow\"></div>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n\r\n <div\r\n class=\"bk-single-view\"\r\n style={computed(() => `display: ${props.store.isSingleMode.value ? 'flex' : 'none'}; width: 100%; height: 100%; justify-content: center; align-items: center; position: absolute; top: 0; left: 0; z-index: 10;`)}\r\n >\r\n {computed(() => {\r\n const page = props.store.pages.value[props.store.currentPage.value];\r\n if (!page) return null;\r\n return (\r\n <img\r\n data-pdf-page={page.assetId.startsWith('pdf-page-') ? page.pageNumber : undefined}\r\n class={`bk-single-img page-content ${page.cropMode !== 'full' ? 'page-content--split page-content--' + page.cropMode : ''}`}\r\n src={props.store.zoomState.value.isActive ? page.normal : (page.low || page.normal)}\r\n alt={`Page ${props.store.currentPage.value + 1}`}\r\n style=\"opacity: 1; transition: opacity 0.3s; box-shadow: var(--flipbook-shadow);\"\r\n />\r\n );\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","/**\r\n * @license FlipbookEngine v0.2.4\r\n * Copyright (c) 2026 Murat Dogan\r\n *\r\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\r\n */\r\n\r\n\r\nimport { computed } from '@preact/signals-core';\r\nimport type { FlipbookStore } from '../state/store';\r\n\r\ninterface NavigationArrowsProps {\r\n store: FlipbookStore;\r\n onPrevPage: () => void;\r\n onNextPage: () => void;\r\n}\r\n\r\nexport function NavigationArrows(props: NavigationArrowsProps) {\r\n const isLeftVisible = computed(() => {\r\n return props.store.showArrows.value && props.store.currentPage.value > 0;\r\n });\r\n\r\n const isRightVisible = computed(() => {\r\n if (!props.store.showArrows.value || props.store.totalPages.value <= 1) return false;\r\n // If double page layout, the last visible spread starts at totalPages - 2 (if even) or totalPages - 1 (if odd)\r\n // A simple check: if current page is the last page, hide it.\r\n return props.store.currentPage.value < props.store.totalPages.value - 1;\r\n });\r\n\r\n return (\r\n <div class=\"bk-nav-arrows\" style={computed(() => props.store.showArrows.value ? 'display: flex;' : 'display: none;')}>\r\n <button type=\"button\"\r\n class=\"bk-nav-arrow bk-nav-prev\"\r\n style={computed(() => isLeftVisible.value ? 'visibility: visible;' : 'visibility: hidden;')}\r\n onClick={(e: Event) => { e.preventDefault(); props.onPrevPage(); }}\r\n aria-label=\"Previous Page\"\r\n >\r\n <div class=\"bk-arrow-icon bk-arrow-left\"></div>\r\n </button>\r\n <button type=\"button\"\r\n class=\"bk-nav-arrow bk-nav-next\"\r\n style={computed(() => isRightVisible.value ? 'visibility: visible;' : 'visibility: hidden;')}\r\n onClick={(e: Event) => { e.preventDefault(); props.onNextPage(); }}\r\n aria-label=\"Next Page\"\r\n >\r\n <div class=\"bk-arrow-icon bk-arrow-right\"></div>\r\n </button>\r\n </div>\r\n );\r\n}\r\n\r\n","import { computed } from '@preact/signals-core';\r\n/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n *\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n *\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n *\n * 2. Commercial License: If you wish to use this software in commercial,\n * closed-source, or SaaS products without the AGPLv3 obligations,\n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\n\n\nimport { Toolbar } from './Toolbar';\r\nimport { Thumbnails } from './Thumbnails';\r\nimport { Viewer } from './Viewer';\r\nimport { NavigationArrows } from './NavigationArrows';\r\nimport type { FlipbookStore } from '../state/store';\r\nimport type { PageFlipAdapter } from '../adapters/PageFlipAdapter';\nimport type { InteractionManager } from '../core/InteractionManager';\n\ninterface AppProps {\n pageFlipAdapterRef: { current: PageFlipAdapter | null };\n interactionManagerRef: { current: InteractionManager | null };\n bookWrapperRef: (el: HTMLElement) => void;\n bookSizerRef: (el: HTMLElement) => void;\n bookContainerRef: (el: HTMLElement) => void;\n className?: string;\n onDownload: () => void;\r\n onToggleFullscreen: () => void;\r\n store: FlipbookStore;\n}\n\nexport function App(props: AppProps) {\n const handleToggleThumbs = () => {\n props.store.showThumbs.value = !props.store.showThumbs.value;\n };\n\n const handleToggleSingleMode = () => {\n props.store.isSingleMode.value = !props.store.isSingleMode.value;\n };\n\n const handleToggleAutoPlay = () => {\n props.store.isAutoPlaying.value = !props.store.isAutoPlaying.value;\n };\n\n const handleZoomIn = () => {\n props.interactionManagerRef.current?.zoomIn();\n };\n\n const handleZoomOut = () => {\n props.interactionManagerRef.current?.zoomOut();\n };\n\n const handleToggleFullscreen = () => props.onToggleFullscreen();\n const handleThumbClick = (index: number) => {\n if (props.store.currentPage.value !== index) {\n props.store.currentPage.value = index;\n props.pageFlipAdapterRef.current?.playSound();\n }\n };\n\n const handleNextPage = () => {\n props.pageFlipAdapterRef.current?.turnToNextPage();\n };\n\n const handlePrevPage = () => {\n props.pageFlipAdapterRef.current?.turnToPrevPage();\n };\n\n return (\n <div\n class={computed(() => `bk-wrapper bk-theme-${props.store.themeMode.value} ${props.className || ''}`)}\n >\n <div class=\"bk-main-area\">\n <Viewer store={props.store}\n bookWrapperRef={props.bookWrapperRef}\n bookSizerRef={props.bookSizerRef}\n bookContainerRef={props.bookContainerRef}\n />\n\n <NavigationArrows store={props.store}\n onPrevPage={handlePrevPage}\n onNextPage={handleNextPage}\n />\n\n {!props.store.whiteLabel.value ? (\n <div class=\"bk-watermark\">\n Powered by <a href=\"https://flipbookengine.com\" target=\"_blank\" rel=\"noopener\" style=\"text-decoration: underline;\">FlipbookEngine</a>\n </div>\n ) : null}\n </div>\n\n <Toolbar store={props.store}\n onToggleThumbs={handleToggleThumbs}\n onToggleSingleMode={handleToggleSingleMode}\n onZoomIn={handleZoomIn}\n onZoomOut={handleZoomOut}\n onDownload={props.onDownload}\n onNextPage={handleNextPage}\n onPrevPage={handlePrevPage}\n onSoundToggle={() => props.store.soundEnabled.value = !props.store.soundEnabled.value}\n onToggleAutoPlay={handleToggleAutoPlay}\n onToggleFullscreen={handleToggleFullscreen}\n />\n\n <Thumbnails store={props.store}\n onThumbClick={handleThumbClick}\n />\n </div>\n );\n}\r\n\r\n\r\n\r\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e((t=t||self).St={})}(this,(function(t){\"use strict\";class e{constructor(t,e){this.state={angle:0,area:[],position:{x:0,y:0},hardAngle:0,hardDrawingAngle:0},this.createdDensity=e,this.nowDrawingDensity=this.createdDensity,this.render=t}setDensity(t){this.createdDensity=t,this.nowDrawingDensity=t}setDrawingDensity(t){this.nowDrawingDensity=t}setPosition(t){this.state.position=t}setAngle(t){this.state.angle=t}setArea(t){this.state.area=t}setHardDrawingAngle(t){this.state.hardDrawingAngle=t}setHardAngle(t){this.state.hardAngle=t,this.state.hardDrawingAngle=t}setOrientation(t){this.orientation=t}getDrawingDensity(){return this.nowDrawingDensity}getDensity(){return this.createdDensity}getHardAngle(){return this.state.hardAngle}}class i extends e{constructor(t,e,i){super(t,i),this.image=null,this.isLoad=!1,this.loadingAngle=0,this.image=new Image,this.image.src=e}draw(t){const e=this.render.getContext(),i=this.render.convertToGlobal(this.state.position),s=this.render.getRect().pageWidth,n=this.render.getRect().height;e.save(),e.translate(i.x,i.y),e.beginPath();for(let t of this.state.area)null!==t&&(t=this.render.convertToGlobal(t),e.lineTo(t.x-i.x,t.y-i.y));e.rotate(this.state.angle),e.clip(),this.isLoad?e.drawImage(this.image,0,0,s,n):this.drawLoader(e,{x:0,y:0},s,n),e.restore()}simpleDraw(t){const e=this.render.getRect(),i=this.render.getContext(),s=e.pageWidth,n=e.height,h=1===t?e.left+e.pageWidth:e.left,r=e.top;this.isLoad?i.drawImage(this.image,h,r,s,n):this.drawLoader(i,{x:h,y:r},s,n)}drawLoader(t,e,i,s){t.beginPath(),t.strokeStyle=\"rgb(200, 200, 200)\",t.fillStyle=\"rgb(255, 255, 255)\",t.lineWidth=1,t.rect(e.x+1,e.y+1,i-1,s-1),t.stroke(),t.fill();const n={x:e.x+i/2,y:e.y+s/2};t.beginPath(),t.lineWidth=10,t.arc(n.x,n.y,20,this.loadingAngle,3*Math.PI/2+this.loadingAngle),t.stroke(),t.closePath(),this.loadingAngle+=.07,this.loadingAngle>=2*Math.PI&&(this.loadingAngle=0)}load(){this.isLoad||(this.image.onload=()=>{this.isLoad=!0})}newTemporaryCopy(){return this}getTemporaryCopy(){return this}hideTemporaryCopy(){}}class s{constructor(t,e){this.pages=[],this.currentPageIndex=0,this.currentSpreadIndex=0,this.landscapeSpread=[],this.portraitSpread=[],this.render=e,this.app=t,this.currentPageIndex=0,this.isShowCover=this.app.getSettings().showCover}destroy(){this.pages=[]}createSpread(){this.landscapeSpread=[],this.portraitSpread=[];for(let t=0;t<this.pages.length;t++)this.portraitSpread.push([t]);let t=0;this.isShowCover&&(this.pages[0].setDensity(\"hard\"),this.landscapeSpread.push([t]),t++);for(let e=t;e<this.pages.length;e+=2)e<this.pages.length-1?this.landscapeSpread.push([e,e+1]):(this.landscapeSpread.push([e]),this.pages[e].setDensity(\"hard\"))}getSpread(){return\"landscape\"===this.render.getOrientation()?this.landscapeSpread:this.portraitSpread}getSpreadIndexByPage(t){const e=this.getSpread();for(let i=0;i<e.length;i++)if(t===e[i][0]||t===e[i][1])return i;return null}getPageCount(){return this.pages.length}getPages(){return this.pages}getPage(t){if(t>=0&&t<this.pages.length)return this.pages[t];throw new Error(\"Invalid page number\")}nextBy(t){const e=this.pages.indexOf(t);return e<this.pages.length-1?this.pages[e+1]:null}prevBy(t){const e=this.pages.indexOf(t);return e>0?this.pages[e-1]:null}getFlippingPage(t){const e=this.currentSpreadIndex;if(\"portrait\"===this.render.getOrientation())return 0===t?this.pages[e].newTemporaryCopy():this.pages[e-1];{const i=0===t?this.getSpread()[e+1]:this.getSpread()[e-1];return 1===i.length||0===t?this.pages[i[0]]:this.pages[i[1]]}}getBottomPage(t){const e=this.currentSpreadIndex;if(\"portrait\"===this.render.getOrientation())return 0===t?this.pages[e+1]:this.pages[e-1];{const i=0===t?this.getSpread()[e+1]:this.getSpread()[e-1];return 1===i.length?this.pages[i[0]]:0===t?this.pages[i[1]]:this.pages[i[0]]}}showNext(){this.currentSpreadIndex<this.getSpread().length&&(this.currentSpreadIndex++,this.showSpread())}showPrev(){this.currentSpreadIndex>0&&(this.currentSpreadIndex--,this.showSpread())}getCurrentPageIndex(){return this.currentPageIndex}show(t=null){if(null===t&&(t=this.currentPageIndex),t<0||t>=this.pages.length)return;const e=this.getSpreadIndexByPage(t);null!==e&&(this.currentSpreadIndex=e,this.showSpread())}getCurrentSpreadIndex(){return this.currentSpreadIndex}setCurrentSpreadIndex(t){if(!(t>=0&&t<this.getSpread().length))throw new Error(\"Invalid page\");this.currentSpreadIndex=t}showSpread(){const t=this.getSpread()[this.currentSpreadIndex];2===t.length?(this.render.setLeftPage(this.pages[t[0]]),this.render.setRightPage(this.pages[t[1]])):\"landscape\"===this.render.getOrientation()&&t[0]===this.pages.length-1?(this.render.setLeftPage(this.pages[t[0]]),this.render.setRightPage(null)):(this.render.setLeftPage(null),this.render.setRightPage(this.pages[t[0]])),this.currentPageIndex=t[0],this.app.updatePageIndex(this.currentPageIndex)}}class n extends s{constructor(t,e,i){super(t,e),this.imagesHref=i}load(){for(const t of this.imagesHref){const e=new i(this.render,t,\"soft\");e.load(),this.pages.push(e)}this.createSpread()}}class h{static GetDistanceBetweenTwoPoint(t,e){return null===t||null===e?1/0:Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}static GetSegmentLength(t){return h.GetDistanceBetweenTwoPoint(t[0],t[1])}static GetAngleBetweenTwoLine(t,e){const i=t[0].y-t[1].y,s=e[0].y-e[1].y,n=t[1].x-t[0].x,h=e[1].x-e[0].x;return Math.acos((i*s+n*h)/(Math.sqrt(i*i+n*n)*Math.sqrt(s*s+h*h)))}static PointInRect(t,e){return null===e?null:e.x>=t.left&&e.x<=t.width+t.left&&e.y>=t.top&&e.y<=t.top+t.height?e:null}static GetRotatedPoint(t,e,i){return{x:t.x*Math.cos(i)+t.y*Math.sin(i)+e.x,y:t.y*Math.cos(i)-t.x*Math.sin(i)+e.y}}static LimitPointToCircle(t,e,i){if(h.GetDistanceBetweenTwoPoint(t,i)<=e)return i;const s=t.x,n=t.y,r=i.x,o=i.y;let a=Math.sqrt(Math.pow(e,2)*Math.pow(s-r,2)/(Math.pow(s-r,2)+Math.pow(n-o,2)))+s;i.x<0&&(a*=-1);let g=(a-s)*(n-o)/(s-r)+n;return s-r+n===0&&(g=e),{x:a,y:g}}static GetIntersectBetweenTwoSegment(t,e,i){return h.PointInRect(t,h.GetIntersectBeetwenTwoLine(e,i))}static GetIntersectBeetwenTwoLine(t,e){const i=t[0].y-t[1].y,s=e[0].y-e[1].y,n=t[1].x-t[0].x,h=e[1].x-e[0].x,r=t[0].x*t[1].y-t[1].x*t[0].y,o=e[0].x*e[1].y-e[1].x*e[0].y,a=i*o-s*r,g=n*o-h*r,l=-(r*h-o*n)/(i*h-s*n),d=-(i*o-s*r)/(i*h-s*n);if(isFinite(l)&&isFinite(d))return{x:l,y:d};if(Math.abs(a-g)<.1)throw new Error(\"Segment included\");return null}static GetCordsFromTwoPoint(t,e){const i=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y),n=Math.max(i,s),h=[t];function r(t,e,i,s,n){return e>t?t+n*(i/s):e<t?t-n*(i/s):t}for(let o=1;o<=n;o+=1)h.push({x:r(t.x,e.x,i,n,o),y:r(t.y,e.y,s,n,o)});return h}}class r extends e{constructor(t,e,i){super(t,i),this.copiedElement=null,this.temporaryCopy=null,this.isLoad=!1,this.element=e,this.element.classList.add(\"stf__item\"),this.element.classList.add(\"--\"+i)}newTemporaryCopy(){return\"hard\"===this.nowDrawingDensity?this:(null===this.temporaryCopy&&(this.copiedElement=this.element.cloneNode(!0),this.element.parentElement.appendChild(this.copiedElement),this.temporaryCopy=new r(this.render,this.copiedElement,this.nowDrawingDensity)),this.getTemporaryCopy())}getTemporaryCopy(){return this.temporaryCopy}hideTemporaryCopy(){null!==this.temporaryCopy&&(this.copiedElement.remove(),this.copiedElement=null,this.temporaryCopy=null)}draw(t){const e=t||this.nowDrawingDensity,i=this.render.convertToGlobal(this.state.position),s=this.render.getRect().pageWidth,n=this.render.getRect().height;this.element.classList.remove(\"--simple\");const h=`\\n display: block;\\n z-index: ${this.element.style.zIndex};\\n left: 0;\\n top: 0;\\n width: ${s}px;\\n height: ${n}px;\\n `;\"hard\"===e?this.drawHard(h):this.drawSoft(i,h)}drawHard(t=\"\"){const e=this.render.getRect().left+this.render.getRect().width/2,i=this.state.hardDrawingAngle,s=t+\"\\n backface-visibility: hidden;\\n -webkit-backface-visibility: hidden;\\n clip-path: none;\\n -webkit-clip-path: none;\\n \"+(0===this.orientation?`transform-origin: ${this.render.getRect().pageWidth}px 0; \\n transform: translate3d(0, 0, 0) rotateY(${i}deg);`:`transform-origin: 0 0; \\n transform: translate3d(${e}px, 0, 0) rotateY(${i}deg);`);this.element.style.cssText=s}drawSoft(t,e=\"\"){let i=\"polygon( \";for(const t of this.state.area)if(null!==t){let e=1===this.render.getDirection()?{x:-t.x+this.state.position.x,y:t.y-this.state.position.y}:{x:t.x-this.state.position.x,y:t.y-this.state.position.y};e=h.GetRotatedPoint(e,{x:0,y:0},this.state.angle),i+=e.x+\"px \"+e.y+\"px, \"}i=i.slice(0,-2),i+=\")\";const s=e+`transform-origin: 0 0; clip-path: ${i}; -webkit-clip-path: ${i};`+(this.render.isSafari()&&0===this.state.angle?`transform: translate(${t.x}px, ${t.y}px);`:`transform: translate3d(${t.x}px, ${t.y}px, 0) rotate(${this.state.angle}rad);`);this.element.style.cssText=s}simpleDraw(t){const e=this.render.getRect(),i=e.pageWidth,s=e.height,n=1===t?e.left+e.pageWidth:e.left,h=e.top;this.element.classList.add(\"--simple\"),this.element.style.cssText=`\\n position: absolute; \\n display: block; \\n height: ${s}px; \\n left: ${n}px; \\n top: ${h}px; \\n width: ${i}px; \\n z-index: ${this.render.getSettings().startZIndex+1};`}getElement(){return this.element}load(){this.isLoad=!0}setOrientation(t){super.setOrientation(t),this.element.classList.remove(\"--left\",\"--right\"),this.element.classList.add(1===t?\"--right\":\"--left\")}setDrawingDensity(t){this.element.classList.remove(\"--soft\",\"--hard\"),this.element.classList.add(\"--\"+t),super.setDrawingDensity(t)}}class o extends s{constructor(t,e,i,s){super(t,e),this.element=i,this.pagesElement=s}load(){for(const t of this.pagesElement){const e=new r(this.render,t,\"hard\"===t.dataset.density?\"hard\":\"soft\");e.load(),this.pages.push(e)}this.createSpread()}}class a{constructor(t,e,i,s){this.direction=t,this.corner=e,this.topIntersectPoint=null,this.sideIntersectPoint=null,this.bottomIntersectPoint=null,this.pageWidth=parseInt(i,10),this.pageHeight=parseInt(s,10)}calc(t){try{return this.position=this.calcAngleAndPosition(t),this.calculateIntersectPoint(this.position),!0}catch(t){return!1}}getFlippingClipArea(){const t=[];let e=!1;return t.push(this.rect.topLeft),t.push(this.topIntersectPoint),null===this.sideIntersectPoint?e=!0:(t.push(this.sideIntersectPoint),null===this.bottomIntersectPoint&&(e=!1)),t.push(this.bottomIntersectPoint),(e||\"bottom\"===this.corner)&&t.push(this.rect.bottomLeft),t}getBottomClipArea(){const t=[];return t.push(this.topIntersectPoint),\"top\"===this.corner?t.push({x:this.pageWidth,y:0}):(null!==this.topIntersectPoint&&t.push({x:this.pageWidth,y:0}),t.push({x:this.pageWidth,y:this.pageHeight})),null!==this.sideIntersectPoint?h.GetDistanceBetweenTwoPoint(this.sideIntersectPoint,this.topIntersectPoint)>=10&&t.push(this.sideIntersectPoint):\"top\"===this.corner&&t.push({x:this.pageWidth,y:this.pageHeight}),t.push(this.bottomIntersectPoint),t.push(this.topIntersectPoint),t}getAngle(){return 0===this.direction?-this.angle:this.angle}getRect(){return this.rect}getPosition(){return this.position}getActiveCorner(){return 0===this.direction?this.rect.topLeft:this.rect.topRight}getDirection(){return this.direction}getFlippingProgress(){return Math.abs((this.position.x-this.pageWidth)/(2*this.pageWidth)*100)}getCorner(){return this.corner}getBottomPagePosition(){return 1===this.direction?{x:this.pageWidth,y:0}:{x:0,y:0}}getShadowStartPoint(){return\"top\"===this.corner?this.topIntersectPoint:null!==this.sideIntersectPoint?this.sideIntersectPoint:this.topIntersectPoint}getShadowAngle(){const t=h.GetAngleBetweenTwoLine(this.getSegmentToShadowLine(),[{x:0,y:0},{x:this.pageWidth,y:0}]);return 0===this.direction?t:Math.PI-t}calcAngleAndPosition(t){let e=t;if(this.updateAngleAndGeometry(e),e=\"top\"===this.corner?this.checkPositionAtCenterLine(e,{x:0,y:0},{x:0,y:this.pageHeight}):this.checkPositionAtCenterLine(e,{x:0,y:this.pageHeight},{x:0,y:0}),Math.abs(e.x-this.pageWidth)<1&&Math.abs(e.y)<1)throw new Error(\"Point is too small\");return e}updateAngleAndGeometry(t){this.angle=this.calculateAngle(t),this.rect=this.getPageRect(t)}calculateAngle(t){const e=this.pageWidth-t.x+1,i=\"bottom\"===this.corner?this.pageHeight-t.y:t.y;let s=2*Math.acos(e/Math.sqrt(i*i+e*e));i<0&&(s=-s);const n=Math.PI-s;if(!isFinite(s)||n>=0&&n<.003)throw new Error(\"The G point is too small\");return\"bottom\"===this.corner&&(s=-s),s}getPageRect(t){return\"top\"===this.corner?this.getRectFromBasePoint([{x:0,y:0},{x:this.pageWidth,y:0},{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}],t):this.getRectFromBasePoint([{x:0,y:-this.pageHeight},{x:this.pageWidth,y:-this.pageHeight},{x:0,y:0},{x:this.pageWidth,y:0}],t)}getRectFromBasePoint(t,e){return{topLeft:this.getRotatedPoint(t[0],e),topRight:this.getRotatedPoint(t[1],e),bottomLeft:this.getRotatedPoint(t[2],e),bottomRight:this.getRotatedPoint(t[3],e)}}getRotatedPoint(t,e){return{x:t.x*Math.cos(this.angle)+t.y*Math.sin(this.angle)+e.x,y:t.y*Math.cos(this.angle)-t.x*Math.sin(this.angle)+e.y}}calculateIntersectPoint(t){const e={left:-1,top:-1,width:this.pageWidth+2,height:this.pageHeight+2};\"top\"===this.corner?(this.topIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.topRight],[{x:0,y:0},{x:this.pageWidth,y:0}]),this.sideIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.bottomLeft],[{x:this.pageWidth,y:0},{x:this.pageWidth,y:this.pageHeight}]),this.bottomIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.bottomLeft,this.rect.bottomRight],[{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}])):(this.topIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.topLeft,this.rect.topRight],[{x:0,y:0},{x:this.pageWidth,y:0}]),this.sideIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.topLeft],[{x:this.pageWidth,y:0},{x:this.pageWidth,y:this.pageHeight}]),this.bottomIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.bottomLeft,this.rect.bottomRight],[{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}]))}checkPositionAtCenterLine(t,e,i){let s=t;const n=h.LimitPointToCircle(e,this.pageWidth,s);s!==n&&(s=n,this.updateAngleAndGeometry(s));const r=Math.sqrt(Math.pow(this.pageWidth,2)+Math.pow(this.pageHeight,2));let o=this.rect.bottomRight,a=this.rect.topLeft;if(\"bottom\"===this.corner&&(o=this.rect.topRight,a=this.rect.bottomLeft),o.x<=0){const t=h.LimitPointToCircle(i,r,a);t!==s&&(s=t,this.updateAngleAndGeometry(s))}return s}getSegmentToShadowLine(){const t=this.getShadowStartPoint();return[t,t!==this.sideIntersectPoint&&null!==this.sideIntersectPoint?this.sideIntersectPoint:this.bottomIntersectPoint]}}class g{constructor(t,e){this.flippingPage=null,this.bottomPage=null,this.calc=null,this.state=\"read\",this.render=t,this.app=e}fold(t){this.setState(\"user_fold\"),null===this.calc&&this.start(t),this.do(this.render.convertToPage(t))}flip(t){if(this.app.getSettings().disableFlipByClick&&!this.isPointOnCorners(t))return;if(null!==this.calc&&this.render.finishAnimation(),!this.start(t))return;const e=this.getBoundsRect();this.setState(\"flipping\");const i=e.height/10,s=\"bottom\"===this.calc.getCorner()?e.height-i:i,n=\"bottom\"===this.calc.getCorner()?e.height:0;this.calc.calc({x:e.pageWidth-i,y:s}),this.animateFlippingTo({x:e.pageWidth-i,y:s},{x:-e.pageWidth,y:n},!0)}start(t){this.reset();const e=this.render.convertToBook(t),i=this.getBoundsRect(),s=this.getDirectionByPoint(e),n=e.y>=i.height/2?\"bottom\":\"top\";if(!this.checkDirection(s))return!1;try{if(this.flippingPage=this.app.getPageCollection().getFlippingPage(s),this.bottomPage=this.app.getPageCollection().getBottomPage(s),\"landscape\"===this.render.getOrientation())if(1===s){const t=this.app.getPageCollection().nextBy(this.flippingPage);null!==t&&this.flippingPage.getDensity()!==t.getDensity()&&(this.flippingPage.setDrawingDensity(\"hard\"),t.setDrawingDensity(\"hard\"))}else{const t=this.app.getPageCollection().prevBy(this.flippingPage);null!==t&&this.flippingPage.getDensity()!==t.getDensity()&&(this.flippingPage.setDrawingDensity(\"hard\"),t.setDrawingDensity(\"hard\"))}return this.render.setDirection(s),this.calc=new a(s,n,i.pageWidth.toString(10),i.height.toString(10)),!0}catch(t){return!1}}do(t){if(null!==this.calc&&this.calc.calc(t)){const t=this.calc.getFlippingProgress();this.bottomPage.setArea(this.calc.getBottomClipArea()),this.bottomPage.setPosition(this.calc.getBottomPagePosition()),this.bottomPage.setAngle(0),this.bottomPage.setHardAngle(0),this.flippingPage.setArea(this.calc.getFlippingClipArea()),this.flippingPage.setPosition(this.calc.getActiveCorner()),this.flippingPage.setAngle(this.calc.getAngle()),0===this.calc.getDirection()?this.flippingPage.setHardAngle(90*(200-2*t)/100):this.flippingPage.setHardAngle(-90*(200-2*t)/100),this.render.setPageRect(this.calc.getRect()),this.render.setBottomPage(this.bottomPage),this.render.setFlippingPage(this.flippingPage),this.render.setShadowData(this.calc.getShadowStartPoint(),this.calc.getShadowAngle(),t,this.calc.getDirection())}}flipToPage(t,e){const i=this.app.getPageCollection().getCurrentSpreadIndex(),s=this.app.getPageCollection().getSpreadIndexByPage(t);try{s>i&&(this.app.getPageCollection().setCurrentSpreadIndex(s-1),this.flipNext(e)),s<i&&(this.app.getPageCollection().setCurrentSpreadIndex(s+1),this.flipPrev(e))}catch(t){}}flipNext(t){this.flip({x:this.render.getRect().left+2*this.render.getRect().pageWidth-10,y:\"top\"===t?1:this.render.getRect().height-2})}flipPrev(t){this.flip({x:10,y:\"top\"===t?1:this.render.getRect().height-2})}stopMove(){if(null===this.calc)return;const t=this.calc.getPosition(),e=this.getBoundsRect(),i=\"bottom\"===this.calc.getCorner()?e.height:0;t.x<=0?this.animateFlippingTo(t,{x:-e.pageWidth,y:i},!0):this.animateFlippingTo(t,{x:e.pageWidth,y:i},!1)}showCorner(t){if(!this.checkState(\"read\",\"fold_corner\"))return;const e=this.getBoundsRect(),i=e.pageWidth;if(this.isPointOnCorners(t))if(null===this.calc){if(!this.start(t))return;this.setState(\"fold_corner\"),this.calc.calc({x:i-1,y:1});const s=50,n=\"bottom\"===this.calc.getCorner()?e.height-1:1,h=\"bottom\"===this.calc.getCorner()?e.height-s:s;this.animateFlippingTo({x:i-1,y:n},{x:i-s,y:h},!1,!1)}else this.do(this.render.convertToPage(t));else this.setState(\"read\"),this.render.finishAnimation(),this.stopMove()}animateFlippingTo(t,e,i,s=!0){const n=h.GetCordsFromTwoPoint(t,e),r=[];for(const t of n)r.push(()=>this.do(t));const o=this.getAnimationDuration(n.length);this.render.startAnimation(r,o,()=>{this.calc&&(i&&(1===this.calc.getDirection()?this.app.turnToPrevPage():this.app.turnToNextPage()),s&&(this.render.setBottomPage(null),this.render.setFlippingPage(null),this.render.clearShadow(),this.setState(\"read\"),this.reset()))})}getCalculation(){return this.calc}getState(){return this.state}setState(t){this.state!==t&&(this.app.updateState(t),this.state=t)}getDirectionByPoint(t){const e=this.getBoundsRect();if(\"portrait\"===this.render.getOrientation()){if(t.x-e.pageWidth<=e.width/5)return 1}else if(t.x<e.width/2)return 1;return 0}getAnimationDuration(t){const e=this.app.getSettings().flippingTime;return t>=1e3?e:t/1e3*e}checkDirection(t){return 0===t?this.app.getCurrentPageIndex()<this.app.getPageCount()-1:this.app.getCurrentPageIndex()>=1}reset(){this.calc=null,this.flippingPage=null,this.bottomPage=null}getBoundsRect(){return this.render.getRect()}checkState(...t){for(const e of t)if(this.state===e)return!0;return!1}isPointOnCorners(t){const e=this.getBoundsRect(),i=e.pageWidth,s=Math.sqrt(Math.pow(i,2)+Math.pow(e.height,2))/5,n=this.render.convertToBook(t);return n.x>0&&n.y>0&&n.x<e.width&&n.y<e.height&&(n.x<s||n.x>e.width-s)&&(n.y<s||n.y>e.height-s)}}class l{constructor(t,e){this.leftPage=null,this.rightPage=null,this.flippingPage=null,this.bottomPage=null,this.direction=null,this.orientation=null,this.shadow=null,this.animation=null,this.pageRect=null,this.boundsRect=null,this.timer=0,this.safari=!1,this.setting=e,this.app=t;const i=new RegExp(\"Version\\\\/[\\\\d\\\\.]+.*Safari/\");this.safari=null!==i.exec(window.navigator.userAgent)}render(t){if(null!==this.animation){const e=Math.round((t-this.animation.startedAt)/this.animation.durationFrame);e<this.animation.frames.length?this.animation.frames[e]():(this.animation.onAnimateEnd(),this.animation=null)}this.timer=t,this.drawFrame()}start(){this.update();const t=e=>{this.render(e),requestAnimationFrame(t)};requestAnimationFrame(t)}startAnimation(t,e,i){this.finishAnimation(),this.animation={frames:t,duration:e,durationFrame:e/t.length,onAnimateEnd:i,startedAt:this.timer}}finishAnimation(){null!==this.animation&&(this.animation.frames[this.animation.frames.length-1](),null!==this.animation.onAnimateEnd&&this.animation.onAnimateEnd()),this.animation=null}update(){this.boundsRect=null;const t=this.calculateBoundsRect();this.orientation!==t&&(this.orientation=t,this.app.updateOrientation(t))}calculateBoundsRect(){let t=\"landscape\";const e=this.getBlockWidth(),i=e/2,s=this.getBlockHeight()/2,n=this.setting.width/this.setting.height;let h=this.setting.width,r=this.setting.height,o=i-h;return\"stretch\"===this.setting.size?(e<2*this.setting.minWidth&&this.app.getSettings().usePortrait&&(t=\"portrait\"),h=\"portrait\"===t?this.getBlockWidth():this.getBlockWidth()/2,h>this.setting.maxWidth&&(h=this.setting.maxWidth),r=h/n,r>this.getBlockHeight()&&(r=this.getBlockHeight(),h=r*n),o=\"portrait\"===t?i-h/2-h:i-h):e<2*h&&this.app.getSettings().usePortrait&&(t=\"portrait\",o=i-h/2-h),this.boundsRect={left:o,top:s-r/2,width:2*h,height:r,pageWidth:h},t}setShadowData(t,e,i,s){if(!this.app.getSettings().drawShadow)return;const n=100*this.getSettings().maxShadowOpacity;this.shadow={pos:t,angle:e,width:3*this.getRect().pageWidth/4*i/100,opacity:(100-i)*n/100/100,direction:s,progress:2*i}}clearShadow(){this.shadow=null}getBlockWidth(){return this.app.getUI().getDistElement().offsetWidth}getBlockHeight(){return this.app.getUI().getDistElement().offsetHeight}getDirection(){return this.direction}getRect(){return null===this.boundsRect&&this.calculateBoundsRect(),this.boundsRect}getSettings(){return this.app.getSettings()}getOrientation(){return this.orientation}setPageRect(t){this.pageRect=t}setDirection(t){this.direction=t}setRightPage(t){null!==t&&t.setOrientation(1),this.rightPage=t}setLeftPage(t){null!==t&&t.setOrientation(0),this.leftPage=t}setBottomPage(t){null!==t&&t.setOrientation(1===this.direction?0:1),this.bottomPage=t}setFlippingPage(t){null!==t&&t.setOrientation(0===this.direction&&\"portrait\"!==this.orientation?0:1),this.flippingPage=t}convertToBook(t){const e=this.getRect();return{x:t.x-e.left,y:t.y-e.top}}isSafari(){return this.safari}convertToPage(t,e){e||(e=this.direction);const i=this.getRect();return{x:0===e?t.x-i.left-i.width/2:i.width/2-t.x+i.left,y:t.y-i.top}}convertToGlobal(t,e){if(e||(e=this.direction),null==t)return null;const i=this.getRect();return{x:0===e?t.x+i.left+i.width/2:i.width/2-t.x+i.left,y:t.y+i.top}}convertRectToGlobal(t,e){return e||(e=this.direction),{topLeft:this.convertToGlobal(t.topLeft,e),topRight:this.convertToGlobal(t.topRight,e),bottomLeft:this.convertToGlobal(t.bottomLeft,e),bottomRight:this.convertToGlobal(t.bottomRight,e)}}}class d extends l{constructor(t,e,i){super(t,e),this.canvas=i,this.ctx=i.getContext(\"2d\")}getContext(){return this.ctx}reload(){}drawFrame(){this.clear(),\"portrait\"!==this.orientation&&null!=this.leftPage&&this.leftPage.simpleDraw(0),null!=this.rightPage&&this.rightPage.simpleDraw(1),null!=this.bottomPage&&this.bottomPage.draw(),this.drawBookShadow(),null!=this.flippingPage&&this.flippingPage.draw(),null!=this.shadow&&(this.drawOuterShadow(),this.drawInnerShadow());const t=this.getRect();\"portrait\"===this.orientation&&(this.ctx.beginPath(),this.ctx.rect(t.left+t.pageWidth,t.top,t.width,t.height),this.ctx.clip())}drawBookShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath();const e=t.width/20;this.ctx.rect(t.left,t.top,t.width,t.height);const i={x:t.left+t.width/2-e/2,y:0};this.ctx.translate(i.x,i.y);const s=this.ctx.createLinearGradient(0,0,e,0);s.addColorStop(0,\"rgba(0, 0, 0, 0)\"),s.addColorStop(.4,\"rgba(0, 0, 0, 0.2)\"),s.addColorStop(.49,\"rgba(0, 0, 0, 0.1)\"),s.addColorStop(.5,\"rgba(0, 0, 0, 0.5)\"),s.addColorStop(.51,\"rgba(0, 0, 0, 0.4)\"),s.addColorStop(1,\"rgba(0, 0, 0, 0)\"),this.ctx.clip(),this.ctx.fillStyle=s,this.ctx.fillRect(0,0,e,2*t.height),this.ctx.restore()}drawOuterShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(t.left,t.top,t.width,t.height);const e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y});this.ctx.translate(e.x,e.y),this.ctx.rotate(Math.PI+this.shadow.angle+Math.PI/2);const i=this.ctx.createLinearGradient(0,0,this.shadow.width,0);0===this.shadow.direction?(this.ctx.translate(0,-100),i.addColorStop(0,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),i.addColorStop(1,\"rgba(0, 0, 0, 0)\")):(this.ctx.translate(-this.shadow.width,-100),i.addColorStop(0,\"rgba(0, 0, 0, 0)\"),i.addColorStop(1,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\")),this.ctx.clip(),this.ctx.fillStyle=i,this.ctx.fillRect(0,0,this.shadow.width,2*t.height),this.ctx.restore()}drawInnerShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath();const e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y}),i=this.convertRectToGlobal(this.pageRect);this.ctx.moveTo(i.topLeft.x,i.topLeft.y),this.ctx.lineTo(i.topRight.x,i.topRight.y),this.ctx.lineTo(i.bottomRight.x,i.bottomRight.y),this.ctx.lineTo(i.bottomLeft.x,i.bottomLeft.y),this.ctx.translate(e.x,e.y),this.ctx.rotate(Math.PI+this.shadow.angle+Math.PI/2);const s=3*this.shadow.width/4,n=this.ctx.createLinearGradient(0,0,s,0);0===this.shadow.direction?(this.ctx.translate(-s,-100),n.addColorStop(1,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(.9,\"rgba(0, 0, 0, 0.05)\"),n.addColorStop(.7,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(0,\"rgba(0, 0, 0, 0)\")):(this.ctx.translate(0,-100),n.addColorStop(0,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(.1,\"rgba(0, 0, 0, 0.05)\"),n.addColorStop(.3,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(1,\"rgba(0, 0, 0, 0)\")),this.ctx.clip(),this.ctx.fillStyle=n,this.ctx.fillRect(0,0,s,2*t.height),this.ctx.restore()}clear(){this.ctx.fillStyle=\"white\",this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height)}}class p{constructor(t,e,i){this.touchPoint=null,this.swipeTimeout=250,this.onResize=()=>{this.update()},this.onMouseDown=t=>{if(this.checkTarget(t.target)){const e=this.getMousePos(t.clientX,t.clientY);this.app.startUserTouch(e),t.preventDefault()}},this.onTouchStart=t=>{if(this.checkTarget(t.target)&&t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);this.touchPoint={point:i,time:Date.now()},setTimeout(()=>{null!==this.touchPoint&&this.app.startUserTouch(i)},this.swipeTimeout),this.app.getSettings().mobileScrollSupport||t.preventDefault()}},this.onMouseUp=t=>{const e=this.getMousePos(t.clientX,t.clientY);this.app.userStop(e)},this.onMouseMove=t=>{const e=this.getMousePos(t.clientX,t.clientY);this.app.userMove(e,!1)},this.onTouchMove=t=>{if(t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);this.app.getSettings().mobileScrollSupport?(null!==this.touchPoint&&(Math.abs(this.touchPoint.point.x-i.x)>10||\"read\"!==this.app.getState())&&t.cancelable&&this.app.userMove(i,!0),\"read\"!==this.app.getState()&&t.preventDefault()):this.app.userMove(i,!0)}},this.onTouchEnd=t=>{if(t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);let s=!1;if(null!==this.touchPoint){const t=i.x-this.touchPoint.point.x,e=Math.abs(i.y-this.touchPoint.point.y);Math.abs(t)>this.swipeDistance&&e<2*this.swipeDistance&&Date.now()-this.touchPoint.time<this.swipeTimeout&&(t>0?this.app.flipPrev(this.touchPoint.point.y<this.app.getRender().getRect().height/2?\"top\":\"bottom\"):this.app.flipNext(this.touchPoint.point.y<this.app.getRender().getRect().height/2?\"top\":\"bottom\"),s=!0),this.touchPoint=null}this.app.userStop(i,s)}},this.parentElement=t,t.classList.add(\"stf__parent\"),t.insertAdjacentHTML(\"afterbegin\",'<div class=\"stf__wrapper\"></div>'),this.wrapper=t.querySelector(\".stf__wrapper\"),this.app=e;const s=this.app.getSettings().usePortrait?1:2;t.style.minWidth=i.minWidth*s+\"px\",t.style.minHeight=i.minHeight+\"px\",\"fixed\"===i.size&&(t.style.minWidth=i.width*s+\"px\",t.style.minHeight=i.height+\"px\"),i.autoSize&&(t.style.width=\"100%\",t.style.maxWidth=2*i.maxWidth+\"px\"),t.style.display=\"block\",window.addEventListener(\"resize\",this.onResize,!1),this.swipeDistance=i.swipeDistance}destroy(){this.app.getSettings().useMouseEvents&&this.removeHandlers(),this.distElement.remove(),this.wrapper.remove()}getDistElement(){return this.distElement}getWrapper(){return this.wrapper}setOrientationStyle(t){this.wrapper.classList.remove(\"--portrait\",\"--landscape\"),\"portrait\"===t?(this.app.getSettings().autoSize&&(this.wrapper.style.paddingBottom=this.app.getSettings().height/this.app.getSettings().width*100+\"%\"),this.wrapper.classList.add(\"--portrait\")):(this.app.getSettings().autoSize&&(this.wrapper.style.paddingBottom=this.app.getSettings().height/(2*this.app.getSettings().width)*100+\"%\"),this.wrapper.classList.add(\"--landscape\")),this.update()}removeHandlers(){window.removeEventListener(\"resize\",this.onResize),this.distElement.removeEventListener(\"mousedown\",this.onMouseDown),this.distElement.removeEventListener(\"touchstart\",this.onTouchStart),window.removeEventListener(\"mousemove\",this.onMouseMove),window.removeEventListener(\"touchmove\",this.onTouchMove),window.removeEventListener(\"mouseup\",this.onMouseUp),window.removeEventListener(\"touchend\",this.onTouchEnd)}setHandlers(){window.addEventListener(\"resize\",this.onResize,!1),this.app.getSettings().useMouseEvents&&(this.distElement.addEventListener(\"mousedown\",this.onMouseDown),this.distElement.addEventListener(\"touchstart\",this.onTouchStart),window.addEventListener(\"mousemove\",this.onMouseMove),window.addEventListener(\"touchmove\",this.onTouchMove,{passive:!this.app.getSettings().mobileScrollSupport}),window.addEventListener(\"mouseup\",this.onMouseUp),window.addEventListener(\"touchend\",this.onTouchEnd))}getMousePos(t,e){const i=this.distElement.getBoundingClientRect();return{x:t-i.left,y:e-i.top}}checkTarget(t){return!this.app.getSettings().clickEventForward||![\"a\",\"button\"].includes(t.tagName.toLowerCase())}}class c extends p{constructor(t,e,i,s){super(t,e,i),this.wrapper.insertAdjacentHTML(\"afterbegin\",'<div class=\"stf__block\"></div>'),this.distElement=t.querySelector(\".stf__block\"),this.items=s;for(const t of s)this.distElement.appendChild(t);this.setHandlers()}clear(){for(const t of this.items)this.parentElement.appendChild(t)}updateItems(t){this.removeHandlers(),this.distElement.innerHTML=\"\";for(const e of t)this.distElement.appendChild(e);this.items=t,this.setHandlers()}update(){this.app.getRender().update()}}class u extends p{constructor(t,e,i){super(t,e,i),this.wrapper.innerHTML='<canvas class=\"stf__canvas\"></canvas>',this.canvas=t.querySelectorAll(\"canvas\")[0],this.distElement=this.canvas,this.resizeCanvas(),this.setHandlers()}resizeCanvas(){const t=getComputedStyle(this.canvas),e=parseInt(t.getPropertyValue(\"width\"),10),i=parseInt(t.getPropertyValue(\"height\"),10);this.canvas.width=e,this.canvas.height=i}getCanvas(){return this.canvas}update(){this.resizeCanvas(),this.app.getRender().update()}}class w extends l{constructor(t,e,i){super(t,e),this.outerShadow=null,this.innerShadow=null,this.hardShadow=null,this.hardInnerShadow=null,this.element=i,this.createShadows()}createShadows(){this.element.insertAdjacentHTML(\"beforeend\",'<div class=\"stf__outerShadow\"></div>\\n <div class=\"stf__innerShadow\"></div>\\n <div class=\"stf__hardShadow\"></div>\\n <div class=\"stf__hardInnerShadow\"></div>'),this.outerShadow=this.element.querySelector(\".stf__outerShadow\"),this.innerShadow=this.element.querySelector(\".stf__innerShadow\"),this.hardShadow=this.element.querySelector(\".stf__hardShadow\"),this.hardInnerShadow=this.element.querySelector(\".stf__hardInnerShadow\")}clearShadow(){super.clearShadow(),this.outerShadow.style.cssText=\"display: none\",this.innerShadow.style.cssText=\"display: none\",this.hardShadow.style.cssText=\"display: none\",this.hardInnerShadow.style.cssText=\"display: none\"}reload(){this.element.querySelector(\".stf__outerShadow\")||this.createShadows()}drawHardInnerShadow(){const t=this.getRect(),e=this.shadow.progress>100?200-this.shadow.progress:this.shadow.progress;let i=(100-e)*(2.5*t.pageWidth)/100+20;i>t.pageWidth&&(i=t.pageWidth);let s=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+5).toString(10)};\\n width: ${i}px;\\n height: ${t.height}px;\\n background: linear-gradient(to right,\\n rgba(0, 0, 0, ${this.shadow.opacity*e/100}) 5%,\\n rgba(0, 0, 0, 0) 100%);\\n left: ${t.left+t.width/2}px;\\n transform-origin: 0 0;\\n `;s+=0===this.getDirection()&&this.shadow.progress>100||1===this.getDirection()&&this.shadow.progress<=100?\"transform: translate3d(0, 0, 0);\":\"transform: translate3d(0, 0, 0) rotateY(180deg);\",this.hardInnerShadow.style.cssText=s}drawHardOuterShadow(){const t=this.getRect();let e=(100-(this.shadow.progress>100?200-this.shadow.progress:this.shadow.progress))*(2.5*t.pageWidth)/100+20;e>t.pageWidth&&(e=t.pageWidth);let i=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+4).toString(10)};\\n width: ${e}px;\\n height: ${t.height}px;\\n background: linear-gradient(to left, rgba(0, 0, 0, ${this.shadow.opacity}) 5%, rgba(0, 0, 0, 0) 100%);\\n left: ${t.left+t.width/2}px;\\n transform-origin: 0 0;\\n `;i+=0===this.getDirection()&&this.shadow.progress>100||1===this.getDirection()&&this.shadow.progress<=100?\"transform: translate3d(0, 0, 0) rotateY(180deg);\":\"transform: translate3d(0, 0, 0);\",this.hardShadow.style.cssText=i}drawInnerShadow(){const t=this.getRect(),e=3*this.shadow.width/4,i=0===this.getDirection()?e:0,s=0===this.getDirection()?\"to left\":\"to right\",n=this.convertToGlobal(this.shadow.pos),r=this.shadow.angle+3*Math.PI/2,o=[this.pageRect.topLeft,this.pageRect.topRight,this.pageRect.bottomRight,this.pageRect.bottomLeft];let a=\"polygon( \";for(const t of o){let e=1===this.getDirection()?{x:-t.x+this.shadow.pos.x,y:t.y-this.shadow.pos.y}:{x:t.x-this.shadow.pos.x,y:t.y-this.shadow.pos.y};e=h.GetRotatedPoint(e,{x:i,y:100},r),a+=e.x+\"px \"+e.y+\"px, \"}a=a.slice(0,-2),a+=\")\";const g=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+10).toString(10)};\\n width: ${e}px;\\n height: ${2*t.height}px;\\n background: linear-gradient(${s},\\n rgba(0, 0, 0, ${this.shadow.opacity}) 5%,\\n rgba(0, 0, 0, 0.05) 15%,\\n rgba(0, 0, 0, ${this.shadow.opacity}) 35%,\\n rgba(0, 0, 0, 0) 100%);\\n transform-origin: ${i}px 100px;\\n transform: translate3d(${n.x-i}px, ${n.y-100}px, 0) rotate(${r}rad);\\n clip-path: ${a};\\n -webkit-clip-path: ${a};\\n `;this.innerShadow.style.cssText=g}drawOuterShadow(){const t=this.getRect(),e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y}),i=this.shadow.angle+3*Math.PI/2,s=1===this.getDirection()?this.shadow.width:0,n=0===this.getDirection()?\"to right\":\"to left\",r=[{x:0,y:0},{x:t.pageWidth,y:0},{x:t.pageWidth,y:t.height},{x:0,y:t.height}];let o=\"polygon( \";for(const t of r)if(null!==t){let e=1===this.getDirection()?{x:-t.x+this.shadow.pos.x,y:t.y-this.shadow.pos.y}:{x:t.x-this.shadow.pos.x,y:t.y-this.shadow.pos.y};e=h.GetRotatedPoint(e,{x:s,y:100},i),o+=e.x+\"px \"+e.y+\"px, \"}o=o.slice(0,-2),o+=\")\";const a=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+10).toString(10)};\\n width: ${this.shadow.width}px;\\n height: ${2*t.height}px;\\n background: linear-gradient(${n}, rgba(0, 0, 0, ${this.shadow.opacity}), rgba(0, 0, 0, 0));\\n transform-origin: ${s}px 100px;\\n transform: translate3d(${e.x-s}px, ${e.y-100}px, 0) rotate(${i}rad);\\n clip-path: ${o};\\n -webkit-clip-path: ${o};\\n `;this.outerShadow.style.cssText=a}drawLeftPage(){\"portrait\"!==this.orientation&&null!==this.leftPage&&(1===this.direction&&null!==this.flippingPage&&\"hard\"===this.flippingPage.getDrawingDensity()?(this.leftPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.leftPage.setHardDrawingAngle(180+this.flippingPage.getHardAngle()),this.leftPage.draw(this.flippingPage.getDrawingDensity())):this.leftPage.simpleDraw(0))}drawRightPage(){null!==this.rightPage&&(0===this.direction&&null!==this.flippingPage&&\"hard\"===this.flippingPage.getDrawingDensity()?(this.rightPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.rightPage.setHardDrawingAngle(180+this.flippingPage.getHardAngle()),this.rightPage.draw(this.flippingPage.getDrawingDensity())):this.rightPage.simpleDraw(1))}drawBottomPage(){if(null===this.bottomPage)return;const t=null!=this.flippingPage?this.flippingPage.getDrawingDensity():null;\"portrait\"===this.orientation&&1===this.direction||(this.bottomPage.getElement().style.zIndex=(this.getSettings().startZIndex+3).toString(10),this.bottomPage.draw(t))}drawFrame(){this.clear(),this.drawLeftPage(),this.drawRightPage(),this.drawBottomPage(),null!=this.flippingPage&&(this.flippingPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.flippingPage.draw()),null!=this.shadow&&null!==this.flippingPage&&(\"soft\"===this.flippingPage.getDrawingDensity()?(this.drawOuterShadow(),this.drawInnerShadow()):(this.drawHardOuterShadow(),this.drawHardInnerShadow()))}clear(){for(const t of this.app.getPageCollection().getPages())t!==this.leftPage&&t!==this.rightPage&&t!==this.flippingPage&&t!==this.bottomPage&&(t.getElement().style.cssText=\"display: none\"),t.getTemporaryCopy()!==this.flippingPage&&t.hideTemporaryCopy()}update(){super.update(),null!==this.rightPage&&this.rightPage.setOrientation(1),null!==this.leftPage&&this.leftPage.setOrientation(0)}}class x{constructor(){this._default={startPage:0,size:\"fixed\",width:0,height:0,minWidth:0,maxWidth:0,minHeight:0,maxHeight:0,drawShadow:!0,flippingTime:1e3,usePortrait:!0,startZIndex:0,autoSize:!0,maxShadowOpacity:1,showCover:!1,mobileScrollSupport:!0,swipeDistance:30,clickEventForward:!0,useMouseEvents:!0,showPageCorners:!0,disableFlipByClick:!1}}getSettings(t){const e=this._default;if(Object.assign(e,t),\"stretch\"!==e.size&&\"fixed\"!==e.size)throw new Error('Invalid size type. Available only \"fixed\" and \"stretch\" value');if(e.width<=0||e.height<=0)throw new Error(\"Invalid width or height\");if(e.flippingTime<=0)throw new Error(\"Invalid flipping time\");return\"stretch\"===e.size?(e.minWidth<=0&&(e.minWidth=100),e.maxWidth<e.minWidth&&(e.maxWidth=2e3),e.minHeight<=0&&(e.minHeight=100),e.maxHeight<e.minHeight&&(e.maxHeight=2e3)):(e.minWidth=e.width,e.maxWidth=e.width,e.minHeight=e.height,e.maxHeight=e.height),e}}!function(t,e){void 0===e&&(e={});var i=e.insertAt;if(t&&\"undefined\"!=typeof document){var s=document.head||document.getElementsByTagName(\"head\")[0],n=document.createElement(\"style\");n.type=\"text/css\",\"top\"===i&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=t:n.appendChild(document.createTextNode(t))}}(\".stf__parent {\\n position: relative;\\n display: block;\\n box-sizing: border-box;\\n transform: translateZ(0);\\n\\n -ms-touch-action: pan-y;\\n touch-action: pan-y;\\n}\\n\\n.sft__wrapper {\\n position: relative;\\n width: 100%;\\n box-sizing: border-box;\\n}\\n\\n.stf__parent canvas {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__block {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n box-sizing: border-box;\\n perspective: 2000px;\\n}\\n\\n.stf__item {\\n display: none;\\n position: absolute;\\n transform-style: preserve-3d;\\n}\\n\\n.stf__outerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__innerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__hardShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__hardInnerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\");t.PageFlip=class extends class{constructor(){this.events=new Map}on(t,e){return this.events.has(t)?this.events.get(t).push(e):this.events.set(t,[e]),this}off(t){this.events.delete(t)}trigger(t,e,i=null){if(this.events.has(t))for(const s of this.events.get(t))s({data:i,object:e})}}{constructor(t,e){super(),this.isUserTouch=!1,this.isUserMove=!1,this.setting=null,this.pages=null,this.setting=(new x).getSettings(e),this.block=t}destroy(){this.ui.destroy(),this.block.remove()}update(){this.render.update(),this.pages.show()}loadFromImages(t){this.ui=new u(this.block,this,this.setting);const e=this.ui.getCanvas();this.render=new d(this,this.setting,e),this.flipController=new g(this.render,this),this.pages=new n(this,this.render,t),this.pages.load(),this.render.start(),this.pages.show(this.setting.startPage),setTimeout(()=>{this.ui.update(),this.trigger(\"init\",this,{page:this.setting.startPage,mode:this.render.getOrientation()})},1)}loadFromHTML(t){this.ui=new c(this.block,this,this.setting,t),this.render=new w(this,this.setting,this.ui.getDistElement()),this.flipController=new g(this.render,this),this.pages=new o(this,this.render,this.ui.getDistElement(),t),this.pages.load(),this.render.start(),this.pages.show(this.setting.startPage),setTimeout(()=>{this.ui.update(),this.trigger(\"init\",this,{page:this.setting.startPage,mode:this.render.getOrientation()})},1)}updateFromImages(t){const e=this.pages.getCurrentPageIndex();this.pages.destroy(),this.pages=new n(this,this.render,t),this.pages.load(),this.pages.show(e),this.trigger(\"update\",this,{page:e,mode:this.render.getOrientation()})}updateFromHtml(t){const e=this.pages.getCurrentPageIndex();this.pages.destroy(),this.pages=new o(this,this.render,this.ui.getDistElement(),t),this.pages.load(),this.ui.updateItems(t),this.render.reload(),this.pages.show(e),this.trigger(\"update\",this,{page:e,mode:this.render.getOrientation()})}clear(){this.pages.destroy(),this.ui.clear()}turnToPrevPage(){this.pages.showPrev()}turnToNextPage(){this.pages.showNext()}turnToPage(t){this.pages.show(t)}flipNext(t=\"top\"){this.flipController.flipNext(t)}flipPrev(t=\"top\"){this.flipController.flipPrev(t)}flip(t,e=\"top\"){this.flipController.flipToPage(t,e)}updateState(t){this.trigger(\"changeState\",this,t)}updatePageIndex(t){this.trigger(\"flip\",this,t)}updateOrientation(t){this.ui.setOrientationStyle(t),this.update(),this.trigger(\"changeOrientation\",this,t)}getPageCount(){return this.pages.getPageCount()}getCurrentPageIndex(){return this.pages.getCurrentPageIndex()}getPage(t){return this.pages.getPage(t)}getRender(){return this.render}getFlipController(){return this.flipController}getOrientation(){return this.render.getOrientation()}getBoundsRect(){return this.render.getRect()}getSettings(){return this.setting}getUI(){return this.ui}getState(){return this.flipController.getState()}getPageCollection(){return this.pages}startUserTouch(t){this.mousePosition=t,this.isUserTouch=!0,this.isUserMove=!1}userMove(t,e){this.isUserTouch||e||!this.setting.showPageCorners?this.isUserTouch&&h.GetDistanceBetweenTwoPoint(this.mousePosition,t)>5&&(this.isUserMove=!0,this.flipController.fold(t)):this.flipController.showCorner(t)}userStop(t,e=!1){this.isUserTouch&&(this.isUserTouch=!1,e||(this.isUserMove?this.flipController.stopMove():this.flipController.flip(t)))}},Object.defineProperty(t,\"__esModule\",{value:!0})}));\n","/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n *\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n *\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n *\n * 2. Commercial License: If you wish to use this software in commercial,\n * closed-source, or SaaS products without the AGPLv3 obligations,\n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\n\n\nimport { PageFlip } from 'page-flip';\r\nimport { effect } from '@preact/signals-core';\r\nimport type { FlipbookStore } from '../state/store';\r\nimport type { FlipbookEngineOptions } from '../engine';\n\nexport function prefersReducedMotion(): boolean {\n return typeof window !== 'undefined'\n && typeof window.matchMedia === 'function'\n && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\nexport function resolveFlippingTime(flippingTime?: number, reducedMotion = prefersReducedMotion()): number {\n if (reducedMotion) return 0;\n return typeof flippingTime === 'number' && flippingTime >= 0 ? flippingTime : 1000;\n}\nexport class PageFlipAdapter {\n private pageFlip: any = null;\n private bookContainer: HTMLElement;\n private options: FlipbookEngineOptions;\r\n private store: FlipbookStore;\n private unsubs: Array<() => void> = [];\n private audioEl: HTMLAudioElement | null = null;\r\n private audioUnlockHandler: (() => void) | null = null;\n private isLibraryFlipping = false;\n private autoPlayTimer: any = null;\n\n constructor(bookContainer: HTMLElement, options: FlipbookEngineOptions, store: FlipbookStore) {\n this.bookContainer = bookContainer;\n this.options = options;\r\n this.store = store;\n if (options.soundUrl) {\n this.audioEl = new Audio(options.soundUrl);\n this.unlockAudio();\n }\n }\n\n private unlockAudio() {\n if (!this.audioEl) return;\n const unlock = () => {\n if (this.audioEl) {\n const playback = this.audioEl.play();\n if (playback && typeof playback.then === 'function') {\n playback.then(() => {\n this.audioEl!.pause();\n this.audioEl!.currentTime = 0;\n }).catch(() => {});\n }\n }\n document.removeEventListener('touchstart', unlock);\n document.removeEventListener('click', unlock);\n this.audioUnlockHandler = null;\n };\n this.audioUnlockHandler = unlock;\n document.addEventListener('touchstart', unlock, { once: true });\n document.addEventListener('click', unlock, { once: true });\n }\n\n public init(viewportWidth: number, viewportHeight: number) {\n this.pageFlip = new PageFlip(this.bookContainer, {\n width: viewportWidth,\n height: viewportHeight,\n size: \"stretch\" as any,\n minWidth: 100,\n maxWidth: 3000,\n minHeight: 100,\n maxHeight: 3000,\n drawShadow: true,\n showCover: true,\n usePortrait: true,\n mobileScrollSupport: false,\n maxShadowOpacity: this.options.maxShadowOpacity || 0.5,\n flippingTime: resolveFlippingTime(this.options.flippingTime)\n });\n\n // Load the HTML pages from the DOM\n const pageElements = this.bookContainer.querySelectorAll('.bz-page');\n this.pageFlip.loadFromHTML(Array.from(pageElements));\n\n this.bindEvents();\n this.setupSignalSync();\n }\n\n private bindEvents() {\n // When the library flips a page, update our signal\n this.pageFlip.on('flip', (e: any) => {\n // Check if we are not just initializing\n if (this.store.currentPage.value !== e.data) {\n this.isLibraryFlipping = true;\n this.store.currentPage.value = e.data;\n this.playSound();\n this.isLibraryFlipping = false;\n }\n });\n\n // When the library changes state, update our signal\n this.pageFlip.on('changeState', (e: any) => {\n this.store.flipState.value = e.data;\n });\n\n // When the library changes orientation, update our signal\n this.pageFlip.on('changeOrientation', (e: any) => {\n if (this.store.orientation.value !== e.data) {\n this.store.orientation.value = e.data;\n }\n });\n }\n\n private setupSignalSync() {\n // When our signal changes, tell the library to flip (if needed)\n this.unsubs.push(\n effect(() => {\n const targetPage = this.store.currentPage.value;\n const state = this.store.flipState.peek();\n if (!this.pageFlip || this.isLibraryFlipping || state !== 'read') return;\n\n const libCurrentPage = this.pageFlip.getCurrentPageIndex();\n if (libCurrentPage !== targetPage && !this.store.isSingleMode.value) {\n const getSpreadIndex = (p: number) => p === 0 ? 0 : Math.ceil(p / 2);\n const targetSpread = getSpreadIndex(targetPage);\n const currentSpread = getSpreadIndex(libCurrentPage);\n\n if (targetSpread === currentSpread + 1) {\n this.pageFlip.flipNext();\n } else if (targetSpread === currentSpread - 1) {\n this.pageFlip.flipPrev();\n } else if (targetSpread !== currentSpread) {\n this.pageFlip.turnToPage(targetPage);\n }\n }\n })\n );\n\n // Watch for singleMode changes from DOMWise UI to trigger layout updates\n this.unsubs.push(\n effect(() => {\n this.store.isSingleMode.value;\n if (!this.pageFlip) return;\n\n // We use setTimeout to wait for LayoutManager to update the container dimensions first\n setTimeout(() => {\n if (this.pageFlip) {\n this.pageFlip.update();\n }\n window.dispatchEvent(new Event('resize'));\n }, 50);\n })\n );\n\n // AutoPlay loop\n this.unsubs.push(\n effect(() => {\n const playing = this.store.isAutoPlaying.value;\n const interval = this.store.autoPlayInterval.value || 3000;\n\n if (this.autoPlayTimer) {\n clearInterval(this.autoPlayTimer);\n this.autoPlayTimer = null;\n }\n\n if (playing) {\n this.autoPlayTimer = setInterval(() => {\n // Check if we are at the end\n const maxIndex = this.store.pages.value.length - 1;\n if (this.store.currentPage.peek() >= maxIndex || (this.store.currentPage.peek() >= maxIndex - 1 && !this.store.isSingleMode.peek())) {\n // If at end, pause or loop\n // Let's just pause\n this.store.isAutoPlaying.value = false;\n return;\n }\n this.turnToNextPage();\n }, interval);\n }\n })\n );\n }\n\n public turnToNextPage() {\n if (this.store.isSingleMode.value) {\n const nextIdx = this.store.currentPage.value + 1;\n if (nextIdx < this.store.pages.value.length) {\n this.store.currentPage.value = nextIdx;\n this.playSound();\n }\n } else if (this.pageFlip) {\n this.pageFlip.flipNext();\n }\n }\n\n public turnToPrevPage() {\n if (this.store.isSingleMode.value) {\n const prevIdx = this.store.currentPage.value - 1;\n if (prevIdx >= 0) {\n this.store.currentPage.value = prevIdx;\n this.playSound();\n }\n } else if (this.pageFlip) {\n this.pageFlip.flipPrev();\n }\n }\n\n public playSound() {\n if (this.store.soundEnabled.value && this.audioEl) {\n this.audioEl.currentTime = 0;\n const playback = this.audioEl.play();\n if (playback && typeof playback.catch === 'function') {\n playback.catch(err => console.warn('Flipbook Audio Play Error:', err));\n }\n }\n }\n\n public update() {\n if (this.pageFlip) {\n this.pageFlip.update();\n }\n }\n\n public destroy() {\n if (this.autoPlayTimer) {\n clearInterval(this.autoPlayTimer);\n this.autoPlayTimer = null;\n }\n if (this.audioUnlockHandler) {\n document.removeEventListener('touchstart', this.audioUnlockHandler);\n document.removeEventListener('click', this.audioUnlockHandler);\n this.audioUnlockHandler = null;\n }\n this.unsubs.forEach(unsub => unsub());\n this.unsubs = [];\n if (this.pageFlip) {\n this.pageFlip.destroy();\n this.pageFlip = null;\n }\n }\n}\r\n\r\n\r\n\r\n\r\n","import { effect } from '@preact/signals-core';\r\nimport type { FlipbookStore } from '../state/store';\r\n\r\n/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n *\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n *\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n *\n * 2. Commercial License: If you wish to use this software in commercial,\n * closed-source, or SaaS products without the AGPLv3 obligations,\n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\n\n\n\nexport class LayoutManager {\n private wrapperElement: HTMLElement | null = null;\n private sizerElement: HTMLElement | null = null;\n private pageViewport: { width: number; height: number };\r\n private store: FlipbookStore;\n private resizeObserver: ResizeObserver | null = null;\n private orientationMediaQuery: MediaQueryList | null = null;\r\n private orientationChangeHandler: ((e: MediaQueryListEvent | MediaQueryList) => void) | null = null;\n private unsubs: Array<() => void> = [];\n public onResizeCallback?: () => void;\n\n constructor(pageViewport: { width: number; height: number }, store: FlipbookStore) {\n this.pageViewport = pageViewport;\r\n this.store = store;\n }\n\n public init(wrapperElement: HTMLElement, sizerElement: HTMLElement) {\n this.wrapperElement = wrapperElement;\n this.sizerElement = sizerElement;\n\n this.setupResizeObserver();\n this.setupOrientationMedia();\n this.setupStateSync();\n\n // Initial update\n this.updateBookAspectRatio();\n }\n\n private setupStateSync() {\n // When single mode or orientation changes, we need to recalculate the aspect ratio\n this.unsubs.push(\n effect(() => {\n // Accessing signals to track dependencies\n this.store.isSingleMode.value;\n this.store.orientation.value;\n\n // Debounce slightly to allow DOM to settle if classes were added\n setTimeout(() => this.updateBookAspectRatio(), 10);\n })\n );\n }\n\n private setupResizeObserver() {\n if (typeof ResizeObserver !== 'undefined' && this.wrapperElement) {\n this.resizeObserver = new ResizeObserver(() => {\n this.updateBookAspectRatio();\n });\n this.resizeObserver.observe(this.wrapperElement);\n }\n }\n\n private setupOrientationMedia() {\n if (typeof window !== 'undefined' && window.matchMedia) {\n this.orientationMediaQuery = window.matchMedia(\"(orientation: portrait)\");\n\n const handleOrientationChange = (e: MediaQueryListEvent | MediaQueryList) => {\n if (e.matches) {\n // Mobile device turned to portrait -> force single mode?\n // This can be decided by the business logic, for now we just recalculate\n }\n this.updateBookAspectRatio();\n };\n\n this.orientationChangeHandler = handleOrientationChange;\r\n\r\n // Add listener\n if (this.orientationMediaQuery.addEventListener) {\n this.orientationMediaQuery.addEventListener('change', handleOrientationChange);\n } else {\n this.orientationMediaQuery.addListener(handleOrientationChange);\n }\n\n // Call once\n handleOrientationChange(this.orientationMediaQuery);\n }\n }\n\n public updateBookAspectRatio() {\n if (!this.wrapperElement || !this.sizerElement) return;\n\n const availWidth = this.wrapperElement.clientWidth;\n const availHeight = this.wrapperElement.clientHeight;\n\n if (availWidth === 0 || availHeight === 0) return;\n\n const width = this.pageViewport.width;\n const height = this.pageViewport.height;\n\n // Standard aspect ratio calculation\n const isPhysicalPortrait = availWidth < availHeight;\n\n // If the library is in landscape mode AND we are not in forced single mode, we need double width\n const isDouble = this.store.isDoublePageLayout.value;\n const targetRatio = isDouble ? (width * 2) / height : width / height;\n\n let bookWidth = availWidth;\n let bookHeight = availWidth / targetRatio;\n\n // We must fit the entire book on the screen to prevent unwanted vertical scrolling.\n if (bookHeight > availHeight) {\n bookHeight = availHeight;\n bookWidth = availHeight * targetRatio;\n }\n\n // Apply exact pixel sizes.\n // Ensure the width is ALWAYS an EVEN number to prevent sub-pixel rendering gaps.\n let finalWidth = Math.ceil(bookWidth);\n if (finalWidth % 2 !== 0) finalWidth += 1;\n\n this.sizerElement.style.width = `${finalWidth}px`;\n this.sizerElement.style.height = `${Math.floor(bookHeight)}px`;\n this.sizerElement.style.aspectRatio = '';\n\n if (this.onResizeCallback) {\n this.onResizeCallback();\n }\n }\n\n public destroy() {\n this.unsubs.forEach(unsub => unsub());\n this.unsubs = [];\n\n if (this.resizeObserver && this.wrapperElement) {\n this.resizeObserver.unobserve(this.wrapperElement);\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n\n if (this.orientationMediaQuery) {\n if (this.orientationChangeHandler) {\n if (this.orientationMediaQuery.removeEventListener) {\n this.orientationMediaQuery.removeEventListener('change', this.orientationChangeHandler);\n } else {\n this.orientationMediaQuery.removeListener(this.orientationChangeHandler);\n }\n }\n this.orientationChangeHandler = null;\n this.orientationMediaQuery = null;\n }\n }\n}\r\n\r\n\r\n\r\n\r\n","/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n *\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n *\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n *\n * 2. Commercial License: If you wish to use this software in commercial,\n * closed-source, or SaaS products without the AGPLv3 obligations,\n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\n\n\nimport { effect } from '@preact/signals-core';\r\nimport type { FlipbookStore } from '../state/store';\r\nimport type { PageFlipAdapter } from '../adapters/PageFlipAdapter';\n\nexport class InteractionManager {\n private container: HTMLElement;\n private pageFlipAdapter: PageFlipAdapter;\r\n private store: FlipbookStore;\n private touchStartX: number | null = null;\n private unsubs: Array<() => void> = [];\r\n private listenerAbortController: AbortController;\n\n constructor(container: HTMLElement, pageFlipAdapter: PageFlipAdapter, store: FlipbookStore) {\n this.container = container;\n this.pageFlipAdapter = pageFlipAdapter;\r\n this.store = store;\r\n const AbortControllerCtor = container.ownerDocument.defaultView?.AbortController ?? globalThis.AbortController;\r\n this.listenerAbortController = new AbortControllerCtor();\n }\n\n public init() {\n this.bindWheel();\n this.bindMouseDrag();\n this.bindTouch();\n this.setupStateSync();\n }\n\n private setupStateSync() {\n this.unsubs.push(\n effect(() => {\n this.store.isZoomed.value = this.store.zoomState.value.isActive;\n\n if (this.store.zoomState.value.isActive) {\n this.container.style.transform = `translate(${this.store.zoomState.value.translateX}px, ${this.store.zoomState.value.translateY}px) scale(${this.store.zoomState.value.scale})`;\n this.container.style.transition = 'none';\n } else {\n this.container.style.transform = '';\n this.container.style.transition = 'transform 0.3s ease';\n }\n })\n );\n }\n\n private bindWheel() {\n this.container.addEventListener('wheel', (e) => {\n if (this.store.zoomState.value.isActive) {\n e.preventDefault();\n this.updateZoomPan(\n this.store.zoomState.value.translateX - e.deltaX,\n this.store.zoomState.value.translateY - e.deltaY\n );\n }\n }, { passive: false, signal: this.listenerAbortController.signal });\n }\n\n private bindMouseDrag() {\n let isDragging = false;\n let startX = 0;\n let startY = 0;\n let initialTx = 0;\n let initialTy = 0;\n\n this.container.addEventListener('mousedown', (e) => {\n if (this.store.zoomState.value.isActive) {\n isDragging = true;\n startX = e.clientX;\n startY = e.clientY;\n initialTx = this.store.zoomState.value.translateX;\n initialTy = this.store.zoomState.value.translateY;\n this.container.style.cursor = 'grabbing';\n }\r\n }, { signal: this.listenerAbortController.signal });\n\n window.addEventListener('mousemove', (e) => {\n if (!isDragging || !this.store.zoomState.value.isActive) return;\n const dx = e.clientX - startX;\n const dy = e.clientY - startY;\n this.updateZoomPan(initialTx + dx, initialTy + dy);\r\n }, { signal: this.listenerAbortController.signal });\n\n window.addEventListener('mouseup', () => {\n if (isDragging) {\n isDragging = false;\n this.container.style.cursor = this.store.zoomState.value.isActive ? 'grab' : '';\n }\r\n }, { signal: this.listenerAbortController.signal });\n }\n\n private bindTouch() {\n let isDragging = false;\n let startTx = 0;\n let startTy = 0;\n\n this.container.addEventListener('touchstart', (e) => {\n if (e.touches.length === 1) {\n if (!this.store.zoomState.value.isActive) {\n this.touchStartX = e.touches[0].clientX;\n } else {\n isDragging = true;\n this.touchStartX = e.touches[0].clientX;\n const touchStartY = e.touches[0].clientY;\n startTx = this.store.zoomState.value.translateX;\n startTy = this.store.zoomState.value.translateY;\n (this.container as any)._touchStartY = touchStartY;\n }\n }\n }, { passive: true, signal: this.listenerAbortController.signal });\n\n this.container.addEventListener('touchmove', (e) => {\n if (isDragging && this.store.zoomState.value.isActive && e.touches.length === 1 && this.touchStartX !== null) {\n e.preventDefault();\n const dx = e.touches[0].clientX - this.touchStartX;\n const dy = e.touches[0].clientY - (this.container as any)._touchStartY;\n this.updateZoomPan(startTx + dx, startTy + dy);\n }\n }, { passive: false, signal: this.listenerAbortController.signal });\n\n this.container.addEventListener('touchend', (e) => {\n if (this.touchStartX !== null && !this.store.zoomState.value.isActive && this.store.isSingleMode.value && e.changedTouches.length === 1) {\n const diffX = e.changedTouches[0].clientX - this.touchStartX;\n if (diffX > 50 && this.store.currentPage.value > 0) {\n this.pageFlipAdapter.turnToPrevPage();\n } else if (diffX < -50 && this.store.currentPage.value < this.store.totalPages.value - 1) {\n this.pageFlipAdapter.turnToNextPage();\n }\n }\n this.touchStartX = null;\n isDragging = false;\n }, { passive: true, signal: this.listenerAbortController.signal });\n }\n\n public zoomIn() {\n let newScale = this.store.zoomState.value.scale + 0.5;\n if (newScale > 5) newScale = 5;\n\n this.store.zoomState.value = {\n ...this.store.zoomState.value,\n isActive: newScale > 1,\n scale: newScale\n };\n if (newScale > 1) {\n this.container.style.cursor = 'grab';\n }\n }\n\n public zoomOut() {\n let newScale = this.store.zoomState.value.scale - 0.5;\n if (newScale <= 1) {\n newScale = 1;\n this.store.zoomState.value = { ...this.store.zoomState.value, isActive: false, translateX: 0, translateY: 0, scale: 1 };\n this.container.style.cursor = '';\n } else {\n this.store.zoomState.value = { ...this.store.zoomState.value, isActive: true, scale: newScale };\n }\n }\n\n private updateZoomPan(x: number, y: number) {\n this.store.zoomState.value = {\n ...this.store.zoomState.value,\n translateX: x,\n translateY: y\n };\n }\n\n public destroy() {\r\n this.listenerAbortController.abort();\n this.unsubs.forEach(unsub => unsub());\n this.unsubs = [];\n }\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n *\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n */\nimport { signal, computed, type Signal, type ReadonlySignal } from '@preact/signals-core';\nimport type { FlipbookThemeMode } from '../theme/theme';\nimport type { NormalizedFlipbookPage } from '../model/pages';\nimport type { FlipbookEngineOptions } from '../engine';\r\nimport type { PartialFlipbookMessages } from '../i18n/service';\n\nexport type FlipState = 'read' | 'fold_corner' | 'flipping';\nexport type Orientation = 'landscape' | 'portrait';\nexport interface ZoomState { isActive: boolean; translateX: number; translateY: number; isDragging: boolean; scale: number; }\n\nexport interface FlipbookStore {\n currentPage: Signal<number>; totalPages: Signal<number>; isSingleMode: Signal<boolean>;\n showThumbs: Signal<boolean>; showArrows: Signal<boolean>; orientation: Signal<Orientation>;\n flipState: Signal<FlipState>; themeMode: Signal<FlipbookThemeMode>; allowDownload: Signal<boolean>;\n hasDownloadUrl: Signal<boolean>; primaryColor: Signal<string>; whiteLabel: Signal<boolean>;\n isZoomed: Signal<boolean>; isAutoPlaying: Signal<boolean>; autoPlayInterval: Signal<number>;\n soundEnabled: Signal<boolean>; locale: Signal<string>; messages: Signal<Partial<Record<string, PartialFlipbookMessages>>>; zoomState: Signal<ZoomState>; pages: Signal<NormalizedFlipbookPage[]>;\n isDoublePageLayout: ReadonlySignal<boolean>; isFrontCover: ReadonlySignal<boolean>; isBackCover: ReadonlySignal<boolean>;\n init(options: FlipbookEngineOptions, total: number, mappedPages: NormalizedFlipbookPage[], hasPdfUrl: boolean): void;\n}\n\nconst initialZoomState = (): ZoomState => ({ isActive: false, translateX: 0, translateY: 0, isDragging: false, scale: 1 });\n\n/** Creates an isolated reactive state container for one FlipbookEngine instance. */\nexport function createFlipbookStore(): FlipbookStore {\n const currentPage = signal(0), totalPages = signal(0), isSingleMode = signal(false);\n const showThumbs = signal(true), showArrows = signal(true), orientation = signal<Orientation>('landscape');\n const flipState = signal<FlipState>('read'), themeMode = signal<FlipbookThemeMode>('auto');\n const allowDownload = signal(true), hasDownloadUrl = signal(false), primaryColor = signal('#7367f0');\n const whiteLabel = signal(false), isZoomed = signal(false), isAutoPlaying = signal(false);\n const autoPlayInterval = signal(3000), soundEnabled = signal(true);\r\n const locale = signal('en');\r\n const messages = signal<Partial<Record<string, PartialFlipbookMessages>>>({});\n const zoomState = signal<ZoomState>(initialZoomState()), pages = signal<NormalizedFlipbookPage[]>([]);\n const isDoublePageLayout = computed(() => !isSingleMode.value && orientation.value === 'landscape');\n const isFrontCover = computed(() => isDoublePageLayout.value && currentPage.value === 0);\n const isBackCover = computed(() => isDoublePageLayout.value && currentPage.value >= totalPages.value - 1);\n const init = (options: FlipbookEngineOptions, total: number, mappedPages: NormalizedFlipbookPage[], hasPdfUrl: boolean) => {\n totalPages.value = total; pages.value = mappedPages; hasDownloadUrl.value = hasPdfUrl;\n if (options.theme !== undefined) themeMode.value = options.theme;\n if (options.primaryColor !== undefined) primaryColor.value = options.primaryColor;\n if (options.showThumbs !== undefined) showThumbs.value = options.showThumbs;\n if (options.showArrows !== undefined) showArrows.value = options.showArrows;\n if (options.allowDownload !== undefined) allowDownload.value = options.allowDownload;\n if (options.whiteLabel !== undefined) whiteLabel.value = options.whiteLabel;\n if (options.soundEnabled !== undefined) soundEnabled.value = options.soundEnabled;\r\n if (options.locale !== undefined) locale.value = options.locale;\r\n if (options.messages !== undefined) messages.value = options.messages;\n if (options.isSingleMode !== undefined) isSingleMode.value = options.isSingleMode;\n if (options.singleMode !== undefined) isSingleMode.value = options.singleMode;\n if (options.autoPlay !== undefined) isAutoPlaying.value = options.autoPlay;\n if (options.autoPlayInterval !== undefined) autoPlayInterval.value = options.autoPlayInterval;\n currentPage.value = 0;\n };\n return { currentPage, totalPages, isSingleMode, showThumbs, showArrows, orientation, flipState, themeMode, allowDownload, hasDownloadUrl, primaryColor, whiteLabel, isZoomed, isAutoPlaying, autoPlayInterval, soundEnabled, locale, messages, zoomState, pages, isDoublePageLayout, isFrontCover, isBackCover, init };\n}\n\n// Compatibility exports for consumers of the former internal singleton module.\nconst legacyStore = createFlipbookStore();\nexport const currentPage = legacyStore.currentPage, totalPages = legacyStore.totalPages, isSingleMode = legacyStore.isSingleMode;\nexport const showThumbs = legacyStore.showThumbs, showArrows = legacyStore.showArrows, orientation = legacyStore.orientation;\nexport const flipState = legacyStore.flipState, themeMode = legacyStore.themeMode, allowDownload = legacyStore.allowDownload;\nexport const hasDownloadUrl = legacyStore.hasDownloadUrl, primaryColor = legacyStore.primaryColor, whiteLabel = legacyStore.whiteLabel;\nexport const isZoomed = legacyStore.isZoomed, isAutoPlaying = legacyStore.isAutoPlaying, autoPlayInterval = legacyStore.autoPlayInterval;\nexport const soundEnabled = legacyStore.soundEnabled, locale = legacyStore.locale, messages = legacyStore.messages, zoomState = legacyStore.zoomState, pages = legacyStore.pages;\nexport const isDoublePageLayout = legacyStore.isDoublePageLayout, isFrontCover = legacyStore.isFrontCover, isBackCover = legacyStore.isBackCover;\nexport function initStore(options: FlipbookEngineOptions, total: number, mappedPages: NormalizedFlipbookPage[], hasPdfUrl: boolean) { legacyStore.init(options, total, mappedPages, hasPdfUrl); }\r\n\r\n\r\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport type FlipbookPageKind = 'single' | 'spread' | 'cover';\nexport type FlipbookCropMode = 'full' | 'left' | 'right';\nexport type FlipbookSplitDirection = 'ltr' | 'rtl';\n\nexport interface FlipbookPageAsset {\n id?: string;\n pageNumber?: number;\n pageNumbers?: number[];\n kind?: FlipbookPageKind;\n splitDirection?: FlipbookSplitDirection;\n normal: string;\n low: string;\n thumb: string;\n}\n\nexport interface NormalizedFlipbookPage {\n index: number;\n assetId: string;\n pageNumber: number;\n cropMode: FlipbookCropMode;\n normal: string;\n low: string;\n thumb: string;\n}\n\nexport function isFlipbookPageAsset(value: unknown): value is FlipbookPageAsset {\n if (!value || typeof value !== 'object') return false;\n const candidate = value as FlipbookPageAsset;\n return typeof candidate.normal === 'string'\n && typeof candidate.low === 'string'\n && typeof candidate.thumb === 'string';\n}\n\nfunction getAssetPageNumbers(asset: FlipbookPageAsset): number[] {\n if (Array.isArray(asset.pageNumbers) && asset.pageNumbers.length > 0) {\n return asset.pageNumbers;\n }\n\n if (typeof asset.pageNumber === 'number') {\n if (asset.kind === 'spread') return [asset.pageNumber, asset.pageNumber + 1];\n return [asset.pageNumber];\n }\n\n return [];\n}\n\nfunction getSpreadCropModes(splitDirection: FlipbookSplitDirection): FlipbookCropMode[] {\n return splitDirection === 'rtl' ? ['right', 'left'] : ['left', 'right'];\n}\n\nexport function normalizeFlipbookPages(assets: FlipbookPageAsset[]): NormalizedFlipbookPage[] {\n const normalized: NormalizedFlipbookPage[] = [];\n let fallbackPageNumber = 1;\n\n assets.forEach((asset, assetIndex) => {\n const kind = asset.kind ?? 'single';\n const assetId = asset.id ?? `asset-${assetIndex}`;\n const splitDirection = asset.splitDirection ?? 'ltr';\n const pageNumbers = getAssetPageNumbers(asset);\n\n if (kind === 'spread') {\n const spreadNumbers = pageNumbers.length >= 2 ? pageNumbers.slice(0, 2) : [fallbackPageNumber, fallbackPageNumber + 1];\n const cropModes = getSpreadCropModes(splitDirection);\n\n spreadNumbers.forEach((pageNumber, spreadIndex) => {\n normalized.push({\n index: normalized.length,\n assetId,\n pageNumber,\n cropMode: cropModes[spreadIndex] ?? 'full',\n normal: asset.normal,\n low: asset.low,\n thumb: asset.thumb\n });\n });\n\n fallbackPageNumber = spreadNumbers[spreadNumbers.length - 1] + 1;\n return;\n }\n\n const pageNumber = pageNumbers[0] ?? fallbackPageNumber;\n normalized.push({\n index: normalized.length,\n assetId,\n pageNumber,\n cropMode: 'full',\n normal: asset.normal,\n low: asset.low,\n thumb: asset.thumb\n });\n fallbackPageNumber = pageNumber + 1;\n });\n\n return normalized;\n}\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport type FlipbookThemeMode = 'auto' | 'light' | 'dark';\n\nexport interface ThemeConfiguration {\n theme?: FlipbookThemeMode;\n primaryColor?: string;\n cssVariables?: Record<string, string>;\n}\n\nexport function applyThemeConfiguration(container: HTMLElement, config: ThemeConfiguration) {\n container.classList.add('bk-container');\n container.classList.remove('bk-theme-light', 'bk-theme-dark');\n\n if (config.theme === 'light') container.classList.add('bk-theme-light');\n if (config.theme === 'dark') container.classList.add('bk-theme-dark');\n\n if (config.primaryColor) {\n container.style.setProperty('--flipbook-accent', config.primaryColor);\n }\n\n const userVariables = config.cssVariables ?? {};\n Object.entries(userVariables).forEach(([name, value]) => {\n const variableName = name.startsWith('--') ? name : `--${name}`;\n container.style.setProperty(variableName, value);\n });\n}\n\r\n","/**\n * Small LRU cache for rendered PDF page data URLs.\n * The cache is intentionally owned by one PdfRenderer instance so pages from\n * different engine instances or documents can never be mixed.\n */\nexport class PdfRenderCache {\n private readonly entries = new Map<number, string>();\n private hits = 0;\n private misses = 0;\n\n constructor(private readonly maxEntries: number = 32) {\n if (!Number.isInteger(maxEntries) || maxEntries < 0) {\n throw new RangeError('PDF render cache size must be a non-negative integer.');\n }\n }\n\n public get(pageNumber: number): string | undefined {\n const value = this.entries.get(pageNumber);\n if (value === undefined) {\n this.misses++;\n return undefined;\n }\n this.hits++;\n this.entries.delete(pageNumber);\n this.entries.set(pageNumber, value);\n return value;\n }\n\n public set(pageNumber: number, dataUrl: string): void {\n if (this.maxEntries === 0 || !dataUrl) return;\n this.entries.delete(pageNumber);\n this.entries.set(pageNumber, dataUrl);\n while (this.entries.size > this.maxEntries) {\n const oldest = this.entries.keys().next().value as number | undefined;\n if (oldest === undefined) break;\n this.entries.delete(oldest);\n }\n }\n\n public clear(): void {\n this.entries.clear();\n this.hits = 0;\n this.misses = 0;\n }\n\n public get size(): number {\n return this.entries.size;\n }\n\n public getStats(): { size: number; maxEntries: number; hits: number; misses: number } {\n return { size: this.size, maxEntries: this.maxEntries, hits: this.hits, misses: this.misses };\n }\n}\r\n","import * as pdfjsLib from 'pdfjs-dist';\nimport type { NormalizedFlipbookPage } from '../model/pages';\nimport { PdfRenderCache } from './PdfRenderCache';\n\nexport interface PdfRenderProgress { completed: number; total: number; }\n\nexport interface PdfRenderOptions {\n scale?: number;\n quality?: number;\n format?: string;\n workerSrc?: string;\n concurrency?: number;\n cacheSize?: number;\n}\n\nexport class PdfRenderer {\n private pdfDoc: any = null;\n private loadingTask: any = null;\n private options: Required<PdfRenderOptions>;\n private readonly cache: PdfRenderCache;\n\n constructor(options: PdfRenderOptions = {}) {\n const cacheSize = Number.isFinite(options.cacheSize)\n ? Math.max(0, Math.floor(options.cacheSize as number))\n : 32;\n this.options = {\n scale: options.scale || 1.5,\n quality: options.quality || 0.85,\n format: options.format || 'image/webp',\n workerSrc: options.workerSrc || '',\n concurrency: Math.max(1, Math.floor(options.concurrency || 3)),\n cacheSize\n };\n this.cache = new PdfRenderCache(this.options.cacheSize);\n if (this.options.workerSrc) {\n pdfjsLib.GlobalWorkerOptions.workerSrc = this.options.workerSrc;\n }\n }\n\n /** Loads a PDF document and cancels PDF.js loading when the signal aborts. */\n public async loadDocument(pdfUrl: string, signal?: AbortSignal): Promise<number> {\n this.throwIfAborted(signal);\n this.cache.clear();\n const loadingTask = pdfjsLib.getDocument(pdfUrl);\n this.loadingTask = loadingTask;\n const abortLoading = () => loadingTask.destroy?.();\n signal?.addEventListener('abort', abortLoading, { once: true });\n try {\n this.pdfDoc = await loadingTask.promise;\n this.throwIfAborted(signal);\n return this.pdfDoc.numPages;\n } catch (error) {\n if (signal?.aborted) throw this.createAbortError();\n throw error;\n } finally {\n signal?.removeEventListener('abort', abortLoading);\n if (this.loadingTask === loadingTask) this.loadingTask = null;\n }\n }\n\n /** Renders a specific page to a Data URL. The page index is 1-based. */\n public async renderPageToDataUrl(pageIndex: number, signal?: AbortSignal): Promise<string> {\n if (!this.pdfDoc) throw new Error('PDF document is not loaded.');\n this.throwIfAborted(signal);\n const cached = this.cache.get(pageIndex);\n if (cached !== undefined) return cached;\n\n try {\n const page = await this.pdfDoc.getPage(pageIndex);\n this.throwIfAborted(signal);\n const vp = page.getViewport({ scale: this.options.scale });\n const canvas = document.createElement('canvas');\n canvas.width = vp.width;\n canvas.height = vp.height;\n const ctx = canvas.getContext('2d');\n\n if (ctx) {\n const renderTask = page.render({ canvasContext: ctx, viewport: vp });\n const cancelRender = () => renderTask.cancel?.();\n signal?.addEventListener('abort', cancelRender, { once: true });\n try {\n await renderTask.promise;\n this.throwIfAborted(signal);\n } finally {\n signal?.removeEventListener('abort', cancelRender);\n }\n const dataUrl = canvas.toDataURL(this.options.format, this.options.quality);\n this.cache.set(pageIndex, dataUrl);\n return dataUrl;\n }\n } catch (error) {\n if (signal?.aborted) throw this.createAbortError();\n console.error(`PDF page ${pageIndex} render error:`, error);\n }\n\n return '';\n }\n\n /** Calculates the best viewport dimensions based on the first page. */\n public async calculateViewportDimensions(baseShortSide: number = 420): Promise<{ width: number, height: number }> {\n if (!this.pdfDoc) throw new Error('PDF document is not loaded.');\n\n const firstPage = await this.pdfDoc.getPage(1);\n const vp = firstPage.getViewport({ scale: 1.0 });\n const aspectRatio = vp.width / vp.height;\n\n return aspectRatio >= 1\n ? { width: Math.round(baseShortSide * aspectRatio), height: baseShortSide }\n : { width: baseShortSide, height: Math.round(baseShortSide / aspectRatio) };\n }\n\n /** Renders pages concurrently with a bounded worker pool and preserves page order. */\n public async renderAllPages(signal?: AbortSignal, onProgress?: (progress: PdfRenderProgress) => void): Promise<NormalizedFlipbookPage[]> {\n if (!this.pdfDoc) return [];\n this.throwIfAborted(signal);\n\n const pageCount = this.pdfDoc.numPages;\n const resolvedPages = new Array<NormalizedFlipbookPage>(pageCount);\n let nextPage = 1;\n let completed = 0;\n const renderWorker = async () => {\n while (true) {\n this.throwIfAborted(signal);\n const pageIndex = nextPage++;\n if (pageIndex > pageCount) return;\n const normalSrc = await this.renderPageToDataUrl(pageIndex, signal);\n resolvedPages[pageIndex - 1] = {\n index: pageIndex - 1,\n assetId: `pdf-page-${pageIndex}`,\n pageNumber: pageIndex,\n cropMode: 'full',\n normal: normalSrc,\n low: normalSrc,\n thumb: normalSrc\n };\n completed++;\n onProgress?.({ completed, total: pageCount });\n }\n };\n\n const workerCount = Math.min(this.options.concurrency, pageCount);\n await Promise.all(Array.from({ length: workerCount }, () => renderWorker()));\n this.throwIfAborted(signal);\n return resolvedPages;\n }\n\n public getCacheStats() {\n return this.cache.getStats();\n }\n\n private throwIfAborted(signal?: AbortSignal) {\n if (signal?.aborted) throw this.createAbortError();\n }\n\n private createAbortError() {\n const error = new Error('PDF rendering was aborted.');\n error.name = 'AbortError';\n return error;\n }\n\n public destroy() {\n this.loadingTask?.destroy?.();\n this.loadingTask = null;\n if (this.pdfDoc) {\n this.pdfDoc.destroy?.();\n this.pdfDoc = null;\n }\n this.cache.clear();\n }\n}\r\n","/**\n * @license FlipbookEngine v0.2.4\n * Copyright (c) 2026 Murat Dogan\n *\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n *\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n *\n * 2. Commercial License: If you wish to use this software in commercial,\n * closed-source, or SaaS products without the AGPLv3 obligations,\n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\nimport * as pdfjsLib from 'pdfjs-dist';\r\nimport { effect } from '@preact/signals-core';\r\nimport { App } from './components/App';\r\nimport { PageFlipAdapter } from './adapters/PageFlipAdapter';\r\nimport { LayoutManager } from './core/LayoutManager';\r\nimport { InteractionManager } from './core/InteractionManager';\nimport { createFlipbookStore, type FlipbookStore } from './state/store';\nimport { isFlipbookPageAsset, normalizeFlipbookPages, type FlipbookPageAsset, type NormalizedFlipbookPage } from './model/pages';\nimport { applyThemeConfiguration, type FlipbookThemeMode } from './theme/theme';\nimport { resolveMessages, type FlipbookLocale, type PartialFlipbookMessages } from './i18n/service';\nimport { PdfRenderer } from './core/PdfRenderer';\nimport './styles/flipbook-engine.css';\n\nexport interface FlipbookEngineOptions {\n allowDownload?: boolean;\n showThumbs?: boolean;\n showArrows?: boolean;\n primaryColor?: string;\n soundEnabled?: boolean;\n soundUrl?: string;\n flippingTime?: number;\n maxShadowOpacity?: number;\n backgroundColor?: string;\n backgroundImage?: string;\n whiteLabel?: boolean;\n watermarkUrl?: string;\n theme?: FlipbookThemeMode;\n locale?: FlipbookLocale | string;\n messages?: Partial<Record<string, PartialFlipbookMessages>>;\n className?: string;\n cssVariables?: Record<string, string>;\n onDownload?: (url: string) => void;\n singleMode?: boolean;\n isSingleMode?: boolean;\n autoPlay?: boolean;\n autoPlayInterval?: number;\n pdfRenderScale?: number;\n pdfRenderQuality?: number;\n pdfRenderFormat?: string;\r\n pdfRenderConcurrency?: number;\r\n pdfRenderCacheSize?: number;\r\n pdfWorkerSrc?: string;\r\n}\n\nexport interface PageImages extends FlipbookPageAsset {\n pageNumber: number;\n normal: string;\n low: string;\n thumb: string;\n}\n\nexport interface FlipbookEngineEventMap {\n init: { totalPages: number };\n destroy: undefined;\n pageChange: { currentPage: number; pageNumber: number; totalPages: number; isSingle: boolean };\n zoomChange: { zoom: number; isActive: boolean };\n thumbsToggle: { showThumbs: boolean };\n singlePageModeChange: { isSingle: boolean };\n orientationChange: { orientation: 'landscape' | 'portrait' };\r\n progress: { phase: 'loading' | 'rendering'; completed: number; total: number };\r\n error: { code: 'PDF_LOAD_FAILED' | 'PDF_RENDER_FAILED'; message: string; cause?: unknown };\n}\n\nexport type FlipbookEngineEventName = keyof FlipbookEngineEventMap;\ntype FlipbookEventHandler<T extends FlipbookEngineEventName> = (payload: FlipbookEngineEventMap[T]) => void;\ntype AnyFlipbookEventHandler = (payload: FlipbookEngineEventMap[FlipbookEngineEventName]) => void;\n\nexport class FlipbookEngine {\n private static readonly DEFAULT_PAGE_VIEWPORT = { width: 420, height: 594 };\n private container: HTMLElement | null = null;\n private options: FlipbookEngineOptions;\r\n private store: FlipbookStore = createFlipbookStore();\n\n // Core Managers\n private pageFlipAdapter: PageFlipAdapter | null = null;\n private layoutManager: LayoutManager | null = null;\n private interactionManager: InteractionManager | null = null;\n\n private pdfRenderer: PdfRenderer | null = null;\n private listeners: Partial<Record<FlipbookEngineEventName, Set<AnyFlipbookEventHandler>>> = {};\n private initializationTimer: ReturnType<typeof setTimeout> | null = null;\r\n private initGeneration = 0;\r\n private initAbortController: AbortController | null = null;\r\n private eventsReady = false;\r\n private lastEventState = { currentPage: 0, zoom: 1, zoomActive: false, showThumbs: true, isSingle: false, orientation: '' as '' | 'landscape' | 'portrait' };\r\n private eventSyncStop: (() => void) | null = null;\r\n private qualityObserver: IntersectionObserver | null = null;\r\n private pdfLazyStop: (() => void) | null = null;\r\n private readonly pdfPageRequests = new Map<number, Promise<string>>();\r\n private readonly pdfRenderedPages = new Set<number>();\n\n constructor(private selector: string | HTMLElement, options: FlipbookEngineOptions = {}) {\n this.options = {\n allowDownload: true,\n showThumbs: true,\n primaryColor: '#7367f0',\n theme: 'auto',\n soundUrl: 'https://flipbookengine.com/Content/page-flip.mp3',\n autoPlayInterval: 3000,\n pdfRenderScale: 1.5,\n pdfRenderQuality: 0.85,\n pdfRenderFormat: 'image/webp',\r\n pdfRenderConcurrency: 3,\r\n pdfRenderCacheSize: 32,\r\n ...options\r\n };\r\n this.setupEventSync();\r\n }\r\n\r\n public async init(pdfUrl: string, imageList?: Array<PageImages | FlipbookPageAsset>) {\n if (typeof this.selector === 'string') {\n this.container = document.querySelector(this.selector) as HTMLElement;\n } else {\n this.container = this.selector;\n }\n\n if (!this.container) return;\n\n this.destroy(true);\r\n this.eventsReady = false;\r\n const generation = this.initGeneration;\r\n const abortController = new AbortController();\r\n this.initAbortController = abortController;\r\n\r\n let resolvedPages: NormalizedFlipbookPage[] = [];\n let viewport = { ...FlipbookEngine.DEFAULT_PAGE_VIEWPORT };\n\n if (imageList && imageList.length > 0) {\r\n if (abortController.signal.aborted) return;\n const sourceAssets = imageList.filter(isFlipbookPageAsset);\n resolvedPages = normalizeFlipbookPages(sourceAssets);\n\n // Resolve aspect ratio from first page\n const referencePage = resolvedPages[0];\n if (referencePage) {\n const size = await this.loadImageSize(referencePage.low || referencePage.normal);\n if (size) {\n const actualWidth = referencePage.cropMode !== 'full' ? size.width / 2 : size.width;\n const aspectRatio = actualWidth / size.height;\n const baseShortSide = 420;\n viewport = aspectRatio >= 1\n ? { width: Math.round(baseShortSide * aspectRatio), height: baseShortSide }\n : { width: baseShortSide, height: Math.round(baseShortSide / aspectRatio) };\n }\n }\n } else if (pdfUrl) {\r\n if (abortController.signal.aborted) return;\n let pdfStage: 'load' | 'render' = 'load';\r\n try {\r\n this.pdfRenderer = new PdfRenderer({\n scale: this.options.pdfRenderScale,\n quality: this.options.pdfRenderQuality,\n format: this.options.pdfRenderFormat,\r\n concurrency: this.options.pdfRenderConcurrency,\r\n cacheSize: this.options.pdfRenderCacheSize,\r\n workerSrc: this.options.pdfWorkerSrc\n });\n\n this.emit('progress', { phase: 'loading', completed: 0, total: 0 });\r\n const totalPages = await this.pdfRenderer.loadDocument(pdfUrl, abortController.signal);\r\n pdfStage = 'render';\r\n this.emit('progress', { phase: 'loading', completed: 1, total: totalPages });\r\n viewport = await this.pdfRenderer.calculateViewportDimensions();\r\n resolvedPages = Array.from({ length: totalPages }, (_, index) => this.createPdfPlaceholder(index + 1));\r\n } catch (e: any) {\n if (!abortController.signal.aborted) {\n console.error(\"PDF load failed:\", e);\n this.emit('error', {\n code: pdfStage === 'load' ? 'PDF_LOAD_FAILED' : 'PDF_RENDER_FAILED',\n message: e instanceof Error ? e.message : 'Unable to load PDF.',\n cause: e\n });\n }\n return;\n }\n }\n\n if (abortController.signal.aborted || generation !== this.initGeneration) return;\r\n if (!resolvedPages.length) return;\n\n // 1. Initialize State\n this.store.init(this.options, resolvedPages.length, resolvedPages, !!pdfUrl);\n\n // 2. Setup DOM container\n applyThemeConfiguration(this.container, this.options);\n this.container.innerHTML = '';\n\n // 3. Mount App Component\n // In DOMWise, TSX returns actual DOM nodes\n let bookWrapperEl: HTMLElement;\n let bookSizerEl: HTMLElement;\n let bookContainerEl: HTMLElement;\n\n const pageFlipAdapterRef = { current: null as any };\n const interactionManagerRef = { current: null as any };\n\n // Pass refs to capture DOM elements created by DOMWise\n const appNode = App({\n pageFlipAdapterRef,\n interactionManagerRef,\n bookWrapperRef: (el) => bookWrapperEl = el,\n bookSizerRef: (el) => bookSizerEl = el,\n bookContainerRef: (el) => bookContainerEl = el,\n className: this.options.className,\r\n store: this.store,\r\n onToggleFullscreen: () => this.toggleFullscreen(),\n onDownload: () => {\n if (!pdfUrl) return;\n if (this.options.onDownload) this.options.onDownload(pdfUrl);\n else window.open(pdfUrl, '_blank');\n }\n });\n\n this.container.appendChild(appNode as unknown as Node);\r\n this.setupQualityLoading();\n\n // 4. Initialize Core Managers\n this.layoutManager = new LayoutManager(viewport, this.store);\n this.layoutManager.onResizeCallback = () => {\n if (this.pageFlipAdapter) {\n this.pageFlipAdapter.update();\n }\n };\n this.layoutManager.init(bookWrapperEl!, bookSizerEl!);\n\n this.pageFlipAdapter = new PageFlipAdapter(bookContainerEl!, this.options, this.store);\n pageFlipAdapterRef.current = this.pageFlipAdapter;\n\n // Wait a tick for styles to apply before initializing PageFlip.\n // The init promise resolves only after this setup is complete.\n await new Promise<void>((resolve) => {\n const finish = () => {\n abortController.signal.removeEventListener('abort', finish);\n resolve();\n };\n abortController.signal.addEventListener('abort', finish, { once: true });\n this.initializationTimer = setTimeout(async () => {\n this.initializationTimer = null;\n abortController.signal.removeEventListener('abort', finish);\n if (abortController.signal.aborted || generation !== this.initGeneration || !this.pageFlipAdapter) {\n resolve();\n return;\n }\n\n this.pageFlipAdapter.init(viewport.width, viewport.height);\n this.interactionManager = new InteractionManager(bookWrapperEl!, this.pageFlipAdapter, this.store);\n this.interactionManager.init();\n interactionManagerRef.current = this.interactionManager;\r\n this.setupPdfLazyLoading();\r\n if (this.pdfRenderer && pdfUrl) {\r\n try {\r\n await this.renderPdfPage(1, abortController.signal);\r\n } catch {\r\n resolve();\r\n return;\r\n }\r\n }\r\n if (abortController.signal.aborted || generation !== this.initGeneration) {\r\n resolve();\r\n return;\r\n }\r\n\r\n this.eventsReady = true;\r\n this.captureEventState();\r\n this.emit('init', { totalPages: resolvedPages.length });\n resolve();\n }, 10);\n });\n if (this.initAbortController === abortController) {\n this.initAbortController = null;\n }\n }\n\n private createPdfPlaceholder(pageNumber: number): NormalizedFlipbookPage {\r\n const placeholder = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\r\n return {\r\n index: pageNumber - 1,\r\n assetId: 'pdf-page-' + pageNumber,\r\n pageNumber,\r\n cropMode: 'full',\r\n normal: placeholder,\r\n low: placeholder,\r\n thumb: placeholder\r\n };\r\n }\r\n\r\n private renderPdfPage(pageNumber: number, signal?: AbortSignal): Promise<string> {\r\n const renderer = this.pdfRenderer;\r\n if (!renderer) return Promise.resolve('');\r\n const existing = this.pdfPageRequests.get(pageNumber);\r\n if (existing) return existing;\r\n if (this.pdfRenderedPages.has(pageNumber)) return Promise.resolve('');\r\n\r\n const request = renderer.renderPageToDataUrl(pageNumber, signal).then((dataUrl) => {\r\n if (!dataUrl) throw new Error('PDF page ' + pageNumber + ' produced no image.');\r\n this.pdfRenderedPages.add(pageNumber);\r\n this.container?.querySelectorAll<HTMLImageElement>('img[data-pdf-page=\"' + pageNumber + '\"]').forEach((image) => {\r\n image.src = dataUrl;\r\n delete image.dataset.pdfPage;\r\n });\r\n this.emit('progress', {\r\n phase: 'rendering',\r\n completed: this.pdfRenderedPages.size,\r\n total: this.store.totalPages.value\r\n });\r\n return dataUrl;\r\n }).catch((error) => {\r\n if (error?.name === 'AbortError') throw error;\r\n this.emit('error', {\r\n code: 'PDF_RENDER_FAILED',\r\n message: error instanceof Error ? error.message : 'Unable to render PDF page.',\r\n cause: error\r\n });\r\n throw error;\r\n }).finally(() => {\r\n if (this.pdfPageRequests.get(pageNumber) === request) this.pdfPageRequests.delete(pageNumber);\r\n });\r\n this.pdfPageRequests.set(pageNumber, request);\r\n return request;\r\n }\r\n\r\n private setupPdfLazyLoading() {\r\n this.pdfLazyStop?.();\r\n this.pdfLazyStop = null;\r\n if (!this.pdfRenderer) return;\r\n this.pdfLazyStop = effect(() => {\r\n const currentPage = this.store.currentPage.value + 1;\r\n const totalPages = this.store.totalPages.value;\r\n [currentPage, currentPage + 1].filter((page) => page <= totalPages).forEach((page) => {\r\n void this.renderPdfPage(page).catch(() => {});\r\n });\r\n });\r\n }\r\n private loadImageSize(src: string): Promise<{ width: number; height: number } | null> {\n return new Promise(resolve => {\n const image = new Image();\n image.onload = () => resolve({ width: image.naturalWidth || image.width, height: image.naturalHeight || image.height });\n image.onerror = () => resolve(null);\n image.src = src;\n });\n }\n\n public goToPage(targetIdx: number) {\r\n const maxIndex = Math.max(0, this.store.totalPages.value - 1);\r\n this.store.currentPage.value = Math.max(0, Math.min(maxIndex, Math.trunc(targetIdx)));\r\n }\n\n public getTotalPages(): number {\n return this.store.totalPages.value;\n }\n\n public getCurrentPage(): number {\n return this.store.currentPage.value;\n }\n\n public getZoom(): number {\n return this.store.zoomState.value.scale;\n }\n\n public setZoom(zoomLevel: number) {\n const requestedZoom = Number.isFinite(zoomLevel) ? zoomLevel : 1;\r\n const scale = Math.max(0.5, Math.min(5, requestedZoom));\n this.store.zoomState.value = {\n ...this.store.zoomState.value,\n scale,\n isActive: scale > 1,\n ...(scale <= 1 ? { translateX: 0, translateY: 0 } : {})\n };\n this.store.isZoomed.value = scale > 1;\n }\n\n public nextPage() {\n if (this.pageFlipAdapter) this.pageFlipAdapter.turnToNextPage();\n }\n\n public toggleFullscreen() {\n const target = this.container;\n if (!target) return;\n if (!document.fullscreenElement) {\n target.requestFullscreen?.().catch((error) => console.warn('Fullscreen err:', error));\n } else {\n document.exitFullscreen?.().catch((error) => console.warn('Exit fullscreen err:', error));\n }\n }\n\n public setLocale(locale: FlipbookLocale | string, messages?: Partial<Record<string, PartialFlipbookMessages>>) {\n const mergedMessages = messages\n ? { ...this.options.messages, [locale]: messages[locale] ?? messages }\n : this.options.messages;\n this.options = { ...this.options, locale, messages: mergedMessages };\n this.store.locale.value = locale;\n if (mergedMessages) this.store.messages.value = mergedMessages;\n }\n public prevPage() {\n if (this.pageFlipAdapter) this.pageFlipAdapter.turnToPrevPage();\n }\n\n public setSingleMode(isSingle: boolean) {\n this.store.isSingleMode.value = isSingle;\n }\n\n public updateOptions(options: Partial<FlipbookEngineOptions>) {\n this.options = { ...this.options, ...options };\n if (options.theme !== undefined) this.store.themeMode.value = options.theme;\n if (options.primaryColor !== undefined) this.store.primaryColor.value = options.primaryColor;\n if (options.showThumbs !== undefined) this.store.showThumbs.value = options.showThumbs;\r\n if (options.showArrows !== undefined) this.store.showArrows.value = options.showArrows;\n if (options.allowDownload !== undefined) this.store.allowDownload.value = options.allowDownload;\n if (options.whiteLabel !== undefined) this.store.whiteLabel.value = options.whiteLabel;\n if (options.soundEnabled !== undefined) this.store.soundEnabled.value = options.soundEnabled;\r\n if (options.locale !== undefined) this.store.locale.value = options.locale;\r\n if (options.messages !== undefined) this.store.messages.value = options.messages;\n if (options.singleMode !== undefined) this.store.isSingleMode.value = options.singleMode;\r\n if (options.isSingleMode !== undefined) this.store.isSingleMode.value = options.isSingleMode;\n if (options.autoPlay !== undefined) this.store.isAutoPlaying.value = options.autoPlay;\n if (options.autoPlayInterval !== undefined) this.store.autoPlayInterval.value = options.autoPlayInterval;\n\n if (this.container) {\n applyThemeConfiguration(this.container, this.options);\n }\n }\n\n public async setPages(imageList?: Array<PageImages | FlipbookPageAsset>, pdfUrl?: string) {\n // Framework wrappers call this after their initial render. When no image\n // pages are supplied, the current PDF-backed viewer must stay mounted;\n // reinitializing with an empty source clears an otherwise valid PDF view.\n if (!imageList?.length) {\n if (pdfUrl) {\n await this.init(pdfUrl);\n }\n return;\n }\n\n await this.init(pdfUrl || '', imageList);\n }\n\n private setupQualityLoading() {\r\n this.teardownQualityLoading();\r\n if (!this.container) return;\r\n\r\n const images = Array.from(this.container.querySelectorAll<HTMLImageElement>('img[data-src], img[data-pdf-page]'));\r\n const upgrade = (image: HTMLImageElement) => {\r\n const pdfPage = Number(image.dataset.pdfPage);\r\n if (Number.isInteger(pdfPage) && pdfPage > 0) {\r\n void this.renderPdfPage(pdfPage).catch(() => {});\r\n return;\r\n }\r\n const highQualitySrc = image.dataset.src;\r\n if (!highQualitySrc) return;\r\n image.src = highQualitySrc;\r\n delete image.dataset.src;\r\n };\r\n\r\n const Observer = this.container.ownerDocument.defaultView?.IntersectionObserver;\r\n if (!Observer) {\r\n const pdfPages = new Set<number>();\r\n images.forEach((image) => {\r\n const pdfPage = Number(image.dataset.pdfPage);\r\n if (Number.isInteger(pdfPage) && pdfPage > 0) {\r\n if (pdfPages.size < 2) {\r\n pdfPages.add(pdfPage);\r\n upgrade(image);\r\n }\r\n } else {\r\n upgrade(image);\r\n }\r\n });\r\n return;\r\n }\r\n\r\n this.qualityObserver = new Observer((entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting) {\r\n upgrade(entry.target as HTMLImageElement);\r\n this.qualityObserver?.unobserve(entry.target);\r\n }\r\n });\r\n }, { root: this.container, rootMargin: '240px' });\r\n images.forEach((image) => this.qualityObserver?.observe(image));\r\n }\r\n\r\n private teardownQualityLoading() {\n this.qualityObserver?.disconnect();\n this.qualityObserver = null;\n }\n private setupEventSync() {\n this.eventSyncStop = effect(() => {\n const state = {\n currentPage: this.store.currentPage.value,\n zoom: this.store.zoomState.value.scale,\n zoomActive: this.store.zoomState.value.isActive,\n showThumbs: this.store.showThumbs.value,\n isSingle: this.store.isSingleMode.value,\n orientation: this.store.orientation.value\n };\n if (!this.eventsReady) {\n this.lastEventState = state;\n return;\n }\n if (state.currentPage !== this.lastEventState.currentPage) {\n this.emit('pageChange', {\n currentPage: state.currentPage,\n pageNumber: state.currentPage + 1,\n totalPages: this.store.totalPages.value,\n isSingle: state.isSingle\n });\n }\n if (state.zoom !== this.lastEventState.zoom || state.zoomActive !== this.lastEventState.zoomActive) {\n this.emit('zoomChange', { zoom: state.zoom, isActive: state.zoomActive });\n }\n if (state.showThumbs !== this.lastEventState.showThumbs) {\n this.emit('thumbsToggle', { showThumbs: state.showThumbs });\n }\n if (state.isSingle !== this.lastEventState.isSingle) {\n this.emit('singlePageModeChange', { isSingle: state.isSingle });\n }\n if (state.orientation !== this.lastEventState.orientation) {\n this.emit('orientationChange', { orientation: state.orientation });\n }\n this.lastEventState = state;\n });\n }\n\n private captureEventState() {\n this.lastEventState = {\n currentPage: this.store.currentPage.value,\n zoom: this.store.zoomState.value.scale,\n zoomActive: this.store.zoomState.value.isActive,\n showThumbs: this.store.showThumbs.value,\n isSingle: this.store.isSingleMode.value,\n orientation: this.store.orientation.value\n };\n }\n public destroy(keepContainer = false) {\r\n this.initGeneration++;\r\n this.initAbortController?.abort();\r\n this.initAbortController = null;\n if (this.initializationTimer) {\n clearTimeout(this.initializationTimer);\n this.initializationTimer = null;\n }\n\n if (this.pageFlipAdapter) {\n this.pageFlipAdapter.destroy();\n }\n if (this.layoutManager) {\n this.layoutManager.destroy();\n }\n if (this.interactionManager) {\n this.interactionManager.destroy();\n }\n this.teardownQualityLoading();\r\n this.pdfLazyStop?.();\r\n this.pdfLazyStop = null;\r\n this.pdfPageRequests.clear();\r\n this.pdfRenderedPages.clear();\r\n if (this.pdfRenderer) {\n this.pdfRenderer.destroy();\n }\n\n this.pageFlipAdapter = null;\n this.layoutManager = null;\n this.interactionManager = null;\n this.pdfRenderer = null;\n\n if (!keepContainer && this.container) {\n this.container.innerHTML = '';\n }\n\n this.emit('destroy', undefined);\n }\n\n public on<T extends FlipbookEngineEventName>(eventName: T, handler: FlipbookEventHandler<T>) {\n const listeners = this.listeners[eventName] ?? new Set<AnyFlipbookEventHandler>();\n listeners.add(handler as AnyFlipbookEventHandler);\n this.listeners[eventName] = listeners;\n return () => this.off(eventName, handler);\n }\n\n public off<T extends FlipbookEngineEventName>(eventName: T, handler: FlipbookEventHandler<T>) {\n this.listeners[eventName]?.delete(handler as AnyFlipbookEventHandler);\n }\n\n private emit<T extends FlipbookEngineEventName>(eventName: T, payload: FlipbookEngineEventMap[T]) {\n this.listeners[eventName]?.forEach((listener) => {\n (listener as FlipbookEventHandler<T>)(payload);\n });\n }\n}\n\nconst globalScope = globalThis as any;\nconst flipbookNamespace = globalScope.FlipbookEngine || {};\nflipbookNamespace.FlipbookEngine = FlipbookEngine;\nglobalScope.FlipbookEngine = flipbookNamespace;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"],"names":["i","t","s","c","h","n","v","r","w","o","e","d","a","l","j","y","_","b","p","g","S","m","x","E","initPropHookSymbol","isElement","val","isString","isNumber","isObject","isComponentClass","isArrayLike","isPropHook","value","isVisibleChild","className","k","isRefObject","maybeRef","setRef","ref","current","initComponentClass","Class","attr","children","instance","node","MathMLNamespace","mathMLOnlyTags","svgOnlyTags","nonPresentationSVGAttributes","SVGNamespace","jsxNamespaceURISymbol","currentNamespaceURI","jsxTypeKeySymbol","shadowRootKey","isShadowRoot","el","disposingListenersSymbol","lifecycleRootSymbol","getDisposingListeners","disposingEventListener","ev","invokeDisposingListeners","opt","disposingListeners","invokeFor","listeners","disposer","addDisposingListener","target","handler","regKey","existing","x2","removeDisposingListener","index","listener","currentLifecycleRoot","args","prev","isSignalLike","obj","SignalObserveArgsImpl","_a","signal2","lifecycleRoot","lifecycleNode","__privateAdd","_SignalObserveArgsImpl_instances","_dispose","_node","__privateSet","__privateGet","__privateMethod","delDispose_fn","addDispose_fn","observeSignal","callback","appendChild","parent","child","fragmentPlaceholderIdx","placeholderPrefix","isPlaceholder","isFragmentWithPlaceholder","replaceNode","oldNode","newNode","wrapAsNode","appendChildrenWithSignal","prevNode","prevNodeNew2","appendChildren","n2","prevNodeNew","shadowRoot","unsignalizePrevClass","item","key","clearPrevClass","prevClassNames","cls","assignClass","applyClassName","newList","prevList","prefixKey","prefix","isUnitlessNumber","rec","prefixes","prop","setStylePropValue","clearPrevStyle","assignStyle","XLinkNamespace","XMLNamespace","normalizeAttribute","s2","separator","match","mappedKeys","assignProp","v2","dataKey","dataValue","useCapture","eventName","eventHandler","attribute","nodeEventPropDisposer","assignProps","props","jsx","tag","ns","values","option","i2","t2","i3","r2","n3","o2","builtInMessages","resolveMessages","config","locale","builtIn","custom","Toolbar","messages","computed","jsxs","total","left","Thumbnails","page","isActive","event","Viewer","classes","isHard","NavigationArrows","isLeftVisible","isRightVisible","App","handleToggleThumbs","handleToggleSingleMode","handleToggleAutoPlay","handleZoomIn","handleZoomOut","handleToggleFullscreen","handleThumbClick","handleNextPage","handlePrevPage","exports","this","u","prefersReducedMotion","resolveFlippingTime","flippingTime","reducedMotion","PageFlipAdapter","bookContainer","options","store","__publicField","unlock","playback","viewportWidth","viewportHeight","PageFlip","pageElements","effect","targetPage","state","libCurrentPage","getSpreadIndex","targetSpread","currentSpread","playing","interval","maxIndex","nextIdx","prevIdx","err","unsub","LayoutManager","pageViewport","wrapperElement","sizerElement","handleOrientationChange","availWidth","availHeight","width","height","targetRatio","bookWidth","bookHeight","finalWidth","InteractionManager","container","pageFlipAdapter","AbortControllerCtor","isDragging","startX","startY","initialTx","initialTy","dx","dy","startTx","startTy","touchStartY","diffX","newScale","initialZoomState","createFlipbookStore","currentPage","signal","totalPages","isSingleMode","showThumbs","showArrows","orientation","flipState","themeMode","allowDownload","hasDownloadUrl","primaryColor","whiteLabel","isZoomed","isAutoPlaying","autoPlayInterval","soundEnabled","zoomState","pages","isDoublePageLayout","isFrontCover","isBackCover","mappedPages","hasPdfUrl","legacyStore","isFlipbookPageAsset","candidate","getAssetPageNumbers","asset","getSpreadCropModes","splitDirection","normalizeFlipbookPages","assets","normalized","fallbackPageNumber","assetIndex","kind","assetId","pageNumbers","spreadNumbers","cropModes","pageNumber","spreadIndex","applyThemeConfiguration","userVariables","name","variableName","PdfRenderCache","maxEntries","dataUrl","oldest","PdfRenderer","cacheSize","pdfjsLib","pdfUrl","loadingTask","abortLoading","error","pageIndex","cached","vp","canvas","ctx","renderTask","cancelRender","baseShortSide","aspectRatio","onProgress","pageCount","resolvedPages","nextPage","completed","renderWorker","normalSrc","workerCount","_b","_d","_c","_FlipbookEngine","selector","imageList","generation","abortController","viewport","sourceAssets","referencePage","size","pdfStage","bookWrapperEl","bookSizerEl","bookContainerEl","pageFlipAdapterRef","interactionManagerRef","appNode","resolve","finish","placeholder","renderer","request","image","src","targetIdx","zoomLevel","requestedZoom","scale","mergedMessages","isSingle","images","upgrade","pdfPage","highQualitySrc","Observer","pdfPages","entries","entry","keepContainer","payload","FlipbookEngine","globalScope","flipbookNamespace"],"mappings":"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","x_google_ignoreList":[0,1,10]}
|
|
1
|
+
{"version":3,"file":"flipbook-engine.iife.js","sources":["../node_modules/@preact/signals-core/dist/signals-core.module.js","../node_modules/@serenity-is/domwise/dist/index.js","../src/i18n/service.ts","../src/i18n/locales/en.ts","../src/i18n/locales/tr.ts","../src/components/Toolbar.tsx","../src/components/Thumbnails.tsx","../src/components/TableOfContents.tsx","../src/components/Viewer.tsx","../src/components/NavigationArrows.tsx","../src/components/App.tsx","../node_modules/page-flip/dist/js/page-flip.browser.js","../src/adapters/PageFlipAdapter.ts","../src/core/LayoutManager.ts","../src/core/InteractionManager.ts","../src/model/toc.ts","../src/state/store.ts","../src/model/pages.ts","../src/theme/theme.ts","../src/core/PdfRenderCache.ts","../src/core/PdfRenderer.ts","../src/engine.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","// src/bind-this.ts\nvar hasOwnProperty = Object.hasOwnProperty;\nvar bindThisHandler = {\n get: (target, property) => {\n if (hasOwnProperty.call(target, property)) {\n return target[property];\n }\n const m2 = target[property];\n if (typeof m2 === \"function\") {\n return target[property] = m2.bind(target);\n }\n return m2;\n }\n};\nvar bindThisProxyMap = /* @__PURE__ */ new WeakMap();\nfunction bindThis(obj) {\n let proxy = bindThisProxyMap.get(obj);\n if (!proxy) {\n proxy = new Proxy(obj, bindThisHandler);\n bindThisProxyMap.set(obj, proxy);\n }\n return proxy;\n}\n\n// src/prop-hook.ts\nvar initPropHookSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.initPropHook\");\n\n// src/util.ts\nfunction isElement(val) {\n return !!(val && typeof val.nodeType === \"number\");\n}\nfunction isString(val) {\n return typeof val === \"string\";\n}\nfunction isNumber(val) {\n return typeof val === \"number\";\n}\nfunction isObject(val) {\n return typeof val === \"object\" && val !== null;\n}\nfunction isComponentClass(val) {\n return !!(val && val.isComponent);\n}\nfunction isArrayLike(val) {\n return isObject(val) && typeof val.length === \"number\" && typeof val.nodeType !== \"number\";\n}\nfunction isPropHook(value) {\n return typeof value === \"function\" && typeof value[initPropHookSymbol] === \"function\";\n}\nfunction isVisibleChild(val) {\n return val != null && typeof val !== \"boolean\";\n}\n\n// src/class-name.ts\nfunction className(value) {\n if (Array.isArray(value)) {\n return value.map(className).filter(Boolean).join(\" \");\n } else if (isObject(value)) {\n if (Symbol.iterator in value) {\n return className(Array.from(value));\n }\n return Object.keys(value).filter((k) => value[k]).join(\" \");\n } else if (isVisibleChild(value)) {\n return \"\" + value;\n } else {\n return \"\";\n }\n}\n\n// src/ref.ts\nfunction createRef() {\n return Object.seal({ current: null });\n}\nfunction isRefObject(maybeRef) {\n return maybeRef != null && typeof maybeRef === \"object\" && \"current\" in maybeRef;\n}\nfunction setRef(ref, current) {\n if (isRefObject(ref)) {\n ref.current = current;\n } else if (typeof ref === \"function\") {\n ref(current);\n }\n}\n\n// src/component.ts\nvar Component = class {\n static {\n this.isComponent = true;\n }\n constructor(props) {\n this.props = props;\n }\n render() {\n return null;\n }\n};\nfunction initComponentClass(Class, attr, children) {\n attr = { ...attr, children };\n const instance = new Class(attr);\n const node = instance.render();\n if (\"ref\" in attr) {\n setRef(attr.ref, instance);\n }\n return node;\n}\n\n// src/mathml-consts.ts\nvar MathMLNamespace = \"http://www.w3.org/1998/Math/MathML\";\nvar mathMLOnlyTags = /* @__PURE__ */ new Set([\"math\", \"annotation\", \"annotation-xml\", \"maction\", \"merror\", \"mfrac\", \"mi\", \"mmultiscripts\", \"mn\", \"mo\", \"mover\", \"mpadded\", \"mphantom\", \"mprescripts\", \"mroot\", \"mrow\", \"ms\", \"mspace\", \"msqrt\", \"mstyle\", \"msub\", \"msubsup\", \"msup\", \"mtable\", \"mtd\", \"mtext\", \"mtr\", \"munder\", \"munderover\", \"semantics\", \"menclose\", \"mfenced\"]);\n\n// src/svg-consts.ts\nvar svgOnlyTags = /* @__PURE__ */ new Set([\n // \"a\",\n \"animate\",\n \"animateMotion\",\n \"animateTransform\",\n \"circle\",\n \"clipPath\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"filter\",\n \"foreignObject\",\n \"g\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"mpath\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n // \"script\",\n \"set\",\n \"stop\",\n // \"style\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"textPath\",\n // \"title\",\n \"tref\",\n \"tspan\",\n \"use\",\n \"view\"\n]);\nvar nonPresentationSVGAttributes = /^(a(ll|t|u)|base[FP]|c(al|lipPathU|on)|di|ed|ex|filter[RU]|g(lyphR|r)|ke|l(en|im)|ma(rker[HUW]|s)|n|pat|pr|point[^e]|re[^n]|s[puy]|st[^or]|ta|textL|vi|xC|y|z)/;\nvar SVGNamespace = \"http://www.w3.org/2000/svg\";\n\n// src/in-namespace-uri.ts\nvar jsxNamespaceURISymbol = /* @__PURE__ */ Symbol.for(\"Serenity.jsxNamespaceURI\");\nfunction currentNamespaceURI(value) {\n const current = globalThis[jsxNamespaceURISymbol];\n if (!arguments.length) {\n return current;\n }\n globalThis[jsxNamespaceURISymbol] = value;\n return current;\n}\nfunction inNamespaceURI(namespaceURI, children) {\n const prev = currentNamespaceURI(namespaceURI);\n let result;\n try {\n result = children();\n } finally {\n currentNamespaceURI(prev);\n }\n return result;\n}\nfunction inSVGNamespace(fn) {\n return inNamespaceURI(SVGNamespace, fn);\n}\nfunction inMathMLNamespace(fn) {\n return inNamespaceURI(MathMLNamespace, fn);\n}\nfunction inHTMLNamespace(fn) {\n return inNamespaceURI(null, fn);\n}\n\n// src/shadow.ts\nvar jsxTypeKeySymbol = /* @__PURE__ */ Symbol.for(\"Serenity.jsxTypeKey\");\nvar shadowRootKey = \"ShadowRoot\";\nfunction ShadowRootNode({\n children,\n ref,\n ...attr\n}) {\n return {\n [jsxTypeKeySymbol]: shadowRootKey,\n ref,\n attr,\n children\n };\n}\nfunction isShadowRoot(el) {\n return el != null && el[jsxTypeKeySymbol] === shadowRootKey;\n}\n\n// src/disposing-listener.ts\nvar disposingListenersSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.disposingListeners\");\nvar lifecycleRootSymbol = /* @__PURE__ */ Symbol.for(\"Serenity.lifecycleRoot\");\nfunction getDisposingListeners() {\n return globalThis[disposingListenersSymbol] ||= /* @__PURE__ */ new WeakMap();\n}\nfunction disposingEventListener(ev) {\n if (ev && ev.target && (!ev.currentTarget || ev.currentTarget === ev.target))\n invokeDisposingListeners(ev?.target);\n}\nfunction dispatchDisposingEvent(target, opt) {\n if (!target || typeof CustomEvent !== \"function\")\n return;\n const event = new CustomEvent(\"disposing\", {\n bubbles: opt?.bubbles ?? false,\n cancelable: opt?.cancelable ?? false\n });\n target.dispatchEvent(event);\n}\nfunction invokeDisposingListeners(node, opt) {\n if (!node)\n return;\n const disposingListeners = getDisposingListeners();\n function invokeFor(el) {\n const listeners = disposingListeners.get(el);\n if (!listeners)\n return;\n disposingListeners.delete(el);\n el.removeEventListener(\"disposing\", disposingEventListener);\n for (const disposer of listeners) {\n try {\n disposer.callback(el);\n } catch {\n }\n }\n }\n if (opt?.descendants && node instanceof Element && node.hasChildNodes()) {\n const descendants = [];\n const iterator = document.createNodeIterator(\n node,\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT\n );\n let currentNode;\n while (currentNode = iterator.nextNode()) {\n if (currentNode !== node) {\n descendants.push(currentNode);\n }\n }\n for (let i2 = 0; i2 < descendants.length; i2++) {\n invokeFor(descendants[i2]);\n }\n }\n if (!opt?.excludeSelf) {\n invokeFor(node);\n }\n}\nfunction addDisposingListener(target, handler, regKey) {\n if (!target || !handler)\n return target;\n const disposingListeners = getDisposingListeners();\n let listeners = disposingListeners.get(target);\n if (!listeners) {\n if (typeof target.addEventListener !== \"function\")\n return target;\n disposingListeners.set(target, listeners = [{\n callback: handler,\n regKey\n }]);\n target.addEventListener(\"disposing\", disposingEventListener, { once: true });\n return target;\n }\n const existing = listeners.find((x2) => x2.callback === handler);\n if (existing) {\n if (existing.regKey && regKey && existing.regKey !== regKey) {\n throw new Error(\"A disposing listener with the same callback but different regKey is already registered on the target element.\");\n }\n if (regKey && !existing.regKey) {\n existing.regKey = regKey;\n }\n return target;\n }\n listeners.push({ callback: handler, regKey });\n return target;\n}\nfunction removeDisposingListener(target, handler, regKey) {\n if (!target || !handler && !regKey)\n return target;\n const disposingListeners = getDisposingListeners();\n const listeners = disposingListeners.get(target);\n if (listeners) {\n for (let index = listeners.length - 1; index >= 0; index--) {\n const listener = listeners[index];\n if (regKey && listener.regKey === regKey || handler && handler === listener.callback) {\n listeners.splice(index, 1);\n }\n }\n if (listeners.length === 0) {\n disposingListeners.delete(target);\n if (typeof target.removeEventListener === \"function\") {\n target.removeEventListener(\"disposing\", disposingEventListener);\n }\n }\n }\n return target;\n}\nfunction currentLifecycleRoot(...args) {\n if (args.length > 0) {\n const prev = globalThis[lifecycleRootSymbol] || null;\n globalThis[lifecycleRootSymbol] = args[0] || null;\n return prev;\n }\n return globalThis[lifecycleRootSymbol] || null;\n}\n\n// src/signal-util.ts\nfunction isSignalLike(obj) {\n return obj != null && typeof obj === \"object\" && typeof obj.subscribe === \"function\" && typeof obj.peek === \"function\" && \"value\" in obj;\n}\nvar SignalObserveArgsImpl = class {\n #dispose;\n #node;\n constructor(signal2, lifecycleRoot, lifecycleNode) {\n this.signal = signal2;\n this.isInitial = true;\n this.hasChanged = false;\n this.lifecycleRoot = lifecycleRoot;\n this.#node = lifecycleNode;\n }\n get lifecycleNode() {\n return this.#node;\n }\n #delDispose() {\n removeDisposingListener(this.#node, this.effectDisposer);\n removeDisposingListener(this.#node, this.signal?.derivedDisposer);\n }\n #addDispose() {\n addDisposingListener(this.#node, this.effectDisposer);\n addDisposingListener(this.#node, this.signal?.derivedDisposer);\n }\n get effectDisposer() {\n return this.#dispose;\n }\n set effectDisposer(value) {\n this.#delDispose();\n this.#dispose = value;\n this.#addDispose();\n }\n set lifecycleNode(value) {\n if (value !== this.#node) {\n this.#delDispose();\n this.#node = value;\n this.#addDispose();\n }\n }\n};\nfunction observeSignal(signal2, callback, opt) {\n const lifecycleRoot = opt?.useLifecycleRoot ? currentLifecycleRoot() : void 0;\n const args = new SignalObserveArgsImpl(signal2, lifecycleRoot, opt?.lifecycleNode);\n const disposer = args.signal.subscribe(function(value) {\n args.newValue = value;\n if (args.isInitial && this?.dispose) {\n args.effectDisposer = this.dispose.bind(this);\n }\n args.hasChanged = !args.isInitial && args.prevValue !== args.newValue;\n try {\n callback(args);\n } finally {\n args.prevValue = args.newValue;\n args.isInitial = false;\n }\n });\n if (disposer && !args.effectDisposer) {\n args.effectDisposer = disposer;\n }\n return args.effectDisposer;\n}\nfunction derivedSignal(input, fn) {\n if (!isSignalLike(input)) {\n throw new Error(\"Input must be a SignalLike\");\n }\n const callback = () => fn(input.value);\n if (typeof input.constructor === \"function\" && input.constructor !== {}.constructor) {\n try {\n let derived = new input.constructor(callback);\n let disposer2;\n if (isSignalLike(derived)) {\n if (derived.peek() === callback) {\n disposer2 = input.subscribe(() => {\n derived.value = callback();\n });\n }\n if (disposer2) {\n derived.derivedDisposer = function() {\n disposer2();\n delete derived.derivedDisposer;\n };\n }\n return derived;\n }\n } catch (error) {\n }\n }\n let primitive;\n const disposer = input.subscribe(() => {\n if (!primitive) {\n primitive = new PrimitiveComputed(callback);\n return;\n }\n primitive.update();\n });\n if (disposer) {\n primitive.derivedDisposer = function() {\n disposer();\n delete primitive.derivedDisposer;\n };\n }\n return primitive;\n}\nvar PrimitiveComputed = class {\n #subs = /* @__PURE__ */ new Set();\n #value;\n #fn;\n constructor(fn) {\n this.#fn = fn;\n this.update(true);\n }\n update(force) {\n const newValue = this.#fn();\n if (newValue !== this.#value || force) {\n this.#value = newValue;\n this.#subs.forEach((sub) => sub(newValue));\n }\n }\n subscribe(callback) {\n callback(this.#value);\n this.#subs.add(callback);\n return () => this.#subs.delete(callback);\n }\n peek() {\n return this.#value;\n }\n get value() {\n return this.#value;\n }\n};\n\n// src/jsx-append-children.ts\nfunction appendChild(parent, child) {\n if (parent instanceof window.HTMLTemplateElement) {\n parent.content.appendChild(child);\n } else {\n parent.appendChild(child);\n }\n}\nvar fragmentPlaceholderIdx = 0;\nvar placeholderPrefix = \"__domwisefrag_\";\nfunction isPlaceholder(node) {\n return node instanceof Comment && node.data.startsWith(placeholderPrefix);\n}\nfunction isFragmentWithPlaceholder(node) {\n return node instanceof DocumentFragment && isPlaceholder(node.firstChild);\n}\nfunction replaceNode(oldNode, newNode) {\n if (typeof oldNode.replaceWith === \"function\")\n oldNode.replaceWith(newNode);\n else\n oldNode.parentNode?.replaceChild(newNode, oldNode);\n}\nfunction wrapAsNode(value) {\n if (value instanceof DocumentFragment) {\n ++fragmentPlaceholderIdx;\n value.prepend(document.createComment(placeholderPrefix + fragmentPlaceholderIdx));\n value.append(document.createComment(placeholderPrefix + fragmentPlaceholderIdx));\n return value;\n }\n if (value instanceof Node) {\n return value;\n }\n if (!isVisibleChild(value)) {\n return document.createComment(\"\");\n }\n return document.createTextNode(value);\n}\nfunction appendChildrenWithSignal(parent, signal2) {\n let prevNode;\n observeSignal(signal2, (args) => {\n if (args.isInitial) {\n prevNode = wrapAsNode(args.newValue);\n let prevNodeNew2 = isFragmentWithPlaceholder(prevNode) ? prevNode.firstChild : prevNode;\n appendChildren(parent, prevNode);\n args.lifecycleNode = (prevNode = prevNodeNew2) ?? parent;\n return;\n }\n if (!args.hasChanged) {\n return;\n }\n const newNode = wrapAsNode(args.newValue);\n if (isPlaceholder(prevNode)) {\n let n2;\n while (n2 = prevNode.nextSibling) {\n n2.parentNode?.removeChild(n2);\n if (n2 instanceof Comment && n2.data === prevNode.data) {\n break;\n }\n }\n }\n let prevNodeNew = isFragmentWithPlaceholder(newNode) ? newNode.firstChild : newNode;\n replaceNode(prevNode, newNode);\n args.lifecycleNode = (prevNode = prevNodeNew) ?? parent;\n });\n}\nfunction appendChildren(parent, children) {\n if (!isVisibleChild(children)) return;\n if (isArrayLike(children)) {\n for (const child of [...children]) {\n appendChildren(parent, child);\n }\n } else if (isString(children) || isNumber(children)) {\n appendChild(parent, document.createTextNode(children));\n } else if (isElement(children)) {\n appendChild(parent, children);\n } else if (isShadowRoot(children)) {\n const shadowRoot = parent.attachShadow(children.attr);\n appendChildren(shadowRoot, children.children);\n setRef(children.ref, shadowRoot);\n } else if (isSignalLike(children)) {\n appendChildrenWithSignal(parent, children);\n }\n}\n\n// src/jsx-assign-class.ts\nfunction unsignalizePrevClass(prev) {\n if (prev == null)\n return prev;\n if (isArrayLike(prev)) {\n prev = Array.from(prev).map((item) => {\n if (isSignalLike(item))\n return item.peek();\n return item;\n });\n } else if (isObject(prev)) {\n prev = { ...prev };\n Object.entries(prev).forEach(([key, val]) => {\n if (isSignalLike(val))\n prev[key] = val.peek();\n });\n }\n return prev;\n}\nfunction clearPrevClass(node, prev) {\n if (prev == null || prev === false || prev === true)\n return;\n prev = unsignalizePrevClass(prev);\n const prevClassNames = (className(prev) ?? \"\").split(\" \");\n for (let cls of prevClassNames) {\n if (cls) {\n node.classList.remove(cls);\n }\n }\n}\nfunction assignClass(node, value, prev) {\n if (value == null || value === false) {\n clearPrevClass(node, prev);\n return;\n }\n prev = unsignalizePrevClass(prev);\n if (isArrayLike(value)) {\n value = Array.from(value).map((x2) => {\n let val = x2;\n if (isSignalLike(x2)) {\n observeSignal(x2, (args) => {\n if (args.isInitial) {\n val = args.newValue;\n return;\n }\n applyClassName(node, args.newValue, args.prevValue);\n }, {\n lifecycleNode: node\n });\n }\n return val;\n });\n } else if (isObject(value)) {\n value = { ...value };\n Object.entries(value).forEach(([key, val]) => {\n if (isSignalLike(val)) {\n observeSignal(val, (args) => {\n if (args.isInitial) {\n value[key] = args.newValue;\n return;\n }\n applyClassName(node, Boolean(args.newValue) && key, Boolean(args.prevValue) && key);\n }, {\n lifecycleNode: node\n });\n }\n });\n }\n applyClassName(node, value, prev);\n}\nfunction applyClassName(node, value, prev) {\n const newList = (className(value) ?? \"\").split(\" \");\n if (prev) {\n const prevList = (className(prev) ?? \"\").split(\" \");\n for (let cls of prevList) {\n if (cls && !newList.includes(cls)) {\n node.classList.remove(cls);\n }\n }\n }\n for (let cls of newList) {\n cls && node.classList.add(cls);\n }\n}\n\n// src/jsx-assign-style.ts\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\nvar isUnitlessNumber = /* @__PURE__ */ (() => {\n let rec = {\n animationIterationCount: 0,\n borderImageOutset: 0,\n borderImageSlice: 0,\n borderImageWidth: 0,\n boxFlex: 0,\n boxFlexGroup: 0,\n boxOrdinalGroup: 0,\n columnCount: 0,\n columns: 0,\n flex: 0,\n flexGrow: 0,\n flexPositive: 0,\n flexShrink: 0,\n flexNegative: 0,\n flexOrder: 0,\n gridArea: 0,\n gridRow: 0,\n gridRowEnd: 0,\n gridRowSpan: 0,\n gridRowStart: 0,\n gridColumn: 0,\n gridColumnEnd: 0,\n gridColumnSpan: 0,\n gridColumnStart: 0,\n fontWeight: 0,\n lineClamp: 0,\n lineHeight: 0,\n opacity: 0,\n order: 0,\n orphans: 0,\n tabSize: 0,\n widows: 0,\n zIndex: 0,\n zoom: 0,\n // SVG-related properties\n fillOpacity: 0,\n floodOpacity: 0,\n stopOpacity: 0,\n strokeDasharray: 0,\n strokeDashoffset: 0,\n strokeMiterlimit: 0,\n strokeOpacity: 0,\n strokeWidth: 0\n };\n const prefixes = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\n Object.keys(rec).forEach((prop) => {\n prefixes.forEach((prefix) => {\n rec[prefixKey(prefix, prop)] = 0;\n });\n });\n return rec;\n})();\nfunction setStylePropValue(node, key, val) {\n if (key.indexOf(\"-\") === 0) {\n node.style.setProperty(key, val);\n } else if (isNumber(val) && isUnitlessNumber[key] !== 0) {\n node.style[key] = val + \"px\";\n } else {\n node.style[key] = val;\n }\n}\nfunction clearPrevStyle(node, prev) {\n if (prev == null || prev === false || prev === true)\n return;\n if (isString(prev)) {\n node.removeAttribute(\"style\");\n return;\n }\n if (isObject(prev)) {\n Object.keys(prev).forEach((key) => {\n setStylePropValue(node, key, \"\");\n });\n }\n}\nfunction assignStyle(node, value, prev) {\n if (value == null || value === false || value === true) {\n clearPrevStyle(node, prev);\n return;\n }\n if (isString(value)) {\n node.setAttribute(\"style\", value);\n return;\n }\n if (isObject(value)) {\n if (isObject(prev)) {\n value = { ...value };\n Object.keys(prev).forEach((key) => {\n if (!(key in value))\n value[key] = \"\";\n });\n } else\n clearPrevStyle(node, prev);\n Object.entries(value).forEach(([key, val]) => {\n if (isSignalLike(val)) {\n observeSignal(val, (args) => setStylePropValue(node, key, args.newValue), {\n lifecycleNode: node\n });\n } else {\n setStylePropValue(node, key, val);\n }\n });\n return;\n }\n}\n\n// src/jsx-assign-props.ts\nvar XLinkNamespace = \"http://www.w3.org/1999/xlink\";\nvar XMLNamespace = \"http://www.w3.org/XML/1998/namespace\";\nfunction normalizeAttribute(s2, separator) {\n return s2.replace(/[A-Z]/g, (match) => separator + match.toLowerCase());\n}\nvar mappedKeys = /* @__PURE__ */ new Map([\n [\"autoComplete\", \"autocomplete\"],\n [\"autoFocus\", \"autofocus\"],\n [\"className\", \"class\"],\n [\"colSpan\", \"colspan\"],\n [\"contentEditable\", \"contenteditable\"],\n [\"formNoValidate\", \"formnovalidate\"],\n [\"htmlFor\", \"for\"],\n [\"innerText\", \"textContent\"],\n [\"minLength\", \"minlength\"],\n [\"maxLength\", \"maxlength\"],\n [\"readOnly\", \"readonly\"],\n [\"reffererPolicy\", \"referrerpolicy\"],\n [\"rowSpan\", \"rowspan\"],\n [\"spellCheck\", \"spellcheck\"],\n [\"tabIndex\", \"tabindex\"],\n [\"onDoubleClick\", \"onDblClick\"],\n [\"onDoubleClickCapture\", \"onDblClickCapture\"]\n]);\nfunction assignProp(node, key, value, prev) {\n switch (key) {\n case \"dataset\":\n if (prev != null) {\n Object.entries(prev).forEach(([k, v2]) => {\n if (v2 != null) {\n delete node.dataset[k];\n }\n });\n }\n Object.entries(value).forEach(([dataKey, dataValue]) => {\n if (dataValue != null) {\n node.dataset[dataKey] = dataValue;\n }\n });\n return;\n case \"textContent\":\n if (isVisibleChild(value)) {\n node[key] = value;\n } else if (isVisibleChild(prev)) {\n node[key] = \"\";\n }\n return;\n case \"dangerouslySetInnerHTML\":\n if (isObject(value)) {\n node.innerHTML = value[\"__html\"];\n } else if (isObject(prev)) {\n node.innerHTML = \"\";\n }\n return;\n case \"value\":\n if (value == null) {\n if (prev != null) {\n node[key] = null;\n }\n return;\n } else if (node instanceof window.HTMLSelectElement) {\n return;\n } else if (node instanceof window.HTMLTextAreaElement) {\n node.value = value;\n return;\n }\n break;\n case \"class\":\n assignClass(node, value, prev);\n return;\n case \"spellcheck\":\n node.spellcheck = value === \"\" || value === true || value === \"true\" ? true : value === false || value === \"false\" ? false : value;\n return;\n case \"draggable\":\n if (value === false || value === \"false\")\n value = \"false\";\n else if (value === \"\")\n value = null;\n else if (value === true || value === \"true\")\n value = \"true\";\n break;\n case \"contenteditable\":\n if (value === false)\n value = \"false\";\n else if (value === \"\" || value === true)\n value = \"true\";\n break;\n case \"ref\":\n case \"namespaceURI\":\n return;\n case \"style\":\n assignStyle(node, value, prev);\n return;\n case \"on\":\n case \"onCapture\":\n const useCapture = key === \"onCapture\";\n if (prev != null) {\n Object.entries(prev).forEach(([eventName, eventHandler]) => {\n if (value == null || value[eventName] !== eventHandler) {\n node.removeEventListener(eventName, eventHandler, useCapture);\n }\n });\n }\n Object.entries(value).forEach(([eventName, eventHandler]) => {\n if (prev == null || prev[eventName] !== eventHandler) {\n node.addEventListener(eventName, eventHandler, useCapture);\n }\n });\n return;\n case \"xlinkActuate\":\n case \"xlinkArcrole\":\n case \"xlinkHref\":\n case \"xlinkRole\":\n case \"xlinkShow\":\n case \"xlinkTitle\":\n case \"xlinkType\":\n node.setAttributeNS(XLinkNamespace, normalizeAttribute(key, \":\"), value);\n return;\n case \"xmlnsXlink\":\n node.setAttribute(\"xmlns:xlink\", value);\n return;\n case \"xmlBase\":\n case \"xmlLang\":\n case \"xmlSpace\":\n node.setAttributeNS(XMLNamespace, normalizeAttribute(key, \":\"), value);\n return;\n }\n if (typeof value === \"function\") {\n if (key[0] === \"o\" && key[1] === \"n\") {\n if (prev != null && prev === value)\n return;\n let attribute = key.toLowerCase();\n const useCapture = attribute.endsWith(\"capture\");\n let eventName;\n if (!useCapture && (node[attribute] === null || prev != null && node[attribute] === prev)) {\n node[attribute] = value;\n addDisposingListener(node, nodeEventPropDisposer.bind(node, attribute));\n } else if (useCapture) {\n eventName = attribute.substring(2, attribute.length - 7);\n if (prev != null) {\n node.removeEventListener(eventName, prev, true);\n }\n node.addEventListener(eventName, value, true);\n } else {\n if (attribute in window) {\n const standardEventName = attribute.substring(2);\n eventName = standardEventName;\n } else {\n const customEventName = attribute[2] + key.slice(3);\n eventName = customEventName;\n }\n if (prev != null) {\n node.removeEventListener(eventName, prev);\n }\n node.addEventListener(eventName, value);\n }\n } else {\n console.warn(`A function was provided for JSX ${node.tagName} element ${key} which does not start with \"on\":`, value, node.tagName);\n }\n return;\n }\n if (isObject(prev)) {\n if (prev === value) {\n return;\n }\n delete node[key];\n }\n if (prev === true) {\n if (prev === value) {\n return;\n }\n node.removeAttribute(key);\n }\n if (prev !== false && prev != null) {\n if (prev === value) {\n return;\n }\n if (node instanceof SVGElement && !nonPresentationSVGAttributes.test(key)) {\n node.removeAttributeNS(normalizeAttribute(key, \"-\"), value);\n } else {\n node.removeAttribute(key);\n }\n }\n if (isObject(value)) {\n node[key] = value;\n return;\n }\n if (value === true) {\n node.setAttribute(key, \"\");\n return;\n }\n if (value !== false && value != null) {\n if (node instanceof SVGElement && !nonPresentationSVGAttributes.test(key)) {\n node.setAttribute(normalizeAttribute(key, \"-\"), value);\n } else {\n node.setAttribute(key, value);\n }\n }\n}\nfunction assignProps(node, props) {\n for (let [key, value] of Object.entries(props)) {\n key = mappedKeys.get(key) ?? key;\n if (isSignalLike(value)) {\n observeSignal(value, (args) => assignProp(node, key, args.newValue, args.prevValue), {\n lifecycleNode: node\n });\n } else if (isPropHook(value)) {\n value[initPropHookSymbol](node, key);\n } else {\n assignProp(node, key, value);\n }\n }\n return node;\n}\nfunction nodeEventPropDisposer(key) {\n this[key] = null;\n}\n\n// src/jsx-factory.ts\nfunction jsx(tag, props) {\n let { children, ...attr } = props || {};\n let ns = attr.namespaceURI;\n if (!ns) {\n if (svgOnlyTags.has(tag))\n ns = SVGNamespace;\n else if (mathMLOnlyTags.has(tag))\n ns = MathMLNamespace;\n else\n ns = currentNamespaceURI();\n }\n let node;\n if (isString(tag)) {\n node = ns ? document.createElementNS(ns, tag) : document.createElement(tag);\n assignProps(node, attr);\n appendChildren(node, children);\n if (node instanceof window.HTMLSelectElement && attr.value != null) {\n if (attr.multiple === true && Array.isArray(attr.value)) {\n const values = attr.value.map((value) => String(value));\n node.querySelectorAll(\"option\").forEach((option) => option.selected = values.includes(option.value));\n } else {\n node.value = attr.value;\n }\n }\n setRef(attr.ref, node);\n } else if (typeof tag === \"function\") {\n if (isObject(tag.defaultProps)) {\n attr = { ...tag.defaultProps, ...attr };\n }\n node = isComponentClass(tag) ? initComponentClass(tag, attr, children) : tag({ ...attr, children });\n } else {\n throw new TypeError(`Invalid JSX element type: ${tag}`);\n }\n return node;\n}\n\n// src/compat-api.ts\nfunction createElement(tag, attr, ...children) {\n if (isString(attr) || Array.isArray(attr)) {\n children.unshift(attr);\n attr = {};\n }\n attr = attr || {};\n if (attr.children != null && !children.length) {\n ({ children, ...attr } = attr);\n }\n return jsx(tag, { ...attr, children });\n}\nfunction useImperativeHandle(ref, init) {\n setRef(ref, init());\n}\n\n// src/fragment.ts\nfunction Fragment(attr) {\n const fragment = document.createDocumentFragment();\n appendChildren(fragment, attr.children);\n return fragment;\n}\n\n// src/hooks.ts\nfunction useClassList(initialValue) {\n let temp = document.createElement(\"div\");\n if (initialValue != null) {\n temp.className = className(initialValue);\n }\n let list = temp.classList;\n function ClassList() {\n return list;\n }\n function dispose() {\n list = null;\n temp = null;\n }\n Object.defineProperties(\n ClassList,\n Object.getOwnPropertyDescriptors({\n [initPropHookSymbol](node, prop) {\n if (prop !== \"class\")\n throw new Error(\"useClassList can only be used for 'class' attribute.\");\n temp && removeDisposingListener(temp, dispose);\n list && node?.setAttribute(\"class\", list.value);\n addDisposingListener(temp = node, dispose);\n list = node?.classList ?? list;\n },\n get size() {\n return list.length;\n },\n get value() {\n return list.value;\n },\n add(...tokens) {\n list.add(...tokens);\n },\n remove(...tokens) {\n list.remove(...tokens);\n },\n toggle(token, force) {\n list.toggle(token, force);\n },\n contains(token) {\n return list.contains(token);\n }\n })\n );\n return ClassList;\n}\nfunction propBinding(value) {\n if (arguments.length && value !== this.value) {\n this.node && this.prop && assignProp(this.node, this.prop, value, this.value);\n this.value = value;\n }\n return this.value;\n}\nfunction propBindingDispose() {\n delete this.node;\n}\nfunction propBindingInit(el, key) {\n if (this.node && el && this.node !== el || this.prop && key && this.prop !== key) {\n throw new Error(\"usePropBinding can only be used with one element and one attribute. Create a new setter for each element / prop.\");\n }\n if (this.node)\n removeDisposingListener(this.node, this.dispose);\n this.node = el;\n if (this.node) {\n addDisposingListener(this.node, this.dispose);\n assignProp(this.node, this.prop ??= key, this.value);\n }\n}\nfunction usePropBinding(initialValue) {\n const accessorThis = {\n value: initialValue\n };\n accessorThis.dispose = propBindingDispose.bind(accessorThis);\n const hook = propBinding.bind(accessorThis);\n hook[initPropHookSymbol] = propBindingInit.bind(accessorThis);\n return hook;\n}\nfunction useText(initialValue) {\n const text = new Text();\n Object.defineProperty(text, \"toString\", {\n value() {\n return this.textContent;\n }\n });\n function setText(value) {\n text.textContent = value;\n }\n if (initialValue != null) {\n setText(initialValue);\n }\n return [text, setText];\n}\n\n// ../../node_modules/.pnpm/@preact+signals-core@1.14.1/node_modules/@preact/signals-core/dist/signals-core.module.js\nvar i = /* @__PURE__ */ Symbol.for(\"preact-signals\");\nfunction t() {\n if (!(s > 1)) {\n var i2, t2 = false;\n !(function() {\n var i3 = c;\n c = void 0;\n while (void 0 !== i3) {\n if (i3.S.v === i3.v) i3.S.i = i3.i;\n i3 = i3.o;\n }\n })();\n while (void 0 !== h) {\n var n2 = h;\n h = void 0;\n v++;\n while (void 0 !== n2) {\n var r2 = n2.u;\n n2.u = void 0;\n n2.f &= -3;\n if (!(8 & n2.f) && w(n2)) try {\n n2.c();\n } catch (n3) {\n if (!t2) {\n i2 = n3;\n t2 = true;\n }\n }\n n2 = r2;\n }\n }\n v = 0;\n s--;\n if (t2) throw i2;\n } else s--;\n}\nfunction n(i2) {\n if (s > 0) return i2();\n e = ++u;\n s++;\n try {\n return i2();\n } finally {\n t();\n }\n}\nvar r = void 0;\nfunction o(i2) {\n var t2 = r;\n r = void 0;\n try {\n return i2();\n } finally {\n r = t2;\n }\n}\nvar f;\nvar h = void 0;\nvar s = 0;\nvar v = 0;\nvar u = 0;\nvar e = 0;\nvar c = void 0;\nvar d = 0;\nfunction a(i2) {\n if (void 0 !== r) {\n var t2 = i2.n;\n if (void 0 === t2 || t2.t !== r) {\n t2 = { i: 0, S: i2, p: r.s, n: void 0, t: r, e: void 0, x: void 0, r: t2 };\n if (void 0 !== r.s) r.s.n = t2;\n r.s = t2;\n i2.n = t2;\n if (32 & r.f) i2.S(t2);\n return t2;\n } else if (-1 === t2.i) {\n t2.i = 0;\n if (void 0 !== t2.n) {\n t2.n.p = t2.p;\n if (void 0 !== t2.p) t2.p.n = t2.n;\n t2.p = r.s;\n t2.n = void 0;\n r.s.n = t2;\n r.s = t2;\n }\n return t2;\n }\n }\n}\nfunction l(i2, t2) {\n this.v = i2;\n this.i = 0;\n this.n = void 0;\n this.t = void 0;\n this.l = 0;\n this.W = null == t2 ? void 0 : t2.watched;\n this.Z = null == t2 ? void 0 : t2.unwatched;\n this.name = null == t2 ? void 0 : t2.name;\n}\nl.prototype.brand = i;\nl.prototype.h = function() {\n return true;\n};\nl.prototype.S = function(i2) {\n var t2 = this, n2 = this.t;\n if (n2 !== i2 && void 0 === i2.e) {\n i2.x = n2;\n this.t = i2;\n if (void 0 !== n2) n2.e = i2;\n else o(function() {\n var i3;\n null == (i3 = t2.W) || i3.call(t2);\n });\n }\n};\nl.prototype.U = function(i2) {\n var t2 = this;\n if (void 0 !== this.t) {\n var n2 = i2.e, r2 = i2.x;\n if (void 0 !== n2) {\n n2.x = r2;\n i2.e = void 0;\n }\n if (void 0 !== r2) {\n r2.e = n2;\n i2.x = void 0;\n }\n if (i2 === this.t) {\n this.t = r2;\n if (void 0 === r2) o(function() {\n var i3;\n null == (i3 = t2.Z) || i3.call(t2);\n });\n }\n }\n};\nl.prototype.subscribe = function(i2) {\n var t2 = this;\n return j(function() {\n var n2 = t2.value, o2 = r;\n r = void 0;\n try {\n i2(n2);\n } finally {\n r = o2;\n }\n }, { name: \"sub\" });\n};\nl.prototype.valueOf = function() {\n return this.value;\n};\nl.prototype.toString = function() {\n return this.value + \"\";\n};\nl.prototype.toJSON = function() {\n return this.value;\n};\nl.prototype.peek = function() {\n var i2 = r;\n r = void 0;\n try {\n return this.value;\n } finally {\n r = i2;\n }\n};\nObject.defineProperty(l.prototype, \"value\", { get: function() {\n var i2 = a(this);\n if (void 0 !== i2) i2.i = this.i;\n return this.v;\n}, set: function(i2) {\n if (i2 !== this.v) {\n if (v > 100) throw new Error(\"Cycle detected\");\n !(function(i3) {\n if (0 !== s && 0 === v) {\n if (i3.l !== e) {\n i3.l = e;\n c = { S: i3, v: i3.v, i: i3.i, o: c };\n }\n }\n })(this);\n this.v = i2;\n this.i++;\n d++;\n s++;\n try {\n for (var n2 = this.t; void 0 !== n2; n2 = n2.x) n2.t.N();\n } finally {\n t();\n }\n }\n} });\nfunction y(i2, t2) {\n return new l(i2, t2);\n}\nfunction w(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) if (t2.S.i !== t2.i || !t2.S.h() || t2.S.i !== t2.i) return true;\n return false;\n}\nfunction _(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) {\n var n2 = t2.S.n;\n if (void 0 !== n2) t2.r = n2;\n t2.S.n = t2;\n t2.i = -1;\n if (void 0 === t2.n) {\n i2.s = t2;\n break;\n }\n }\n}\nfunction b(i2) {\n var t2 = i2.s, n2 = void 0;\n while (void 0 !== t2) {\n var r2 = t2.p;\n if (-1 === t2.i) {\n t2.S.U(t2);\n if (void 0 !== r2) r2.n = t2.n;\n if (void 0 !== t2.n) t2.n.p = r2;\n } else n2 = t2;\n t2.S.n = t2.r;\n if (void 0 !== t2.r) t2.r = void 0;\n t2 = r2;\n }\n i2.s = n2;\n}\nfunction p(i2, t2) {\n l.call(this, void 0);\n this.x = i2;\n this.s = void 0;\n this.g = d - 1;\n this.f = 4;\n this.W = null == t2 ? void 0 : t2.watched;\n this.Z = null == t2 ? void 0 : t2.unwatched;\n this.name = null == t2 ? void 0 : t2.name;\n}\np.prototype = new l();\np.prototype.h = function() {\n this.f &= -3;\n if (1 & this.f) return false;\n if (32 == (36 & this.f)) return true;\n this.f &= -5;\n if (this.g === d) return true;\n this.g = d;\n this.f |= 1;\n if (this.i > 0 && !w(this)) {\n this.f &= -2;\n return true;\n }\n var i2 = r;\n try {\n _(this);\n r = this;\n var t2 = this.x();\n if (16 & this.f || this.v !== t2 || 0 === this.i) {\n this.v = t2;\n this.f &= -17;\n this.i++;\n }\n } catch (i3) {\n this.v = i3;\n this.f |= 16;\n this.i++;\n }\n r = i2;\n b(this);\n this.f &= -2;\n return true;\n};\np.prototype.S = function(i2) {\n if (void 0 === this.t) {\n this.f |= 36;\n for (var t2 = this.s; void 0 !== t2; t2 = t2.n) t2.S.S(t2);\n }\n l.prototype.S.call(this, i2);\n};\np.prototype.U = function(i2) {\n if (void 0 !== this.t) {\n l.prototype.U.call(this, i2);\n if (void 0 === this.t) {\n this.f &= -33;\n for (var t2 = this.s; void 0 !== t2; t2 = t2.n) t2.S.U(t2);\n }\n }\n};\np.prototype.N = function() {\n if (!(2 & this.f)) {\n this.f |= 6;\n for (var i2 = this.t; void 0 !== i2; i2 = i2.x) i2.t.N();\n }\n};\nObject.defineProperty(p.prototype, \"value\", { get: function() {\n if (1 & this.f) throw new Error(\"Cycle detected\");\n var i2 = a(this);\n this.h();\n if (void 0 !== i2) i2.i = this.i;\n if (16 & this.f) throw this.v;\n return this.v;\n} });\nfunction g(i2, t2) {\n return new p(i2, t2);\n}\nfunction S(i2) {\n var n2 = i2.m;\n i2.m = void 0;\n if (\"function\" == typeof n2) {\n s++;\n var o2 = r;\n r = void 0;\n try {\n n2();\n } catch (t2) {\n i2.f &= -2;\n i2.f |= 8;\n m(i2);\n throw t2;\n } finally {\n r = o2;\n t();\n }\n }\n}\nfunction m(i2) {\n for (var t2 = i2.s; void 0 !== t2; t2 = t2.n) t2.S.U(t2);\n i2.x = void 0;\n i2.s = void 0;\n S(i2);\n}\nfunction x(i2) {\n if (r !== this) throw new Error(\"Out-of-order effect\");\n b(this);\n r = i2;\n this.f &= -2;\n if (8 & this.f) m(this);\n t();\n}\nfunction E(i2, t2) {\n this.x = i2;\n this.m = void 0;\n this.s = void 0;\n this.u = void 0;\n this.f = 32;\n this.name = null == t2 ? void 0 : t2.name;\n if (f) f.push(this);\n}\nE.prototype.c = function() {\n var i2 = this.S();\n try {\n if (8 & this.f) return;\n if (void 0 === this.x) return;\n var t2 = this.x();\n if (\"function\" == typeof t2) this.m = t2;\n } finally {\n i2();\n }\n};\nE.prototype.S = function() {\n if (1 & this.f) throw new Error(\"Cycle detected\");\n this.f |= 1;\n this.f &= -9;\n S(this);\n _(this);\n s++;\n var i2 = r;\n r = this;\n return x.bind(this, i2);\n};\nE.prototype.N = function() {\n if (!(2 & this.f)) {\n this.f |= 2;\n this.u = h;\n h = this;\n }\n};\nE.prototype.d = function() {\n this.f |= 8;\n if (!(1 & this.f)) m(this);\n};\nE.prototype.dispose = function() {\n this.d();\n};\nfunction j(i2, t2) {\n var n2 = new E(i2, t2);\n try {\n n2.c();\n } catch (i3) {\n n2.d();\n throw i3;\n }\n var r2 = n2.d.bind(n2);\n r2[Symbol.dispose] = r2;\n return r2;\n}\n\n// src/signals.ts\nvar signal = y;\nvar computed = g;\nvar effect = j;\nvar batch = n;\nvar untracked = o;\nfunction useSignal(initialValue) {\n return signal(initialValue);\n}\nfunction useUpdatableComputed() {\n const updater = signal(0);\n const factory = (fn) => {\n return computed(() => {\n updater.value;\n return fn();\n });\n };\n const update = () => {\n updater.value++;\n };\n return { computed: factory, update };\n}\nexport {\n Component,\n Fragment,\n MathMLNamespace,\n SVGNamespace,\n ShadowRootNode,\n addDisposingListener,\n batch,\n bindThis,\n className,\n computed,\n createElement,\n createRef,\n currentLifecycleRoot,\n currentNamespaceURI,\n derivedSignal,\n dispatchDisposingEvent,\n effect,\n createElement as h,\n inHTMLNamespace,\n inMathMLNamespace,\n inNamespaceURI,\n inSVGNamespace,\n initPropHookSymbol,\n invokeDisposingListeners,\n isSignalLike,\n jsx,\n jsx as jsxs,\n observeSignal,\n removeDisposingListener,\n setRef,\n signal,\n untracked,\n useClassList,\n useImperativeHandle,\n usePropBinding,\n createRef as useRef,\n useSignal,\n useText,\n useUpdatableComputed\n};\n//# sourceMappingURL=index.js.map\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nimport { enMessages } from './locales/en';\nimport { trMessages } from './locales/tr';\n\nexport interface FlipbookMessages {\n emptyStateTitle: string;\n thumbnails: string;\n singlePageMode: string;\n pages: string;\n previous: string;\n next: string;\n zoomOut: string;\n zoomIn: string;\n fullscreen: string;\n settings: string;\n downloadCatalog: string;\n play: string;\n pause: string;\n tableOfContents: string;\n}\n\nexport const builtInMessages = {\n en: enMessages,\n tr: trMessages\n} as const;\n\nexport type FlipbookLocale = keyof typeof builtInMessages;\nexport type PartialFlipbookMessages = Partial<FlipbookMessages>;\n\nexport interface I18nConfiguration {\n locale?: FlipbookLocale | string;\n messages?: Partial<Record<string, PartialFlipbookMessages>>;\n}\n\nexport function resolveMessages(config: I18nConfiguration = {}): FlipbookMessages {\n const locale = config.locale ?? 'en';\n const builtIn = builtInMessages[locale as FlipbookLocale] ?? builtInMessages.en;\n const custom = config.messages?.[locale] ?? {};\n return {\n ...builtInMessages.en,\n ...builtIn,\n ...custom\n };\n}\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport const enMessages = {\n emptyStateTitle: 'No data available.',\n thumbnails: 'Thumbnails',\n singlePageMode: 'Single Page Mode',\n pages: 'Pages',\n previous: 'Previous',\n next: 'Next',\n zoomOut: 'Zoom Out',\n zoomIn: 'Zoom In',\n fullscreen: 'Fullscreen',\n settings: 'Settings',\n downloadCatalog: 'Download Catalog',\n play: 'Play',\n pause: 'Pause',\n tableOfContents: 'Table of Contents'\n} as const;\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport const trMessages = {\n emptyStateTitle: 'Veri bulunamadi.',\n thumbnails: 'Küçük Resimler',\n singlePageMode: 'Tek Sayfa Modu',\n pages: 'Sayfalar',\n previous: 'Önceki',\n next: 'Sonraki',\n zoomOut: 'Uzaklaş',\n zoomIn: 'Yaklaş',\n fullscreen: 'Tam Ekran',\n settings: 'Ayarlar',\n downloadCatalog: 'Kataloğu İndir',\n play: 'Otomatik Oynat',\n pause: 'Duraklat',\n tableOfContents: 'İçindekiler'\n} as const;\n","/**\n * @license FlipbookEngine v0.6.0\n * Copyright (c) 2026 Murat Dogan\n *\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n *\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n *\n * 2. Commercial License: If you wish to use this software in commercial,\n * closed-source, or SaaS products without the AGPLv3 obligations,\n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\n\nimport { computed } from '@preact/signals-core';\nimport type { FlipbookStore } from '../state/store';\nimport { resolveMessages } from '../i18n/service';\ninterface ToolbarProps {\n store: FlipbookStore;\n onToggleThumbs: () => void;\n onToggleToc: () => void;\n onToggleSingleMode: () => void;\n onZoomIn: () => void;\n onZoomOut: () => void;\n onDownload?: () => void;\n onSoundToggle: () => void;\n onNextPage: () => void;\n onPrevPage: () => void;\n onToggleAutoPlay: () => void;\n onToggleFullscreen: () => void;\n}\n\nexport function Toolbar(props: ToolbarProps) {\n const messages = computed(() => resolveMessages({ locale: props.store.locale.value, messages: props.store.messages.value }));\n\n return (\n <div class=\"bk-toolbar\" role=\"toolbar\" aria-label=\"Flipbook controls\">\n <div class=\"bk-btn-group\">\n <button type=\"button\"\n class={computed(() => `bk-btn ${props.store.showThumbs.value ? 'active' : ''}`)}\n onClick={props.onToggleThumbs}\n aria-label={computed(() => messages.value.thumbnails || 'Thumbnails')} aria-pressed={computed(() => props.store.showThumbs.value ? 'true' : 'false')} title={computed(() => messages.value.thumbnails || 'Thumbnails')}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"></rect><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"></rect><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"></rect></svg>\n </button>\n {computed(() => props.store.toc.value.length ? (\n <button type=\"button\"\n class={computed(() => props.store.showToc.value ? 'bk-btn active' : 'bk-btn')}\n onClick={props.onToggleToc}\n aria-label={computed(() => messages.value.tableOfContents || 'Table of Contents')}\n aria-pressed={computed(() => props.store.showToc.value ? 'true' : 'false')}\n title={computed(() => messages.value.tableOfContents || 'Table of Contents')}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"8\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"8\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"8\" y1=\"18\" x2=\"21\" y2=\"18\"></line><line x1=\"3\" y1=\"6\" x2=\"3.01\" y2=\"6\"></line><line x1=\"3\" y1=\"12\" x2=\"3.01\" y2=\"12\"></line><line x1=\"3\" y1=\"18\" x2=\"3.01\" y2=\"18\"></line></svg>\n </button>\n ) : null)}\n\n <button type=\"button\"\n class={computed(() => `bk-btn bz-hide-mobile ${props.store.isSingleMode.value ? 'active' : ''}`)}\n onClick={props.onToggleSingleMode}\n aria-label={computed(() => messages.value.singlePageMode || 'Single Page')} aria-pressed={computed(() => props.store.isSingleMode.value ? 'true' : 'false')} title={computed(() => messages.value.singlePageMode || 'Single Page')}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"></path><polyline points=\"14 2 14 8 20 8\"></polyline><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"></line><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"></line><polyline points=\"10 9 9 9 8 9\"></polyline></svg>\n </button>\n\n <button type=\"button\"\n class={computed(() => `bk-btn ${props.store.isAutoPlaying.value ? 'active' : ''}`)}\n onClick={props.onToggleAutoPlay}\n aria-label={computed(() => props.store.isAutoPlaying.value ? (messages.value.pause || 'Pause') : (messages.value.play || 'Play'))} aria-pressed={computed(() => props.store.isAutoPlaying.value ? 'true' : 'false')} title={computed(() => props.store.isAutoPlaying.value ? (messages.value.pause || 'Pause') : (messages.value.play || 'Play'))}\n >\n <svg style={{ display: computed(() => props.store.isAutoPlaying.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"6\" y=\"4\" width=\"4\" height=\"16\"></rect><rect x=\"14\" y=\"4\" width=\"4\" height=\"16\"></rect></svg>\n\n <svg style={{ display: computed(() => !props.store.isAutoPlaying.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"5 3 19 12 5 21 5 3\"></polygon></svg>\n </button>\n </div>\n\n <div class=\"bk-btn-group bk-btn-group--center\">\n <button type=\"button\" class=\"bk-btn\" onClick={props.onPrevPage} aria-label={computed(() => messages.value.previous || 'Previous')} title={computed(() => messages.value.previous || 'Previous')}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"15 18 9 12 15 6\"></polyline></svg>\n </button>\n <span class=\"bz-page-info\" aria-live=\"polite\" aria-atomic=\"true\">\n {computed(() => {\n const current = props.store.currentPage.value;\n const total = props.store.totalPages.value;\n if (props.store.isSingleMode.value || current === 0 || current >= total - 1) {\n return `${current + 1} / ${total}`;\n }\n const left = current % 2 === 1 ? current : current - 1;\n return `${left + 1}-${left + 2} / ${total}`;\n })}\n </span>\n <button type=\"button\" class=\"bk-btn\" onClick={props.onNextPage} aria-label={computed(() => messages.value.next || 'Next')} title={computed(() => messages.value.next || 'Next')}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"></polyline></svg>\n </button>\n </div>\n\n <div class=\"bk-btn-group\">\n <button type=\"button\" class=\"bk-btn\" onClick={props.onZoomIn} aria-label={computed(() => messages.value.zoomIn || 'Zoom In')} title={computed(() => messages.value.zoomIn || 'Zoom In')}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line></svg>\n </button>\n <button type=\"button\"\n class={computed(() => `bk-btn ${props.store.isZoomed.value ? 'active' : ''}`)}\n onClick={props.onZoomOut}\n aria-label={computed(() => messages.value.zoomOut || 'Zoom Out')} title={computed(() => messages.value.zoomOut || 'Zoom Out')}\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line></svg>\n </button>\n\n <button type=\"button\" class=\"bk-btn bk-btn--fullscreen\" onClick={props.onToggleFullscreen} aria-label={computed(() => messages.value.fullscreen || 'Fullscreen')} title={computed(() => messages.value.fullscreen || 'Fullscreen')}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\"></path></svg>\n </button>\n\n {computed(() => {\n if (props.store.allowDownload.value && props.store.hasDownloadUrl.value && props.onDownload) {\n return (\n <button type=\"button\" class=\"bk-btn bk-btn--download\" onClick={props.onDownload} aria-label={computed(() => messages.value.downloadCatalog || 'Download')} title={computed(() => messages.value.downloadCatalog || 'Download')}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path><polyline points=\"7 10 12 15 17 10\"></polyline><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"></line></svg>\n </button>\n );\n }\n return null;\n })}\n\n <button type=\"button\"\n // @ts-ignore\n class={computed(() => `bk-btn ${!props.store.soundEnabled.value ? 'muted' : ''}`)}\n onClick={props.onSoundToggle}\n aria-label=\"Sound\" aria-pressed={computed(() => props.store.soundEnabled.value ? 'true' : 'false')} title=\"Sound\"\n >\n <svg style={{ display: computed(() => props.store.soundEnabled.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><path d=\"M15.54 8.46a5 5 0 0 1 0 7.07\"></path><path d=\"M19.07 4.93a10 10 0 0 1 0 14.14\"></path></svg>\n\n <svg style={{ display: computed(() => !props.store.soundEnabled.value ? 'block' : 'none') as any }} xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\"></polygon><line x1=\"23\" y1=\"9\" x2=\"17\" y2=\"15\"></line><line x1=\"17\" y1=\"9\" x2=\"23\" y2=\"15\"></line></svg>\n </button>\n </div>\n </div>\n );\n}\n\n\n\n\n\n\n","/**\r\n * @license FlipbookEngine v0.6.0\r\n * Copyright (c) 2026 Murat Dogan\r\n *\r\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\r\n *\r\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\r\n * under the terms of the GNU Affero General Public License v3.0.\r\n *\r\n * 2. Commercial License: If you wish to use this software in commercial,\r\n * closed-source, or SaaS products without the AGPLv3 obligations,\r\n * you must purchase a Commercial License from:\r\n * https://flipbookengine.com/pricing\r\n */\r\n\r\n\r\nimport { computed } from '@preact/signals-core';\r\nimport type { FlipbookStore } from '../state/store';\r\n\r\ninterface ThumbnailsProps {\r\n store: FlipbookStore;\r\n onThumbClick: (pageIndex: number) => void;\r\n}\r\n\r\nexport function Thumbnails(props: ThumbnailsProps) {\r\n return (\r\n <div class=\"bk-thumbs\" style={computed(() => props.store.showThumbs.value ? 'display:flex;' : 'display:none;')}>\r\n {props.store.pages.value.map((page, index) => {\r\n const isActive = () => {\r\n const current = props.store.currentPage.value;\r\n if (props.store.isSingleMode.value || current === 0 || current >= props.store.pages.value.length - 1) {\r\n return current === index;\r\n }\r\n const left = current % 2 === 1 ? current : current - 1;\r\n return index === left || index === left + 1;\r\n };\r\n\r\n return (\r\n <div\r\n // @ts-ignore\r\n class={computed(() => `thumb-item ${isActive() ? 'active' : ''}`)}\r\n role=\"button\"\r\n tabindex=\"0\"\r\n aria-label={`Go to page ${index + 1}`}\r\n aria-current={computed(() => isActive() ? 'page' : undefined)}\r\n onClick={() => props.onThumbClick(index)}\r\n onKeyDown={(event: KeyboardEvent) => {\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n props.onThumbClick(index);\r\n }\r\n }}\r\n >\r\n <div class=\"thumb-img-wrapper\">\r\n <img\r\n data-pdf-page={page.assetId.startsWith('pdf-page-') ? page.pageNumber : undefined}\r\n class=\"thumb-img\"\r\n src={page.thumb || page.low || page.normal}\r\n alt={`Page ${index + 1}`}\r\n loading=\"lazy\"\r\n onError={(e: any) => { e.currentTarget.style.display = 'none'; }}\r\n />\r\n </div>\r\n <span>{index + 1}</span>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\n\r\n","/**\n * @license FlipbookEngine v0.6.0\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { computed } from '@preact/signals-core';\nimport { resolveMessages } from '../i18n/service';\nimport type { FlipbookTocEntry } from '../model/toc';\nimport type { FlipbookStore } from '../state/store';\n\ninterface TableOfContentsProps {\n store: FlipbookStore;\n onEntryClick: (pageIndex: number) => void;\n}\n\nfunction renderEntries(entries: FlipbookTocEntry[], store: FlipbookStore, onEntryClick: (pageIndex: number) => void): any {\n return (\n <ol class=\"bk-toc-list\">\n {entries.map((entry) => (\n <li class=\"bk-toc-item\">\n <button\n type=\"button\"\n class={computed(() => store.currentPage.value === entry.pageIndex ? 'bk-toc-entry active' : 'bk-toc-entry')}\n aria-current={computed(() => store.currentPage.value === entry.pageIndex ? 'page' : undefined)}\n onClick={() => onEntryClick(entry.pageIndex)}\n >\n <span class=\"bk-toc-title\">{entry.title}</span>\n <span class=\"bk-toc-page\">{entry.pageIndex + 1}</span>\n </button>\n {entry.children?.length ? renderEntries(entry.children, store, onEntryClick) : null}\n </li>\n ))}\n </ol>\n );\n}\n\nexport function TableOfContents(props: TableOfContentsProps) {\n const messages = computed(() => resolveMessages({ locale: props.store.locale.value, messages: props.store.messages.value }));\n return (\n <nav\n class=\"bk-toc\"\n aria-label={computed(() => messages.value.tableOfContents || 'Table of Contents')}\n style={computed(() => props.store.showToc.value && props.store.toc.value.length ? 'display:flex;' : 'display:none;')}\n >\n <div class=\"bk-toc-heading\">{computed(() => messages.value.tableOfContents || 'Table of Contents')}</div>\n {renderEntries(props.store.toc.value, props.store, props.onEntryClick)}\n </nav>\n );\n}","/**\r\n * @license FlipbookEngine v0.6.0\r\n * Copyright (c) 2026 Murat Dogan\r\n *\r\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\r\n *\r\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\r\n * under the terms of the GNU Affero General Public License v3.0.\r\n *\r\n * 2. Commercial License: If you wish to use this software in commercial,\r\n * closed-source, or SaaS products without the AGPLv3 obligations,\r\n * you must purchase a Commercial License from:\r\n * https://flipbookengine.com/pricing\r\n */\r\n\r\n\r\nimport { computed } from '@preact/signals-core';\r\nimport type { FlipbookStore } from '../state/store';\r\n\r\ninterface ViewerProps {\r\n store: FlipbookStore;\r\n bookWrapperRef: (el: HTMLElement) => void;\r\n bookSizerRef: (el: HTMLElement) => void;\r\n bookContainerRef: (el: HTMLElement) => void;\r\n}\r\n\r\nexport function Viewer(props: ViewerProps) {\r\n return (\r\n <div\r\n role=\"region\"\r\n aria-label=\"Flipbook viewer\"\r\n class={computed(() => {\r\n let classes = 'bk-book-wrapper ';\r\n if (props.store.isDoublePageLayout.value) classes += 'double-mode ';\r\n if (props.store.isFrontCover.value) classes += 'bk-is-cover ';\r\n if (props.store.isBackCover.value) classes += 'bk-is-back-cover ';\r\n if (props.store.zoomState.value.isActive) classes += 'zoomed ';\r\n return classes.trim();\r\n })}\r\n ref={props.bookWrapperRef}\r\n >\r\n <div\r\n class=\"bk-book-sizer\"\r\n ref={props.bookSizerRef}\r\n >\r\n <div\r\n ref={props.bookContainerRef}\r\n class={computed(() => 'bk-book ' + (props.store.flipState.value !== 'read' ? 'is-flipping' : ''))}\r\n style={computed(() => `display: ${props.store.isSingleMode.value ? 'none' : 'block'};`)}\r\n >\r\n {props.store.pages.value.map((page, index) => {\r\n const isHard = index === 0 || index === props.store.pages.value.length - 1;\r\n\r\n return (\r\n <div\r\n // @ts-ignore\r\n class={`bz-page ${index === 0 ? 'bz-page--cover' : ''} ${index === props.store.pages.value.length - 1 ? 'bz-page--back' : ''}`}\r\n data-density={isHard ? \"hard\" : \"soft\"}\r\n data-idx={index}\r\n >\r\n <div class=\"bz-page-content\" style=\"position:relative; width:100%; height:100%; overflow:hidden;\">\r\n <img\r\n data-pdf-page={page.assetId.startsWith('pdf-page-') ? page.pageNumber : undefined}\r\n src={page.low || page.normal}\r\n data-src={page.normal}\r\n class={`page-content ${page.cropMode !== 'full' ? 'page-content--split page-content--' + page.cropMode : ''}`}\r\n alt={`Page ${index + 1}`}\r\n loading=\"lazy\"\r\n />\r\n <div class=\"page-shadow\"></div>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n\r\n <div\r\n class=\"bk-single-view\"\r\n style={computed(() => `display: ${props.store.isSingleMode.value ? 'flex' : 'none'}; width: 100%; height: 100%; justify-content: center; align-items: center; position: absolute; top: 0; left: 0; z-index: 10;`)}\r\n >\r\n {computed(() => {\r\n const page = props.store.pages.value[props.store.currentPage.value];\r\n if (!page) return null;\r\n return (\r\n <img\r\n data-pdf-page={page.assetId.startsWith('pdf-page-') ? page.pageNumber : undefined}\r\n class={`bk-single-img page-content ${page.cropMode !== 'full' ? 'page-content--split page-content--' + page.cropMode : ''}`}\r\n src={props.store.zoomState.value.isActive ? page.normal : (page.low || page.normal)}\r\n alt={`Page ${props.store.currentPage.value + 1}`}\r\n style=\"opacity: 1; transition: opacity 0.3s; box-shadow: var(--flipbook-shadow);\"\r\n />\r\n );\r\n })}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","/**\r\n * @license FlipbookEngine v0.6.0\r\n * Copyright (c) 2026 Murat Dogan\r\n *\r\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\r\n */\r\n\r\n\r\nimport { computed } from '@preact/signals-core';\r\nimport type { FlipbookStore } from '../state/store';\r\n\r\ninterface NavigationArrowsProps {\r\n store: FlipbookStore;\r\n onPrevPage: () => void;\r\n onNextPage: () => void;\r\n}\r\n\r\nexport function NavigationArrows(props: NavigationArrowsProps) {\r\n const isLeftVisible = computed(() => {\r\n return props.store.showArrows.value && props.store.currentPage.value > 0;\r\n });\r\n\r\n const isRightVisible = computed(() => {\r\n if (!props.store.showArrows.value || props.store.totalPages.value <= 1) return false;\r\n // If double page layout, the last visible spread starts at totalPages - 2 (if even) or totalPages - 1 (if odd)\r\n // A simple check: if current page is the last page, hide it.\r\n return props.store.currentPage.value < props.store.totalPages.value - 1;\r\n });\r\n\r\n return (\r\n <div class=\"bk-nav-arrows\" style={computed(() => props.store.showArrows.value ? 'display: flex;' : 'display: none;')}>\r\n <button type=\"button\"\r\n class=\"bk-nav-arrow bk-nav-prev\"\r\n style={computed(() => isLeftVisible.value ? 'visibility: visible;' : 'visibility: hidden;')}\r\n onClick={(e: Event) => { e.preventDefault(); props.onPrevPage(); }}\r\n aria-label=\"Previous Page\"\r\n >\r\n <div class=\"bk-arrow-icon bk-arrow-left\"></div>\r\n </button>\r\n <button type=\"button\"\r\n class=\"bk-nav-arrow bk-nav-next\"\r\n style={computed(() => isRightVisible.value ? 'visibility: visible;' : 'visibility: hidden;')}\r\n onClick={(e: Event) => { e.preventDefault(); props.onNextPage(); }}\r\n aria-label=\"Next Page\"\r\n >\r\n <div class=\"bk-arrow-icon bk-arrow-right\"></div>\r\n </button>\r\n </div>\r\n );\r\n}\r\n\r\n","import { computed } from '@preact/signals-core';\n/**\n * @license FlipbookEngine v0.6.0\n * Copyright (c) 2026 Murat Dogan\n *\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n *\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n *\n * 2. Commercial License: If you wish to use this software in commercial,\n * closed-source, or SaaS products without the AGPLv3 obligations,\n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\n\n\nimport { Toolbar } from './Toolbar';\nimport { Thumbnails } from './Thumbnails';\nimport { TableOfContents } from './TableOfContents';\nimport { Viewer } from './Viewer';\nimport { NavigationArrows } from './NavigationArrows';\nimport type { FlipbookStore } from '../state/store';\nimport type { PageFlipAdapter } from '../adapters/PageFlipAdapter';\nimport type { InteractionManager } from '../core/InteractionManager';\n\ninterface AppProps {\n pageFlipAdapterRef: { current: PageFlipAdapter | null };\n interactionManagerRef: { current: InteractionManager | null };\n bookWrapperRef: (el: HTMLElement) => void;\n bookSizerRef: (el: HTMLElement) => void;\n bookContainerRef: (el: HTMLElement) => void;\n className?: string;\n onDownload: () => void;\n onToggleFullscreen: () => void;\n store: FlipbookStore;\n}\n\nexport function App(props: AppProps) {\n const handleToggleThumbs = () => {\n props.store.showThumbs.value = !props.store.showThumbs.value;\n };\n\n const handleToggleToc = () => {\n props.store.showToc.value = !props.store.showToc.value;\n };\n\n const handleToggleSingleMode = () => {\n props.store.isSingleMode.value = !props.store.isSingleMode.value;\n };\n\n const handleToggleAutoPlay = () => {\n props.store.isAutoPlaying.value = !props.store.isAutoPlaying.value;\n };\n\n const handleZoomIn = () => {\n props.interactionManagerRef.current?.zoomIn();\n };\n\n const handleZoomOut = () => {\n props.interactionManagerRef.current?.zoomOut();\n };\n\n const handleToggleFullscreen = () => props.onToggleFullscreen();\n const handleTocEntryClick = (pageIndex: number) => {\n props.store.currentPage.value = pageIndex;\n props.store.showToc.value = false;\n };\n\n const handleThumbClick = (index: number) => {\n if (props.store.currentPage.value !== index) {\n props.store.currentPage.value = index;\n props.pageFlipAdapterRef.current?.playSound();\n }\n };\n\n const handleNextPage = () => {\n props.pageFlipAdapterRef.current?.turnToNextPage();\n };\n\n const handlePrevPage = () => {\n props.pageFlipAdapterRef.current?.turnToPrevPage();\n };\n\n return (\n <div\n class={computed(() => `bk-wrapper bk-theme-${props.store.themeMode.value} ${props.className || ''}`)}\n >\n <div class=\"bk-main-area\">\n <Viewer store={props.store}\n bookWrapperRef={props.bookWrapperRef}\n bookSizerRef={props.bookSizerRef}\n bookContainerRef={props.bookContainerRef}\n />\n\n <NavigationArrows store={props.store}\n onPrevPage={handlePrevPage}\n onNextPage={handleNextPage}\n />\n\n {!props.store.whiteLabel.value ? (\n <div class=\"bk-watermark\">\n Powered by <a href=\"https://flipbookengine.com\" target=\"_blank\" rel=\"noopener\" style=\"text-decoration: underline;\">FlipbookEngine</a>\n </div>\n ) : null}\n <TableOfContents store={props.store} onEntryClick={handleTocEntryClick} />\n </div>\n\n <Toolbar store={props.store}\n onToggleThumbs={handleToggleThumbs}\n onToggleToc={handleToggleToc}\n onToggleSingleMode={handleToggleSingleMode}\n onZoomIn={handleZoomIn}\n onZoomOut={handleZoomOut}\n onDownload={props.onDownload}\n onNextPage={handleNextPage}\n onPrevPage={handlePrevPage}\n onSoundToggle={() => props.store.soundEnabled.value = !props.store.soundEnabled.value}\n onToggleAutoPlay={handleToggleAutoPlay}\n onToggleFullscreen={handleToggleFullscreen}\n />\n\n <Thumbnails store={props.store}\n onThumbClick={handleThumbClick}\n />\n </div>\n );\n}\n\n\n\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):e((t=t||self).St={})}(this,(function(t){\"use strict\";class e{constructor(t,e){this.state={angle:0,area:[],position:{x:0,y:0},hardAngle:0,hardDrawingAngle:0},this.createdDensity=e,this.nowDrawingDensity=this.createdDensity,this.render=t}setDensity(t){this.createdDensity=t,this.nowDrawingDensity=t}setDrawingDensity(t){this.nowDrawingDensity=t}setPosition(t){this.state.position=t}setAngle(t){this.state.angle=t}setArea(t){this.state.area=t}setHardDrawingAngle(t){this.state.hardDrawingAngle=t}setHardAngle(t){this.state.hardAngle=t,this.state.hardDrawingAngle=t}setOrientation(t){this.orientation=t}getDrawingDensity(){return this.nowDrawingDensity}getDensity(){return this.createdDensity}getHardAngle(){return this.state.hardAngle}}class i extends e{constructor(t,e,i){super(t,i),this.image=null,this.isLoad=!1,this.loadingAngle=0,this.image=new Image,this.image.src=e}draw(t){const e=this.render.getContext(),i=this.render.convertToGlobal(this.state.position),s=this.render.getRect().pageWidth,n=this.render.getRect().height;e.save(),e.translate(i.x,i.y),e.beginPath();for(let t of this.state.area)null!==t&&(t=this.render.convertToGlobal(t),e.lineTo(t.x-i.x,t.y-i.y));e.rotate(this.state.angle),e.clip(),this.isLoad?e.drawImage(this.image,0,0,s,n):this.drawLoader(e,{x:0,y:0},s,n),e.restore()}simpleDraw(t){const e=this.render.getRect(),i=this.render.getContext(),s=e.pageWidth,n=e.height,h=1===t?e.left+e.pageWidth:e.left,r=e.top;this.isLoad?i.drawImage(this.image,h,r,s,n):this.drawLoader(i,{x:h,y:r},s,n)}drawLoader(t,e,i,s){t.beginPath(),t.strokeStyle=\"rgb(200, 200, 200)\",t.fillStyle=\"rgb(255, 255, 255)\",t.lineWidth=1,t.rect(e.x+1,e.y+1,i-1,s-1),t.stroke(),t.fill();const n={x:e.x+i/2,y:e.y+s/2};t.beginPath(),t.lineWidth=10,t.arc(n.x,n.y,20,this.loadingAngle,3*Math.PI/2+this.loadingAngle),t.stroke(),t.closePath(),this.loadingAngle+=.07,this.loadingAngle>=2*Math.PI&&(this.loadingAngle=0)}load(){this.isLoad||(this.image.onload=()=>{this.isLoad=!0})}newTemporaryCopy(){return this}getTemporaryCopy(){return this}hideTemporaryCopy(){}}class s{constructor(t,e){this.pages=[],this.currentPageIndex=0,this.currentSpreadIndex=0,this.landscapeSpread=[],this.portraitSpread=[],this.render=e,this.app=t,this.currentPageIndex=0,this.isShowCover=this.app.getSettings().showCover}destroy(){this.pages=[]}createSpread(){this.landscapeSpread=[],this.portraitSpread=[];for(let t=0;t<this.pages.length;t++)this.portraitSpread.push([t]);let t=0;this.isShowCover&&(this.pages[0].setDensity(\"hard\"),this.landscapeSpread.push([t]),t++);for(let e=t;e<this.pages.length;e+=2)e<this.pages.length-1?this.landscapeSpread.push([e,e+1]):(this.landscapeSpread.push([e]),this.pages[e].setDensity(\"hard\"))}getSpread(){return\"landscape\"===this.render.getOrientation()?this.landscapeSpread:this.portraitSpread}getSpreadIndexByPage(t){const e=this.getSpread();for(let i=0;i<e.length;i++)if(t===e[i][0]||t===e[i][1])return i;return null}getPageCount(){return this.pages.length}getPages(){return this.pages}getPage(t){if(t>=0&&t<this.pages.length)return this.pages[t];throw new Error(\"Invalid page number\")}nextBy(t){const e=this.pages.indexOf(t);return e<this.pages.length-1?this.pages[e+1]:null}prevBy(t){const e=this.pages.indexOf(t);return e>0?this.pages[e-1]:null}getFlippingPage(t){const e=this.currentSpreadIndex;if(\"portrait\"===this.render.getOrientation())return 0===t?this.pages[e].newTemporaryCopy():this.pages[e-1];{const i=0===t?this.getSpread()[e+1]:this.getSpread()[e-1];return 1===i.length||0===t?this.pages[i[0]]:this.pages[i[1]]}}getBottomPage(t){const e=this.currentSpreadIndex;if(\"portrait\"===this.render.getOrientation())return 0===t?this.pages[e+1]:this.pages[e-1];{const i=0===t?this.getSpread()[e+1]:this.getSpread()[e-1];return 1===i.length?this.pages[i[0]]:0===t?this.pages[i[1]]:this.pages[i[0]]}}showNext(){this.currentSpreadIndex<this.getSpread().length&&(this.currentSpreadIndex++,this.showSpread())}showPrev(){this.currentSpreadIndex>0&&(this.currentSpreadIndex--,this.showSpread())}getCurrentPageIndex(){return this.currentPageIndex}show(t=null){if(null===t&&(t=this.currentPageIndex),t<0||t>=this.pages.length)return;const e=this.getSpreadIndexByPage(t);null!==e&&(this.currentSpreadIndex=e,this.showSpread())}getCurrentSpreadIndex(){return this.currentSpreadIndex}setCurrentSpreadIndex(t){if(!(t>=0&&t<this.getSpread().length))throw new Error(\"Invalid page\");this.currentSpreadIndex=t}showSpread(){const t=this.getSpread()[this.currentSpreadIndex];2===t.length?(this.render.setLeftPage(this.pages[t[0]]),this.render.setRightPage(this.pages[t[1]])):\"landscape\"===this.render.getOrientation()&&t[0]===this.pages.length-1?(this.render.setLeftPage(this.pages[t[0]]),this.render.setRightPage(null)):(this.render.setLeftPage(null),this.render.setRightPage(this.pages[t[0]])),this.currentPageIndex=t[0],this.app.updatePageIndex(this.currentPageIndex)}}class n extends s{constructor(t,e,i){super(t,e),this.imagesHref=i}load(){for(const t of this.imagesHref){const e=new i(this.render,t,\"soft\");e.load(),this.pages.push(e)}this.createSpread()}}class h{static GetDistanceBetweenTwoPoint(t,e){return null===t||null===e?1/0:Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}static GetSegmentLength(t){return h.GetDistanceBetweenTwoPoint(t[0],t[1])}static GetAngleBetweenTwoLine(t,e){const i=t[0].y-t[1].y,s=e[0].y-e[1].y,n=t[1].x-t[0].x,h=e[1].x-e[0].x;return Math.acos((i*s+n*h)/(Math.sqrt(i*i+n*n)*Math.sqrt(s*s+h*h)))}static PointInRect(t,e){return null===e?null:e.x>=t.left&&e.x<=t.width+t.left&&e.y>=t.top&&e.y<=t.top+t.height?e:null}static GetRotatedPoint(t,e,i){return{x:t.x*Math.cos(i)+t.y*Math.sin(i)+e.x,y:t.y*Math.cos(i)-t.x*Math.sin(i)+e.y}}static LimitPointToCircle(t,e,i){if(h.GetDistanceBetweenTwoPoint(t,i)<=e)return i;const s=t.x,n=t.y,r=i.x,o=i.y;let a=Math.sqrt(Math.pow(e,2)*Math.pow(s-r,2)/(Math.pow(s-r,2)+Math.pow(n-o,2)))+s;i.x<0&&(a*=-1);let g=(a-s)*(n-o)/(s-r)+n;return s-r+n===0&&(g=e),{x:a,y:g}}static GetIntersectBetweenTwoSegment(t,e,i){return h.PointInRect(t,h.GetIntersectBeetwenTwoLine(e,i))}static GetIntersectBeetwenTwoLine(t,e){const i=t[0].y-t[1].y,s=e[0].y-e[1].y,n=t[1].x-t[0].x,h=e[1].x-e[0].x,r=t[0].x*t[1].y-t[1].x*t[0].y,o=e[0].x*e[1].y-e[1].x*e[0].y,a=i*o-s*r,g=n*o-h*r,l=-(r*h-o*n)/(i*h-s*n),d=-(i*o-s*r)/(i*h-s*n);if(isFinite(l)&&isFinite(d))return{x:l,y:d};if(Math.abs(a-g)<.1)throw new Error(\"Segment included\");return null}static GetCordsFromTwoPoint(t,e){const i=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y),n=Math.max(i,s),h=[t];function r(t,e,i,s,n){return e>t?t+n*(i/s):e<t?t-n*(i/s):t}for(let o=1;o<=n;o+=1)h.push({x:r(t.x,e.x,i,n,o),y:r(t.y,e.y,s,n,o)});return h}}class r extends e{constructor(t,e,i){super(t,i),this.copiedElement=null,this.temporaryCopy=null,this.isLoad=!1,this.element=e,this.element.classList.add(\"stf__item\"),this.element.classList.add(\"--\"+i)}newTemporaryCopy(){return\"hard\"===this.nowDrawingDensity?this:(null===this.temporaryCopy&&(this.copiedElement=this.element.cloneNode(!0),this.element.parentElement.appendChild(this.copiedElement),this.temporaryCopy=new r(this.render,this.copiedElement,this.nowDrawingDensity)),this.getTemporaryCopy())}getTemporaryCopy(){return this.temporaryCopy}hideTemporaryCopy(){null!==this.temporaryCopy&&(this.copiedElement.remove(),this.copiedElement=null,this.temporaryCopy=null)}draw(t){const e=t||this.nowDrawingDensity,i=this.render.convertToGlobal(this.state.position),s=this.render.getRect().pageWidth,n=this.render.getRect().height;this.element.classList.remove(\"--simple\");const h=`\\n display: block;\\n z-index: ${this.element.style.zIndex};\\n left: 0;\\n top: 0;\\n width: ${s}px;\\n height: ${n}px;\\n `;\"hard\"===e?this.drawHard(h):this.drawSoft(i,h)}drawHard(t=\"\"){const e=this.render.getRect().left+this.render.getRect().width/2,i=this.state.hardDrawingAngle,s=t+\"\\n backface-visibility: hidden;\\n -webkit-backface-visibility: hidden;\\n clip-path: none;\\n -webkit-clip-path: none;\\n \"+(0===this.orientation?`transform-origin: ${this.render.getRect().pageWidth}px 0; \\n transform: translate3d(0, 0, 0) rotateY(${i}deg);`:`transform-origin: 0 0; \\n transform: translate3d(${e}px, 0, 0) rotateY(${i}deg);`);this.element.style.cssText=s}drawSoft(t,e=\"\"){let i=\"polygon( \";for(const t of this.state.area)if(null!==t){let e=1===this.render.getDirection()?{x:-t.x+this.state.position.x,y:t.y-this.state.position.y}:{x:t.x-this.state.position.x,y:t.y-this.state.position.y};e=h.GetRotatedPoint(e,{x:0,y:0},this.state.angle),i+=e.x+\"px \"+e.y+\"px, \"}i=i.slice(0,-2),i+=\")\";const s=e+`transform-origin: 0 0; clip-path: ${i}; -webkit-clip-path: ${i};`+(this.render.isSafari()&&0===this.state.angle?`transform: translate(${t.x}px, ${t.y}px);`:`transform: translate3d(${t.x}px, ${t.y}px, 0) rotate(${this.state.angle}rad);`);this.element.style.cssText=s}simpleDraw(t){const e=this.render.getRect(),i=e.pageWidth,s=e.height,n=1===t?e.left+e.pageWidth:e.left,h=e.top;this.element.classList.add(\"--simple\"),this.element.style.cssText=`\\n position: absolute; \\n display: block; \\n height: ${s}px; \\n left: ${n}px; \\n top: ${h}px; \\n width: ${i}px; \\n z-index: ${this.render.getSettings().startZIndex+1};`}getElement(){return this.element}load(){this.isLoad=!0}setOrientation(t){super.setOrientation(t),this.element.classList.remove(\"--left\",\"--right\"),this.element.classList.add(1===t?\"--right\":\"--left\")}setDrawingDensity(t){this.element.classList.remove(\"--soft\",\"--hard\"),this.element.classList.add(\"--\"+t),super.setDrawingDensity(t)}}class o extends s{constructor(t,e,i,s){super(t,e),this.element=i,this.pagesElement=s}load(){for(const t of this.pagesElement){const e=new r(this.render,t,\"hard\"===t.dataset.density?\"hard\":\"soft\");e.load(),this.pages.push(e)}this.createSpread()}}class a{constructor(t,e,i,s){this.direction=t,this.corner=e,this.topIntersectPoint=null,this.sideIntersectPoint=null,this.bottomIntersectPoint=null,this.pageWidth=parseInt(i,10),this.pageHeight=parseInt(s,10)}calc(t){try{return this.position=this.calcAngleAndPosition(t),this.calculateIntersectPoint(this.position),!0}catch(t){return!1}}getFlippingClipArea(){const t=[];let e=!1;return t.push(this.rect.topLeft),t.push(this.topIntersectPoint),null===this.sideIntersectPoint?e=!0:(t.push(this.sideIntersectPoint),null===this.bottomIntersectPoint&&(e=!1)),t.push(this.bottomIntersectPoint),(e||\"bottom\"===this.corner)&&t.push(this.rect.bottomLeft),t}getBottomClipArea(){const t=[];return t.push(this.topIntersectPoint),\"top\"===this.corner?t.push({x:this.pageWidth,y:0}):(null!==this.topIntersectPoint&&t.push({x:this.pageWidth,y:0}),t.push({x:this.pageWidth,y:this.pageHeight})),null!==this.sideIntersectPoint?h.GetDistanceBetweenTwoPoint(this.sideIntersectPoint,this.topIntersectPoint)>=10&&t.push(this.sideIntersectPoint):\"top\"===this.corner&&t.push({x:this.pageWidth,y:this.pageHeight}),t.push(this.bottomIntersectPoint),t.push(this.topIntersectPoint),t}getAngle(){return 0===this.direction?-this.angle:this.angle}getRect(){return this.rect}getPosition(){return this.position}getActiveCorner(){return 0===this.direction?this.rect.topLeft:this.rect.topRight}getDirection(){return this.direction}getFlippingProgress(){return Math.abs((this.position.x-this.pageWidth)/(2*this.pageWidth)*100)}getCorner(){return this.corner}getBottomPagePosition(){return 1===this.direction?{x:this.pageWidth,y:0}:{x:0,y:0}}getShadowStartPoint(){return\"top\"===this.corner?this.topIntersectPoint:null!==this.sideIntersectPoint?this.sideIntersectPoint:this.topIntersectPoint}getShadowAngle(){const t=h.GetAngleBetweenTwoLine(this.getSegmentToShadowLine(),[{x:0,y:0},{x:this.pageWidth,y:0}]);return 0===this.direction?t:Math.PI-t}calcAngleAndPosition(t){let e=t;if(this.updateAngleAndGeometry(e),e=\"top\"===this.corner?this.checkPositionAtCenterLine(e,{x:0,y:0},{x:0,y:this.pageHeight}):this.checkPositionAtCenterLine(e,{x:0,y:this.pageHeight},{x:0,y:0}),Math.abs(e.x-this.pageWidth)<1&&Math.abs(e.y)<1)throw new Error(\"Point is too small\");return e}updateAngleAndGeometry(t){this.angle=this.calculateAngle(t),this.rect=this.getPageRect(t)}calculateAngle(t){const e=this.pageWidth-t.x+1,i=\"bottom\"===this.corner?this.pageHeight-t.y:t.y;let s=2*Math.acos(e/Math.sqrt(i*i+e*e));i<0&&(s=-s);const n=Math.PI-s;if(!isFinite(s)||n>=0&&n<.003)throw new Error(\"The G point is too small\");return\"bottom\"===this.corner&&(s=-s),s}getPageRect(t){return\"top\"===this.corner?this.getRectFromBasePoint([{x:0,y:0},{x:this.pageWidth,y:0},{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}],t):this.getRectFromBasePoint([{x:0,y:-this.pageHeight},{x:this.pageWidth,y:-this.pageHeight},{x:0,y:0},{x:this.pageWidth,y:0}],t)}getRectFromBasePoint(t,e){return{topLeft:this.getRotatedPoint(t[0],e),topRight:this.getRotatedPoint(t[1],e),bottomLeft:this.getRotatedPoint(t[2],e),bottomRight:this.getRotatedPoint(t[3],e)}}getRotatedPoint(t,e){return{x:t.x*Math.cos(this.angle)+t.y*Math.sin(this.angle)+e.x,y:t.y*Math.cos(this.angle)-t.x*Math.sin(this.angle)+e.y}}calculateIntersectPoint(t){const e={left:-1,top:-1,width:this.pageWidth+2,height:this.pageHeight+2};\"top\"===this.corner?(this.topIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.topRight],[{x:0,y:0},{x:this.pageWidth,y:0}]),this.sideIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.bottomLeft],[{x:this.pageWidth,y:0},{x:this.pageWidth,y:this.pageHeight}]),this.bottomIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.bottomLeft,this.rect.bottomRight],[{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}])):(this.topIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.topLeft,this.rect.topRight],[{x:0,y:0},{x:this.pageWidth,y:0}]),this.sideIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[t,this.rect.topLeft],[{x:this.pageWidth,y:0},{x:this.pageWidth,y:this.pageHeight}]),this.bottomIntersectPoint=h.GetIntersectBetweenTwoSegment(e,[this.rect.bottomLeft,this.rect.bottomRight],[{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}]))}checkPositionAtCenterLine(t,e,i){let s=t;const n=h.LimitPointToCircle(e,this.pageWidth,s);s!==n&&(s=n,this.updateAngleAndGeometry(s));const r=Math.sqrt(Math.pow(this.pageWidth,2)+Math.pow(this.pageHeight,2));let o=this.rect.bottomRight,a=this.rect.topLeft;if(\"bottom\"===this.corner&&(o=this.rect.topRight,a=this.rect.bottomLeft),o.x<=0){const t=h.LimitPointToCircle(i,r,a);t!==s&&(s=t,this.updateAngleAndGeometry(s))}return s}getSegmentToShadowLine(){const t=this.getShadowStartPoint();return[t,t!==this.sideIntersectPoint&&null!==this.sideIntersectPoint?this.sideIntersectPoint:this.bottomIntersectPoint]}}class g{constructor(t,e){this.flippingPage=null,this.bottomPage=null,this.calc=null,this.state=\"read\",this.render=t,this.app=e}fold(t){this.setState(\"user_fold\"),null===this.calc&&this.start(t),this.do(this.render.convertToPage(t))}flip(t){if(this.app.getSettings().disableFlipByClick&&!this.isPointOnCorners(t))return;if(null!==this.calc&&this.render.finishAnimation(),!this.start(t))return;const e=this.getBoundsRect();this.setState(\"flipping\");const i=e.height/10,s=\"bottom\"===this.calc.getCorner()?e.height-i:i,n=\"bottom\"===this.calc.getCorner()?e.height:0;this.calc.calc({x:e.pageWidth-i,y:s}),this.animateFlippingTo({x:e.pageWidth-i,y:s},{x:-e.pageWidth,y:n},!0)}start(t){this.reset();const e=this.render.convertToBook(t),i=this.getBoundsRect(),s=this.getDirectionByPoint(e),n=e.y>=i.height/2?\"bottom\":\"top\";if(!this.checkDirection(s))return!1;try{if(this.flippingPage=this.app.getPageCollection().getFlippingPage(s),this.bottomPage=this.app.getPageCollection().getBottomPage(s),\"landscape\"===this.render.getOrientation())if(1===s){const t=this.app.getPageCollection().nextBy(this.flippingPage);null!==t&&this.flippingPage.getDensity()!==t.getDensity()&&(this.flippingPage.setDrawingDensity(\"hard\"),t.setDrawingDensity(\"hard\"))}else{const t=this.app.getPageCollection().prevBy(this.flippingPage);null!==t&&this.flippingPage.getDensity()!==t.getDensity()&&(this.flippingPage.setDrawingDensity(\"hard\"),t.setDrawingDensity(\"hard\"))}return this.render.setDirection(s),this.calc=new a(s,n,i.pageWidth.toString(10),i.height.toString(10)),!0}catch(t){return!1}}do(t){if(null!==this.calc&&this.calc.calc(t)){const t=this.calc.getFlippingProgress();this.bottomPage.setArea(this.calc.getBottomClipArea()),this.bottomPage.setPosition(this.calc.getBottomPagePosition()),this.bottomPage.setAngle(0),this.bottomPage.setHardAngle(0),this.flippingPage.setArea(this.calc.getFlippingClipArea()),this.flippingPage.setPosition(this.calc.getActiveCorner()),this.flippingPage.setAngle(this.calc.getAngle()),0===this.calc.getDirection()?this.flippingPage.setHardAngle(90*(200-2*t)/100):this.flippingPage.setHardAngle(-90*(200-2*t)/100),this.render.setPageRect(this.calc.getRect()),this.render.setBottomPage(this.bottomPage),this.render.setFlippingPage(this.flippingPage),this.render.setShadowData(this.calc.getShadowStartPoint(),this.calc.getShadowAngle(),t,this.calc.getDirection())}}flipToPage(t,e){const i=this.app.getPageCollection().getCurrentSpreadIndex(),s=this.app.getPageCollection().getSpreadIndexByPage(t);try{s>i&&(this.app.getPageCollection().setCurrentSpreadIndex(s-1),this.flipNext(e)),s<i&&(this.app.getPageCollection().setCurrentSpreadIndex(s+1),this.flipPrev(e))}catch(t){}}flipNext(t){this.flip({x:this.render.getRect().left+2*this.render.getRect().pageWidth-10,y:\"top\"===t?1:this.render.getRect().height-2})}flipPrev(t){this.flip({x:10,y:\"top\"===t?1:this.render.getRect().height-2})}stopMove(){if(null===this.calc)return;const t=this.calc.getPosition(),e=this.getBoundsRect(),i=\"bottom\"===this.calc.getCorner()?e.height:0;t.x<=0?this.animateFlippingTo(t,{x:-e.pageWidth,y:i},!0):this.animateFlippingTo(t,{x:e.pageWidth,y:i},!1)}showCorner(t){if(!this.checkState(\"read\",\"fold_corner\"))return;const e=this.getBoundsRect(),i=e.pageWidth;if(this.isPointOnCorners(t))if(null===this.calc){if(!this.start(t))return;this.setState(\"fold_corner\"),this.calc.calc({x:i-1,y:1});const s=50,n=\"bottom\"===this.calc.getCorner()?e.height-1:1,h=\"bottom\"===this.calc.getCorner()?e.height-s:s;this.animateFlippingTo({x:i-1,y:n},{x:i-s,y:h},!1,!1)}else this.do(this.render.convertToPage(t));else this.setState(\"read\"),this.render.finishAnimation(),this.stopMove()}animateFlippingTo(t,e,i,s=!0){const n=h.GetCordsFromTwoPoint(t,e),r=[];for(const t of n)r.push(()=>this.do(t));const o=this.getAnimationDuration(n.length);this.render.startAnimation(r,o,()=>{this.calc&&(i&&(1===this.calc.getDirection()?this.app.turnToPrevPage():this.app.turnToNextPage()),s&&(this.render.setBottomPage(null),this.render.setFlippingPage(null),this.render.clearShadow(),this.setState(\"read\"),this.reset()))})}getCalculation(){return this.calc}getState(){return this.state}setState(t){this.state!==t&&(this.app.updateState(t),this.state=t)}getDirectionByPoint(t){const e=this.getBoundsRect();if(\"portrait\"===this.render.getOrientation()){if(t.x-e.pageWidth<=e.width/5)return 1}else if(t.x<e.width/2)return 1;return 0}getAnimationDuration(t){const e=this.app.getSettings().flippingTime;return t>=1e3?e:t/1e3*e}checkDirection(t){return 0===t?this.app.getCurrentPageIndex()<this.app.getPageCount()-1:this.app.getCurrentPageIndex()>=1}reset(){this.calc=null,this.flippingPage=null,this.bottomPage=null}getBoundsRect(){return this.render.getRect()}checkState(...t){for(const e of t)if(this.state===e)return!0;return!1}isPointOnCorners(t){const e=this.getBoundsRect(),i=e.pageWidth,s=Math.sqrt(Math.pow(i,2)+Math.pow(e.height,2))/5,n=this.render.convertToBook(t);return n.x>0&&n.y>0&&n.x<e.width&&n.y<e.height&&(n.x<s||n.x>e.width-s)&&(n.y<s||n.y>e.height-s)}}class l{constructor(t,e){this.leftPage=null,this.rightPage=null,this.flippingPage=null,this.bottomPage=null,this.direction=null,this.orientation=null,this.shadow=null,this.animation=null,this.pageRect=null,this.boundsRect=null,this.timer=0,this.safari=!1,this.setting=e,this.app=t;const i=new RegExp(\"Version\\\\/[\\\\d\\\\.]+.*Safari/\");this.safari=null!==i.exec(window.navigator.userAgent)}render(t){if(null!==this.animation){const e=Math.round((t-this.animation.startedAt)/this.animation.durationFrame);e<this.animation.frames.length?this.animation.frames[e]():(this.animation.onAnimateEnd(),this.animation=null)}this.timer=t,this.drawFrame()}start(){this.update();const t=e=>{this.render(e),requestAnimationFrame(t)};requestAnimationFrame(t)}startAnimation(t,e,i){this.finishAnimation(),this.animation={frames:t,duration:e,durationFrame:e/t.length,onAnimateEnd:i,startedAt:this.timer}}finishAnimation(){null!==this.animation&&(this.animation.frames[this.animation.frames.length-1](),null!==this.animation.onAnimateEnd&&this.animation.onAnimateEnd()),this.animation=null}update(){this.boundsRect=null;const t=this.calculateBoundsRect();this.orientation!==t&&(this.orientation=t,this.app.updateOrientation(t))}calculateBoundsRect(){let t=\"landscape\";const e=this.getBlockWidth(),i=e/2,s=this.getBlockHeight()/2,n=this.setting.width/this.setting.height;let h=this.setting.width,r=this.setting.height,o=i-h;return\"stretch\"===this.setting.size?(e<2*this.setting.minWidth&&this.app.getSettings().usePortrait&&(t=\"portrait\"),h=\"portrait\"===t?this.getBlockWidth():this.getBlockWidth()/2,h>this.setting.maxWidth&&(h=this.setting.maxWidth),r=h/n,r>this.getBlockHeight()&&(r=this.getBlockHeight(),h=r*n),o=\"portrait\"===t?i-h/2-h:i-h):e<2*h&&this.app.getSettings().usePortrait&&(t=\"portrait\",o=i-h/2-h),this.boundsRect={left:o,top:s-r/2,width:2*h,height:r,pageWidth:h},t}setShadowData(t,e,i,s){if(!this.app.getSettings().drawShadow)return;const n=100*this.getSettings().maxShadowOpacity;this.shadow={pos:t,angle:e,width:3*this.getRect().pageWidth/4*i/100,opacity:(100-i)*n/100/100,direction:s,progress:2*i}}clearShadow(){this.shadow=null}getBlockWidth(){return this.app.getUI().getDistElement().offsetWidth}getBlockHeight(){return this.app.getUI().getDistElement().offsetHeight}getDirection(){return this.direction}getRect(){return null===this.boundsRect&&this.calculateBoundsRect(),this.boundsRect}getSettings(){return this.app.getSettings()}getOrientation(){return this.orientation}setPageRect(t){this.pageRect=t}setDirection(t){this.direction=t}setRightPage(t){null!==t&&t.setOrientation(1),this.rightPage=t}setLeftPage(t){null!==t&&t.setOrientation(0),this.leftPage=t}setBottomPage(t){null!==t&&t.setOrientation(1===this.direction?0:1),this.bottomPage=t}setFlippingPage(t){null!==t&&t.setOrientation(0===this.direction&&\"portrait\"!==this.orientation?0:1),this.flippingPage=t}convertToBook(t){const e=this.getRect();return{x:t.x-e.left,y:t.y-e.top}}isSafari(){return this.safari}convertToPage(t,e){e||(e=this.direction);const i=this.getRect();return{x:0===e?t.x-i.left-i.width/2:i.width/2-t.x+i.left,y:t.y-i.top}}convertToGlobal(t,e){if(e||(e=this.direction),null==t)return null;const i=this.getRect();return{x:0===e?t.x+i.left+i.width/2:i.width/2-t.x+i.left,y:t.y+i.top}}convertRectToGlobal(t,e){return e||(e=this.direction),{topLeft:this.convertToGlobal(t.topLeft,e),topRight:this.convertToGlobal(t.topRight,e),bottomLeft:this.convertToGlobal(t.bottomLeft,e),bottomRight:this.convertToGlobal(t.bottomRight,e)}}}class d extends l{constructor(t,e,i){super(t,e),this.canvas=i,this.ctx=i.getContext(\"2d\")}getContext(){return this.ctx}reload(){}drawFrame(){this.clear(),\"portrait\"!==this.orientation&&null!=this.leftPage&&this.leftPage.simpleDraw(0),null!=this.rightPage&&this.rightPage.simpleDraw(1),null!=this.bottomPage&&this.bottomPage.draw(),this.drawBookShadow(),null!=this.flippingPage&&this.flippingPage.draw(),null!=this.shadow&&(this.drawOuterShadow(),this.drawInnerShadow());const t=this.getRect();\"portrait\"===this.orientation&&(this.ctx.beginPath(),this.ctx.rect(t.left+t.pageWidth,t.top,t.width,t.height),this.ctx.clip())}drawBookShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath();const e=t.width/20;this.ctx.rect(t.left,t.top,t.width,t.height);const i={x:t.left+t.width/2-e/2,y:0};this.ctx.translate(i.x,i.y);const s=this.ctx.createLinearGradient(0,0,e,0);s.addColorStop(0,\"rgba(0, 0, 0, 0)\"),s.addColorStop(.4,\"rgba(0, 0, 0, 0.2)\"),s.addColorStop(.49,\"rgba(0, 0, 0, 0.1)\"),s.addColorStop(.5,\"rgba(0, 0, 0, 0.5)\"),s.addColorStop(.51,\"rgba(0, 0, 0, 0.4)\"),s.addColorStop(1,\"rgba(0, 0, 0, 0)\"),this.ctx.clip(),this.ctx.fillStyle=s,this.ctx.fillRect(0,0,e,2*t.height),this.ctx.restore()}drawOuterShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(t.left,t.top,t.width,t.height);const e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y});this.ctx.translate(e.x,e.y),this.ctx.rotate(Math.PI+this.shadow.angle+Math.PI/2);const i=this.ctx.createLinearGradient(0,0,this.shadow.width,0);0===this.shadow.direction?(this.ctx.translate(0,-100),i.addColorStop(0,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),i.addColorStop(1,\"rgba(0, 0, 0, 0)\")):(this.ctx.translate(-this.shadow.width,-100),i.addColorStop(0,\"rgba(0, 0, 0, 0)\"),i.addColorStop(1,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\")),this.ctx.clip(),this.ctx.fillStyle=i,this.ctx.fillRect(0,0,this.shadow.width,2*t.height),this.ctx.restore()}drawInnerShadow(){const t=this.getRect();this.ctx.save(),this.ctx.beginPath();const e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y}),i=this.convertRectToGlobal(this.pageRect);this.ctx.moveTo(i.topLeft.x,i.topLeft.y),this.ctx.lineTo(i.topRight.x,i.topRight.y),this.ctx.lineTo(i.bottomRight.x,i.bottomRight.y),this.ctx.lineTo(i.bottomLeft.x,i.bottomLeft.y),this.ctx.translate(e.x,e.y),this.ctx.rotate(Math.PI+this.shadow.angle+Math.PI/2);const s=3*this.shadow.width/4,n=this.ctx.createLinearGradient(0,0,s,0);0===this.shadow.direction?(this.ctx.translate(-s,-100),n.addColorStop(1,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(.9,\"rgba(0, 0, 0, 0.05)\"),n.addColorStop(.7,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(0,\"rgba(0, 0, 0, 0)\")):(this.ctx.translate(0,-100),n.addColorStop(0,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(.1,\"rgba(0, 0, 0, 0.05)\"),n.addColorStop(.3,\"rgba(0, 0, 0, \"+this.shadow.opacity+\")\"),n.addColorStop(1,\"rgba(0, 0, 0, 0)\")),this.ctx.clip(),this.ctx.fillStyle=n,this.ctx.fillRect(0,0,s,2*t.height),this.ctx.restore()}clear(){this.ctx.fillStyle=\"white\",this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height)}}class p{constructor(t,e,i){this.touchPoint=null,this.swipeTimeout=250,this.onResize=()=>{this.update()},this.onMouseDown=t=>{if(this.checkTarget(t.target)){const e=this.getMousePos(t.clientX,t.clientY);this.app.startUserTouch(e),t.preventDefault()}},this.onTouchStart=t=>{if(this.checkTarget(t.target)&&t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);this.touchPoint={point:i,time:Date.now()},setTimeout(()=>{null!==this.touchPoint&&this.app.startUserTouch(i)},this.swipeTimeout),this.app.getSettings().mobileScrollSupport||t.preventDefault()}},this.onMouseUp=t=>{const e=this.getMousePos(t.clientX,t.clientY);this.app.userStop(e)},this.onMouseMove=t=>{const e=this.getMousePos(t.clientX,t.clientY);this.app.userMove(e,!1)},this.onTouchMove=t=>{if(t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);this.app.getSettings().mobileScrollSupport?(null!==this.touchPoint&&(Math.abs(this.touchPoint.point.x-i.x)>10||\"read\"!==this.app.getState())&&t.cancelable&&this.app.userMove(i,!0),\"read\"!==this.app.getState()&&t.preventDefault()):this.app.userMove(i,!0)}},this.onTouchEnd=t=>{if(t.changedTouches.length>0){const e=t.changedTouches[0],i=this.getMousePos(e.clientX,e.clientY);let s=!1;if(null!==this.touchPoint){const t=i.x-this.touchPoint.point.x,e=Math.abs(i.y-this.touchPoint.point.y);Math.abs(t)>this.swipeDistance&&e<2*this.swipeDistance&&Date.now()-this.touchPoint.time<this.swipeTimeout&&(t>0?this.app.flipPrev(this.touchPoint.point.y<this.app.getRender().getRect().height/2?\"top\":\"bottom\"):this.app.flipNext(this.touchPoint.point.y<this.app.getRender().getRect().height/2?\"top\":\"bottom\"),s=!0),this.touchPoint=null}this.app.userStop(i,s)}},this.parentElement=t,t.classList.add(\"stf__parent\"),t.insertAdjacentHTML(\"afterbegin\",'<div class=\"stf__wrapper\"></div>'),this.wrapper=t.querySelector(\".stf__wrapper\"),this.app=e;const s=this.app.getSettings().usePortrait?1:2;t.style.minWidth=i.minWidth*s+\"px\",t.style.minHeight=i.minHeight+\"px\",\"fixed\"===i.size&&(t.style.minWidth=i.width*s+\"px\",t.style.minHeight=i.height+\"px\"),i.autoSize&&(t.style.width=\"100%\",t.style.maxWidth=2*i.maxWidth+\"px\"),t.style.display=\"block\",window.addEventListener(\"resize\",this.onResize,!1),this.swipeDistance=i.swipeDistance}destroy(){this.app.getSettings().useMouseEvents&&this.removeHandlers(),this.distElement.remove(),this.wrapper.remove()}getDistElement(){return this.distElement}getWrapper(){return this.wrapper}setOrientationStyle(t){this.wrapper.classList.remove(\"--portrait\",\"--landscape\"),\"portrait\"===t?(this.app.getSettings().autoSize&&(this.wrapper.style.paddingBottom=this.app.getSettings().height/this.app.getSettings().width*100+\"%\"),this.wrapper.classList.add(\"--portrait\")):(this.app.getSettings().autoSize&&(this.wrapper.style.paddingBottom=this.app.getSettings().height/(2*this.app.getSettings().width)*100+\"%\"),this.wrapper.classList.add(\"--landscape\")),this.update()}removeHandlers(){window.removeEventListener(\"resize\",this.onResize),this.distElement.removeEventListener(\"mousedown\",this.onMouseDown),this.distElement.removeEventListener(\"touchstart\",this.onTouchStart),window.removeEventListener(\"mousemove\",this.onMouseMove),window.removeEventListener(\"touchmove\",this.onTouchMove),window.removeEventListener(\"mouseup\",this.onMouseUp),window.removeEventListener(\"touchend\",this.onTouchEnd)}setHandlers(){window.addEventListener(\"resize\",this.onResize,!1),this.app.getSettings().useMouseEvents&&(this.distElement.addEventListener(\"mousedown\",this.onMouseDown),this.distElement.addEventListener(\"touchstart\",this.onTouchStart),window.addEventListener(\"mousemove\",this.onMouseMove),window.addEventListener(\"touchmove\",this.onTouchMove,{passive:!this.app.getSettings().mobileScrollSupport}),window.addEventListener(\"mouseup\",this.onMouseUp),window.addEventListener(\"touchend\",this.onTouchEnd))}getMousePos(t,e){const i=this.distElement.getBoundingClientRect();return{x:t-i.left,y:e-i.top}}checkTarget(t){return!this.app.getSettings().clickEventForward||![\"a\",\"button\"].includes(t.tagName.toLowerCase())}}class c extends p{constructor(t,e,i,s){super(t,e,i),this.wrapper.insertAdjacentHTML(\"afterbegin\",'<div class=\"stf__block\"></div>'),this.distElement=t.querySelector(\".stf__block\"),this.items=s;for(const t of s)this.distElement.appendChild(t);this.setHandlers()}clear(){for(const t of this.items)this.parentElement.appendChild(t)}updateItems(t){this.removeHandlers(),this.distElement.innerHTML=\"\";for(const e of t)this.distElement.appendChild(e);this.items=t,this.setHandlers()}update(){this.app.getRender().update()}}class u extends p{constructor(t,e,i){super(t,e,i),this.wrapper.innerHTML='<canvas class=\"stf__canvas\"></canvas>',this.canvas=t.querySelectorAll(\"canvas\")[0],this.distElement=this.canvas,this.resizeCanvas(),this.setHandlers()}resizeCanvas(){const t=getComputedStyle(this.canvas),e=parseInt(t.getPropertyValue(\"width\"),10),i=parseInt(t.getPropertyValue(\"height\"),10);this.canvas.width=e,this.canvas.height=i}getCanvas(){return this.canvas}update(){this.resizeCanvas(),this.app.getRender().update()}}class w extends l{constructor(t,e,i){super(t,e),this.outerShadow=null,this.innerShadow=null,this.hardShadow=null,this.hardInnerShadow=null,this.element=i,this.createShadows()}createShadows(){this.element.insertAdjacentHTML(\"beforeend\",'<div class=\"stf__outerShadow\"></div>\\n <div class=\"stf__innerShadow\"></div>\\n <div class=\"stf__hardShadow\"></div>\\n <div class=\"stf__hardInnerShadow\"></div>'),this.outerShadow=this.element.querySelector(\".stf__outerShadow\"),this.innerShadow=this.element.querySelector(\".stf__innerShadow\"),this.hardShadow=this.element.querySelector(\".stf__hardShadow\"),this.hardInnerShadow=this.element.querySelector(\".stf__hardInnerShadow\")}clearShadow(){super.clearShadow(),this.outerShadow.style.cssText=\"display: none\",this.innerShadow.style.cssText=\"display: none\",this.hardShadow.style.cssText=\"display: none\",this.hardInnerShadow.style.cssText=\"display: none\"}reload(){this.element.querySelector(\".stf__outerShadow\")||this.createShadows()}drawHardInnerShadow(){const t=this.getRect(),e=this.shadow.progress>100?200-this.shadow.progress:this.shadow.progress;let i=(100-e)*(2.5*t.pageWidth)/100+20;i>t.pageWidth&&(i=t.pageWidth);let s=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+5).toString(10)};\\n width: ${i}px;\\n height: ${t.height}px;\\n background: linear-gradient(to right,\\n rgba(0, 0, 0, ${this.shadow.opacity*e/100}) 5%,\\n rgba(0, 0, 0, 0) 100%);\\n left: ${t.left+t.width/2}px;\\n transform-origin: 0 0;\\n `;s+=0===this.getDirection()&&this.shadow.progress>100||1===this.getDirection()&&this.shadow.progress<=100?\"transform: translate3d(0, 0, 0);\":\"transform: translate3d(0, 0, 0) rotateY(180deg);\",this.hardInnerShadow.style.cssText=s}drawHardOuterShadow(){const t=this.getRect();let e=(100-(this.shadow.progress>100?200-this.shadow.progress:this.shadow.progress))*(2.5*t.pageWidth)/100+20;e>t.pageWidth&&(e=t.pageWidth);let i=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+4).toString(10)};\\n width: ${e}px;\\n height: ${t.height}px;\\n background: linear-gradient(to left, rgba(0, 0, 0, ${this.shadow.opacity}) 5%, rgba(0, 0, 0, 0) 100%);\\n left: ${t.left+t.width/2}px;\\n transform-origin: 0 0;\\n `;i+=0===this.getDirection()&&this.shadow.progress>100||1===this.getDirection()&&this.shadow.progress<=100?\"transform: translate3d(0, 0, 0) rotateY(180deg);\":\"transform: translate3d(0, 0, 0);\",this.hardShadow.style.cssText=i}drawInnerShadow(){const t=this.getRect(),e=3*this.shadow.width/4,i=0===this.getDirection()?e:0,s=0===this.getDirection()?\"to left\":\"to right\",n=this.convertToGlobal(this.shadow.pos),r=this.shadow.angle+3*Math.PI/2,o=[this.pageRect.topLeft,this.pageRect.topRight,this.pageRect.bottomRight,this.pageRect.bottomLeft];let a=\"polygon( \";for(const t of o){let e=1===this.getDirection()?{x:-t.x+this.shadow.pos.x,y:t.y-this.shadow.pos.y}:{x:t.x-this.shadow.pos.x,y:t.y-this.shadow.pos.y};e=h.GetRotatedPoint(e,{x:i,y:100},r),a+=e.x+\"px \"+e.y+\"px, \"}a=a.slice(0,-2),a+=\")\";const g=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+10).toString(10)};\\n width: ${e}px;\\n height: ${2*t.height}px;\\n background: linear-gradient(${s},\\n rgba(0, 0, 0, ${this.shadow.opacity}) 5%,\\n rgba(0, 0, 0, 0.05) 15%,\\n rgba(0, 0, 0, ${this.shadow.opacity}) 35%,\\n rgba(0, 0, 0, 0) 100%);\\n transform-origin: ${i}px 100px;\\n transform: translate3d(${n.x-i}px, ${n.y-100}px, 0) rotate(${r}rad);\\n clip-path: ${a};\\n -webkit-clip-path: ${a};\\n `;this.innerShadow.style.cssText=g}drawOuterShadow(){const t=this.getRect(),e=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y}),i=this.shadow.angle+3*Math.PI/2,s=1===this.getDirection()?this.shadow.width:0,n=0===this.getDirection()?\"to right\":\"to left\",r=[{x:0,y:0},{x:t.pageWidth,y:0},{x:t.pageWidth,y:t.height},{x:0,y:t.height}];let o=\"polygon( \";for(const t of r)if(null!==t){let e=1===this.getDirection()?{x:-t.x+this.shadow.pos.x,y:t.y-this.shadow.pos.y}:{x:t.x-this.shadow.pos.x,y:t.y-this.shadow.pos.y};e=h.GetRotatedPoint(e,{x:s,y:100},i),o+=e.x+\"px \"+e.y+\"px, \"}o=o.slice(0,-2),o+=\")\";const a=`\\n display: block;\\n z-index: ${(this.getSettings().startZIndex+10).toString(10)};\\n width: ${this.shadow.width}px;\\n height: ${2*t.height}px;\\n background: linear-gradient(${n}, rgba(0, 0, 0, ${this.shadow.opacity}), rgba(0, 0, 0, 0));\\n transform-origin: ${s}px 100px;\\n transform: translate3d(${e.x-s}px, ${e.y-100}px, 0) rotate(${i}rad);\\n clip-path: ${o};\\n -webkit-clip-path: ${o};\\n `;this.outerShadow.style.cssText=a}drawLeftPage(){\"portrait\"!==this.orientation&&null!==this.leftPage&&(1===this.direction&&null!==this.flippingPage&&\"hard\"===this.flippingPage.getDrawingDensity()?(this.leftPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.leftPage.setHardDrawingAngle(180+this.flippingPage.getHardAngle()),this.leftPage.draw(this.flippingPage.getDrawingDensity())):this.leftPage.simpleDraw(0))}drawRightPage(){null!==this.rightPage&&(0===this.direction&&null!==this.flippingPage&&\"hard\"===this.flippingPage.getDrawingDensity()?(this.rightPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.rightPage.setHardDrawingAngle(180+this.flippingPage.getHardAngle()),this.rightPage.draw(this.flippingPage.getDrawingDensity())):this.rightPage.simpleDraw(1))}drawBottomPage(){if(null===this.bottomPage)return;const t=null!=this.flippingPage?this.flippingPage.getDrawingDensity():null;\"portrait\"===this.orientation&&1===this.direction||(this.bottomPage.getElement().style.zIndex=(this.getSettings().startZIndex+3).toString(10),this.bottomPage.draw(t))}drawFrame(){this.clear(),this.drawLeftPage(),this.drawRightPage(),this.drawBottomPage(),null!=this.flippingPage&&(this.flippingPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.flippingPage.draw()),null!=this.shadow&&null!==this.flippingPage&&(\"soft\"===this.flippingPage.getDrawingDensity()?(this.drawOuterShadow(),this.drawInnerShadow()):(this.drawHardOuterShadow(),this.drawHardInnerShadow()))}clear(){for(const t of this.app.getPageCollection().getPages())t!==this.leftPage&&t!==this.rightPage&&t!==this.flippingPage&&t!==this.bottomPage&&(t.getElement().style.cssText=\"display: none\"),t.getTemporaryCopy()!==this.flippingPage&&t.hideTemporaryCopy()}update(){super.update(),null!==this.rightPage&&this.rightPage.setOrientation(1),null!==this.leftPage&&this.leftPage.setOrientation(0)}}class x{constructor(){this._default={startPage:0,size:\"fixed\",width:0,height:0,minWidth:0,maxWidth:0,minHeight:0,maxHeight:0,drawShadow:!0,flippingTime:1e3,usePortrait:!0,startZIndex:0,autoSize:!0,maxShadowOpacity:1,showCover:!1,mobileScrollSupport:!0,swipeDistance:30,clickEventForward:!0,useMouseEvents:!0,showPageCorners:!0,disableFlipByClick:!1}}getSettings(t){const e=this._default;if(Object.assign(e,t),\"stretch\"!==e.size&&\"fixed\"!==e.size)throw new Error('Invalid size type. Available only \"fixed\" and \"stretch\" value');if(e.width<=0||e.height<=0)throw new Error(\"Invalid width or height\");if(e.flippingTime<=0)throw new Error(\"Invalid flipping time\");return\"stretch\"===e.size?(e.minWidth<=0&&(e.minWidth=100),e.maxWidth<e.minWidth&&(e.maxWidth=2e3),e.minHeight<=0&&(e.minHeight=100),e.maxHeight<e.minHeight&&(e.maxHeight=2e3)):(e.minWidth=e.width,e.maxWidth=e.width,e.minHeight=e.height,e.maxHeight=e.height),e}}!function(t,e){void 0===e&&(e={});var i=e.insertAt;if(t&&\"undefined\"!=typeof document){var s=document.head||document.getElementsByTagName(\"head\")[0],n=document.createElement(\"style\");n.type=\"text/css\",\"top\"===i&&s.firstChild?s.insertBefore(n,s.firstChild):s.appendChild(n),n.styleSheet?n.styleSheet.cssText=t:n.appendChild(document.createTextNode(t))}}(\".stf__parent {\\n position: relative;\\n display: block;\\n box-sizing: border-box;\\n transform: translateZ(0);\\n\\n -ms-touch-action: pan-y;\\n touch-action: pan-y;\\n}\\n\\n.sft__wrapper {\\n position: relative;\\n width: 100%;\\n box-sizing: border-box;\\n}\\n\\n.stf__parent canvas {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__block {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n box-sizing: border-box;\\n perspective: 2000px;\\n}\\n\\n.stf__item {\\n display: none;\\n position: absolute;\\n transform-style: preserve-3d;\\n}\\n\\n.stf__outerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__innerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__hardShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\\n\\n.stf__hardInnerShadow {\\n position: absolute;\\n left: 0;\\n top: 0;\\n}\");t.PageFlip=class extends class{constructor(){this.events=new Map}on(t,e){return this.events.has(t)?this.events.get(t).push(e):this.events.set(t,[e]),this}off(t){this.events.delete(t)}trigger(t,e,i=null){if(this.events.has(t))for(const s of this.events.get(t))s({data:i,object:e})}}{constructor(t,e){super(),this.isUserTouch=!1,this.isUserMove=!1,this.setting=null,this.pages=null,this.setting=(new x).getSettings(e),this.block=t}destroy(){this.ui.destroy(),this.block.remove()}update(){this.render.update(),this.pages.show()}loadFromImages(t){this.ui=new u(this.block,this,this.setting);const e=this.ui.getCanvas();this.render=new d(this,this.setting,e),this.flipController=new g(this.render,this),this.pages=new n(this,this.render,t),this.pages.load(),this.render.start(),this.pages.show(this.setting.startPage),setTimeout(()=>{this.ui.update(),this.trigger(\"init\",this,{page:this.setting.startPage,mode:this.render.getOrientation()})},1)}loadFromHTML(t){this.ui=new c(this.block,this,this.setting,t),this.render=new w(this,this.setting,this.ui.getDistElement()),this.flipController=new g(this.render,this),this.pages=new o(this,this.render,this.ui.getDistElement(),t),this.pages.load(),this.render.start(),this.pages.show(this.setting.startPage),setTimeout(()=>{this.ui.update(),this.trigger(\"init\",this,{page:this.setting.startPage,mode:this.render.getOrientation()})},1)}updateFromImages(t){const e=this.pages.getCurrentPageIndex();this.pages.destroy(),this.pages=new n(this,this.render,t),this.pages.load(),this.pages.show(e),this.trigger(\"update\",this,{page:e,mode:this.render.getOrientation()})}updateFromHtml(t){const e=this.pages.getCurrentPageIndex();this.pages.destroy(),this.pages=new o(this,this.render,this.ui.getDistElement(),t),this.pages.load(),this.ui.updateItems(t),this.render.reload(),this.pages.show(e),this.trigger(\"update\",this,{page:e,mode:this.render.getOrientation()})}clear(){this.pages.destroy(),this.ui.clear()}turnToPrevPage(){this.pages.showPrev()}turnToNextPage(){this.pages.showNext()}turnToPage(t){this.pages.show(t)}flipNext(t=\"top\"){this.flipController.flipNext(t)}flipPrev(t=\"top\"){this.flipController.flipPrev(t)}flip(t,e=\"top\"){this.flipController.flipToPage(t,e)}updateState(t){this.trigger(\"changeState\",this,t)}updatePageIndex(t){this.trigger(\"flip\",this,t)}updateOrientation(t){this.ui.setOrientationStyle(t),this.update(),this.trigger(\"changeOrientation\",this,t)}getPageCount(){return this.pages.getPageCount()}getCurrentPageIndex(){return this.pages.getCurrentPageIndex()}getPage(t){return this.pages.getPage(t)}getRender(){return this.render}getFlipController(){return this.flipController}getOrientation(){return this.render.getOrientation()}getBoundsRect(){return this.render.getRect()}getSettings(){return this.setting}getUI(){return this.ui}getState(){return this.flipController.getState()}getPageCollection(){return this.pages}startUserTouch(t){this.mousePosition=t,this.isUserTouch=!0,this.isUserMove=!1}userMove(t,e){this.isUserTouch||e||!this.setting.showPageCorners?this.isUserTouch&&h.GetDistanceBetweenTwoPoint(this.mousePosition,t)>5&&(this.isUserMove=!0,this.flipController.fold(t)):this.flipController.showCorner(t)}userStop(t,e=!1){this.isUserTouch&&(this.isUserTouch=!1,e||(this.isUserMove?this.flipController.stopMove():this.flipController.flip(t)))}},Object.defineProperty(t,\"__esModule\",{value:!0})}));\n","/**\r\n * @license FlipbookEngine v0.6.0\r\n * Copyright (c) 2026 Murat Dogan\r\n *\r\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\r\n *\r\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\r\n * under the terms of the GNU Affero General Public License v3.0.\r\n *\r\n * 2. Commercial License: If you wish to use this software in commercial,\r\n * closed-source, or SaaS products without the AGPLv3 obligations,\r\n * you must purchase a Commercial License from:\r\n * https://flipbookengine.com/pricing\r\n */\r\n\r\n\r\nimport { PageFlip } from 'page-flip';\r\nimport { effect } from '@preact/signals-core';\r\nimport type { FlipbookStore } from '../state/store';\r\nimport type { FlipbookEngineOptions } from '../engine';\r\n\r\nexport function prefersReducedMotion(): boolean {\r\n return typeof window !== 'undefined'\r\n && typeof window.matchMedia === 'function'\r\n && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n}\r\n\r\nexport function resolveFlippingTime(flippingTime?: number, reducedMotion = prefersReducedMotion()): number {\r\n if (reducedMotion) return 0;\r\n return typeof flippingTime === 'number' && flippingTime >= 0 ? flippingTime : 1000;\r\n}\r\nexport class PageFlipAdapter {\r\n private pageFlip: any = null;\r\n private bookContainer: HTMLElement;\r\n private options: FlipbookEngineOptions;\r\n private store: FlipbookStore;\r\n private unsubs: Array<() => void> = [];\r\n private audioEl: HTMLAudioElement | null = null;\r\n private audioUnlockHandler: (() => void) | null = null;\r\n private isLibraryFlipping = false;\r\n private autoPlayTimer: any = null;\r\n private layoutUpdateTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n constructor(bookContainer: HTMLElement, options: FlipbookEngineOptions, store: FlipbookStore) {\r\n this.bookContainer = bookContainer;\r\n this.options = options;\r\n this.store = store;\r\n if (options.soundUrl) {\r\n this.audioEl = new Audio(options.soundUrl);\r\n this.unlockAudio();\r\n }\r\n }\r\n\r\n private unlockAudio() {\r\n if (!this.audioEl) return;\r\n const unlock = () => {\r\n if (this.audioEl) {\r\n const playback = this.audioEl.play();\r\n if (playback && typeof playback.then === 'function') {\r\n playback.then(() => {\r\n this.audioEl!.pause();\r\n this.audioEl!.currentTime = 0;\r\n }).catch(() => {});\r\n }\r\n }\r\n document.removeEventListener('touchstart', unlock);\r\n document.removeEventListener('click', unlock);\r\n this.audioUnlockHandler = null;\r\n };\r\n this.audioUnlockHandler = unlock;\r\n document.addEventListener('touchstart', unlock, { once: true });\r\n document.addEventListener('click', unlock, { once: true });\r\n }\r\n\r\n public init(viewportWidth: number, viewportHeight: number) {\r\n this.pageFlip = new PageFlip(this.bookContainer, {\r\n width: viewportWidth,\r\n height: viewportHeight,\r\n size: \"stretch\" as any,\r\n minWidth: 100,\r\n maxWidth: 3000,\r\n minHeight: 100,\r\n maxHeight: 3000,\r\n drawShadow: true,\r\n showCover: true,\r\n usePortrait: true,\r\n mobileScrollSupport: false,\r\n maxShadowOpacity: this.options.maxShadowOpacity || 0.5,\r\n flippingTime: resolveFlippingTime(this.options.flippingTime)\r\n });\r\n\r\n // Load the HTML pages from the DOM\r\n const pageElements = this.bookContainer.querySelectorAll('.bz-page');\r\n this.pageFlip.loadFromHTML(Array.from(pageElements));\r\n\r\n this.bindEvents();\r\n this.setupSignalSync();\r\n }\r\n\r\n private bindEvents() {\r\n // When the library flips a page, update our signal\r\n this.pageFlip.on('flip', (e: any) => {\r\n // Check if we are not just initializing\r\n if (this.store.currentPage.value !== e.data) {\r\n this.isLibraryFlipping = true;\r\n this.store.currentPage.value = e.data;\r\n this.playSound();\r\n this.isLibraryFlipping = false;\r\n }\r\n });\r\n\r\n // When the library changes state, update our signal\r\n this.pageFlip.on('changeState', (e: any) => {\r\n this.store.flipState.value = e.data;\r\n });\r\n\r\n // When the library changes orientation, update our signal\r\n this.pageFlip.on('changeOrientation', (e: any) => {\r\n if (this.store.orientation.value !== e.data) {\r\n this.store.orientation.value = e.data;\r\n }\r\n });\r\n }\r\n\r\n private setupSignalSync() {\r\n // When our signal changes, tell the library to flip (if needed)\r\n this.unsubs.push(\r\n effect(() => {\r\n const targetPage = this.store.currentPage.value;\r\n const state = this.store.flipState.peek();\r\n if (!this.pageFlip || this.isLibraryFlipping || state !== 'read') return;\r\n\r\n const libCurrentPage = this.pageFlip.getCurrentPageIndex();\r\n if (libCurrentPage !== targetPage && !this.store.isSingleMode.value) {\r\n const getSpreadIndex = (p: number) => p === 0 ? 0 : Math.ceil(p / 2);\r\n const targetSpread = getSpreadIndex(targetPage);\r\n const currentSpread = getSpreadIndex(libCurrentPage);\r\n\r\n if (targetSpread === currentSpread + 1) {\r\n this.pageFlip.flipNext();\r\n } else if (targetSpread === currentSpread - 1) {\r\n this.pageFlip.flipPrev();\r\n } else if (targetSpread !== currentSpread) {\r\n this.pageFlip.turnToPage(targetPage);\r\n }\r\n }\r\n })\r\n );\r\n\r\n // Watch for singleMode changes from DOMWise UI to trigger layout updates\r\n this.unsubs.push(\r\n effect(() => {\r\n this.store.isSingleMode.value;\r\n if (!this.pageFlip) return;\r\n\r\n // We use setTimeout to wait for LayoutManager to update the container dimensions first\r\n if (this.layoutUpdateTimer) clearTimeout(this.layoutUpdateTimer);\r\n this.layoutUpdateTimer = setTimeout(() => {\r\n this.layoutUpdateTimer = null;\r\n if (this.pageFlip) {\r\n this.pageFlip.update();\r\n }\r\n window.dispatchEvent(new Event('resize'));\r\n }, 50);\r\n })\r\n );\r\n\r\n // AutoPlay loop\r\n this.unsubs.push(\r\n effect(() => {\r\n const playing = this.store.isAutoPlaying.value;\r\n const interval = this.store.autoPlayInterval.value || 3000;\r\n\r\n if (this.autoPlayTimer) {\r\n clearInterval(this.autoPlayTimer);\r\n this.autoPlayTimer = null;\r\n }\r\n\r\n if (playing) {\r\n this.autoPlayTimer = setInterval(() => {\r\n // Check if we are at the end\r\n const maxIndex = this.store.pages.value.length - 1;\r\n if (this.store.currentPage.peek() >= maxIndex || (this.store.currentPage.peek() >= maxIndex - 1 && !this.store.isSingleMode.peek())) {\r\n // If at end, pause or loop\r\n // Let's just pause\r\n this.store.isAutoPlaying.value = false;\r\n return;\r\n }\r\n this.turnToNextPage();\r\n }, interval);\r\n }\r\n })\r\n );\r\n }\r\n\r\n public turnToNextPage() {\r\n if (this.store.isSingleMode.value) {\r\n const nextIdx = this.store.currentPage.value + 1;\r\n if (nextIdx < this.store.pages.value.length) {\r\n this.store.currentPage.value = nextIdx;\r\n this.playSound();\r\n }\r\n } else if (this.pageFlip) {\r\n this.pageFlip.flipNext();\r\n }\r\n }\r\n\r\n public turnToPrevPage() {\r\n if (this.store.isSingleMode.value) {\r\n const prevIdx = this.store.currentPage.value - 1;\r\n if (prevIdx >= 0) {\r\n this.store.currentPage.value = prevIdx;\r\n this.playSound();\r\n }\r\n } else if (this.pageFlip) {\r\n this.pageFlip.flipPrev();\r\n }\r\n }\r\n\r\n public playSound() {\r\n if (this.store.soundEnabled.value && this.audioEl) {\r\n this.audioEl.currentTime = 0;\r\n const playback = this.audioEl.play();\r\n if (playback && typeof playback.catch === 'function') {\r\n playback.catch(err => console.warn('Flipbook Audio Play Error:', err));\r\n }\r\n }\r\n }\r\n\r\n public update() {\r\n if (this.pageFlip) {\r\n this.pageFlip.update();\r\n }\r\n if (this.layoutUpdateTimer) {\r\n clearTimeout(this.layoutUpdateTimer);\r\n this.layoutUpdateTimer = null;\r\n }\r\n }\r\n\r\n public destroy() {\r\n if (this.autoPlayTimer) {\r\n clearInterval(this.autoPlayTimer);\r\n this.autoPlayTimer = null;\r\n }\r\n if (this.audioUnlockHandler) {\r\n document.removeEventListener('touchstart', this.audioUnlockHandler);\r\n document.removeEventListener('click', this.audioUnlockHandler);\r\n this.audioUnlockHandler = null;\r\n }\r\n this.unsubs.forEach(unsub => unsub());\r\n this.unsubs = [];\r\n if (this.pageFlip) {\r\n this.pageFlip.destroy();\r\n this.pageFlip = null;\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import { effect } from '@preact/signals-core';\r\nimport type { FlipbookStore } from '../state/store';\r\n\r\n/**\r\n * @license FlipbookEngine v0.6.0\r\n * Copyright (c) 2026 Murat Dogan\r\n *\r\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\r\n *\r\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\r\n * under the terms of the GNU Affero General Public License v3.0.\r\n *\r\n * 2. Commercial License: If you wish to use this software in commercial,\r\n * closed-source, or SaaS products without the AGPLv3 obligations,\r\n * you must purchase a Commercial License from:\r\n * https://flipbookengine.com/pricing\r\n */\r\n\r\n\r\n\r\nexport class LayoutManager {\r\n private wrapperElement: HTMLElement | null = null;\r\n private sizerElement: HTMLElement | null = null;\r\n private pageViewport: { width: number; height: number };\r\n private store: FlipbookStore;\r\n private resizeObserver: ResizeObserver | null = null;\r\n private orientationMediaQuery: MediaQueryList | null = null;\r\n private orientationChangeHandler: ((e: MediaQueryListEvent | MediaQueryList) => void) | null = null;\r\n private unsubs: Array<() => void> = [];\r\n private updateTimer: ReturnType<typeof setTimeout> | null = null;\r\n public onResizeCallback?: () => void;\r\n\r\n constructor(pageViewport: { width: number; height: number }, store: FlipbookStore) {\r\n this.pageViewport = pageViewport;\r\n this.store = store;\r\n }\r\n\r\n public init(wrapperElement: HTMLElement, sizerElement: HTMLElement) {\r\n this.wrapperElement = wrapperElement;\r\n this.sizerElement = sizerElement;\r\n\r\n this.setupResizeObserver();\r\n this.setupOrientationMedia();\r\n this.setupStateSync();\r\n\r\n // Initial update\r\n this.updateBookAspectRatio();\r\n }\r\n\r\n private setupStateSync() {\r\n // When single mode or orientation changes, we need to recalculate the aspect ratio\r\n this.unsubs.push(\r\n effect(() => {\r\n // Accessing signals to track dependencies\r\n this.store.isSingleMode.value;\r\n this.store.orientation.value;\r\n\r\n // Debounce slightly to allow DOM to settle if classes were added\r\n this.scheduleAspectRatioUpdate();\r\n })\r\n );\r\n }\r\n\r\n private setupResizeObserver() {\r\n if (typeof ResizeObserver !== 'undefined' && this.wrapperElement) {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.updateBookAspectRatio();\r\n });\r\n this.resizeObserver.observe(this.wrapperElement);\r\n }\r\n }\r\n\r\n private setupOrientationMedia() {\r\n if (typeof window !== 'undefined' && window.matchMedia) {\r\n this.orientationMediaQuery = window.matchMedia(\"(orientation: portrait)\");\r\n\r\n const handleOrientationChange = (e: MediaQueryListEvent | MediaQueryList) => {\r\n if (e.matches) {\r\n // Mobile device turned to portrait -> force single mode?\r\n // This can be decided by the business logic, for now we just recalculate\r\n }\r\n this.updateBookAspectRatio();\r\n };\r\n\r\n this.orientationChangeHandler = handleOrientationChange;\r\n\r\n // Add listener\r\n if (this.orientationMediaQuery.addEventListener) {\r\n this.orientationMediaQuery.addEventListener('change', handleOrientationChange);\r\n } else {\r\n this.orientationMediaQuery.addListener(handleOrientationChange);\r\n }\r\n\r\n // Call once\r\n handleOrientationChange(this.orientationMediaQuery);\r\n }\r\n }\r\n\r\n public updateBookAspectRatio() {\r\n if (!this.wrapperElement || !this.sizerElement) return;\r\n\r\n const availWidth = this.wrapperElement.clientWidth;\r\n const availHeight = this.wrapperElement.clientHeight;\r\n\r\n if (availWidth === 0 || availHeight === 0) return;\r\n\r\n const width = this.pageViewport.width;\r\n const height = this.pageViewport.height;\r\n\r\n // Standard aspect ratio calculation\r\n const isPhysicalPortrait = availWidth < availHeight;\r\n\r\n // If the library is in landscape mode AND we are not in forced single mode, we need double width\r\n const isDouble = this.store.isDoublePageLayout.value;\r\n const targetRatio = isDouble ? (width * 2) / height : width / height;\r\n\r\n let bookWidth = availWidth;\r\n let bookHeight = availWidth / targetRatio;\r\n\r\n // We must fit the entire book on the screen to prevent unwanted vertical scrolling.\r\n if (bookHeight > availHeight) {\r\n bookHeight = availHeight;\r\n bookWidth = availHeight * targetRatio;\r\n }\r\n\r\n // Apply exact pixel sizes.\r\n // Ensure the width is ALWAYS an EVEN number to prevent sub-pixel rendering gaps.\r\n let finalWidth = Math.ceil(bookWidth);\r\n if (finalWidth % 2 !== 0) finalWidth += 1;\r\n\r\n this.sizerElement.style.width = `${finalWidth}px`;\r\n this.sizerElement.style.height = `${Math.floor(bookHeight)}px`;\r\n this.sizerElement.style.aspectRatio = '';\r\n\r\n if (this.onResizeCallback) {\r\n this.onResizeCallback();\r\n }\r\n }\r\n\r\n public destroy() {\r\n if (this.updateTimer) {\r\n clearTimeout(this.updateTimer);\r\n this.updateTimer = null;\r\n }\r\n this.unsubs.forEach(unsub => unsub());\r\n this.unsubs = [];\r\n\r\n if (this.resizeObserver && this.wrapperElement) {\r\n this.resizeObserver.unobserve(this.wrapperElement);\r\n this.resizeObserver.disconnect();\r\n this.resizeObserver = null;\r\n }\r\n\r\n if (this.orientationMediaQuery) {\r\n if (this.orientationChangeHandler) {\r\n if (this.orientationMediaQuery.removeEventListener) {\r\n this.orientationMediaQuery.removeEventListener('change', this.orientationChangeHandler);\r\n } else {\r\n this.orientationMediaQuery.removeListener(this.orientationChangeHandler);\r\n }\r\n }\r\n this.orientationChangeHandler = null;\r\n this.orientationMediaQuery = null;\r\n }\r\n }\r\n\r\n private scheduleAspectRatioUpdate() {\r\n if (this.updateTimer) clearTimeout(this.updateTimer);\r\n this.updateTimer = setTimeout(() => {\r\n this.updateTimer = null;\r\n this.updateBookAspectRatio();\r\n }, 10);\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","/**\r\n * @license FlipbookEngine v0.6.0\r\n * Copyright (c) 2026 Murat Dogan\r\n *\r\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\r\n *\r\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\r\n * under the terms of the GNU Affero General Public License v3.0.\r\n *\r\n * 2. Commercial License: If you wish to use this software in commercial,\r\n * closed-source, or SaaS products without the AGPLv3 obligations,\r\n * you must purchase a Commercial License from:\r\n * https://flipbookengine.com/pricing\r\n */\r\n\r\n\r\nimport { effect } from '@preact/signals-core';\r\nimport type { FlipbookStore } from '../state/store';\r\nimport type { PageFlipAdapter } from '../adapters/PageFlipAdapter';\r\n\r\nexport class InteractionManager {\r\n private container: HTMLElement;\r\n private pageFlipAdapter: PageFlipAdapter;\r\n private store: FlipbookStore;\r\n private touchStartX: number | null = null;\r\n private unsubs: Array<() => void> = [];\r\n private listenerAbortController: AbortController;\r\n\r\n constructor(container: HTMLElement, pageFlipAdapter: PageFlipAdapter, store: FlipbookStore) {\r\n this.container = container;\r\n this.pageFlipAdapter = pageFlipAdapter;\r\n this.store = store;\r\n const AbortControllerCtor = container.ownerDocument.defaultView?.AbortController ?? globalThis.AbortController;\r\n this.listenerAbortController = new AbortControllerCtor();\r\n }\r\n\r\n public init() {\r\n this.bindWheel();\r\n this.bindMouseDrag();\r\n this.bindTouch();\r\n this.setupStateSync();\r\n }\r\n\r\n private setupStateSync() {\r\n this.unsubs.push(\r\n effect(() => {\r\n this.store.isZoomed.value = this.store.zoomState.value.isActive;\r\n\r\n if (this.store.zoomState.value.isActive) {\r\n this.container.style.transform = `translate(${this.store.zoomState.value.translateX}px, ${this.store.zoomState.value.translateY}px) scale(${this.store.zoomState.value.scale})`;\r\n this.container.style.transition = 'none';\r\n } else {\r\n this.container.style.transform = '';\r\n this.container.style.transition = 'transform 0.3s ease';\r\n }\r\n })\r\n );\r\n }\r\n\r\n private bindWheel() {\r\n this.container.addEventListener('wheel', (e) => {\r\n if (this.store.zoomState.value.isActive) {\r\n e.preventDefault();\r\n this.updateZoomPan(\r\n this.store.zoomState.value.translateX - e.deltaX,\r\n this.store.zoomState.value.translateY - e.deltaY\r\n );\r\n }\r\n }, { passive: false, signal: this.listenerAbortController.signal });\r\n }\r\n\r\n private bindMouseDrag() {\r\n let isDragging = false;\r\n let startX = 0;\r\n let startY = 0;\r\n let initialTx = 0;\r\n let initialTy = 0;\r\n\r\n this.container.addEventListener('mousedown', (e) => {\r\n if (this.store.zoomState.value.isActive) {\r\n isDragging = true;\r\n startX = e.clientX;\r\n startY = e.clientY;\r\n initialTx = this.store.zoomState.value.translateX;\r\n initialTy = this.store.zoomState.value.translateY;\r\n this.container.style.cursor = 'grabbing';\r\n }\r\n }, { signal: this.listenerAbortController.signal });\r\n\r\n window.addEventListener('mousemove', (e) => {\r\n if (!isDragging || !this.store.zoomState.value.isActive) return;\r\n const dx = e.clientX - startX;\r\n const dy = e.clientY - startY;\r\n this.updateZoomPan(initialTx + dx, initialTy + dy);\r\n }, { signal: this.listenerAbortController.signal });\r\n\r\n window.addEventListener('mouseup', () => {\r\n if (isDragging) {\r\n isDragging = false;\r\n this.container.style.cursor = this.store.zoomState.value.isActive ? 'grab' : '';\r\n }\r\n }, { signal: this.listenerAbortController.signal });\r\n }\r\n\r\n private bindTouch() {\r\n let isDragging = false;\r\n let startTx = 0;\r\n let startTy = 0;\r\n\r\n this.container.addEventListener('touchstart', (e) => {\r\n if (e.touches.length === 1) {\r\n if (!this.store.zoomState.value.isActive) {\r\n this.touchStartX = e.touches[0].clientX;\r\n } else {\r\n isDragging = true;\r\n this.touchStartX = e.touches[0].clientX;\r\n const touchStartY = e.touches[0].clientY;\r\n startTx = this.store.zoomState.value.translateX;\r\n startTy = this.store.zoomState.value.translateY;\r\n (this.container as any)._touchStartY = touchStartY;\r\n }\r\n }\r\n }, { passive: true, signal: this.listenerAbortController.signal });\r\n\r\n this.container.addEventListener('touchmove', (e) => {\r\n if (isDragging && this.store.zoomState.value.isActive && e.touches.length === 1 && this.touchStartX !== null) {\r\n e.preventDefault();\r\n const dx = e.touches[0].clientX - this.touchStartX;\r\n const dy = e.touches[0].clientY - (this.container as any)._touchStartY;\r\n this.updateZoomPan(startTx + dx, startTy + dy);\r\n }\r\n }, { passive: false, signal: this.listenerAbortController.signal });\r\n\r\n this.container.addEventListener('touchend', (e) => {\r\n if (this.touchStartX !== null && !this.store.zoomState.value.isActive && this.store.isSingleMode.value && e.changedTouches.length === 1) {\r\n const diffX = e.changedTouches[0].clientX - this.touchStartX;\r\n if (diffX > 50 && this.store.currentPage.value > 0) {\r\n this.pageFlipAdapter.turnToPrevPage();\r\n } else if (diffX < -50 && this.store.currentPage.value < this.store.totalPages.value - 1) {\r\n this.pageFlipAdapter.turnToNextPage();\r\n }\r\n }\r\n this.touchStartX = null;\r\n isDragging = false;\r\n }, { passive: true, signal: this.listenerAbortController.signal });\r\n }\r\n\r\n public zoomIn() {\r\n let newScale = this.store.zoomState.value.scale + 0.5;\r\n if (newScale > 5) newScale = 5;\r\n\r\n this.store.zoomState.value = {\r\n ...this.store.zoomState.value,\r\n isActive: newScale > 1,\r\n scale: newScale\r\n };\r\n if (newScale > 1) {\r\n this.container.style.cursor = 'grab';\r\n }\r\n }\r\n\r\n public zoomOut() {\r\n let newScale = this.store.zoomState.value.scale - 0.5;\r\n if (newScale <= 1) {\r\n newScale = 1;\r\n this.store.zoomState.value = { ...this.store.zoomState.value, isActive: false, translateX: 0, translateY: 0, scale: 1 };\r\n this.container.style.cursor = '';\r\n } else {\r\n this.store.zoomState.value = { ...this.store.zoomState.value, isActive: true, scale: newScale };\r\n }\r\n }\r\n\r\n private updateZoomPan(x: number, y: number) {\r\n this.store.zoomState.value = {\r\n ...this.store.zoomState.value,\r\n translateX: x,\r\n translateY: y\r\n };\r\n }\r\n\r\n public destroy() {\r\n this.listenerAbortController.abort();\r\n this.unsubs.forEach(unsub => unsub());\r\n this.unsubs = [];\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","/**\n * FlipbookEngine\n * Copyright (c) 2026 Murat Dogan\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * https://flipbookengine.com\n */\n\nexport interface FlipbookTocEntry {\n id?: string;\n title: string;\n pageIndex: number;\n children?: FlipbookTocEntry[];\n}\n\nfunction normalizeEntry(entry: FlipbookTocEntry, totalPages: number, id: string): FlipbookTocEntry | null {\n if (!entry || typeof entry.title !== 'string' || !entry.title.trim() || !Number.isFinite(entry.pageIndex)) return null;\n const maxIndex = Math.max(0, totalPages - 1);\n const children = Array.isArray(entry.children)\n ? entry.children.map((child, index) => normalizeEntry(child, totalPages, id + '-' + index)).filter((child): child is FlipbookTocEntry => child !== null)\n : [];\n return {\n id: entry.id ?? id,\n title: entry.title.trim(),\n pageIndex: Math.max(0, Math.min(maxIndex, Math.trunc(entry.pageIndex))),\n ...(children.length ? { children } : {})\n };\n}\n\nexport function normalizeFlipbookToc(entries: FlipbookTocEntry[], totalPages: number): FlipbookTocEntry[] {\n if (!Array.isArray(entries)) return [];\n return entries.map((entry, index) => normalizeEntry(entry, totalPages, 'toc-' + index)).filter((entry): entry is FlipbookTocEntry => entry !== null);\n}","/**\n * @license FlipbookEngine v0.6.0\n * Copyright (c) 2026 Murat Dogan\n *\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n */\nimport { signal, computed, type Signal, type ReadonlySignal } from '@preact/signals-core';\nimport type { FlipbookThemeMode } from '../theme/theme';\nimport type { NormalizedFlipbookPage } from '../model/pages';\nimport { normalizeFlipbookToc, type FlipbookTocEntry } from '../model/toc';\nimport type { FlipbookEngineOptions } from '../engine';\nimport type { PartialFlipbookMessages } from '../i18n/service';\n\nexport type FlipState = 'read' | 'fold_corner' | 'flipping';\nexport type Orientation = 'landscape' | 'portrait';\nexport interface ZoomState { isActive: boolean; translateX: number; translateY: number; isDragging: boolean; scale: number; }\n\nexport interface FlipbookStore {\n currentPage: Signal<number>; totalPages: Signal<number>; isSingleMode: Signal<boolean>;\n showThumbs: Signal<boolean>; showToc: Signal<boolean>; showArrows: Signal<boolean>; orientation: Signal<Orientation>;\n flipState: Signal<FlipState>; themeMode: Signal<FlipbookThemeMode>; allowDownload: Signal<boolean>;\n hasDownloadUrl: Signal<boolean>; primaryColor: Signal<string>; whiteLabel: Signal<boolean>;\n isZoomed: Signal<boolean>; isAutoPlaying: Signal<boolean>; autoPlayInterval: Signal<number>;\n soundEnabled: Signal<boolean>; locale: Signal<string>; messages: Signal<Partial<Record<string, PartialFlipbookMessages>>>; zoomState: Signal<ZoomState>; pages: Signal<NormalizedFlipbookPage[]>; toc: Signal<FlipbookTocEntry[]>;\n isDoublePageLayout: ReadonlySignal<boolean>; isFrontCover: ReadonlySignal<boolean>; isBackCover: ReadonlySignal<boolean>;\n init(options: FlipbookEngineOptions, total: number, mappedPages: NormalizedFlipbookPage[], hasPdfUrl: boolean): void;\n reset(): void;\n}\n\nconst initialZoomState = (): ZoomState => ({ isActive: false, translateX: 0, translateY: 0, isDragging: false, scale: 1 });\n\n/** Creates an isolated reactive state container for one FlipbookEngine instance. */\nexport function createFlipbookStore(): FlipbookStore {\n const currentPage = signal(0), totalPages = signal(0), isSingleMode = signal(false);\n const showThumbs = signal(true), showToc = signal(false), showArrows = signal(true), orientation = signal<Orientation>('landscape');\n const flipState = signal<FlipState>('read'), themeMode = signal<FlipbookThemeMode>('auto');\n const allowDownload = signal(true), hasDownloadUrl = signal(false), primaryColor = signal('#7367f0');\n const whiteLabel = signal(false), isZoomed = signal(false), isAutoPlaying = signal(false);\n const autoPlayInterval = signal(3000), soundEnabled = signal(true);\n const locale = signal('en');\n const messages = signal<Partial<Record<string, PartialFlipbookMessages>>>({});\n const zoomState = signal<ZoomState>(initialZoomState()), pages = signal<NormalizedFlipbookPage[]>([]), toc = signal<FlipbookTocEntry[]>([]);\n const isDoublePageLayout = computed(() => !isSingleMode.value && orientation.value === 'landscape');\n const isFrontCover = computed(() => isDoublePageLayout.value && currentPage.value === 0);\n const isBackCover = computed(() => isDoublePageLayout.value && currentPage.value >= totalPages.value - 1);\n const init = (options: FlipbookEngineOptions, total: number, mappedPages: NormalizedFlipbookPage[], hasPdfUrl: boolean) => {\n totalPages.value = total; pages.value = mappedPages; hasDownloadUrl.value = hasPdfUrl;\n if (options.theme !== undefined) themeMode.value = options.theme;\n if (options.primaryColor !== undefined) primaryColor.value = options.primaryColor;\n if (options.showThumbs !== undefined) showThumbs.value = options.showThumbs;\n if (options.showToc !== undefined) showToc.value = options.showToc;\n toc.value = normalizeFlipbookToc(options.toc ?? [], total);\n if (options.showArrows !== undefined) showArrows.value = options.showArrows;\n if (options.allowDownload !== undefined) allowDownload.value = options.allowDownload;\n if (options.whiteLabel !== undefined) whiteLabel.value = options.whiteLabel;\n if (options.soundEnabled !== undefined) soundEnabled.value = options.soundEnabled;\n if (options.locale !== undefined) locale.value = options.locale;\n if (options.messages !== undefined) messages.value = options.messages;\n if (options.isSingleMode !== undefined) isSingleMode.value = options.isSingleMode;\n if (options.singleMode !== undefined) isSingleMode.value = options.singleMode;\n if (options.autoPlay !== undefined) isAutoPlaying.value = options.autoPlay;\n if (options.autoPlayInterval !== undefined) autoPlayInterval.value = options.autoPlayInterval;\n currentPage.value = 0;\n };\n const reset = () => {\n currentPage.value = 0;\n totalPages.value = 0;\n isSingleMode.value = false;\n showThumbs.value = true;\n showArrows.value = true;\n orientation.value = 'landscape';\n flipState.value = 'read';\n themeMode.value = 'auto';\n allowDownload.value = true;\n hasDownloadUrl.value = false;\n primaryColor.value = '#7367f0';\n whiteLabel.value = false;\n isZoomed.value = false;\n isAutoPlaying.value = false;\n autoPlayInterval.value = 3000;\n soundEnabled.value = true;\n locale.value = 'en';\n messages.value = {};\n zoomState.value = initialZoomState();\n pages.value = [];\r\n toc.value = [];\n };\n return { currentPage, totalPages, isSingleMode, showThumbs, showToc, showArrows, orientation, flipState, themeMode, allowDownload, hasDownloadUrl, primaryColor, whiteLabel, isZoomed, isAutoPlaying, autoPlayInterval, soundEnabled, locale, messages, zoomState, pages, toc, isDoublePageLayout, isFrontCover, isBackCover, init, reset };\n}\n\n// Compatibility exports for consumers of the former internal singleton module.\nconst legacyStore = createFlipbookStore();\nexport const currentPage = legacyStore.currentPage, totalPages = legacyStore.totalPages, isSingleMode = legacyStore.isSingleMode;\nexport const showThumbs = legacyStore.showThumbs, showToc = legacyStore.showToc, showArrows = legacyStore.showArrows, orientation = legacyStore.orientation;\nexport const flipState = legacyStore.flipState, themeMode = legacyStore.themeMode, allowDownload = legacyStore.allowDownload;\nexport const hasDownloadUrl = legacyStore.hasDownloadUrl, primaryColor = legacyStore.primaryColor, whiteLabel = legacyStore.whiteLabel;\nexport const isZoomed = legacyStore.isZoomed, isAutoPlaying = legacyStore.isAutoPlaying, autoPlayInterval = legacyStore.autoPlayInterval;\nexport const soundEnabled = legacyStore.soundEnabled, locale = legacyStore.locale, messages = legacyStore.messages, zoomState = legacyStore.zoomState, pages = legacyStore.pages, toc = legacyStore.toc;\nexport const isDoublePageLayout = legacyStore.isDoublePageLayout, isFrontCover = legacyStore.isFrontCover, isBackCover = legacyStore.isBackCover;\nexport function initStore(options: FlipbookEngineOptions, total: number, mappedPages: NormalizedFlipbookPage[], hasPdfUrl: boolean) { legacyStore.init(options, total, mappedPages, hasPdfUrl); }\n\n\n","/**\r\n * FlipbookEngine\r\n * Copyright (c) 2026 Murat Dogan\r\n * SPDX-License-Identifier: AGPL-3.0-or-later\r\n * https://flipbookengine.com\r\n */\r\n\r\nexport type FlipbookPageKind = 'single' | 'spread' | 'cover';\r\nexport type FlipbookCropMode = 'full' | 'left' | 'right';\r\nexport type FlipbookSplitDirection = 'ltr' | 'rtl';\r\n\r\nexport interface FlipbookPageAsset {\r\n id?: string;\r\n pageNumber?: number;\r\n pageNumbers?: number[];\r\n kind?: FlipbookPageKind;\r\n splitDirection?: FlipbookSplitDirection;\r\n normal: string;\r\n low: string;\r\n thumb: string;\r\n}\r\n\r\nexport interface NormalizedFlipbookPage {\r\n index: number;\r\n assetId: string;\r\n pageNumber: number;\r\n cropMode: FlipbookCropMode;\r\n normal: string;\r\n low: string;\r\n thumb: string;\r\n}\r\n\r\nexport function isFlipbookPageAsset(value: unknown): value is FlipbookPageAsset {\r\n if (!value || typeof value !== 'object') return false;\r\n const candidate = value as FlipbookPageAsset;\r\n return typeof candidate.normal === 'string'\r\n && typeof candidate.low === 'string'\r\n && typeof candidate.thumb === 'string';\r\n}\r\n\r\nfunction getAssetPageNumbers(asset: FlipbookPageAsset): number[] {\r\n if (Array.isArray(asset.pageNumbers) && asset.pageNumbers.length > 0) {\r\n return asset.pageNumbers;\r\n }\r\n\r\n if (typeof asset.pageNumber === 'number') {\r\n if (asset.kind === 'spread') return [asset.pageNumber, asset.pageNumber + 1];\r\n return [asset.pageNumber];\r\n }\r\n\r\n return [];\r\n}\r\n\r\nfunction getSpreadCropModes(splitDirection: FlipbookSplitDirection): FlipbookCropMode[] {\r\n return splitDirection === 'rtl' ? ['right', 'left'] : ['left', 'right'];\r\n}\r\n\r\nexport function normalizeFlipbookPages(assets: FlipbookPageAsset[]): NormalizedFlipbookPage[] {\r\n const normalized: NormalizedFlipbookPage[] = [];\r\n let fallbackPageNumber = 1;\r\n\r\n assets.forEach((asset, assetIndex) => {\r\n const kind = asset.kind ?? 'single';\r\n const assetId = asset.id ?? `asset-${assetIndex}`;\r\n const splitDirection = asset.splitDirection ?? 'ltr';\r\n const pageNumbers = getAssetPageNumbers(asset);\r\n\r\n if (kind === 'spread') {\r\n const spreadNumbers = pageNumbers.length >= 2 ? pageNumbers.slice(0, 2) : [fallbackPageNumber, fallbackPageNumber + 1];\r\n const cropModes = getSpreadCropModes(splitDirection);\r\n\r\n spreadNumbers.forEach((pageNumber, spreadIndex) => {\r\n normalized.push({\r\n index: normalized.length,\r\n assetId,\r\n pageNumber,\r\n cropMode: cropModes[spreadIndex] ?? 'full',\r\n normal: asset.normal,\r\n low: asset.low,\r\n thumb: asset.thumb\r\n });\r\n });\r\n\r\n fallbackPageNumber = spreadNumbers[spreadNumbers.length - 1] + 1;\r\n return;\r\n }\r\n\r\n const pageNumber = pageNumbers[0] ?? fallbackPageNumber;\r\n normalized.push({\r\n index: normalized.length,\r\n assetId,\r\n pageNumber,\r\n cropMode: 'full',\r\n normal: asset.normal,\r\n low: asset.low,\r\n thumb: asset.thumb\r\n });\r\n fallbackPageNumber = pageNumber + 1;\r\n });\r\n\r\n return normalized;\r\n}\r\n","/**\r\n * FlipbookEngine\r\n * Copyright (c) 2026 Murat Dogan\r\n * SPDX-License-Identifier: AGPL-3.0-or-later\r\n * https://flipbookengine.com\r\n */\r\n\r\nexport type FlipbookThemeMode = 'auto' | 'light' | 'dark';\r\n\r\nexport interface ThemeConfiguration {\r\n theme?: FlipbookThemeMode;\r\n primaryColor?: string;\r\n cssVariables?: Record<string, string>;\r\n}\r\n\r\nexport function applyThemeConfiguration(container: HTMLElement, config: ThemeConfiguration) {\r\n container.classList.add('bk-container');\r\n container.classList.remove('bk-theme-light', 'bk-theme-dark');\r\n\r\n if (config.theme === 'light') container.classList.add('bk-theme-light');\r\n if (config.theme === 'dark') container.classList.add('bk-theme-dark');\r\n\r\n if (config.primaryColor) {\r\n container.style.setProperty('--flipbook-accent', config.primaryColor);\r\n }\r\n\r\n const userVariables = config.cssVariables ?? {};\r\n Object.entries(userVariables).forEach(([name, value]) => {\r\n const variableName = name.startsWith('--') ? name : `--${name}`;\r\n container.style.setProperty(variableName, value);\r\n });\r\n}\r\n\r\n","/**\r\n * Small LRU cache for rendered PDF page data URLs.\r\n * The cache is intentionally owned by one PdfRenderer instance so pages from\r\n * different engine instances or documents can never be mixed.\r\n */\r\nexport class PdfRenderCache {\r\n private readonly entries = new Map<number, string>();\r\n private hits = 0;\r\n private misses = 0;\r\n\r\n constructor(private readonly maxEntries: number = 32) {\r\n if (!Number.isInteger(maxEntries) || maxEntries < 0) {\r\n throw new RangeError('PDF render cache size must be a non-negative integer.');\r\n }\r\n }\r\n\r\n public get(pageNumber: number): string | undefined {\r\n const value = this.entries.get(pageNumber);\r\n if (value === undefined) {\r\n this.misses++;\r\n return undefined;\r\n }\r\n this.hits++;\r\n this.entries.delete(pageNumber);\r\n this.entries.set(pageNumber, value);\r\n return value;\r\n }\r\n\r\n public set(pageNumber: number, dataUrl: string): void {\r\n if (this.maxEntries === 0 || !dataUrl) return;\r\n this.entries.delete(pageNumber);\r\n this.entries.set(pageNumber, dataUrl);\r\n while (this.entries.size > this.maxEntries) {\r\n const oldest = this.entries.keys().next().value as number | undefined;\r\n if (oldest === undefined) break;\r\n this.entries.delete(oldest);\r\n }\r\n }\r\n\r\n public clear(): void {\r\n this.entries.clear();\r\n this.hits = 0;\r\n this.misses = 0;\r\n }\r\n\r\n public get size(): number {\r\n return this.entries.size;\r\n }\r\n\r\n public getStats(): { size: number; maxEntries: number; hits: number; misses: number } {\r\n return { size: this.size, maxEntries: this.maxEntries, hits: this.hits, misses: this.misses };\r\n }\r\n}\r\n","import * as pdfjsLib from 'pdfjs-dist';\r\nimport type { NormalizedFlipbookPage } from '../model/pages';\r\nimport { PdfRenderCache } from './PdfRenderCache';\r\n\r\nexport interface PdfRenderProgress { completed: number; total: number; }\r\n\r\nexport interface PdfRenderOptions {\r\n scale?: number;\r\n quality?: number;\r\n format?: string;\r\n workerSrc?: string;\r\n concurrency?: number;\r\n cacheSize?: number;\r\n}\r\n\r\nexport class PdfRenderer {\r\n private pdfDoc: any = null;\r\n private loadingTask: any = null;\r\n private options: Required<PdfRenderOptions>;\r\n private readonly cache: PdfRenderCache;\r\n\r\n constructor(options: PdfRenderOptions = {}) {\r\n const cacheSize = Number.isFinite(options.cacheSize)\r\n ? Math.max(0, Math.floor(options.cacheSize as number))\r\n : 32;\r\n this.options = {\r\n scale: options.scale || 1.5,\r\n quality: options.quality || 0.85,\r\n format: options.format || 'image/webp',\r\n workerSrc: options.workerSrc || '',\r\n concurrency: Math.max(1, Math.floor(options.concurrency || 3)),\r\n cacheSize\r\n };\r\n this.cache = new PdfRenderCache(this.options.cacheSize);\r\n if (this.options.workerSrc) {\r\n pdfjsLib.GlobalWorkerOptions.workerSrc = this.options.workerSrc;\r\n }\r\n }\r\n\r\n /** Loads a PDF document and cancels PDF.js loading when the signal aborts. */\r\n public async loadDocument(pdfUrl: string, signal?: AbortSignal): Promise<number> {\r\n this.throwIfAborted(signal);\r\n this.cache.clear();\r\n const loadingTask = pdfjsLib.getDocument(pdfUrl);\r\n this.loadingTask = loadingTask;\r\n const abortLoading = () => loadingTask.destroy?.();\r\n signal?.addEventListener('abort', abortLoading, { once: true });\r\n try {\r\n this.pdfDoc = await loadingTask.promise;\r\n this.throwIfAborted(signal);\r\n return this.pdfDoc.numPages;\r\n } catch (error) {\r\n if (signal?.aborted) throw this.createAbortError();\r\n throw error;\r\n } finally {\r\n signal?.removeEventListener('abort', abortLoading);\r\n if (this.loadingTask === loadingTask) this.loadingTask = null;\r\n }\r\n }\r\n\r\n /** Renders a specific page to a Data URL. The page index is 1-based. */\r\n public async renderPageToDataUrl(pageIndex: number, signal?: AbortSignal): Promise<string> {\r\n if (!this.pdfDoc) throw new Error('PDF document is not loaded.');\r\n this.throwIfAborted(signal);\r\n const cached = this.cache.get(pageIndex);\r\n if (cached !== undefined) return cached;\r\n\r\n try {\r\n const page = await this.pdfDoc.getPage(pageIndex);\r\n this.throwIfAborted(signal);\r\n const vp = page.getViewport({ scale: this.options.scale });\r\n const canvas = document.createElement('canvas');\r\n canvas.width = vp.width;\r\n canvas.height = vp.height;\r\n const ctx = canvas.getContext('2d');\r\n\r\n if (ctx) {\r\n const renderTask = page.render({ canvasContext: ctx, viewport: vp });\r\n const cancelRender = () => renderTask.cancel?.();\r\n signal?.addEventListener('abort', cancelRender, { once: true });\r\n try {\r\n await renderTask.promise;\r\n this.throwIfAborted(signal);\r\n } finally {\r\n signal?.removeEventListener('abort', cancelRender);\r\n }\r\n const dataUrl = canvas.toDataURL(this.options.format, this.options.quality);\r\n this.cache.set(pageIndex, dataUrl);\r\n return dataUrl;\r\n }\r\n throw new Error('Unable to create a PDF canvas rendering context.');\r\n } catch (error) {\r\n if (signal?.aborted) throw this.createAbortError();\r\n throw error;\r\n }\r\n }\r\n\r\n /** Calculates the best viewport dimensions based on the first page. */\r\n public async calculateViewportDimensions(baseShortSide: number = 420): Promise<{ width: number, height: number }> {\r\n if (!this.pdfDoc) throw new Error('PDF document is not loaded.');\r\n\r\n const firstPage = await this.pdfDoc.getPage(1);\r\n const vp = firstPage.getViewport({ scale: 1.0 });\r\n const aspectRatio = vp.width / vp.height;\r\n\r\n return aspectRatio >= 1\r\n ? { width: Math.round(baseShortSide * aspectRatio), height: baseShortSide }\r\n : { width: baseShortSide, height: Math.round(baseShortSide / aspectRatio) };\r\n }\r\n\r\n /** Renders pages concurrently with a bounded worker pool and preserves page order. */\r\n public async renderAllPages(signal?: AbortSignal, onProgress?: (progress: PdfRenderProgress) => void): Promise<NormalizedFlipbookPage[]> {\r\n if (!this.pdfDoc) return [];\r\n this.throwIfAborted(signal);\r\n\r\n const pageCount = this.pdfDoc.numPages;\r\n const resolvedPages = new Array<NormalizedFlipbookPage>(pageCount);\r\n let nextPage = 1;\r\n let completed = 0;\r\n const renderWorker = async () => {\r\n while (true) {\r\n this.throwIfAborted(signal);\r\n const pageIndex = nextPage++;\r\n if (pageIndex > pageCount) return;\r\n const normalSrc = await this.renderPageToDataUrl(pageIndex, signal);\r\n resolvedPages[pageIndex - 1] = {\r\n index: pageIndex - 1,\r\n assetId: `pdf-page-${pageIndex}`,\r\n pageNumber: pageIndex,\r\n cropMode: 'full',\r\n normal: normalSrc,\r\n low: normalSrc,\r\n thumb: normalSrc\r\n };\r\n completed++;\r\n onProgress?.({ completed, total: pageCount });\r\n }\r\n };\r\n\r\n const workerCount = Math.min(this.options.concurrency, pageCount);\r\n await Promise.all(Array.from({ length: workerCount }, () => renderWorker()));\r\n this.throwIfAborted(signal);\r\n return resolvedPages;\r\n }\r\n\r\n public getCacheStats() {\r\n return this.cache.getStats();\r\n }\r\n\r\n private throwIfAborted(signal?: AbortSignal) {\r\n if (signal?.aborted) throw this.createAbortError();\r\n }\r\n\r\n private createAbortError() {\r\n const error = new Error('PDF rendering was aborted.');\r\n error.name = 'AbortError';\r\n return error;\r\n }\r\n\r\n public destroy() {\r\n this.loadingTask?.destroy?.();\r\n this.loadingTask = null;\r\n if (this.pdfDoc) {\r\n this.pdfDoc.destroy?.();\r\n this.pdfDoc = null;\r\n }\r\n this.cache.clear();\r\n }\r\n}\r\n","/**\n * @license FlipbookEngine v0.6.0\n * Copyright (c) 2026 Murat Dogan\n *\n * This source code is dual-licensed under the AGPLv3 and a Commercial License.\n *\n * 1. Open Source (AGPLv3): You may use, modify, and distribute this software\n * under the terms of the GNU Affero General Public License v3.0.\n *\n * 2. Commercial License: If you wish to use this software in commercial,\n * closed-source, or SaaS products without the AGPLv3 obligations,\n * you must purchase a Commercial License from:\n * https://flipbookengine.com/pricing\n */\nimport * as pdfjsLib from 'pdfjs-dist';\nimport { effect } from '@preact/signals-core';\nimport { App } from './components/App';\nimport { PageFlipAdapter } from './adapters/PageFlipAdapter';\nimport { LayoutManager } from './core/LayoutManager';\nimport { InteractionManager } from './core/InteractionManager';\nimport { createFlipbookStore, type FlipbookStore } from './state/store';\nimport { isFlipbookPageAsset, normalizeFlipbookPages, type FlipbookPageAsset, type NormalizedFlipbookPage } from './model/pages';\nimport { applyThemeConfiguration, type FlipbookThemeMode } from './theme/theme';\nimport { resolveMessages, type FlipbookLocale, type PartialFlipbookMessages } from './i18n/service';\nimport { PdfRenderer } from './core/PdfRenderer';\nimport { normalizeFlipbookToc, type FlipbookTocEntry } from './model/toc';\nimport './styles/flipbook-engine.css';\n\nexport interface FlipbookEngineOptions {\n allowDownload?: boolean;\n showThumbs?: boolean;\n showToc?: boolean;\n toc?: FlipbookTocEntry[];\n showArrows?: boolean;\n primaryColor?: string;\n soundEnabled?: boolean;\n soundUrl?: string;\n flippingTime?: number;\n maxShadowOpacity?: number;\n backgroundColor?: string;\n backgroundImage?: string;\n whiteLabel?: boolean;\n watermarkUrl?: string;\n theme?: FlipbookThemeMode;\n locale?: FlipbookLocale | string;\n messages?: Partial<Record<string, PartialFlipbookMessages>>;\n className?: string;\n cssVariables?: Record<string, string>;\n onDownload?: (url: string) => void;\n singleMode?: boolean;\n isSingleMode?: boolean;\n autoPlay?: boolean;\n autoPlayInterval?: number;\n pdfRenderScale?: number;\n pdfRenderQuality?: number;\n pdfRenderFormat?: string;\n pdfRenderConcurrency?: number;\n pdfRenderCacheSize?: number;\n pdfWorkerSrc?: string;\n}\n\nexport interface PageImages extends FlipbookPageAsset {\n pageNumber: number;\n normal: string;\n low: string;\n thumb: string;\n}\n\nexport interface FlipbookEngineEventMap {\n init: { totalPages: number };\n destroy: undefined;\n pageChange: { currentPage: number; pageNumber: number; totalPages: number; isSingle: boolean };\n zoomChange: { zoom: number; isActive: boolean };\n thumbsToggle: { showThumbs: boolean };\n tocToggle: { showToc: boolean };\n singlePageModeChange: { isSingle: boolean };\n orientationChange: { orientation: 'landscape' | 'portrait' };\n progress: { phase: 'loading' | 'rendering'; completed: number; total: number };\n error: { code: 'PDF_LOAD_FAILED' | 'PDF_RENDER_FAILED'; message: string; cause?: unknown };\n}\n\nexport type FlipbookEngineEventName = keyof FlipbookEngineEventMap;\nexport type FlipbookLocaleMessages = PartialFlipbookMessages | Partial<Record<string, PartialFlipbookMessages>>;\n\ntype FlipbookEventHandler<T extends FlipbookEngineEventName> = (payload: FlipbookEngineEventMap[T]) => void;\ntype AnyFlipbookEventHandler = (payload: FlipbookEngineEventMap[FlipbookEngineEventName]) => void;\n\nexport class FlipbookEngine {\n private static readonly DEFAULT_PAGE_VIEWPORT = { width: 420, height: 594 };\n private container: HTMLElement | null = null;\n private options: FlipbookEngineOptions;\n private store: FlipbookStore = createFlipbookStore();\n\n // Core Managers\n private pageFlipAdapter: PageFlipAdapter | null = null;\n private layoutManager: LayoutManager | null = null;\n private interactionManager: InteractionManager | null = null;\n\n private pdfRenderer: PdfRenderer | null = null;\n private listeners: Partial<Record<FlipbookEngineEventName, Set<AnyFlipbookEventHandler>>> = {};\n private initializationTimer: ReturnType<typeof setTimeout> | null = null;\n private initGeneration = 0;\n private initAbortController: AbortController | null = null;\n private eventsReady = false;\n private lastEventState = { currentPage: 0, zoom: 1, zoomActive: false, showThumbs: true, showToc: false, isSingle: false, orientation: '' as '' | 'landscape' | 'portrait' };\n private eventSyncStop: (() => void) | null = null;\n private qualityObserver: IntersectionObserver | null = null;\n private pdfLazyStop: (() => void) | null = null;\n private hasActiveSession = false;\n private readonly pdfPageRequests = new Map<number, Promise<string>>();\n private readonly pdfRenderedPages = new Set<number>();\n\n constructor(private selector: string | HTMLElement, options: FlipbookEngineOptions = {}) {\n this.options = {\n allowDownload: true,\n showThumbs: true,\n primaryColor: '#7367f0',\n theme: 'auto',\n soundUrl: 'https://flipbookengine.com/Content/page-flip.mp3',\n autoPlayInterval: 3000,\n pdfRenderScale: 1.5,\n pdfRenderQuality: 0.85,\n pdfRenderFormat: 'image/webp',\n pdfRenderConcurrency: 3,\n pdfRenderCacheSize: 32,\n ...options\n };\n this.setupEventSync();\n }\n\n public async init(pdfUrl: string, imageList?: Array<PageImages | FlipbookPageAsset>) {\n if (typeof this.selector === 'string') {\n this.container = document.querySelector(this.selector) as HTMLElement;\n } else {\n this.container = this.selector;\n }\n\n if (!this.container) return;\n\n this.eventsReady = false;\n this.destroy(true);\n const generation = this.initGeneration;\n const abortController = new AbortController();\n this.initAbortController = abortController;\n\n let resolvedPages: NormalizedFlipbookPage[] = [];\n let viewport = { ...FlipbookEngine.DEFAULT_PAGE_VIEWPORT };\n\n if (imageList && imageList.length > 0) {\n if (abortController.signal.aborted) return;\n const sourceAssets = imageList.filter(isFlipbookPageAsset);\n resolvedPages = normalizeFlipbookPages(sourceAssets);\n\n // Resolve aspect ratio from first page\n const referencePage = resolvedPages[0];\n if (referencePage) {\n const size = await this.loadImageSize(referencePage.low || referencePage.normal);\n if (size) {\n const actualWidth = referencePage.cropMode !== 'full' ? size.width / 2 : size.width;\n const aspectRatio = actualWidth / size.height;\n const baseShortSide = 420;\n viewport = aspectRatio >= 1\n ? { width: Math.round(baseShortSide * aspectRatio), height: baseShortSide }\n : { width: baseShortSide, height: Math.round(baseShortSide / aspectRatio) };\n }\n }\n } else if (pdfUrl) {\n if (abortController.signal.aborted) return;\n let pdfStage: 'load' | 'render' = 'load';\n try {\n this.pdfRenderer = new PdfRenderer({\n scale: this.options.pdfRenderScale,\n quality: this.options.pdfRenderQuality,\n format: this.options.pdfRenderFormat,\n concurrency: this.options.pdfRenderConcurrency,\n cacheSize: this.options.pdfRenderCacheSize,\n workerSrc: this.options.pdfWorkerSrc\n });\n\n this.emit('progress', { phase: 'loading', completed: 0, total: 0 });\n const totalPages = await this.pdfRenderer.loadDocument(pdfUrl, abortController.signal);\n pdfStage = 'render';\n this.emit('progress', { phase: 'loading', completed: 1, total: totalPages });\n viewport = await this.pdfRenderer.calculateViewportDimensions();\n resolvedPages = Array.from({ length: totalPages }, (_, index) => this.createPdfPlaceholder(index + 1));\n } catch (e: any) {\n if (!abortController.signal.aborted) {\n console.error(\"PDF load failed:\", e);\n this.emit('error', {\n code: pdfStage === 'load' ? 'PDF_LOAD_FAILED' : 'PDF_RENDER_FAILED',\n message: e instanceof Error ? e.message : 'Unable to load PDF.',\n cause: e\n });\n }\n return;\n }\n }\n\n if (abortController.signal.aborted || generation !== this.initGeneration) return;\n if (!resolvedPages.length) return;\n\n // 1. Initialize State\n this.store.init(this.options, resolvedPages.length, resolvedPages, !!pdfUrl);\n\n // 2. Setup DOM container\n applyThemeConfiguration(this.container, this.options);\n this.container.innerHTML = '';\n\n // 3. Mount App Component\n // In DOMWise, TSX returns actual DOM nodes\n let bookWrapperEl: HTMLElement;\n let bookSizerEl: HTMLElement;\n let bookContainerEl: HTMLElement;\n\n const pageFlipAdapterRef = { current: null as any };\n const interactionManagerRef = { current: null as any };\n\n // Pass refs to capture DOM elements created by DOMWise\n const appNode = App({\n pageFlipAdapterRef,\n interactionManagerRef,\n bookWrapperRef: (el) => bookWrapperEl = el,\n bookSizerRef: (el) => bookSizerEl = el,\n bookContainerRef: (el) => bookContainerEl = el,\n className: this.options.className,\n store: this.store,\n onToggleFullscreen: () => this.toggleFullscreen(),\n onDownload: () => {\n if (!pdfUrl) return;\n if (this.options.onDownload) this.options.onDownload(pdfUrl);\n else window.open(pdfUrl, '_blank');\n }\n });\n\n this.container.appendChild(appNode as unknown as Node);\n this.setupQualityLoading();\n\n // 4. Initialize Core Managers\n this.layoutManager = new LayoutManager(viewport, this.store);\n this.layoutManager.onResizeCallback = () => {\n if (this.pageFlipAdapter) {\n this.pageFlipAdapter.update();\n }\n };\n this.layoutManager.init(bookWrapperEl!, bookSizerEl!);\n\n this.pageFlipAdapter = new PageFlipAdapter(bookContainerEl!, this.options, this.store);\n pageFlipAdapterRef.current = this.pageFlipAdapter;\n\n // Wait a tick for styles to apply before initializing PageFlip.\n // The init promise resolves only after this setup is complete.\n await new Promise<void>((resolve) => {\n const finish = () => {\n abortController.signal.removeEventListener('abort', finish);\n resolve();\n };\n abortController.signal.addEventListener('abort', finish, { once: true });\n this.initializationTimer = setTimeout(async () => {\n this.initializationTimer = null;\n abortController.signal.removeEventListener('abort', finish);\n if (abortController.signal.aborted || generation !== this.initGeneration || !this.pageFlipAdapter) {\n resolve();\n return;\n }\n\n this.pageFlipAdapter.init(viewport.width, viewport.height);\n this.interactionManager = new InteractionManager(bookWrapperEl!, this.pageFlipAdapter, this.store);\n this.interactionManager.init();\n interactionManagerRef.current = this.interactionManager;\n this.setupPdfLazyLoading();\n if (this.pdfRenderer && pdfUrl) {\n try {\n await this.renderPdfPage(1, abortController.signal);\n } catch {\n resolve();\n return;\n }\n }\n if (abortController.signal.aborted || generation !== this.initGeneration) {\n resolve();\n return;\n }\n\n this.eventsReady = true;\n this.captureEventState();\n this.hasActiveSession = true;\n this.emit('init', { totalPages: resolvedPages.length });\n resolve();\n }, 10);\n });\n if (this.initAbortController === abortController) {\n this.initAbortController = null;\n }\n }\n\n private createPdfPlaceholder(pageNumber: number): NormalizedFlipbookPage {\n const placeholder = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\n return {\n index: pageNumber - 1,\n assetId: 'pdf-page-' + pageNumber,\n pageNumber,\n cropMode: 'full',\n normal: placeholder,\n low: placeholder,\n thumb: placeholder\n };\n }\n\n private renderPdfPage(pageNumber: number, signal?: AbortSignal): Promise<string> {\n const renderer = this.pdfRenderer;\n const generation = this.initGeneration;\n if (!renderer) return Promise.resolve('');\n const existing = this.pdfPageRequests.get(pageNumber);\n if (existing) return existing;\n if (this.pdfRenderedPages.has(pageNumber)) return Promise.resolve('');\n\n const request = renderer.renderPageToDataUrl(pageNumber, signal).then((dataUrl) => {\n if (generation !== this.initGeneration || signal?.aborted) throw this.createAbortError();\n if (!dataUrl) throw new Error('PDF page ' + pageNumber + ' produced no image.');\n this.pdfRenderedPages.add(pageNumber);\n this.container?.querySelectorAll<HTMLImageElement>('img[data-pdf-page=\"' + pageNumber + '\"]').forEach((image) => {\n image.src = dataUrl;\n delete image.dataset.pdfPage;\n });\n this.emit('progress', {\n phase: 'rendering',\n completed: this.pdfRenderedPages.size,\n total: this.store.totalPages.value\n });\n return dataUrl;\n }).catch((error) => {\n if (generation !== this.initGeneration && error?.name !== 'AbortError') throw this.createAbortError();\n if (error?.name === 'AbortError') throw error;\n this.emit('error', {\n code: 'PDF_RENDER_FAILED',\n message: error instanceof Error ? error.message : 'Unable to render PDF page.',\n cause: error\n });\n throw error;\n }).finally(() => {\n if (this.pdfPageRequests.get(pageNumber) === request) this.pdfPageRequests.delete(pageNumber);\n });\n this.pdfPageRequests.set(pageNumber, request);\n return request;\n }\n\n private setupPdfLazyLoading() {\n this.pdfLazyStop?.();\n this.pdfLazyStop = null;\n if (!this.pdfRenderer) return;\n this.pdfLazyStop = effect(() => {\n const currentPage = this.store.currentPage.value + 1;\n const totalPages = this.store.totalPages.value;\n [currentPage, currentPage + 1].filter((page) => page <= totalPages).forEach((page) => {\n void this.renderPdfPage(page).catch(() => {});\n });\n });\n }\n private loadImageSize(src: string): Promise<{ width: number; height: number } | null> {\n return new Promise(resolve => {\n const image = new Image();\n image.onload = () => resolve({ width: image.naturalWidth || image.width, height: image.naturalHeight || image.height });\n image.onerror = () => resolve(null);\n image.src = src;\n });\n }\n\n public goToPage(targetIdx: number) {\n const maxIndex = Math.max(0, this.store.totalPages.value - 1);\n this.store.currentPage.value = Math.max(0, Math.min(maxIndex, Math.trunc(targetIdx)));\n }\n\n public getTotalPages(): number {\n return this.store.totalPages.value;\n }\n\n public getCurrentPage(): number {\n return this.store.currentPage.value;\n }\n\n public getZoom(): number {\n return this.store.zoomState.value.scale;\n }\n\n public setZoom(zoomLevel: number) {\n const requestedZoom = Number.isFinite(zoomLevel) ? zoomLevel : 1;\n const scale = Math.max(0.5, Math.min(5, requestedZoom));\n this.store.zoomState.value = {\n ...this.store.zoomState.value,\n scale,\n isActive: scale > 1,\n ...(scale <= 1 ? { translateX: 0, translateY: 0 } : {})\n };\n this.store.isZoomed.value = scale > 1;\n }\n\n public nextPage() {\n if (this.pageFlipAdapter) this.pageFlipAdapter.turnToNextPage();\n }\n\n public toggleFullscreen() {\n const target = this.container;\n if (!target) return;\n if (!document.fullscreenElement) {\n target.requestFullscreen?.().catch((error) => console.warn('Fullscreen err:', error));\n } else {\n document.exitFullscreen?.().catch((error) => console.warn('Exit fullscreen err:', error));\n }\n }\n\n public setLocale(locale: FlipbookLocale | string, messages?: FlipbookLocaleMessages) {\n const mergedMessages = messages\n ? { ...this.options.messages, [locale]: (messages as Partial<Record<string, PartialFlipbookMessages>>)[locale] ?? messages }\n : this.options.messages;\n this.options = { ...this.options, locale, messages: mergedMessages };\n this.store.locale.value = locale;\n if (mergedMessages) this.store.messages.value = mergedMessages;\n }\n public prevPage() {\n if (this.pageFlipAdapter) this.pageFlipAdapter.turnToPrevPage();\n }\n\n public setSingleMode(isSingle: boolean) {\n this.store.isSingleMode.value = isSingle;\n }\n\n public updateOptions(options: Partial<FlipbookEngineOptions>) {\n this.options = { ...this.options, ...options };\n if (options.theme !== undefined) this.store.themeMode.value = options.theme;\n if (options.primaryColor !== undefined) this.store.primaryColor.value = options.primaryColor;\n if (options.showThumbs !== undefined) this.store.showThumbs.value = options.showThumbs;\n if (options.showToc !== undefined) this.store.showToc.value = options.showToc;\n if (options.toc !== undefined) this.store.toc.value = normalizeFlipbookToc(options.toc, this.store.totalPages.value);\n if (options.showArrows !== undefined) this.store.showArrows.value = options.showArrows;\n if (options.allowDownload !== undefined) this.store.allowDownload.value = options.allowDownload;\n if (options.whiteLabel !== undefined) this.store.whiteLabel.value = options.whiteLabel;\n if (options.soundEnabled !== undefined) this.store.soundEnabled.value = options.soundEnabled;\n if (options.locale !== undefined) this.store.locale.value = options.locale;\n if (options.messages !== undefined) this.store.messages.value = options.messages;\n if (options.singleMode !== undefined) this.store.isSingleMode.value = options.singleMode;\n if (options.isSingleMode !== undefined) this.store.isSingleMode.value = options.isSingleMode;\n if (options.autoPlay !== undefined) this.store.isAutoPlaying.value = options.autoPlay;\n if (options.autoPlayInterval !== undefined) this.store.autoPlayInterval.value = options.autoPlayInterval;\n\n if (this.container) {\n applyThemeConfiguration(this.container, this.options);\n }\n }\n\n public async setPages(imageList?: Array<PageImages | FlipbookPageAsset>, pdfUrl?: string) {\n // Framework wrappers call this after their initial render. When no image\n // pages are supplied, the current PDF-backed viewer must stay mounted;\n // reinitializing with an empty source clears an otherwise valid PDF view.\n if (!imageList?.length) {\n if (pdfUrl) {\n await this.init(pdfUrl);\n }\n return;\n }\n\n await this.init(pdfUrl || '', imageList);\n }\n\n private setupQualityLoading() {\n this.teardownQualityLoading();\n if (!this.container) return;\n\n const images = Array.from(this.container.querySelectorAll<HTMLImageElement>('img[data-src], img[data-pdf-page]'));\n const upgrade = (image: HTMLImageElement) => {\n const pdfPage = Number(image.dataset.pdfPage);\n if (Number.isInteger(pdfPage) && pdfPage > 0) {\n void this.renderPdfPage(pdfPage).catch(() => {});\n return;\n }\n const highQualitySrc = image.dataset.src;\n if (!highQualitySrc) return;\n image.src = highQualitySrc;\n delete image.dataset.src;\n };\n\n const Observer = this.container.ownerDocument.defaultView?.IntersectionObserver;\n if (!Observer) {\n const pdfPages = new Set<number>();\n images.forEach((image) => {\n const pdfPage = Number(image.dataset.pdfPage);\n if (Number.isInteger(pdfPage) && pdfPage > 0) {\n if (pdfPages.size < 2) {\n pdfPages.add(pdfPage);\n upgrade(image);\n }\n } else {\n upgrade(image);\n }\n });\n return;\n }\n\n this.qualityObserver = new Observer((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n upgrade(entry.target as HTMLImageElement);\n this.qualityObserver?.unobserve(entry.target);\n }\n });\n }, { root: this.container, rootMargin: '240px' });\n images.forEach((image) => this.qualityObserver?.observe(image));\n }\n\n private teardownQualityLoading() {\n this.qualityObserver?.disconnect();\n this.qualityObserver = null;\n }\n private setupEventSync() {\n this.eventSyncStop = effect(() => {\n const state = {\n currentPage: this.store.currentPage.value,\n zoom: this.store.zoomState.value.scale,\n zoomActive: this.store.zoomState.value.isActive,\n showThumbs: this.store.showThumbs.value,\n showToc: this.store.showToc.value,\n isSingle: this.store.isSingleMode.value,\n orientation: this.store.orientation.value\n };\n if (!this.eventsReady) {\n this.lastEventState = state;\n return;\n }\n if (state.currentPage !== this.lastEventState.currentPage) {\n this.emit('pageChange', {\n currentPage: state.currentPage,\n pageNumber: state.currentPage + 1,\n totalPages: this.store.totalPages.value,\n isSingle: state.isSingle\n });\n }\n if (state.zoom !== this.lastEventState.zoom || state.zoomActive !== this.lastEventState.zoomActive) {\n this.emit('zoomChange', { zoom: state.zoom, isActive: state.zoomActive });\n }\n if (state.showThumbs !== this.lastEventState.showThumbs) {\n this.emit('thumbsToggle', { showThumbs: state.showThumbs });\n }\n if (state.showToc !== this.lastEventState.showToc) {\n this.emit('tocToggle', { showToc: state.showToc });\n }\n if (state.isSingle !== this.lastEventState.isSingle) {\n this.emit('singlePageModeChange', { isSingle: state.isSingle });\n }\n if (state.orientation !== this.lastEventState.orientation) {\n this.emit('orientationChange', { orientation: state.orientation });\n }\n this.lastEventState = state;\n });\n }\n\n private captureEventState() {\n this.lastEventState = {\n currentPage: this.store.currentPage.value,\n zoom: this.store.zoomState.value.scale,\n zoomActive: this.store.zoomState.value.isActive,\n showThumbs: this.store.showThumbs.value,\n showToc: this.store.showToc.value,\n isSingle: this.store.isSingleMode.value,\n orientation: this.store.orientation.value\n };\n }\n public destroy(keepContainer = false) {\n const hadSession = this.hasActiveSession || !!this.initAbortController || !!this.pageFlipAdapter || !!this.layoutManager || !!this.interactionManager || !!this.pdfRenderer;\n this.initGeneration++;\n this.initAbortController?.abort();\n this.initAbortController = null;\n if (this.initializationTimer) {\n clearTimeout(this.initializationTimer);\n this.initializationTimer = null;\n }\n\n if (this.pageFlipAdapter) {\n this.pageFlipAdapter.destroy();\n }\n if (this.layoutManager) {\n this.layoutManager.destroy();\n }\n if (this.interactionManager) {\n this.interactionManager.destroy();\n }\n this.teardownQualityLoading();\n this.pdfLazyStop?.();\n this.pdfLazyStop = null;\n this.pdfPageRequests.clear();\n this.pdfRenderedPages.clear();\n if (this.pdfRenderer) {\n this.pdfRenderer.destroy();\n }\n\n this.pageFlipAdapter = null;\n this.layoutManager = null;\n this.interactionManager = null;\n this.pdfRenderer = null;\n this.eventsReady = false;\n this.hasActiveSession = false;\n this.store.reset();\n\n if (!keepContainer && this.container) {\n this.container.innerHTML = '';\n }\n\n if (hadSession) this.emit('destroy', undefined);\n }\n\n private createAbortError() {\n const error = new Error('Flipbook initialization was aborted.');\n error.name = 'AbortError';\n return error;\n }\n\n public on<T extends FlipbookEngineEventName>(eventName: T, handler: FlipbookEventHandler<T>) {\n const listeners = this.listeners[eventName] ?? new Set<AnyFlipbookEventHandler>();\n listeners.add(handler as AnyFlipbookEventHandler);\n this.listeners[eventName] = listeners;\n return () => this.off(eventName, handler);\n }\n\n public off<T extends FlipbookEngineEventName>(eventName: T, handler: FlipbookEventHandler<T>) {\n this.listeners[eventName]?.delete(handler as AnyFlipbookEventHandler);\n }\n\n private emit<T extends FlipbookEngineEventName>(eventName: T, payload: FlipbookEngineEventMap[T]) {\n this.listeners[eventName]?.forEach((listener) => {\n (listener as FlipbookEventHandler<T>)(payload);\n });\n }\n}\n\nconst globalScope = globalThis as any;\nconst flipbookNamespace = globalScope.FlipbookEngine || {};\nflipbookNamespace.FlipbookEngine = FlipbookEngine;\nglobalScope.FlipbookEngine = flipbookNamespace;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"],"names":["i","t","s","c","h","n","v","r","w","o","e","d","a","l","j","y","_","b","p","g","S","m","x","E","initPropHookSymbol","isElement","val","isString","isNumber","isObject","isComponentClass","isArrayLike","isPropHook","value","isVisibleChild","className","k","isRefObject","maybeRef","setRef","ref","current","initComponentClass","Class","attr","children","instance","node","MathMLNamespace","mathMLOnlyTags","svgOnlyTags","nonPresentationSVGAttributes","SVGNamespace","jsxNamespaceURISymbol","currentNamespaceURI","jsxTypeKeySymbol","shadowRootKey","isShadowRoot","el","disposingListenersSymbol","lifecycleRootSymbol","getDisposingListeners","disposingEventListener","ev","invokeDisposingListeners","opt","disposingListeners","invokeFor","listeners","disposer","addDisposingListener","target","handler","regKey","existing","x2","removeDisposingListener","index","listener","currentLifecycleRoot","args","prev","isSignalLike","obj","SignalObserveArgsImpl","_a","signal2","lifecycleRoot","lifecycleNode","__privateAdd","_SignalObserveArgsImpl_instances","_dispose","_node","__privateSet","__privateGet","__privateMethod","delDispose_fn","addDispose_fn","observeSignal","callback","appendChild","parent","child","fragmentPlaceholderIdx","placeholderPrefix","isPlaceholder","isFragmentWithPlaceholder","replaceNode","oldNode","newNode","wrapAsNode","appendChildrenWithSignal","prevNode","prevNodeNew2","appendChildren","n2","prevNodeNew","shadowRoot","unsignalizePrevClass","item","key","clearPrevClass","prevClassNames","cls","assignClass","applyClassName","newList","prevList","prefixKey","prefix","isUnitlessNumber","rec","prefixes","prop","setStylePropValue","clearPrevStyle","assignStyle","XLinkNamespace","XMLNamespace","normalizeAttribute","s2","separator","match","mappedKeys","assignProp","v2","dataKey","dataValue","useCapture","eventName","eventHandler","attribute","nodeEventPropDisposer","assignProps","props","jsx","tag","ns","values","option","i2","t2","i3","r2","n3","o2","builtInMessages","resolveMessages","config","locale","builtIn","custom","Toolbar","messages","computed","jsxs","total","left","Thumbnails","page","isActive","event","renderEntries","entries","store","onEntryClick","entry","TableOfContents","Viewer","classes","isHard","NavigationArrows","isLeftVisible","isRightVisible","App","handleToggleThumbs","handleToggleToc","handleToggleSingleMode","handleToggleAutoPlay","handleZoomIn","handleZoomOut","handleToggleFullscreen","handleTocEntryClick","pageIndex","handleThumbClick","handleNextPage","handlePrevPage","exports","this","u","prefersReducedMotion","resolveFlippingTime","flippingTime","reducedMotion","PageFlipAdapter","bookContainer","options","__publicField","unlock","playback","viewportWidth","viewportHeight","PageFlip","pageElements","effect","targetPage","state","libCurrentPage","getSpreadIndex","targetSpread","currentSpread","playing","interval","maxIndex","nextIdx","prevIdx","err","unsub","LayoutManager","pageViewport","wrapperElement","sizerElement","handleOrientationChange","availWidth","availHeight","width","height","targetRatio","bookWidth","bookHeight","finalWidth","InteractionManager","container","pageFlipAdapter","AbortControllerCtor","isDragging","startX","startY","initialTx","initialTy","dx","dy","startTx","startTy","touchStartY","diffX","newScale","normalizeEntry","totalPages","id","normalizeFlipbookToc","initialZoomState","createFlipbookStore","currentPage","signal","isSingleMode","showThumbs","showToc","showArrows","orientation","flipState","themeMode","allowDownload","hasDownloadUrl","primaryColor","whiteLabel","isZoomed","isAutoPlaying","autoPlayInterval","soundEnabled","zoomState","pages","toc","isDoublePageLayout","isFrontCover","isBackCover","mappedPages","hasPdfUrl","legacyStore","isFlipbookPageAsset","candidate","getAssetPageNumbers","asset","getSpreadCropModes","splitDirection","normalizeFlipbookPages","assets","normalized","fallbackPageNumber","assetIndex","kind","assetId","pageNumbers","spreadNumbers","cropModes","pageNumber","spreadIndex","applyThemeConfiguration","userVariables","name","variableName","PdfRenderCache","maxEntries","dataUrl","oldest","PdfRenderer","cacheSize","pdfjsLib","pdfUrl","loadingTask","abortLoading","error","cached","vp","canvas","ctx","renderTask","cancelRender","baseShortSide","aspectRatio","onProgress","pageCount","resolvedPages","nextPage","completed","renderWorker","normalSrc","workerCount","_b","_d","_c","_FlipbookEngine","selector","imageList","generation","abortController","viewport","sourceAssets","referencePage","size","pdfStage","bookWrapperEl","bookSizerEl","bookContainerEl","pageFlipAdapterRef","interactionManagerRef","appNode","resolve","finish","placeholder","renderer","request","image","src","targetIdx","zoomLevel","requestedZoom","scale","mergedMessages","isSingle","images","upgrade","pdfPage","highQualitySrc","Observer","pdfPages","keepContainer","hadSession","payload","FlipbookEngine","globalScope","flipbookNamespace"],"mappings":"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","x_google_ignoreList":[0,1,11]}
|