Files
2026-02-09 10:48:21 +01:00

1 line
17 KiB
JavaScript

define(["exports"],function(_exports){function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function(){return!!t})()}function _classPrivateFieldInitSpec(e,t,a){_checkPrivateRedeclaration(e,t),t.set(e,a)}function _checkPrivateRedeclaration(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function _classPrivateFieldSet(s,a,r){s.set(_assertClassBrand(s,a),r)}function _classPrivateFieldGet(s,a){return s.get(_assertClassBrand(s,a))}function _assertClassBrand(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.FixedLayout=void 0;function parseViewport(str){return null==str||null==(str=str.split(/[,;\s]/))||null==(str=str.filter(function(x){return x}))?void 0:str.map(function(x){return x.split("=").map(function(x){return x.trim()})})}var getViewport=function(doc,viewport){var _doc$documentElement$2;return"svg"===doc.documentElement.localName?(_doc$documentElement$2=null!=(_doc$documentElement$2=null==(_doc$documentElement$2=doc.documentElement.getAttribute("viewBox"))?void 0:_doc$documentElement$2.split(/\s/))?_doc$documentElement$2:[],{width:(_doc$documentElement$2=babelHelpers.slicedToArray(_doc$documentElement$2,4))[2],height:_doc$documentElement$2[3]}):(_doc$documentElement$2=parseViewport(null==(_doc$documentElement$2=doc.querySelector('meta[name="viewport"]'))?void 0:_doc$documentElement$2.getAttribute("content")))?Object.fromEntries(_doc$documentElement$2):"string"==typeof viewport?parseViewport(viewport):null!=viewport&&viewport.width&&viewport.height?viewport:(_doc$documentElement$2=doc.querySelector("img"))?{width:_doc$documentElement$2.naturalWidth,height:_doc$documentElement$2.naturalHeight}:(console.warn(new Error("Missing viewport properties")),{width:1e3,height:2e3})},_root=new WeakMap,_observer=new WeakMap,_spreads=new WeakMap,_index=new WeakMap,_rtl=new WeakMap,_oddPages=new WeakMap,_portrait=new WeakMap,_left=new WeakMap,_right=new WeakMap,_center=new WeakMap,_side=new WeakMap,_zoom=new WeakMap,_FixedLayout_brand=new WeakSet,_exports=_exports.FixedLayout=function(_HTMLElement){function FixedLayout(){babelHelpers.classCallCheck(this,FixedLayout),t=this,o=FixedLayout,o=babelHelpers.getPrototypeOf(o),function(e,a){_checkPrivateRedeclaration(e,a),a.add(e)}(_this=babelHelpers.possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],babelHelpers.getPrototypeOf(t).constructor):o.apply(t,e)),_FixedLayout_brand),_classPrivateFieldInitSpec(_this,_root,_this.attachShadow({mode:"closed"})),_classPrivateFieldInitSpec(_this,_observer,new ResizeObserver(function(){return _assertClassBrand(_FixedLayout_brand,_this,_render).call(_this)})),_classPrivateFieldInitSpec(_this,_spreads,void 0),_classPrivateFieldInitSpec(_this,_index,-1),babelHelpers.defineProperty(_this,"defaultViewport",void 0),babelHelpers.defineProperty(_this,"spread",void 0),_classPrivateFieldInitSpec(_this,_rtl,void 0),_classPrivateFieldInitSpec(_this,_oddPages,void 0),_classPrivateFieldInitSpec(_this,_portrait,!1),_classPrivateFieldInitSpec(_this,_left,void 0),_classPrivateFieldInitSpec(_this,_right,void 0),_classPrivateFieldInitSpec(_this,_center,void 0),_classPrivateFieldInitSpec(_this,_side,void 0),_classPrivateFieldInitSpec(_this,_zoom,void 0);var _this,t,e,o=new CSSStyleSheet;return _classPrivateFieldGet(_root,_this).adoptedStyleSheets=[o],o.replaceSync(":host {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: auto;\n }"),_classPrivateFieldSet(_oddPages,_this,_this.getAttribute("odd-pages")),_classPrivateFieldGet(_observer,_this).observe(_this),_this}return babelHelpers.inherits(FixedLayout,_HTMLElement),babelHelpers.createClass(FixedLayout,[{key:"attributeChangedCallback",value:function(name,_,value){switch(name){case"zoom":_classPrivateFieldSet(_zoom,this,"fit-width"!==value&&"fit-page"!==value?parseFloat(value):value),_assertClassBrand(_FixedLayout_brand,this,_render).call(this);break;case"spread":this.spread=value,this.respread();break;case"odd-pages":_classPrivateFieldSet(_oddPages,this,value),_assertClassBrand(_FixedLayout_brand,this,_determineOddPages).call(this),this.respread()}}},{key:"respread",value:function(){_assertClassBrand(_FixedLayout_brand,this,_respread).call(this),this.goToSpread(_classPrivateFieldGet(_index,this),_classPrivateFieldGet(_side,this),"respread")}},{key:"open",value:function(book){var rendition=(this.book=book).rendition;this.spread=this.getAttribute("spread"),this.spread&&"auto"!==this.spread||(this.spread=null==rendition?void 0:rendition.spread),this.defaultViewport=null==rendition?void 0:rendition.viewport,_classPrivateFieldSet(_rtl,this,"rtl"===book.dir),_assertClassBrand(_FixedLayout_brand,this,_determineOddPages).call(this),_assertClassBrand(_FixedLayout_brand,this,_respread).call(this)}},{key:"index",get:function(){var spread=_classPrivateFieldGet(_spreads,this)[_classPrivateFieldGet(_index,this)],_spread$center=null!=(_spread$center=null==spread?void 0:spread.center)?_spread$center:"left"===_classPrivateFieldGet(_side,this)?null!=(_spread$center=spread.left)?_spread$center:spread.right:null!=(_spread$center=spread.right)?_spread$center:spread.left;return this.book.sections.indexOf(_spread$center)}},{key:"getSpreadOf",value:function(section){for(var spreads=_classPrivateFieldGet(_spreads,this),index=0;index<spreads.length;index++){var _spreads$index=spreads[index],left=_spreads$index.left,right=_spreads$index.right,_spreads$index=_spreads$index.center;if(left===section)return{index:index,side:"left"};if(right===section)return{index:index,side:"right"};if(_spreads$index===section)return{index:index,side:"center"}}}},{key:"goToSpread",value:async function(index,side,reason){var _spread$center2,_index2;index<0||index>_classPrivateFieldGet(_spreads,this).length-1||(index===_classPrivateFieldGet(_index,this)&&"respread"!==reason?_assertClassBrand(_FixedLayout_brand,this,_render).call(this,side):(_classPrivateFieldSet(_index,this,index),(index=_classPrivateFieldGet(_spreads,this)[index]).center?(_index2=this.book.sections.indexOf(index.center),_spread$center2=await(null==(_spread$center2=index.center)||null==_spread$center2.load?void 0:_spread$center2.load()),await _assertClassBrand(_FixedLayout_brand,this,_showSpread).call(this,{center:{index:_index2,src:_spread$center2}})):(_index2=this.book.sections.indexOf(index.left),_spread$center2=this.book.sections.indexOf(index.right),_index2={index:_index2,src:await(null==(_index2=index.left)||null==_index2.load?void 0:_index2.load())},index={index:_spread$center2,src:await(null==(_spread$center2=index.right)||null==_spread$center2.load?void 0:_spread$center2.load())},await _assertClassBrand(_FixedLayout_brand,this,_showSpread).call(this,{left:_index2,right:index,side:side})),_assertClassBrand(_FixedLayout_brand,this,_reportLocation).call(this,reason)))}},{key:"select",value:async function(target){await this.goTo(target)}},{key:"goTo",value:async function(target){var book=this.book,target=await target,book=book.sections[target.index];book&&(book=(target=this.getSpreadOf(book)).index,target=target.side,await this.goToSpread(book,target))}},{key:"next",value:async function(){if(!(_classPrivateFieldGet(_rtl,this)?_assertClassBrand(_FixedLayout_brand,this,_goLeft):_assertClassBrand(_FixedLayout_brand,this,_goRight)).call(this))return this.goToSpread(_classPrivateFieldGet(_index,this)+1,_classPrivateFieldGet(_rtl,this)?"right":"left","page")}},{key:"prev",value:async function(){if(!(_classPrivateFieldGet(_rtl,this)?_assertClassBrand(_FixedLayout_brand,this,_goRight):_assertClassBrand(_FixedLayout_brand,this,_goLeft)).call(this))return this.goToSpread(_classPrivateFieldGet(_index,this)-1,_classPrivateFieldGet(_rtl,this)?"left":"right","page")}},{key:"getContents",value:function(){return Array.from(_classPrivateFieldGet(_root,this).querySelectorAll("iframe"),function(frame){return{doc:frame.contentDocument}})}},{key:"getRenderDetails",value:function(){var _classPrivateFieldGet2;return{leftWidth:null==(_classPrivateFieldGet2=_classPrivateFieldGet(_left,this))?void 0:_classPrivateFieldGet2.element.clientWidth,rightWidth:null==(_classPrivateFieldGet2=_classPrivateFieldGet(_right,this))?void 0:_classPrivateFieldGet2.element.clientWidth,centerWidth:null==(_classPrivateFieldGet2=_classPrivateFieldGet(_center,this))?void 0:_classPrivateFieldGet2.element.clientWidth,height:(null==(_classPrivateFieldGet2=_classPrivateFieldGet(_left,this))?void 0:_classPrivateFieldGet2.element.clientHeight)||(null==(_classPrivateFieldGet2=_classPrivateFieldGet(_right,this))?void 0:_classPrivateFieldGet2.element.clientHeight)||(null==(_classPrivateFieldGet2=_classPrivateFieldGet(_center,this))?void 0:_classPrivateFieldGet2.element.clientHeight),side:_classPrivateFieldGet(_side,this)}}},{key:"destroy",value:function(){_classPrivateFieldGet(_observer,this).unobserve(this)}}])}(babelHelpers.wrapNativeSuper(HTMLElement));async function _createFrame(_ref3){var _this2=this,index=_ref3.index,_ref3=_ref3.src,srcOptionIsString="string"==typeof _ref3,src=srcOptionIsString?_ref3:null==_ref3?void 0:_ref3.src,onZoom=srcOptionIsString?null:null==_ref3?void 0:_ref3.onZoom,element=document.createElement("div"),iframe=(element.setAttribute("dir","ltr"),document.createElement("iframe"));return element.append(iframe),Object.assign(iframe.style,{border:"0",display:"none",overflow:"hidden"}),iframe.setAttribute("sandbox","allow-same-origin allow-scripts"),iframe.setAttribute("scrolling","no"),iframe.setAttribute("part","filter"),_classPrivateFieldGet(_root,this).append(element),src?new Promise(function(resolve){iframe.addEventListener("load",function(){var doc=iframe.contentDocument,doc=(_this2.dispatchEvent(new CustomEvent("load",{detail:{doc:doc,index:index}})),getViewport(doc,_this2.defaultViewport)),width=doc.width,doc=doc.height;resolve({element:element,iframe:iframe,width:parseFloat(width),height:parseFloat(doc),onZoom:onZoom})},{once:!0}),iframe.src=src}):{blank:!0,element:element,iframe:iframe}}function _render(){var _left$width,_classPrivateFieldGet8,_classPrivateFieldGet9,target,width,portrait,blankWidth,blankHeight,scale,side=0<arguments.length&&void 0!==arguments[0]?arguments[0]:_classPrivateFieldGet(_side,this);side&&(_classPrivateFieldGet8=null!=(_classPrivateFieldGet8=_classPrivateFieldGet(_left,this))?_classPrivateFieldGet8:{},_classPrivateFieldGet9=null!=(_classPrivateFieldGet9=null!=(_classPrivateFieldGet9=_classPrivateFieldGet(_center,this))?_classPrivateFieldGet9:_classPrivateFieldGet(_right,this))?_classPrivateFieldGet9:{},target="left"===side?_classPrivateFieldGet8:_classPrivateFieldGet9,width=(side=this.getBoundingClientRect()).width,side=side.height,portrait="both"!==this.spread&&"portrait"!==this.spread&&width<side,_classPrivateFieldSet(_portrait,this,portrait),blankWidth=null!=(_left$width=null!=(_left$width=_classPrivateFieldGet8.width)?_left$width:_classPrivateFieldGet9.width)?_left$width:0,blankHeight=null!=(_left$width=null!=(_left$width=_classPrivateFieldGet8.height)?_left$width:_classPrivateFieldGet9.height)?_left$width:0,scale="number"!=typeof _classPrivateFieldGet(_zoom,this)||isNaN(_classPrivateFieldGet(_zoom,this))?("fit-width"===_classPrivateFieldGet(_zoom,this)?portrait||_classPrivateFieldGet(_center,this)?width/(null!=(_left$width=target.width)?_left$width:blankWidth):width/((null!=(_left$width=_classPrivateFieldGet8.width)?_left$width:blankWidth)+(null!=(_left$width=_classPrivateFieldGet9.width)?_left$width:blankWidth)):portrait||_classPrivateFieldGet(_center,this)?Math.min(width/(null!=(_left$width=target.width)?_left$width:blankWidth),side/(null!=(_left$width=target.height)?_left$width:blankHeight)):Math.min(width/((null!=(_left$width=_classPrivateFieldGet8.width)?_left$width:blankWidth)+(null!=(width=_classPrivateFieldGet9.width)?width:blankWidth)),side/Math.max(null!=(_left$width=_classPrivateFieldGet8.height)?_left$width:blankHeight,null!=(width=_classPrivateFieldGet9.height)?width:blankHeight)))||1:_classPrivateFieldGet(_zoom,this),side=function(frame){var iframeScale,element=frame.element,iframe=frame.iframe,width=frame.width,height=frame.height,blank=frame.blank,onZoom=frame.onZoom;iframe&&(onZoom&&onZoom({doc:frame.iframe.contentDocument,scale:scale}),iframeScale=onZoom?scale:1,Object.assign(iframe.style,{width:"".concat(width*iframeScale,"px"),height:"".concat(height*iframeScale,"px"),transform:onZoom?"none":"scale(".concat(scale,")"),transformOrigin:"top left",display:blank?"none":"block"}),Object.assign(element.style,{width:"".concat((null!=width?width:blankWidth)*scale,"px"),height:"".concat((null!=height?height:blankHeight)*scale,"px"),overflow:"hidden",display:"block",flexShrink:"0",marginBlock:"auto"}),portrait)&&frame!==target&&(element.style.display="none")},_classPrivateFieldGet(_center,this)?side(_classPrivateFieldGet(_center,this)):(side(_classPrivateFieldGet8),side(_classPrivateFieldGet9)))}async function _showSpread(_ref7){var left=_ref7.left,right=_ref7.right,center=_ref7.center,_ref7=_ref7.side;_classPrivateFieldGet(_root,this).replaceChildren(),_classPrivateFieldSet(_left,this,null),_classPrivateFieldSet(_right,this,null),_classPrivateFieldSet(_center,this,null),center?(_classPrivateFieldSet(_center,this,await _assertClassBrand(_FixedLayout_brand,this,_createFrame).call(this,center)),_classPrivateFieldSet(_side,this,"center")):(_classPrivateFieldSet(_left,this,await _assertClassBrand(_FixedLayout_brand,this,_createFrame).call(this,left)),_classPrivateFieldSet(_right,this,await _assertClassBrand(_FixedLayout_brand,this,_createFrame).call(this,right)),_classPrivateFieldSet(_side,this,_classPrivateFieldGet(_left,this).blank?"right":_classPrivateFieldGet(_right,this).blank?"left":_ref7)),_assertClassBrand(_FixedLayout_brand,this,_render).call(this)}function _goLeft(){var _classPrivateFieldGet0;return!(_classPrivateFieldGet(_center,this)||null!=(_classPrivateFieldGet0=_classPrivateFieldGet(_left,this))&&_classPrivateFieldGet0.blank)&&_classPrivateFieldGet(_portrait,this)&&"none"===(null==(_classPrivateFieldGet0=_classPrivateFieldGet(_left,this))||null==(_classPrivateFieldGet0=_classPrivateFieldGet0.element)||null==(_classPrivateFieldGet0=_classPrivateFieldGet0.style)?void 0:_classPrivateFieldGet0.display)?(_classPrivateFieldSet(_side,this,"left"),_assertClassBrand(_FixedLayout_brand,this,_render).call(this),_assertClassBrand(_FixedLayout_brand,this,_reportLocation).call(this,"page"),!0):void 0}function _goRight(){var _classPrivateFieldGet10;return!(_classPrivateFieldGet(_center,this)||null!=(_classPrivateFieldGet10=_classPrivateFieldGet(_right,this))&&_classPrivateFieldGet10.blank)&&_classPrivateFieldGet(_portrait,this)&&"none"===(null==(_classPrivateFieldGet10=_classPrivateFieldGet(_right,this))||null==(_classPrivateFieldGet10=_classPrivateFieldGet10.element)||null==(_classPrivateFieldGet10=_classPrivateFieldGet10.style)?void 0:_classPrivateFieldGet10.display)?(_classPrivateFieldSet(_side,this,"right"),_assertClassBrand(_FixedLayout_brand,this,_render).call(this),_assertClassBrand(_FixedLayout_brand,this,_reportLocation).call(this,"page"),!0):void 0}function _determineOddPages(){var _this$book$sections$;"recto"!==_classPrivateFieldGet(_oddPages,this)&&"verso"!==_classPrivateFieldGet(_oddPages,this)&&(_classPrivateFieldSet(_oddPages,this,"recto"),_this$book$sections$=null==(_this$book$sections$=this.book.sections[0])?void 0:_this$book$sections$.pageSpread,_classPrivateFieldGet(_rtl,this)&&"right"===_this$book$sections$||!_classPrivateFieldGet(_rtl,this)&&"left"===_this$book$sections$)&&_classPrivateFieldSet(_oddPages,this,"verso")}function _respread(){var _this$book$sections$2,rtl,ltr,oddPagesVerso,firstPageSpread,flipSpreads;"none"===this.spread?_classPrivateFieldSet(_spreads,this,this.book.sections.map(function(section){return{center:section}})):(rtl=_classPrivateFieldGet(_rtl,this),ltr=!_classPrivateFieldGet(_rtl,this),oddPagesVerso="verso"===_classPrivateFieldGet(_oddPages,this),firstPageSpread=(null==(_this$book$sections$2=this.book.sections[0])?void 0:_this$book$sections$2.pageSpread)||(ltr&&oddPagesVerso||rtl&&!oddPagesVerso?"left":"right"),flipSpreads="recto"===_classPrivateFieldGet(_oddPages,this)&&(ltr&&"left"===firstPageSpread||rtl&&"right"===firstPageSpread)||"verso"===_classPrivateFieldGet(_oddPages,this)&&(ltr&&"right"===firstPageSpread||rtl&&"left"===firstPageSpread),_classPrivateFieldSet(_spreads,this,this.book.sections.reduce(function(arr,section,i){function newSpread(){var spread={};return arr.push(spread),spread}var last=arr[arr.length-1],pageSpread=section.pageSpread;pageSpread||i||(pageSpread=firstPageSpread),flipSpreads&&("left"===pageSpread?pageSpread="right":"right"===pageSpread&&(pageSpread="left"));return"center"===pageSpread?newSpread().center=section:"left"===pageSpread?(!last||last.center||last.left||ltr?newSpread():last).left=section:"right"===pageSpread?(!last||last.center||last.right||rtl?newSpread():last).right=section:ltr?!last||last.center||last.right?newSpread().left=section:last.right=section:!last||last.center||last.left?newSpread().right=section:last.left=section,arr},[])))}function _reportLocation(reason){this.dispatchEvent(new CustomEvent("relocate",{detail:{reason:reason,range:null,index:this.index,fraction:0,size:1}}))}babelHelpers.defineProperty(_exports,"observedAttributes",["zoom","spread","odd-pages"]),customElements.define("foliate-fxl",_exports)});