@readium/navigator-html-injectables 2.2.2 → 2.2.3
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/dist/index.js
CHANGED
|
@@ -2106,7 +2106,7 @@ class Ft {
|
|
|
2106
2106
|
if (this.experimentalHighlights && !this.notTextFlag?.has(e.id))
|
|
2107
2107
|
return this.experimentalLayout(e);
|
|
2108
2108
|
const t = this.wnd.document.createElement("div");
|
|
2109
|
-
t.setAttribute("id", e.id), t.style.setProperty("pointer-events", "none");
|
|
2109
|
+
t.setAttribute("id", e.id), t.dataset.highlightId = e.decoration.id, t.style.setProperty("pointer-events", "none");
|
|
2110
2110
|
const i = this.wnd.innerWidth, r = parseInt(
|
|
2111
2111
|
getComputedStyle(this.wnd.document.documentElement).getPropertyValue(
|
|
2112
2112
|
"column-count"
|
|
@@ -2956,7 +2956,7 @@ const _ = class _ extends Y {
|
|
|
2956
2956
|
), Reflect.defineProperty(e.navigator, "epubReadingSystem", {
|
|
2957
2957
|
value: {
|
|
2958
2958
|
name: "readium-ts-toolkit",
|
|
2959
|
-
version: "2.2.
|
|
2959
|
+
version: "2.2.3",
|
|
2960
2960
|
hasFeature: (r, n = "") => {
|
|
2961
2961
|
switch (r) {
|
|
2962
2962
|
case "dom-manipulation":
|
package/dist/index.umd.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
::highlight(${this.id}) {
|
|
3
3
|
color: ${Wt(n,r)};
|
|
4
4
|
background-color: ${n};
|
|
5
|
-
}`}layout(e){if(this.experimentalHighlights&&!this.notTextFlag?.has(e.id))return this.experimentalLayout(e);const t=this.wnd.document.createElement("div");t.setAttribute("id",e.id),t.style.setProperty("pointer-events","none");const i=this.wnd.innerWidth,r=parseInt(getComputedStyle(this.wnd.document.documentElement).getPropertyValue("column-count")),n=i/(r||1),o=this.wnd.document.scrollingElement,a=o.scrollLeft,u=o.scrollTop,h=(p,f,g)=>{if(p.style.position="absolute",e.decoration?.style?.width==="viewport"){p.style.width=`${i}px`,p.style.height=`${f.height}px`;let T=Math.floor(f.left/i)*i;p.style.left=`${T+a}px`,p.style.top=`${f.top+u}px`}else if(e.decoration?.style?.width==="bounds")p.style.width=`${g.width}px`,p.style.height=`${f.height}px`,p.style.left=`${g.left+a}px`,p.style.top=`${f.top+u}px`;else if(e.decoration?.style?.width==="page"){p.style.width=`${n}px`,p.style.height=`${f.height}px`;let T=Math.floor(f.left/n)*n;p.style.left=`${T+a}px`,p.style.top=`${f.top+u}px`}else p.style.width=`${f.width}px`,p.style.height=`${f.height}px`,p.style.left=`${f.left+a}px`,p.style.top=`${f.top+u}px`},c=e.range.getBoundingClientRect();let m=this.wnd.document.createElement("template");const d=this.getCurrentDarkMode();m.innerHTML=`
|
|
5
|
+
}`}layout(e){if(this.experimentalHighlights&&!this.notTextFlag?.has(e.id))return this.experimentalLayout(e);const t=this.wnd.document.createElement("div");t.setAttribute("id",e.id),t.dataset.highlightId=e.decoration.id,t.style.setProperty("pointer-events","none");const i=this.wnd.innerWidth,r=parseInt(getComputedStyle(this.wnd.document.documentElement).getPropertyValue("column-count")),n=i/(r||1),o=this.wnd.document.scrollingElement,a=o.scrollLeft,u=o.scrollTop,h=(p,f,g)=>{if(p.style.position="absolute",e.decoration?.style?.width==="viewport"){p.style.width=`${i}px`,p.style.height=`${f.height}px`;let T=Math.floor(f.left/i)*i;p.style.left=`${T+a}px`,p.style.top=`${f.top+u}px`}else if(e.decoration?.style?.width==="bounds")p.style.width=`${g.width}px`,p.style.height=`${f.height}px`,p.style.left=`${g.left+a}px`,p.style.top=`${f.top+u}px`;else if(e.decoration?.style?.width==="page"){p.style.width=`${n}px`,p.style.height=`${f.height}px`;let T=Math.floor(f.left/n)*n;p.style.left=`${T+a}px`,p.style.top=`${f.top+u}px`}else p.style.width=`${f.width}px`,p.style.height=`${f.height}px`,p.style.left=`${f.left+a}px`,p.style.top=`${f.top+u}px`},c=e.range.getBoundingClientRect();let m=this.wnd.document.createElement("template");const d=this.getCurrentDarkMode();m.innerHTML=`
|
|
6
6
|
<div
|
|
7
7
|
data-readium="true"
|
|
8
8
|
class="readium-highlight"
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
body::-webkit-scrollbar {
|
|
56
56
|
display: none; /* for Chrome, Safari, and Opera */
|
|
57
57
|
}
|
|
58
|
-
`,e.document.head.appendChild(i),this.resizeObserver=new ResizeObserver(()=>{this.resizeDebounce&&this.wnd.clearTimeout(this.resizeDebounce),this.isResizing=!0,this.resizeDebounce=this.wnd.setTimeout(()=>{this.isResizing=!1,this.resizeDebounce=null,this.reportProgress()},50)}),this.resizeObserver.observe(e.document.body),e.addEventListener("scroll",this.handleScroll,{passive:!0}),t.register("force_webkit_recalc",C.moduleName,()=>{ut(this.wnd);const r=this.doc().scrollTop;r>1?this.doc().scrollTop=r-1:this.doc().scrollTop=r+1,this.doc().scrollTop=r}),t.register("go_progression",C.moduleName,(r,n)=>{const o=r;if(o<0||o>1){t.send("error",{message:"go_progression must be given a position from 0.0 to 1.0"}),n(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=this.doc().offsetHeight*o,this.reportProgress(),E(this.wnd),n(!0)})}),t.register("go_id",C.moduleName,(r,n)=>{const o=e.document.getElementById(r);if(!o){n(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=o.getBoundingClientRect().top+e.scrollY-e.innerHeight/2,this.reportProgress(),E(this.wnd),n(!0)})}),t.register("go_text",C.moduleName,(r,n)=>{let o;Array.isArray(r)&&(r.length>1&&(o=r[1]),r=r[0]);const a=D.deserialize(r),u=re(this.wnd.document,new L({href:e.location.href,type:"text/html",text:a,locations:o?new b({otherLocations:new Map([["cssSelector",o]])}):void 0}));if(!u){n(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=u.getBoundingClientRect().top+e.scrollY-e.innerHeight/2,this.reportProgress(),E(this.wnd),n(!0)})}),t.register("go_start",C.moduleName,(r,n)=>{if(this.doc().scrollTop===0)return n(!1);this.doc().scrollTop=0,this.reportProgress(),n(!0)}),t.register("go_end",C.moduleName,(r,n)=>{if(this.doc().scrollTop===this.doc().scrollHeight-this.doc().offsetHeight)return n(!1);this.doc().scrollTop=this.doc().scrollHeight-this.doc().offsetHeight,this.reportProgress(),n(!0)}),t.register("unfocus",C.moduleName,(r,n)=>{E(this.wnd),n(!0)}),t.register(["go_next","go_prev"],C.moduleName,(r,n)=>n(!1)),t.register("focus",C.moduleName,(r,n)=>{this.reportProgress(),n(!0)}),t.register("first_visible_locator",C.moduleName,(r,n)=>{const o=Ce(e,!0);this.comms.send("first_visible_locator",o.serialize()),n(!0)}),t.log("ScrollSnapper Mounted"),!0}unmount(e,t){return t.unregisterAll(C.moduleName),this.resizeObserver.disconnect(),this.handleScroll&&e.removeEventListener("scroll",this.handleScroll),e.document.getElementById(mt)?.remove(),t.log("ScrollSnapper Unmounted"),!0}};C.moduleName="scroll_snapper";let Me=C;const P=class P extends G{constructor(){super(...arguments),this.initialScrollHandled=!1,this.isScrolling=!1,this.lastScrollTop=0,this.isResizing=!1,this.resizeDebounce=null,this.handleScroll=()=>{if(this.comms.ready&&!this.isResizing){if(!this.initialScrollHandled){this.lastScrollTop=this.doc().scrollTop,this.initialScrollHandled=!0,this.reportProgress();return}this.isScrolling||(this.isScrolling=!0,this.wnd.requestAnimationFrame(()=>{this.reportProgress();const e=this.doc().scrollTop,t=e-this.lastScrollTop;this.lastScrollTop=e,this.comms.send("scroll",t),this.isScrolling=!1}))}}}doc(){return this.wnd.document.scrollingElement}reportProgress(){if(!this.comms.ready)return;const e=Math.ceil(this.doc().scrollTop),t=this.doc().scrollHeight,i=this.wnd.innerHeight,r=Math.max(0,Math.min(1,e/t)),n=Math.max(0,Math.min(1,(e+i)/t));this.comms.send("progress",{start:r,end:n})}mount(e,t){return this.wnd=e,this.comms=t,this.initialScrollHandled=!1,this.lastScrollTop=0,this.isResizing=!1,this.resizeDebounce&&(this.wnd.clearTimeout(this.resizeDebounce),this.resizeDebounce=null),this.resizeObserver=new ResizeObserver(()=>{this.resizeDebounce&&this.wnd.clearTimeout(this.resizeDebounce),this.isResizing=!0,this.resizeDebounce=this.wnd.setTimeout(()=>{this.isResizing=!1,this.resizeDebounce=null,this.reportProgress()},50)}),this.resizeObserver.observe(e.document.body),e.addEventListener("scroll",this.handleScroll,{passive:!0}),t.register("force_webkit_recalc",P.moduleName,()=>{ut(this.wnd);const i=this.doc().scrollTop;i>1?this.doc().scrollTop=i-1:this.doc().scrollTop=i+1,this.doc().scrollTop=i}),t.register("go_progression",P.moduleName,(i,r)=>{const n=i;if(n<0||n>1){t.send("error",{message:"go_progression must be given a position from 0.0 to 1.0"}),r(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=this.doc().offsetHeight*n,this.reportProgress(),E(this.wnd),r(!0)})}),this.comms.register("go_id",P.moduleName,(i,r)=>{const n=e.document.getElementById(i);if(!n){r(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=n.getBoundingClientRect().top+e.scrollY-e.innerHeight/2,this.reportProgress(),E(this.wnd),r(!0)})}),t.register("go_text",P.moduleName,(i,r)=>{let n;Array.isArray(i)&&(i.length>1&&(n=i[1]),i=i[0]);const o=D.deserialize(i),a=re(this.wnd.document,new L({href:e.location.href,type:"text/html",text:o,locations:n?new b({otherLocations:new Map([["cssSelector",n]])}):void 0}));if(!a){r(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=a.getBoundingClientRect().top+e.scrollY-e.innerHeight/2,this.reportProgress(),E(this.wnd),r(!0)})}),t.register("go_start",P.moduleName,(i,r)=>{if(this.doc().scrollTop===0)return r(!1);this.doc().scrollTop=0,this.reportProgress(),r(!0)}),t.register("go_end",P.moduleName,(i,r)=>{if(this.doc().scrollTop===this.doc().scrollHeight-this.doc().offsetHeight)return r(!1);this.doc().scrollTop=this.doc().scrollHeight-this.doc().offsetHeight,this.reportProgress(),r(!0)}),t.register("unfocus",P.moduleName,(i,r)=>{E(this.wnd),r(!0)}),t.register(["go_next","go_prev"],P.moduleName,(i,r)=>r(!1)),t.register("focus",P.moduleName,(i,r)=>{this.reportProgress(),r(!0)}),t.register("first_visible_locator",P.moduleName,(i,r)=>{const n=Ce(e,!0);t.send("first_visible_locator",n.serialize()),r(!0)}),t.log("WebPubSnapper Mounted"),!0}unmount(e,t){return t.unregisterAll(P.moduleName),this.resizeObserver.disconnect(),this.handleScroll&&e.removeEventListener("scroll",this.handleScroll),t.log("WebPubSnapper Unmounted"),!0}};P.moduleName="webpub_snapper";let Ae=P;const Ie=class Ie extends B{constructor(){super(...arguments),this.pointerMoved=!1,this.onPointerUp=this.onPointUp.bind(this),this.onPointerMove=this.onPointMove.bind(this),this.onPointerDown=this.onPointDown.bind(this),this.onContextMenu=this.onContext.bind(this),this.onClicker=this.onClick.bind(this)}onPointUp(e){const t=this.wnd.getSelection();if(t&&t.toString()?.length>0){const r=t.getRangeAt(0)?.getClientRects();if(!r||r.length===0)return;const n=r[0],o={text:t.toString(),x:n.x,y:n.y,width:n.width,height:n.height,targetFrameSrc:this.wnd?.location?.href};this.comms.send("text_selected",o)}if(this.pointerMoved){this.pointerMoved=!1;return}if(!t?.isCollapsed||!e.isPrimary)return;const i=this.wnd.devicePixelRatio;e.preventDefault(),this.comms.send(e.pointerType==="touch"?"tap":"click",{defaultPrevented:e.defaultPrevented,x:e.clientX*i,y:e.clientY*i,targetFrameSrc:this.wnd.location.href,targetElement:e.target.outerHTML,interactiveElement:dt(e.target)?.outerHTML,cssSelector:this.wnd._readium_cssSelectorGenerator.getCssSelector(e.target)}),this.pointerMoved=!1}onPointMove(e){if(e.movementY!==void 0&&e.movementX!==void 0){(Math.abs(e.movementX)>1||Math.abs(e.movementY)>1)&&(this.pointerMoved=!0);return}this.pointerMoved=!0}onPointDown(){this.pointerMoved=!1}onContext(e){this.onPointUp(e),this.pointerMoved=!1}onClick(e){if(e.preventDefault(),!e.isTrusted){const t=new PointerEvent("pointerup",{isPrimary:!0,pointerType:"mouse",clientX:e.clientX,clientY:e.clientY});Object.defineProperty(t,"target",{writable:!1,value:e.target}),Object.defineProperty(t,"defaultPrevented",{writable:!1,value:e.defaultPrevented}),this.onPointUp(t)}}mount(e,t){return this.wnd=e,this.comms=t,e.document.addEventListener("pointerdown",this.onPointerDown),e.document.addEventListener("pointerup",this.onPointerUp),e.document.addEventListener("contextmenu",this.onContextMenu),e.document.addEventListener("pointermove",this.onPointerMove),e.document.addEventListener("click",this.onClicker),t.log("Peripherals Mounted"),!0}unmount(e,t){return e.document.removeEventListener("pointerdown",this.onPointerDown),e.document.removeEventListener("pointerup",this.onPointerUp),e.document.removeEventListener("contextmenu",this.onContextMenu),e.document.removeEventListener("pointermove",this.onPointerMove),e.document.removeEventListener("click",this.onClicker),t.log("Peripherals Unmounted"),!0}};Ie.moduleName="peripherals";let he=Ie;const Z=class Z extends B{constructor(){super(...arguments),this.mediaPlayingCount=0,this.allAnimations=new Set}wndOnErr(e){this.comms?.send("error",{message:e.message,filename:e.filename,lineno:e.lineno,colno:e.colno})}unblock(e){for(e._readium_blockEvents=!1;e._readium_blockedEvents?.length>0;){const t=e._readium_blockedEvents.shift();switch(t[0]){case 0:Reflect.apply(t[1],t[2],t[3]);break;case 1:const i=t[1],r=t[2];e.removeEventListener(i.type,e._readium_eventBlocker,!0);const n=new Event(i.type,{bubbles:i.bubbles,cancelable:i.cancelable});r?r.dispatchEvent(n):e.dispatchEvent(n);break}}}onMediaPlayEvent(){this.mediaPlayingCount++,this.comms?.send("media_play",this.mediaPlayingCount)}onMediaPauseEvent(){this.mediaPlayingCount>0&&this.mediaPlayingCount--,this.comms?.send("media_pause",this.mediaPlayingCount)}pauseAllMedia(e){const t=e.document.querySelectorAll("audio,video");for(let i=0;i<t.length;i++)t[i].pause()}mount(e,t){this.comms=t,e.addEventListener("error",this.wndOnErr,!1),Reflect.defineProperty(e.navigator,"epubReadingSystem",{value:{name:"readium-ts-toolkit",version:"2.2.2",hasFeature:(r,n="")=>{switch(r){case"dom-manipulation":return!0;case"layout-changes":return!0;case"touch-events":return!0;case"mouse-events":return!0;case"keyboard-events":return!0;case"spine-scripting":return!0;case"embedded-web-content":return!0;default:return!1}}},writable:!1}),"getAnimations"in e.document&&e.document.getAnimations().forEach(r=>{r.cancel(),this.allAnimations.add(r)}),t.register("activate",Z.moduleName,(r,n)=>{this.allAnimations.forEach(o=>{o.cancel(),o.play()}),n(!0)}),t.register("unfocus",Z.moduleName,(r,n)=>{this.pauseAllMedia(e),this.allAnimations.forEach(o=>o.pause()),n(!0)});const i=e.document.querySelectorAll("audio,video");for(let r=0;r<i.length;r++){const n=i[r];n.addEventListener("play",this.onMediaPlayEvent,{passive:!0}),n.addEventListener("pause",this.onMediaPauseEvent,{passive:!0})}return t.log("Setup Mounted"),!0}unmount(e,t){return e.removeEventListener("error",this.wndOnErr),e.removeEventListener("play",this.onMediaPlayEvent),e.removeEventListener("pause",this.onMediaPauseEvent),this.allAnimations.forEach(i=>i.cancel()),this.allAnimations.clear(),t.log("Setup Unmounted"),!0}};Z.moduleName="setup";let ce=Z;const gt="readium-viewport",R=class R extends ce{onViewportWidthChanged(e){const t=e.target;_(t,"--RS__viewportWidth",`${t.innerWidth}px`)}mount(e,t){if(!super.mount(e,t))return!1;const i=e.document.createElement("meta");return i.dataset.readium="true",i.setAttribute("name","viewport"),i.setAttribute("id",gt),i.setAttribute("content","width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no"),e.document.head.appendChild(i),e.addEventListener("orientationchange",this.onViewportWidthChanged),e.addEventListener("resize",this.onViewportWidthChanged),this.onViewportWidthChanged({target:e}),t.register("get_properties",R.moduleName,(r,n)=>{be(e),n(!0)}),t.register("update_properties",R.moduleName,(r,n)=>{r["--RS__viewportWidth"]=`${e.innerWidth}px`,et(e,r),n(!0)}),t.register("set_property",R.moduleName,(r,n)=>{const o=r;_(e,o[0],o[1]),n(!0)}),t.register("remove_property",R.moduleName,(r,n)=>{ne(e,r),n(!0)}),t.register("activate",R.moduleName,(r,n)=>{this.unblock(e),n(!0)}),t.log("ReflowableSetup Mounted"),!0}unmount(e,t){return t.unregisterAll(R.moduleName),e.document.head.querySelector(`#${gt}`)?.remove(),e.removeEventListener("orientationchange",this.onViewportWidthChanged),t.log("ReflowableSetup Unmounted"),super.unmount(e,t)}};R.moduleName="reflowable_setup";let Ne=R;const yt="readium-fixed-style",N=class N extends ce{mount(e,t){if(!super.mount(e,t))return!1;e.navigator.epubReadingSystem&&(e.navigator.epubReadingSystem.layoutStyle="paginated");const i=e.document.createElement("style");return i.id=yt,i.dataset.readium="true",i.textContent=`
|
|
58
|
+
`,e.document.head.appendChild(i),this.resizeObserver=new ResizeObserver(()=>{this.resizeDebounce&&this.wnd.clearTimeout(this.resizeDebounce),this.isResizing=!0,this.resizeDebounce=this.wnd.setTimeout(()=>{this.isResizing=!1,this.resizeDebounce=null,this.reportProgress()},50)}),this.resizeObserver.observe(e.document.body),e.addEventListener("scroll",this.handleScroll,{passive:!0}),t.register("force_webkit_recalc",C.moduleName,()=>{ut(this.wnd);const r=this.doc().scrollTop;r>1?this.doc().scrollTop=r-1:this.doc().scrollTop=r+1,this.doc().scrollTop=r}),t.register("go_progression",C.moduleName,(r,n)=>{const o=r;if(o<0||o>1){t.send("error",{message:"go_progression must be given a position from 0.0 to 1.0"}),n(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=this.doc().offsetHeight*o,this.reportProgress(),E(this.wnd),n(!0)})}),t.register("go_id",C.moduleName,(r,n)=>{const o=e.document.getElementById(r);if(!o){n(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=o.getBoundingClientRect().top+e.scrollY-e.innerHeight/2,this.reportProgress(),E(this.wnd),n(!0)})}),t.register("go_text",C.moduleName,(r,n)=>{let o;Array.isArray(r)&&(r.length>1&&(o=r[1]),r=r[0]);const a=D.deserialize(r),u=re(this.wnd.document,new L({href:e.location.href,type:"text/html",text:a,locations:o?new b({otherLocations:new Map([["cssSelector",o]])}):void 0}));if(!u){n(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=u.getBoundingClientRect().top+e.scrollY-e.innerHeight/2,this.reportProgress(),E(this.wnd),n(!0)})}),t.register("go_start",C.moduleName,(r,n)=>{if(this.doc().scrollTop===0)return n(!1);this.doc().scrollTop=0,this.reportProgress(),n(!0)}),t.register("go_end",C.moduleName,(r,n)=>{if(this.doc().scrollTop===this.doc().scrollHeight-this.doc().offsetHeight)return n(!1);this.doc().scrollTop=this.doc().scrollHeight-this.doc().offsetHeight,this.reportProgress(),n(!0)}),t.register("unfocus",C.moduleName,(r,n)=>{E(this.wnd),n(!0)}),t.register(["go_next","go_prev"],C.moduleName,(r,n)=>n(!1)),t.register("focus",C.moduleName,(r,n)=>{this.reportProgress(),n(!0)}),t.register("first_visible_locator",C.moduleName,(r,n)=>{const o=Ce(e,!0);this.comms.send("first_visible_locator",o.serialize()),n(!0)}),t.log("ScrollSnapper Mounted"),!0}unmount(e,t){return t.unregisterAll(C.moduleName),this.resizeObserver.disconnect(),this.handleScroll&&e.removeEventListener("scroll",this.handleScroll),e.document.getElementById(mt)?.remove(),t.log("ScrollSnapper Unmounted"),!0}};C.moduleName="scroll_snapper";let Me=C;const P=class P extends G{constructor(){super(...arguments),this.initialScrollHandled=!1,this.isScrolling=!1,this.lastScrollTop=0,this.isResizing=!1,this.resizeDebounce=null,this.handleScroll=()=>{if(this.comms.ready&&!this.isResizing){if(!this.initialScrollHandled){this.lastScrollTop=this.doc().scrollTop,this.initialScrollHandled=!0,this.reportProgress();return}this.isScrolling||(this.isScrolling=!0,this.wnd.requestAnimationFrame(()=>{this.reportProgress();const e=this.doc().scrollTop,t=e-this.lastScrollTop;this.lastScrollTop=e,this.comms.send("scroll",t),this.isScrolling=!1}))}}}doc(){return this.wnd.document.scrollingElement}reportProgress(){if(!this.comms.ready)return;const e=Math.ceil(this.doc().scrollTop),t=this.doc().scrollHeight,i=this.wnd.innerHeight,r=Math.max(0,Math.min(1,e/t)),n=Math.max(0,Math.min(1,(e+i)/t));this.comms.send("progress",{start:r,end:n})}mount(e,t){return this.wnd=e,this.comms=t,this.initialScrollHandled=!1,this.lastScrollTop=0,this.isResizing=!1,this.resizeDebounce&&(this.wnd.clearTimeout(this.resizeDebounce),this.resizeDebounce=null),this.resizeObserver=new ResizeObserver(()=>{this.resizeDebounce&&this.wnd.clearTimeout(this.resizeDebounce),this.isResizing=!0,this.resizeDebounce=this.wnd.setTimeout(()=>{this.isResizing=!1,this.resizeDebounce=null,this.reportProgress()},50)}),this.resizeObserver.observe(e.document.body),e.addEventListener("scroll",this.handleScroll,{passive:!0}),t.register("force_webkit_recalc",P.moduleName,()=>{ut(this.wnd);const i=this.doc().scrollTop;i>1?this.doc().scrollTop=i-1:this.doc().scrollTop=i+1,this.doc().scrollTop=i}),t.register("go_progression",P.moduleName,(i,r)=>{const n=i;if(n<0||n>1){t.send("error",{message:"go_progression must be given a position from 0.0 to 1.0"}),r(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=this.doc().offsetHeight*n,this.reportProgress(),E(this.wnd),r(!0)})}),this.comms.register("go_id",P.moduleName,(i,r)=>{const n=e.document.getElementById(i);if(!n){r(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=n.getBoundingClientRect().top+e.scrollY-e.innerHeight/2,this.reportProgress(),E(this.wnd),r(!0)})}),t.register("go_text",P.moduleName,(i,r)=>{let n;Array.isArray(i)&&(i.length>1&&(n=i[1]),i=i[0]);const o=D.deserialize(i),a=re(this.wnd.document,new L({href:e.location.href,type:"text/html",text:o,locations:n?new b({otherLocations:new Map([["cssSelector",n]])}):void 0}));if(!a){r(!1);return}this.wnd.requestAnimationFrame(()=>{this.doc().scrollTop=a.getBoundingClientRect().top+e.scrollY-e.innerHeight/2,this.reportProgress(),E(this.wnd),r(!0)})}),t.register("go_start",P.moduleName,(i,r)=>{if(this.doc().scrollTop===0)return r(!1);this.doc().scrollTop=0,this.reportProgress(),r(!0)}),t.register("go_end",P.moduleName,(i,r)=>{if(this.doc().scrollTop===this.doc().scrollHeight-this.doc().offsetHeight)return r(!1);this.doc().scrollTop=this.doc().scrollHeight-this.doc().offsetHeight,this.reportProgress(),r(!0)}),t.register("unfocus",P.moduleName,(i,r)=>{E(this.wnd),r(!0)}),t.register(["go_next","go_prev"],P.moduleName,(i,r)=>r(!1)),t.register("focus",P.moduleName,(i,r)=>{this.reportProgress(),r(!0)}),t.register("first_visible_locator",P.moduleName,(i,r)=>{const n=Ce(e,!0);t.send("first_visible_locator",n.serialize()),r(!0)}),t.log("WebPubSnapper Mounted"),!0}unmount(e,t){return t.unregisterAll(P.moduleName),this.resizeObserver.disconnect(),this.handleScroll&&e.removeEventListener("scroll",this.handleScroll),t.log("WebPubSnapper Unmounted"),!0}};P.moduleName="webpub_snapper";let Ae=P;const Ie=class Ie extends B{constructor(){super(...arguments),this.pointerMoved=!1,this.onPointerUp=this.onPointUp.bind(this),this.onPointerMove=this.onPointMove.bind(this),this.onPointerDown=this.onPointDown.bind(this),this.onContextMenu=this.onContext.bind(this),this.onClicker=this.onClick.bind(this)}onPointUp(e){const t=this.wnd.getSelection();if(t&&t.toString()?.length>0){const r=t.getRangeAt(0)?.getClientRects();if(!r||r.length===0)return;const n=r[0],o={text:t.toString(),x:n.x,y:n.y,width:n.width,height:n.height,targetFrameSrc:this.wnd?.location?.href};this.comms.send("text_selected",o)}if(this.pointerMoved){this.pointerMoved=!1;return}if(!t?.isCollapsed||!e.isPrimary)return;const i=this.wnd.devicePixelRatio;e.preventDefault(),this.comms.send(e.pointerType==="touch"?"tap":"click",{defaultPrevented:e.defaultPrevented,x:e.clientX*i,y:e.clientY*i,targetFrameSrc:this.wnd.location.href,targetElement:e.target.outerHTML,interactiveElement:dt(e.target)?.outerHTML,cssSelector:this.wnd._readium_cssSelectorGenerator.getCssSelector(e.target)}),this.pointerMoved=!1}onPointMove(e){if(e.movementY!==void 0&&e.movementX!==void 0){(Math.abs(e.movementX)>1||Math.abs(e.movementY)>1)&&(this.pointerMoved=!0);return}this.pointerMoved=!0}onPointDown(){this.pointerMoved=!1}onContext(e){this.onPointUp(e),this.pointerMoved=!1}onClick(e){if(e.preventDefault(),!e.isTrusted){const t=new PointerEvent("pointerup",{isPrimary:!0,pointerType:"mouse",clientX:e.clientX,clientY:e.clientY});Object.defineProperty(t,"target",{writable:!1,value:e.target}),Object.defineProperty(t,"defaultPrevented",{writable:!1,value:e.defaultPrevented}),this.onPointUp(t)}}mount(e,t){return this.wnd=e,this.comms=t,e.document.addEventListener("pointerdown",this.onPointerDown),e.document.addEventListener("pointerup",this.onPointerUp),e.document.addEventListener("contextmenu",this.onContextMenu),e.document.addEventListener("pointermove",this.onPointerMove),e.document.addEventListener("click",this.onClicker),t.log("Peripherals Mounted"),!0}unmount(e,t){return e.document.removeEventListener("pointerdown",this.onPointerDown),e.document.removeEventListener("pointerup",this.onPointerUp),e.document.removeEventListener("contextmenu",this.onContextMenu),e.document.removeEventListener("pointermove",this.onPointerMove),e.document.removeEventListener("click",this.onClicker),t.log("Peripherals Unmounted"),!0}};Ie.moduleName="peripherals";let he=Ie;const Z=class Z extends B{constructor(){super(...arguments),this.mediaPlayingCount=0,this.allAnimations=new Set}wndOnErr(e){this.comms?.send("error",{message:e.message,filename:e.filename,lineno:e.lineno,colno:e.colno})}unblock(e){for(e._readium_blockEvents=!1;e._readium_blockedEvents?.length>0;){const t=e._readium_blockedEvents.shift();switch(t[0]){case 0:Reflect.apply(t[1],t[2],t[3]);break;case 1:const i=t[1],r=t[2];e.removeEventListener(i.type,e._readium_eventBlocker,!0);const n=new Event(i.type,{bubbles:i.bubbles,cancelable:i.cancelable});r?r.dispatchEvent(n):e.dispatchEvent(n);break}}}onMediaPlayEvent(){this.mediaPlayingCount++,this.comms?.send("media_play",this.mediaPlayingCount)}onMediaPauseEvent(){this.mediaPlayingCount>0&&this.mediaPlayingCount--,this.comms?.send("media_pause",this.mediaPlayingCount)}pauseAllMedia(e){const t=e.document.querySelectorAll("audio,video");for(let i=0;i<t.length;i++)t[i].pause()}mount(e,t){this.comms=t,e.addEventListener("error",this.wndOnErr,!1),Reflect.defineProperty(e.navigator,"epubReadingSystem",{value:{name:"readium-ts-toolkit",version:"2.2.3",hasFeature:(r,n="")=>{switch(r){case"dom-manipulation":return!0;case"layout-changes":return!0;case"touch-events":return!0;case"mouse-events":return!0;case"keyboard-events":return!0;case"spine-scripting":return!0;case"embedded-web-content":return!0;default:return!1}}},writable:!1}),"getAnimations"in e.document&&e.document.getAnimations().forEach(r=>{r.cancel(),this.allAnimations.add(r)}),t.register("activate",Z.moduleName,(r,n)=>{this.allAnimations.forEach(o=>{o.cancel(),o.play()}),n(!0)}),t.register("unfocus",Z.moduleName,(r,n)=>{this.pauseAllMedia(e),this.allAnimations.forEach(o=>o.pause()),n(!0)});const i=e.document.querySelectorAll("audio,video");for(let r=0;r<i.length;r++){const n=i[r];n.addEventListener("play",this.onMediaPlayEvent,{passive:!0}),n.addEventListener("pause",this.onMediaPauseEvent,{passive:!0})}return t.log("Setup Mounted"),!0}unmount(e,t){return e.removeEventListener("error",this.wndOnErr),e.removeEventListener("play",this.onMediaPlayEvent),e.removeEventListener("pause",this.onMediaPauseEvent),this.allAnimations.forEach(i=>i.cancel()),this.allAnimations.clear(),t.log("Setup Unmounted"),!0}};Z.moduleName="setup";let ce=Z;const gt="readium-viewport",R=class R extends ce{onViewportWidthChanged(e){const t=e.target;_(t,"--RS__viewportWidth",`${t.innerWidth}px`)}mount(e,t){if(!super.mount(e,t))return!1;const i=e.document.createElement("meta");return i.dataset.readium="true",i.setAttribute("name","viewport"),i.setAttribute("id",gt),i.setAttribute("content","width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no"),e.document.head.appendChild(i),e.addEventListener("orientationchange",this.onViewportWidthChanged),e.addEventListener("resize",this.onViewportWidthChanged),this.onViewportWidthChanged({target:e}),t.register("get_properties",R.moduleName,(r,n)=>{be(e),n(!0)}),t.register("update_properties",R.moduleName,(r,n)=>{r["--RS__viewportWidth"]=`${e.innerWidth}px`,et(e,r),n(!0)}),t.register("set_property",R.moduleName,(r,n)=>{const o=r;_(e,o[0],o[1]),n(!0)}),t.register("remove_property",R.moduleName,(r,n)=>{ne(e,r),n(!0)}),t.register("activate",R.moduleName,(r,n)=>{this.unblock(e),n(!0)}),t.log("ReflowableSetup Mounted"),!0}unmount(e,t){return t.unregisterAll(R.moduleName),e.document.head.querySelector(`#${gt}`)?.remove(),e.removeEventListener("orientationchange",this.onViewportWidthChanged),t.log("ReflowableSetup Unmounted"),super.unmount(e,t)}};R.moduleName="reflowable_setup";let Ne=R;const yt="readium-fixed-style",N=class N extends ce{mount(e,t){if(!super.mount(e,t))return!1;e.navigator.epubReadingSystem&&(e.navigator.epubReadingSystem.layoutStyle="paginated");const i=e.document.createElement("style");return i.id=yt,i.dataset.readium="true",i.textContent=`
|
|
59
59
|
html, body {
|
|
60
60
|
text-size-adjust: none;
|
|
61
61
|
-ms-text-size-adjust: none;
|
package/package.json
CHANGED
package/src/modules/Decorator.ts
CHANGED
|
@@ -209,6 +209,7 @@ class DecorationGroup {
|
|
|
209
209
|
|
|
210
210
|
const itemContainer = this.wnd.document.createElement("div");
|
|
211
211
|
itemContainer.setAttribute("id", item.id);
|
|
212
|
+
itemContainer.dataset.highlightId = item.decoration.id;
|
|
212
213
|
// itemContainer.dataset.style = item.decoration.style; // TODO style
|
|
213
214
|
itemContainer.style.setProperty("pointer-events", "none");
|
|
214
215
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type SuspiciousActivityType =
|
|
2
|
+
| "developer_tools_attempt"
|
|
3
|
+
| "select_all_attempt"
|
|
4
|
+
| "suspicious_selection"
|
|
5
|
+
| "suspicious_copy"
|
|
6
|
+
| "suspicious_scrolling"
|
|
7
|
+
| "suspicious_snapping"
|
|
8
|
+
| "drag_detected"
|
|
9
|
+
| "drop_detected"
|
|
10
|
+
| "context_menu";
|
|
11
|
+
|
|
12
|
+
export interface SuspiciousActivityEvent {
|
|
13
|
+
timestamp: number;
|
|
14
|
+
type: SuspiciousActivityType;
|
|
15
|
+
event?: Event;
|
|
16
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type SuspiciousActivityType = "developer_tools_attempt" | "select_all_attempt" | "suspicious_selection" | "suspicious_copy" | "suspicious_scrolling" | "suspicious_snapping" | "drag_detected" | "drop_detected" | "context_menu";
|
|
2
|
+
export interface SuspiciousActivityEvent {
|
|
3
|
+
timestamp: number;
|
|
4
|
+
type: SuspiciousActivityType;
|
|
5
|
+
event?: Event;
|
|
6
|
+
}
|
|
7
|
+
export {};
|