@foxycape/core 1.2.4 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../ensurePdfWebWorker.cjs"),n=require("../shared/text/pageText.cjs");let r=require("../../../pdfjs/legacy/build/pdf.mjs");r=e.__toESM(r,1);let i=require("../../../pdfjs/legacy/web/pdf_viewer.mjs");i=e.__toESM(i,1);let a=require("perfect-debounce");var o=class extends i.PDFViewer{#e;constructor(e,r){super(e),this.options=r,this.#e=null,this.onPageRendered=async()=>{},this.docs=new Map,this.getPageText=async(e,r)=>{if(this.otherPages&&e>1){let i=this._pages.find(t=>t.id==e),a=i.spineFile;if(a){let e=this.docs.get(i.id),o=!1;e||(e=await this.callback(a,1),o=!0);let s=await n.getPageText(e.page,r);if(o){let n=e.doc;await n.cleanup(!1),await t.destroyPdfLoadingTask(n.loadingTask),await n.destroy()}return s}return``}{let t=await this.pdfDocument.getPage(e);return await n.getPageText(t,r)}},this.forceRenderingQueue=new Map,this.previousPageNumber=1,this.delayEnsurePdfPageLoaded=(0,a.debounce)(this.#n,25),this.loadRemotePdf=async e=>{let t=this._pages[e-1];if(t.pdfPage)return t.pdfPage;let n=t.spineFile;if(n){let r=this.docs.get(e);return r||(r=await this.callback(n,1),this.docs.set(t.id,r)),r.page}return null},this.DEFAULT_SCALE_DELTA=1.1,this.MAX_AUTO_SCALE=1.25,this.MAX_SCALE=10,this.MIN_SCALE=.1,this.#i=null,this.isMultiDocument=!1,this.bindEvents(),this.#e={previousPageNumber:1,scrollDown:!0,pages:[]}}bindEvents(){this.eventBus.on(`pagerendered`,this.onPageRendered)}unbindEvents(){this.eventBus.off(`pagerendered`,this.onPageRendered)}async setOtherPages(e,t){this.otherPages=e,e&&e.length>0&&(this.isMultiDocument=!0,e.forEach(e=>{e.originDestroy=e.destroy,e.destroy=()=>{e.originDestroy(),e.pdfPage=null;let t=this.docs.get(e.id);t&&(this.docs.delete(e.id),t.doc.destroy().then(()=>{t.doc.cleanup()}))},this._pages.push(e)})),this.callback=t}forceRendering(e){let t=e||this._getVisiblePages(),n=this.#t(t),r=this._spreadMode!==i.SpreadMode.NONE&&this._scrollMode!==i.ScrollMode.HORIZONTAL,a=this.renderingQueue.getHighestPriority(t,this._pages,n,r);return a?(this.previousPageNumber=a.id,this.forceRenderingQueue.get(a.id)?void 0:(this.forceRenderingQueue.set(a.id,a.id),this.isMultiDocument?this.delayEnsurePdfPageLoaded(a).then(e=>{if(this.forceRenderingQueue.delete(a.id),a.pdfPage)this.renderingQueue.renderView(a);else if(e){let t=this._pages[e.customPageNumber-1];t.pdfPage||t.setPdfPage(e),this.renderingQueue.renderView(t)}}):this.#n(a).then(e=>{if(this.forceRenderingQueue.delete(a.id),a.pdfPage)this.renderingQueue.renderView(a);else if(e){let t=this._pages[e.customPageNumber-1];t.pdfPage||t.setPdfPage(e),this.renderingQueue.renderView(t)}}),!0)):!1}#t(e){if(e.first?.id===1)return!0;if(e.last?.id===this.pagesCount)return!1;switch(this._scrollMode){case i.ScrollMode.PAGE:return this.#e.scrollDown;case i.ScrollMode.HORIZONTAL:return this.scroll.right}return this.scroll.down}async#n(e){if(e.pdfPage)return e.pdfPage;try{let t=e.spineFile,n;return n=t?await this.loadRemotePdf(e.id):await this.pdfDocument.getPage(e.id),n.customPageNumber=e.id,e.pdfPage||e.setPdfPage(n),n}catch(e){return console.error(`Unable to get page for page view`,e),null}}async dispose(){this.unbindEvents(),this.#i&&=(clearTimeout(this.#i),null);for(let[e,n]of this.docs.entries())try{n.doc&&await n.doc.cleanup(),await t.destroyPdfLoadingTask(n.doc?.loadingTask),n.doc&&await n.doc.destroy()}catch{}this.docs.clear(),this.otherPages&&this.otherPages.splice(0),this.forceRenderingQueue&&this.forceRenderingQueue.clear()}increaseScale({drawingDelay:e,scaleFactor:t,steps:n}={}){if(!this.pdfDocument)return;let r=this._currentScale;if(t!==void 0&&t>1)r=Math.round(r*t*100)/100;else{n??=1;do r=Math.ceil((r*this.DEFAULT_SCALE_DELTA).toFixed(2)*10)/10;while(--n>0&&r<this.MAX_SCALE)}this.#s(Math.min(this.MAX_SCALE,r),{noScroll:!1,drawingDelay:e})}decreaseScale({drawingDelay:e,scaleFactor:t,steps:n}={}){if(!this.pdfDocument)return;let r=this._currentScale;if(t!==void 0&&t>0&&t<1)r=Math.round(r*t*100)/100;else{n??=1;do r=Math.floor((r/this.DEFAULT_SCALE_DELTA).toFixed(2)*10)/10;while(--n>0&&r>this.MIN_SCALE)}this.#s(Math.max(this.MIN_SCALE,r),{noScroll:!1,drawingDelay:e})}_updateScrollMode(e){let t=this._scrollMode,n=this.viewer;n.classList.toggle(`scrollHorizontal`,t===i.ScrollMode.HORIZONTAL),n.classList.toggle(`scrollWrapped`,t===i.ScrollMode.WRAPPED),!(!this.pdfDocument||!e)&&(t===i.ScrollMode.PAGE?this.#u():this._previousScrollMode===i.ScrollMode.PAGE&&this._updateSpreadMode(),this._currentScaleValue&&isNaN(this._currentScaleValue)&&this.#s(this._currentScaleValue,{noScroll:!0}),this._customSetCurrentPageNumber(e,!0),this.update())}_updateSpreadMode(e){if(!this.pdfDocument)return;let t=this.viewer,n=this._pages;if(this._scrollMode===i.ScrollMode.PAGE)this.#u();else if(t.textContent=``,this._spreadMode===i.SpreadMode.NONE)for(let e of this._pages)t.append(e.div);else{let e=this._spreadMode-1,r=null;for(let i=0,a=n.length;i<a;++i)r===null?(r=document.createElement(`div`),r.className=`spread`,t.append(r)):i%2===e&&(r=r.cloneNode(!1),t.append(r)),r.append(n[i].div)}e&&(this._currentScaleValue&&isNaN(this._currentScaleValue)&&this.#s(this._currentScaleValue,{noScroll:!0}),this._customSetCurrentPageNumber(e,!0),this.update())}set pagesRotation(e){if(!this.isValidRotation(e))throw Error(`Invalid pages rotation angle.`);if(!this.pdfDocument||(e%=360,e<0&&(e+=360),this._pagesRotation===e))return;this._pagesRotation=e;let t=this._currentPageNumber;this.refresh(!0,{rotation:e}),this._currentScaleValue&&this.#s(this._currentScaleValue,{noScroll:!0}),this.eventBus.dispatch(`rotationchanging`,{source:this,pagesRotation:e,pageNumber:t}),this.defaultRenderingQueue&&this.update()}get pagesRotation(){return super.pagesRotation}set currentScaleValue(e){this.pdfDocument&&this.#s(e,{noScroll:!1})}get currentScaleValue(){return super.currentScaleValue}set currentScale(e){if(isNaN(e))throw Error(`Invalid numeric scale.`);this.pdfDocument&&this.#s(e,{noScroll:!1})}get currentScale(){return super.currentScale}#r(e){return e===this._currentScale||Math.abs(e-this._currentScale)<1e-15}#i;#a(e,t,{noScroll:n=!1,preset:i=!1,drawingDelay:a=-1}){if(this._currentScaleValue=t.toString(),this.#r(e)){i&&this.eventBus.dispatch(`scalechanging`,{source:this,scale:e,presetValue:t});return}this.viewer.style.setProperty(`--scale-factor`,e*r.PixelsPerInch.PDF_TO_CSS_UNITS);let o=a>=0&&a<1e3;if(this.refresh(!0,{scale:e,drawingDelay:o?a:-1}),o&&(this.#i=setTimeout(()=>{this.#i=null,this.refresh()},a)),this._currentScale=e,!n){let e=this._currentPageNumber,t;this._location&&!(this.isInPresentationMode||this.isChangingPresentationMode)&&(e=this._location.pageNumber,t=[null,{name:`XYZ`},this._location.left,this._location.top,null]),this.scrollPageIntoView({pageNumber:e,destArray:t,allowNegativeOffset:!0})}this.eventBus.dispatch(`scalechanging`,{source:this,scale:e,presetValue:i?t:void 0}),this.defaultRenderingQueue&&this.update()}get#o(){return this._spreadMode!==i.SpreadMode.NONE&&this._scrollMode!==i.ScrollMode.HORIZONTAL?2:1}#s(e,t){let n=parseFloat(e);if(typeof e==`string`&&e.trim().endsWith(`%`)&&Number.isFinite(n)&&n>0&&(n/=100,e=String(n)),n>0)t.preset=!1,this.#a(n,e,t);else{let r=this._pages[this._currentPageNumber-1];if(!r)return;let a=this.options.horizontalPadding?this.options.horizontalPadding:10,o=this.options.verticalPadding?this.options.verticalPadding:0;a<0&&(a=0),o<0&&(o=0),this._spreadMode!==i.SpreadMode.NONE&&(this.options.removeHorizonalMargin||(a+=10)),this.isInPresentationMode?(a=o=4,this._spreadMode!==i.SpreadMode.NONE&&(a*=2)):this.removePageBorders?this._scrollMode===i.ScrollMode.HORIZONTAL&&([a,o]=[o,a]):(a+=19*this.#o,o+=5,this._scrollMode===i.ScrollMode.HORIZONTAL&&([a,o]=[o,a]));let s=(this.container.clientWidth-a)/r.width*r.scale/this.#o,c=(this.container.clientHeight-o)/r.height*r.scale;switch(e){case`page-actual`:n=1;break;case`page-width`:n=s;break;case`page-height`:n=c;break;case`page-fit`:n=Math.min(s,c);break;case`auto`:let t=this.isPortraitOrientation(r)?s:Math.min(c,s);n=Math.min(this.MAX_AUTO_SCALE,t);break;default:console.error(`#setScale: "${e}" is an unknown zoom value.`);return}t.preset=!0,this.#a(n,e,t)}}#c(){let e=this._pages[this._currentPageNumber-1];this.isInPresentationMode&&this.#s(this._currentScaleValue,{noScroll:!0}),this.#l(e)}#l(e,t=null){let{div:n,id:r}=e;if(this._currentPageNumber!==r&&this._customSetCurrentPageNumber(r),this._scrollMode===i.ScrollMode.PAGE&&(this.#u(),this.update()),!t&&!this.isInPresentationMode){let e=n.offsetLeft+n.clientLeft,r=e+n.clientWidth,{scrollLeft:a,clientWidth:o}=this.container;(this._scrollMode===i.ScrollMode.HORIZONTAL||e<a||r>a+o)&&(t={left:0,top:0})}this.scrollIntoView(n,t),!this._currentScaleValue&&this._location&&(this._location=null)}#u(){if(this._scrollMode!==i.ScrollMode.PAGE)throw Error(`#ensurePageViewVisible: Invalid scrollMode value.`);let e=this._currentPageNumber,t=this.#e,n=this.viewer;if(n.textContent=``,t.pages.length=0,this._spreadMode===i.SpreadMode.NONE&&!this.isInPresentationMode){let r=this._pages[e-1];n.append(r.div),t.pages.push(r)}else{let r=new Set,i=this._spreadMode-1;i===-1?r.add(e-1):e%2===i?(r.add(e-2),r.add(e-1)):(r.add(e-1),r.add(e));let a=document.createElement(`div`);if(a.className=`spread`,this.isInPresentationMode){let e=document.createElement(`div`);e.className=`dummyPage`,a.append(e)}for(let e of r){let n=this._pages[e];n&&(a.append(n.div),t.pages.push(n))}n.append(a)}t.scrollDown=e>=t.previousPageNumber,t.previousPageNumber=e}rescrollIntoView(e){this._location=null,this.#s(this._currentScaleValue,{noScroll:!1}),this._customSetCurrentPageNumber(e,!0)}_customSetCurrentPageNumber(e,t=!1){if(this._currentPageNumber===e)return t&&this.#c(),!0;if(!(0<e&&e<=this.pagesCount))return!1;let n=this._currentPageNumber;return this._currentPageNumber=e,this.eventBus.dispatch(`pagechanging`,{source:this,pageNumber:e,pageLabel:this._pageLabels?.[e-1]??null,previous:n}),t&&this.#c(),!0}scrollIntoView(e,t,n=!1){let r=e.offsetParent;if(!r){console.error(`offsetParent is not set -- cannot scroll`);return}let i=e.offsetTop+e.clientTop,a=e.offsetLeft+e.clientLeft;for(;r.clientHeight===r.scrollHeight&&r.clientWidth===r.scrollWidth||n&&(r.classList.contains(`markedContent`)||getComputedStyle(r).overflow===`hidden`);)if(i+=r.offsetTop,a+=r.offsetLeft,r=r.offsetParent,!r)return;t&&(t.top!==void 0&&(i+=t.top),t.left!==void 0&&(a+=t.left,r.scrollLeft=a)),r.scrollTop=i}isPortraitOrientation(e){return e.width<=e.height}isValidRotation(e){return Number.isInteger(e)&&e%90==0}refresh(e=!1,t=Object.create(null)){if(this.pdfDocument){for(let e of this._pages)e.update(t);this.#i!==null&&(clearTimeout(this.#i),this.#i=null),e||this.update()}}};exports.MultiPDFViewer=o;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../_virtual/_rolldown/runtime.cjs"),t=require("../ensurePdfWebWorker.cjs"),n=require("../shared/text/pageText.cjs");let r=require("../../../pdfjs/legacy/build/pdf.mjs");r=e.__toESM(r,1);let i=require("../../../pdfjs/legacy/web/pdf_viewer.mjs");i=e.__toESM(i,1);let a=require("perfect-debounce");var o=class extends i.PDFViewer{#e;constructor(e,r){super(e),this.options=r,this.#e=null,this.onPageRendered=async()=>{},this.docs=new Map,this.getPageText=async(e,r)=>{if(this.otherPages&&e>1){let i=this._pages.find(t=>t.id==e),a=i.spineFile;if(a){let e=this.docs.get(i.id),o=!1;e||(e=await this.callback(a,1),o=!0);let s=await n.getPageText(e.page,r);if(o){let n=e.doc;await n.cleanup(!1),await t.destroyPdfLoadingTask(n.loadingTask),await n.destroy()}return s}return``}{let t=await this.pdfDocument.getPage(e);return await n.getPageText(t,r)}},this.forceRenderingQueue=new Map,this.previousPageNumber=1,this.delayEnsurePdfPageLoaded=(0,a.debounce)(this.#n,25),this.loadRemotePdf=async e=>{let t=this._pages[e-1];if(t.pdfPage)return t.pdfPage;let n=t.spineFile;if(n){let r=this.docs.get(e);return r||(r=await this.callback(n,1),this.docs.set(t.id,r)),r.page}return null},this.DEFAULT_SCALE_DELTA=1.1,this.MAX_AUTO_SCALE=1.25,this.MAX_SCALE=10,this.MIN_SCALE=.1,this.#i=null,this.isMultiDocument=!1,this.bindEvents(),this.#e={previousPageNumber:1,scrollDown:!0,pages:[]}}bindEvents(){this.eventBus.on(`pagerendered`,this.onPageRendered)}unbindEvents(){this.eventBus.off(`pagerendered`,this.onPageRendered)}async setOtherPages(e,t){this.otherPages=e,e&&e.length>0&&(this.isMultiDocument=!0,e.forEach(e=>{e.originDestroy=e.destroy,e.destroy=()=>{e.originDestroy(),e.pdfPage=null;let t=this.docs.get(e.id);t&&(this.docs.delete(e.id),t.doc.destroy().then(()=>{t.doc.cleanup()}))},this._pages.push(e)})),this.callback=t}forceRendering(e){let t=e||this._getVisiblePages(),n=this.#t(t),r=this._spreadMode!==i.SpreadMode.NONE&&this._scrollMode!==i.ScrollMode.HORIZONTAL,a=this.renderingQueue.getHighestPriority(t,this._pages,n,r);return a?(this.previousPageNumber=a.id,this.forceRenderingQueue.get(a.id)?void 0:(this.forceRenderingQueue.set(a.id,a.id),this.isMultiDocument?this.delayEnsurePdfPageLoaded(a).then(e=>{if(this.forceRenderingQueue.delete(a.id),a.pdfPage)this.renderingQueue.renderView(a);else if(e){let t=this._pages[e.customPageNumber-1];t.pdfPage||t.setPdfPage(e),this.renderingQueue.renderView(t)}}):this.#n(a).then(e=>{if(this.forceRenderingQueue.delete(a.id),a.pdfPage)this.renderingQueue.renderView(a);else if(e){let t=this._pages[e.customPageNumber-1];t.pdfPage||t.setPdfPage(e),this.renderingQueue.renderView(t)}}),!0)):!1}#t(e){if(e.first?.id===1)return!0;if(e.last?.id===this.pagesCount)return!1;switch(this._scrollMode){case i.ScrollMode.PAGE:return this.#e.scrollDown;case i.ScrollMode.HORIZONTAL:return this.scroll.right}return this.scroll.down}async#n(e){if(e.pdfPage)return e.pdfPage;try{let t=e.spineFile,n;return n=t?await this.loadRemotePdf(e.id):await this.pdfDocument.getPage(e.id),n.customPageNumber=e.id,e.pdfPage||e.setPdfPage(n),n}catch(e){return console.error(`Unable to get page for page view`,e),null}}async dispose(){this.unbindEvents(),this.#i&&=(clearTimeout(this.#i),null);for(let[e,n]of this.docs.entries())try{n.doc&&await n.doc.cleanup(),await t.destroyPdfLoadingTask(n.doc?.loadingTask),n.doc&&await n.doc.destroy()}catch{}this.docs.clear(),this.otherPages&&this.otherPages.splice(0),this.forceRenderingQueue&&this.forceRenderingQueue.clear()}increaseScale({drawingDelay:e,scaleFactor:t,steps:n}={}){if(!this.pdfDocument)return;let r=this._currentScale;if(t!==void 0&&t>1)r=Math.round(r*t*100)/100;else{n??=1;do r=Math.ceil((r*this.DEFAULT_SCALE_DELTA).toFixed(2)*10)/10;while(--n>0&&r<this.MAX_SCALE)}this.#s(Math.min(this.MAX_SCALE,r),{noScroll:!1,drawingDelay:e})}decreaseScale({drawingDelay:e,scaleFactor:t,steps:n}={}){if(!this.pdfDocument)return;let r=this._currentScale;if(t!==void 0&&t>0&&t<1)r=Math.round(r*t*100)/100;else{n??=1;do r=Math.floor((r/this.DEFAULT_SCALE_DELTA).toFixed(2)*10)/10;while(--n>0&&r>this.MIN_SCALE)}this.#s(Math.max(this.MIN_SCALE,r),{noScroll:!1,drawingDelay:e})}adjustScrollForScaleOrigin(e,t,n){if(!(e>0))return;let r=this.currentScale/e-1;if(r===0)return;let[i,a]=this.containerTopLeft;this.container.scrollLeft+=(t-a)*r,this.container.scrollTop+=(n-i)*r}adjustScrollForViewportCenter(e){let t=this.container.getBoundingClientRect();this.adjustScrollForScaleOrigin(e,t.left+t.width/2,t.top+t.height/2)}_updateScrollMode(e){let t=this._scrollMode,n=this.viewer;n.classList.toggle(`scrollHorizontal`,t===i.ScrollMode.HORIZONTAL),n.classList.toggle(`scrollWrapped`,t===i.ScrollMode.WRAPPED),!(!this.pdfDocument||!e)&&(t===i.ScrollMode.PAGE?this.#u():this._previousScrollMode===i.ScrollMode.PAGE&&this._updateSpreadMode(),this._currentScaleValue&&isNaN(this._currentScaleValue)&&this.#s(this._currentScaleValue,{noScroll:!0}),this._customSetCurrentPageNumber(e,!0),this.update())}_updateSpreadMode(e){if(!this.pdfDocument)return;let t=this.viewer,n=this._pages;if(this._scrollMode===i.ScrollMode.PAGE)this.#u();else if(t.textContent=``,this._spreadMode===i.SpreadMode.NONE)for(let e of this._pages)t.append(e.div);else{let e=this._spreadMode-1,r=null;for(let i=0,a=n.length;i<a;++i)r===null?(r=document.createElement(`div`),r.className=`spread`,t.append(r)):i%2===e&&(r=r.cloneNode(!1),t.append(r)),r.append(n[i].div)}e&&(this._currentScaleValue&&isNaN(this._currentScaleValue)&&this.#s(this._currentScaleValue,{noScroll:!0}),this._customSetCurrentPageNumber(e,!0),this.update())}set pagesRotation(e){if(!this.isValidRotation(e))throw Error(`Invalid pages rotation angle.`);if(!this.pdfDocument||(e%=360,e<0&&(e+=360),this._pagesRotation===e))return;this._pagesRotation=e;let t=this._currentPageNumber;this.refresh(!0,{rotation:e}),this._currentScaleValue&&this.#s(this._currentScaleValue,{noScroll:!0}),this.eventBus.dispatch(`rotationchanging`,{source:this,pagesRotation:e,pageNumber:t}),this.defaultRenderingQueue&&this.update()}get pagesRotation(){return super.pagesRotation}set currentScaleValue(e){this.pdfDocument&&this.#s(e,{noScroll:!1})}get currentScaleValue(){return super.currentScaleValue}set currentScale(e){if(isNaN(e))throw Error(`Invalid numeric scale.`);this.pdfDocument&&this.#s(e,{noScroll:!1})}get currentScale(){return super.currentScale}#r(e){return e===this._currentScale||Math.abs(e-this._currentScale)<1e-15}#i;#a(e,t,{noScroll:n=!1,preset:i=!1,drawingDelay:a=-1}){if(this._currentScaleValue=t.toString(),this.#r(e)){i&&this.eventBus.dispatch(`scalechanging`,{source:this,scale:e,presetValue:t});return}this.viewer.style.setProperty(`--scale-factor`,e*r.PixelsPerInch.PDF_TO_CSS_UNITS);let o=a>=0&&a<1e3;if(this.refresh(!0,{scale:e,drawingDelay:o?a:-1}),o&&(this.#i=setTimeout(()=>{this.#i=null,this.refresh()},a)),this._currentScale=e,!n){let e=this._currentPageNumber,t;this._location&&!(this.isInPresentationMode||this.isChangingPresentationMode)&&(e=this._location.pageNumber,t=[null,{name:`XYZ`},this._location.left,this._location.top,null]),this.scrollPageIntoView({pageNumber:e,destArray:t,allowNegativeOffset:!0})}this.eventBus.dispatch(`scalechanging`,{source:this,scale:e,presetValue:i?t:void 0}),this.defaultRenderingQueue&&this.update()}get#o(){return this._spreadMode!==i.SpreadMode.NONE&&this._scrollMode!==i.ScrollMode.HORIZONTAL?2:1}#s(e,t){let n=parseFloat(e);if(typeof e==`string`&&e.trim().endsWith(`%`)&&Number.isFinite(n)&&n>0&&(n/=100,e=String(n)),n>0)t.preset=!1,this.#a(n,e,t);else{let r=this._pages[this._currentPageNumber-1];if(!r)return;let a=this.options.horizontalPadding?this.options.horizontalPadding:10,o=this.options.verticalPadding?this.options.verticalPadding:0;a<0&&(a=0),o<0&&(o=0),this._spreadMode!==i.SpreadMode.NONE&&(this.options.removeHorizonalMargin||(a+=10)),this.isInPresentationMode?(a=o=4,this._spreadMode!==i.SpreadMode.NONE&&(a*=2)):this.removePageBorders?this._scrollMode===i.ScrollMode.HORIZONTAL&&([a,o]=[o,a]):(a+=19*this.#o,o+=5,this._scrollMode===i.ScrollMode.HORIZONTAL&&([a,o]=[o,a]));let s=(this.container.clientWidth-a)/r.width*r.scale/this.#o,c=(this.container.clientHeight-o)/r.height*r.scale;switch(e){case`page-actual`:n=1;break;case`page-width`:n=s;break;case`page-height`:n=c;break;case`page-fit`:n=Math.min(s,c);break;case`auto`:let t=this.isPortraitOrientation(r)?s:Math.min(c,s);n=Math.min(this.MAX_AUTO_SCALE,t);break;default:console.error(`#setScale: "${e}" is an unknown zoom value.`);return}t.preset=!0,this.#a(n,e,t)}}#c(){let e=this._pages[this._currentPageNumber-1];this.isInPresentationMode&&this.#s(this._currentScaleValue,{noScroll:!0}),this.#l(e)}#l(e,t=null){let{div:n,id:r}=e;if(this._currentPageNumber!==r&&this._customSetCurrentPageNumber(r),this._scrollMode===i.ScrollMode.PAGE&&(this.#u(),this.update()),!t&&!this.isInPresentationMode){let e=n.offsetLeft+n.clientLeft,r=e+n.clientWidth,{scrollLeft:a,clientWidth:o}=this.container;(this._scrollMode===i.ScrollMode.HORIZONTAL||e<a||r>a+o)&&(t={left:0,top:0})}this.scrollIntoView(n,t),!this._currentScaleValue&&this._location&&(this._location=null)}#u(){if(this._scrollMode!==i.ScrollMode.PAGE)throw Error(`#ensurePageViewVisible: Invalid scrollMode value.`);let e=this._currentPageNumber,t=this.#e,n=this.viewer;if(n.textContent=``,t.pages.length=0,this._spreadMode===i.SpreadMode.NONE&&!this.isInPresentationMode){let r=this._pages[e-1];n.append(r.div),t.pages.push(r)}else{let r=new Set,i=this._spreadMode-1;i===-1?r.add(e-1):e%2===i?(r.add(e-2),r.add(e-1)):(r.add(e-1),r.add(e));let a=document.createElement(`div`);if(a.className=`spread`,this.isInPresentationMode){let e=document.createElement(`div`);e.className=`dummyPage`,a.append(e)}for(let e of r){let n=this._pages[e];n&&(a.append(n.div),t.pages.push(n))}n.append(a)}t.scrollDown=e>=t.previousPageNumber,t.previousPageNumber=e}rescrollIntoView(e){this._location=null,this.#s(this._currentScaleValue,{noScroll:!1}),this._customSetCurrentPageNumber(e,!0)}_customSetCurrentPageNumber(e,t=!1){if(this._currentPageNumber===e)return t&&this.#c(),!0;if(!(0<e&&e<=this.pagesCount))return!1;let n=this._currentPageNumber;return this._currentPageNumber=e,this.eventBus.dispatch(`pagechanging`,{source:this,pageNumber:e,pageLabel:this._pageLabels?.[e-1]??null,previous:n}),t&&this.#c(),!0}scrollIntoView(e,t,n=!1){let r=e.offsetParent;if(!r){console.error(`offsetParent is not set -- cannot scroll`);return}let i=e.offsetTop+e.clientTop,a=e.offsetLeft+e.clientLeft;for(;r.clientHeight===r.scrollHeight&&r.clientWidth===r.scrollWidth||n&&(r.classList.contains(`markedContent`)||getComputedStyle(r).overflow===`hidden`);)if(i+=r.offsetTop,a+=r.offsetLeft,r=r.offsetParent,!r)return;t&&(t.top!==void 0&&(i+=t.top),t.left!==void 0&&(a+=t.left,r.scrollLeft=a)),r.scrollTop=i}isPortraitOrientation(e){return e.width<=e.height}isValidRotation(e){return Number.isInteger(e)&&e%90==0}refresh(e=!1,t=Object.create(null)){if(this.pdfDocument){for(let e of this._pages)e.update(t);this.#i!==null&&(clearTimeout(this.#i),this.#i=null),e||this.update()}}};exports.MultiPDFViewer=o;
@@ -40,6 +40,8 @@ export declare class MultiPDFViewer extends pdfjsViewer.PDFViewer implements IDi
40
40
  scaleFactor?: number;
41
41
  steps?: number;
42
42
  }): void;
