@readium/navigator-html-injectables 2.8.3 → 2.8.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.
package/dist/helpers/css.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const l=new Set(["backgroundColor","textColor","linkColor","visitedColor","primaryColor","secondaryColor","selectionBackgroundColor","selectionTextColor","blendFilter","darkenFilter","invertFilter","invertGaiji"]),s=/--(?:USER|RS)__([\w-]+)/g;function
|
|
1
|
+
const a=()=>typeof window.CSSTransformValue<"u",l=new Set(["backgroundColor","textColor","linkColor","visitedColor","primaryColor","secondaryColor","selectionBackgroundColor","selectionTextColor","blendFilter","darkenFilter","invertFilter","invertGaiji"]),s=/--(?:USER|RS)__([\w-]+)/g;function m(e,t){const r=e??"",o=t??"",n=new Set;for(const c of r.matchAll(s))n.add(c[1]);for(const c of o.matchAll(s))n.add(c[1]);for(const c of n)if(!l.has(c))return!0;return!1}function i(e){const t={},r=e.document.documentElement.style;for(const o in e.document.documentElement.style)Object.hasOwn(r,o)&&!Number.isNaN(Number.parseInt(o))&&(t[r[o]]=r.getPropertyValue(r[o]));return t}function d(e,t){const r=i(e);Object.keys(r).forEach(o=>{t.hasOwnProperty(o)||f(e,o)}),Object.entries(t).forEach(([o,n])=>{r[o]!==n&&u(e,o,n)})}function p(e,t){return e.document.documentElement.style.getPropertyValue(t)}function u(e,t,r){e.document.documentElement.style.setProperty(t,r)}function f(e,t){e.document.documentElement.style.removeProperty(t)}export{i as getProperties,p as getProperty,a as isTypedOMSupported,f as removeProperty,u as setProperty,m as styleChangeAffectsLayout,d as updateProperties};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Module as l}from"../Module.js";const i=class i extends l{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 a=t[1],n=t[2];e.removeEventListener(a.type,e._readium_eventBlocker,!0);const s=new Event(a.type,{bubbles:a.bubbles,cancelable:a.cancelable});n?n.dispatchEvent(s):e.dispatchEvent(s);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 a=0;a<t.length;a++)t[a].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.8.
|
|
1
|
+
import{Module as l}from"../Module.js";const i=class i extends l{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 a=t[1],n=t[2];e.removeEventListener(a.type,e._readium_eventBlocker,!0);const s=new Event(a.type,{bubbles:a.bubbles,cancelable:a.cancelable});n?n.dispatchEvent(s):e.dispatchEvent(s);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 a=0;a<t.length;a++)t[a].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.8.5",hasFeature:(n,s="")=>{switch(n){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(n=>{n.cancel(),this.allAnimations.add(n)}),t.register("activate",i.moduleName,(n,s)=>{this.allAnimations.forEach(r=>{r.cancel(),r.play()}),s(!0)}),t.register("unfocus",i.moduleName,(n,s)=>{this.pauseAllMedia(e),this.allAnimations.forEach(r=>r.pause()),s(!0)});const a=e.document.querySelectorAll("audio,video");for(let n=0;n<a.length;n++){const s=a[n];s.addEventListener("play",this.onMediaPlayEvent,{passive:!0}),s.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(a=>a.cancel()),this.allAnimations.clear(),t.log("Setup Unmounted"),!0}};i.moduleName="setup";let o=i;export{o as Setup};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Snapper as
|
|
1
|
+
import{Snapper as O}from"./Snapper.js";import{getColumnCountPerScreen as A,isRTL as F,appendVirtualColumnIfNeeded as C}from"../../helpers/document.js";import{isTypedOMSupported as y,styleChangeAffectsLayout as P}from"../../helpers/css.js";import{easeInOutQuad as N}from"../../helpers/animation.js";import{LocatorText as M,Locator as w,LocatorLocations as z}from"@readium/shared";import{rangeFromLocator as _}from"../../helpers/locator.js";import{deselect as m,findFirstVisibleLocator as X}from"../../helpers/dom.js";import{PatternAnalyzer as q}from"../../protection/PatternAnalyzer.js";const T="readium-column-snapper-style",I=200,h=class h extends O{constructor(){super(...arguments),this.isSnapProtectionEnabled=!1,this.patternAnalyzer=null,this.lastTurnTime=0,this.rtl=!1,this.shakeTimeout=0,this.snappingCancelled=!1,this.alreadyScrollLeft=0,this.overscroll=0,this.cachedScrollWidth=0,this.touchState=0,this.startingX=void 0,this.endingX=void 0,this.onTouchStarter=this.onTouchStart.bind(this),this.onTouchEnder=this.onTouchEnd.bind(this),this.onWidthChanger=this.onWidthChange.bind(this),this.onTouchMover=this.onTouchMove.bind(this)}doc(){return this.wnd.document.scrollingElement}scrollOffset(){const t=this.doc().scrollLeft;return t!==0?t:this.alreadyScrollLeft}snapOffset(t){const e=t+(this.rtl?-1:1);return e-e%this.wnd.innerWidth}snapNormOffset(t){const e=t+1;return e-e%this.wnd.innerWidth}normScroll(){const t=this.doc().scrollLeft||this.alreadyScrollLeft;return this.rtl?Math.abs(t):Math.max(0,this.wnd.scrollX>0?this.wnd.scrollX:t)}hasScrolledPast(t){const e=t.getBoundingClientRect();return this.rtl?e.left>=this.wnd.innerWidth:e.right<=0}currentTimelineFragment(){if(this.timelineEntries.size===0)return;const t=this.wnd.innerWidth;let e;for(const s of this.sortedFragmentIds){const l=this.timelineEntries.get(s).getBoundingClientRect();if(this.rtl?l.right>0:l.left<t)e=s;else break}return e}sortedVisibleFragmentIds(){const t=this.wnd.innerWidth;return this.sortedFragmentIds.filter(e=>{const s=this.timelineEntries.get(e).getBoundingClientRect();return this.rtl?s.left<t&&s.right>0:s.right>0&&s.left<t})}reportProgress(t){const e=this.cachedScrollWidth,s=this.wnd.innerWidth,n=this.normScroll(),l=Math.max(1,e-s),i=Math.max(0,Math.min(1,n/l)),r=Math.max(0,Math.min(1,(n+s)/e));this.comms.send("progress",{start:i,end:r,fragmentId:t!==void 0?t:this.currentTimelineFragment(),visibleFragmentIds:this.sortedVisibleFragmentIds()})}shake(){if(this.overscroll!==0||this.shakeTimeout!==0)return;const t=this.doc(),e=this.normScroll()<5,s=this.rtl?e?"readium-bounce-r":"readium-bounce-l":"readium-bounce-r";t.classList.add(s);const n=this.scrollOffset();this.shakeTimeout=this.wnd.setTimeout(()=>{t.classList.remove(s),this.shakeTimeout=0,this.doc().scrollLeft=n},150)}takeOverSnap(){this.snappingCancelled=!0,this.clearTouches();const t=this.doc();this.overscroll=t.style.transform?.length>12?parseFloat(t.style.transform.slice(12).split("px")[0]):0}snapCurrentOffset(t=!1,e=!1){const s=this.doc(),n=A(this.wnd),l=this.cachedScrollWidth-this.wnd.innerWidth,i=Math.min(Math.max(0,this.normScroll()),l),r=this.dragOffset(),o=this.rtl?-r:r,d=this.wnd.innerWidth/3*(o>0?2:1),a=Math.min(l,Math.max(0,this.snapNormOffset(i+d))),c=this.rtl?-a:a,u=this.rtl?-i:i,E=c>u?"right":"left";if(this.checkSuspiciousSnap(E,Math.abs(c-u)),t&&c!==u){this.snappingCancelled=!1;const L=(p,f,g,S)=>g>S?f:p+(f-p)*N(g/S),v=I*n;let b;const W=p=>{if(this.snappingCancelled)return;b||(b=p);const f=p-b,g=L(this.overscroll,0,f,v),S=L(u,c,f,v);s.scrollLeft=S,this.overscroll!==0&&(y()?s.attributeStyleMap.set("transform",new CSSTransformValue([new CSSTranslate(CSS.px(-g),CSS.px(0),CSS.px(0))])):s.style.transform=`translate3d(${-g}px, 0px, 0px)`),f<v?this.wnd.requestAnimationFrame(W):(this.clearTouches(),s.style.removeProperty("transform"),s.scrollLeft=c,e||this.reportProgress())};this.wnd.requestAnimationFrame(W)}else s.style.removeProperty("transform"),this.wnd.requestAnimationFrame(()=>{s.scrollLeft=c,this.clearTouches(),e||this.reportProgress()})}dragOffset(){return(this.startingX??0)-(this.endingX??0)}clearTouches(){this.startingX=void 0,this.endingX=void 0,this.overscroll=0}onTouchStart(t){switch(t.stopPropagation(),this.takeOverSnap(),t.touches.length){case 1:break;case 2:this.onTouchEnd(t);return;default:{this.onTouchEnd(t),this.comms.send("tap_more",t.touches.length);return}}this.startingX=t.touches[0].clientX,this.alreadyScrollLeft=this.doc().scrollLeft,this.touchState=1}onTouchEnd(t){if(this.touchState===2){const e=this.dragOffset(),s=this.normScroll(),n=this.cachedScrollWidth-this.wnd.innerWidth,l=this.rtl?-e:e;this.cachedScrollWidth<=this.wnd.innerWidth?(this.reportProgress(),l>5&&this.comms.send("no_more",void 0),l<-5&&this.comms.send("no_less",void 0)):s<5&&l<5?(this.alreadyScrollLeft=0,this.comms.send("no_less",void 0)):n-s<5&&l>5&&(this.alreadyScrollLeft=this.rtl?-n:n,this.comms.send("no_more",void 0)),this.snapCurrentOffset(!0),this.comms.send("swipe",e)}this.touchState=0}onWidthChange(){this.cachedScrollWidth=this.doc().scrollWidth,this.comms.ready&&this.snapCurrentOffset()}onTouchMove(t){if(this.touchState===0)return;this.touchState===1&&(this.touchState=2,m(this.wnd)),this.endingX=t.touches[0].clientX;const e=this.dragOffset(),s=this.alreadyScrollLeft+e,n=this.rtl?-(this.cachedScrollWidth-this.wnd.innerWidth):0,l=this.rtl?0:this.cachedScrollWidth-this.wnd.innerWidth;s<n?(this.overscroll=s,y()?this.doc().attributeStyleMap.set("transform",new CSSTransformValue([new CSSTranslate(CSS.px(-s),CSS.px(0),CSS.px(0))])):this.doc().style.transform=`translate3d(${-s}px, 0px, 0px)`):s>l?(this.overscroll=s,y()?this.doc().attributeStyleMap.set("transform",new CSSTransformValue([new CSSTranslate(CSS.px(-s),CSS.px(0),CSS.px(0))])):this.doc().style.transform=`translate3d(${-s}px, 0px, 0px)`):(this.overscroll=0,this.doc().style.removeProperty("transform"),this.doc().scrollLeft=s)}enableSnapProtection(){this.patternAnalyzer||(this.patternAnalyzer=new q({maxVelocity:this.wnd.innerWidth,minVariance:.1,historySize:5,maxConsistentScrolls:3,minDirectionChanges:.3}),this.isSnapProtectionEnabled=!0,this.comms?.log("Snap protection enabled"))}checkSuspiciousSnap(t,e){if(!this.isSnapProtectionEnabled||!this.patternAnalyzer)return;const s=Date.now(),n=s-(this.lastTurnTime||s);this.lastTurnTime=s,this.patternAnalyzer.analyze(t,e,n)&&this.comms?.send("content_protection",{type:"suspicious_snapping",timestamp:Date.now(),event:null})}mount(t,e){if(this.wnd=t,this.comms=e,this.rtl=F(t),!super.mount(t,e))return!1;t.navigator.epubReadingSystem&&(t.navigator.epubReadingSystem.layoutStyle="paginated");const s=t.document.createElement("style");s.dataset.readium="true",s.id=T,s.textContent=`
|
|
2
2
|
@keyframes readium-bounce-l-animation {
|
|
3
3
|
0%, 100% {transform: translate3d(0, 0, 0);}
|
|
4
4
|
50% {transform: translate3d(-50px, 0, 0);}
|
|
@@ -32,4 +32,4 @@ import{Snapper as C}from"./Snapper.js";import{getColumnCountPerScreen as x,isRTL
|
|
|
32
32
|
body::-webkit-scrollbar {
|
|
33
33
|
display: none; /* for Chrome, Safari, and Opera */
|
|
34
34
|
}
|
|
35
|
-
`,t.document.head.appendChild(
|
|
35
|
+
`,t.document.head.appendChild(s),this.resizeObserver=new ResizeObserver(()=>{t.requestAnimationFrame(()=>{t&&C(t)}),this.onWidthChange()}),this.resizeObserver.observe(t.document.body),this.mutationObserver=new MutationObserver(i=>{for(const r of i)if(r.target===this.wnd.document.documentElement){const o=r.oldValue,d=r.target.getAttribute("style"),a=/transform\s*:\s*([^;]+)/,c=o?.match(a),u=d?.match(a);(!c&&!u&&P(o,d)||c&&!u||c&&u&&c[1]!==u[1])&&(t.requestAnimationFrame(()=>{t&&C(t)}),this.onWidthChange())}else t.requestAnimationFrame(()=>this.cachedScrollWidth=this.doc().scrollWidth)}),t.frameElement&&this.mutationObserver.observe(t.frameElement,{attributes:!0,attributeFilter:["style"]}),this.mutationObserver.observe(t.document,{attributes:!0,attributeFilter:["style"]}),this.mutationObserver.observe(t.document.documentElement,{attributes:!0,attributeFilter:["style"]}),e.register("scroll_protection",h.moduleName,(i,r)=>{this.enableSnapProtection(),r(!0)});const n=i=>{const r=this.doc().scrollLeft;return this.doc().scrollLeft=this.snapOffset(i),r!==this.doc().scrollLeft},l=i=>{const r=this.doc().scrollLeft,o=this.snapNormOffset(Math.max(0,Math.min(this.cachedScrollWidth-t.innerWidth,i)));return this.doc().scrollLeft=-o,r!==this.doc().scrollLeft};return t.addEventListener("orientationchange",this.onWidthChanger),t.addEventListener("resize",this.onWidthChanger),t.requestAnimationFrame(()=>this.cachedScrollWidth=this.doc().scrollWidth),e.register("go_progression",h.moduleName,(i,r)=>{const o=i;if(o<0||o>1){e.send("error",{message:"go_progression must be given a position from 0.0 to 1.0"}),r(!1);return}this.wnd.requestAnimationFrame(()=>{this.cachedScrollWidth=this.doc().scrollWidth;const a=(this.cachedScrollWidth-t.innerWidth)*o;this.rtl?this.doc().scrollLeft=-this.snapNormOffset(a):this.doc().scrollLeft=this.snapOffset(a),this.reportProgress(),m(this.wnd),r(!0)})}),e.register("go_id",h.moduleName,(i,r)=>{const o=t.document.getElementById(i);if(!o){r(!1);return}this.wnd.requestAnimationFrame(()=>{this.rtl?this.doc().scrollLeft=-this.snapNormOffset(o.getBoundingClientRect().left+t.scrollX):this.doc().scrollLeft=this.snapOffset(o.getBoundingClientRect().left+t.scrollX);const d=i;this.reportProgress(this.timelineEntries.has(d)?d:this.nearestPrecedingTimelineEntry(o)),m(this.wnd),r(!0)})}),e.register("go_text",h.moduleName,(i,r)=>{let o;Array.isArray(i)&&(i.length>1&&(o=i[1]),i=i[0]);const d=M.deserialize(i),a=_(this.wnd.document,new w({href:t.location.href,type:"text/html",text:d,locations:o?new z({otherLocations:new Map([["cssSelector",o]])}):void 0}));if(!a){r(!1);return}this.wnd.requestAnimationFrame(()=>{this.rtl?this.doc().scrollLeft=-this.snapNormOffset(a.getBoundingClientRect().left+t.scrollX):this.doc().scrollLeft=this.snapOffset(a.getBoundingClientRect().left+t.scrollX),this.reportProgress(this.nearestPrecedingTimelineEntry(a.startContainer)),m(this.wnd),r(!0)})}),e.register("go_end",h.moduleName,(i,r)=>{this.wnd.requestAnimationFrame(()=>{this.cachedScrollWidth=this.doc().scrollWidth;let o;if(this.rtl?o=-this.snapNormOffset(this.cachedScrollWidth-t.innerWidth):o=this.snapOffset(this.cachedScrollWidth),this.doc().scrollLeft===o)return r(!1);this.doc().scrollLeft=o,this.reportProgress(this.sortedFragmentIds[this.sortedFragmentIds.length-1]),m(this.wnd),r(!0)})}),e.register("go_start",h.moduleName,(i,r)=>{this.wnd.requestAnimationFrame(()=>{if(this.doc().scrollLeft===0)return r(!1);this.doc().scrollLeft=0,this.reportProgress(this.firstFragmentIfReached()),m(this.wnd),r(!0)})}),e.register("go_prev",h.moduleName,(i,r)=>{this.wnd.requestAnimationFrame(()=>{this.cachedScrollWidth=this.doc().scrollWidth;let o;this.rtl?o=l(this.normScroll()-t.innerWidth):o=n(t.scrollX-t.innerWidth),this.reportProgress(),o&&(m(this.wnd),this.checkSuspiciousSnap("left",this.wnd.innerWidth)),r(o)})}),e.register("go_next",h.moduleName,(i,r)=>{this.wnd.requestAnimationFrame(()=>{this.cachedScrollWidth=this.doc().scrollWidth;let o;this.rtl?o=l(this.normScroll()+t.innerWidth):o=n(t.scrollX+t.innerWidth),this.reportProgress(),o&&(m(this.wnd),this.checkSuspiciousSnap("right",this.wnd.innerWidth)),r(o)})}),e.register("unfocus",h.moduleName,(i,r)=>{this.snappingCancelled=!0,m(this.wnd),r(!0)}),e.register("shake",h.moduleName,(i,r)=>{this.shake(),r(!0)}),e.register("focus",h.moduleName,(i,r)=>{this.wnd.requestAnimationFrame(()=>{this.cachedScrollWidth=this.doc().scrollWidth,this.snapCurrentOffset(!1,!0),this.reportProgress(),r(!0)})}),e.register("first_visible_locator",h.moduleName,(i,r)=>{const o=X(t,!1);this.comms.send("first_visible_locator",o.serialize()),r(!0)}),e.register("timeline_entries",h.moduleName,(i,r)=>{this.updateTimelineEntries(Array.isArray(i)?i:[],t),t.requestAnimationFrame(()=>this.reportProgress()),r(!0)}),t.addEventListener("touchstart",this.onTouchStarter,{passive:!0}),t.addEventListener("touchend",this.onTouchEnder,{passive:!0}),t.addEventListener("touchmove",this.onTouchMover,{passive:!0}),t.document.addEventListener("touchstart",()=>{}),e.log("ColumnSnapper Mounted"),!0}unmount(t,e){return this.snappingCancelled=!0,e.unregisterAll(h.moduleName),this.resizeObserver.disconnect(),this.mutationObserver.disconnect(),this.patternAnalyzer&&(this.patternAnalyzer.clear(),this.patternAnalyzer=null,this.isSnapProtectionEnabled=!1),t.removeEventListener("touchstart",this.onTouchStarter),t.removeEventListener("touchend",this.onTouchEnder),t.removeEventListener("touchmove",this.onTouchMover),t.removeEventListener("orientationchange",this.onWidthChanger),t.removeEventListener("resize",this.onWidthChanger),t.document.getElementById(T)?.remove(),this.timelineEntries.clear(),e.log("ColumnSnapper Unmounted"),super.unmount(t,e)}};h.moduleName="column_snapper";let x=h;export{x as ColumnSnapper};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@readium/navigator-html-injectables",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "An embeddable solution for connecting frames of HTML publications with a Readium Navigator",
|
|
6
6
|
"author": "readium",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"node": ">=18"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@readium/helpers": "1.
|
|
48
|
-
"@readium/shared": "2.
|
|
47
|
+
"@readium/helpers": "1.2.0",
|
|
48
|
+
"@readium/shared": "2.7.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"css-selector-generator": "^3.8.0",
|
package/src/helpers/css.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { rangeFromLocator } from "../../helpers/locator.ts";
|
|
|
9
9
|
import { ReadiumWindow, deselect, findFirstVisibleLocator } from "../../helpers/dom.ts";
|
|
10
10
|
import { PatternAnalyzer } from "../../protection/PatternAnalyzer.ts";
|
|
11
11
|
import { BaseSuspiciousActivityEvent } from "../Peripherals.ts";
|
|
12
|
+
import { isTypedOMSupported } from "../../helpers/css.ts";
|
|
12
13
|
|
|
13
14
|
const COLUMN_SNAPPER_STYLE_ID = "readium-column-snapper-style";
|
|
14
15
|
|
|
@@ -214,7 +215,13 @@ export class ColumnSnapper extends Snapper {
|
|
|
214
215
|
const spos = position(currentScrollLeft, so, elapsed, period);
|
|
215
216
|
doc.scrollLeft = spos;
|
|
216
217
|
if(this.overscroll !== 0)
|
|
217
|
-
|
|
218
|
+
if(isTypedOMSupported()) {
|
|
219
|
+
doc.attributeStyleMap.set("transform", new CSSTransformValue([
|
|
220
|
+
new CSSTranslate(CSS.px(-lpos), CSS.px(0), CSS.px(0))
|
|
221
|
+
]));
|
|
222
|
+
} else {
|
|
223
|
+
doc.style.transform = `translate3d(${-lpos}px, 0px, 0px)`;
|
|
224
|
+
}
|
|
218
225
|
|
|
219
226
|
if (elapsed < period)
|
|
220
227
|
this.wnd.requestAnimationFrame(step);
|
|
@@ -330,10 +337,22 @@ export class ColumnSnapper extends Snapper {
|
|
|
330
337
|
|
|
331
338
|
if(newpos < minScrollLeft) {
|
|
332
339
|
this.overscroll = newpos;
|
|
333
|
-
|
|
340
|
+
if(isTypedOMSupported()) {
|
|
341
|
+
this.doc().attributeStyleMap.set("transform", new CSSTransformValue([
|
|
342
|
+
new CSSTranslate(CSS.px(-newpos), CSS.px(0), CSS.px(0))
|
|
343
|
+
]));
|
|
344
|
+
} else {
|
|
345
|
+
this.doc().style.transform = `translate3d(${-newpos}px, 0px, 0px)`;
|
|
346
|
+
}
|
|
334
347
|
} else if(newpos > maxScrollLeft) {
|
|
335
348
|
this.overscroll = newpos;
|
|
336
|
-
|
|
349
|
+
if(isTypedOMSupported()) {
|
|
350
|
+
this.doc().attributeStyleMap.set("transform", new CSSTransformValue([
|
|
351
|
+
new CSSTranslate(CSS.px(-newpos), CSS.px(0), CSS.px(0))
|
|
352
|
+
]));
|
|
353
|
+
} else {
|
|
354
|
+
this.doc().style.transform = `translate3d(${-newpos}px, 0px, 0px)`;
|
|
355
|
+
}
|
|
337
356
|
} else {
|
|
338
357
|
this.overscroll = 0;
|
|
339
358
|
this.doc().style.removeProperty("transform");
|