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,28 +1,28 @@
|
|
|
1
|
-
var FlipbookEngine=function(S,C){"use strict";var bi=Object.defineProperty;var xe=S=>{throw TypeError(S)};var Pi=(S,C,I)=>C in S?bi(S,C,{enumerable:!0,configurable:!0,writable:!0,value:I}):S[C]=I;var w=(S,C,I)=>Pi(S,typeof C!="symbol"?C+"":C,I),Bt=(S,C,I)=>C.has(S)||xe("Cannot "+I);var V=(S,C,I)=>(Bt(S,C,"read from private field"),I?I.call(S):C.get(S)),xt=(S,C,I)=>C.has(S)?xe("Cannot add the same private member more than once"):C instanceof WeakSet?C.add(S):C.set(S,I),St=(S,C,I,et)=>(Bt(S,C,"write to private field"),et?et.call(S,I):C.set(S,I),I),lt=(S,C,I)=>(Bt(S,C,"access private method"),I);var at,$,_,_t,Gt,Pe;function I(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const s in e)if(s!=="default"){const o=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(t,s,o.get?o:{enumerable:!0,get:()=>e[s]})}}return t.default=e,Object.freeze(t)}const et=I(C);var Se=Symbol.for("preact-signals");function kt(){if(Z>1)Z--;else{var e,t=!1;for(function(){var r=ut;for(ut=void 0;r!==void 0;)r.S.v===r.v&&(r.S.i=r.i),r=r.o}();it!==void 0;){var s=it;for(it=void 0,dt++;s!==void 0;){var o=s.u;if(s.u=void 0,s.f&=-3,!(8&s.f)&&Vt(s))try{s.c()}catch(r){t||(e=r,t=!0)}s=o}}if(dt=0,Z--,t)throw e}}var T=void 0;function ct(e){var t=T;T=void 0;try{return e()}finally{T=t}}var it=void 0,Z=0,dt=0,jt=0,ut=void 0,gt=0;function Ut(e){if(T!==void 0){var t=e.n;if(t===void 0||t.t!==T)return t={i:0,S:e,p:T.s,n:void 0,t:T,e:void 0,x:void 0,r:t},T.s!==void 0&&(T.s.n=t),T.s=t,e.n=t,32&T.f&&e.S(t),t;if(t.i===-1)return t.i=0,t.n!==void 0&&(t.n.p=t.p,t.p!==void 0&&(t.p.n=t.n),t.p=T.s,t.n=void 0,T.s.n=t,T.s=t),t}}function F(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=t==null?void 0:t.watched,this.Z=t==null?void 0:t.unwatched,this.name=t==null?void 0:t.name}F.prototype.brand=Se,F.prototype.h=function(){return!0},F.prototype.S=function(e){var t=this,s=this.t;s!==e&&e.e===void 0&&(e.x=s,this.t=e,s!==void 0?s.e=e:ct(function(){var o;(o=t.W)==null||o.call(t)}))},F.prototype.U=function(e){var t=this;if(this.t!==void 0){var s=e.e,o=e.x;s!==void 0&&(s.x=o,e.e=void 0),o!==void 0&&(o.e=s,e.x=void 0),e===this.t&&(this.t=o,o===void 0&&ct(function(){var r;(r=t.Z)==null||r.call(t)}))}},F.prototype.subscribe=function(e){var t=this;return B(function(){var s=t.value;ct(function(){return e(s)})},{name:"sub"})},F.prototype.valueOf=function(){return this.value},F.prototype.toString=function(){return this.value+""},F.prototype.toJSON=function(){return this.value},F.prototype.peek=function(){var e=this;return ct(function(){return e.value})},Object.defineProperty(F.prototype,"value",{get:function(){var e=Ut(this);return e!==void 0&&(e.i=this.i),this.v},set:function(e){if(e!==this.v){if(dt>100)throw new Error("Cycle detected");(function(s){Z!==0&&dt===0&&s.l!==jt&&(s.l=jt,ut={S:s,v:s.v,i:s.i,o:ut})})(this),this.v=e,this.i++,gt++,Z++;try{for(var t=this.t;t!==void 0;t=t.x)t.t.N()}finally{kt()}}}});function R(e,t){return new F(e,t)}function Vt(e){for(var t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function Zt(e){for(var t=e.s;t!==void 0;t=t.n){var s=t.S.n;if(s!==void 0&&(t.r=s),t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function qt(e){for(var t=e.s,s=void 0;t!==void 0;){var o=t.p;t.i===-1?(t.S.U(t),o!==void 0&&(o.n=t.n),t.n!==void 0&&(t.n.p=o)):s=t,t.S.n=t.r,t.r!==void 0&&(t.r=void 0),t=o}e.s=s}function q(e,t){F.call(this,void 0,t),this.x=e,this.s=void 0,this.g=gt-1,this.f=4}q.prototype=new F,q.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===gt))return!0;if(this.g=gt,this.f|=1,this.i>0&&!Vt(this))return this.f&=-2,!0;var e=T;try{Zt(this),T=this;var t=this.x();(16&this.f||this.v!==t||this.i===0)&&(this.v=t,this.f&=-17,this.i++)}catch(s){this.v=s,this.f|=16,this.i++}return T=e,qt(this),this.f&=-2,!0},q.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(var t=this.s;t!==void 0;t=t.n)t.S.S(t)}F.prototype.S.call(this,e)},q.prototype.U=function(e){if(this.t!==void 0&&(F.prototype.U.call(this,e),this.t===void 0)){this.f&=-33;for(var t=this.s;t!==void 0;t=t.n)t.S.U(t)}},q.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;e!==void 0;e=e.x)e.t.N()}},Object.defineProperty(q.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var e=Ut(this);if(this.h(),e!==void 0&&(e.i=this.i),16&this.f)throw this.v;return this.v}});function m(e,t){return new q(e,t)}function Xt(e){var t=e.m;if(e.m=void 0,typeof t=="function"){Z++;var s=T;T=void 0;try{t()}catch(o){throw e.f&=-2,e.f|=8,Ct(e),o}finally{T=s,kt()}}}function Ct(e){for(var t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,Xt(e)}function ke(e){if(T!==this)throw new Error("Out-of-order effect");qt(this),T=e,this.f&=-2,8&this.f&&Ct(this),kt()}function K(e,t){this.x=e,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=t==null?void 0:t.name}K.prototype.c=function(){var e=this.S();try{if(8&this.f||this.x===void 0)return;var t=this.x();typeof t=="function"&&(this.m=t)}finally{e()}},K.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,Xt(this),Zt(this),Z++;var e=T;return T=this,ke.bind(this,e)},K.prototype.N=function(){2&this.f||(this.f|=2,this.u=it,it=this)},K.prototype.d=function(){this.f|=8,1&this.f||Ct(this)},K.prototype.dispose=function(){this.d()};function B(e,t){var s=new K(e,t);try{s.c()}catch(r){throw s.d(),r}var o=s.d.bind(s);return o[Symbol.dispose]=o,o}var Yt=Symbol.for("Serenity.initPropHook");function Ce(e){return!!(e&&typeof e.nodeType=="number")}function pt(e){return typeof e=="string"}function Qt(e){return typeof e=="number"}function W(e){return typeof e=="object"&&e!==null}function Te(e){return!!(e&&e.isComponent)}function Tt(e){return W(e)&&typeof e.length=="number"&&typeof e.nodeType!="number"}function Ae(e){return typeof e=="function"&&typeof e[Yt]=="function"}function st(e){return e!=null&&typeof e!="boolean"}function nt(e){return Array.isArray(e)?e.map(nt).filter(Boolean).join(" "):W(e)?Symbol.iterator in e?nt(Array.from(e)):Object.keys(e).filter(t=>e[t]).join(" "):st(e)?""+e:""}function Ee(e){return e!=null&&typeof e=="object"&&"current"in e}function At(e,t){Ee(e)?e.current=t:typeof e=="function"&&e(t)}function Me(e,t,s){t={...t,children:s};const o=new e(t),r=o.render();return"ref"in t&&At(t.ref,o),r}var De="http://www.w3.org/1998/Math/MathML",Re=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"]),Ie=new Set(["animate","animateMotion","animateTransform","circle","clipPath","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","foreignObject","g","image","line","linearGradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","stop","svg","switch","symbol","text","textPath","tref","tspan","use","view"]),Kt=/^(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)/,Le="http://www.w3.org/2000/svg",Jt=Symbol.for("Serenity.jsxNamespaceURI");function ze(e){const t=globalThis[Jt];return arguments.length&&(globalThis[Jt]=e),t}var Fe=Symbol.for("Serenity.jsxTypeKey"),Oe="ShadowRoot";function We(e){return e!=null&&e[Fe]===Oe}var Et=Symbol.for("Serenity.disposingListeners"),Mt=Symbol.for("Serenity.lifecycleRoot");function Dt(){return globalThis[Et]||(globalThis[Et]=new WeakMap)}function Rt(e){e&&e.target&&(!e.currentTarget||e.currentTarget===e.target)&&$e(e==null?void 0:e.target)}function $e(e,t){if(!e)return;const s=Dt();function o(r){const l=s.get(r);if(l){s.delete(r),r.removeEventListener("disposing",Rt);for(const d of l)try{d.callback(r)}catch{}}}o(e)}function It(e,t,s){if(!e||!t)return e;const o=Dt();let r=o.get(e);if(!r)return typeof e.addEventListener!="function"||(o.set(e,r=[{callback:t,regKey:s}]),e.addEventListener("disposing",Rt,{once:!0})),e;const l=r.find(d=>d.callback===t);return l?(l.regKey,e):(r.push({callback:t,regKey:s}),e)}function te(e,t,s){if(!e||!t)return e;const o=Dt(),r=o.get(e);if(r){for(let l=r.length-1;l>=0;l--){const d=r[l];t&&t===d.callback&&r.splice(l,1)}r.length===0&&(o.delete(e),typeof e.removeEventListener=="function"&&e.removeEventListener("disposing",Rt))}return e}function He(...e){if(e.length>0){const t=globalThis[Mt]||null;return globalThis[Mt]=e[0]||null,t}return globalThis[Mt]||null}function X(e){return e!=null&&typeof e=="object"&&typeof e.subscribe=="function"&&typeof e.peek=="function"&&"value"in e}var Ne=(Pe=class{constructor(e,t,s){xt(this,_);xt(this,at);xt(this,$);this.signal=e,this.isInitial=!0,this.hasChanged=!1,this.lifecycleRoot=t,St(this,$,s)}get lifecycleNode(){return V(this,$)}get effectDisposer(){return V(this,at)}set effectDisposer(e){lt(this,_,_t).call(this),St(this,at,e),lt(this,_,Gt).call(this)}set lifecycleNode(e){e!==V(this,$)&&(lt(this,_,_t).call(this),St(this,$,e),lt(this,_,Gt).call(this))}},at=new WeakMap,$=new WeakMap,_=new WeakSet,_t=function(){var e;te(V(this,$),this.effectDisposer),te(V(this,$),(e=this.signal)==null?void 0:e.derivedDisposer)},Gt=function(){var e;It(V(this,$),this.effectDisposer),It(V(this,$),(e=this.signal)==null?void 0:e.derivedDisposer)},Pe);function ot(e,t,s){const o=s!=null&&s.useLifecycleRoot?He():void 0,r=new Ne(e,o,s==null?void 0:s.lifecycleNode),l=r.signal.subscribe(function(d){r.newValue=d,r.isInitial&&(this!=null&&this.dispose)&&(r.effectDisposer=this.dispose.bind(this)),r.hasChanged=!r.isInitial&&r.prevValue!==r.newValue;try{t(r)}finally{r.prevValue=r.newValue,r.isInitial=!1}});return l&&!r.effectDisposer&&(r.effectDisposer=l),r.effectDisposer}function ee(e,t){e instanceof window.HTMLTemplateElement?e.content.appendChild(t):e.appendChild(t)}var Lt=0,zt="__domwisefrag_";function ie(e){return e instanceof Comment&&e.data.startsWith(zt)}function se(e){return e instanceof DocumentFragment&&ie(e.firstChild)}function Be(e,t){var s;typeof e.replaceWith=="function"?e.replaceWith(t):(s=e.parentNode)==null||s.replaceChild(t,e)}function ne(e){return e instanceof DocumentFragment?(++Lt,e.prepend(document.createComment(zt+Lt)),e.append(document.createComment(zt+Lt)),e):e instanceof Node?e:st(e)?document.createTextNode(e):document.createComment("")}function _e(e,t){let s;ot(t,o=>{var d;if(o.isInitial){s=ne(o.newValue);let p=se(s)?s.firstChild:s;ft(e,s),o.lifecycleNode=(s=p)??e;return}if(!o.hasChanged)return;const r=ne(o.newValue);if(ie(s)){let p;for(;(p=s.nextSibling)&&((d=p.parentNode)==null||d.removeChild(p),!(p instanceof Comment&&p.data===s.data)););}let l=se(r)?r.firstChild:r;Be(s,r),o.lifecycleNode=(s=l)??e})}function ft(e,t){if(st(t))if(Tt(t))for(const s of[...t])ft(e,s);else if(pt(t)||Qt(t))ee(e,document.createTextNode(t));else if(Ce(t))ee(e,t);else if(We(t)){const s=e.attachShadow(t.attr);ft(s,t.children),At(t.ref,s)}else X(t)&&_e(e,t)}function oe(e){return e==null||(Tt(e)?e=Array.from(e).map(t=>X(t)?t.peek():t):W(e)&&(e={...e},Object.entries(e).forEach(([t,s])=>{X(s)&&(e[t]=s.peek())}))),e}function Ge(e,t){if(t==null||t===!1||t===!0)return;t=oe(t);const s=(nt(t)??"").split(" ");for(let o of s)o&&e.classList.remove(o)}function je(e,t,s){if(t==null||t===!1){Ge(e,s);return}s=oe(s),Tt(t)?t=Array.from(t).map(o=>{let r=o;return X(o)&&ot(o,l=>{if(l.isInitial){r=l.newValue;return}Ft(e,l.newValue,l.prevValue)},{lifecycleNode:e}),r}):W(t)&&(t={...t},Object.entries(t).forEach(([o,r])=>{X(r)&&ot(r,l=>{if(l.isInitial){t[o]=l.newValue;return}Ft(e,!!l.newValue&&o,!!l.prevValue&&o)},{lifecycleNode:e})})),Ft(e,t,s)}function Ft(e,t,s){const o=(nt(t)??"").split(" ");if(s){const r=(nt(s)??"").split(" ");for(let l of r)l&&!o.includes(l)&&e.classList.remove(l)}for(let r of o)r&&e.classList.add(r)}function Ue(e,t){return e+t.charAt(0).toUpperCase()+t.substring(1)}var Ve=(()=>{let e={animationIterationCount:0,borderImageOutset:0,borderImageSlice:0,borderImageWidth:0,boxFlex:0,boxFlexGroup:0,boxOrdinalGroup:0,columnCount:0,columns:0,flex:0,flexGrow:0,flexPositive:0,flexShrink:0,flexNegative:0,flexOrder:0,gridArea:0,gridRow:0,gridRowEnd:0,gridRowSpan:0,gridRowStart:0,gridColumn:0,gridColumnEnd:0,gridColumnSpan:0,gridColumnStart:0,fontWeight:0,lineClamp:0,lineHeight:0,opacity:0,order:0,orphans:0,tabSize:0,widows:0,zIndex:0,zoom:0,fillOpacity:0,floodOpacity:0,stopOpacity:0,strokeDasharray:0,strokeDashoffset:0,strokeMiterlimit:0,strokeOpacity:0,strokeWidth:0};const t=["Webkit","ms","Moz","O"];return Object.keys(e).forEach(s=>{t.forEach(o=>{e[Ue(o,s)]=0})}),e})();function Ot(e,t,s){t.indexOf("-")===0?e.style.setProperty(t,s):Qt(s)&&Ve[t]!==0?e.style[t]=s+"px":e.style[t]=s}function re(e,t){if(!(t==null||t===!1||t===!0)){if(pt(t)){e.removeAttribute("style");return}W(t)&&Object.keys(t).forEach(s=>{Ot(e,s,"")})}}function Ze(e,t,s){if(t==null||t===!1||t===!0){re(e,s);return}if(pt(t)){e.setAttribute("style",t);return}if(W(t)){W(s)?(t={...t},Object.keys(s).forEach(o=>{o in t||(t[o]="")})):re(e,s),Object.entries(t).forEach(([o,r])=>{X(r)?ot(r,l=>Ot(e,o,l.newValue),{lifecycleNode:e}):Ot(e,o,r)});return}}var qe="http://www.w3.org/1999/xlink",Xe="http://www.w3.org/XML/1998/namespace";function mt(e,t){return e.replace(/[A-Z]/g,s=>t+s.toLowerCase())}var Ye=new Map([["autoComplete","autocomplete"],["autoFocus","autofocus"],["className","class"],["colSpan","colspan"],["contentEditable","contenteditable"],["formNoValidate","formnovalidate"],["htmlFor","for"],["innerText","textContent"],["minLength","minlength"],["maxLength","maxlength"],["readOnly","readonly"],["reffererPolicy","referrerpolicy"],["rowSpan","rowspan"],["spellCheck","spellcheck"],["tabIndex","tabindex"],["onDoubleClick","onDblClick"],["onDoubleClickCapture","onDblClickCapture"]]);function ae(e,t,s,o){switch(t){case"dataset":o!=null&&Object.entries(o).forEach(([l,d])=>{d!=null&&delete e.dataset[l]}),Object.entries(s).forEach(([l,d])=>{d!=null&&(e.dataset[l]=d)});return;case"textContent":st(s)?e[t]=s:st(o)&&(e[t]="");return;case"dangerouslySetInnerHTML":W(s)?e.innerHTML=s.__html:W(o)&&(e.innerHTML="");return;case"value":if(s==null){o!=null&&(e[t]=null);return}else{if(e instanceof window.HTMLSelectElement)return;if(e instanceof window.HTMLTextAreaElement){e.value=s;return}}break;case"class":je(e,s,o);return;case"spellcheck":e.spellcheck=s===""||s===!0||s==="true"?!0:s===!1||s==="false"?!1:s;return;case"draggable":s===!1||s==="false"?s="false":s===""?s=null:(s===!0||s==="true")&&(s="true");break;case"contenteditable":s===!1?s="false":(s===""||s===!0)&&(s="true");break;case"ref":case"namespaceURI":return;case"style":Ze(e,s,o);return;case"on":case"onCapture":const r=t==="onCapture";o!=null&&Object.entries(o).forEach(([l,d])=>{(s==null||s[l]!==d)&&e.removeEventListener(l,d,r)}),Object.entries(s).forEach(([l,d])=>{(o==null||o[l]!==d)&&e.addEventListener(l,d,r)});return;case"xlinkActuate":case"xlinkArcrole":case"xlinkHref":case"xlinkRole":case"xlinkShow":case"xlinkTitle":case"xlinkType":e.setAttributeNS(qe,mt(t,":"),s);return;case"xmlnsXlink":e.setAttribute("xmlns:xlink",s);return;case"xmlBase":case"xmlLang":case"xmlSpace":e.setAttributeNS(Xe,mt(t,":"),s);return}if(typeof s=="function"){if(t[0]==="o"&&t[1]==="n"){if(o!=null&&o===s)return;let r=t.toLowerCase();const l=r.endsWith("capture");let d;!l&&(e[r]===null||o!=null&&e[r]===o)?(e[r]=s,It(e,Ke.bind(e,r))):l?(d=r.substring(2,r.length-7),o!=null&&e.removeEventListener(d,o,!0),e.addEventListener(d,s,!0)):(r in window?d=r.substring(2):d=r[2]+t.slice(3),o!=null&&e.removeEventListener(d,o),e.addEventListener(d,s))}else console.warn(`A function was provided for JSX ${e.tagName} element ${t} which does not start with "on":`,s,e.tagName);return}if(W(o)){if(o===s)return;delete e[t]}if(o===!0){if(o===s)return;e.removeAttribute(t)}if(o!==!1&&o!=null){if(o===s)return;e instanceof SVGElement&&!Kt.test(t)?e.removeAttributeNS(mt(t,"-"),s):e.removeAttribute(t)}if(W(s)){e[t]=s;return}if(s===!0){e.setAttribute(t,"");return}s!==!1&&s!=null&&(e instanceof SVGElement&&!Kt.test(t)?e.setAttribute(mt(t,"-"),s):e.setAttribute(t,s))}function Qe(e,t){for(let[s,o]of Object.entries(t))s=Ye.get(s)??s,X(o)?ot(o,r=>ae(e,s,r.newValue,r.prevValue),{lifecycleNode:e}):Ae(o)?o[Yt](e,s):ae(e,s,o);return e}function Ke(e){this[e]=null}function g(e,t){let{children:s,...o}=t||{},r=o.namespaceURI;r||(Ie.has(e)?r=Le:Re.has(e)?r=De:r=ze());let l;if(pt(e)){if(l=r?document.createElementNS(r,e):document.createElement(e),Qe(l,o),ft(l,s),l instanceof window.HTMLSelectElement&&o.value!=null)if(o.multiple===!0&&Array.isArray(o.value)){const d=o.value.map(p=>String(p));l.querySelectorAll("option").forEach(p=>p.selected=d.includes(p.value))}else l.value=o.value;At(o.ref,l)}else if(typeof e=="function")W(e.defaultProps)&&(o={...e.defaultProps,...o}),l=Te(e)?Me(e,o,s):e({...o,children:s});else throw new TypeError(`Invalid JSX element type: ${e}`);return l}var Je=Symbol.for("preact-signals");function Wt(){if(Y>1)Y--;else{var e,t=!1;for(function(){var r=vt;for(vt=void 0;r!==void 0;)r.S.v===r.v&&(r.S.i=r.i),r=r.o}();rt!==void 0;){var s=rt;for(rt=void 0,wt++;s!==void 0;){var o=s.u;if(s.u=void 0,s.f&=-3,!(8&s.f)&&de(s))try{s.c()}catch(r){t||(e=r,t=!0)}s=o}}if(wt=0,Y--,t)throw e}}var x=void 0;function he(e){var t=x;x=void 0;try{return e()}finally{x=t}}var rt=void 0,Y=0,wt=0,le=0,vt=void 0,yt=0;function ce(e){if(x!==void 0){var t=e.n;if(t===void 0||t.t!==x)return t={i:0,S:e,p:x.s,n:void 0,t:x,e:void 0,x:void 0,r:t},x.s!==void 0&&(x.s.n=t),x.s=t,e.n=t,32&x.f&&e.S(t),t;if(t.i===-1)return t.i=0,t.n!==void 0&&(t.n.p=t.p,t.p!==void 0&&(t.p.n=t.n),t.p=x.s,t.n=void 0,x.s.n=t,x.s=t),t}}function O(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=t==null?void 0:t.watched,this.Z=t==null?void 0:t.unwatched,this.name=t==null?void 0:t.name}O.prototype.brand=Je,O.prototype.h=function(){return!0},O.prototype.S=function(e){var t=this,s=this.t;s!==e&&e.e===void 0&&(e.x=s,this.t=e,s!==void 0?s.e=e:he(function(){var o;(o=t.W)==null||o.call(t)}))},O.prototype.U=function(e){var t=this;if(this.t!==void 0){var s=e.e,o=e.x;s!==void 0&&(s.x=o,e.e=void 0),o!==void 0&&(o.e=s,e.x=void 0),e===this.t&&(this.t=o,o===void 0&&he(function(){var r;(r=t.Z)==null||r.call(t)}))}},O.prototype.subscribe=function(e){var t=this;return ei(function(){var s=t.value,o=x;x=void 0;try{e(s)}finally{x=o}},{name:"sub"})},O.prototype.valueOf=function(){return this.value},O.prototype.toString=function(){return this.value+""},O.prototype.toJSON=function(){return this.value},O.prototype.peek=function(){var e=x;x=void 0;try{return this.value}finally{x=e}},Object.defineProperty(O.prototype,"value",{get:function(){var e=ce(this);return e!==void 0&&(e.i=this.i),this.v},set:function(e){if(e!==this.v){if(wt>100)throw new Error("Cycle detected");(function(s){Y!==0&&wt===0&&s.l!==le&&(s.l=le,vt={S:s,v:s.v,i:s.i,o:vt})})(this),this.v=e,this.i++,yt++,Y++;try{for(var t=this.t;t!==void 0;t=t.x)t.t.N()}finally{Wt()}}}});function de(e){for(var t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function ue(e){for(var t=e.s;t!==void 0;t=t.n){var s=t.S.n;if(s!==void 0&&(t.r=s),t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function ge(e){for(var t=e.s,s=void 0;t!==void 0;){var o=t.p;t.i===-1?(t.S.U(t),o!==void 0&&(o.n=t.n),t.n!==void 0&&(t.n.p=o)):s=t,t.S.n=t.r,t.r!==void 0&&(t.r=void 0),t=o}e.s=s}function J(e,t){O.call(this,void 0),this.x=e,this.s=void 0,this.g=yt-1,this.f=4,this.W=t==null?void 0:t.watched,this.Z=t==null?void 0:t.unwatched,this.name=t==null?void 0:t.name}J.prototype=new O,J.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===yt))return!0;if(this.g=yt,this.f|=1,this.i>0&&!de(this))return this.f&=-2,!0;var e=x;try{ue(this),x=this;var t=this.x();(16&this.f||this.v!==t||this.i===0)&&(this.v=t,this.f&=-17,this.i++)}catch(s){this.v=s,this.f|=16,this.i++}return x=e,ge(this),this.f&=-2,!0},J.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(var t=this.s;t!==void 0;t=t.n)t.S.S(t)}O.prototype.S.call(this,e)},J.prototype.U=function(e){if(this.t!==void 0&&(O.prototype.U.call(this,e),this.t===void 0)){this.f&=-33;for(var t=this.s;t!==void 0;t=t.n)t.S.U(t)}},J.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;e!==void 0;e=e.x)e.t.N()}},Object.defineProperty(J.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var e=ce(this);if(this.h(),e!==void 0&&(e.i=this.i),16&this.f)throw this.v;return this.v}});function pe(e){var t=e.m;if(e.m=void 0,typeof t=="function"){Y++;var s=x;x=void 0;try{t()}catch(o){throw e.f&=-2,e.f|=8,$t(e),o}finally{x=s,Wt()}}}function $t(e){for(var t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,pe(e)}function ti(e){if(x!==this)throw new Error("Out-of-order effect");ge(this),x=e,this.f&=-2,8&this.f&&$t(this),Wt()}function tt(e,t){this.x=e,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=t==null?void 0:t.name}tt.prototype.c=function(){var e=this.S();try{if(8&this.f||this.x===void 0)return;var t=this.x();typeof t=="function"&&(this.m=t)}finally{e()}},tt.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,pe(this),ue(this),Y++;var e=x;return x=this,ti.bind(this,e)},tt.prototype.N=function(){2&this.f||(this.f|=2,this.u=rt,rt=this)},tt.prototype.d=function(){this.f|=8,1&this.f||$t(this)},tt.prototype.dispose=function(){this.d()};function ei(e,t){var s=new tt(e,t);try{s.c()}catch(r){throw s.d(),r}var o=s.d.bind(s);return o[Symbol.dispose]=o,o}const Ht={en:{emptyStateTitle:"No data available.",thumbnails:"Thumbnails",singlePageMode:"Single Page Mode",pages:"Pages",previous:"Previous",next:"Next",zoomOut:"Zoom Out",zoomIn:"Zoom In",fullscreen:"Fullscreen",settings:"Settings",downloadCatalog:"Download Catalog",play:"Play",pause:"Pause"},tr:{emptyStateTitle:"Veri bulunamadi.",thumbnails:"Küçük Resimler",singlePageMode:"Tek Sayfa Modu",pages:"Sayfalar",previous:"Önceki",next:"Sonraki",zoomOut:"Uzaklaş",zoomIn:"Yaklaş",fullscreen:"Tam Ekran",settings:"Ayarlar",downloadCatalog:"Kataloğu İndir",play:"Otomatik Oynat",pause:"Duraklat"}};function ii(e={}){var r;const t=e.locale??"en",s=Ht[t]??Ht.en,o=((r=e.messages)==null?void 0:r[t])??{};return{...Ht.en,...s,...o}}function si(e){const t=m(()=>ii({locale:e.store.locale.value,messages:e.store.messages.value}));return g("div",{class:"bk-toolbar",role:"toolbar","aria-label":"Flipbook controls",children:[g("div",{class:"bk-btn-group",children:[g("button",{type:"button",class:m(()=>`bk-btn ${e.store.showThumbs.value?"active":""}`),onClick:e.onToggleThumbs,"aria-label":m(()=>t.value.thumbnails||"Thumbnails"),"aria-pressed":m(()=>e.store.showThumbs.value?"true":"false"),title:m(()=>t.value.thumbnails||"Thumbnails"),children:g("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",children:[g("rect",{x:"3",y:"3",width:"7",height:"7"}),g("rect",{x:"14",y:"3",width:"7",height:"7"}),g("rect",{x:"14",y:"14",width:"7",height:"7"}),g("rect",{x:"3",y:"14",width:"7",height:"7"})]})}),g("button",{type:"button",class:m(()=>`bk-btn bz-hide-mobile ${e.store.isSingleMode.value?"active":""}`),onClick:e.onToggleSingleMode,"aria-label":m(()=>t.value.singlePageMode||"Single Page"),"aria-pressed":m(()=>e.store.isSingleMode.value?"true":"false"),title:m(()=>t.value.singlePageMode||"Single Page"),children:g("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",children:[g("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),g("polyline",{points:"14 2 14 8 20 8"}),g("line",{x1:"16",y1:"13",x2:"8",y2:"13"}),g("line",{x1:"16",y1:"17",x2:"8",y2:"17"}),g("polyline",{points:"10 9 9 9 8 9"})]})}),g("button",{type:"button",class:m(()=>`bk-btn ${e.store.isAutoPlaying.value?"active":""}`),onClick:e.onToggleAutoPlay,"aria-label":m(()=>e.store.isAutoPlaying.value?t.value.pause||"Pause":t.value.play||"Play"),"aria-pressed":m(()=>e.store.isAutoPlaying.value?"true":"false"),title:m(()=>e.store.isAutoPlaying.value?t.value.pause||"Pause":t.value.play||"Play"),children:[g("svg",{style:{display:m(()=>e.store.isAutoPlaying.value?"block":"none")},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",children:[g("rect",{x:"6",y:"4",width:"4",height:"16"}),g("rect",{x:"14",y:"4",width:"4",height:"16"})]}),g("svg",{style:{display:m(()=>e.store.isAutoPlaying.value?"none":"block")},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",children:g("polygon",{points:"5 3 19 12 5 21 5 3"})})]})]}),g("div",{class:"bk-btn-group bk-btn-group--center",children:[g("button",{type:"button",class:"bk-btn",onClick:e.onPrevPage,"aria-label":m(()=>t.value.previous||"Previous"),title:m(()=>t.value.previous||"Previous"),children:g("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",children:g("polyline",{points:"15 18 9 12 15 6"})})}),g("span",{class:"bz-page-info","aria-live":"polite","aria-atomic":"true",children:m(()=>{const s=e.store.currentPage.value,o=e.store.totalPages.value;if(e.store.isSingleMode.value||s===0||s>=o-1)return`${s+1} / ${o}`;const r=s%2===1?s:s-1;return`${r+1}-${r+2} / ${o}`})}),g("button",{type:"button",class:"bk-btn",onClick:e.onNextPage,"aria-label":m(()=>t.value.next||"Next"),title:m(()=>t.value.next||"Next"),children:g("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",children:g("polyline",{points:"9 18 15 12 9 6"})})})]}),g("div",{class:"bk-btn-group",children:[g("button",{type:"button",class:"bk-btn",onClick:e.onZoomIn,"aria-label":m(()=>t.value.zoomIn||"Zoom In"),title:m(()=>t.value.zoomIn||"Zoom In"),children:g("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",children:[g("circle",{cx:"11",cy:"11",r:"8"}),g("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"}),g("line",{x1:"11",y1:"8",x2:"11",y2:"14"}),g("line",{x1:"8",y1:"11",x2:"14",y2:"11"})]})}),g("button",{type:"button",class:m(()=>`bk-btn ${e.store.isZoomed.value?"active":""}`),onClick:e.onZoomOut,"aria-label":m(()=>t.value.zoomOut||"Zoom Out"),title:m(()=>t.value.zoomOut||"Zoom Out"),children:g("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",children:[g("circle",{cx:"11",cy:"11",r:"8"}),g("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"}),g("line",{x1:"8",y1:"11",x2:"14",y2:"11"})]})}),g("button",{type:"button",class:"bk-btn bk-btn--fullscreen",onClick:e.onToggleFullscreen,"aria-label":m(()=>t.value.fullscreen||"Fullscreen"),title:m(()=>t.value.fullscreen||"Fullscreen"),children:g("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",children:g("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"})})}),m(()=>e.store.allowDownload.value&&e.store.hasDownloadUrl.value&&e.onDownload?g("button",{type:"button",class:"bk-btn bk-btn--download",onClick:e.onDownload,"aria-label":m(()=>t.value.downloadCatalog||"Download"),title:m(()=>t.value.downloadCatalog||"Download"),children:g("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",children:[g("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),g("polyline",{points:"7 10 12 15 17 10"}),g("line",{x1:"12",y1:"15",x2:"12",y2:"3"})]})}):null),g("button",{type:"button",class:m(()=>`bk-btn ${e.store.soundEnabled.value?"":"muted"}`),onClick:e.onSoundToggle,"aria-label":"Sound","aria-pressed":m(()=>e.store.soundEnabled.value?"true":"false"),title:"Sound",children:[g("svg",{style:{display:m(()=>e.store.soundEnabled.value?"block":"none")},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",children:[g("polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5"}),g("path",{d:"M15.54 8.46a5 5 0 0 1 0 7.07"}),g("path",{d:"M19.07 4.93a10 10 0 0 1 0 14.14"})]}),g("svg",{style:{display:m(()=>e.store.soundEnabled.value?"none":"block")},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",children:[g("polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5"}),g("line",{x1:"23",y1:"9",x2:"17",y2:"15"}),g("line",{x1:"17",y1:"9",x2:"23",y2:"15"})]})]})]})]})}function ni(e){return g("div",{class:"bk-thumbs",style:m(()=>e.store.showThumbs.value?"display:flex;":"display:none;"),children:e.store.pages.value.map((t,s)=>{const o=()=>{const r=e.store.currentPage.value;if(e.store.isSingleMode.value||r===0||r>=e.store.pages.value.length-1)return r===s;const l=r%2===1?r:r-1;return s===l||s===l+1};return g("div",{class:m(()=>`thumb-item ${o()?"active":""}`),role:"button",tabindex:"0","aria-label":`Go to page ${s+1}`,"aria-current":m(()=>o()?"page":void 0),onClick:()=>e.onThumbClick(s),onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),e.onThumbClick(s))},children:[g("div",{class:"thumb-img-wrapper",children:g("img",{"data-pdf-page":t.assetId.startsWith("pdf-page-")?t.pageNumber:void 0,class:"thumb-img",src:t.thumb||t.low||t.normal,alt:`Page ${s+1}`,loading:"lazy",onError:r=>{r.currentTarget.style.display="none"}})}),g("span",{children:s+1})]})})})}function oi(e){return g("div",{role:"region","aria-label":"Flipbook viewer",class:m(()=>{let t="bk-book-wrapper ";return e.store.isDoublePageLayout.value&&(t+="double-mode "),e.store.isFrontCover.value&&(t+="bk-is-cover "),e.store.isBackCover.value&&(t+="bk-is-back-cover "),e.store.zoomState.value.isActive&&(t+="zoomed "),t.trim()}),ref:e.bookWrapperRef,children:g("div",{class:"bk-book-sizer",ref:e.bookSizerRef,children:[g("div",{ref:e.bookContainerRef,class:m(()=>"bk-book "+(e.store.flipState.value!=="read"?"is-flipping":"")),style:m(()=>`display: ${e.store.isSingleMode.value?"none":"block"};`),children:e.store.pages.value.map((t,s)=>{const o=s===0||s===e.store.pages.value.length-1;return g("div",{class:`bz-page ${s===0?"bz-page--cover":""} ${s===e.store.pages.value.length-1?"bz-page--back":""}`,"data-density":o?"hard":"soft","data-idx":s,children:g("div",{class:"bz-page-content",style:"position:relative; width:100%; height:100%; overflow:hidden;",children:[g("img",{"data-pdf-page":t.assetId.startsWith("pdf-page-")?t.pageNumber:void 0,src:t.low||t.normal,"data-src":t.normal,class:`page-content ${t.cropMode!=="full"?"page-content--split page-content--"+t.cropMode:""}`,alt:`Page ${s+1}`,loading:"lazy"}),g("div",{class:"page-shadow"})]})})})}),g("div",{class:"bk-single-view",style:m(()=>`display: ${e.store.isSingleMode.value?"flex":"none"}; width: 100%; height: 100%; justify-content: center; align-items: center; position: absolute; top: 0; left: 0; z-index: 10;`),children:m(()=>{const t=e.store.pages.value[e.store.currentPage.value];return t?g("img",{"data-pdf-page":t.assetId.startsWith("pdf-page-")?t.pageNumber:void 0,class:`bk-single-img page-content ${t.cropMode!=="full"?"page-content--split page-content--"+t.cropMode:""}`,src:e.store.zoomState.value.isActive?t.normal:t.low||t.normal,alt:`Page ${e.store.currentPage.value+1}`,style:"opacity: 1; transition: opacity 0.3s; box-shadow: var(--flipbook-shadow);"}):null})})]})})}function ri(e){const t=m(()=>e.store.showArrows.value&&e.store.currentPage.value>0),s=m(()=>!e.store.showArrows.value||e.store.totalPages.value<=1?!1:e.store.currentPage.value<e.store.totalPages.value-1);return g("div",{class:"bk-nav-arrows",style:m(()=>e.store.showArrows.value?"display: flex;":"display: none;"),children:[g("button",{type:"button",class:"bk-nav-arrow bk-nav-prev",style:m(()=>t.value?"visibility: visible;":"visibility: hidden;"),onClick:o=>{o.preventDefault(),e.onPrevPage()},"aria-label":"Previous Page",children:g("div",{class:"bk-arrow-icon bk-arrow-left"})}),g("button",{type:"button",class:"bk-nav-arrow bk-nav-next",style:m(()=>s.value?"visibility: visible;":"visibility: hidden;"),onClick:o=>{o.preventDefault(),e.onNextPage()},"aria-label":"Next Page",children:g("div",{class:"bk-arrow-icon bk-arrow-right"})})]})}function ai(e){const t=()=>{e.store.showThumbs.value=!e.store.showThumbs.value},s=()=>{e.store.isSingleMode.value=!e.store.isSingleMode.value},o=()=>{e.store.isAutoPlaying.value=!e.store.isAutoPlaying.value},r=()=>{var b;(b=e.interactionManagerRef.current)==null||b.zoomIn()},l=()=>{var b;(b=e.interactionManagerRef.current)==null||b.zoomOut()},d=()=>e.onToggleFullscreen(),p=b=>{var L;e.store.currentPage.value!==b&&(e.store.currentPage.value=b,(L=e.pageFlipAdapterRef.current)==null||L.playSound())},P=()=>{var b;(b=e.pageFlipAdapterRef.current)==null||b.turnToNextPage()},k=()=>{var b;(b=e.pageFlipAdapterRef.current)==null||b.turnToPrevPage()};return g("div",{class:m(()=>`bk-wrapper bk-theme-${e.store.themeMode.value} ${e.className||""}`),children:[g("div",{class:"bk-main-area",children:[g(oi,{store:e.store,bookWrapperRef:e.bookWrapperRef,bookSizerRef:e.bookSizerRef,bookContainerRef:e.bookContainerRef}),g(ri,{store:e.store,onPrevPage:k,onNextPage:P}),e.store.whiteLabel.value?null:g("div",{class:"bk-watermark",children:["Powered by ",g("a",{href:"https://flipbookengine.com",target:"_blank",rel:"noopener",style:"text-decoration: underline;",children:"FlipbookEngine"})]})]}),g(si,{store:e.store,onToggleThumbs:t,onToggleSingleMode:s,onZoomIn:r,onZoomOut:l,onDownload:e.onDownload,onNextPage:P,onPrevPage:k,onSoundToggle:()=>e.store.soundEnabled.value=!e.store.soundEnabled.value,onToggleAutoPlay:o,onToggleFullscreen:d}),g(ni,{store:e.store,onThumbClick:p})]})}var hi=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Nt={exports:{}};(function(e,t){(function(s,o){o(t)})(hi,function(s){class o{constructor(i,n){this.state={angle:0,area:[],position:{x:0,y:0},hardAngle:0,hardDrawingAngle:0},this.createdDensity=n,this.nowDrawingDensity=this.createdDensity,this.render=i}setDensity(i){this.createdDensity=i,this.nowDrawingDensity=i}setDrawingDensity(i){this.nowDrawingDensity=i}setPosition(i){this.state.position=i}setAngle(i){this.state.angle=i}setArea(i){this.state.area=i}setHardDrawingAngle(i){this.state.hardDrawingAngle=i}setHardAngle(i){this.state.hardAngle=i,this.state.hardDrawingAngle=i}setOrientation(i){this.orientation=i}getDrawingDensity(){return this.nowDrawingDensity}getDensity(){return this.createdDensity}getHardAngle(){return this.state.hardAngle}}class r extends o{constructor(i,n,a){super(i,a),this.image=null,this.isLoad=!1,this.loadingAngle=0,this.image=new Image,this.image.src=n}draw(i){const n=this.render.getContext(),a=this.render.convertToGlobal(this.state.position),c=this.render.getRect().pageWidth,h=this.render.getRect().height;n.save(),n.translate(a.x,a.y),n.beginPath();for(let u of this.state.area)u!==null&&(u=this.render.convertToGlobal(u),n.lineTo(u.x-a.x,u.y-a.y));n.rotate(this.state.angle),n.clip(),this.isLoad?n.drawImage(this.image,0,0,c,h):this.drawLoader(n,{x:0,y:0},c,h),n.restore()}simpleDraw(i){const n=this.render.getRect(),a=this.render.getContext(),c=n.pageWidth,h=n.height,u=i===1?n.left+n.pageWidth:n.left,v=n.top;this.isLoad?a.drawImage(this.image,u,v,c,h):this.drawLoader(a,{x:u,y:v},c,h)}drawLoader(i,n,a,c){i.beginPath(),i.strokeStyle="rgb(200, 200, 200)",i.fillStyle="rgb(255, 255, 255)",i.lineWidth=1,i.rect(n.x+1,n.y+1,a-1,c-1),i.stroke(),i.fill();const h={x:n.x+a/2,y:n.y+c/2};i.beginPath(),i.lineWidth=10,i.arc(h.x,h.y,20,this.loadingAngle,3*Math.PI/2+this.loadingAngle),i.stroke(),i.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 l{constructor(i,n){this.pages=[],this.currentPageIndex=0,this.currentSpreadIndex=0,this.landscapeSpread=[],this.portraitSpread=[],this.render=n,this.app=i,this.currentPageIndex=0,this.isShowCover=this.app.getSettings().showCover}destroy(){this.pages=[]}createSpread(){this.landscapeSpread=[],this.portraitSpread=[];for(let n=0;n<this.pages.length;n++)this.portraitSpread.push([n]);let i=0;this.isShowCover&&(this.pages[0].setDensity("hard"),this.landscapeSpread.push([i]),i++);for(let n=i;n<this.pages.length;n+=2)n<this.pages.length-1?this.landscapeSpread.push([n,n+1]):(this.landscapeSpread.push([n]),this.pages[n].setDensity("hard"))}getSpread(){return this.render.getOrientation()==="landscape"?this.landscapeSpread:this.portraitSpread}getSpreadIndexByPage(i){const n=this.getSpread();for(let a=0;a<n.length;a++)if(i===n[a][0]||i===n[a][1])return a;return null}getPageCount(){return this.pages.length}getPages(){return this.pages}getPage(i){if(i>=0&&i<this.pages.length)return this.pages[i];throw new Error("Invalid page number")}nextBy(i){const n=this.pages.indexOf(i);return n<this.pages.length-1?this.pages[n+1]:null}prevBy(i){const n=this.pages.indexOf(i);return n>0?this.pages[n-1]:null}getFlippingPage(i){const n=this.currentSpreadIndex;if(this.render.getOrientation()==="portrait")return i===0?this.pages[n].newTemporaryCopy():this.pages[n-1];{const a=i===0?this.getSpread()[n+1]:this.getSpread()[n-1];return a.length===1||i===0?this.pages[a[0]]:this.pages[a[1]]}}getBottomPage(i){const n=this.currentSpreadIndex;if(this.render.getOrientation()==="portrait")return i===0?this.pages[n+1]:this.pages[n-1];{const a=i===0?this.getSpread()[n+1]:this.getSpread()[n-1];return a.length===1?this.pages[a[0]]:i===0?this.pages[a[1]]:this.pages[a[0]]}}showNext(){this.currentSpreadIndex<this.getSpread().length&&(this.currentSpreadIndex++,this.showSpread())}showPrev(){this.currentSpreadIndex>0&&(this.currentSpreadIndex--,this.showSpread())}getCurrentPageIndex(){return this.currentPageIndex}show(i=null){if(i===null&&(i=this.currentPageIndex),i<0||i>=this.pages.length)return;const n=this.getSpreadIndexByPage(i);n!==null&&(this.currentSpreadIndex=n,this.showSpread())}getCurrentSpreadIndex(){return this.currentSpreadIndex}setCurrentSpreadIndex(i){if(!(i>=0&&i<this.getSpread().length))throw new Error("Invalid page");this.currentSpreadIndex=i}showSpread(){const i=this.getSpread()[this.currentSpreadIndex];i.length===2?(this.render.setLeftPage(this.pages[i[0]]),this.render.setRightPage(this.pages[i[1]])):this.render.getOrientation()==="landscape"&&i[0]===this.pages.length-1?(this.render.setLeftPage(this.pages[i[0]]),this.render.setRightPage(null)):(this.render.setLeftPage(null),this.render.setRightPage(this.pages[i[0]])),this.currentPageIndex=i[0],this.app.updatePageIndex(this.currentPageIndex)}}class d extends l{constructor(i,n,a){super(i,n),this.imagesHref=a}load(){for(const i of this.imagesHref){const n=new r(this.render,i,"soft");n.load(),this.pages.push(n)}this.createSpread()}}class p{static GetDistanceBetweenTwoPoint(i,n){return i===null||n===null?1/0:Math.sqrt(Math.pow(n.x-i.x,2)+Math.pow(n.y-i.y,2))}static GetSegmentLength(i){return p.GetDistanceBetweenTwoPoint(i[0],i[1])}static GetAngleBetweenTwoLine(i,n){const a=i[0].y-i[1].y,c=n[0].y-n[1].y,h=i[1].x-i[0].x,u=n[1].x-n[0].x;return Math.acos((a*c+h*u)/(Math.sqrt(a*a+h*h)*Math.sqrt(c*c+u*u)))}static PointInRect(i,n){return n===null?null:n.x>=i.left&&n.x<=i.width+i.left&&n.y>=i.top&&n.y<=i.top+i.height?n:null}static GetRotatedPoint(i,n,a){return{x:i.x*Math.cos(a)+i.y*Math.sin(a)+n.x,y:i.y*Math.cos(a)-i.x*Math.sin(a)+n.y}}static LimitPointToCircle(i,n,a){if(p.GetDistanceBetweenTwoPoint(i,a)<=n)return a;const c=i.x,h=i.y,u=a.x,v=a.y;let y=Math.sqrt(Math.pow(n,2)*Math.pow(c-u,2)/(Math.pow(c-u,2)+Math.pow(h-v,2)))+c;a.x<0&&(y*=-1);let D=(y-c)*(h-v)/(c-u)+h;return c-u+h===0&&(D=n),{x:y,y:D}}static GetIntersectBetweenTwoSegment(i,n,a){return p.PointInRect(i,p.GetIntersectBeetwenTwoLine(n,a))}static GetIntersectBeetwenTwoLine(i,n){const a=i[0].y-i[1].y,c=n[0].y-n[1].y,h=i[1].x-i[0].x,u=n[1].x-n[0].x,v=i[0].x*i[1].y-i[1].x*i[0].y,y=n[0].x*n[1].y-n[1].x*n[0].y,D=a*y-c*v,z=h*y-u*v,N=-(v*u-y*h)/(a*u-c*h),ht=-(a*y-c*v)/(a*u-c*h);if(isFinite(N)&&isFinite(ht))return{x:N,y:ht};if(Math.abs(D-z)<.1)throw new Error("Segment included");return null}static GetCordsFromTwoPoint(i,n){const a=Math.abs(i.x-n.x),c=Math.abs(i.y-n.y),h=Math.max(a,c),u=[i];function v(y,D,z,N,ht){return D>y?y+ht*(z/N):D<y?y-ht*(z/N):y}for(let y=1;y<=h;y+=1)u.push({x:v(i.x,n.x,a,h,y),y:v(i.y,n.y,c,h,y)});return u}}class P extends o{constructor(i,n,a){super(i,a),this.copiedElement=null,this.temporaryCopy=null,this.isLoad=!1,this.element=n,this.element.classList.add("stf__item"),this.element.classList.add("--"+a)}newTemporaryCopy(){return this.nowDrawingDensity==="hard"?this:(this.temporaryCopy===null&&(this.copiedElement=this.element.cloneNode(!0),this.element.parentElement.appendChild(this.copiedElement),this.temporaryCopy=new P(this.render,this.copiedElement,this.nowDrawingDensity)),this.getTemporaryCopy())}getTemporaryCopy(){return this.temporaryCopy}hideTemporaryCopy(){this.temporaryCopy!==null&&(this.copiedElement.remove(),this.copiedElement=null,this.temporaryCopy=null)}draw(i){const n=i||this.nowDrawingDensity,a=this.render.convertToGlobal(this.state.position),c=this.render.getRect().pageWidth,h=this.render.getRect().height;this.element.classList.remove("--simple");const u=`
|
|
1
|
+
var FlipbookEngine=function(P,A){"use strict";var Ti=Object.defineProperty;var Ae=P=>{throw TypeError(P)};var ki=(P,A,L)=>A in P?Ti(P,A,{enumerable:!0,configurable:!0,writable:!0,value:L}):P[A]=L;var v=(P,A,L)=>ki(P,typeof A!="symbol"?A+"":A,L),_t=(P,A,L)=>A.has(P)||Ae("Cannot "+L);var Z=(P,A,L)=>(_t(P,A,"read from private field"),L?L.call(P):A.get(P)),Pt=(P,A,L)=>A.has(P)?Ae("Cannot add the same private member more than once"):A instanceof WeakSet?A.add(P):A.set(P,L),St=(P,A,L,et)=>(_t(P,A,"write to private field"),et?et.call(P,L):A.set(P,L),L),ht=(P,A,L)=>(_t(P,A,"access private method"),L);var at,N,j,Gt,Ut,Ce;function L(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const s in e)if(s!=="default"){const o=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(t,s,o.get?o:{enumerable:!0,get:()=>e[s]})}}return t.default=e,Object.freeze(t)}const et=L(A);var Ee=Symbol.for("preact-signals");function Tt(){if(q>1)q--;else{var e,t=!1;for(function(){var r=ut;for(ut=void 0;r!==void 0;)r.S.v===r.v&&(r.S.i=r.i),r=r.o}();it!==void 0;){var s=it;for(it=void 0,dt++;s!==void 0;){var o=s.u;if(s.u=void 0,s.f&=-3,!(8&s.f)&&Zt(s))try{s.c()}catch(r){t||(e=r,t=!0)}s=o}}if(dt=0,q--,t)throw e}}var E=void 0;function ct(e){var t=E;E=void 0;try{return e()}finally{E=t}}var it=void 0,q=0,dt=0,jt=0,ut=void 0,gt=0;function Vt(e){if(E!==void 0){var t=e.n;if(t===void 0||t.t!==E)return t={i:0,S:e,p:E.s,n:void 0,t:E,e:void 0,x:void 0,r:t},E.s!==void 0&&(E.s.n=t),E.s=t,e.n=t,32&E.f&&e.S(t),t;if(t.i===-1)return t.i=0,t.n!==void 0&&(t.n.p=t.p,t.p!==void 0&&(t.p.n=t.n),t.p=E.s,t.n=void 0,E.s.n=t,E.s=t),t}}function O(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=t==null?void 0:t.watched,this.Z=t==null?void 0:t.unwatched,this.name=t==null?void 0:t.name}O.prototype.brand=Ee,O.prototype.h=function(){return!0},O.prototype.S=function(e){var t=this,s=this.t;s!==e&&e.e===void 0&&(e.x=s,this.t=e,s!==void 0?s.e=e:ct(function(){var o;(o=t.W)==null||o.call(t)}))},O.prototype.U=function(e){var t=this;if(this.t!==void 0){var s=e.e,o=e.x;s!==void 0&&(s.x=o,e.e=void 0),o!==void 0&&(o.e=s,e.x=void 0),e===this.t&&(this.t=o,o===void 0&&ct(function(){var r;(r=t.Z)==null||r.call(t)}))}},O.prototype.subscribe=function(e){var t=this;return U(function(){var s=t.value;ct(function(){return e(s)})},{name:"sub"})},O.prototype.valueOf=function(){return this.value},O.prototype.toString=function(){return this.value+""},O.prototype.toJSON=function(){return this.value},O.prototype.peek=function(){var e=this;return ct(function(){return e.value})},Object.defineProperty(O.prototype,"value",{get:function(){var e=Vt(this);return e!==void 0&&(e.i=this.i),this.v},set:function(e){if(e!==this.v){if(dt>100)throw new Error("Cycle detected");(function(s){q!==0&&dt===0&&s.l!==jt&&(s.l=jt,ut={S:s,v:s.v,i:s.i,o:ut})})(this),this.v=e,this.i++,gt++,q++;try{for(var t=this.t;t!==void 0;t=t.x)t.t.N()}finally{Tt()}}}});function R(e,t){return new O(e,t)}function Zt(e){for(var t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function qt(e){for(var t=e.s;t!==void 0;t=t.n){var s=t.S.n;if(s!==void 0&&(t.r=s),t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function Xt(e){for(var t=e.s,s=void 0;t!==void 0;){var o=t.p;t.i===-1?(t.S.U(t),o!==void 0&&(o.n=t.n),t.n!==void 0&&(t.n.p=o)):s=t,t.S.n=t.r,t.r!==void 0&&(t.r=void 0),t=o}e.s=s}function X(e,t){O.call(this,void 0,t),this.x=e,this.s=void 0,this.g=gt-1,this.f=4}X.prototype=new O,X.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===gt))return!0;if(this.g=gt,this.f|=1,this.i>0&&!Zt(this))return this.f&=-2,!0;var e=E;try{qt(this),E=this;var t=this.x();(16&this.f||this.v!==t||this.i===0)&&(this.v=t,this.f&=-17,this.i++)}catch(s){this.v=s,this.f|=16,this.i++}return E=e,Xt(this),this.f&=-2,!0},X.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(var t=this.s;t!==void 0;t=t.n)t.S.S(t)}O.prototype.S.call(this,e)},X.prototype.U=function(e){if(this.t!==void 0&&(O.prototype.U.call(this,e),this.t===void 0)){this.f&=-33;for(var t=this.s;t!==void 0;t=t.n)t.S.U(t)}},X.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;e!==void 0;e=e.x)e.t.N()}},Object.defineProperty(X.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var e=Vt(this);if(this.h(),e!==void 0&&(e.i=this.i),16&this.f)throw this.v;return this.v}});function w(e,t){return new X(e,t)}function Yt(e){var t=e.m;if(e.m=void 0,typeof t=="function"){q++;var s=E;E=void 0;try{t()}catch(o){throw e.f&=-2,e.f|=8,kt(e),o}finally{E=s,Tt()}}}function kt(e){for(var t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,Yt(e)}function Me(e){if(E!==this)throw new Error("Out-of-order effect");Xt(this),E=e,this.f&=-2,8&this.f&&kt(this),Tt()}function K(e,t){this.x=e,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=t==null?void 0:t.name}K.prototype.c=function(){var e=this.S();try{if(8&this.f||this.x===void 0)return;var t=this.x();typeof t=="function"&&(this.m=t)}finally{e()}},K.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,Yt(this),qt(this),q++;var e=E;return E=this,Me.bind(this,e)},K.prototype.N=function(){2&this.f||(this.f|=2,this.u=it,it=this)},K.prototype.d=function(){this.f|=8,1&this.f||kt(this)},K.prototype.dispose=function(){this.d()};function U(e,t){var s=new K(e,t);try{s.c()}catch(r){throw s.d(),r}var o=s.d.bind(s);return o[Symbol.dispose]=o,o}var Qt=Symbol.for("Serenity.initPropHook");function De(e){return!!(e&&typeof e.nodeType=="number")}function pt(e){return typeof e=="string"}function Kt(e){return typeof e=="number"}function $(e){return typeof e=="object"&&e!==null}function Re(e){return!!(e&&e.isComponent)}function Ct(e){return $(e)&&typeof e.length=="number"&&typeof e.nodeType!="number"}function Ie(e){return typeof e=="function"&&typeof e[Qt]=="function"}function st(e){return e!=null&&typeof e!="boolean"}function nt(e){return Array.isArray(e)?e.map(nt).filter(Boolean).join(" "):$(e)?Symbol.iterator in e?nt(Array.from(e)):Object.keys(e).filter(t=>e[t]).join(" "):st(e)?""+e:""}function Le(e){return e!=null&&typeof e=="object"&&"current"in e}function At(e,t){Le(e)?e.current=t:typeof e=="function"&&e(t)}function ze(e,t,s){t={...t,children:s};const o=new e(t),r=o.render();return"ref"in t&&At(t.ref,o),r}var Fe="http://www.w3.org/1998/Math/MathML",Oe=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"]),We=new Set(["animate","animateMotion","animateTransform","circle","clipPath","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","foreignObject","g","image","line","linearGradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","stop","svg","switch","symbol","text","textPath","tref","tspan","use","view"]),Jt=/^(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)/,$e="http://www.w3.org/2000/svg",te=Symbol.for("Serenity.jsxNamespaceURI");function He(e){const t=globalThis[te];return arguments.length&&(globalThis[te]=e),t}var Ne=Symbol.for("Serenity.jsxTypeKey"),Be="ShadowRoot";function _e(e){return e!=null&&e[Ne]===Be}var Et=Symbol.for("Serenity.disposingListeners"),Mt=Symbol.for("Serenity.lifecycleRoot");function Dt(){return globalThis[Et]||(globalThis[Et]=new WeakMap)}function Rt(e){e&&e.target&&(!e.currentTarget||e.currentTarget===e.target)&&Ge(e==null?void 0:e.target)}function Ge(e,t){if(!e)return;const s=Dt();function o(r){const l=s.get(r);if(l){s.delete(r),r.removeEventListener("disposing",Rt);for(const u of l)try{u.callback(r)}catch{}}}o(e)}function It(e,t,s){if(!e||!t)return e;const o=Dt();let r=o.get(e);if(!r)return typeof e.addEventListener!="function"||(o.set(e,r=[{callback:t,regKey:s}]),e.addEventListener("disposing",Rt,{once:!0})),e;const l=r.find(u=>u.callback===t);return l?(l.regKey,e):(r.push({callback:t,regKey:s}),e)}function ee(e,t,s){if(!e||!t)return e;const o=Dt(),r=o.get(e);if(r){for(let l=r.length-1;l>=0;l--){const u=r[l];t&&t===u.callback&&r.splice(l,1)}r.length===0&&(o.delete(e),typeof e.removeEventListener=="function"&&e.removeEventListener("disposing",Rt))}return e}function Ue(...e){if(e.length>0){const t=globalThis[Mt]||null;return globalThis[Mt]=e[0]||null,t}return globalThis[Mt]||null}function Y(e){return e!=null&&typeof e=="object"&&typeof e.subscribe=="function"&&typeof e.peek=="function"&&"value"in e}var je=(Ce=class{constructor(e,t,s){Pt(this,j);Pt(this,at);Pt(this,N);this.signal=e,this.isInitial=!0,this.hasChanged=!1,this.lifecycleRoot=t,St(this,N,s)}get lifecycleNode(){return Z(this,N)}get effectDisposer(){return Z(this,at)}set effectDisposer(e){ht(this,j,Gt).call(this),St(this,at,e),ht(this,j,Ut).call(this)}set lifecycleNode(e){e!==Z(this,N)&&(ht(this,j,Gt).call(this),St(this,N,e),ht(this,j,Ut).call(this))}},at=new WeakMap,N=new WeakMap,j=new WeakSet,Gt=function(){var e;ee(Z(this,N),this.effectDisposer),ee(Z(this,N),(e=this.signal)==null?void 0:e.derivedDisposer)},Ut=function(){var e;It(Z(this,N),this.effectDisposer),It(Z(this,N),(e=this.signal)==null?void 0:e.derivedDisposer)},Ce);function ot(e,t,s){const o=s!=null&&s.useLifecycleRoot?Ue():void 0,r=new je(e,o,s==null?void 0:s.lifecycleNode),l=r.signal.subscribe(function(u){r.newValue=u,r.isInitial&&(this!=null&&this.dispose)&&(r.effectDisposer=this.dispose.bind(this)),r.hasChanged=!r.isInitial&&r.prevValue!==r.newValue;try{t(r)}finally{r.prevValue=r.newValue,r.isInitial=!1}});return l&&!r.effectDisposer&&(r.effectDisposer=l),r.effectDisposer}function ie(e,t){e instanceof window.HTMLTemplateElement?e.content.appendChild(t):e.appendChild(t)}var Lt=0,zt="__domwisefrag_";function se(e){return e instanceof Comment&&e.data.startsWith(zt)}function ne(e){return e instanceof DocumentFragment&&se(e.firstChild)}function Ve(e,t){var s;typeof e.replaceWith=="function"?e.replaceWith(t):(s=e.parentNode)==null||s.replaceChild(t,e)}function oe(e){return e instanceof DocumentFragment?(++Lt,e.prepend(document.createComment(zt+Lt)),e.append(document.createComment(zt+Lt)),e):e instanceof Node?e:st(e)?document.createTextNode(e):document.createComment("")}function Ze(e,t){let s;ot(t,o=>{var u;if(o.isInitial){s=oe(o.newValue);let p=ne(s)?s.firstChild:s;ft(e,s),o.lifecycleNode=(s=p)??e;return}if(!o.hasChanged)return;const r=oe(o.newValue);if(se(s)){let p;for(;(p=s.nextSibling)&&((u=p.parentNode)==null||u.removeChild(p),!(p instanceof Comment&&p.data===s.data)););}let l=ne(r)?r.firstChild:r;Ve(s,r),o.lifecycleNode=(s=l)??e})}function ft(e,t){if(st(t))if(Ct(t))for(const s of[...t])ft(e,s);else if(pt(t)||Kt(t))ie(e,document.createTextNode(t));else if(De(t))ie(e,t);else if(_e(t)){const s=e.attachShadow(t.attr);ft(s,t.children),At(t.ref,s)}else Y(t)&&Ze(e,t)}function re(e){return e==null||(Ct(e)?e=Array.from(e).map(t=>Y(t)?t.peek():t):$(e)&&(e={...e},Object.entries(e).forEach(([t,s])=>{Y(s)&&(e[t]=s.peek())}))),e}function qe(e,t){if(t==null||t===!1||t===!0)return;t=re(t);const s=(nt(t)??"").split(" ");for(let o of s)o&&e.classList.remove(o)}function Xe(e,t,s){if(t==null||t===!1){qe(e,s);return}s=re(s),Ct(t)?t=Array.from(t).map(o=>{let r=o;return Y(o)&&ot(o,l=>{if(l.isInitial){r=l.newValue;return}Ft(e,l.newValue,l.prevValue)},{lifecycleNode:e}),r}):$(t)&&(t={...t},Object.entries(t).forEach(([o,r])=>{Y(r)&&ot(r,l=>{if(l.isInitial){t[o]=l.newValue;return}Ft(e,!!l.newValue&&o,!!l.prevValue&&o)},{lifecycleNode:e})})),Ft(e,t,s)}function Ft(e,t,s){const o=(nt(t)??"").split(" ");if(s){const r=(nt(s)??"").split(" ");for(let l of r)l&&!o.includes(l)&&e.classList.remove(l)}for(let r of o)r&&e.classList.add(r)}function Ye(e,t){return e+t.charAt(0).toUpperCase()+t.substring(1)}var Qe=(()=>{let e={animationIterationCount:0,borderImageOutset:0,borderImageSlice:0,borderImageWidth:0,boxFlex:0,boxFlexGroup:0,boxOrdinalGroup:0,columnCount:0,columns:0,flex:0,flexGrow:0,flexPositive:0,flexShrink:0,flexNegative:0,flexOrder:0,gridArea:0,gridRow:0,gridRowEnd:0,gridRowSpan:0,gridRowStart:0,gridColumn:0,gridColumnEnd:0,gridColumnSpan:0,gridColumnStart:0,fontWeight:0,lineClamp:0,lineHeight:0,opacity:0,order:0,orphans:0,tabSize:0,widows:0,zIndex:0,zoom:0,fillOpacity:0,floodOpacity:0,stopOpacity:0,strokeDasharray:0,strokeDashoffset:0,strokeMiterlimit:0,strokeOpacity:0,strokeWidth:0};const t=["Webkit","ms","Moz","O"];return Object.keys(e).forEach(s=>{t.forEach(o=>{e[Ye(o,s)]=0})}),e})();function Ot(e,t,s){t.indexOf("-")===0?e.style.setProperty(t,s):Kt(s)&&Qe[t]!==0?e.style[t]=s+"px":e.style[t]=s}function ae(e,t){if(!(t==null||t===!1||t===!0)){if(pt(t)){e.removeAttribute("style");return}$(t)&&Object.keys(t).forEach(s=>{Ot(e,s,"")})}}function Ke(e,t,s){if(t==null||t===!1||t===!0){ae(e,s);return}if(pt(t)){e.setAttribute("style",t);return}if($(t)){$(s)?(t={...t},Object.keys(s).forEach(o=>{o in t||(t[o]="")})):ae(e,s),Object.entries(t).forEach(([o,r])=>{Y(r)?ot(r,l=>Ot(e,o,l.newValue),{lifecycleNode:e}):Ot(e,o,r)});return}}var Je="http://www.w3.org/1999/xlink",ti="http://www.w3.org/XML/1998/namespace";function mt(e,t){return e.replace(/[A-Z]/g,s=>t+s.toLowerCase())}var ei=new Map([["autoComplete","autocomplete"],["autoFocus","autofocus"],["className","class"],["colSpan","colspan"],["contentEditable","contenteditable"],["formNoValidate","formnovalidate"],["htmlFor","for"],["innerText","textContent"],["minLength","minlength"],["maxLength","maxlength"],["readOnly","readonly"],["reffererPolicy","referrerpolicy"],["rowSpan","rowspan"],["spellCheck","spellcheck"],["tabIndex","tabindex"],["onDoubleClick","onDblClick"],["onDoubleClickCapture","onDblClickCapture"]]);function le(e,t,s,o){switch(t){case"dataset":o!=null&&Object.entries(o).forEach(([l,u])=>{u!=null&&delete e.dataset[l]}),Object.entries(s).forEach(([l,u])=>{u!=null&&(e.dataset[l]=u)});return;case"textContent":st(s)?e[t]=s:st(o)&&(e[t]="");return;case"dangerouslySetInnerHTML":$(s)?e.innerHTML=s.__html:$(o)&&(e.innerHTML="");return;case"value":if(s==null){o!=null&&(e[t]=null);return}else{if(e instanceof window.HTMLSelectElement)return;if(e instanceof window.HTMLTextAreaElement){e.value=s;return}}break;case"class":Xe(e,s,o);return;case"spellcheck":e.spellcheck=s===""||s===!0||s==="true"?!0:s===!1||s==="false"?!1:s;return;case"draggable":s===!1||s==="false"?s="false":s===""?s=null:(s===!0||s==="true")&&(s="true");break;case"contenteditable":s===!1?s="false":(s===""||s===!0)&&(s="true");break;case"ref":case"namespaceURI":return;case"style":Ke(e,s,o);return;case"on":case"onCapture":const r=t==="onCapture";o!=null&&Object.entries(o).forEach(([l,u])=>{(s==null||s[l]!==u)&&e.removeEventListener(l,u,r)}),Object.entries(s).forEach(([l,u])=>{(o==null||o[l]!==u)&&e.addEventListener(l,u,r)});return;case"xlinkActuate":case"xlinkArcrole":case"xlinkHref":case"xlinkRole":case"xlinkShow":case"xlinkTitle":case"xlinkType":e.setAttributeNS(Je,mt(t,":"),s);return;case"xmlnsXlink":e.setAttribute("xmlns:xlink",s);return;case"xmlBase":case"xmlLang":case"xmlSpace":e.setAttributeNS(ti,mt(t,":"),s);return}if(typeof s=="function"){if(t[0]==="o"&&t[1]==="n"){if(o!=null&&o===s)return;let r=t.toLowerCase();const l=r.endsWith("capture");let u;!l&&(e[r]===null||o!=null&&e[r]===o)?(e[r]=s,It(e,si.bind(e,r))):l?(u=r.substring(2,r.length-7),o!=null&&e.removeEventListener(u,o,!0),e.addEventListener(u,s,!0)):(r in window?u=r.substring(2):u=r[2]+t.slice(3),o!=null&&e.removeEventListener(u,o),e.addEventListener(u,s))}else console.warn(`A function was provided for JSX ${e.tagName} element ${t} which does not start with "on":`,s,e.tagName);return}if($(o)){if(o===s)return;delete e[t]}if(o===!0){if(o===s)return;e.removeAttribute(t)}if(o!==!1&&o!=null){if(o===s)return;e instanceof SVGElement&&!Jt.test(t)?e.removeAttributeNS(mt(t,"-"),s):e.removeAttribute(t)}if($(s)){e[t]=s;return}if(s===!0){e.setAttribute(t,"");return}s!==!1&&s!=null&&(e instanceof SVGElement&&!Jt.test(t)?e.setAttribute(mt(t,"-"),s):e.setAttribute(t,s))}function ii(e,t){for(let[s,o]of Object.entries(t))s=ei.get(s)??s,Y(o)?ot(o,r=>le(e,s,r.newValue,r.prevValue),{lifecycleNode:e}):Ie(o)?o[Qt](e,s):le(e,s,o);return e}function si(e){this[e]=null}function d(e,t){let{children:s,...o}=t||{},r=o.namespaceURI;r||(We.has(e)?r=$e:Oe.has(e)?r=Fe:r=He());let l;if(pt(e)){if(l=r?document.createElementNS(r,e):document.createElement(e),ii(l,o),ft(l,s),l instanceof window.HTMLSelectElement&&o.value!=null)if(o.multiple===!0&&Array.isArray(o.value)){const u=o.value.map(p=>String(p));l.querySelectorAll("option").forEach(p=>p.selected=u.includes(p.value))}else l.value=o.value;At(o.ref,l)}else if(typeof e=="function")$(e.defaultProps)&&(o={...e.defaultProps,...o}),l=Re(e)?ze(e,o,s):e({...o,children:s});else throw new TypeError(`Invalid JSX element type: ${e}`);return l}var ni=Symbol.for("preact-signals");function Wt(){if(Q>1)Q--;else{var e,t=!1;for(function(){var r=vt;for(vt=void 0;r!==void 0;)r.S.v===r.v&&(r.S.i=r.i),r=r.o}();rt!==void 0;){var s=rt;for(rt=void 0,wt++;s!==void 0;){var o=s.u;if(s.u=void 0,s.f&=-3,!(8&s.f)&&ue(s))try{s.c()}catch(r){t||(e=r,t=!0)}s=o}}if(wt=0,Q--,t)throw e}}var S=void 0;function he(e){var t=S;S=void 0;try{return e()}finally{S=t}}var rt=void 0,Q=0,wt=0,ce=0,vt=void 0,yt=0;function de(e){if(S!==void 0){var t=e.n;if(t===void 0||t.t!==S)return t={i:0,S:e,p:S.s,n:void 0,t:S,e:void 0,x:void 0,r:t},S.s!==void 0&&(S.s.n=t),S.s=t,e.n=t,32&S.f&&e.S(t),t;if(t.i===-1)return t.i=0,t.n!==void 0&&(t.n.p=t.p,t.p!==void 0&&(t.p.n=t.n),t.p=S.s,t.n=void 0,S.s.n=t,S.s=t),t}}function W(e,t){this.v=e,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=t==null?void 0:t.watched,this.Z=t==null?void 0:t.unwatched,this.name=t==null?void 0:t.name}W.prototype.brand=ni,W.prototype.h=function(){return!0},W.prototype.S=function(e){var t=this,s=this.t;s!==e&&e.e===void 0&&(e.x=s,this.t=e,s!==void 0?s.e=e:he(function(){var o;(o=t.W)==null||o.call(t)}))},W.prototype.U=function(e){var t=this;if(this.t!==void 0){var s=e.e,o=e.x;s!==void 0&&(s.x=o,e.e=void 0),o!==void 0&&(o.e=s,e.x=void 0),e===this.t&&(this.t=o,o===void 0&&he(function(){var r;(r=t.Z)==null||r.call(t)}))}},W.prototype.subscribe=function(e){var t=this;return ri(function(){var s=t.value,o=S;S=void 0;try{e(s)}finally{S=o}},{name:"sub"})},W.prototype.valueOf=function(){return this.value},W.prototype.toString=function(){return this.value+""},W.prototype.toJSON=function(){return this.value},W.prototype.peek=function(){var e=S;S=void 0;try{return this.value}finally{S=e}},Object.defineProperty(W.prototype,"value",{get:function(){var e=de(this);return e!==void 0&&(e.i=this.i),this.v},set:function(e){if(e!==this.v){if(wt>100)throw new Error("Cycle detected");(function(s){Q!==0&&wt===0&&s.l!==ce&&(s.l=ce,vt={S:s,v:s.v,i:s.i,o:vt})})(this),this.v=e,this.i++,yt++,Q++;try{for(var t=this.t;t!==void 0;t=t.x)t.t.N()}finally{Wt()}}}});function ue(e){for(var t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function ge(e){for(var t=e.s;t!==void 0;t=t.n){var s=t.S.n;if(s!==void 0&&(t.r=s),t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function pe(e){for(var t=e.s,s=void 0;t!==void 0;){var o=t.p;t.i===-1?(t.S.U(t),o!==void 0&&(o.n=t.n),t.n!==void 0&&(t.n.p=o)):s=t,t.S.n=t.r,t.r!==void 0&&(t.r=void 0),t=o}e.s=s}function J(e,t){W.call(this,void 0),this.x=e,this.s=void 0,this.g=yt-1,this.f=4,this.W=t==null?void 0:t.watched,this.Z=t==null?void 0:t.unwatched,this.name=t==null?void 0:t.name}J.prototype=new W,J.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===yt))return!0;if(this.g=yt,this.f|=1,this.i>0&&!ue(this))return this.f&=-2,!0;var e=S;try{ge(this),S=this;var t=this.x();(16&this.f||this.v!==t||this.i===0)&&(this.v=t,this.f&=-17,this.i++)}catch(s){this.v=s,this.f|=16,this.i++}return S=e,pe(this),this.f&=-2,!0},J.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(var t=this.s;t!==void 0;t=t.n)t.S.S(t)}W.prototype.S.call(this,e)},J.prototype.U=function(e){if(this.t!==void 0&&(W.prototype.U.call(this,e),this.t===void 0)){this.f&=-33;for(var t=this.s;t!==void 0;t=t.n)t.S.U(t)}},J.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var e=this.t;e!==void 0;e=e.x)e.t.N()}},Object.defineProperty(J.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var e=de(this);if(this.h(),e!==void 0&&(e.i=this.i),16&this.f)throw this.v;return this.v}});function fe(e){var t=e.m;if(e.m=void 0,typeof t=="function"){Q++;var s=S;S=void 0;try{t()}catch(o){throw e.f&=-2,e.f|=8,$t(e),o}finally{S=s,Wt()}}}function $t(e){for(var t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,fe(e)}function oi(e){if(S!==this)throw new Error("Out-of-order effect");pe(this),S=e,this.f&=-2,8&this.f&&$t(this),Wt()}function tt(e,t){this.x=e,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=t==null?void 0:t.name}tt.prototype.c=function(){var e=this.S();try{if(8&this.f||this.x===void 0)return;var t=this.x();typeof t=="function"&&(this.m=t)}finally{e()}},tt.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,fe(this),ge(this),Q++;var e=S;return S=this,oi.bind(this,e)},tt.prototype.N=function(){2&this.f||(this.f|=2,this.u=rt,rt=this)},tt.prototype.d=function(){this.f|=8,1&this.f||$t(this)},tt.prototype.dispose=function(){this.d()};function ri(e,t){var s=new tt(e,t);try{s.c()}catch(r){throw s.d(),r}var o=s.d.bind(s);return o[Symbol.dispose]=o,o}const Ht={en:{emptyStateTitle:"No data available.",thumbnails:"Thumbnails",singlePageMode:"Single Page Mode",pages:"Pages",previous:"Previous",next:"Next",zoomOut:"Zoom Out",zoomIn:"Zoom In",fullscreen:"Fullscreen",settings:"Settings",downloadCatalog:"Download Catalog",play:"Play",pause:"Pause",tableOfContents:"Table of Contents"},tr:{emptyStateTitle:"Veri bulunamadi.",thumbnails:"Küçük Resimler",singlePageMode:"Tek Sayfa Modu",pages:"Sayfalar",previous:"Önceki",next:"Sonraki",zoomOut:"Uzaklaş",zoomIn:"Yaklaş",fullscreen:"Tam Ekran",settings:"Ayarlar",downloadCatalog:"Kataloğu İndir",play:"Otomatik Oynat",pause:"Duraklat",tableOfContents:"İçindekiler"}};function me(e={}){var r;const t=e.locale??"en",s=Ht[t]??Ht.en,o=((r=e.messages)==null?void 0:r[t])??{};return{...Ht.en,...s,...o}}function ai(e){const t=w(()=>me({locale:e.store.locale.value,messages:e.store.messages.value}));return d("div",{class:"bk-toolbar",role:"toolbar","aria-label":"Flipbook controls",children:[d("div",{class:"bk-btn-group",children:[d("button",{type:"button",class:w(()=>`bk-btn ${e.store.showThumbs.value?"active":""}`),onClick:e.onToggleThumbs,"aria-label":w(()=>t.value.thumbnails||"Thumbnails"),"aria-pressed":w(()=>e.store.showThumbs.value?"true":"false"),title:w(()=>t.value.thumbnails||"Thumbnails"),children:d("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",children:[d("rect",{x:"3",y:"3",width:"7",height:"7"}),d("rect",{x:"14",y:"3",width:"7",height:"7"}),d("rect",{x:"14",y:"14",width:"7",height:"7"}),d("rect",{x:"3",y:"14",width:"7",height:"7"})]})}),w(()=>e.store.toc.value.length?d("button",{type:"button",class:w(()=>e.store.showToc.value?"bk-btn active":"bk-btn"),onClick:e.onToggleToc,"aria-label":w(()=>t.value.tableOfContents||"Table of Contents"),"aria-pressed":w(()=>e.store.showToc.value?"true":"false"),title:w(()=>t.value.tableOfContents||"Table of Contents"),children:d("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",children:[d("line",{x1:"8",y1:"6",x2:"21",y2:"6"}),d("line",{x1:"8",y1:"12",x2:"21",y2:"12"}),d("line",{x1:"8",y1:"18",x2:"21",y2:"18"}),d("line",{x1:"3",y1:"6",x2:"3.01",y2:"6"}),d("line",{x1:"3",y1:"12",x2:"3.01",y2:"12"}),d("line",{x1:"3",y1:"18",x2:"3.01",y2:"18"})]})}):null),d("button",{type:"button",class:w(()=>`bk-btn bz-hide-mobile ${e.store.isSingleMode.value?"active":""}`),onClick:e.onToggleSingleMode,"aria-label":w(()=>t.value.singlePageMode||"Single Page"),"aria-pressed":w(()=>e.store.isSingleMode.value?"true":"false"),title:w(()=>t.value.singlePageMode||"Single Page"),children:d("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",children:[d("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),d("polyline",{points:"14 2 14 8 20 8"}),d("line",{x1:"16",y1:"13",x2:"8",y2:"13"}),d("line",{x1:"16",y1:"17",x2:"8",y2:"17"}),d("polyline",{points:"10 9 9 9 8 9"})]})}),d("button",{type:"button",class:w(()=>`bk-btn ${e.store.isAutoPlaying.value?"active":""}`),onClick:e.onToggleAutoPlay,"aria-label":w(()=>e.store.isAutoPlaying.value?t.value.pause||"Pause":t.value.play||"Play"),"aria-pressed":w(()=>e.store.isAutoPlaying.value?"true":"false"),title:w(()=>e.store.isAutoPlaying.value?t.value.pause||"Pause":t.value.play||"Play"),children:[d("svg",{style:{display:w(()=>e.store.isAutoPlaying.value?"block":"none")},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",children:[d("rect",{x:"6",y:"4",width:"4",height:"16"}),d("rect",{x:"14",y:"4",width:"4",height:"16"})]}),d("svg",{style:{display:w(()=>e.store.isAutoPlaying.value?"none":"block")},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",children:d("polygon",{points:"5 3 19 12 5 21 5 3"})})]})]}),d("div",{class:"bk-btn-group bk-btn-group--center",children:[d("button",{type:"button",class:"bk-btn",onClick:e.onPrevPage,"aria-label":w(()=>t.value.previous||"Previous"),title:w(()=>t.value.previous||"Previous"),children:d("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",children:d("polyline",{points:"15 18 9 12 15 6"})})}),d("span",{class:"bz-page-info","aria-live":"polite","aria-atomic":"true",children:w(()=>{const s=e.store.currentPage.value,o=e.store.totalPages.value;if(e.store.isSingleMode.value||s===0||s>=o-1)return`${s+1} / ${o}`;const r=s%2===1?s:s-1;return`${r+1}-${r+2} / ${o}`})}),d("button",{type:"button",class:"bk-btn",onClick:e.onNextPage,"aria-label":w(()=>t.value.next||"Next"),title:w(()=>t.value.next||"Next"),children:d("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",children:d("polyline",{points:"9 18 15 12 9 6"})})})]}),d("div",{class:"bk-btn-group",children:[d("button",{type:"button",class:"bk-btn",onClick:e.onZoomIn,"aria-label":w(()=>t.value.zoomIn||"Zoom In"),title:w(()=>t.value.zoomIn||"Zoom In"),children:d("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",children:[d("circle",{cx:"11",cy:"11",r:"8"}),d("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"}),d("line",{x1:"11",y1:"8",x2:"11",y2:"14"}),d("line",{x1:"8",y1:"11",x2:"14",y2:"11"})]})}),d("button",{type:"button",class:w(()=>`bk-btn ${e.store.isZoomed.value?"active":""}`),onClick:e.onZoomOut,"aria-label":w(()=>t.value.zoomOut||"Zoom Out"),title:w(()=>t.value.zoomOut||"Zoom Out"),children:d("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",children:[d("circle",{cx:"11",cy:"11",r:"8"}),d("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"}),d("line",{x1:"8",y1:"11",x2:"14",y2:"11"})]})}),d("button",{type:"button",class:"bk-btn bk-btn--fullscreen",onClick:e.onToggleFullscreen,"aria-label":w(()=>t.value.fullscreen||"Fullscreen"),title:w(()=>t.value.fullscreen||"Fullscreen"),children:d("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",children:d("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"})})}),w(()=>e.store.allowDownload.value&&e.store.hasDownloadUrl.value&&e.onDownload?d("button",{type:"button",class:"bk-btn bk-btn--download",onClick:e.onDownload,"aria-label":w(()=>t.value.downloadCatalog||"Download"),title:w(()=>t.value.downloadCatalog||"Download"),children:d("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",children:[d("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),d("polyline",{points:"7 10 12 15 17 10"}),d("line",{x1:"12",y1:"15",x2:"12",y2:"3"})]})}):null),d("button",{type:"button",class:w(()=>`bk-btn ${e.store.soundEnabled.value?"":"muted"}`),onClick:e.onSoundToggle,"aria-label":"Sound","aria-pressed":w(()=>e.store.soundEnabled.value?"true":"false"),title:"Sound",children:[d("svg",{style:{display:w(()=>e.store.soundEnabled.value?"block":"none")},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",children:[d("polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5"}),d("path",{d:"M15.54 8.46a5 5 0 0 1 0 7.07"}),d("path",{d:"M19.07 4.93a10 10 0 0 1 0 14.14"})]}),d("svg",{style:{display:w(()=>e.store.soundEnabled.value?"none":"block")},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",children:[d("polygon",{points:"11 5 6 9 2 9 2 15 6 15 11 19 11 5"}),d("line",{x1:"23",y1:"9",x2:"17",y2:"15"}),d("line",{x1:"17",y1:"9",x2:"23",y2:"15"})]})]})]})]})}function li(e){return d("div",{class:"bk-thumbs",style:w(()=>e.store.showThumbs.value?"display:flex;":"display:none;"),children:e.store.pages.value.map((t,s)=>{const o=()=>{const r=e.store.currentPage.value;if(e.store.isSingleMode.value||r===0||r>=e.store.pages.value.length-1)return r===s;const l=r%2===1?r:r-1;return s===l||s===l+1};return d("div",{class:w(()=>`thumb-item ${o()?"active":""}`),role:"button",tabindex:"0","aria-label":`Go to page ${s+1}`,"aria-current":w(()=>o()?"page":void 0),onClick:()=>e.onThumbClick(s),onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),e.onThumbClick(s))},children:[d("div",{class:"thumb-img-wrapper",children:d("img",{"data-pdf-page":t.assetId.startsWith("pdf-page-")?t.pageNumber:void 0,class:"thumb-img",src:t.thumb||t.low||t.normal,alt:`Page ${s+1}`,loading:"lazy",onError:r=>{r.currentTarget.style.display="none"}})}),d("span",{children:s+1})]})})})}function we(e,t,s){return d("ol",{class:"bk-toc-list",children:e.map(o=>{var r;return d("li",{class:"bk-toc-item",children:[d("button",{type:"button",class:w(()=>t.currentPage.value===o.pageIndex?"bk-toc-entry active":"bk-toc-entry"),"aria-current":w(()=>t.currentPage.value===o.pageIndex?"page":void 0),onClick:()=>s(o.pageIndex),children:[d("span",{class:"bk-toc-title",children:o.title}),d("span",{class:"bk-toc-page",children:o.pageIndex+1})]}),(r=o.children)!=null&&r.length?we(o.children,t,s):null]})})})}function hi(e){const t=w(()=>me({locale:e.store.locale.value,messages:e.store.messages.value}));return d("nav",{class:"bk-toc","aria-label":w(()=>t.value.tableOfContents||"Table of Contents"),style:w(()=>e.store.showToc.value&&e.store.toc.value.length?"display:flex;":"display:none;"),children:[d("div",{class:"bk-toc-heading",children:w(()=>t.value.tableOfContents||"Table of Contents")}),we(e.store.toc.value,e.store,e.onEntryClick)]})}function ci(e){return d("div",{role:"region","aria-label":"Flipbook viewer",class:w(()=>{let t="bk-book-wrapper ";return e.store.isDoublePageLayout.value&&(t+="double-mode "),e.store.isFrontCover.value&&(t+="bk-is-cover "),e.store.isBackCover.value&&(t+="bk-is-back-cover "),e.store.zoomState.value.isActive&&(t+="zoomed "),t.trim()}),ref:e.bookWrapperRef,children:d("div",{class:"bk-book-sizer",ref:e.bookSizerRef,children:[d("div",{ref:e.bookContainerRef,class:w(()=>"bk-book "+(e.store.flipState.value!=="read"?"is-flipping":"")),style:w(()=>`display: ${e.store.isSingleMode.value?"none":"block"};`),children:e.store.pages.value.map((t,s)=>{const o=s===0||s===e.store.pages.value.length-1;return d("div",{class:`bz-page ${s===0?"bz-page--cover":""} ${s===e.store.pages.value.length-1?"bz-page--back":""}`,"data-density":o?"hard":"soft","data-idx":s,children:d("div",{class:"bz-page-content",style:"position:relative; width:100%; height:100%; overflow:hidden;",children:[d("img",{"data-pdf-page":t.assetId.startsWith("pdf-page-")?t.pageNumber:void 0,src:t.low||t.normal,"data-src":t.normal,class:`page-content ${t.cropMode!=="full"?"page-content--split page-content--"+t.cropMode:""}`,alt:`Page ${s+1}`,loading:"lazy"}),d("div",{class:"page-shadow"})]})})})}),d("div",{class:"bk-single-view",style:w(()=>`display: ${e.store.isSingleMode.value?"flex":"none"}; width: 100%; height: 100%; justify-content: center; align-items: center; position: absolute; top: 0; left: 0; z-index: 10;`),children:w(()=>{const t=e.store.pages.value[e.store.currentPage.value];return t?d("img",{"data-pdf-page":t.assetId.startsWith("pdf-page-")?t.pageNumber:void 0,class:`bk-single-img page-content ${t.cropMode!=="full"?"page-content--split page-content--"+t.cropMode:""}`,src:e.store.zoomState.value.isActive?t.normal:t.low||t.normal,alt:`Page ${e.store.currentPage.value+1}`,style:"opacity: 1; transition: opacity 0.3s; box-shadow: var(--flipbook-shadow);"}):null})})]})})}function di(e){const t=w(()=>e.store.showArrows.value&&e.store.currentPage.value>0),s=w(()=>!e.store.showArrows.value||e.store.totalPages.value<=1?!1:e.store.currentPage.value<e.store.totalPages.value-1);return d("div",{class:"bk-nav-arrows",style:w(()=>e.store.showArrows.value?"display: flex;":"display: none;"),children:[d("button",{type:"button",class:"bk-nav-arrow bk-nav-prev",style:w(()=>t.value?"visibility: visible;":"visibility: hidden;"),onClick:o=>{o.preventDefault(),e.onPrevPage()},"aria-label":"Previous Page",children:d("div",{class:"bk-arrow-icon bk-arrow-left"})}),d("button",{type:"button",class:"bk-nav-arrow bk-nav-next",style:w(()=>s.value?"visibility: visible;":"visibility: hidden;"),onClick:o=>{o.preventDefault(),e.onNextPage()},"aria-label":"Next Page",children:d("div",{class:"bk-arrow-icon bk-arrow-right"})})]})}function ui(e){const t=()=>{e.store.showThumbs.value=!e.store.showThumbs.value},s=()=>{e.store.showToc.value=!e.store.showToc.value},o=()=>{e.store.isSingleMode.value=!e.store.isSingleMode.value},r=()=>{e.store.isAutoPlaying.value=!e.store.isAutoPlaying.value},l=()=>{var T;(T=e.interactionManagerRef.current)==null||T.zoomIn()},u=()=>{var T;(T=e.interactionManagerRef.current)==null||T.zoomOut()},p=()=>e.onToggleFullscreen(),b=T=>{e.store.currentPage.value=T,e.store.showToc.value=!1},x=T=>{var k;e.store.currentPage.value!==T&&(e.store.currentPage.value=T,(k=e.pageFlipAdapterRef.current)==null||k.playSound())},I=()=>{var T;(T=e.pageFlipAdapterRef.current)==null||T.turnToNextPage()},F=()=>{var T;(T=e.pageFlipAdapterRef.current)==null||T.turnToPrevPage()};return d("div",{class:w(()=>`bk-wrapper bk-theme-${e.store.themeMode.value} ${e.className||""}`),children:[d("div",{class:"bk-main-area",children:[d(ci,{store:e.store,bookWrapperRef:e.bookWrapperRef,bookSizerRef:e.bookSizerRef,bookContainerRef:e.bookContainerRef}),d(di,{store:e.store,onPrevPage:F,onNextPage:I}),e.store.whiteLabel.value?null:d("div",{class:"bk-watermark",children:["Powered by ",d("a",{href:"https://flipbookengine.com",target:"_blank",rel:"noopener",style:"text-decoration: underline;",children:"FlipbookEngine"})]}),d(hi,{store:e.store,onEntryClick:b})]}),d(ai,{store:e.store,onToggleThumbs:t,onToggleToc:s,onToggleSingleMode:o,onZoomIn:l,onZoomOut:u,onDownload:e.onDownload,onNextPage:I,onPrevPage:F,onSoundToggle:()=>e.store.soundEnabled.value=!e.store.soundEnabled.value,onToggleAutoPlay:r,onToggleFullscreen:p}),d(li,{store:e.store,onThumbClick:x})]})}var gi=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Nt={exports:{}};(function(e,t){(function(s,o){o(t)})(gi,function(s){class o{constructor(i,n){this.state={angle:0,area:[],position:{x:0,y:0},hardAngle:0,hardDrawingAngle:0},this.createdDensity=n,this.nowDrawingDensity=this.createdDensity,this.render=i}setDensity(i){this.createdDensity=i,this.nowDrawingDensity=i}setDrawingDensity(i){this.nowDrawingDensity=i}setPosition(i){this.state.position=i}setAngle(i){this.state.angle=i}setArea(i){this.state.area=i}setHardDrawingAngle(i){this.state.hardDrawingAngle=i}setHardAngle(i){this.state.hardAngle=i,this.state.hardDrawingAngle=i}setOrientation(i){this.orientation=i}getDrawingDensity(){return this.nowDrawingDensity}getDensity(){return this.createdDensity}getHardAngle(){return this.state.hardAngle}}class r extends o{constructor(i,n,a){super(i,a),this.image=null,this.isLoad=!1,this.loadingAngle=0,this.image=new Image,this.image.src=n}draw(i){const n=this.render.getContext(),a=this.render.convertToGlobal(this.state.position),h=this.render.getRect().pageWidth,c=this.render.getRect().height;n.save(),n.translate(a.x,a.y),n.beginPath();for(let g of this.state.area)g!==null&&(g=this.render.convertToGlobal(g),n.lineTo(g.x-a.x,g.y-a.y));n.rotate(this.state.angle),n.clip(),this.isLoad?n.drawImage(this.image,0,0,h,c):this.drawLoader(n,{x:0,y:0},h,c),n.restore()}simpleDraw(i){const n=this.render.getRect(),a=this.render.getContext(),h=n.pageWidth,c=n.height,g=i===1?n.left+n.pageWidth:n.left,y=n.top;this.isLoad?a.drawImage(this.image,g,y,h,c):this.drawLoader(a,{x:g,y},h,c)}drawLoader(i,n,a,h){i.beginPath(),i.strokeStyle="rgb(200, 200, 200)",i.fillStyle="rgb(255, 255, 255)",i.lineWidth=1,i.rect(n.x+1,n.y+1,a-1,h-1),i.stroke(),i.fill();const c={x:n.x+a/2,y:n.y+h/2};i.beginPath(),i.lineWidth=10,i.arc(c.x,c.y,20,this.loadingAngle,3*Math.PI/2+this.loadingAngle),i.stroke(),i.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 l{constructor(i,n){this.pages=[],this.currentPageIndex=0,this.currentSpreadIndex=0,this.landscapeSpread=[],this.portraitSpread=[],this.render=n,this.app=i,this.currentPageIndex=0,this.isShowCover=this.app.getSettings().showCover}destroy(){this.pages=[]}createSpread(){this.landscapeSpread=[],this.portraitSpread=[];for(let n=0;n<this.pages.length;n++)this.portraitSpread.push([n]);let i=0;this.isShowCover&&(this.pages[0].setDensity("hard"),this.landscapeSpread.push([i]),i++);for(let n=i;n<this.pages.length;n+=2)n<this.pages.length-1?this.landscapeSpread.push([n,n+1]):(this.landscapeSpread.push([n]),this.pages[n].setDensity("hard"))}getSpread(){return this.render.getOrientation()==="landscape"?this.landscapeSpread:this.portraitSpread}getSpreadIndexByPage(i){const n=this.getSpread();for(let a=0;a<n.length;a++)if(i===n[a][0]||i===n[a][1])return a;return null}getPageCount(){return this.pages.length}getPages(){return this.pages}getPage(i){if(i>=0&&i<this.pages.length)return this.pages[i];throw new Error("Invalid page number")}nextBy(i){const n=this.pages.indexOf(i);return n<this.pages.length-1?this.pages[n+1]:null}prevBy(i){const n=this.pages.indexOf(i);return n>0?this.pages[n-1]:null}getFlippingPage(i){const n=this.currentSpreadIndex;if(this.render.getOrientation()==="portrait")return i===0?this.pages[n].newTemporaryCopy():this.pages[n-1];{const a=i===0?this.getSpread()[n+1]:this.getSpread()[n-1];return a.length===1||i===0?this.pages[a[0]]:this.pages[a[1]]}}getBottomPage(i){const n=this.currentSpreadIndex;if(this.render.getOrientation()==="portrait")return i===0?this.pages[n+1]:this.pages[n-1];{const a=i===0?this.getSpread()[n+1]:this.getSpread()[n-1];return a.length===1?this.pages[a[0]]:i===0?this.pages[a[1]]:this.pages[a[0]]}}showNext(){this.currentSpreadIndex<this.getSpread().length&&(this.currentSpreadIndex++,this.showSpread())}showPrev(){this.currentSpreadIndex>0&&(this.currentSpreadIndex--,this.showSpread())}getCurrentPageIndex(){return this.currentPageIndex}show(i=null){if(i===null&&(i=this.currentPageIndex),i<0||i>=this.pages.length)return;const n=this.getSpreadIndexByPage(i);n!==null&&(this.currentSpreadIndex=n,this.showSpread())}getCurrentSpreadIndex(){return this.currentSpreadIndex}setCurrentSpreadIndex(i){if(!(i>=0&&i<this.getSpread().length))throw new Error("Invalid page");this.currentSpreadIndex=i}showSpread(){const i=this.getSpread()[this.currentSpreadIndex];i.length===2?(this.render.setLeftPage(this.pages[i[0]]),this.render.setRightPage(this.pages[i[1]])):this.render.getOrientation()==="landscape"&&i[0]===this.pages.length-1?(this.render.setLeftPage(this.pages[i[0]]),this.render.setRightPage(null)):(this.render.setLeftPage(null),this.render.setRightPage(this.pages[i[0]])),this.currentPageIndex=i[0],this.app.updatePageIndex(this.currentPageIndex)}}class u extends l{constructor(i,n,a){super(i,n),this.imagesHref=a}load(){for(const i of this.imagesHref){const n=new r(this.render,i,"soft");n.load(),this.pages.push(n)}this.createSpread()}}class p{static GetDistanceBetweenTwoPoint(i,n){return i===null||n===null?1/0:Math.sqrt(Math.pow(n.x-i.x,2)+Math.pow(n.y-i.y,2))}static GetSegmentLength(i){return p.GetDistanceBetweenTwoPoint(i[0],i[1])}static GetAngleBetweenTwoLine(i,n){const a=i[0].y-i[1].y,h=n[0].y-n[1].y,c=i[1].x-i[0].x,g=n[1].x-n[0].x;return Math.acos((a*h+c*g)/(Math.sqrt(a*a+c*c)*Math.sqrt(h*h+g*g)))}static PointInRect(i,n){return n===null?null:n.x>=i.left&&n.x<=i.width+i.left&&n.y>=i.top&&n.y<=i.top+i.height?n:null}static GetRotatedPoint(i,n,a){return{x:i.x*Math.cos(a)+i.y*Math.sin(a)+n.x,y:i.y*Math.cos(a)-i.x*Math.sin(a)+n.y}}static LimitPointToCircle(i,n,a){if(p.GetDistanceBetweenTwoPoint(i,a)<=n)return a;const h=i.x,c=i.y,g=a.x,y=a.y;let f=Math.sqrt(Math.pow(n,2)*Math.pow(h-g,2)/(Math.pow(h-g,2)+Math.pow(c-y,2)))+h;a.x<0&&(f*=-1);let M=(f-h)*(c-y)/(h-g)+c;return h-g+c===0&&(M=n),{x:f,y:M}}static GetIntersectBetweenTwoSegment(i,n,a){return p.PointInRect(i,p.GetIntersectBeetwenTwoLine(n,a))}static GetIntersectBeetwenTwoLine(i,n){const a=i[0].y-i[1].y,h=n[0].y-n[1].y,c=i[1].x-i[0].x,g=n[1].x-n[0].x,y=i[0].x*i[1].y-i[1].x*i[0].y,f=n[0].x*n[1].y-n[1].x*n[0].y,M=a*f-h*y,z=c*f-g*y,H=-(y*g-f*c)/(a*g-h*c),lt=-(a*f-h*y)/(a*g-h*c);if(isFinite(H)&&isFinite(lt))return{x:H,y:lt};if(Math.abs(M-z)<.1)throw new Error("Segment included");return null}static GetCordsFromTwoPoint(i,n){const a=Math.abs(i.x-n.x),h=Math.abs(i.y-n.y),c=Math.max(a,h),g=[i];function y(f,M,z,H,lt){return M>f?f+lt*(z/H):M<f?f-lt*(z/H):f}for(let f=1;f<=c;f+=1)g.push({x:y(i.x,n.x,a,c,f),y:y(i.y,n.y,h,c,f)});return g}}class b extends o{constructor(i,n,a){super(i,a),this.copiedElement=null,this.temporaryCopy=null,this.isLoad=!1,this.element=n,this.element.classList.add("stf__item"),this.element.classList.add("--"+a)}newTemporaryCopy(){return this.nowDrawingDensity==="hard"?this:(this.temporaryCopy===null&&(this.copiedElement=this.element.cloneNode(!0),this.element.parentElement.appendChild(this.copiedElement),this.temporaryCopy=new b(this.render,this.copiedElement,this.nowDrawingDensity)),this.getTemporaryCopy())}getTemporaryCopy(){return this.temporaryCopy}hideTemporaryCopy(){this.temporaryCopy!==null&&(this.copiedElement.remove(),this.copiedElement=null,this.temporaryCopy=null)}draw(i){const n=i||this.nowDrawingDensity,a=this.render.convertToGlobal(this.state.position),h=this.render.getRect().pageWidth,c=this.render.getRect().height;this.element.classList.remove("--simple");const g=`
|
|
2
2
|
display: block;
|
|
3
3
|
z-index: ${this.element.style.zIndex};
|
|
4
4
|
left: 0;
|
|
5
5
|
top: 0;
|
|
6
|
-
width: ${
|
|
7
|
-
height: ${
|
|
8
|
-
`;n==="hard"?this.drawHard(
|
|
6
|
+
width: ${h}px;
|
|
7
|
+
height: ${c}px;
|
|
8
|
+
`;n==="hard"?this.drawHard(g):this.drawSoft(a,g)}drawHard(i=""){const n=this.render.getRect().left+this.render.getRect().width/2,a=this.state.hardDrawingAngle,h=i+`
|
|
9
9
|
backface-visibility: hidden;
|
|
10
10
|
-webkit-backface-visibility: hidden;
|
|
11
11
|
clip-path: none;
|
|
12
12
|
-webkit-clip-path: none;
|
|
13
13
|
`+(this.orientation===0?`transform-origin: ${this.render.getRect().pageWidth}px 0;
|
|
14
14
|
transform: translate3d(0, 0, 0) rotateY(${a}deg);`:`transform-origin: 0 0;
|
|
15
|
-
transform: translate3d(${n}px, 0, 0) rotateY(${a}deg);`);this.element.style.cssText=
|
|
15
|
+
transform: translate3d(${n}px, 0, 0) rotateY(${a}deg);`);this.element.style.cssText=h}drawSoft(i,n=""){let a="polygon( ";for(const c of this.state.area)if(c!==null){let g=this.render.getDirection()===1?{x:-c.x+this.state.position.x,y:c.y-this.state.position.y}:{x:c.x-this.state.position.x,y:c.y-this.state.position.y};g=p.GetRotatedPoint(g,{x:0,y:0},this.state.angle),a+=g.x+"px "+g.y+"px, "}a=a.slice(0,-2),a+=")";const h=n+`transform-origin: 0 0; clip-path: ${a}; -webkit-clip-path: ${a};`+(this.render.isSafari()&&this.state.angle===0?`transform: translate(${i.x}px, ${i.y}px);`:`transform: translate3d(${i.x}px, ${i.y}px, 0) rotate(${this.state.angle}rad);`);this.element.style.cssText=h}simpleDraw(i){const n=this.render.getRect(),a=n.pageWidth,h=n.height,c=i===1?n.left+n.pageWidth:n.left,g=n.top;this.element.classList.add("--simple"),this.element.style.cssText=`
|
|
16
16
|
position: absolute;
|
|
17
17
|
display: block;
|
|
18
|
-
height: ${
|
|
19
|
-
left: ${
|
|
20
|
-
top: ${
|
|
18
|
+
height: ${h}px;
|
|
19
|
+
left: ${c}px;
|
|
20
|
+
top: ${g}px;
|
|
21
21
|
width: ${a}px;
|
|
22
|
-
z-index: ${this.render.getSettings().startZIndex+1};`}getElement(){return this.element}load(){this.isLoad=!0}setOrientation(i){super.setOrientation(i),this.element.classList.remove("--left","--right"),this.element.classList.add(i===1?"--right":"--left")}setDrawingDensity(i){this.element.classList.remove("--soft","--hard"),this.element.classList.add("--"+i),super.setDrawingDensity(i)}}class k extends l{constructor(i,n,a,c){super(i,n),this.element=a,this.pagesElement=c}load(){for(const i of this.pagesElement){const n=new P(this.render,i,i.dataset.density==="hard"?"hard":"soft");n.load(),this.pages.push(n)}this.createSpread()}}class b{constructor(i,n,a,c){this.direction=i,this.corner=n,this.topIntersectPoint=null,this.sideIntersectPoint=null,this.bottomIntersectPoint=null,this.pageWidth=parseInt(a,10),this.pageHeight=parseInt(c,10)}calc(i){try{return this.position=this.calcAngleAndPosition(i),this.calculateIntersectPoint(this.position),!0}catch{return!1}}getFlippingClipArea(){const i=[];let n=!1;return i.push(this.rect.topLeft),i.push(this.topIntersectPoint),this.sideIntersectPoint===null?n=!0:(i.push(this.sideIntersectPoint),this.bottomIntersectPoint===null&&(n=!1)),i.push(this.bottomIntersectPoint),(n||this.corner==="bottom")&&i.push(this.rect.bottomLeft),i}getBottomClipArea(){const i=[];return i.push(this.topIntersectPoint),this.corner==="top"?i.push({x:this.pageWidth,y:0}):(this.topIntersectPoint!==null&&i.push({x:this.pageWidth,y:0}),i.push({x:this.pageWidth,y:this.pageHeight})),this.sideIntersectPoint!==null?p.GetDistanceBetweenTwoPoint(this.sideIntersectPoint,this.topIntersectPoint)>=10&&i.push(this.sideIntersectPoint):this.corner==="top"&&i.push({x:this.pageWidth,y:this.pageHeight}),i.push(this.bottomIntersectPoint),i.push(this.topIntersectPoint),i}getAngle(){return this.direction===0?-this.angle:this.angle}getRect(){return this.rect}getPosition(){return this.position}getActiveCorner(){return this.direction===0?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 this.direction===1?{x:this.pageWidth,y:0}:{x:0,y:0}}getShadowStartPoint(){return this.corner==="top"?this.topIntersectPoint:this.sideIntersectPoint!==null?this.sideIntersectPoint:this.topIntersectPoint}getShadowAngle(){const i=p.GetAngleBetweenTwoLine(this.getSegmentToShadowLine(),[{x:0,y:0},{x:this.pageWidth,y:0}]);return this.direction===0?i:Math.PI-i}calcAngleAndPosition(i){let n=i;if(this.updateAngleAndGeometry(n),n=this.corner==="top"?this.checkPositionAtCenterLine(n,{x:0,y:0},{x:0,y:this.pageHeight}):this.checkPositionAtCenterLine(n,{x:0,y:this.pageHeight},{x:0,y:0}),Math.abs(n.x-this.pageWidth)<1&&Math.abs(n.y)<1)throw new Error("Point is too small");return n}updateAngleAndGeometry(i){this.angle=this.calculateAngle(i),this.rect=this.getPageRect(i)}calculateAngle(i){const n=this.pageWidth-i.x+1,a=this.corner==="bottom"?this.pageHeight-i.y:i.y;let c=2*Math.acos(n/Math.sqrt(a*a+n*n));a<0&&(c=-c);const h=Math.PI-c;if(!isFinite(c)||h>=0&&h<.003)throw new Error("The G point is too small");return this.corner==="bottom"&&(c=-c),c}getPageRect(i){return this.corner==="top"?this.getRectFromBasePoint([{x:0,y:0},{x:this.pageWidth,y:0},{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}],i):this.getRectFromBasePoint([{x:0,y:-this.pageHeight},{x:this.pageWidth,y:-this.pageHeight},{x:0,y:0},{x:this.pageWidth,y:0}],i)}getRectFromBasePoint(i,n){return{topLeft:this.getRotatedPoint(i[0],n),topRight:this.getRotatedPoint(i[1],n),bottomLeft:this.getRotatedPoint(i[2],n),bottomRight:this.getRotatedPoint(i[3],n)}}getRotatedPoint(i,n){return{x:i.x*Math.cos(this.angle)+i.y*Math.sin(this.angle)+n.x,y:i.y*Math.cos(this.angle)-i.x*Math.sin(this.angle)+n.y}}calculateIntersectPoint(i){const n={left:-1,top:-1,width:this.pageWidth+2,height:this.pageHeight+2};this.corner==="top"?(this.topIntersectPoint=p.GetIntersectBetweenTwoSegment(n,[i,this.rect.topRight],[{x:0,y:0},{x:this.pageWidth,y:0}]),this.sideIntersectPoint=p.GetIntersectBetweenTwoSegment(n,[i,this.rect.bottomLeft],[{x:this.pageWidth,y:0},{x:this.pageWidth,y:this.pageHeight}]),this.bottomIntersectPoint=p.GetIntersectBetweenTwoSegment(n,[this.rect.bottomLeft,this.rect.bottomRight],[{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}])):(this.topIntersectPoint=p.GetIntersectBetweenTwoSegment(n,[this.rect.topLeft,this.rect.topRight],[{x:0,y:0},{x:this.pageWidth,y:0}]),this.sideIntersectPoint=p.GetIntersectBetweenTwoSegment(n,[i,this.rect.topLeft],[{x:this.pageWidth,y:0},{x:this.pageWidth,y:this.pageHeight}]),this.bottomIntersectPoint=p.GetIntersectBetweenTwoSegment(n,[this.rect.bottomLeft,this.rect.bottomRight],[{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}]))}checkPositionAtCenterLine(i,n,a){let c=i;const h=p.LimitPointToCircle(n,this.pageWidth,c);c!==h&&(c=h,this.updateAngleAndGeometry(c));const u=Math.sqrt(Math.pow(this.pageWidth,2)+Math.pow(this.pageHeight,2));let v=this.rect.bottomRight,y=this.rect.topLeft;if(this.corner==="bottom"&&(v=this.rect.topRight,y=this.rect.bottomLeft),v.x<=0){const D=p.LimitPointToCircle(a,u,y);D!==c&&(c=D,this.updateAngleAndGeometry(c))}return c}getSegmentToShadowLine(){const i=this.getShadowStartPoint();return[i,i!==this.sideIntersectPoint&&this.sideIntersectPoint!==null?this.sideIntersectPoint:this.bottomIntersectPoint]}}class L{constructor(i,n){this.flippingPage=null,this.bottomPage=null,this.calc=null,this.state="read",this.render=i,this.app=n}fold(i){this.setState("user_fold"),this.calc===null&&this.start(i),this.do(this.render.convertToPage(i))}flip(i){if(this.app.getSettings().disableFlipByClick&&!this.isPointOnCorners(i)||(this.calc!==null&&this.render.finishAnimation(),!this.start(i)))return;const n=this.getBoundsRect();this.setState("flipping");const a=n.height/10,c=this.calc.getCorner()==="bottom"?n.height-a:a,h=this.calc.getCorner()==="bottom"?n.height:0;this.calc.calc({x:n.pageWidth-a,y:c}),this.animateFlippingTo({x:n.pageWidth-a,y:c},{x:-n.pageWidth,y:h},!0)}start(i){this.reset();const n=this.render.convertToBook(i),a=this.getBoundsRect(),c=this.getDirectionByPoint(n),h=n.y>=a.height/2?"bottom":"top";if(!this.checkDirection(c))return!1;try{if(this.flippingPage=this.app.getPageCollection().getFlippingPage(c),this.bottomPage=this.app.getPageCollection().getBottomPage(c),this.render.getOrientation()==="landscape")if(c===1){const u=this.app.getPageCollection().nextBy(this.flippingPage);u!==null&&this.flippingPage.getDensity()!==u.getDensity()&&(this.flippingPage.setDrawingDensity("hard"),u.setDrawingDensity("hard"))}else{const u=this.app.getPageCollection().prevBy(this.flippingPage);u!==null&&this.flippingPage.getDensity()!==u.getDensity()&&(this.flippingPage.setDrawingDensity("hard"),u.setDrawingDensity("hard"))}return this.render.setDirection(c),this.calc=new b(c,h,a.pageWidth.toString(10),a.height.toString(10)),!0}catch{return!1}}do(i){if(this.calc!==null&&this.calc.calc(i)){const n=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()),this.calc.getDirection()===0?this.flippingPage.setHardAngle(90*(200-2*n)/100):this.flippingPage.setHardAngle(-90*(200-2*n)/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(),n,this.calc.getDirection())}}flipToPage(i,n){const a=this.app.getPageCollection().getCurrentSpreadIndex(),c=this.app.getPageCollection().getSpreadIndexByPage(i);try{c>a&&(this.app.getPageCollection().setCurrentSpreadIndex(c-1),this.flipNext(n)),c<a&&(this.app.getPageCollection().setCurrentSpreadIndex(c+1),this.flipPrev(n))}catch{}}flipNext(i){this.flip({x:this.render.getRect().left+2*this.render.getRect().pageWidth-10,y:i==="top"?1:this.render.getRect().height-2})}flipPrev(i){this.flip({x:10,y:i==="top"?1:this.render.getRect().height-2})}stopMove(){if(this.calc===null)return;const i=this.calc.getPosition(),n=this.getBoundsRect(),a=this.calc.getCorner()==="bottom"?n.height:0;i.x<=0?this.animateFlippingTo(i,{x:-n.pageWidth,y:a},!0):this.animateFlippingTo(i,{x:n.pageWidth,y:a},!1)}showCorner(i){if(!this.checkState("read","fold_corner"))return;const n=this.getBoundsRect(),a=n.pageWidth;if(this.isPointOnCorners(i))if(this.calc===null){if(!this.start(i))return;this.setState("fold_corner"),this.calc.calc({x:a-1,y:1});const c=50,h=this.calc.getCorner()==="bottom"?n.height-1:1,u=this.calc.getCorner()==="bottom"?n.height-c:c;this.animateFlippingTo({x:a-1,y:h},{x:a-c,y:u},!1,!1)}else this.do(this.render.convertToPage(i));else this.setState("read"),this.render.finishAnimation(),this.stopMove()}animateFlippingTo(i,n,a,c=!0){const h=p.GetCordsFromTwoPoint(i,n),u=[];for(const y of h)u.push(()=>this.do(y));const v=this.getAnimationDuration(h.length);this.render.startAnimation(u,v,()=>{this.calc&&(a&&(this.calc.getDirection()===1?this.app.turnToPrevPage():this.app.turnToNextPage()),c&&(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(i){this.state!==i&&(this.app.updateState(i),this.state=i)}getDirectionByPoint(i){const n=this.getBoundsRect();if(this.render.getOrientation()==="portrait"){if(i.x-n.pageWidth<=n.width/5)return 1}else if(i.x<n.width/2)return 1;return 0}getAnimationDuration(i){const n=this.app.getSettings().flippingTime;return i>=1e3?n:i/1e3*n}checkDirection(i){return i===0?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(...i){for(const n of i)if(this.state===n)return!0;return!1}isPointOnCorners(i){const n=this.getBoundsRect(),a=n.pageWidth,c=Math.sqrt(Math.pow(a,2)+Math.pow(n.height,2))/5,h=this.render.convertToBook(i);return h.x>0&&h.y>0&&h.x<n.width&&h.y<n.height&&(h.x<c||h.x>n.width-c)&&(h.y<c||h.y>n.height-c)}}class G{constructor(i,n){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=n,this.app=i;const a=new RegExp("Version\\/[\\d\\.]+.*Safari/");this.safari=a.exec(window.navigator.userAgent)!==null}render(i){if(this.animation!==null){const n=Math.round((i-this.animation.startedAt)/this.animation.durationFrame);n<this.animation.frames.length?this.animation.frames[n]():(this.animation.onAnimateEnd(),this.animation=null)}this.timer=i,this.drawFrame()}start(){this.update();const i=n=>{this.render(n),requestAnimationFrame(i)};requestAnimationFrame(i)}startAnimation(i,n,a){this.finishAnimation(),this.animation={frames:i,duration:n,durationFrame:n/i.length,onAnimateEnd:a,startedAt:this.timer}}finishAnimation(){this.animation!==null&&(this.animation.frames[this.animation.frames.length-1](),this.animation.onAnimateEnd!==null&&this.animation.onAnimateEnd()),this.animation=null}update(){this.boundsRect=null;const i=this.calculateBoundsRect();this.orientation!==i&&(this.orientation=i,this.app.updateOrientation(i))}calculateBoundsRect(){let i="landscape";const n=this.getBlockWidth(),a=n/2,c=this.getBlockHeight()/2,h=this.setting.width/this.setting.height;let u=this.setting.width,v=this.setting.height,y=a-u;return this.setting.size==="stretch"?(n<2*this.setting.minWidth&&this.app.getSettings().usePortrait&&(i="portrait"),u=i==="portrait"?this.getBlockWidth():this.getBlockWidth()/2,u>this.setting.maxWidth&&(u=this.setting.maxWidth),v=u/h,v>this.getBlockHeight()&&(v=this.getBlockHeight(),u=v*h),y=i==="portrait"?a-u/2-u:a-u):n<2*u&&this.app.getSettings().usePortrait&&(i="portrait",y=a-u/2-u),this.boundsRect={left:y,top:c-v/2,width:2*u,height:v,pageWidth:u},i}setShadowData(i,n,a,c){if(!this.app.getSettings().drawShadow)return;const h=100*this.getSettings().maxShadowOpacity;this.shadow={pos:i,angle:n,width:3*this.getRect().pageWidth/4*a/100,opacity:(100-a)*h/100/100,direction:c,progress:2*a}}clearShadow(){this.shadow=null}getBlockWidth(){return this.app.getUI().getDistElement().offsetWidth}getBlockHeight(){return this.app.getUI().getDistElement().offsetHeight}getDirection(){return this.direction}getRect(){return this.boundsRect===null&&this.calculateBoundsRect(),this.boundsRect}getSettings(){return this.app.getSettings()}getOrientation(){return this.orientation}setPageRect(i){this.pageRect=i}setDirection(i){this.direction=i}setRightPage(i){i!==null&&i.setOrientation(1),this.rightPage=i}setLeftPage(i){i!==null&&i.setOrientation(0),this.leftPage=i}setBottomPage(i){i!==null&&i.setOrientation(this.direction===1?0:1),this.bottomPage=i}setFlippingPage(i){i!==null&&i.setOrientation(this.direction===0&&this.orientation!=="portrait"?0:1),this.flippingPage=i}convertToBook(i){const n=this.getRect();return{x:i.x-n.left,y:i.y-n.top}}isSafari(){return this.safari}convertToPage(i,n){n||(n=this.direction);const a=this.getRect();return{x:n===0?i.x-a.left-a.width/2:a.width/2-i.x+a.left,y:i.y-a.top}}convertToGlobal(i,n){if(n||(n=this.direction),i==null)return null;const a=this.getRect();return{x:n===0?i.x+a.left+a.width/2:a.width/2-i.x+a.left,y:i.y+a.top}}convertRectToGlobal(i,n){return n||(n=this.direction),{topLeft:this.convertToGlobal(i.topLeft,n),topRight:this.convertToGlobal(i.topRight,n),bottomLeft:this.convertToGlobal(i.bottomLeft,n),bottomRight:this.convertToGlobal(i.bottomRight,n)}}}class E extends G{constructor(i,n,a){super(i,n),this.canvas=a,this.ctx=a.getContext("2d")}getContext(){return this.ctx}reload(){}drawFrame(){this.clear(),this.orientation!=="portrait"&&this.leftPage!=null&&this.leftPage.simpleDraw(0),this.rightPage!=null&&this.rightPage.simpleDraw(1),this.bottomPage!=null&&this.bottomPage.draw(),this.drawBookShadow(),this.flippingPage!=null&&this.flippingPage.draw(),this.shadow!=null&&(this.drawOuterShadow(),this.drawInnerShadow());const i=this.getRect();this.orientation==="portrait"&&(this.ctx.beginPath(),this.ctx.rect(i.left+i.pageWidth,i.top,i.width,i.height),this.ctx.clip())}drawBookShadow(){const i=this.getRect();this.ctx.save(),this.ctx.beginPath();const n=i.width/20;this.ctx.rect(i.left,i.top,i.width,i.height);const a={x:i.left+i.width/2-n/2,y:0};this.ctx.translate(a.x,a.y);const c=this.ctx.createLinearGradient(0,0,n,0);c.addColorStop(0,"rgba(0, 0, 0, 0)"),c.addColorStop(.4,"rgba(0, 0, 0, 0.2)"),c.addColorStop(.49,"rgba(0, 0, 0, 0.1)"),c.addColorStop(.5,"rgba(0, 0, 0, 0.5)"),c.addColorStop(.51,"rgba(0, 0, 0, 0.4)"),c.addColorStop(1,"rgba(0, 0, 0, 0)"),this.ctx.clip(),this.ctx.fillStyle=c,this.ctx.fillRect(0,0,n,2*i.height),this.ctx.restore()}drawOuterShadow(){const i=this.getRect();this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(i.left,i.top,i.width,i.height);const n=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y});this.ctx.translate(n.x,n.y),this.ctx.rotate(Math.PI+this.shadow.angle+Math.PI/2);const a=this.ctx.createLinearGradient(0,0,this.shadow.width,0);this.shadow.direction===0?(this.ctx.translate(0,-100),a.addColorStop(0,"rgba(0, 0, 0, "+this.shadow.opacity+")"),a.addColorStop(1,"rgba(0, 0, 0, 0)")):(this.ctx.translate(-this.shadow.width,-100),a.addColorStop(0,"rgba(0, 0, 0, 0)"),a.addColorStop(1,"rgba(0, 0, 0, "+this.shadow.opacity+")")),this.ctx.clip(),this.ctx.fillStyle=a,this.ctx.fillRect(0,0,this.shadow.width,2*i.height),this.ctx.restore()}drawInnerShadow(){const i=this.getRect();this.ctx.save(),this.ctx.beginPath();const n=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y}),a=this.convertRectToGlobal(this.pageRect);this.ctx.moveTo(a.topLeft.x,a.topLeft.y),this.ctx.lineTo(a.topRight.x,a.topRight.y),this.ctx.lineTo(a.bottomRight.x,a.bottomRight.y),this.ctx.lineTo(a.bottomLeft.x,a.bottomLeft.y),this.ctx.translate(n.x,n.y),this.ctx.rotate(Math.PI+this.shadow.angle+Math.PI/2);const c=3*this.shadow.width/4,h=this.ctx.createLinearGradient(0,0,c,0);this.shadow.direction===0?(this.ctx.translate(-c,-100),h.addColorStop(1,"rgba(0, 0, 0, "+this.shadow.opacity+")"),h.addColorStop(.9,"rgba(0, 0, 0, 0.05)"),h.addColorStop(.7,"rgba(0, 0, 0, "+this.shadow.opacity+")"),h.addColorStop(0,"rgba(0, 0, 0, 0)")):(this.ctx.translate(0,-100),h.addColorStop(0,"rgba(0, 0, 0, "+this.shadow.opacity+")"),h.addColorStop(.1,"rgba(0, 0, 0, 0.05)"),h.addColorStop(.3,"rgba(0, 0, 0, "+this.shadow.opacity+")"),h.addColorStop(1,"rgba(0, 0, 0, 0)")),this.ctx.clip(),this.ctx.fillStyle=h,this.ctx.fillRect(0,0,c,2*i.height),this.ctx.restore()}clear(){this.ctx.fillStyle="white",this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height)}}class M{constructor(i,n,a){this.touchPoint=null,this.swipeTimeout=250,this.onResize=()=>{this.update()},this.onMouseDown=h=>{if(this.checkTarget(h.target)){const u=this.getMousePos(h.clientX,h.clientY);this.app.startUserTouch(u),h.preventDefault()}},this.onTouchStart=h=>{if(this.checkTarget(h.target)&&h.changedTouches.length>0){const u=h.changedTouches[0],v=this.getMousePos(u.clientX,u.clientY);this.touchPoint={point:v,time:Date.now()},setTimeout(()=>{this.touchPoint!==null&&this.app.startUserTouch(v)},this.swipeTimeout),this.app.getSettings().mobileScrollSupport||h.preventDefault()}},this.onMouseUp=h=>{const u=this.getMousePos(h.clientX,h.clientY);this.app.userStop(u)},this.onMouseMove=h=>{const u=this.getMousePos(h.clientX,h.clientY);this.app.userMove(u,!1)},this.onTouchMove=h=>{if(h.changedTouches.length>0){const u=h.changedTouches[0],v=this.getMousePos(u.clientX,u.clientY);this.app.getSettings().mobileScrollSupport?(this.touchPoint!==null&&(Math.abs(this.touchPoint.point.x-v.x)>10||this.app.getState()!=="read")&&h.cancelable&&this.app.userMove(v,!0),this.app.getState()!=="read"&&h.preventDefault()):this.app.userMove(v,!0)}},this.onTouchEnd=h=>{if(h.changedTouches.length>0){const u=h.changedTouches[0],v=this.getMousePos(u.clientX,u.clientY);let y=!1;if(this.touchPoint!==null){const D=v.x-this.touchPoint.point.x,z=Math.abs(v.y-this.touchPoint.point.y);Math.abs(D)>this.swipeDistance&&z<2*this.swipeDistance&&Date.now()-this.touchPoint.time<this.swipeTimeout&&(D>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"),y=!0),this.touchPoint=null}this.app.userStop(v,y)}},this.parentElement=i,i.classList.add("stf__parent"),i.insertAdjacentHTML("afterbegin",'<div class="stf__wrapper"></div>'),this.wrapper=i.querySelector(".stf__wrapper"),this.app=n;const c=this.app.getSettings().usePortrait?1:2;i.style.minWidth=a.minWidth*c+"px",i.style.minHeight=a.minHeight+"px",a.size==="fixed"&&(i.style.minWidth=a.width*c+"px",i.style.minHeight=a.height+"px"),a.autoSize&&(i.style.width="100%",i.style.maxWidth=2*a.maxWidth+"px"),i.style.display="block",window.addEventListener("resize",this.onResize,!1),this.swipeDistance=a.swipeDistance}destroy(){this.app.getSettings().useMouseEvents&&this.removeHandlers(),this.distElement.remove(),this.wrapper.remove()}getDistElement(){return this.distElement}getWrapper(){return this.wrapper}setOrientationStyle(i){this.wrapper.classList.remove("--portrait","--landscape"),i==="portrait"?(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(i,n){const a=this.distElement.getBoundingClientRect();return{x:i-a.left,y:n-a.top}}checkTarget(i){return!this.app.getSettings().clickEventForward||!["a","button"].includes(i.tagName.toLowerCase())}}class H extends M{constructor(i,n,a,c){super(i,n,a),this.wrapper.insertAdjacentHTML("afterbegin",'<div class="stf__block"></div>'),this.distElement=i.querySelector(".stf__block"),this.items=c;for(const h of c)this.distElement.appendChild(h);this.setHandlers()}clear(){for(const i of this.items)this.parentElement.appendChild(i)}updateItems(i){this.removeHandlers(),this.distElement.innerHTML="";for(const n of i)this.distElement.appendChild(n);this.items=i,this.setHandlers()}update(){this.app.getRender().update()}}class Q extends M{constructor(i,n,a){super(i,n,a),this.wrapper.innerHTML='<canvas class="stf__canvas"></canvas>',this.canvas=i.querySelectorAll("canvas")[0],this.distElement=this.canvas,this.resizeCanvas(),this.setHandlers()}resizeCanvas(){const i=getComputedStyle(this.canvas),n=parseInt(i.getPropertyValue("width"),10),a=parseInt(i.getPropertyValue("height"),10);this.canvas.width=n,this.canvas.height=a}getCanvas(){return this.canvas}update(){this.resizeCanvas(),this.app.getRender().update()}}class j extends G{constructor(i,n,a){super(i,n),this.outerShadow=null,this.innerShadow=null,this.hardShadow=null,this.hardInnerShadow=null,this.element=a,this.createShadows()}createShadows(){this.element.insertAdjacentHTML("beforeend",`<div class="stf__outerShadow"></div>
|
|
22
|
+
z-index: ${this.render.getSettings().startZIndex+1};`}getElement(){return this.element}load(){this.isLoad=!0}setOrientation(i){super.setOrientation(i),this.element.classList.remove("--left","--right"),this.element.classList.add(i===1?"--right":"--left")}setDrawingDensity(i){this.element.classList.remove("--soft","--hard"),this.element.classList.add("--"+i),super.setDrawingDensity(i)}}class x extends l{constructor(i,n,a,h){super(i,n),this.element=a,this.pagesElement=h}load(){for(const i of this.pagesElement){const n=new b(this.render,i,i.dataset.density==="hard"?"hard":"soft");n.load(),this.pages.push(n)}this.createSpread()}}class I{constructor(i,n,a,h){this.direction=i,this.corner=n,this.topIntersectPoint=null,this.sideIntersectPoint=null,this.bottomIntersectPoint=null,this.pageWidth=parseInt(a,10),this.pageHeight=parseInt(h,10)}calc(i){try{return this.position=this.calcAngleAndPosition(i),this.calculateIntersectPoint(this.position),!0}catch{return!1}}getFlippingClipArea(){const i=[];let n=!1;return i.push(this.rect.topLeft),i.push(this.topIntersectPoint),this.sideIntersectPoint===null?n=!0:(i.push(this.sideIntersectPoint),this.bottomIntersectPoint===null&&(n=!1)),i.push(this.bottomIntersectPoint),(n||this.corner==="bottom")&&i.push(this.rect.bottomLeft),i}getBottomClipArea(){const i=[];return i.push(this.topIntersectPoint),this.corner==="top"?i.push({x:this.pageWidth,y:0}):(this.topIntersectPoint!==null&&i.push({x:this.pageWidth,y:0}),i.push({x:this.pageWidth,y:this.pageHeight})),this.sideIntersectPoint!==null?p.GetDistanceBetweenTwoPoint(this.sideIntersectPoint,this.topIntersectPoint)>=10&&i.push(this.sideIntersectPoint):this.corner==="top"&&i.push({x:this.pageWidth,y:this.pageHeight}),i.push(this.bottomIntersectPoint),i.push(this.topIntersectPoint),i}getAngle(){return this.direction===0?-this.angle:this.angle}getRect(){return this.rect}getPosition(){return this.position}getActiveCorner(){return this.direction===0?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 this.direction===1?{x:this.pageWidth,y:0}:{x:0,y:0}}getShadowStartPoint(){return this.corner==="top"?this.topIntersectPoint:this.sideIntersectPoint!==null?this.sideIntersectPoint:this.topIntersectPoint}getShadowAngle(){const i=p.GetAngleBetweenTwoLine(this.getSegmentToShadowLine(),[{x:0,y:0},{x:this.pageWidth,y:0}]);return this.direction===0?i:Math.PI-i}calcAngleAndPosition(i){let n=i;if(this.updateAngleAndGeometry(n),n=this.corner==="top"?this.checkPositionAtCenterLine(n,{x:0,y:0},{x:0,y:this.pageHeight}):this.checkPositionAtCenterLine(n,{x:0,y:this.pageHeight},{x:0,y:0}),Math.abs(n.x-this.pageWidth)<1&&Math.abs(n.y)<1)throw new Error("Point is too small");return n}updateAngleAndGeometry(i){this.angle=this.calculateAngle(i),this.rect=this.getPageRect(i)}calculateAngle(i){const n=this.pageWidth-i.x+1,a=this.corner==="bottom"?this.pageHeight-i.y:i.y;let h=2*Math.acos(n/Math.sqrt(a*a+n*n));a<0&&(h=-h);const c=Math.PI-h;if(!isFinite(h)||c>=0&&c<.003)throw new Error("The G point is too small");return this.corner==="bottom"&&(h=-h),h}getPageRect(i){return this.corner==="top"?this.getRectFromBasePoint([{x:0,y:0},{x:this.pageWidth,y:0},{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}],i):this.getRectFromBasePoint([{x:0,y:-this.pageHeight},{x:this.pageWidth,y:-this.pageHeight},{x:0,y:0},{x:this.pageWidth,y:0}],i)}getRectFromBasePoint(i,n){return{topLeft:this.getRotatedPoint(i[0],n),topRight:this.getRotatedPoint(i[1],n),bottomLeft:this.getRotatedPoint(i[2],n),bottomRight:this.getRotatedPoint(i[3],n)}}getRotatedPoint(i,n){return{x:i.x*Math.cos(this.angle)+i.y*Math.sin(this.angle)+n.x,y:i.y*Math.cos(this.angle)-i.x*Math.sin(this.angle)+n.y}}calculateIntersectPoint(i){const n={left:-1,top:-1,width:this.pageWidth+2,height:this.pageHeight+2};this.corner==="top"?(this.topIntersectPoint=p.GetIntersectBetweenTwoSegment(n,[i,this.rect.topRight],[{x:0,y:0},{x:this.pageWidth,y:0}]),this.sideIntersectPoint=p.GetIntersectBetweenTwoSegment(n,[i,this.rect.bottomLeft],[{x:this.pageWidth,y:0},{x:this.pageWidth,y:this.pageHeight}]),this.bottomIntersectPoint=p.GetIntersectBetweenTwoSegment(n,[this.rect.bottomLeft,this.rect.bottomRight],[{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}])):(this.topIntersectPoint=p.GetIntersectBetweenTwoSegment(n,[this.rect.topLeft,this.rect.topRight],[{x:0,y:0},{x:this.pageWidth,y:0}]),this.sideIntersectPoint=p.GetIntersectBetweenTwoSegment(n,[i,this.rect.topLeft],[{x:this.pageWidth,y:0},{x:this.pageWidth,y:this.pageHeight}]),this.bottomIntersectPoint=p.GetIntersectBetweenTwoSegment(n,[this.rect.bottomLeft,this.rect.bottomRight],[{x:0,y:this.pageHeight},{x:this.pageWidth,y:this.pageHeight}]))}checkPositionAtCenterLine(i,n,a){let h=i;const c=p.LimitPointToCircle(n,this.pageWidth,h);h!==c&&(h=c,this.updateAngleAndGeometry(h));const g=Math.sqrt(Math.pow(this.pageWidth,2)+Math.pow(this.pageHeight,2));let y=this.rect.bottomRight,f=this.rect.topLeft;if(this.corner==="bottom"&&(y=this.rect.topRight,f=this.rect.bottomLeft),y.x<=0){const M=p.LimitPointToCircle(a,g,f);M!==h&&(h=M,this.updateAngleAndGeometry(h))}return h}getSegmentToShadowLine(){const i=this.getShadowStartPoint();return[i,i!==this.sideIntersectPoint&&this.sideIntersectPoint!==null?this.sideIntersectPoint:this.bottomIntersectPoint]}}class F{constructor(i,n){this.flippingPage=null,this.bottomPage=null,this.calc=null,this.state="read",this.render=i,this.app=n}fold(i){this.setState("user_fold"),this.calc===null&&this.start(i),this.do(this.render.convertToPage(i))}flip(i){if(this.app.getSettings().disableFlipByClick&&!this.isPointOnCorners(i)||(this.calc!==null&&this.render.finishAnimation(),!this.start(i)))return;const n=this.getBoundsRect();this.setState("flipping");const a=n.height/10,h=this.calc.getCorner()==="bottom"?n.height-a:a,c=this.calc.getCorner()==="bottom"?n.height:0;this.calc.calc({x:n.pageWidth-a,y:h}),this.animateFlippingTo({x:n.pageWidth-a,y:h},{x:-n.pageWidth,y:c},!0)}start(i){this.reset();const n=this.render.convertToBook(i),a=this.getBoundsRect(),h=this.getDirectionByPoint(n),c=n.y>=a.height/2?"bottom":"top";if(!this.checkDirection(h))return!1;try{if(this.flippingPage=this.app.getPageCollection().getFlippingPage(h),this.bottomPage=this.app.getPageCollection().getBottomPage(h),this.render.getOrientation()==="landscape")if(h===1){const g=this.app.getPageCollection().nextBy(this.flippingPage);g!==null&&this.flippingPage.getDensity()!==g.getDensity()&&(this.flippingPage.setDrawingDensity("hard"),g.setDrawingDensity("hard"))}else{const g=this.app.getPageCollection().prevBy(this.flippingPage);g!==null&&this.flippingPage.getDensity()!==g.getDensity()&&(this.flippingPage.setDrawingDensity("hard"),g.setDrawingDensity("hard"))}return this.render.setDirection(h),this.calc=new I(h,c,a.pageWidth.toString(10),a.height.toString(10)),!0}catch{return!1}}do(i){if(this.calc!==null&&this.calc.calc(i)){const n=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()),this.calc.getDirection()===0?this.flippingPage.setHardAngle(90*(200-2*n)/100):this.flippingPage.setHardAngle(-90*(200-2*n)/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(),n,this.calc.getDirection())}}flipToPage(i,n){const a=this.app.getPageCollection().getCurrentSpreadIndex(),h=this.app.getPageCollection().getSpreadIndexByPage(i);try{h>a&&(this.app.getPageCollection().setCurrentSpreadIndex(h-1),this.flipNext(n)),h<a&&(this.app.getPageCollection().setCurrentSpreadIndex(h+1),this.flipPrev(n))}catch{}}flipNext(i){this.flip({x:this.render.getRect().left+2*this.render.getRect().pageWidth-10,y:i==="top"?1:this.render.getRect().height-2})}flipPrev(i){this.flip({x:10,y:i==="top"?1:this.render.getRect().height-2})}stopMove(){if(this.calc===null)return;const i=this.calc.getPosition(),n=this.getBoundsRect(),a=this.calc.getCorner()==="bottom"?n.height:0;i.x<=0?this.animateFlippingTo(i,{x:-n.pageWidth,y:a},!0):this.animateFlippingTo(i,{x:n.pageWidth,y:a},!1)}showCorner(i){if(!this.checkState("read","fold_corner"))return;const n=this.getBoundsRect(),a=n.pageWidth;if(this.isPointOnCorners(i))if(this.calc===null){if(!this.start(i))return;this.setState("fold_corner"),this.calc.calc({x:a-1,y:1});const h=50,c=this.calc.getCorner()==="bottom"?n.height-1:1,g=this.calc.getCorner()==="bottom"?n.height-h:h;this.animateFlippingTo({x:a-1,y:c},{x:a-h,y:g},!1,!1)}else this.do(this.render.convertToPage(i));else this.setState("read"),this.render.finishAnimation(),this.stopMove()}animateFlippingTo(i,n,a,h=!0){const c=p.GetCordsFromTwoPoint(i,n),g=[];for(const f of c)g.push(()=>this.do(f));const y=this.getAnimationDuration(c.length);this.render.startAnimation(g,y,()=>{this.calc&&(a&&(this.calc.getDirection()===1?this.app.turnToPrevPage():this.app.turnToNextPage()),h&&(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(i){this.state!==i&&(this.app.updateState(i),this.state=i)}getDirectionByPoint(i){const n=this.getBoundsRect();if(this.render.getOrientation()==="portrait"){if(i.x-n.pageWidth<=n.width/5)return 1}else if(i.x<n.width/2)return 1;return 0}getAnimationDuration(i){const n=this.app.getSettings().flippingTime;return i>=1e3?n:i/1e3*n}checkDirection(i){return i===0?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(...i){for(const n of i)if(this.state===n)return!0;return!1}isPointOnCorners(i){const n=this.getBoundsRect(),a=n.pageWidth,h=Math.sqrt(Math.pow(a,2)+Math.pow(n.height,2))/5,c=this.render.convertToBook(i);return c.x>0&&c.y>0&&c.x<n.width&&c.y<n.height&&(c.x<h||c.x>n.width-h)&&(c.y<h||c.y>n.height-h)}}class T{constructor(i,n){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=n,this.app=i;const a=new RegExp("Version\\/[\\d\\.]+.*Safari/");this.safari=a.exec(window.navigator.userAgent)!==null}render(i){if(this.animation!==null){const n=Math.round((i-this.animation.startedAt)/this.animation.durationFrame);n<this.animation.frames.length?this.animation.frames[n]():(this.animation.onAnimateEnd(),this.animation=null)}this.timer=i,this.drawFrame()}start(){this.update();const i=n=>{this.render(n),requestAnimationFrame(i)};requestAnimationFrame(i)}startAnimation(i,n,a){this.finishAnimation(),this.animation={frames:i,duration:n,durationFrame:n/i.length,onAnimateEnd:a,startedAt:this.timer}}finishAnimation(){this.animation!==null&&(this.animation.frames[this.animation.frames.length-1](),this.animation.onAnimateEnd!==null&&this.animation.onAnimateEnd()),this.animation=null}update(){this.boundsRect=null;const i=this.calculateBoundsRect();this.orientation!==i&&(this.orientation=i,this.app.updateOrientation(i))}calculateBoundsRect(){let i="landscape";const n=this.getBlockWidth(),a=n/2,h=this.getBlockHeight()/2,c=this.setting.width/this.setting.height;let g=this.setting.width,y=this.setting.height,f=a-g;return this.setting.size==="stretch"?(n<2*this.setting.minWidth&&this.app.getSettings().usePortrait&&(i="portrait"),g=i==="portrait"?this.getBlockWidth():this.getBlockWidth()/2,g>this.setting.maxWidth&&(g=this.setting.maxWidth),y=g/c,y>this.getBlockHeight()&&(y=this.getBlockHeight(),g=y*c),f=i==="portrait"?a-g/2-g:a-g):n<2*g&&this.app.getSettings().usePortrait&&(i="portrait",f=a-g/2-g),this.boundsRect={left:f,top:h-y/2,width:2*g,height:y,pageWidth:g},i}setShadowData(i,n,a,h){if(!this.app.getSettings().drawShadow)return;const c=100*this.getSettings().maxShadowOpacity;this.shadow={pos:i,angle:n,width:3*this.getRect().pageWidth/4*a/100,opacity:(100-a)*c/100/100,direction:h,progress:2*a}}clearShadow(){this.shadow=null}getBlockWidth(){return this.app.getUI().getDistElement().offsetWidth}getBlockHeight(){return this.app.getUI().getDistElement().offsetHeight}getDirection(){return this.direction}getRect(){return this.boundsRect===null&&this.calculateBoundsRect(),this.boundsRect}getSettings(){return this.app.getSettings()}getOrientation(){return this.orientation}setPageRect(i){this.pageRect=i}setDirection(i){this.direction=i}setRightPage(i){i!==null&&i.setOrientation(1),this.rightPage=i}setLeftPage(i){i!==null&&i.setOrientation(0),this.leftPage=i}setBottomPage(i){i!==null&&i.setOrientation(this.direction===1?0:1),this.bottomPage=i}setFlippingPage(i){i!==null&&i.setOrientation(this.direction===0&&this.orientation!=="portrait"?0:1),this.flippingPage=i}convertToBook(i){const n=this.getRect();return{x:i.x-n.left,y:i.y-n.top}}isSafari(){return this.safari}convertToPage(i,n){n||(n=this.direction);const a=this.getRect();return{x:n===0?i.x-a.left-a.width/2:a.width/2-i.x+a.left,y:i.y-a.top}}convertToGlobal(i,n){if(n||(n=this.direction),i==null)return null;const a=this.getRect();return{x:n===0?i.x+a.left+a.width/2:a.width/2-i.x+a.left,y:i.y+a.top}}convertRectToGlobal(i,n){return n||(n=this.direction),{topLeft:this.convertToGlobal(i.topLeft,n),topRight:this.convertToGlobal(i.topRight,n),bottomLeft:this.convertToGlobal(i.bottomLeft,n),bottomRight:this.convertToGlobal(i.bottomRight,n)}}}class k extends T{constructor(i,n,a){super(i,n),this.canvas=a,this.ctx=a.getContext("2d")}getContext(){return this.ctx}reload(){}drawFrame(){this.clear(),this.orientation!=="portrait"&&this.leftPage!=null&&this.leftPage.simpleDraw(0),this.rightPage!=null&&this.rightPage.simpleDraw(1),this.bottomPage!=null&&this.bottomPage.draw(),this.drawBookShadow(),this.flippingPage!=null&&this.flippingPage.draw(),this.shadow!=null&&(this.drawOuterShadow(),this.drawInnerShadow());const i=this.getRect();this.orientation==="portrait"&&(this.ctx.beginPath(),this.ctx.rect(i.left+i.pageWidth,i.top,i.width,i.height),this.ctx.clip())}drawBookShadow(){const i=this.getRect();this.ctx.save(),this.ctx.beginPath();const n=i.width/20;this.ctx.rect(i.left,i.top,i.width,i.height);const a={x:i.left+i.width/2-n/2,y:0};this.ctx.translate(a.x,a.y);const h=this.ctx.createLinearGradient(0,0,n,0);h.addColorStop(0,"rgba(0, 0, 0, 0)"),h.addColorStop(.4,"rgba(0, 0, 0, 0.2)"),h.addColorStop(.49,"rgba(0, 0, 0, 0.1)"),h.addColorStop(.5,"rgba(0, 0, 0, 0.5)"),h.addColorStop(.51,"rgba(0, 0, 0, 0.4)"),h.addColorStop(1,"rgba(0, 0, 0, 0)"),this.ctx.clip(),this.ctx.fillStyle=h,this.ctx.fillRect(0,0,n,2*i.height),this.ctx.restore()}drawOuterShadow(){const i=this.getRect();this.ctx.save(),this.ctx.beginPath(),this.ctx.rect(i.left,i.top,i.width,i.height);const n=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y});this.ctx.translate(n.x,n.y),this.ctx.rotate(Math.PI+this.shadow.angle+Math.PI/2);const a=this.ctx.createLinearGradient(0,0,this.shadow.width,0);this.shadow.direction===0?(this.ctx.translate(0,-100),a.addColorStop(0,"rgba(0, 0, 0, "+this.shadow.opacity+")"),a.addColorStop(1,"rgba(0, 0, 0, 0)")):(this.ctx.translate(-this.shadow.width,-100),a.addColorStop(0,"rgba(0, 0, 0, 0)"),a.addColorStop(1,"rgba(0, 0, 0, "+this.shadow.opacity+")")),this.ctx.clip(),this.ctx.fillStyle=a,this.ctx.fillRect(0,0,this.shadow.width,2*i.height),this.ctx.restore()}drawInnerShadow(){const i=this.getRect();this.ctx.save(),this.ctx.beginPath();const n=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y}),a=this.convertRectToGlobal(this.pageRect);this.ctx.moveTo(a.topLeft.x,a.topLeft.y),this.ctx.lineTo(a.topRight.x,a.topRight.y),this.ctx.lineTo(a.bottomRight.x,a.bottomRight.y),this.ctx.lineTo(a.bottomLeft.x,a.bottomLeft.y),this.ctx.translate(n.x,n.y),this.ctx.rotate(Math.PI+this.shadow.angle+Math.PI/2);const h=3*this.shadow.width/4,c=this.ctx.createLinearGradient(0,0,h,0);this.shadow.direction===0?(this.ctx.translate(-h,-100),c.addColorStop(1,"rgba(0, 0, 0, "+this.shadow.opacity+")"),c.addColorStop(.9,"rgba(0, 0, 0, 0.05)"),c.addColorStop(.7,"rgba(0, 0, 0, "+this.shadow.opacity+")"),c.addColorStop(0,"rgba(0, 0, 0, 0)")):(this.ctx.translate(0,-100),c.addColorStop(0,"rgba(0, 0, 0, "+this.shadow.opacity+")"),c.addColorStop(.1,"rgba(0, 0, 0, 0.05)"),c.addColorStop(.3,"rgba(0, 0, 0, "+this.shadow.opacity+")"),c.addColorStop(1,"rgba(0, 0, 0, 0)")),this.ctx.clip(),this.ctx.fillStyle=c,this.ctx.fillRect(0,0,h,2*i.height),this.ctx.restore()}clear(){this.ctx.fillStyle="white",this.ctx.fillRect(0,0,this.canvas.width,this.canvas.height)}}class D{constructor(i,n,a){this.touchPoint=null,this.swipeTimeout=250,this.onResize=()=>{this.update()},this.onMouseDown=c=>{if(this.checkTarget(c.target)){const g=this.getMousePos(c.clientX,c.clientY);this.app.startUserTouch(g),c.preventDefault()}},this.onTouchStart=c=>{if(this.checkTarget(c.target)&&c.changedTouches.length>0){const g=c.changedTouches[0],y=this.getMousePos(g.clientX,g.clientY);this.touchPoint={point:y,time:Date.now()},setTimeout(()=>{this.touchPoint!==null&&this.app.startUserTouch(y)},this.swipeTimeout),this.app.getSettings().mobileScrollSupport||c.preventDefault()}},this.onMouseUp=c=>{const g=this.getMousePos(c.clientX,c.clientY);this.app.userStop(g)},this.onMouseMove=c=>{const g=this.getMousePos(c.clientX,c.clientY);this.app.userMove(g,!1)},this.onTouchMove=c=>{if(c.changedTouches.length>0){const g=c.changedTouches[0],y=this.getMousePos(g.clientX,g.clientY);this.app.getSettings().mobileScrollSupport?(this.touchPoint!==null&&(Math.abs(this.touchPoint.point.x-y.x)>10||this.app.getState()!=="read")&&c.cancelable&&this.app.userMove(y,!0),this.app.getState()!=="read"&&c.preventDefault()):this.app.userMove(y,!0)}},this.onTouchEnd=c=>{if(c.changedTouches.length>0){const g=c.changedTouches[0],y=this.getMousePos(g.clientX,g.clientY);let f=!1;if(this.touchPoint!==null){const M=y.x-this.touchPoint.point.x,z=Math.abs(y.y-this.touchPoint.point.y);Math.abs(M)>this.swipeDistance&&z<2*this.swipeDistance&&Date.now()-this.touchPoint.time<this.swipeTimeout&&(M>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"),f=!0),this.touchPoint=null}this.app.userStop(y,f)}},this.parentElement=i,i.classList.add("stf__parent"),i.insertAdjacentHTML("afterbegin",'<div class="stf__wrapper"></div>'),this.wrapper=i.querySelector(".stf__wrapper"),this.app=n;const h=this.app.getSettings().usePortrait?1:2;i.style.minWidth=a.minWidth*h+"px",i.style.minHeight=a.minHeight+"px",a.size==="fixed"&&(i.style.minWidth=a.width*h+"px",i.style.minHeight=a.height+"px"),a.autoSize&&(i.style.width="100%",i.style.maxWidth=2*a.maxWidth+"px"),i.style.display="block",window.addEventListener("resize",this.onResize,!1),this.swipeDistance=a.swipeDistance}destroy(){this.app.getSettings().useMouseEvents&&this.removeHandlers(),this.distElement.remove(),this.wrapper.remove()}getDistElement(){return this.distElement}getWrapper(){return this.wrapper}setOrientationStyle(i){this.wrapper.classList.remove("--portrait","--landscape"),i==="portrait"?(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(i,n){const a=this.distElement.getBoundingClientRect();return{x:i-a.left,y:n-a.top}}checkTarget(i){return!this.app.getSettings().clickEventForward||!["a","button"].includes(i.tagName.toLowerCase())}}class B extends D{constructor(i,n,a,h){super(i,n,a),this.wrapper.insertAdjacentHTML("afterbegin",'<div class="stf__block"></div>'),this.distElement=i.querySelector(".stf__block"),this.items=h;for(const c of h)this.distElement.appendChild(c);this.setHandlers()}clear(){for(const i of this.items)this.parentElement.appendChild(i)}updateItems(i){this.removeHandlers(),this.distElement.innerHTML="";for(const n of i)this.distElement.appendChild(n);this.items=i,this.setHandlers()}update(){this.app.getRender().update()}}class V extends D{constructor(i,n,a){super(i,n,a),this.wrapper.innerHTML='<canvas class="stf__canvas"></canvas>',this.canvas=i.querySelectorAll("canvas")[0],this.distElement=this.canvas,this.resizeCanvas(),this.setHandlers()}resizeCanvas(){const i=getComputedStyle(this.canvas),n=parseInt(i.getPropertyValue("width"),10),a=parseInt(i.getPropertyValue("height"),10);this.canvas.width=n,this.canvas.height=a}getCanvas(){return this.canvas}update(){this.resizeCanvas(),this.app.getRender().update()}}class G extends T{constructor(i,n,a){super(i,n),this.outerShadow=null,this.innerShadow=null,this.hardShadow=null,this.hardInnerShadow=null,this.element=a,this.createShadows()}createShadows(){this.element.insertAdjacentHTML("beforeend",`<div class="stf__outerShadow"></div>
|
|
23
23
|
<div class="stf__innerShadow"></div>
|
|
24
24
|
<div class="stf__hardShadow"></div>
|
|
25
|
-
<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 i=this.getRect(),n=this.shadow.progress>100?200-this.shadow.progress:this.shadow.progress;let a=(100-n)*(2.5*i.pageWidth)/100+20;a>i.pageWidth&&(a=i.pageWidth);let
|
|
25
|
+
<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 i=this.getRect(),n=this.shadow.progress>100?200-this.shadow.progress:this.shadow.progress;let a=(100-n)*(2.5*i.pageWidth)/100+20;a>i.pageWidth&&(a=i.pageWidth);let h=`
|
|
26
26
|
display: block;
|
|
27
27
|
z-index: ${(this.getSettings().startZIndex+5).toString(10)};
|
|
28
28
|
width: ${a}px;
|
|
@@ -32,7 +32,7 @@ var FlipbookEngine=function(S,C){"use strict";var bi=Object.defineProperty;var x
|
|
|
32
32
|
rgba(0, 0, 0, 0) 100%);
|
|
33
33
|
left: ${i.left+i.width/2}px;
|
|
34
34
|
transform-origin: 0 0;
|
|
35
|
-
`;
|
|
35
|
+
`;h+=this.getDirection()===0&&this.shadow.progress>100||this.getDirection()===1&&this.shadow.progress<=100?"transform: translate3d(0, 0, 0);":"transform: translate3d(0, 0, 0) rotateY(180deg);",this.hardInnerShadow.style.cssText=h}drawHardOuterShadow(){const i=this.getRect();let n=(100-(this.shadow.progress>100?200-this.shadow.progress:this.shadow.progress))*(2.5*i.pageWidth)/100+20;n>i.pageWidth&&(n=i.pageWidth);let a=`
|
|
36
36
|
display: block;
|
|
37
37
|
z-index: ${(this.getSettings().startZIndex+4).toString(10)};
|
|
38
38
|
width: ${n}px;
|
|
@@ -40,31 +40,31 @@ var FlipbookEngine=function(S,C){"use strict";var bi=Object.defineProperty;var x
|
|
|
40
40
|
background: linear-gradient(to left, rgba(0, 0, 0, ${this.shadow.opacity}) 5%, rgba(0, 0, 0, 0) 100%);
|
|
41
41
|
left: ${i.left+i.width/2}px;
|
|
42
42
|
transform-origin: 0 0;
|
|
43
|
-
`;a+=this.getDirection()===0&&this.shadow.progress>100||this.getDirection()===1&&this.shadow.progress<=100?"transform: translate3d(0, 0, 0) rotateY(180deg);":"transform: translate3d(0, 0, 0);",this.hardShadow.style.cssText=a}drawInnerShadow(){const i=this.getRect(),n=3*this.shadow.width/4,a=this.getDirection()===0?n:0,
|
|
43
|
+
`;a+=this.getDirection()===0&&this.shadow.progress>100||this.getDirection()===1&&this.shadow.progress<=100?"transform: translate3d(0, 0, 0) rotateY(180deg);":"transform: translate3d(0, 0, 0);",this.hardShadow.style.cssText=a}drawInnerShadow(){const i=this.getRect(),n=3*this.shadow.width/4,a=this.getDirection()===0?n:0,h=this.getDirection()===0?"to left":"to right",c=this.convertToGlobal(this.shadow.pos),g=this.shadow.angle+3*Math.PI/2,y=[this.pageRect.topLeft,this.pageRect.topRight,this.pageRect.bottomRight,this.pageRect.bottomLeft];let f="polygon( ";for(const z of y){let H=this.getDirection()===1?{x:-z.x+this.shadow.pos.x,y:z.y-this.shadow.pos.y}:{x:z.x-this.shadow.pos.x,y:z.y-this.shadow.pos.y};H=p.GetRotatedPoint(H,{x:a,y:100},g),f+=H.x+"px "+H.y+"px, "}f=f.slice(0,-2),f+=")";const M=`
|
|
44
44
|
display: block;
|
|
45
45
|
z-index: ${(this.getSettings().startZIndex+10).toString(10)};
|
|
46
46
|
width: ${n}px;
|
|
47
47
|
height: ${2*i.height}px;
|
|
48
|
-
background: linear-gradient(${
|
|
48
|
+
background: linear-gradient(${h},
|
|
49
49
|
rgba(0, 0, 0, ${this.shadow.opacity}) 5%,
|
|
50
50
|
rgba(0, 0, 0, 0.05) 15%,
|
|
51
51
|
rgba(0, 0, 0, ${this.shadow.opacity}) 35%,
|
|
52
52
|
rgba(0, 0, 0, 0) 100%);
|
|
53
53
|
transform-origin: ${a}px 100px;
|
|
54
|
-
transform: translate3d(${
|
|
55
|
-
clip-path: ${
|
|
56
|
-
-webkit-clip-path: ${
|
|
57
|
-
`;this.innerShadow.style.cssText=
|
|
54
|
+
transform: translate3d(${c.x-a}px, ${c.y-100}px, 0) rotate(${g}rad);
|
|
55
|
+
clip-path: ${f};
|
|
56
|
+
-webkit-clip-path: ${f};
|
|
57
|
+
`;this.innerShadow.style.cssText=M}drawOuterShadow(){const i=this.getRect(),n=this.convertToGlobal({x:this.shadow.pos.x,y:this.shadow.pos.y}),a=this.shadow.angle+3*Math.PI/2,h=this.getDirection()===1?this.shadow.width:0,c=this.getDirection()===0?"to right":"to left",g=[{x:0,y:0},{x:i.pageWidth,y:0},{x:i.pageWidth,y:i.height},{x:0,y:i.height}];let y="polygon( ";for(const M of g)if(M!==null){let z=this.getDirection()===1?{x:-M.x+this.shadow.pos.x,y:M.y-this.shadow.pos.y}:{x:M.x-this.shadow.pos.x,y:M.y-this.shadow.pos.y};z=p.GetRotatedPoint(z,{x:h,y:100},a),y+=z.x+"px "+z.y+"px, "}y=y.slice(0,-2),y+=")";const f=`
|
|
58
58
|
display: block;
|
|
59
59
|
z-index: ${(this.getSettings().startZIndex+10).toString(10)};
|
|
60
60
|
width: ${this.shadow.width}px;
|
|
61
61
|
height: ${2*i.height}px;
|
|
62
|
-
background: linear-gradient(${
|
|
63
|
-
transform-origin: ${
|
|
64
|
-
transform: translate3d(${n.x-
|
|
65
|
-
clip-path: ${
|
|
66
|
-
-webkit-clip-path: ${
|
|
67
|
-
`;this.outerShadow.style.cssText=
|
|
62
|
+
background: linear-gradient(${c}, rgba(0, 0, 0, ${this.shadow.opacity}), rgba(0, 0, 0, 0));
|
|
63
|
+
transform-origin: ${h}px 100px;
|
|
64
|
+
transform: translate3d(${n.x-h}px, ${n.y-100}px, 0) rotate(${a}rad);
|
|
65
|
+
clip-path: ${y};
|
|
66
|
+
-webkit-clip-path: ${y};
|
|
67
|
+
`;this.outerShadow.style.cssText=f}drawLeftPage(){this.orientation!=="portrait"&&this.leftPage!==null&&(this.direction===1&&this.flippingPage!==null&&this.flippingPage.getDrawingDensity()==="hard"?(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(){this.rightPage!==null&&(this.direction===0&&this.flippingPage!==null&&this.flippingPage.getDrawingDensity()==="hard"?(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(this.bottomPage===null)return;const i=this.flippingPage!=null?this.flippingPage.getDrawingDensity():null;this.orientation==="portrait"&&this.direction===1||(this.bottomPage.getElement().style.zIndex=(this.getSettings().startZIndex+3).toString(10),this.bottomPage.draw(i))}drawFrame(){this.clear(),this.drawLeftPage(),this.drawRightPage(),this.drawBottomPage(),this.flippingPage!=null&&(this.flippingPage.getElement().style.zIndex=(this.getSettings().startZIndex+5).toString(10),this.flippingPage.draw()),this.shadow!=null&&this.flippingPage!==null&&(this.flippingPage.getDrawingDensity()==="soft"?(this.drawOuterShadow(),this.drawInnerShadow()):(this.drawHardOuterShadow(),this.drawHardInnerShadow()))}clear(){for(const i of this.app.getPageCollection().getPages())i!==this.leftPage&&i!==this.rightPage&&i!==this.flippingPage&&i!==this.bottomPage&&(i.getElement().style.cssText="display: none"),i.getTemporaryCopy()!==this.flippingPage&&i.hideTemporaryCopy()}update(){super.update(),this.rightPage!==null&&this.rightPage.setOrientation(1),this.leftPage!==null&&this.leftPage.setOrientation(0)}}class _{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(i){const n=this._default;if(Object.assign(n,i),n.size!=="stretch"&&n.size!=="fixed")throw new Error('Invalid size type. Available only "fixed" and "stretch" value');if(n.width<=0||n.height<=0)throw new Error("Invalid width or height");if(n.flippingTime<=0)throw new Error("Invalid flipping time");return n.size==="stretch"?(n.minWidth<=0&&(n.minWidth=100),n.maxWidth<n.minWidth&&(n.maxWidth=2e3),n.minHeight<=0&&(n.minHeight=100),n.maxHeight<n.minHeight&&(n.maxHeight=2e3)):(n.minWidth=n.width,n.maxWidth=n.width,n.minHeight=n.height,n.maxHeight=n.height),n}}(function(m,i){i===void 0&&(i={});var n=i.insertAt;if(typeof document<"u"){var a=document.head||document.getElementsByTagName("head")[0],h=document.createElement("style");h.type="text/css",n==="top"&&a.firstChild?a.insertBefore(h,a.firstChild):a.appendChild(h),h.styleSheet?h.styleSheet.cssText=m:h.appendChild(document.createTextNode(m))}})(`.stf__parent {
|
|
68
68
|
position: relative;
|
|
69
69
|
display: block;
|
|
70
70
|
box-sizing: border-box;
|
|
@@ -124,8 +124,8 @@ var FlipbookEngine=function(S,C){"use strict";var bi=Object.defineProperty;var x
|
|
|
124
124
|
position: absolute;
|
|
125
125
|
left: 0;
|
|
126
126
|
top: 0;
|
|
127
|
-
}`),s.PageFlip=class extends class{constructor(){this.events=new Map}on(
|
|
128
|
-
* @license FlipbookEngine v0.
|
|
127
|
+
}`),s.PageFlip=class extends class{constructor(){this.events=new Map}on(m,i){return this.events.has(m)?this.events.get(m).push(i):this.events.set(m,[i]),this}off(m){this.events.delete(m)}trigger(m,i,n=null){if(this.events.has(m))for(const a of this.events.get(m))a({data:n,object:i})}}{constructor(m,i){super(),this.isUserTouch=!1,this.isUserMove=!1,this.setting=null,this.pages=null,this.setting=new _().getSettings(i),this.block=m}destroy(){this.ui.destroy(),this.block.remove()}update(){this.render.update(),this.pages.show()}loadFromImages(m){this.ui=new V(this.block,this,this.setting);const i=this.ui.getCanvas();this.render=new k(this,this.setting,i),this.flipController=new F(this.render,this),this.pages=new u(this,this.render,m),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(m){this.ui=new B(this.block,this,this.setting,m),this.render=new G(this,this.setting,this.ui.getDistElement()),this.flipController=new F(this.render,this),this.pages=new x(this,this.render,this.ui.getDistElement(),m),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(m){const i=this.pages.getCurrentPageIndex();this.pages.destroy(),this.pages=new u(this,this.render,m),this.pages.load(),this.pages.show(i),this.trigger("update",this,{page:i,mode:this.render.getOrientation()})}updateFromHtml(m){const i=this.pages.getCurrentPageIndex();this.pages.destroy(),this.pages=new x(this,this.render,this.ui.getDistElement(),m),this.pages.load(),this.ui.updateItems(m),this.render.reload(),this.pages.show(i),this.trigger("update",this,{page:i,mode:this.render.getOrientation()})}clear(){this.pages.destroy(),this.ui.clear()}turnToPrevPage(){this.pages.showPrev()}turnToNextPage(){this.pages.showNext()}turnToPage(m){this.pages.show(m)}flipNext(m="top"){this.flipController.flipNext(m)}flipPrev(m="top"){this.flipController.flipPrev(m)}flip(m,i="top"){this.flipController.flipToPage(m,i)}updateState(m){this.trigger("changeState",this,m)}updatePageIndex(m){this.trigger("flip",this,m)}updateOrientation(m){this.ui.setOrientationStyle(m),this.update(),this.trigger("changeOrientation",this,m)}getPageCount(){return this.pages.getPageCount()}getCurrentPageIndex(){return this.pages.getCurrentPageIndex()}getPage(m){return this.pages.getPage(m)}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(m){this.mousePosition=m,this.isUserTouch=!0,this.isUserMove=!1}userMove(m,i){this.isUserTouch||i||!this.setting.showPageCorners?this.isUserTouch&&p.GetDistanceBetweenTwoPoint(this.mousePosition,m)>5&&(this.isUserMove=!0,this.flipController.fold(m)):this.flipController.showCorner(m)}userStop(m,i=!1){this.isUserTouch&&(this.isUserTouch=!1,i||(this.isUserMove?this.flipController.stopMove():this.flipController.flip(m)))}},Object.defineProperty(s,"__esModule",{value:!0})})})(Nt,Nt.exports);var pi=Nt.exports;/**
|
|
128
|
+
* @license FlipbookEngine v0.6.0
|
|
129
129
|
* Copyright (c) 2026 Murat Dogan
|
|
130
130
|
*
|
|
131
131
|
* This source code is dual-licensed under the AGPLv3 and a Commercial License.
|
|
@@ -137,8 +137,8 @@ var FlipbookEngine=function(S,C){"use strict";var bi=Object.defineProperty;var x
|
|
|
137
137
|
* closed-source, or SaaS products without the AGPLv3 obligations,
|
|
138
138
|
* you must purchase a Commercial License from:
|
|
139
139
|
* https://flipbookengine.com/pricing
|
|
140
|
-
*/function
|
|
141
|
-
* @license FlipbookEngine v0.
|
|
140
|
+
*/function fi(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function mi(e,t=fi()){return t?0:typeof e=="number"&&e>=0?e:1e3}class wi{constructor(t,s,o){v(this,"pageFlip",null);v(this,"bookContainer");v(this,"options");v(this,"store");v(this,"unsubs",[]);v(this,"audioEl",null);v(this,"audioUnlockHandler",null);v(this,"isLibraryFlipping",!1);v(this,"autoPlayTimer",null);v(this,"layoutUpdateTimer",null);this.bookContainer=t,this.options=s,this.store=o,s.soundUrl&&(this.audioEl=new Audio(s.soundUrl),this.unlockAudio())}unlockAudio(){if(!this.audioEl)return;const t=()=>{if(this.audioEl){const s=this.audioEl.play();s&&typeof s.then=="function"&&s.then(()=>{this.audioEl.pause(),this.audioEl.currentTime=0}).catch(()=>{})}document.removeEventListener("touchstart",t),document.removeEventListener("click",t),this.audioUnlockHandler=null};this.audioUnlockHandler=t,document.addEventListener("touchstart",t,{once:!0}),document.addEventListener("click",t,{once:!0})}init(t,s){this.pageFlip=new pi.PageFlip(this.bookContainer,{width:t,height:s,size:"stretch",minWidth:100,maxWidth:3e3,minHeight:100,maxHeight:3e3,drawShadow:!0,showCover:!0,usePortrait:!0,mobileScrollSupport:!1,maxShadowOpacity:this.options.maxShadowOpacity||.5,flippingTime:mi(this.options.flippingTime)});const o=this.bookContainer.querySelectorAll(".bz-page");this.pageFlip.loadFromHTML(Array.from(o)),this.bindEvents(),this.setupSignalSync()}bindEvents(){this.pageFlip.on("flip",t=>{this.store.currentPage.value!==t.data&&(this.isLibraryFlipping=!0,this.store.currentPage.value=t.data,this.playSound(),this.isLibraryFlipping=!1)}),this.pageFlip.on("changeState",t=>{this.store.flipState.value=t.data}),this.pageFlip.on("changeOrientation",t=>{this.store.orientation.value!==t.data&&(this.store.orientation.value=t.data)})}setupSignalSync(){this.unsubs.push(U(()=>{const t=this.store.currentPage.value,s=this.store.flipState.peek();if(!this.pageFlip||this.isLibraryFlipping||s!=="read")return;const o=this.pageFlip.getCurrentPageIndex();if(o!==t&&!this.store.isSingleMode.value){const r=p=>p===0?0:Math.ceil(p/2),l=r(t),u=r(o);l===u+1?this.pageFlip.flipNext():l===u-1?this.pageFlip.flipPrev():l!==u&&this.pageFlip.turnToPage(t)}})),this.unsubs.push(U(()=>{this.store.isSingleMode.value,this.pageFlip&&(this.layoutUpdateTimer&&clearTimeout(this.layoutUpdateTimer),this.layoutUpdateTimer=setTimeout(()=>{this.layoutUpdateTimer=null,this.pageFlip&&this.pageFlip.update(),window.dispatchEvent(new Event("resize"))},50))})),this.unsubs.push(U(()=>{const t=this.store.isAutoPlaying.value,s=this.store.autoPlayInterval.value||3e3;this.autoPlayTimer&&(clearInterval(this.autoPlayTimer),this.autoPlayTimer=null),t&&(this.autoPlayTimer=setInterval(()=>{const o=this.store.pages.value.length-1;if(this.store.currentPage.peek()>=o||this.store.currentPage.peek()>=o-1&&!this.store.isSingleMode.peek()){this.store.isAutoPlaying.value=!1;return}this.turnToNextPage()},s))}))}turnToNextPage(){if(this.store.isSingleMode.value){const t=this.store.currentPage.value+1;t<this.store.pages.value.length&&(this.store.currentPage.value=t,this.playSound())}else this.pageFlip&&this.pageFlip.flipNext()}turnToPrevPage(){if(this.store.isSingleMode.value){const t=this.store.currentPage.value-1;t>=0&&(this.store.currentPage.value=t,this.playSound())}else this.pageFlip&&this.pageFlip.flipPrev()}playSound(){if(this.store.soundEnabled.value&&this.audioEl){this.audioEl.currentTime=0;const t=this.audioEl.play();t&&typeof t.catch=="function"&&t.catch(s=>console.warn("Flipbook Audio Play Error:",s))}}update(){this.pageFlip&&this.pageFlip.update(),this.layoutUpdateTimer&&(clearTimeout(this.layoutUpdateTimer),this.layoutUpdateTimer=null)}destroy(){this.autoPlayTimer&&(clearInterval(this.autoPlayTimer),this.autoPlayTimer=null),this.audioUnlockHandler&&(document.removeEventListener("touchstart",this.audioUnlockHandler),document.removeEventListener("click",this.audioUnlockHandler),this.audioUnlockHandler=null),this.unsubs.forEach(t=>t()),this.unsubs=[],this.pageFlip&&(this.pageFlip.destroy(),this.pageFlip=null)}}/**
|
|
141
|
+
* @license FlipbookEngine v0.6.0
|
|
142
142
|
* Copyright (c) 2026 Murat Dogan
|
|
143
143
|
*
|
|
144
144
|
* This source code is dual-licensed under the AGPLv3 and a Commercial License.
|
|
@@ -150,8 +150,8 @@ var FlipbookEngine=function(S,C){"use strict";var bi=Object.defineProperty;var x
|
|
|
150
150
|
* closed-source, or SaaS products without the AGPLv3 obligations,
|
|
151
151
|
* you must purchase a Commercial License from:
|
|
152
152
|
* https://flipbookengine.com/pricing
|
|
153
|
-
*/class
|
|
154
|
-
* @license FlipbookEngine v0.
|
|
153
|
+
*/class vi{constructor(t,s){v(this,"wrapperElement",null);v(this,"sizerElement",null);v(this,"pageViewport");v(this,"store");v(this,"resizeObserver",null);v(this,"orientationMediaQuery",null);v(this,"orientationChangeHandler",null);v(this,"unsubs",[]);v(this,"updateTimer",null);v(this,"onResizeCallback");this.pageViewport=t,this.store=s}init(t,s){this.wrapperElement=t,this.sizerElement=s,this.setupResizeObserver(),this.setupOrientationMedia(),this.setupStateSync(),this.updateBookAspectRatio()}setupStateSync(){this.unsubs.push(U(()=>{this.store.isSingleMode.value,this.store.orientation.value,this.scheduleAspectRatioUpdate()}))}setupResizeObserver(){typeof ResizeObserver<"u"&&this.wrapperElement&&(this.resizeObserver=new ResizeObserver(()=>{this.updateBookAspectRatio()}),this.resizeObserver.observe(this.wrapperElement))}setupOrientationMedia(){if(typeof window<"u"&&window.matchMedia){this.orientationMediaQuery=window.matchMedia("(orientation: portrait)");const t=s=>{s.matches,this.updateBookAspectRatio()};this.orientationChangeHandler=t,this.orientationMediaQuery.addEventListener?this.orientationMediaQuery.addEventListener("change",t):this.orientationMediaQuery.addListener(t),t(this.orientationMediaQuery)}}updateBookAspectRatio(){if(!this.wrapperElement||!this.sizerElement)return;const t=this.wrapperElement.clientWidth,s=this.wrapperElement.clientHeight;if(t===0||s===0)return;const o=this.pageViewport.width,r=this.pageViewport.height,u=this.store.isDoublePageLayout.value?o*2/r:o/r;let p=t,b=t/u;b>s&&(b=s,p=s*u);let x=Math.ceil(p);x%2!==0&&(x+=1),this.sizerElement.style.width=`${x}px`,this.sizerElement.style.height=`${Math.floor(b)}px`,this.sizerElement.style.aspectRatio="",this.onResizeCallback&&this.onResizeCallback()}destroy(){this.updateTimer&&(clearTimeout(this.updateTimer),this.updateTimer=null),this.unsubs.forEach(t=>t()),this.unsubs=[],this.resizeObserver&&this.wrapperElement&&(this.resizeObserver.unobserve(this.wrapperElement),this.resizeObserver.disconnect(),this.resizeObserver=null),this.orientationMediaQuery&&(this.orientationChangeHandler&&(this.orientationMediaQuery.removeEventListener?this.orientationMediaQuery.removeEventListener("change",this.orientationChangeHandler):this.orientationMediaQuery.removeListener(this.orientationChangeHandler)),this.orientationChangeHandler=null,this.orientationMediaQuery=null)}scheduleAspectRatioUpdate(){this.updateTimer&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>{this.updateTimer=null,this.updateBookAspectRatio()},10)}}/**
|
|
154
|
+
* @license FlipbookEngine v0.6.0
|
|
155
155
|
* Copyright (c) 2026 Murat Dogan
|
|
156
156
|
*
|
|
157
157
|
* This source code is dual-licensed under the AGPLv3 and a Commercial License.
|
|
@@ -163,13 +163,13 @@ var FlipbookEngine=function(S,C){"use strict";var bi=Object.defineProperty;var x
|
|
|
163
163
|
* closed-source, or SaaS products without the AGPLv3 obligations,
|
|
164
164
|
* you must purchase a Commercial License from:
|
|
165
165
|
* https://flipbookengine.com/pricing
|
|
166
|
-
*/class
|
|
167
|
-
* @license FlipbookEngine v0.
|
|
166
|
+
*/class yi{constructor(t,s,o){v(this,"container");v(this,"pageFlipAdapter");v(this,"store");v(this,"touchStartX",null);v(this,"unsubs",[]);v(this,"listenerAbortController");var l;this.container=t,this.pageFlipAdapter=s,this.store=o;const r=((l=t.ownerDocument.defaultView)==null?void 0:l.AbortController)??globalThis.AbortController;this.listenerAbortController=new r}init(){this.bindWheel(),this.bindMouseDrag(),this.bindTouch(),this.setupStateSync()}setupStateSync(){this.unsubs.push(U(()=>{this.store.isZoomed.value=this.store.zoomState.value.isActive,this.store.zoomState.value.isActive?(this.container.style.transform=`translate(${this.store.zoomState.value.translateX}px, ${this.store.zoomState.value.translateY}px) scale(${this.store.zoomState.value.scale})`,this.container.style.transition="none"):(this.container.style.transform="",this.container.style.transition="transform 0.3s ease")}))}bindWheel(){this.container.addEventListener("wheel",t=>{this.store.zoomState.value.isActive&&(t.preventDefault(),this.updateZoomPan(this.store.zoomState.value.translateX-t.deltaX,this.store.zoomState.value.translateY-t.deltaY))},{passive:!1,signal:this.listenerAbortController.signal})}bindMouseDrag(){let t=!1,s=0,o=0,r=0,l=0;this.container.addEventListener("mousedown",u=>{this.store.zoomState.value.isActive&&(t=!0,s=u.clientX,o=u.clientY,r=this.store.zoomState.value.translateX,l=this.store.zoomState.value.translateY,this.container.style.cursor="grabbing")},{signal:this.listenerAbortController.signal}),window.addEventListener("mousemove",u=>{if(!t||!this.store.zoomState.value.isActive)return;const p=u.clientX-s,b=u.clientY-o;this.updateZoomPan(r+p,l+b)},{signal:this.listenerAbortController.signal}),window.addEventListener("mouseup",()=>{t&&(t=!1,this.container.style.cursor=this.store.zoomState.value.isActive?"grab":"")},{signal:this.listenerAbortController.signal})}bindTouch(){let t=!1,s=0,o=0;this.container.addEventListener("touchstart",r=>{if(r.touches.length===1)if(!this.store.zoomState.value.isActive)this.touchStartX=r.touches[0].clientX;else{t=!0,this.touchStartX=r.touches[0].clientX;const l=r.touches[0].clientY;s=this.store.zoomState.value.translateX,o=this.store.zoomState.value.translateY,this.container._touchStartY=l}},{passive:!0,signal:this.listenerAbortController.signal}),this.container.addEventListener("touchmove",r=>{if(t&&this.store.zoomState.value.isActive&&r.touches.length===1&&this.touchStartX!==null){r.preventDefault();const l=r.touches[0].clientX-this.touchStartX,u=r.touches[0].clientY-this.container._touchStartY;this.updateZoomPan(s+l,o+u)}},{passive:!1,signal:this.listenerAbortController.signal}),this.container.addEventListener("touchend",r=>{if(this.touchStartX!==null&&!this.store.zoomState.value.isActive&&this.store.isSingleMode.value&&r.changedTouches.length===1){const l=r.changedTouches[0].clientX-this.touchStartX;l>50&&this.store.currentPage.value>0?this.pageFlipAdapter.turnToPrevPage():l<-50&&this.store.currentPage.value<this.store.totalPages.value-1&&this.pageFlipAdapter.turnToNextPage()}this.touchStartX=null,t=!1},{passive:!0,signal:this.listenerAbortController.signal})}zoomIn(){let t=this.store.zoomState.value.scale+.5;t>5&&(t=5),this.store.zoomState.value={...this.store.zoomState.value,isActive:t>1,scale:t},t>1&&(this.container.style.cursor="grab")}zoomOut(){let t=this.store.zoomState.value.scale-.5;t<=1?(t=1,this.store.zoomState.value={...this.store.zoomState.value,isActive:!1,translateX:0,translateY:0,scale:1},this.container.style.cursor=""):this.store.zoomState.value={...this.store.zoomState.value,isActive:!0,scale:t}}updateZoomPan(t,s){this.store.zoomState.value={...this.store.zoomState.value,translateX:t,translateY:s}}destroy(){this.listenerAbortController.abort(),this.unsubs.forEach(t=>t()),this.unsubs=[]}}function ve(e,t,s){if(!e||typeof e.title!="string"||!e.title.trim()||!Number.isFinite(e.pageIndex))return null;const o=Math.max(0,t-1),r=Array.isArray(e.children)?e.children.map((l,u)=>ve(l,t,s+"-"+u)).filter(l=>l!==null):[];return{id:e.id??s,title:e.title.trim(),pageIndex:Math.max(0,Math.min(o,Math.trunc(e.pageIndex))),...r.length?{children:r}:{}}}function Bt(e,t){return Array.isArray(e)?e.map((s,o)=>ve(s,t,"toc-"+o)).filter(s=>s!==null):[]}/**
|
|
167
|
+
* @license FlipbookEngine v0.6.0
|
|
168
168
|
* Copyright (c) 2026 Murat Dogan
|
|
169
169
|
*
|
|
170
170
|
* This source code is dual-licensed under the AGPLv3 and a Commercial License.
|
|
171
|
-
*/const
|
|
172
|
-
* @license FlipbookEngine v0.
|
|
171
|
+
*/const ye=()=>({isActive:!1,translateX:0,translateY:0,isDragging:!1,scale:1});function be(){const e=R(0),t=R(0),s=R(!1),o=R(!0),r=R(!1),l=R(!0),u=R("landscape"),p=R("read"),b=R("auto"),x=R(!0),I=R(!1),F=R("#7367f0"),T=R(!1),k=R(!1),D=R(!1),B=R(3e3),V=R(!0),G=R("en"),_=R({}),m=R(ye()),i=R([]),n=R([]),a=w(()=>!s.value&&u.value==="landscape"),h=w(()=>a.value&&e.value===0),c=w(()=>a.value&&e.value>=t.value-1);return{currentPage:e,totalPages:t,isSingleMode:s,showThumbs:o,showToc:r,showArrows:l,orientation:u,flipState:p,themeMode:b,allowDownload:x,hasDownloadUrl:I,primaryColor:F,whiteLabel:T,isZoomed:k,isAutoPlaying:D,autoPlayInterval:B,soundEnabled:V,locale:G,messages:_,zoomState:m,pages:i,toc:n,isDoublePageLayout:a,isFrontCover:h,isBackCover:c,init:(f,M,z,H)=>{t.value=M,i.value=z,I.value=H,f.theme!==void 0&&(b.value=f.theme),f.primaryColor!==void 0&&(F.value=f.primaryColor),f.showThumbs!==void 0&&(o.value=f.showThumbs),f.showToc!==void 0&&(r.value=f.showToc),n.value=Bt(f.toc??[],M),f.showArrows!==void 0&&(l.value=f.showArrows),f.allowDownload!==void 0&&(x.value=f.allowDownload),f.whiteLabel!==void 0&&(T.value=f.whiteLabel),f.soundEnabled!==void 0&&(V.value=f.soundEnabled),f.locale!==void 0&&(G.value=f.locale),f.messages!==void 0&&(_.value=f.messages),f.isSingleMode!==void 0&&(s.value=f.isSingleMode),f.singleMode!==void 0&&(s.value=f.singleMode),f.autoPlay!==void 0&&(D.value=f.autoPlay),f.autoPlayInterval!==void 0&&(B.value=f.autoPlayInterval),e.value=0},reset:()=>{e.value=0,t.value=0,s.value=!1,o.value=!0,l.value=!0,u.value="landscape",p.value="read",b.value="auto",x.value=!0,I.value=!1,F.value="#7367f0",T.value=!1,k.value=!1,D.value=!1,B.value=3e3,V.value=!0,G.value="en",_.value={},m.value=ye(),i.value=[],n.value=[]}}}const C=be();C.currentPage,C.totalPages,C.isSingleMode,C.showThumbs,C.showToc,C.showArrows,C.orientation,C.flipState,C.themeMode,C.allowDownload,C.hasDownloadUrl,C.primaryColor,C.whiteLabel,C.isZoomed,C.isAutoPlaying,C.autoPlayInterval,C.soundEnabled,C.locale,C.messages,C.zoomState,C.pages,C.toc,C.isDoublePageLayout,C.isFrontCover,C.isBackCover;function xe(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.normal=="string"&&typeof t.low=="string"&&typeof t.thumb=="string"}function bi(e){return Array.isArray(e.pageNumbers)&&e.pageNumbers.length>0?e.pageNumbers:typeof e.pageNumber=="number"?e.kind==="spread"?[e.pageNumber,e.pageNumber+1]:[e.pageNumber]:[]}function xi(e){return e==="rtl"?["right","left"]:["left","right"]}function Pe(e){const t=[];let s=1;return e.forEach((o,r)=>{const l=o.kind??"single",u=o.id??`asset-${r}`,p=o.splitDirection??"ltr",b=bi(o);if(l==="spread"){const I=b.length>=2?b.slice(0,2):[s,s+1],F=xi(p);I.forEach((T,k)=>{t.push({index:t.length,assetId:u,pageNumber:T,cropMode:F[k]??"full",normal:o.normal,low:o.low,thumb:o.thumb})}),s=I[I.length-1]+1;return}const x=b[0]??s;t.push({index:t.length,assetId:u,pageNumber:x,cropMode:"full",normal:o.normal,low:o.low,thumb:o.thumb}),s=x+1}),t}function Se(e,t){e.classList.add("bk-container"),e.classList.remove("bk-theme-light","bk-theme-dark"),t.theme==="light"&&e.classList.add("bk-theme-light"),t.theme==="dark"&&e.classList.add("bk-theme-dark"),t.primaryColor&&e.style.setProperty("--flipbook-accent",t.primaryColor);const s=t.cssVariables??{};Object.entries(s).forEach(([o,r])=>{const l=o.startsWith("--")?o:`--${o}`;e.style.setProperty(l,r)})}class Pi{constructor(t=32){v(this,"entries",new Map);v(this,"hits",0);v(this,"misses",0);if(this.maxEntries=t,!Number.isInteger(t)||t<0)throw new RangeError("PDF render cache size must be a non-negative integer.")}get(t){const s=this.entries.get(t);if(s===void 0){this.misses++;return}return this.hits++,this.entries.delete(t),this.entries.set(t,s),s}set(t,s){if(!(this.maxEntries===0||!s))for(this.entries.delete(t),this.entries.set(t,s);this.entries.size>this.maxEntries;){const o=this.entries.keys().next().value;if(o===void 0)break;this.entries.delete(o)}}clear(){this.entries.clear(),this.hits=0,this.misses=0}get size(){return this.entries.size}getStats(){return{size:this.size,maxEntries:this.maxEntries,hits:this.hits,misses:this.misses}}}class Si{constructor(t={}){v(this,"pdfDoc",null);v(this,"loadingTask",null);v(this,"options");v(this,"cache");const s=Number.isFinite(t.cacheSize)?Math.max(0,Math.floor(t.cacheSize)):32;this.options={scale:t.scale||1.5,quality:t.quality||.85,format:t.format||"image/webp",workerSrc:t.workerSrc||"",concurrency:Math.max(1,Math.floor(t.concurrency||3)),cacheSize:s},this.cache=new Pi(this.options.cacheSize),this.options.workerSrc&&(et.GlobalWorkerOptions.workerSrc=this.options.workerSrc)}async loadDocument(t,s){this.throwIfAborted(s),this.cache.clear();const o=et.getDocument(t);this.loadingTask=o;const r=()=>{var l;return(l=o.destroy)==null?void 0:l.call(o)};s==null||s.addEventListener("abort",r,{once:!0});try{return this.pdfDoc=await o.promise,this.throwIfAborted(s),this.pdfDoc.numPages}catch(l){throw s!=null&&s.aborted?this.createAbortError():l}finally{s==null||s.removeEventListener("abort",r),this.loadingTask===o&&(this.loadingTask=null)}}async renderPageToDataUrl(t,s){if(!this.pdfDoc)throw new Error("PDF document is not loaded.");this.throwIfAborted(s);const o=this.cache.get(t);if(o!==void 0)return o;try{const r=await this.pdfDoc.getPage(t);this.throwIfAborted(s);const l=r.getViewport({scale:this.options.scale}),u=document.createElement("canvas");u.width=l.width,u.height=l.height;const p=u.getContext("2d");if(p){const b=r.render({canvasContext:p,viewport:l}),x=()=>{var F;return(F=b.cancel)==null?void 0:F.call(b)};s==null||s.addEventListener("abort",x,{once:!0});try{await b.promise,this.throwIfAborted(s)}finally{s==null||s.removeEventListener("abort",x)}const I=u.toDataURL(this.options.format,this.options.quality);return this.cache.set(t,I),I}throw new Error("Unable to create a PDF canvas rendering context.")}catch(r){throw s!=null&&s.aborted?this.createAbortError():r}}async calculateViewportDimensions(t=420){if(!this.pdfDoc)throw new Error("PDF document is not loaded.");const o=(await this.pdfDoc.getPage(1)).getViewport({scale:1}),r=o.width/o.height;return r>=1?{width:Math.round(t*r),height:t}:{width:t,height:Math.round(t/r)}}async renderAllPages(t,s){if(!this.pdfDoc)return[];this.throwIfAborted(t);const o=this.pdfDoc.numPages,r=new Array(o);let l=1,u=0;const p=async()=>{for(;;){this.throwIfAborted(t);const x=l++;if(x>o)return;const I=await this.renderPageToDataUrl(x,t);r[x-1]={index:x-1,assetId:`pdf-page-${x}`,pageNumber:x,cropMode:"full",normal:I,low:I,thumb:I},u++,s==null||s({completed:u,total:o})}},b=Math.min(this.options.concurrency,o);return await Promise.all(Array.from({length:b},()=>p())),this.throwIfAborted(t),r}getCacheStats(){return this.cache.getStats()}throwIfAborted(t){if(t!=null&&t.aborted)throw this.createAbortError()}createAbortError(){const t=new Error("PDF rendering was aborted.");return t.name="AbortError",t}destroy(){var t,s,o,r;(s=(t=this.loadingTask)==null?void 0:t.destroy)==null||s.call(t),this.loadingTask=null,this.pdfDoc&&((r=(o=this.pdfDoc).destroy)==null||r.call(o),this.pdfDoc=null),this.cache.clear()}}/**
|
|
172
|
+
* @license FlipbookEngine v0.6.0
|
|
173
173
|
* Copyright (c) 2026 Murat Dogan
|
|
174
174
|
*
|
|
175
175
|
* This source code is dual-licensed under the AGPLv3 and a Commercial License.
|
|
@@ -181,5 +181,5 @@ var FlipbookEngine=function(S,C){"use strict";var bi=Object.defineProperty;var x
|
|
|
181
181
|
* closed-source, or SaaS products without the AGPLv3 obligations,
|
|
182
182
|
* you must purchase a Commercial License from:
|
|
183
183
|
* https://flipbookengine.com/pricing
|
|
184
|
-
*/const Pt=class Pt{constructor(t,s={}){w(this,"container",null);w(this,"options");w(this,"store",fe());w(this,"pageFlipAdapter",null);w(this,"layoutManager",null);w(this,"interactionManager",null);w(this,"pdfRenderer",null);w(this,"listeners",{});w(this,"initializationTimer",null);w(this,"initGeneration",0);w(this,"initAbortController",null);w(this,"eventsReady",!1);w(this,"lastEventState",{currentPage:0,zoom:1,zoomActive:!1,showThumbs:!0,isSingle:!1,orientation:""});w(this,"eventSyncStop",null);w(this,"qualityObserver",null);w(this,"pdfLazyStop",null);w(this,"pdfPageRequests",new Map);w(this,"pdfRenderedPages",new Set);this.selector=t,this.options={allowDownload:!0,showThumbs:!0,primaryColor:"#7367f0",theme:"auto",soundUrl:"https://flipbookengine.com/Content/page-flip.mp3",autoPlayInterval:3e3,pdfRenderScale:1.5,pdfRenderQuality:.85,pdfRenderFormat:"image/webp",pdfRenderConcurrency:3,pdfRenderCacheSize:32,...s},this.setupEventSync()}async init(t,s){if(typeof this.selector=="string"?this.container=document.querySelector(this.selector):this.container=this.selector,!this.container)return;this.destroy(!0),this.eventsReady=!1;const o=this.initGeneration,r=new AbortController;this.initAbortController=r;let l=[],d={...Pt.DEFAULT_PAGE_VIEWPORT};if(s&&s.length>0){if(r.signal.aborted)return;const E=s.filter(me);l=we(E);const M=l[0];if(M){const H=await this.loadImageSize(M.low||M.normal);if(H){const j=(M.cropMode!=="full"?H.width/2:H.width)/H.height,U=420;d=j>=1?{width:Math.round(U*j),height:U}:{width:U,height:Math.round(U/j)}}}}else if(t){if(r.signal.aborted)return;let E="load";try{this.pdfRenderer=new yi({scale:this.options.pdfRenderScale,quality:this.options.pdfRenderQuality,format:this.options.pdfRenderFormat,concurrency:this.options.pdfRenderConcurrency,cacheSize:this.options.pdfRenderCacheSize,workerSrc:this.options.pdfWorkerSrc}),this.emit("progress",{phase:"loading",completed:0,total:0});const M=await this.pdfRenderer.loadDocument(t,r.signal);E="render",this.emit("progress",{phase:"loading",completed:1,total:M}),d=await this.pdfRenderer.calculateViewportDimensions(),l=Array.from({length:M},(H,Q)=>this.createPdfPlaceholder(Q+1))}catch(M){r.signal.aborted||(console.error("PDF load failed:",M),this.emit("error",{code:E==="load"?"PDF_LOAD_FAILED":"PDF_RENDER_FAILED",message:M instanceof Error?M.message:"Unable to load PDF.",cause:M}));return}}if(r.signal.aborted||o!==this.initGeneration||!l.length)return;this.store.init(this.options,l.length,l,!!t),ve(this.container,this.options),this.container.innerHTML="";let p,P,k;const b={current:null},L={current:null},G=ai({pageFlipAdapterRef:b,interactionManagerRef:L,bookWrapperRef:E=>p=E,bookSizerRef:E=>P=E,bookContainerRef:E=>k=E,className:this.options.className,store:this.store,onToggleFullscreen:()=>this.toggleFullscreen(),onDownload:()=>{t&&(this.options.onDownload?this.options.onDownload(t):window.open(t,"_blank"))}});this.container.appendChild(G),this.setupQualityLoading(),this.layoutManager=new gi(d,this.store),this.layoutManager.onResizeCallback=()=>{this.pageFlipAdapter&&this.pageFlipAdapter.update()},this.layoutManager.init(p,P),this.pageFlipAdapter=new ui(k,this.options,this.store),b.current=this.pageFlipAdapter,await new Promise(E=>{const M=()=>{r.signal.removeEventListener("abort",M),E()};r.signal.addEventListener("abort",M,{once:!0}),this.initializationTimer=setTimeout(async()=>{if(this.initializationTimer=null,r.signal.removeEventListener("abort",M),r.signal.aborted||o!==this.initGeneration||!this.pageFlipAdapter){E();return}if(this.pageFlipAdapter.init(d.width,d.height),this.interactionManager=new pi(p,this.pageFlipAdapter,this.store),this.interactionManager.init(),L.current=this.interactionManager,this.setupPdfLazyLoading(),this.pdfRenderer&&t)try{await this.renderPdfPage(1,r.signal)}catch{E();return}if(r.signal.aborted||o!==this.initGeneration){E();return}this.eventsReady=!0,this.captureEventState(),this.emit("init",{totalPages:l.length}),E()},10)}),this.initAbortController===r&&(this.initAbortController=null)}createPdfPlaceholder(t){const s="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";return{index:t-1,assetId:"pdf-page-"+t,pageNumber:t,cropMode:"full",normal:s,low:s,thumb:s}}renderPdfPage(t,s){const o=this.pdfRenderer;if(!o)return Promise.resolve("");const r=this.pdfPageRequests.get(t);if(r)return r;if(this.pdfRenderedPages.has(t))return Promise.resolve("");const l=o.renderPageToDataUrl(t,s).then(d=>{var p;if(!d)throw new Error("PDF page "+t+" produced no image.");return this.pdfRenderedPages.add(t),(p=this.container)==null||p.querySelectorAll('img[data-pdf-page="'+t+'"]').forEach(P=>{P.src=d,delete P.dataset.pdfPage}),this.emit("progress",{phase:"rendering",completed:this.pdfRenderedPages.size,total:this.store.totalPages.value}),d}).catch(d=>{throw(d==null?void 0:d.name)==="AbortError"||this.emit("error",{code:"PDF_RENDER_FAILED",message:d instanceof Error?d.message:"Unable to render PDF page.",cause:d}),d}).finally(()=>{this.pdfPageRequests.get(t)===l&&this.pdfPageRequests.delete(t)});return this.pdfPageRequests.set(t,l),l}setupPdfLazyLoading(){var t;(t=this.pdfLazyStop)==null||t.call(this),this.pdfLazyStop=null,this.pdfRenderer&&(this.pdfLazyStop=B(()=>{const s=this.store.currentPage.value+1,o=this.store.totalPages.value;[s,s+1].filter(r=>r<=o).forEach(r=>{this.renderPdfPage(r).catch(()=>{})})}))}loadImageSize(t){return new Promise(s=>{const o=new Image;o.onload=()=>s({width:o.naturalWidth||o.width,height:o.naturalHeight||o.height}),o.onerror=()=>s(null),o.src=t})}goToPage(t){const s=Math.max(0,this.store.totalPages.value-1);this.store.currentPage.value=Math.max(0,Math.min(s,Math.trunc(t)))}getTotalPages(){return this.store.totalPages.value}getCurrentPage(){return this.store.currentPage.value}getZoom(){return this.store.zoomState.value.scale}setZoom(t){const s=Number.isFinite(t)?t:1,o=Math.max(.5,Math.min(5,s));this.store.zoomState.value={...this.store.zoomState.value,scale:o,isActive:o>1,...o<=1?{translateX:0,translateY:0}:{}},this.store.isZoomed.value=o>1}nextPage(){this.pageFlipAdapter&&this.pageFlipAdapter.turnToNextPage()}toggleFullscreen(){var s,o;const t=this.container;t&&(document.fullscreenElement?(o=document.exitFullscreen)==null||o.call(document).catch(r=>console.warn("Exit fullscreen err:",r)):(s=t.requestFullscreen)==null||s.call(t).catch(r=>console.warn("Fullscreen err:",r)))}setLocale(t,s){const o=s?{...this.options.messages,[t]:s[t]??s}:this.options.messages;this.options={...this.options,locale:t,messages:o},this.store.locale.value=t,o&&(this.store.messages.value=o)}prevPage(){this.pageFlipAdapter&&this.pageFlipAdapter.turnToPrevPage()}setSingleMode(t){this.store.isSingleMode.value=t}updateOptions(t){this.options={...this.options,...t},t.theme!==void 0&&(this.store.themeMode.value=t.theme),t.primaryColor!==void 0&&(this.store.primaryColor.value=t.primaryColor),t.showThumbs!==void 0&&(this.store.showThumbs.value=t.showThumbs),t.showArrows!==void 0&&(this.store.showArrows.value=t.showArrows),t.allowDownload!==void 0&&(this.store.allowDownload.value=t.allowDownload),t.whiteLabel!==void 0&&(this.store.whiteLabel.value=t.whiteLabel),t.soundEnabled!==void 0&&(this.store.soundEnabled.value=t.soundEnabled),t.locale!==void 0&&(this.store.locale.value=t.locale),t.messages!==void 0&&(this.store.messages.value=t.messages),t.singleMode!==void 0&&(this.store.isSingleMode.value=t.singleMode),t.isSingleMode!==void 0&&(this.store.isSingleMode.value=t.isSingleMode),t.autoPlay!==void 0&&(this.store.isAutoPlaying.value=t.autoPlay),t.autoPlayInterval!==void 0&&(this.store.autoPlayInterval.value=t.autoPlayInterval),this.container&&ve(this.container,this.options)}async setPages(t,s){if(!(t!=null&&t.length)){s&&await this.init(s);return}await this.init(s||"",t)}setupQualityLoading(){var r;if(this.teardownQualityLoading(),!this.container)return;const t=Array.from(this.container.querySelectorAll("img[data-src], img[data-pdf-page]")),s=l=>{const d=Number(l.dataset.pdfPage);if(Number.isInteger(d)&&d>0){this.renderPdfPage(d).catch(()=>{});return}const p=l.dataset.src;p&&(l.src=p,delete l.dataset.src)},o=(r=this.container.ownerDocument.defaultView)==null?void 0:r.IntersectionObserver;if(!o){const l=new Set;t.forEach(d=>{const p=Number(d.dataset.pdfPage);Number.isInteger(p)&&p>0?l.size<2&&(l.add(p),s(d)):s(d)});return}this.qualityObserver=new o(l=>{l.forEach(d=>{var p;d.isIntersecting&&(s(d.target),(p=this.qualityObserver)==null||p.unobserve(d.target))})},{root:this.container,rootMargin:"240px"}),t.forEach(l=>{var d;return(d=this.qualityObserver)==null?void 0:d.observe(l)})}teardownQualityLoading(){var t;(t=this.qualityObserver)==null||t.disconnect(),this.qualityObserver=null}setupEventSync(){this.eventSyncStop=B(()=>{const t={currentPage:this.store.currentPage.value,zoom:this.store.zoomState.value.scale,zoomActive:this.store.zoomState.value.isActive,showThumbs:this.store.showThumbs.value,isSingle:this.store.isSingleMode.value,orientation:this.store.orientation.value};if(!this.eventsReady){this.lastEventState=t;return}t.currentPage!==this.lastEventState.currentPage&&this.emit("pageChange",{currentPage:t.currentPage,pageNumber:t.currentPage+1,totalPages:this.store.totalPages.value,isSingle:t.isSingle}),(t.zoom!==this.lastEventState.zoom||t.zoomActive!==this.lastEventState.zoomActive)&&this.emit("zoomChange",{zoom:t.zoom,isActive:t.zoomActive}),t.showThumbs!==this.lastEventState.showThumbs&&this.emit("thumbsToggle",{showThumbs:t.showThumbs}),t.isSingle!==this.lastEventState.isSingle&&this.emit("singlePageModeChange",{isSingle:t.isSingle}),t.orientation!==this.lastEventState.orientation&&this.emit("orientationChange",{orientation:t.orientation}),this.lastEventState=t})}captureEventState(){this.lastEventState={currentPage:this.store.currentPage.value,zoom:this.store.zoomState.value.scale,zoomActive:this.store.zoomState.value.isActive,showThumbs:this.store.showThumbs.value,isSingle:this.store.isSingleMode.value,orientation:this.store.orientation.value}}destroy(t=!1){var s,o;this.initGeneration++,(s=this.initAbortController)==null||s.abort(),this.initAbortController=null,this.initializationTimer&&(clearTimeout(this.initializationTimer),this.initializationTimer=null),this.pageFlipAdapter&&this.pageFlipAdapter.destroy(),this.layoutManager&&this.layoutManager.destroy(),this.interactionManager&&this.interactionManager.destroy(),this.teardownQualityLoading(),(o=this.pdfLazyStop)==null||o.call(this),this.pdfLazyStop=null,this.pdfPageRequests.clear(),this.pdfRenderedPages.clear(),this.pdfRenderer&&this.pdfRenderer.destroy(),this.pageFlipAdapter=null,this.layoutManager=null,this.interactionManager=null,this.pdfRenderer=null,!t&&this.container&&(this.container.innerHTML=""),this.emit("destroy",void 0)}on(t,s){const o=this.listeners[t]??new Set;return o.add(s),this.listeners[t]=o,()=>this.off(t,s)}off(t,s){var o;(o=this.listeners[t])==null||o.delete(s)}emit(t,s){var o;(o=this.listeners[t])==null||o.forEach(r=>{r(s)})}};w(Pt,"DEFAULT_PAGE_VIEWPORT",{width:420,height:594});let bt=Pt;const ye=globalThis,be=ye.FlipbookEngine||{};return be.FlipbookEngine=bt,ye.FlipbookEngine=be,S.FlipbookEngine=bt,S.isFlipbookPageAsset=me,S.normalizeFlipbookPages=we,Object.defineProperty(S,Symbol.toStringTag,{value:"Module"}),S}({},pdfjsLib);
|
|
184
|
+
*/const xt=class xt{constructor(t,s={}){v(this,"container",null);v(this,"options");v(this,"store",be());v(this,"pageFlipAdapter",null);v(this,"layoutManager",null);v(this,"interactionManager",null);v(this,"pdfRenderer",null);v(this,"listeners",{});v(this,"initializationTimer",null);v(this,"initGeneration",0);v(this,"initAbortController",null);v(this,"eventsReady",!1);v(this,"lastEventState",{currentPage:0,zoom:1,zoomActive:!1,showThumbs:!0,showToc:!1,isSingle:!1,orientation:""});v(this,"eventSyncStop",null);v(this,"qualityObserver",null);v(this,"pdfLazyStop",null);v(this,"hasActiveSession",!1);v(this,"pdfPageRequests",new Map);v(this,"pdfRenderedPages",new Set);this.selector=t,this.options={allowDownload:!0,showThumbs:!0,primaryColor:"#7367f0",theme:"auto",soundUrl:"https://flipbookengine.com/Content/page-flip.mp3",autoPlayInterval:3e3,pdfRenderScale:1.5,pdfRenderQuality:.85,pdfRenderFormat:"image/webp",pdfRenderConcurrency:3,pdfRenderCacheSize:32,...s},this.setupEventSync()}async init(t,s){if(typeof this.selector=="string"?this.container=document.querySelector(this.selector):this.container=this.selector,!this.container)return;this.eventsReady=!1,this.destroy(!0);const o=this.initGeneration,r=new AbortController;this.initAbortController=r;let l=[],u={...xt.DEFAULT_PAGE_VIEWPORT};if(s&&s.length>0){if(r.signal.aborted)return;const k=s.filter(xe);l=Pe(k);const D=l[0];if(D){const B=await this.loadImageSize(D.low||D.normal);if(B){const G=(D.cropMode!=="full"?B.width/2:B.width)/B.height,_=420;u=G>=1?{width:Math.round(_*G),height:_}:{width:_,height:Math.round(_/G)}}}}else if(t){if(r.signal.aborted)return;let k="load";try{this.pdfRenderer=new Si({scale:this.options.pdfRenderScale,quality:this.options.pdfRenderQuality,format:this.options.pdfRenderFormat,concurrency:this.options.pdfRenderConcurrency,cacheSize:this.options.pdfRenderCacheSize,workerSrc:this.options.pdfWorkerSrc}),this.emit("progress",{phase:"loading",completed:0,total:0});const D=await this.pdfRenderer.loadDocument(t,r.signal);k="render",this.emit("progress",{phase:"loading",completed:1,total:D}),u=await this.pdfRenderer.calculateViewportDimensions(),l=Array.from({length:D},(B,V)=>this.createPdfPlaceholder(V+1))}catch(D){r.signal.aborted||(console.error("PDF load failed:",D),this.emit("error",{code:k==="load"?"PDF_LOAD_FAILED":"PDF_RENDER_FAILED",message:D instanceof Error?D.message:"Unable to load PDF.",cause:D}));return}}if(r.signal.aborted||o!==this.initGeneration||!l.length)return;this.store.init(this.options,l.length,l,!!t),Se(this.container,this.options),this.container.innerHTML="";let p,b,x;const I={current:null},F={current:null},T=ui({pageFlipAdapterRef:I,interactionManagerRef:F,bookWrapperRef:k=>p=k,bookSizerRef:k=>b=k,bookContainerRef:k=>x=k,className:this.options.className,store:this.store,onToggleFullscreen:()=>this.toggleFullscreen(),onDownload:()=>{t&&(this.options.onDownload?this.options.onDownload(t):window.open(t,"_blank"))}});this.container.appendChild(T),this.setupQualityLoading(),this.layoutManager=new vi(u,this.store),this.layoutManager.onResizeCallback=()=>{this.pageFlipAdapter&&this.pageFlipAdapter.update()},this.layoutManager.init(p,b),this.pageFlipAdapter=new wi(x,this.options,this.store),I.current=this.pageFlipAdapter,await new Promise(k=>{const D=()=>{r.signal.removeEventListener("abort",D),k()};r.signal.addEventListener("abort",D,{once:!0}),this.initializationTimer=setTimeout(async()=>{if(this.initializationTimer=null,r.signal.removeEventListener("abort",D),r.signal.aborted||o!==this.initGeneration||!this.pageFlipAdapter){k();return}if(this.pageFlipAdapter.init(u.width,u.height),this.interactionManager=new yi(p,this.pageFlipAdapter,this.store),this.interactionManager.init(),F.current=this.interactionManager,this.setupPdfLazyLoading(),this.pdfRenderer&&t)try{await this.renderPdfPage(1,r.signal)}catch{k();return}if(r.signal.aborted||o!==this.initGeneration){k();return}this.eventsReady=!0,this.captureEventState(),this.hasActiveSession=!0,this.emit("init",{totalPages:l.length}),k()},10)}),this.initAbortController===r&&(this.initAbortController=null)}createPdfPlaceholder(t){const s="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";return{index:t-1,assetId:"pdf-page-"+t,pageNumber:t,cropMode:"full",normal:s,low:s,thumb:s}}renderPdfPage(t,s){const o=this.pdfRenderer,r=this.initGeneration;if(!o)return Promise.resolve("");const l=this.pdfPageRequests.get(t);if(l)return l;if(this.pdfRenderedPages.has(t))return Promise.resolve("");const u=o.renderPageToDataUrl(t,s).then(p=>{var b;if(r!==this.initGeneration||s!=null&&s.aborted)throw this.createAbortError();if(!p)throw new Error("PDF page "+t+" produced no image.");return this.pdfRenderedPages.add(t),(b=this.container)==null||b.querySelectorAll('img[data-pdf-page="'+t+'"]').forEach(x=>{x.src=p,delete x.dataset.pdfPage}),this.emit("progress",{phase:"rendering",completed:this.pdfRenderedPages.size,total:this.store.totalPages.value}),p}).catch(p=>{throw r!==this.initGeneration&&(p==null?void 0:p.name)!=="AbortError"?this.createAbortError():((p==null?void 0:p.name)==="AbortError"||this.emit("error",{code:"PDF_RENDER_FAILED",message:p instanceof Error?p.message:"Unable to render PDF page.",cause:p}),p)}).finally(()=>{this.pdfPageRequests.get(t)===u&&this.pdfPageRequests.delete(t)});return this.pdfPageRequests.set(t,u),u}setupPdfLazyLoading(){var t;(t=this.pdfLazyStop)==null||t.call(this),this.pdfLazyStop=null,this.pdfRenderer&&(this.pdfLazyStop=U(()=>{const s=this.store.currentPage.value+1,o=this.store.totalPages.value;[s,s+1].filter(r=>r<=o).forEach(r=>{this.renderPdfPage(r).catch(()=>{})})}))}loadImageSize(t){return new Promise(s=>{const o=new Image;o.onload=()=>s({width:o.naturalWidth||o.width,height:o.naturalHeight||o.height}),o.onerror=()=>s(null),o.src=t})}goToPage(t){const s=Math.max(0,this.store.totalPages.value-1);this.store.currentPage.value=Math.max(0,Math.min(s,Math.trunc(t)))}getTotalPages(){return this.store.totalPages.value}getCurrentPage(){return this.store.currentPage.value}getZoom(){return this.store.zoomState.value.scale}setZoom(t){const s=Number.isFinite(t)?t:1,o=Math.max(.5,Math.min(5,s));this.store.zoomState.value={...this.store.zoomState.value,scale:o,isActive:o>1,...o<=1?{translateX:0,translateY:0}:{}},this.store.isZoomed.value=o>1}nextPage(){this.pageFlipAdapter&&this.pageFlipAdapter.turnToNextPage()}toggleFullscreen(){var s,o;const t=this.container;t&&(document.fullscreenElement?(o=document.exitFullscreen)==null||o.call(document).catch(r=>console.warn("Exit fullscreen err:",r)):(s=t.requestFullscreen)==null||s.call(t).catch(r=>console.warn("Fullscreen err:",r)))}setLocale(t,s){const o=s?{...this.options.messages,[t]:s[t]??s}:this.options.messages;this.options={...this.options,locale:t,messages:o},this.store.locale.value=t,o&&(this.store.messages.value=o)}prevPage(){this.pageFlipAdapter&&this.pageFlipAdapter.turnToPrevPage()}setSingleMode(t){this.store.isSingleMode.value=t}updateOptions(t){this.options={...this.options,...t},t.theme!==void 0&&(this.store.themeMode.value=t.theme),t.primaryColor!==void 0&&(this.store.primaryColor.value=t.primaryColor),t.showThumbs!==void 0&&(this.store.showThumbs.value=t.showThumbs),t.showToc!==void 0&&(this.store.showToc.value=t.showToc),t.toc!==void 0&&(this.store.toc.value=Bt(t.toc,this.store.totalPages.value)),t.showArrows!==void 0&&(this.store.showArrows.value=t.showArrows),t.allowDownload!==void 0&&(this.store.allowDownload.value=t.allowDownload),t.whiteLabel!==void 0&&(this.store.whiteLabel.value=t.whiteLabel),t.soundEnabled!==void 0&&(this.store.soundEnabled.value=t.soundEnabled),t.locale!==void 0&&(this.store.locale.value=t.locale),t.messages!==void 0&&(this.store.messages.value=t.messages),t.singleMode!==void 0&&(this.store.isSingleMode.value=t.singleMode),t.isSingleMode!==void 0&&(this.store.isSingleMode.value=t.isSingleMode),t.autoPlay!==void 0&&(this.store.isAutoPlaying.value=t.autoPlay),t.autoPlayInterval!==void 0&&(this.store.autoPlayInterval.value=t.autoPlayInterval),this.container&&Se(this.container,this.options)}async setPages(t,s){if(!(t!=null&&t.length)){s&&await this.init(s);return}await this.init(s||"",t)}setupQualityLoading(){var r;if(this.teardownQualityLoading(),!this.container)return;const t=Array.from(this.container.querySelectorAll("img[data-src], img[data-pdf-page]")),s=l=>{const u=Number(l.dataset.pdfPage);if(Number.isInteger(u)&&u>0){this.renderPdfPage(u).catch(()=>{});return}const p=l.dataset.src;p&&(l.src=p,delete l.dataset.src)},o=(r=this.container.ownerDocument.defaultView)==null?void 0:r.IntersectionObserver;if(!o){const l=new Set;t.forEach(u=>{const p=Number(u.dataset.pdfPage);Number.isInteger(p)&&p>0?l.size<2&&(l.add(p),s(u)):s(u)});return}this.qualityObserver=new o(l=>{l.forEach(u=>{var p;u.isIntersecting&&(s(u.target),(p=this.qualityObserver)==null||p.unobserve(u.target))})},{root:this.container,rootMargin:"240px"}),t.forEach(l=>{var u;return(u=this.qualityObserver)==null?void 0:u.observe(l)})}teardownQualityLoading(){var t;(t=this.qualityObserver)==null||t.disconnect(),this.qualityObserver=null}setupEventSync(){this.eventSyncStop=U(()=>{const t={currentPage:this.store.currentPage.value,zoom:this.store.zoomState.value.scale,zoomActive:this.store.zoomState.value.isActive,showThumbs:this.store.showThumbs.value,showToc:this.store.showToc.value,isSingle:this.store.isSingleMode.value,orientation:this.store.orientation.value};if(!this.eventsReady){this.lastEventState=t;return}t.currentPage!==this.lastEventState.currentPage&&this.emit("pageChange",{currentPage:t.currentPage,pageNumber:t.currentPage+1,totalPages:this.store.totalPages.value,isSingle:t.isSingle}),(t.zoom!==this.lastEventState.zoom||t.zoomActive!==this.lastEventState.zoomActive)&&this.emit("zoomChange",{zoom:t.zoom,isActive:t.zoomActive}),t.showThumbs!==this.lastEventState.showThumbs&&this.emit("thumbsToggle",{showThumbs:t.showThumbs}),t.showToc!==this.lastEventState.showToc&&this.emit("tocToggle",{showToc:t.showToc}),t.isSingle!==this.lastEventState.isSingle&&this.emit("singlePageModeChange",{isSingle:t.isSingle}),t.orientation!==this.lastEventState.orientation&&this.emit("orientationChange",{orientation:t.orientation}),this.lastEventState=t})}captureEventState(){this.lastEventState={currentPage:this.store.currentPage.value,zoom:this.store.zoomState.value.scale,zoomActive:this.store.zoomState.value.isActive,showThumbs:this.store.showThumbs.value,showToc:this.store.showToc.value,isSingle:this.store.isSingleMode.value,orientation:this.store.orientation.value}}destroy(t=!1){var o,r;const s=this.hasActiveSession||!!this.initAbortController||!!this.pageFlipAdapter||!!this.layoutManager||!!this.interactionManager||!!this.pdfRenderer;this.initGeneration++,(o=this.initAbortController)==null||o.abort(),this.initAbortController=null,this.initializationTimer&&(clearTimeout(this.initializationTimer),this.initializationTimer=null),this.pageFlipAdapter&&this.pageFlipAdapter.destroy(),this.layoutManager&&this.layoutManager.destroy(),this.interactionManager&&this.interactionManager.destroy(),this.teardownQualityLoading(),(r=this.pdfLazyStop)==null||r.call(this),this.pdfLazyStop=null,this.pdfPageRequests.clear(),this.pdfRenderedPages.clear(),this.pdfRenderer&&this.pdfRenderer.destroy(),this.pageFlipAdapter=null,this.layoutManager=null,this.interactionManager=null,this.pdfRenderer=null,this.eventsReady=!1,this.hasActiveSession=!1,this.store.reset(),!t&&this.container&&(this.container.innerHTML=""),s&&this.emit("destroy",void 0)}createAbortError(){const t=new Error("Flipbook initialization was aborted.");return t.name="AbortError",t}on(t,s){const o=this.listeners[t]??new Set;return o.add(s),this.listeners[t]=o,()=>this.off(t,s)}off(t,s){var o;(o=this.listeners[t])==null||o.delete(s)}emit(t,s){var o;(o=this.listeners[t])==null||o.forEach(r=>{r(s)})}};v(xt,"DEFAULT_PAGE_VIEWPORT",{width:420,height:594});let bt=xt;const Te=globalThis,ke=Te.FlipbookEngine||{};return ke.FlipbookEngine=bt,Te.FlipbookEngine=ke,P.FlipbookEngine=bt,P.isFlipbookPageAsset=xe,P.normalizeFlipbookPages=Pe,P.normalizeFlipbookToc=Bt,Object.defineProperty(P,Symbol.toStringTag,{value:"Module"}),P}({},pdfjsLib);
|
|
185
185
|
//# sourceMappingURL=flipbook-engine.iife.js.map
|