43
+ adjustScrollForScaleOrigin(previousScale: number, clientX: number, clientY: number): void;
44
+ adjustScrollForViewportCenter(previousScale: number): void;
43
45
  _updateScrollMode(pageNumber?: null): void;
44
46
  _updateSpreadMode(pageNumber?: null): void;
45
47
  set pagesRotation(rotation: number);
@@ -129,6 +129,17 @@ var a = class extends i.PDFViewer {
129
129
  drawingDelay: e
130
130
  });
131
131
  }
132
+ adjustScrollForScaleOrigin(e, t, n) {
133
+ if (!(e > 0)) return;
134
+ let r = this.currentScale / e - 1;
135
+ if (r === 0) return;
136
+ let [i, a] = this.containerTopLeft;
137
+ this.container.scrollLeft += (t - a) * r, this.container.scrollTop += (n - i) * r;
138
+ }
139
+ adjustScrollForViewportCenter(e) {
140
+ let t = this.container.getBoundingClientRect();
141
+ this.adjustScrollForScaleOrigin(e, t.left + t.width / 2, t.top + t.height / 2);
142
+ }
132
143
  _updateScrollMode(e) {
133
144
  let t = this._scrollMode, n = this.viewer;
134
145
  n.classList.toggle("scrollHorizontal", t === i.ScrollMode.HORIZONTAL), n.classList.toggle("scrollWrapped", t === i.ScrollMode.WRAPPED), !(!this.pdfDocument || !e) && (t === i.ScrollMode.PAGE ? this.#u() : this._previousScrollMode === i.ScrollMode.PAGE && this._updateSpreadMode(), this._currentScaleValue && isNaN(this._currentScaleValue) && this.#s(this._currentScaleValue, { noScroll: !0 }), this._customSetCurrentPageNumber(e, !0), this.update());
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../kernal/EventNames.cjs"),t=require("../../../kernal/common/uuid.cjs"),n=require("../../../kernal/Options.cjs"),r=require("../../../kernal/Theme.cjs"),i=require("../../../kernal/html/events.cjs"),a=require("./PdfNavPointProvider.cjs"),o=require("./PdfNavPointNavigator.cjs"),s=require("./PdfCoreNavigator.cjs"),c=require("./PdfPagingNavigator.cjs"),l=require("./layout/PdfRendererLayout.cjs"),u=require("./style/PdfThemeApplier.cjs"),d=require("./progress/PdfProgressTracker.cjs"),f=require("./location/PdfDestinationBuilder.cjs"),p=require("./input/PdfDocumentEvents.cjs"),m=require("./input/PdfViewerEvents.cjs"),h=require("./input/PdfZoomInputController.cjs"),g=require("./input/PdfKeyboardController.cjs"),_=require("./documents/PdfDocumentsProvider.cjs"),v=require("./zoom/PdfScalable.cjs");require("../../../pdfjs/legacy/build/pdf.mjs");let y=require("perfect-debounce");var b=class extends _.PdfDocumentsProvider{constructor(t,r,_,b){super(t,r,_,b),this.isRendererReady=!1,this.onScaleChanging=async(e,t)=>{await this.delayApplyCssVariables()},this.delayApplyCssVariables=(0,y.debounce)(async()=>{this.rendererViewport.applyCssVariables()},200),this.onOptionsChange=async e=>{n.isOptionKey(e)&&this.rendererViewport.applyCssVariables()},this.pdfOptions=b,this.layout=new l.PdfRendererLayout(this.pdfViewer,this.owner.events),this.scalable=new v.PdfScalable(this.pdfViewer,this.options),this.themeApplier=new u.PdfThemeApplier(this.readerContainer),this.destinationBuilder=new f.PdfDestinationBuilder(this),this.progressTracker=new d.PdfProgressTracker(this,this.pdfViewer,this.destinationBuilder),this.documentEventBridge=new p.PdfDocumentEvents(this.pdfViewer,this),this.viewerEvents=new m.PdfViewerEvents(this.owner.events,this.eventBus,this,this.pdfViewer);let x=this.getRendererContainer();this.zoomInputController=new h.PdfZoomInputController(this.pdfViewer,x),this.keyboardController=new g.PdfKeyboardController(this.pdfViewer,x),this.keyboardController.setFindRequestHandler(()=>{this.owner.events.emit(e.EventNames.RequestOpenFind)}),this.navPointProvider=new a.PdfNavPointProvider(this),this.navigator=new s.PdfCoreNavigator(this),this.navPointNavigator=new o.PdfNavPointNavigator(this,this.navigator,this.navPointProvider),this.pagingNavigator=new c.PdfPagingNavigator(this.owner.locale,this.owner.notifier,this),this.bindEvents(),i.watchScroll(this.getScrollElement(),this.owner.options.calcScrollDirection,async(t,n)=>{this.owner.events.emit(e.EventNames.ReaderDebounceScroll,t,n)},t=>{this.owner.onProgressChangeGuard&&this.owner.context?.progress?.current&&(this.owner.onProgressChangeGuard(this.owner.context.progress.current)||t.preventDefault()),this.owner.events.emit(e.EventNames.ReaderOriginalScroll,t)})}get id(){return this.currentInstanceId||=t.getRandomId(!0),this.currentInstanceId}async load(e,t){if(!this.isRendererReady){if(await this.ensureRendererReady(),this.options.textLayerMode===2){let{PdfSvgBuilder:e}=await Promise.resolve().then(()=>require("./PdfSvgBuilder.cjs"));this.svgBuilder=new e(this,this.options),await this.svgBuilder.initialize()}this.isRendererReady=!0}await super.load(e,t)}async ensureRendererReady(){let e=await this.owner.services.get(`themeProvider`),t;e?(t=e.getCurrentTheme(),this.themeApplier.applyTheme(t)):t=new r.Theme,this.themeApplier.applyTheme(t),this.rendererViewport.applyCssVariables()}bindEvents(){this.owner.events.on(e.EventNames.OptionsChange,this.onOptionsChange),this.owner.events.on(e.EventNames.PdfScaleChanging,this.onScaleChanging),this.documentEventBridge.bind(),this.viewerEvents.bind(),this.zoomInputController.bind(),this.keyboardController.bind()}unbindEvents(){this.owner.events.off(e.EventNames.OptionsChange,this.onOptionsChange),this.owner.events.off(e.EventNames.PdfScaleChanging,this.onScaleChanging),this.documentEventBridge.unbind(),this.viewerEvents.unbind(),this.zoomInputController.unbind(),this.keyboardController.unbind()}buildDest(e,t){return this.destinationBuilder.buildDest(e,t)}async getProgress(e){return this.progressTracker.getProgress(e)}async applyTheme(e){this.themeApplier.applyTheme(e)}async dispose(){this.unbindEvents(),this.currentInstanceId=null,await this.svgBuilder?.dispose(),await this.progressTracker.dispose(),await this.pagingNavigator.dispose(),await this.navPointProvider?.dispose(),await super.dispose()}};exports.PdfRenderer=b;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../kernal/EventNames.cjs"),t=require("../../../kernal/common/uuid.cjs"),n=require("../../../kernal/Options.cjs"),r=require("../../../kernal/Theme.cjs"),i=require("../../../kernal/html/events.cjs"),a=require("./PdfNavPointProvider.cjs"),o=require("./PdfNavPointNavigator.cjs"),s=require("./PdfCoreNavigator.cjs"),c=require("./PdfPagingNavigator.cjs"),l=require("./layout/PdfRendererLayout.cjs"),u=require("./style/PdfThemeApplier.cjs"),d=require("./progress/PdfProgressTracker.cjs"),f=require("./location/PdfDestinationBuilder.cjs"),p=require("./input/PdfDocumentEvents.cjs"),m=require("./input/PdfViewerEvents.cjs"),h=require("./input/PdfZoomInputController.cjs"),g=require("./input/PdfKeyboardController.cjs"),_=require("./documents/PdfDocumentsProvider.cjs"),v=require("./zoom/PdfScalable.cjs");require("../../../pdfjs/legacy/build/pdf.mjs");let y=require("perfect-debounce");var b=class extends _.PdfDocumentsProvider{constructor(t,r,_,b){super(t,r,_,b),this.isRendererReady=!1,this.onScaleChanging=async(e,t)=>{await this.delayApplyCssVariables()},this.delayApplyCssVariables=(0,y.debounce)(async()=>{this.rendererViewport.applyCssVariables()},200),this.onOptionsChange=async e=>{n.isOptionKey(e)&&this.rendererViewport.applyCssVariables()},this.pdfOptions=b,this.layout=new l.PdfRendererLayout(this.pdfViewer,this.owner.events),this.scalable=new v.PdfScalable(this.pdfViewer,this.options),this.themeApplier=new u.PdfThemeApplier(this.readerContainer),this.destinationBuilder=new f.PdfDestinationBuilder(this),this.progressTracker=new d.PdfProgressTracker(this,this.pdfViewer,this.destinationBuilder),this.documentEventBridge=new p.PdfDocumentEvents(this.pdfViewer,this),this.viewerEvents=new m.PdfViewerEvents(this.owner.events,this.eventBus,this,this.pdfViewer);let x=this.getRendererContainer();this.zoomInputController=new h.PdfZoomInputController(this.pdfViewer,x),this.keyboardController=new g.PdfKeyboardController(this.pdfViewer,x,this.owner),this.keyboardController.setFindRequestHandler(()=>{this.owner.events.emit(e.EventNames.RequestOpenFind)}),this.navPointProvider=new a.PdfNavPointProvider(this),this.navigator=new s.PdfCoreNavigator(this),this.navPointNavigator=new o.PdfNavPointNavigator(this,this.navigator,this.navPointProvider),this.pagingNavigator=new c.PdfPagingNavigator(this.owner.locale,this.owner.notifier,this),this.bindEvents(),i.watchScroll(this.getScrollElement(),this.owner.options.calcScrollDirection,async(t,n)=>{this.owner.events.emit(e.EventNames.ReaderDebounceScroll,t,n)},t=>{this.owner.onProgressChangeGuard&&this.owner.context?.progress?.current&&(this.owner.onProgressChangeGuard(this.owner.context.progress.current)||t.preventDefault()),this.owner.events.emit(e.EventNames.ReaderOriginalScroll,t)})}get id(){return this.currentInstanceId||=t.getRandomId(!0),this.currentInstanceId}async load(e,t){if(!this.isRendererReady){if(await this.ensureRendererReady(),this.options.textLayerMode===2){let{PdfSvgBuilder:e}=await Promise.resolve().then(()=>require("./PdfSvgBuilder.cjs"));this.svgBuilder=new e(this,this.options),await this.svgBuilder.initialize()}this.isRendererReady=!0}await super.load(e,t)}async ensureRendererReady(){let e=await this.owner.services.get(`themeProvider`),t;e?(t=e.getCurrentTheme(),this.themeApplier.applyTheme(t)):t=new r.Theme,this.themeApplier.applyTheme(t),this.rendererViewport.applyCssVariables()}bindEvents(){this.owner.events.on(e.EventNames.OptionsChange,this.onOptionsChange),this.owner.events.on(e.EventNames.PdfScaleChanging,this.onScaleChanging),this.documentEventBridge.bind(),this.viewerEvents.bind(),this.zoomInputController.bind(),this.keyboardController.bind()}unbindEvents(){this.owner.events.off(e.EventNames.OptionsChange,this.onOptionsChange),this.owner.events.off(e.EventNames.PdfScaleChanging,this.onScaleChanging),this.documentEventBridge.unbind(),this.viewerEvents.unbind(),this.zoomInputController.unbind(),this.keyboardController.unbind()}buildDest(e,t){return this.destinationBuilder.buildDest(e,t)}async getProgress(e){return this.progressTracker.getProgress(e)}async applyTheme(e){this.themeApplier.applyTheme(e)}async dispose(){this.unbindEvents(),this.currentInstanceId=null,await this.svgBuilder?.dispose(),await this.progressTracker.dispose(),await this.pagingNavigator.dispose(),await this.navPointProvider?.dispose(),await super.dispose()}};exports.PdfRenderer=b;
@@ -30,7 +30,7 @@ var b = class extends v {
30
30
  n(e) && this.rendererViewport.applyCssVariables();
31
31
  }, this.pdfOptions = b, this.layout = new u(this.pdfViewer, this.owner.events), this.scalable = new y(this.pdfViewer, this.options), this.themeApplier = new d(this.readerContainer), this.destinationBuilder = new p(this), this.progressTracker = new f(this, this.pdfViewer, this.destinationBuilder), this.documentEventBridge = new m(this.pdfViewer, this), this.viewerEvents = new h(this.owner.events, this.eventBus, this, this.pdfViewer);
32
32
  let x = this.getRendererContainer();
33
- this.zoomInputController = new g(this.pdfViewer, x), this.keyboardController = new _(this.pdfViewer, x), this.keyboardController.setFindRequestHandler(() => {
33
+ this.zoomInputController = new g(this.pdfViewer, x), this.keyboardController = new _(this.pdfViewer, x, this.owner), this.keyboardController.setFindRequestHandler(() => {
34
34
  this.owner.events.emit(e.RequestOpenFind);
35
35
  }), this.navPointProvider = new o(this), this.navigator = new c(this), this.navPointNavigator = new s(this, this.navigator, this.navPointProvider), this.pagingNavigator = new l(this.owner.locale, this.owner.notifier, this), this.bindEvents(), a(this.getScrollElement(), this.owner.options.calcScrollDirection, async (t, n) => {
36
36
  this.owner.events.emit(e.ReaderDebounceScroll, t, n);
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../_virtual/_rolldown/runtime.cjs");let t=require("../../../../pdfjs/legacy/build/pdf.mjs");t=e.__toESM(t,1);var n=class{constructor(e,t){this.pdfViewer=e,this.container=t,this.webViewerClick=e=>{},this.webViewerKeyDown=e=>{let{pdfViewer:t}=this,n=t.isInPresentationMode,r=!1,i=!1,a=!!e.ctrlKey|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0),o=this.getActiveOrFocusedElement(),s=o?.tagName?.toUpperCase()??``;if(a===1||a===8||a===5||a===12)switch(e.keyCode){case 70:e.shiftKey||(r=!0,this.findRequestHandler?.());break;case 71:break;case 61:case 107:case 187:case 171:n||t.increaseScale({drawingDelay:400}),r=!0;break;case 173:case 109:case 189:n||t.decreaseScale({drawingDelay:400}),r=!0;break;case 48:case 96:n||(setTimeout(()=>{t.currentScaleValue=`auto`}),r=!1);break;case 38:(n||t.currentPageNumber>1)&&(t.currentPageNumber=1,r=!0,i=!0);break;case 40:(n||t.currentPageNumber<t.pagesCount)&&(t.currentPageNumber=t.pagesCount,r=!0,i=!0)}let c=0,l=!1;if(a===0||a===4&&!n)switch(e.keyCode){case 38:case 33:t.isVerticalScrollbarEnabled?c=-1:(n||a===4&&t.currentScaleValue!==`page-fit`)&&(c=-1,l=a===0);break;case 37:t.isHorizontalScrollbarEnabled&&(c=-1);break;case 40:case 34:t.isVerticalScrollbarEnabled?c=1:(n||a===4&&t.currentScaleValue!==`page-fit`)&&(c=1,l=a===0);break;case 39:t.isHorizontalScrollbarEnabled&&(c=1);break;case 36:(n||t.currentPageNumber>1)&&(t.currentPageNumber=1,r=!0,i=!0);break;case 35:(n||t.currentPageNumber<t.pagesCount)&&(t.currentPageNumber=t.pagesCount,r=!0,i=!0);break;case 32:c=e.shiftKey?-1:1}if(a===4)switch(e.keyCode){case 13:case 32:if(!n&&t.currentScaleValue!==`page-fit`)break;t.previousPage(),r=!0}c!==0&&(!l||t.currentScaleValue===`page-fit`)&&(c>0?t.nextPage():t.previousPage(),r=!0),!r&&!n&&(e.keyCode>=33&&e.keyCode<=40||e.keyCode===32&&s!==`BUTTON`)&&(i=!0),i&&!t.containsElement(o)&&t.focus(),r&&e.preventDefault()},this.getActiveOrFocusedElement=()=>{let e=this.container.ownerDocument,t=e.activeElement||e.querySelector(`:focus`);for(;t?.shadowRoot;)e=t.shadowRoot,t=e.activeElement||e.querySelector(`:focus`);return t}}bind(){this.container.addEventListener(`click`,this.webViewerClick),this.container.addEventListener(`keydown`,this.webViewerKeyDown)}unbind(){this.container.removeEventListener(`click`,this.webViewerClick),this.container.removeEventListener(`keydown`,this.webViewerKeyDown)}setFindRequestHandler(e){this.findRequestHandler=e}get supportsIntegratedFind(){return t.shadow(this,`supportsIntegratedFind`,!0)}};exports.PdfKeyboardController=n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../_virtual/_rolldown/runtime.cjs"),t=require("../../../../ReaderHub.cjs");let n=require("../../../../pdfjs/legacy/build/pdf.mjs");n=e.__toESM(n,1);var r=class{constructor(e,n,r){this.pdfViewer=e,this.container=n,this.reader=r,this.zoomWindow=null,this.webViewerClick=e=>{},this.webViewerKeyDown=e=>{let{pdfViewer:t}=this,n=t.isInPresentationMode,r=!1,i=!1,a=!!e.ctrlKey|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0),o=this.getActiveOrFocusedElement(),s=o?.tagName?.toUpperCase()??``;if(a===1||a===8||a===5||a===12)switch(e.keyCode){case 70:e.shiftKey||(r=!0,this.findRequestHandler?.());break;case 71:break;case 38:(n||t.currentPageNumber>1)&&(t.currentPageNumber=1,r=!0,i=!0);break;case 40:(n||t.currentPageNumber<t.pagesCount)&&(t.currentPageNumber=t.pagesCount,r=!0,i=!0)}let c=0,l=!1;if(a===0||a===4&&!n)switch(e.keyCode){case 38:case 33:t.isVerticalScrollbarEnabled?c=-1:(n||a===4&&t.currentScaleValue!==`page-fit`)&&(c=-1,l=a===0);break;case 37:t.isHorizontalScrollbarEnabled&&(c=-1);break;case 40:case 34:t.isVerticalScrollbarEnabled?c=1:(n||a===4&&t.currentScaleValue!==`page-fit`)&&(c=1,l=a===0);break;case 39:t.isHorizontalScrollbarEnabled&&(c=1);break;case 36:(n||t.currentPageNumber>1)&&(t.currentPageNumber=1,r=!0,i=!0);break;case 35:(n||t.currentPageNumber<t.pagesCount)&&(t.currentPageNumber=t.pagesCount,r=!0,i=!0);break;case 32:c=e.shiftKey?-1:1}if(a===4)switch(e.keyCode){case 13:case 32:if(!n&&t.currentScaleValue!==`page-fit`)break;t.previousPage(),r=!0}c!==0&&(!l||t.currentScaleValue===`page-fit`)&&(c>0?t.nextPage():t.previousPage(),r=!0),!r&&!n&&(e.keyCode>=33&&e.keyCode<=40||e.keyCode===32&&s!==`BUTTON`)&&(i=!0),i&&!t.containsElement(o)&&t.focus(),r&&e.preventDefault()},this.onZoomShortcut=e=>{let t=i(e);if(!t||this.pdfViewer.isInPresentationMode||!this.isFocusedReader()||!this.isViewerOnScreen())return;e.preventDefault(),e.stopPropagation();let n=this.pdfViewer.currentScale;t===`in`?this.pdfViewer.increaseScale({drawingDelay:400}):t===`out`?this.pdfViewer.decreaseScale({drawingDelay:400}):this.pdfViewer.currentScaleValue=`auto`,this.pdfViewer.adjustScrollForViewportCenter(n)},this.isFocusedReader=()=>(t.ReaderHub.getFocusReader()??t.ReaderHub.getActiveReader())?.id===this.reader.id,this.isViewerOnScreen=()=>{if(!this.container.isConnected)return!1;let e=this.container.getBoundingClientRect();return e.width>0&&e.height>0},this.getActiveOrFocusedElement=()=>{let e=this.container.ownerDocument,t=e.activeElement||e.querySelector(`:focus`);for(;t?.shadowRoot;)e=t.shadowRoot,t=e.activeElement||e.querySelector(`:focus`);return t}}bind(){this.container.addEventListener(`click`,this.webViewerClick),this.container.addEventListener(`keydown`,this.webViewerKeyDown);let e=this.container.ownerDocument.defaultView;e&&(this.zoomWindow=e,e.addEventListener(`keydown`,this.onZoomShortcut,!0))}unbind(){this.container.removeEventListener(`click`,this.webViewerClick),this.container.removeEventListener(`keydown`,this.webViewerKeyDown),this.zoomWindow?.removeEventListener(`keydown`,this.onZoomShortcut,!0),this.zoomWindow=null}setFindRequestHandler(e){this.findRequestHandler=e}get supportsIntegratedFind(){return n.shadow(this,`supportsIntegratedFind`,!0)}},i=e=>{if(e.altKey||!(e.ctrlKey||e.metaKey))return null;let t=e.key,n=e.code;return t===`+`||t===`=`||n===`Equal`||n===`NumpadAdd`||e.keyCode===61||e.keyCode===107||e.keyCode===187||e.keyCode===171?`in`:t===`-`||t===`_`||n===`Minus`||n===`NumpadSubtract`||e.keyCode===173||e.keyCode===109||e.keyCode===189?`out`:t===`0`||n===`Digit0`||n===`Numpad0`||e.keyCode===48||e.keyCode===96?`reset`:null};exports.PdfKeyboardController=r;
@@ -1,16 +1,22 @@
1
+ import { Reader } from '../../../../kernal/Reader';
1
2
  import { MultiPDFViewer } from '../MultiPdfViewer';
2
3
 
3
4
  export type PdfFindRequestHandler = () => void;
4
5
  export declare class PdfKeyboardController {
5
6
  private readonly pdfViewer;
6
7
  private readonly container;
8
+ private readonly reader;
7
9
  private findRequestHandler?;
8
- constructor(pdfViewer: MultiPDFViewer, container: HTMLDivElement);
10
+ private zoomWindow;
11
+ constructor(pdfViewer: MultiPDFViewer, container: HTMLDivElement, reader: Reader);
9
12
  bind(): void;
10
13
  unbind(): void;
11
14
  setFindRequestHandler(handler?: PdfFindRequestHandler): void;
12
15
  get supportsIntegratedFind(): any;
13
16
  private webViewerClick;
14
17
  private webViewerKeyDown;
18
+ private onZoomShortcut;
19
+ private isFocusedReader;
20
+ private isViewerOnScreen;
15
21
  private getActiveOrFocusedElement;
16
22
  }
@@ -1,31 +1,15 @@
1
- import * as e from "../../../../pdfjs/legacy/build/pdf.mjs";
1
+ import { ReaderHub as e } from "../../../../ReaderHub.mjs";
2
+ import * as t from "../../../../pdfjs/legacy/build/pdf.mjs";
2
3
  //#region mediaTypes/pdf/renderer/input/PdfKeyboardController.ts
3
- var t = class {
4
- constructor(e, t) {
5
- this.pdfViewer = e, this.container = t, this.webViewerClick = (e) => {}, this.webViewerKeyDown = (e) => {
4
+ var n = class {
5
+ constructor(t, n, i) {
6
+ this.pdfViewer = t, this.container = n, this.reader = i, this.zoomWindow = null, this.webViewerClick = (e) => {}, this.webViewerKeyDown = (e) => {
6
7
  let { pdfViewer: t } = this, n = t.isInPresentationMode, r = !1, i = !1, a = !!e.ctrlKey | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0), o = this.getActiveOrFocusedElement(), s = o?.tagName?.toUpperCase() ?? "";
7
8
  if (a === 1 || a === 8 || a === 5 || a === 12) switch (e.keyCode) {
8
9
  case 70:
9
10
  e.shiftKey || (r = !0, this.findRequestHandler?.());
10
11
  break;
11
12
  case 71: break;
12
- case 61:
13
- case 107:
14
- case 187:
15
- case 171:
16
- n || t.increaseScale({ drawingDelay: 400 }), r = !0;
17
- break;
18
- case 173:
19
- case 109:
20
- case 189:
21
- n || t.decreaseScale({ drawingDelay: 400 }), r = !0;
22
- break;
23
- case 48:
24
- case 96:
25
- n || (setTimeout(() => {
26
- t.currentScaleValue = "auto";
27
- }), r = !1);
28
- break;
29
13
  case 38:
30
14
  (n || t.currentPageNumber > 1) && (t.currentPageNumber = 1, r = !0, i = !0);
31
15
  break;
@@ -62,6 +46,16 @@ var t = class {
62
46
  t.previousPage(), r = !0;
63
47
  }
64
48
  c !== 0 && (!l || t.currentScaleValue === "page-fit") && (c > 0 ? t.nextPage() : t.previousPage(), r = !0), !r && !n && (e.keyCode >= 33 && e.keyCode <= 40 || e.keyCode === 32 && s !== "BUTTON") && (i = !0), i && !t.containsElement(o) && t.focus(), r && e.preventDefault();
49
+ }, this.onZoomShortcut = (e) => {
50
+ let t = r(e);
51
+ if (!t || this.pdfViewer.isInPresentationMode || !this.isFocusedReader() || !this.isViewerOnScreen()) return;
52
+ e.preventDefault(), e.stopPropagation();
53
+ let n = this.pdfViewer.currentScale;
54
+ t === "in" ? this.pdfViewer.increaseScale({ drawingDelay: 400 }) : t === "out" ? this.pdfViewer.decreaseScale({ drawingDelay: 400 }) : this.pdfViewer.currentScaleValue = "auto", this.pdfViewer.adjustScrollForViewportCenter(n);
55
+ }, this.isFocusedReader = () => (e.getFocusReader() ?? e.getActiveReader())?.id === this.reader.id, this.isViewerOnScreen = () => {
56
+ if (!this.container.isConnected) return !1;
57
+ let e = this.container.getBoundingClientRect();
58
+ return e.width > 0 && e.height > 0;
65
59
  }, this.getActiveOrFocusedElement = () => {
66
60
  let e = this.container.ownerDocument, t = e.activeElement || e.querySelector(":focus");
67
61
  for (; t?.shadowRoot;) e = t.shadowRoot, t = e.activeElement || e.querySelector(":focus");
@@ -70,16 +64,22 @@ var t = class {
70
64
  }
71
65
  bind() {
72
66
  this.container.addEventListener("click", this.webViewerClick), this.container.addEventListener("keydown", this.webViewerKeyDown);
67
+ let e = this.container.ownerDocument.defaultView;
68
+ e && (this.zoomWindow = e, e.addEventListener("keydown", this.onZoomShortcut, !0));
73
69
  }
74
70
  unbind() {
75
- this.container.removeEventListener("click", this.webViewerClick), this.container.removeEventListener("keydown", this.webViewerKeyDown);
71
+ this.container.removeEventListener("click", this.webViewerClick), this.container.removeEventListener("keydown", this.webViewerKeyDown), this.zoomWindow?.removeEventListener("keydown", this.onZoomShortcut, !0), this.zoomWindow = null;
76
72
  }
77
73
  setFindRequestHandler(e) {
78
74
  this.findRequestHandler = e;
79
75
  }
80
76
  get supportsIntegratedFind() {
81
- return e.shadow(this, "supportsIntegratedFind", !0);
77
+ return t.shadow(this, "supportsIntegratedFind", !0);
82
78
  }
79
+ }, r = (e) => {
80
+ if (e.altKey || !(e.ctrlKey || e.metaKey)) return null;
81
+ let t = e.key, n = e.code;
82
+ return t === "+" || t === "=" || n === "Equal" || n === "NumpadAdd" || e.keyCode === 61 || e.keyCode === 107 || e.keyCode === 187 || e.keyCode === 171 ? "in" : t === "-" || t === "_" || n === "Minus" || n === "NumpadSubtract" || e.keyCode === 173 || e.keyCode === 109 || e.keyCode === 189 ? "out" : t === "0" || n === "Digit0" || n === "Numpad0" || e.keyCode === 48 || e.keyCode === 96 ? "reset" : null;
83
83
  };
84
84
  //#endregion
85
- export { t as PdfKeyboardController };
85
+ export { n as PdfKeyboardController };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../_virtual/_rolldown/runtime.cjs");let t=require("../../../../pdfjs/legacy/build/pdf.mjs");t=e.__toESM(t,1);var n=class{constructor(e,n){this.pdfViewer=e,this.container=n,this.WHEEL_ZOOM_DISABLED_TIMEOUT=1e3,this.zoomDisabledTimeout=null,this.isCtrlKeyDown=!1,this._wheelUnusedTicks=0,this._wheelUnusedFactor=1,this._touchInfo=null,this._touchUnusedTicks=0,this._touchUnusedFactor=1,this.falsePassiveOpts={passive:!1},this.onKeyDown=e=>{e.key===`Control`&&(this.isCtrlKeyDown=!0)},this.onKeyUp=e=>{e.key===`Control`&&(this.isCtrlKeyDown=!1)},this.setZoomDisabledTimeout=()=>{this.zoomDisabledTimeout&&clearTimeout(this.zoomDisabledTimeout),this.zoomDisabledTimeout=setTimeout(()=>{this.zoomDisabledTimeout=null},this.WHEEL_ZOOM_DISABLED_TIMEOUT)},this.webViewerVisibilityChange=()=>{document.visibilityState===`visible`&&this.setZoomDisabledTimeout()},this.webViewerWheel=e=>{if(this.pdfViewer.isInPresentationMode)return;let n=e.deltaMode,r=Math.exp(-e.deltaY/100),i=t.FeatureTest.platform.isMac,a=e.ctrlKey&&!this.isCtrlKeyDown&&n===WheelEvent.DOM_DELTA_PIXEL&&e.deltaX===0&&(Math.abs(r-1)<.05||i)&&e.deltaZ===0;if(a||e.ctrlKey&&this.supportedMouseWheelZoomModifierKeys.ctrlKey||e.metaKey&&this.supportedMouseWheelZoomModifierKeys.metaKey){if(e.preventDefault(),this.zoomDisabledTimeout||document.visibilityState===`hidden`)return;let t=this.pdfViewer.currentScale;if(a&&this.supportsPinchToZoom){if(r=this._accumulateFactor(t,r,`_wheelUnusedFactor`),r<1)this.pdfViewer.decreaseScale({drawingDelay:400,scaleFactor:r});else if(r>1)this.pdfViewer.increaseScale({drawingDelay:400,scaleFactor:r});else return}else{let t=this.normalizeWheelEventDirection(e),r=0;if(r=n===WheelEvent.DOM_DELTA_LINE||n===WheelEvent.DOM_DELTA_PAGE?Math.abs(t)>=1?Math.sign(t):this._accumulateTicks(t,`_wheelUnusedTicks`):this._accumulateTicks(t/100,`_wheelUnusedTicks`),r<0)this.pdfViewer.decreaseScale({drawingDelay:400,steps:-r});else if(r>0)this.pdfViewer.increaseScale({drawingDelay:400,steps:r});else return}this._centerAtPos(t,e.clientX,e.clientY)}else this.setZoomDisabledTimeout()},this.webViewerTouchStart=e=>{if(this.pdfViewer.isInPresentationMode||e.touches.length<2)return;if(e.preventDefault(),e.touches.length!==2){this._touchInfo=null;return}let[t,n]=[e.touches[0],e.touches[1]];t.identifier>n.identifier&&([t,n]=[n,t]),this._touchInfo={touch0X:t.pageX,touch0Y:t.pageY,touch1X:n.pageX,touch1Y:n.pageY}},this.webViewerTouchMove=e=>{if(!this._touchInfo||e.touches.length!==2)return;let[t,n]=[e.touches[0],e.touches[1]];t.identifier>n.identifier&&([t,n]=[n,t]);let{pageX:r,pageY:i}=t,{pageX:a,pageY:o}=n,{touch0X:s,touch0Y:c,touch1X:l,touch1Y:u}=this._touchInfo;if(Math.abs(s-r)<=1&&Math.abs(c-i)<=1&&Math.abs(l-a)<=1&&Math.abs(u-o)<=1)return;if(this._touchInfo.touch0X=r,this._touchInfo.touch0Y=i,this._touchInfo.touch1X=a,this._touchInfo.touch1Y=o,s===r&&c===i){let e=l-r,t=u-i,n=a-r,s=o-i,c=e*s-t*n;if(Math.abs(c)>.02*Math.hypot(e,t)*Math.hypot(n,s))return}else if(l===a&&u===o){let e=s-a,t=c-o,n=r-a,l=i-o,u=e*l-t*n;if(Math.abs(u)>.02*Math.hypot(e,t)*Math.hypot(n,l))return}else{let e=r-s,t=a-l,n=i-c,d=o-u;if(e*t+n*d>=0)return}e.preventDefault();let d=Math.hypot(r-a,i-o)||1,f=Math.hypot(s-l,c-u)||1,p=this.pdfViewer.currentScale;if(this.supportsPinchToZoom){let e=this._accumulateFactor(p,d/f,`_touchUnusedFactor`);if(e<1)this.pdfViewer.decreaseScale({drawingDelay:400,scaleFactor:e});else if(e>1)this.pdfViewer.increaseScale({drawingDelay:400,scaleFactor:e});else return}else{let e=this._accumulateTicks((d-f)/30,`_touchUnusedTicks`);if(e<0)this.pdfViewer.decreaseScale({drawingDelay:400,steps:-e});else if(e>0)this.pdfViewer.increaseScale({drawingDelay:400,steps:e});else return}this._centerAtPos(p,(r+a)/2,(i+o)/2)},this.webViewerTouchEnd=e=>{this._touchInfo&&(e.preventDefault(),this._touchInfo=null,this._touchUnusedTicks=0,this._touchUnusedFactor=1)},this._accumulateTicks=(e,t)=>{(this[t]>0&&e<0||this[t]<0&&e>0)&&(this[t]=0),this[t]+=e;let n=Math.trunc(this[t]);return this[t]-=n,n},this._accumulateFactor=(e,t,n)=>{if(t===1)return 1;(this[n]>1&&t<1||this[n]<1&&t>1)&&(this[n]=1);let r=Math.floor(e*t*this[n]*100)/(100*e);return this[n]=t/r,r},this._centerAtPos=(e,t,n)=>{let r=this.pdfViewer.currentScale/e-1;if(r!==0){let[e,i]=this.pdfViewer.containerTopLeft;this.pdfViewer.container.scrollLeft+=(t-i)*r,this.pdfViewer.container.scrollTop+=(n-e)*r}},this.normalizeWheelEventDirection=e=>{let t=Math.hypot(e.deltaX,e.deltaY),n=Math.atan2(e.deltaY,e.deltaX);return-.25*Math.PI<n&&n<.75*Math.PI&&(t=-t),t}}bind(){this.container.addEventListener(`visibilitychange`,this.webViewerVisibilityChange),this.container.addEventListener(`wheel`,this.webViewerWheel,this.falsePassiveOpts),this.container.addEventListener(`touchstart`,this.webViewerTouchStart,this.falsePassiveOpts),this.container.addEventListener(`touchmove`,this.webViewerTouchMove,this.falsePassiveOpts),this.container.addEventListener(`touchend`,this.webViewerTouchEnd,this.falsePassiveOpts),this.container.addEventListener(`keydown`,this.onKeyDown),this.container.addEventListener(`keyup`,this.onKeyUp)}unbind(){this.container.removeEventListener(`visibilitychange`,this.webViewerVisibilityChange),this.container.removeEventListener(`wheel`,this.webViewerWheel,this.falsePassiveOpts),this.container.removeEventListener(`touchstart`,this.webViewerTouchStart,this.falsePassiveOpts),this.container.removeEventListener(`touchmove`,this.webViewerTouchMove,this.falsePassiveOpts),this.container.removeEventListener(`touchend`,this.webViewerTouchEnd,this.falsePassiveOpts),this.container.removeEventListener(`keydown`,this.onKeyDown),this.container.removeEventListener(`keyup`,this.onKeyUp),this.zoomDisabledTimeout&&=(clearTimeout(this.zoomDisabledTimeout),null),this.isCtrlKeyDown=!1}get supportsPinchToZoom(){return t.shadow(this,`supportsPinchToZoom`,!0)}get supportedMouseWheelZoomModifierKeys(){return t.shadow(this,`supportedMouseWheelZoomModifierKeys`,{ctrlKey:!0,metaKey:!0})}};exports.PdfZoomInputController=n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../../../_virtual/_rolldown/runtime.cjs");let t=require("../../../../pdfjs/legacy/build/pdf.mjs");t=e.__toESM(t,1);var n=class{constructor(e,n){this.pdfViewer=e,this.container=n,this.WHEEL_ZOOM_DISABLED_TIMEOUT=1e3,this.zoomDisabledTimeout=null,this.isCtrlKeyDown=!1,this._wheelUnusedTicks=0,this._wheelUnusedFactor=1,this._touchInfo=null,this._touchUnusedTicks=0,this._touchUnusedFactor=1,this.falsePassiveOpts={passive:!1},this.onKeyDown=e=>{e.key===`Control`&&(this.isCtrlKeyDown=!0)},this.onKeyUp=e=>{e.key===`Control`&&(this.isCtrlKeyDown=!1)},this.setZoomDisabledTimeout=()=>{this.zoomDisabledTimeout&&clearTimeout(this.zoomDisabledTimeout),this.zoomDisabledTimeout=setTimeout(()=>{this.zoomDisabledTimeout=null},this.WHEEL_ZOOM_DISABLED_TIMEOUT)},this.webViewerVisibilityChange=()=>{document.visibilityState===`visible`&&this.setZoomDisabledTimeout()},this.webViewerWheel=e=>{if(this.pdfViewer.isInPresentationMode)return;let n=e.deltaMode,r=Math.exp(-e.deltaY/100),i=t.FeatureTest.platform.isMac,a=e.ctrlKey&&!this.isCtrlKeyDown&&n===WheelEvent.DOM_DELTA_PIXEL&&e.deltaX===0&&(Math.abs(r-1)<.05||i)&&e.deltaZ===0;if(a||e.ctrlKey&&this.supportedMouseWheelZoomModifierKeys.ctrlKey||e.metaKey&&this.supportedMouseWheelZoomModifierKeys.metaKey){if(e.preventDefault(),this.zoomDisabledTimeout||document.visibilityState===`hidden`)return;let t=this.pdfViewer.currentScale;if(a&&this.supportsPinchToZoom){if(r=this._accumulateFactor(t,r,`_wheelUnusedFactor`),r<1)this.pdfViewer.decreaseScale({drawingDelay:400,scaleFactor:r});else if(r>1)this.pdfViewer.increaseScale({drawingDelay:400,scaleFactor:r});else return}else{let t=this.normalizeWheelEventDirection(e),r=0;if(r=n===WheelEvent.DOM_DELTA_LINE||n===WheelEvent.DOM_DELTA_PAGE?Math.abs(t)>=1?Math.sign(t):this._accumulateTicks(t,`_wheelUnusedTicks`):this._accumulateTicks(t/100,`_wheelUnusedTicks`),r<0)this.pdfViewer.decreaseScale({drawingDelay:400,steps:-r});else if(r>0)this.pdfViewer.increaseScale({drawingDelay:400,steps:r});else return}this._centerAtPos(t,e.clientX,e.clientY)}else this.setZoomDisabledTimeout()},this.webViewerTouchStart=e=>{if(this.pdfViewer.isInPresentationMode||e.touches.length<2)return;if(e.preventDefault(),e.touches.length!==2){this._touchInfo=null;return}let[t,n]=[e.touches[0],e.touches[1]];t.identifier>n.identifier&&([t,n]=[n,t]),this._touchInfo={touch0X:t.pageX,touch0Y:t.pageY,touch1X:n.pageX,touch1Y:n.pageY}},this.webViewerTouchMove=e=>{if(!this._touchInfo||e.touches.length!==2)return;let[t,n]=[e.touches[0],e.touches[1]];t.identifier>n.identifier&&([t,n]=[n,t]);let{pageX:r,pageY:i}=t,{pageX:a,pageY:o}=n,{touch0X:s,touch0Y:c,touch1X:l,touch1Y:u}=this._touchInfo;if(Math.abs(s-r)<=1&&Math.abs(c-i)<=1&&Math.abs(l-a)<=1&&Math.abs(u-o)<=1)return;if(this._touchInfo.touch0X=r,this._touchInfo.touch0Y=i,this._touchInfo.touch1X=a,this._touchInfo.touch1Y=o,s===r&&c===i){let e=l-r,t=u-i,n=a-r,s=o-i,c=e*s-t*n;if(Math.abs(c)>.02*Math.hypot(e,t)*Math.hypot(n,s))return}else if(l===a&&u===o){let e=s-a,t=c-o,n=r-a,l=i-o,u=e*l-t*n;if(Math.abs(u)>.02*Math.hypot(e,t)*Math.hypot(n,l))return}else{let e=r-s,t=a-l,n=i-c,d=o-u;if(e*t+n*d>=0)return}e.preventDefault();let d=Math.hypot(r-a,i-o)||1,f=Math.hypot(s-l,c-u)||1,p=this.pdfViewer.currentScale;if(this.supportsPinchToZoom){let e=this._accumulateFactor(p,d/f,`_touchUnusedFactor`);if(e<1)this.pdfViewer.decreaseScale({drawingDelay:400,scaleFactor:e});else if(e>1)this.pdfViewer.increaseScale({drawingDelay:400,scaleFactor:e});else return}else{let e=this._accumulateTicks((d-f)/30,`_touchUnusedTicks`);if(e<0)this.pdfViewer.decreaseScale({drawingDelay:400,steps:-e});else if(e>0)this.pdfViewer.increaseScale({drawingDelay:400,steps:e});else return}this._centerAtPos(p,(r+a)/2,(i+o)/2)},this.webViewerTouchEnd=e=>{this._touchInfo&&(e.preventDefault(),this._touchInfo=null,this._touchUnusedTicks=0,this._touchUnusedFactor=1)},this._accumulateTicks=(e,t)=>{(this[t]>0&&e<0||this[t]<0&&e>0)&&(this[t]=0),this[t]+=e;let n=Math.trunc(this[t]);return this[t]-=n,n},this._accumulateFactor=(e,t,n)=>{if(t===1)return 1;(this[n]>1&&t<1||this[n]<1&&t>1)&&(this[n]=1);let r=Math.floor(e*t*this[n]*100)/(100*e);return this[n]=t/r,r},this._centerAtPos=(e,t,n)=>{this.pdfViewer.adjustScrollForScaleOrigin(e,t,n)},this.normalizeWheelEventDirection=e=>{let t=Math.hypot(e.deltaX,e.deltaY),n=Math.atan2(e.deltaY,e.deltaX);return-.25*Math.PI<n&&n<.75*Math.PI&&(t=-t),t}}bind(){this.container.addEventListener(`visibilitychange`,this.webViewerVisibilityChange),this.container.addEventListener(`wheel`,this.webViewerWheel,this.falsePassiveOpts),this.container.addEventListener(`touchstart`,this.webViewerTouchStart,this.falsePassiveOpts),this.container.addEventListener(`touchmove`,this.webViewerTouchMove,this.falsePassiveOpts),this.container.addEventListener(`touchend`,this.webViewerTouchEnd,this.falsePassiveOpts),this.container.addEventListener(`keydown`,this.onKeyDown),this.container.addEventListener(`keyup`,this.onKeyUp)}unbind(){this.container.removeEventListener(`visibilitychange`,this.webViewerVisibilityChange),this.container.removeEventListener(`wheel`,this.webViewerWheel,this.falsePassiveOpts),this.container.removeEventListener(`touchstart`,this.webViewerTouchStart,this.falsePassiveOpts),this.container.removeEventListener(`touchmove`,this.webViewerTouchMove,this.falsePassiveOpts),this.container.removeEventListener(`touchend`,this.webViewerTouchEnd,this.falsePassiveOpts),this.container.removeEventListener(`keydown`,this.onKeyDown),this.container.removeEventListener(`keyup`,this.onKeyUp),this.zoomDisabledTimeout&&=(clearTimeout(this.zoomDisabledTimeout),null),this.isCtrlKeyDown=!1}get supportsPinchToZoom(){return t.shadow(this,`supportsPinchToZoom`,!0)}get supportedMouseWheelZoomModifierKeys(){return t.shadow(this,`supportedMouseWheelZoomModifierKeys`,{ctrlKey:!0,metaKey:!0})}};exports.PdfZoomInputController=n;
@@ -109,11 +109,7 @@ var t = class {
109
109
  let r = Math.floor(e * t * this[n] * 100) / (100 * e);
110
110
  return this[n] = t / r, r;
111
111
  }, this._centerAtPos = (e, t, n) => {
112
- let r = this.pdfViewer.currentScale / e - 1;
113
- if (r !== 0) {
114
- let [e, i] = this.pdfViewer.containerTopLeft;
115
- this.pdfViewer.container.scrollLeft += (t - i) * r, this.pdfViewer.container.scrollTop += (n - e) * r;
116
- }
112
+ this.pdfViewer.adjustScrollForScaleOrigin(e, t, n);
117
113
  }, this.normalizeWheelEventDirection = (e) => {
118
114
  let t = Math.hypot(e.deltaX, e.deltaY), n = Math.atan2(e.deltaY, e.deltaX);
119
115
  return -.25 * Math.PI < n && n < .75 * Math.PI && (t = -t), t;
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=class{constructor(e,t){this.pdfViewer=e,this.options=t,this.DEFAULT_SCALE_VALUE=`auto`,this.PRESET_SCALE_VALUES=new Set([`auto`,`page-actual`,`page-fit`,`page-width`,`page-height`]),this.formatScaleValue=e=>{if(!e||this.PRESET_SCALE_VALUES.has(e)||e.endsWith(`%`))return e;let t=Number(e);return Number.isFinite(t)&&t>0?`${Math.round(t*100)}%`:e},this.persistScaleValue=async()=>{let e=this.currentScaleValue;e&&(this.options.scaleValue=e)}}get currentScaleValue(){return this.formatScaleValue(this.pdfViewer?.currentScaleValue)}get currentScale(){return this.pdfViewer.currentScale}async scaleTo(e){this.pdfViewer.currentScaleValue=e,await this.persistScaleValue()}async zoomIn(e,t){this.pdfViewer.isInPresentationMode||(this.pdfViewer.increaseScale({drawingDelay:400,steps:e,scaleFactor:t}),await this.persistScaleValue())}async zoomOut(e,t){this.pdfViewer.isInPresentationMode||(this.pdfViewer.decreaseScale({drawingDelay:400,steps:e,scaleFactor:t}),await this.persistScaleValue())}async zoomReset(){this.pdfViewer.isInPresentationMode||await this.scaleTo(this.DEFAULT_SCALE_VALUE)}};exports.PdfScalable=e;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=class{constructor(e,t){this.pdfViewer=e,this.options=t,this.DEFAULT_SCALE_VALUE=`auto`,this.PRESET_SCALE_VALUES=new Set([`auto`,`page-actual`,`page-fit`,`page-width`,`page-height`]),this.formatScaleValue=e=>{if(!e||this.PRESET_SCALE_VALUES.has(e)||e.endsWith(`%`))return e;let t=Number(e);return Number.isFinite(t)&&t>0?`${Math.round(t*100)}%`:e},this.persistScaleValue=async()=>{let e=this.currentScaleValue;e&&(this.options.scaleValue=e)}}get currentScaleValue(){return this.formatScaleValue(this.pdfViewer?.currentScaleValue)}get currentScale(){return this.pdfViewer.currentScale}async scaleTo(e){this.pdfViewer.currentScaleValue=e,await this.persistScaleValue()}async zoomIn(e,t){if(this.pdfViewer.isInPresentationMode)return;let n=this.pdfViewer.currentScale;this.pdfViewer.increaseScale({drawingDelay:400,steps:e,scaleFactor:t}),this.pdfViewer.adjustScrollForViewportCenter(n),await this.persistScaleValue()}async zoomOut(e,t){if(this.pdfViewer.isInPresentationMode)return;let n=this.pdfViewer.currentScale;this.pdfViewer.decreaseScale({drawingDelay:400,steps:e,scaleFactor:t}),this.pdfViewer.adjustScrollForViewportCenter(n),await this.persistScaleValue()}async zoomReset(){if(this.pdfViewer.isInPresentationMode)return;let e=this.pdfViewer.currentScale;await this.scaleTo(this.DEFAULT_SCALE_VALUE),this.pdfViewer.adjustScrollForViewportCenter(e)}};exports.PdfScalable=e;
@@ -26,21 +26,27 @@ var e = class {
26
26
  this.pdfViewer.currentScaleValue = e, await this.persistScaleValue();
27
27
  }
28
28
  async zoomIn(e, t) {
29
- this.pdfViewer.isInPresentationMode || (this.pdfViewer.increaseScale({
29
+ if (this.pdfViewer.isInPresentationMode) return;
30
+ let n = this.pdfViewer.currentScale;
31
+ this.pdfViewer.increaseScale({
30
32
  drawingDelay: 400,
31
33
  steps: e,
32
34
  scaleFactor: t
33
- }), await this.persistScaleValue());
35
+ }), this.pdfViewer.adjustScrollForViewportCenter(n), await this.persistScaleValue();
34
36
  }
35
37
  async zoomOut(e, t) {
36
- this.pdfViewer.isInPresentationMode || (this.pdfViewer.decreaseScale({
38
+ if (this.pdfViewer.isInPresentationMode) return;
39
+ let n = this.pdfViewer.currentScale;
40
+ this.pdfViewer.decreaseScale({
37
41
  drawingDelay: 400,
38
42
  steps: e,
39
43
  scaleFactor: t
40
- }), await this.persistScaleValue());
44
+ }), this.pdfViewer.adjustScrollForViewportCenter(n), await this.persistScaleValue();
41
45
  }
42
46
  async zoomReset() {
43
- this.pdfViewer.isInPresentationMode || await this.scaleTo(this.DEFAULT_SCALE_VALUE);
47
+ if (this.pdfViewer.isInPresentationMode) return;
48
+ let e = this.pdfViewer.currentScale;
49
+ await this.scaleTo(this.DEFAULT_SCALE_VALUE), this.pdfViewer.adjustScrollForViewportCenter(e);
44
50
  }
45
51
  };
46
52
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@foxycape/core",
3
- "version": "1.2.4",
3
+ "version": "1.2.5",
4
4
  "description": "Browser-side multi-format reader kernel with pluggable parsers, renderers, services, and plugins.",
5
5
  "license": "MIT",
6
6
  "type": "module",