@evermade/overflow-slider 4.2.0 → 4.2.2

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
- :root{--overflow-slider-arrows-size:1.5rem;--overflow-slider-arrows-gap:.5rem;--overflow-slider-arrows-inactive-opacity:0.5}.overflow-slider__arrows{display:flex;gap:var(--overflow-slider-arrows-gap)}.overflow-slider__arrows-button{align-items:center;cursor:pointer;display:flex;outline-offset:-2px}.overflow-slider__arrows-button svg{height:var(--overflow-slider-arrows-size);width:var(--overflow-slider-arrows-size)}.overflow-slider__arrows-button[data-has-content=false]{opacity:var(--overflow-slider-arrows-inactive-opacity)}:root{--overflow-slider-autoplay-background:#000}.overflow-slider__autoplay{background:var(--overflow-slider-autoplay-background)}:root{--overflow-slider-dots-gap:0.5rem;--overflow-slider-dot-size:0.75rem;--overflow-slider-dot-inactive-color:rgba(0,0,0,.1);--overflow-slider-dot-active-color:rgba(0,0,0,.8)}.overflow-slider__dots{align-items:center;display:flex;justify-content:center}.overflow-slider__dots ul{display:flex;flex-wrap:wrap;gap:var(--overflow-slider-dots-gap);list-style:none;margin:0;padding:0}.overflow-slider__dots li{line-height:0;margin:0;padding:0}.overflow-slider__dot-item{background:var(--overflow-slider-dot-inactive-color);border-radius:50%;cursor:pointer;height:var(--overflow-slider-dot-size);margin:0;outline-offset:2px;padding:0;position:relative;width:var(--overflow-slider-dot-size)}.overflow-slider__dot-item:after{bottom:calc(var(--overflow-slider-dots-gap)*-1);content:"";display:block;left:calc(var(--overflow-slider-dots-gap)*-1);position:absolute;right:calc(var(--overflow-slider-dots-gap)*-1);top:calc(var(--overflow-slider-dots-gap)*-1)}.overflow-slider__dot-item:focus,.overflow-slider__dot-item:hover,.overflow-slider__dot-item[aria-pressed=true]{background:var(--overflow-slider-dot-active-color)}:root{--overflow-slider-fade-color:#fff;--overflow-slider-fade-width:3rem}.overflow-slider-fade{height:100%;pointer-events:none;position:absolute;top:0;width:var(--overflow-slider-fade-width);z-index:1}.overflow-slider-fade--start{background:linear-gradient(to right,var(--overflow-slider-fade-color) 0,transparent 100%);left:0}[dir=rtl] .overflow-slider-fade--start{left:auto}.overflow-slider-fade--end,[dir=rtl] .overflow-slider-fade--start{background:linear-gradient(to left,var(--overflow-slider-fade-color) 0,transparent 100%);right:0}[dir=rtl] .overflow-slider-fade--end{background:linear-gradient(to right,var(--overflow-slider-fade-color) 0,transparent 100%);left:0;right:auto}[data-has-drag-scrolling][data-has-overflow=true]{cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}:root{--overflow-slider-scroll-indicator-button-height:4px;--overflow-slider-scroll-indicator-padding:1rem;--overflow-slider-scroll-indicator-button-color:rgba(0,0,0,.75);--overflow-slider-scroll-indicator-bar-color:rgba(0,0,0,.25)}.overflow-slider__scroll-indicator{cursor:pointer;outline:0;padding-block:var(--overflow-slider-scroll-indicator-padding);position:relative;width:100%}.overflow-slider__scroll-indicator[data-has-overflow=false]{display:none}.overflow-slider__scroll-indicator:focus-visible .overflow-slider__scroll-indicator-button{outline:2px solid;outline-offset:2px}.overflow-slider__scroll-indicator-bar{background:var(--overflow-slider-scroll-indicator-bar-color);border-radius:3px;height:2px;left:0;position:absolute;top:50%;transform:translateY(-50%);width:100%}.overflow-slider__scroll-indicator-button{background:var(--overflow-slider-scroll-indicator-button-color);border-radius:3px;cursor:grab;height:var(--overflow-slider-scroll-indicator-button-height);left:0;position:absolute;top:calc(50% - var(--overflow-slider-scroll-indicator-button-height)/2)}.overflow-slider__scroll-indicator-button:hover,.overflow-slider__scroll-indicator-button[data-is-grabbed=true]{--overflow-slider-scroll-indicator-button-height:6px}.overflow-slider__scroll-indicator-button:after{bottom:calc(var(--overflow-slider-scroll-indicator-padding)*-1);content:"";display:block;position:absolute;top:calc(var(--overflow-slider-scroll-indicator-padding)*-1);width:100%}.overflow-slider{-ms-overflow-style:none;display:grid;grid-auto-flow:column;grid-template-columns:max-content;max-width:-moz-max-content;max-width:max-content;overflow:auto;position:relative;scrollbar-width:none;width:100%}.overflow-slider::-webkit-scrollbar{display:none}.overflow-slider>*{outline-offset:-2px;scroll-snap-align:start}
1
+ :root{--overflow-slider-arrows-size:1.5rem;--overflow-slider-arrows-gap:.5rem;--overflow-slider-arrows-inactive-opacity:0.5}.overflow-slider__arrows{display:flex;gap:var(--overflow-slider-arrows-gap)}.overflow-slider__arrows-button{align-items:center;cursor:pointer;display:flex;outline-offset:-2px}.overflow-slider__arrows-button svg{height:var(--overflow-slider-arrows-size);width:var(--overflow-slider-arrows-size)}.overflow-slider__arrows-button[data-has-content=false]{opacity:var(--overflow-slider-arrows-inactive-opacity)}:root{--overflow-slider-autoplay-background:#000}.overflow-slider__autoplay{background:var(--overflow-slider-autoplay-background)}:root{--overflow-slider-dots-gap:0.5rem;--overflow-slider-dot-size:0.75rem;--overflow-slider-dot-inactive-color:rgba(0,0,0,.1);--overflow-slider-dot-active-color:rgba(0,0,0,.8)}.overflow-slider__dots{align-items:center;display:flex;justify-content:center}.overflow-slider__dots ul{display:flex;flex-wrap:wrap;gap:var(--overflow-slider-dots-gap);list-style:none;margin:0;padding:0}.overflow-slider__dots li{line-height:0;margin:0;padding:0}.overflow-slider__dot-item{background:var(--overflow-slider-dot-inactive-color);border-radius:50%;cursor:pointer;height:var(--overflow-slider-dot-size);margin:0;outline-offset:2px;padding:0;position:relative;width:var(--overflow-slider-dot-size)}.overflow-slider__dot-item:after{bottom:calc(var(--overflow-slider-dots-gap)*-1);content:"";display:block;left:calc(var(--overflow-slider-dots-gap)*-1);position:absolute;right:calc(var(--overflow-slider-dots-gap)*-1);top:calc(var(--overflow-slider-dots-gap)*-1)}.overflow-slider__dot-item:hover,.overflow-slider__dot-item[aria-pressed=true]{background:var(--overflow-slider-dot-active-color)}:root{--overflow-slider-fade-color:#fff;--overflow-slider-fade-width:3rem}.overflow-slider-fade{height:100%;pointer-events:none;position:absolute;top:0;width:var(--overflow-slider-fade-width);z-index:1}.overflow-slider-fade--start{background:linear-gradient(to right,var(--overflow-slider-fade-color) 0,transparent 100%);left:0}[dir=rtl] .overflow-slider-fade--start{left:auto}.overflow-slider-fade--end,[dir=rtl] .overflow-slider-fade--start{background:linear-gradient(to left,var(--overflow-slider-fade-color) 0,transparent 100%);right:0}[dir=rtl] .overflow-slider-fade--end{background:linear-gradient(to right,var(--overflow-slider-fade-color) 0,transparent 100%);left:0;right:auto}[data-has-drag-scrolling][data-has-overflow=true]{cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}:root{--overflow-slider-scroll-indicator-button-height:4px;--overflow-slider-scroll-indicator-padding:1rem;--overflow-slider-scroll-indicator-button-color:rgba(0,0,0,.75);--overflow-slider-scroll-indicator-bar-color:rgba(0,0,0,.25)}.overflow-slider__scroll-indicator{cursor:pointer;outline:0;padding-block:var(--overflow-slider-scroll-indicator-padding);position:relative;width:100%}.overflow-slider__scroll-indicator[data-has-overflow=false]{display:none}.overflow-slider__scroll-indicator:focus-visible .overflow-slider__scroll-indicator-button{outline:2px solid;outline-offset:2px}.overflow-slider__scroll-indicator-bar{background:var(--overflow-slider-scroll-indicator-bar-color);border-radius:3px;height:2px;left:0;position:absolute;top:50%;transform:translateY(-50%);width:100%}.overflow-slider__scroll-indicator-button{background:var(--overflow-slider-scroll-indicator-button-color);border-radius:3px;cursor:grab;height:var(--overflow-slider-scroll-indicator-button-height);left:0;position:absolute;top:calc(50% - var(--overflow-slider-scroll-indicator-button-height)/2)}.overflow-slider__scroll-indicator-button:hover,.overflow-slider__scroll-indicator-button[data-is-grabbed=true]{--overflow-slider-scroll-indicator-button-height:6px}.overflow-slider__scroll-indicator-button:after{bottom:calc(var(--overflow-slider-scroll-indicator-padding)*-1);content:"";display:block;position:absolute;top:calc(var(--overflow-slider-scroll-indicator-padding)*-1);width:100%}.overflow-slider{-ms-overflow-style:none;display:grid;grid-auto-flow:column;grid-template-columns:max-content;justify-content:flex-start;max-width:-moz-max-content;max-width:max-content;overflow:auto;position:relative;scrollbar-width:none;width:100%}.overflow-slider::-webkit-scrollbar{display:none}.overflow-slider>*{outline-offset:-2px;scroll-snap-align:start}
@@ -11,6 +11,8 @@ declare function OverflowSlider(container: HTMLElement, options?: SliderOptionAr
11
11
  canMoveToSlide: (index: number) => boolean;
12
12
  getInclusiveScrollWidth: () => number;
13
13
  getInclusiveClientWidth: () => number;
14
+ getGapSize: () => number;
15
+ getLeftOffset: () => number;
14
16
  getScrollLeft: () => number;
15
17
  setScrollLeft: (value: number) => void;
16
18
  setActiveSlideIdx: () => void;
@@ -9,6 +9,8 @@ type Slider<O = {}, C = {}, H extends string = string> = {
9
9
  canMoveToSlide: (index: number) => boolean;
10
10
  getInclusiveScrollWidth: () => number;
11
11
  getInclusiveClientWidth: () => number;
12
+ getGapSize: () => number;
13
+ getLeftOffset: () => number;
12
14
  getScrollLeft: () => number;
13
15
  setScrollLeft: (value: number) => void;
14
16
  setActiveSlideIdx: () => void;
@@ -20,6 +20,7 @@ function DotsPlugin(args) {
20
20
  const buildDots = () => {
21
21
  dots.setAttribute('data-has-content', slider.details.hasOverflow.toString());
22
22
  dots.innerHTML = '';
23
+ console.log('buildDots');
23
24
  const dotsList = document.createElement('ul');
24
25
  const count = options.type === 'view' ? slider.details.amountOfPages : slider.details.slideCount;
25
26
  const currentIndex = options.type === 'view' ? slider.details.currentPage : slider.activeSlideIdx;
@@ -77,8 +78,15 @@ function DotsPlugin(args) {
77
78
  }
78
79
  };
79
80
  const activateDot = (index) => {
81
+ console.log('activateDot', index, 'slider.details', slider.details);
80
82
  if (options.type === 'view') {
81
- const targetPosition = slider.details.containerWidth * (index - 1);
83
+ const count = slider.details.amountOfPages;
84
+ let targetPosition = slider.details.containerWidth * (index - 1);
85
+ // For the last page, scroll to the maximum scroll position to ensure it activates
86
+ if (index === count) {
87
+ const maxScroll = slider.details.scrollableAreaWidth - slider.details.containerWidth;
88
+ targetPosition = maxScroll;
89
+ }
82
90
  const scrollLeft = slider.options.rtl ? -targetPosition : targetPosition;
83
91
  slider.container.scrollTo({
84
92
  left: scrollLeft,
@@ -1 +1 @@
1
- const t={dotDescription:"Page %d of %d"},e={dotsContainer:"overflow-slider__dots",dotsItem:"overflow-slider__dot-item"};function n(n){return i=>{var o,s,a;const r={type:null!==(o=null==n?void 0:n.type)&&void 0!==o?o:"slide",texts:Object.assign(Object.assign({},t),(null==n?void 0:n.texts)||[]),classNames:Object.assign(Object.assign({},e),(null==n?void 0:n.classNames)||[]),container:null!==(s=null==n?void 0:n.container)&&void 0!==s?s:null},l=document.createElement("div");l.classList.add(r.classNames.dotsContainer);let d=null;const c=()=>{l.setAttribute("data-has-content",i.details.hasOverflow.toString()),l.innerHTML="";const t=document.createElement("ul"),e="view"===r.type?i.details.amountOfPages:i.details.slideCount,n="view"===r.type?i.details.currentPage:i.activeSlideIdx;if(!(e<=1)){for(let i=0;i<e;i++){const o=document.createElement("li"),s=document.createElement("button");s.setAttribute("type","button"),s.setAttribute("class",r.classNames.dotsItem),s.setAttribute("aria-label",r.texts.dotDescription.replace("%d",(i+1).toString()).replace("%d",e.toString())),s.setAttribute("aria-pressed",(i===n).toString()),s.setAttribute("data-item",(i+1).toString()),o.appendChild(s),t.appendChild(o),s.addEventListener("click",()=>u(i+1)),s.addEventListener("focus",()=>d=i+1),s.addEventListener("keydown",t=>{var n;const i=l.querySelector('[aria-pressed="true"]');if(!i)return;const o=parseInt(null!==(n=i.getAttribute("data-item"))&&void 0!==n?n:"1");if("ArrowLeft"===t.key){const t=o-1;if(t>0){const e=l.querySelector(`[data-item="${t}"]`);e&&e.focus(),u(t)}}if("ArrowRight"===t.key){const t=o+1;if(t<=e){const e=l.querySelector(`[data-item="${t}"]`);e&&e.focus(),u(t)}}})}if(l.appendChild(t),d){const t=l.querySelector(`[data-item="${d}"]`);t&&t.focus()}}},u=t=>{if("view"===r.type){const e=i.details.containerWidth*(t-1),n=i.options.rtl?-e:e;i.container.scrollTo({left:n,behavior:i.options.scrollBehavior})}else i.moveToSlide(t-1)};c(),r.container?r.container.appendChild(l):null===(a=i.container.parentNode)||void 0===a||a.insertBefore(l,i.container.nextSibling),i.on("scrollEnd",c),i.on("contentsChanged",c),i.on("containerSizeChanged",c),i.on("detailsChanged",c)}}export{n as default};
1
+ const t={dotDescription:"Page %d of %d"},e={dotsContainer:"overflow-slider__dots",dotsItem:"overflow-slider__dot-item"};function n(n){return i=>{var o,s,a;const l={type:null!==(o=null==n?void 0:n.type)&&void 0!==o?o:"slide",texts:Object.assign(Object.assign({},t),(null==n?void 0:n.texts)||[]),classNames:Object.assign(Object.assign({},e),(null==n?void 0:n.classNames)||[]),container:null!==(s=null==n?void 0:n.container)&&void 0!==s?s:null},r=document.createElement("div");r.classList.add(l.classNames.dotsContainer);let d=null;const c=()=>{r.setAttribute("data-has-content",i.details.hasOverflow.toString()),r.innerHTML="",console.log("buildDots");const t=document.createElement("ul"),e="view"===l.type?i.details.amountOfPages:i.details.slideCount,n="view"===l.type?i.details.currentPage:i.activeSlideIdx;if(!(e<=1)){for(let i=0;i<e;i++){const o=document.createElement("li"),s=document.createElement("button");s.setAttribute("type","button"),s.setAttribute("class",l.classNames.dotsItem),s.setAttribute("aria-label",l.texts.dotDescription.replace("%d",(i+1).toString()).replace("%d",e.toString())),s.setAttribute("aria-pressed",(i===n).toString()),s.setAttribute("data-item",(i+1).toString()),o.appendChild(s),t.appendChild(o),s.addEventListener("click",()=>u(i+1)),s.addEventListener("focus",()=>d=i+1),s.addEventListener("keydown",t=>{var n;const i=r.querySelector('[aria-pressed="true"]');if(!i)return;const o=parseInt(null!==(n=i.getAttribute("data-item"))&&void 0!==n?n:"1");if("ArrowLeft"===t.key){const t=o-1;if(t>0){const e=r.querySelector(`[data-item="${t}"]`);e&&e.focus(),u(t)}}if("ArrowRight"===t.key){const t=o+1;if(t<=e){const e=r.querySelector(`[data-item="${t}"]`);e&&e.focus(),u(t)}}})}if(r.appendChild(t),d){const t=r.querySelector(`[data-item="${d}"]`);t&&t.focus()}}},u=t=>{if(console.log("activateDot",t,"slider.details",i.details),"view"===l.type){const e=i.details.amountOfPages;let n=i.details.containerWidth*(t-1);if(t===e){n=i.details.scrollableAreaWidth-i.details.containerWidth}const o=i.options.rtl?-n:n;i.container.scrollTo({left:o,behavior:i.options.scrollBehavior})}else i.moveToSlide(t-1)};c(),l.container?l.container.appendChild(r):null===(a=i.container.parentNode)||void 0===a||a.insertBefore(r,i.container.nextSibling),i.on("scrollEnd",c),i.on("contentsChanged",c),i.on("containerSizeChanged",c),i.on("detailsChanged",c)}}export{n as default};
@@ -665,6 +665,12 @@ h3:before {
665
665
  /* transform: scale(0); */
666
666
  }
667
667
 
668
+ .example-container-1-dots-view-full {
669
+ width: 100vw;
670
+ margin-inline-start: calc(-50vw + 50%);
671
+ scroll-snap-type: x mandatory;
672
+ }
673
+
668
674
  /* ===========================================================================
669
675
  Example 4: Filters
670
676
  =========================================================================== */
@@ -139,6 +139,28 @@ import ClassNamesPlugin from '../dist/plugins/classnames/index.esm.js';
139
139
  );
140
140
  console.log( '1-dots-view', example1DotsView );
141
141
 
142
+ const example1DotsViewFull = new OverflowSlider(
143
+ document.querySelector( '.example-container-1-dots-view-full' ),
144
+ {
145
+ emulateScrollSnap: true,
146
+ rtl: document.documentElement.dir === 'rtl',
147
+ targetWidth: (slider) => {
148
+ return slider.container.parentElement.clientWidth;
149
+ }
150
+ },
151
+ [
152
+ FullWidthPlugin(),
153
+ DragScrollingPlugin(),
154
+ SkipLinksPlugin(),
155
+ DotsPlugin(
156
+ {
157
+ type: 'view'
158
+ }
159
+ ),
160
+ ]
161
+ );
162
+ console.log( '1-dots-view-full', example1DotsViewFull );
163
+
142
164
  const example1Fade = new OverflowSlider(
143
165
  document.querySelector( '.example-container-1-fade' ),
144
166
  {
@@ -7,7 +7,7 @@ function details(slider) {
7
7
  let containerHeight = 0;
8
8
  let scrollableAreaWidth = 0;
9
9
  let amountOfPages = 0;
10
- let currentPage = 1;
10
+ let currentPage = 0;
11
11
  if (Math.floor(slider.getInclusiveScrollWidth()) > Math.floor(slider.getInclusiveClientWidth())) {
12
12
  hasOverflow = true;
13
13
  }
@@ -18,8 +18,10 @@ function details(slider) {
18
18
  amountOfPages = Math.ceil(scrollableAreaWidth / containerWidth);
19
19
  if (Math.floor(slider.getScrollLeft()) >= 0) {
20
20
  currentPage = Math.floor(slider.getScrollLeft() / containerWidth);
21
- // consider as last page if the scrollLeft + containerWidth is equal to scrollWidth
22
- if (Math.floor(slider.getScrollLeft() + containerWidth) === Math.floor(scrollableAreaWidth)) {
21
+ // Consider as last page if we're within tolerance of the maximum scroll position
22
+ // When FullWidthPlugin is active, account for the margin offset
23
+ const maxScroll = scrollableAreaWidth - containerWidth - (2 * slider.getLeftOffset());
24
+ if (slider.getScrollLeft() >= maxScroll - 1) {
23
25
  currentPage = amountOfPages - 1;
24
26
  }
25
27
  }
@@ -604,6 +606,8 @@ function Slider(container, options, plugins) {
604
606
  snapToClosestSlide,
605
607
  getInclusiveScrollWidth,
606
608
  getInclusiveClientWidth,
609
+ getLeftOffset,
610
+ getGapSize,
607
611
  getScrollLeft,
608
612
  setScrollLeft,
609
613
  setActiveSlideIdx,
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/core/details.ts","../src/core/utils.ts","../src/core/slider.ts","../src/core/overflow-slider.ts"],"sourcesContent":["export default function details(slider) {\n var _a;\n let instance;\n let hasOverflow = false;\n let slideCount = 0;\n let containerWidth = 0;\n let containerHeight = 0;\n let scrollableAreaWidth = 0;\n let amountOfPages = 0;\n let currentPage = 1;\n if (Math.floor(slider.getInclusiveScrollWidth()) > Math.floor(slider.getInclusiveClientWidth())) {\n hasOverflow = true;\n }\n slideCount = (_a = slider.slides.length) !== null && _a !== void 0 ? _a : 0;\n containerWidth = slider.container.offsetWidth;\n containerHeight = slider.container.offsetHeight;\n scrollableAreaWidth = slider.getInclusiveScrollWidth();\n amountOfPages = Math.ceil(scrollableAreaWidth / containerWidth);\n if (Math.floor(slider.getScrollLeft()) >= 0) {\n currentPage = Math.floor(slider.getScrollLeft() / containerWidth);\n // consider as last page if the scrollLeft + containerWidth is equal to scrollWidth\n if (Math.floor(slider.getScrollLeft() + containerWidth) === Math.floor(scrollableAreaWidth)) {\n currentPage = amountOfPages - 1;\n }\n }\n instance = {\n hasOverflow,\n slideCount,\n containerWidth,\n containerHeight,\n scrollableAreaWidth,\n amountOfPages,\n currentPage,\n };\n return instance;\n}\n;\n","function generateId(prefix, i = 1) {\n const id = `${prefix}-${i}`;\n if (document.getElementById(id)) {\n return generateId(prefix, i + 1);\n }\n return id;\n}\nfunction objectsAreEqual(obj1, obj2) {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (let key of keys1) {\n // Use `Object.prototype.hasOwnProperty.call` for better safety\n if (!Object.prototype.hasOwnProperty.call(obj2, key) || obj1[key] !== obj2[key]) {\n return false;\n }\n }\n return true;\n}\nfunction getOutermostChildrenEdgeMarginSum(el) {\n if (el.children.length === 0) {\n return 0;\n }\n // get the first child and its left margin\n const firstChild = el.children[0];\n const firstChildStyle = getComputedStyle(firstChild);\n const firstChildMarginLeft = parseFloat(firstChildStyle.marginLeft);\n // Get the last child and its right margin\n const lastChild = el.children[el.children.length - 1];\n const lastChildStyle = getComputedStyle(lastChild);\n const lastChildMarginRight = parseFloat(lastChildStyle.marginRight);\n return firstChildMarginLeft + lastChildMarginRight;\n}\nexport { generateId, objectsAreEqual, getOutermostChildrenEdgeMarginSum };\n","import details from './details';\nimport { generateId, objectsAreEqual, getOutermostChildrenEdgeMarginSum } from './utils';\nexport default function Slider(container, options, plugins) {\n let slider;\n let subs = {};\n const overrideTransitions = () => {\n slider.slides.forEach((slide) => {\n slide.style.transition = 'none';\n });\n };\n const restoreTransitions = () => {\n slider.slides.forEach((slide) => {\n slide.style.removeProperty('transition');\n });\n };\n function init() {\n slider.container = container;\n // ensure container has id\n let containerId = container.getAttribute('id');\n if (containerId === null) {\n containerId = generateId('overflow-slider');\n container.setAttribute('id', containerId);\n }\n setSlides();\n // CSS transitions can cause delays for calculations\n overrideTransitions();\n setDetails(true);\n setActiveSlideIdx();\n slider.on('contentsChanged', () => {\n setSlides();\n setDetails();\n setActiveSlideIdx();\n });\n slider.on('containerSizeChanged', () => setDetails());\n let requestId = 0;\n const setDetailsDebounce = () => {\n if (requestId) {\n window.cancelAnimationFrame(requestId);\n }\n requestId = window.requestAnimationFrame(() => {\n setDetails();\n setActiveSlideIdx();\n });\n };\n slider.on('scroll', setDetailsDebounce);\n addEventListeners();\n setDataAttributes();\n setCSSVariables();\n if (plugins) {\n for (const plugin of plugins) {\n plugin(slider);\n }\n // plugins may mutate layout: refresh details and derived data after they run\n // setTimeout( () => {\n setDetails();\n setActiveSlideIdx();\n setCSSVariables();\n slider.emit('pluginsLoaded');\n // }, 250 );\n }\n slider.on('detailsChanged', () => {\n setDataAttributes();\n setCSSVariables();\n });\n slider.emit('created');\n restoreTransitions();\n slider.container.setAttribute('data-ready', 'true');\n }\n ;\n function setDetails(isInit = false) {\n const oldDetails = slider.details;\n const newDetails = details(slider);\n slider.details = newDetails;\n if (!isInit && !objectsAreEqual(oldDetails, newDetails)) {\n slider.emit('detailsChanged');\n }\n else if (isInit) {\n slider.emit('detailsChanged');\n }\n }\n ;\n function setSlides() {\n slider.slides = Array.from(slider.container.querySelectorAll(slider.options.slidesSelector));\n }\n function addEventListeners() {\n // changes to DOM\n const observer = new MutationObserver(() => slider.emit('contentsChanged'));\n observer.observe(slider.container, { childList: true });\n // container size changes\n const resizeObserver = new ResizeObserver(() => slider.emit('containerSizeChanged'));\n resizeObserver.observe(slider.container);\n // scroll event with debouncing\n let scrollTimeout;\n let nativeScrollTimeout;\n let programmaticScrollTimeout;\n let scrollLeft = slider.container.scrollLeft;\n let nativeScrollLeft = slider.container.scrollLeft;\n let programmaticScrollLeft = slider.container.scrollLeft;\n let isScrolling = false;\n let isUserScrolling = false;\n let isProgrammaticScrolling = false;\n // all types of scroll\n slider.container.addEventListener('scroll', () => {\n const newScrollLeft = slider.container.scrollLeft;\n if (Math.floor(scrollLeft) !== Math.floor(newScrollLeft)) {\n if (!isScrolling) {\n isScrolling = true;\n slider.emit('scrollStart');\n }\n scrollLeft = newScrollLeft;\n clearTimeout(scrollTimeout);\n scrollTimeout = setTimeout(() => {\n isScrolling = false;\n slider.emit('scrollEnd');\n }, 50);\n slider.emit('scroll');\n }\n // keep up nativeScrolling to take into account scroll-snap\n if (isUserScrolling) {\n nativeScrollHandler();\n }\n });\n // user initted scroll (touchmove, mouse wheel, etc.)\n const nativeScrollHandler = () => {\n const newScrollLeft = slider.container.scrollLeft;\n if (Math.floor(nativeScrollLeft) !== Math.floor(newScrollLeft) && !isProgrammaticScrolling) {\n if (!isUserScrolling) {\n slider.emit('nativeScrollStart');\n isUserScrolling = true;\n }\n slider.emit('nativeScroll');\n nativeScrollLeft = newScrollLeft;\n clearTimeout(nativeScrollTimeout);\n nativeScrollTimeout = setTimeout(() => {\n isUserScrolling = false;\n slider.emit('nativeScrollEnd');\n // update programmaticScrollLeft to match nativeScrollLeft\n // this prevents programmaticScroll triggering with no real change to scrollLeft\n programmaticScrollLeft = nativeScrollLeft;\n }, 50);\n }\n };\n slider.container.addEventListener('touchmove', nativeScrollHandler);\n slider.container.addEventListener('mousewheel', nativeScrollHandler);\n slider.container.addEventListener('wheel', nativeScrollHandler);\n // programmatic scroll (scrollTo, etc.)\n slider.on('programmaticScrollStart', () => {\n isProgrammaticScrolling = true;\n });\n slider.container.addEventListener('scroll', () => {\n const newScrollLeft = slider.container.scrollLeft;\n if (Math.floor(programmaticScrollLeft) !== Math.floor(newScrollLeft) && !isUserScrolling && isProgrammaticScrolling) {\n programmaticScrollLeft = newScrollLeft;\n clearTimeout(programmaticScrollTimeout);\n programmaticScrollTimeout = setTimeout(() => {\n isProgrammaticScrolling = false;\n slider.emit('programmaticScrollEnd');\n // update nativeScrollLeft to match programmaticScrollLeft\n // this prevents nativeScroll triggering with no real change to scrollLeft\n nativeScrollLeft = programmaticScrollLeft;\n }, 50);\n slider.emit('programmaticScroll');\n }\n });\n // Fix issues on scroll snapping not working on programmatic scroll (it's not smooth)\n // by disabling scroll snap if scrolling is programmatic\n slider.on('programmaticScrollStart', () => {\n slider.container.style.scrollSnapType = 'none';\n });\n // restore scroll snap if user scroll starts\n slider.on('nativeScrollStart', () => {\n slider.container.style.scrollSnapType = '';\n });\n // Listen for mouse down and touch start events on the document\n // This handles both mouse clicks and touch interactions\n let wasInteractedWith = false;\n slider.container.addEventListener('mousedown', () => {\n wasInteractedWith = true;\n });\n slider.container.addEventListener('touchstart', () => {\n wasInteractedWith = true;\n }, { passive: true });\n slider.container.addEventListener('focusin', (e) => {\n // move target parents as long as they are not the container\n // but only if focus didn't start from mouse or touch\n if (!wasInteractedWith) {\n let target = e.target;\n while (target.parentElement !== slider.container) {\n if (target.parentElement) {\n target = target.parentElement;\n }\n else {\n break;\n }\n }\n ensureSlideIsInView(target, 'auto');\n }\n wasInteractedWith = false;\n });\n }\n ;\n function setCSSVariables() {\n slider.options.cssVariableContainer.style.setProperty('--slider-container-height', `${slider.details.containerHeight}px`);\n slider.options.cssVariableContainer.style.setProperty('--slider-container-width', `${slider.details.containerWidth}px`);\n slider.options.cssVariableContainer.style.setProperty('--slider-scrollable-width', `${slider.details.scrollableAreaWidth}px`);\n slider.options.cssVariableContainer.style.setProperty('--slider-slides-count', `${slider.details.slideCount}`);\n slider.options.cssVariableContainer.style.setProperty('--slider-x-offset', `${getLeftOffset()}px`);\n if (typeof slider.options.targetWidth === 'function') {\n slider.options.cssVariableContainer.style.setProperty('--slider-container-target-width', `${slider.options.targetWidth(slider)}px`);\n }\n }\n function setDataAttributes() {\n slider.container.setAttribute('data-has-overflow', slider.details.hasOverflow ? 'true' : 'false');\n if (slider.options.rtl) {\n slider.container.setAttribute('dir', 'rtl');\n }\n }\n function ensureSlideIsInView(slide, scrollBehavior = null) {\n const behavior = scrollBehavior || slider.options.scrollBehavior;\n const slideRect = slide.getBoundingClientRect();\n const sliderRect = slider.container.getBoundingClientRect();\n const containerWidth = slider.container.offsetWidth;\n const scrollLeft = slider.container.scrollLeft;\n const slideStart = slideRect.left - sliderRect.left + scrollLeft;\n const slideEnd = slideStart + slideRect.width;\n let scrollTarget = null;\n if (Math.floor(slideStart) < Math.floor(scrollLeft)) {\n scrollTarget = slideStart;\n }\n else if (Math.floor(slideEnd) > Math.floor(scrollLeft) + Math.floor(containerWidth)) {\n scrollTarget = slideEnd - containerWidth;\n }\n else if (Math.floor(slideStart) === 0) {\n scrollTarget = 0;\n }\n else {\n scrollTarget = slideStart;\n }\n if (scrollTarget !== null) {\n setTimeout((scrollTarget) => {\n slider.emit('programmaticScrollStart');\n slider.container.scrollTo({ left: scrollTarget, behavior: behavior });\n }, 50, scrollTarget);\n }\n }\n ;\n function setActiveSlideIdx() {\n const sliderRect = slider.container.getBoundingClientRect();\n const scrollLeft = slider.getScrollLeft();\n const slides = slider.slides;\n let activeSlideIdx = 0;\n let scrolledPastLastSlide = false;\n if (slider.options.rtl) {\n const scrolledDistance = slider.getInclusiveScrollWidth() - scrollLeft - slider.getInclusiveClientWidth();\n const slidePositions = [];\n for (let i = slides.length - 1; i >= 0; i--) {\n const slideRect = slides[i].getBoundingClientRect();\n const slideEnd = Math.abs(slideRect.left) - Math.abs(sliderRect.left) + scrolledDistance;\n slidePositions.push({\n slide: slides[i],\n slideEnd: slideEnd,\n });\n }\n let closestSlide = null;\n let closestDistance = null;\n for (let i = 0; i < slidePositions.length; i++) {\n const distance = Math.abs(slidePositions[i].slideEnd - scrolledDistance);\n if (closestDistance === null || distance < closestDistance) {\n closestDistance = distance;\n closestSlide = slidePositions[i].slide;\n }\n }\n if (closestSlide) {\n activeSlideIdx = slides.indexOf(closestSlide);\n }\n else {\n activeSlideIdx = slides.length - 1;\n }\n }\n else {\n for (let i = 0; i < slides.length; i++) {\n const slideRect = slides[i].getBoundingClientRect();\n const slideStart = slideRect.left - sliderRect.left + scrollLeft + getGapSize();\n if (Math.floor(slideStart) >= Math.floor(scrollLeft)) {\n activeSlideIdx = i;\n break;\n }\n if (i === slides.length - 1) {\n scrolledPastLastSlide = true;\n }\n }\n }\n if (scrolledPastLastSlide) {\n activeSlideIdx = slides.length - 1;\n }\n const oldActiveSlideIdx = slider.activeSlideIdx;\n slider.activeSlideIdx = activeSlideIdx;\n if (oldActiveSlideIdx !== activeSlideIdx) {\n slider.emit('activeSlideChanged');\n }\n }\n function moveToSlide(idx) {\n const slide = slider.slides[idx];\n if (slide) {\n ensureSlideIsInView(slide);\n }\n }\n ;\n function canMoveToSlide(idx) {\n if (idx < 0 || idx >= slider.slides.length) {\n return false;\n }\n if (idx === slider.activeSlideIdx) {\n return false;\n }\n const direction = slider.options.rtl ? (idx < slider.activeSlideIdx ? 'backwards' : 'forwards') : (idx < slider.activeSlideIdx ? 'backwards' : 'forwards');\n // check if the slide is already in view\n const sliderRect = slider.container.getBoundingClientRect();\n const scrollLeft = slider.getScrollLeft();\n const containerWidth = slider.details.containerWidth;\n const hasUpcomingContent = slider.slides.some((s, i) => {\n if (i === slider.activeSlideIdx) {\n return false; // skip the slide we are checking\n }\n const sRect = s.getBoundingClientRect();\n const sStart = sRect.left - sliderRect.left + scrollLeft;\n const sEnd = sStart + sRect.width;\n if (slider.options.rtl) {\n if (scrollLeft === 0 && slider.details.hasOverflow) {\n return true;\n }\n return (direction === 'forwards' && i > slider.activeSlideIdx && Math.floor(sStart) < Math.floor(scrollLeft)) ||\n (direction === 'backwards' && i < slider.activeSlideIdx && Math.floor(sEnd) > Math.floor(scrollLeft + containerWidth));\n }\n else {\n return (direction === 'forwards' && i > slider.activeSlideIdx && Math.floor(sEnd) > Math.floor(scrollLeft + containerWidth)) ||\n (direction === 'backwards' && i < slider.activeSlideIdx && Math.floor(sStart) < Math.floor(scrollLeft));\n }\n });\n return hasUpcomingContent;\n }\n function moveToSlideInDirection(direction) {\n const activeSlideIdx = slider.activeSlideIdx;\n if (direction === 'prev') {\n if (activeSlideIdx > 0) {\n moveToSlide(activeSlideIdx - 1);\n }\n }\n else if (direction === 'next') {\n if (activeSlideIdx < slider.slides.length - 1) {\n moveToSlide(activeSlideIdx + 1);\n }\n }\n }\n function getInclusiveScrollWidth() {\n return slider.container.scrollWidth + getOutermostChildrenEdgeMarginSum(slider.container);\n }\n ;\n function getInclusiveClientWidth() {\n return slider.container.clientWidth + getOutermostChildrenEdgeMarginSum(slider.container);\n }\n function getScrollLeft() {\n return slider.options.rtl ? Math.abs(slider.container.scrollLeft) : slider.container.scrollLeft;\n }\n ;\n function setScrollLeft(value) {\n slider.container.scrollLeft = slider.options.rtl ? -value : value;\n }\n ;\n function getGapSize() {\n let gapSize = 0;\n if (slider.slides.length > 1) {\n const firstSlideRect = slider.slides[0].getBoundingClientRect();\n const secondSlideRect = slider.slides[1].getBoundingClientRect();\n gapSize = slider.options.rtl ? Math.abs(Math.floor(secondSlideRect.right - firstSlideRect.left)) : Math.floor(secondSlideRect.left - firstSlideRect.right);\n }\n return gapSize;\n }\n ;\n function getLeftOffset() {\n let offset = 0;\n const fullWidthOffset = slider.container.getAttribute('data-full-width-offset');\n if (fullWidthOffset) {\n offset = parseInt(fullWidthOffset);\n }\n return Math.floor(offset);\n }\n ;\n function moveToDirection(direction = \"prev\") {\n const scrollStrategy = slider.options.scrollStrategy;\n const scrollLeft = slider.container.scrollLeft;\n const sliderRect = slider.container.getBoundingClientRect();\n const containerWidth = slider.container.offsetWidth;\n let targetScrollPosition = scrollLeft;\n const realDirection = slider.options.rtl ? (direction === 'prev' ? 'next' : 'prev') : direction;\n if (realDirection === 'prev') {\n targetScrollPosition = Math.max(0, scrollLeft - slider.container.offsetWidth);\n }\n else if (realDirection === 'next') {\n targetScrollPosition = Math.min(slider.getInclusiveScrollWidth(), scrollLeft + slider.container.offsetWidth);\n }\n if (scrollStrategy === 'fullSlide') {\n let fullSlideTargetScrollPosition = null;\n // extend targetScrollPosition to include gap\n if (realDirection === 'prev') {\n fullSlideTargetScrollPosition = Math.max(0, targetScrollPosition - getGapSize());\n }\n else {\n fullSlideTargetScrollPosition = Math.min(slider.getInclusiveScrollWidth(), targetScrollPosition + getGapSize());\n }\n if (realDirection === 'next') {\n let partialSlideFound = false;\n for (let slide of slider.slides) {\n const slideRect = slide.getBoundingClientRect();\n const slideStart = slideRect.left - sliderRect.left + scrollLeft;\n const slideEnd = slideStart + slideRect.width;\n if (Math.floor(slideStart) < Math.floor(targetScrollPosition) && Math.floor(slideEnd) > Math.floor(targetScrollPosition)) {\n fullSlideTargetScrollPosition = slideStart;\n partialSlideFound = true;\n break;\n }\n }\n if (!partialSlideFound) {\n fullSlideTargetScrollPosition = Math.min(targetScrollPosition, slider.getInclusiveScrollWidth() - slider.container.offsetWidth);\n }\n if (fullSlideTargetScrollPosition) {\n if (Math.floor(fullSlideTargetScrollPosition) > Math.floor(scrollLeft)) {\n // make sure fullSlideTargetScrollPosition is possible considering the container width\n const maxScrollPosition = Math.floor(slider.getInclusiveScrollWidth()) - Math.floor(containerWidth);\n targetScrollPosition = Math.min(fullSlideTargetScrollPosition, maxScrollPosition);\n }\n else {\n // cannot snap to slide, move one page worth of distance\n targetScrollPosition = Math.min(slider.getInclusiveScrollWidth(), scrollLeft + containerWidth);\n }\n }\n }\n else {\n let partialSlideFound = false;\n for (let slide of slider.slides) {\n const slideRect = slide.getBoundingClientRect();\n const slideStart = slideRect.left - sliderRect.left + scrollLeft;\n const slideEnd = slideStart + slideRect.width;\n if (Math.floor(slideStart) < Math.floor(scrollLeft) && Math.floor(slideEnd) > Math.floor(scrollLeft)) {\n fullSlideTargetScrollPosition = slideEnd - containerWidth;\n partialSlideFound = true;\n break;\n }\n }\n if (!partialSlideFound) {\n fullSlideTargetScrollPosition = Math.max(0, scrollLeft - containerWidth);\n }\n if (fullSlideTargetScrollPosition && Math.floor(fullSlideTargetScrollPosition) < Math.floor(scrollLeft)) {\n targetScrollPosition = fullSlideTargetScrollPosition;\n }\n }\n }\n // add left offset\n const offsettedTargetScrollPosition = targetScrollPosition - getLeftOffset();\n if (Math.floor(offsettedTargetScrollPosition) >= 0) {\n targetScrollPosition = offsettedTargetScrollPosition;\n }\n slider.emit('programmaticScrollStart');\n slider.container.style.scrollBehavior = slider.options.scrollBehavior;\n slider.container.scrollLeft = targetScrollPosition;\n setTimeout(() => slider.container.style.scrollBehavior = '', 50);\n }\n ;\n function snapToClosestSlide(direction = \"prev\") {\n var _a, _b;\n const { slides, options, container } = slider;\n const { rtl, emulateScrollSnapMaxThreshold = 10, scrollBehavior = 'smooth', } = options;\n const isForward = rtl ? direction === 'prev' : direction === 'next';\n const scrollPos = getScrollLeft();\n // Get container rect once (includes any CSS transforms)\n const containerRect = container.getBoundingClientRect();\n const factor = rtl ? -1 : 1;\n // Calculate target area offset if targetWidth is defined\n let targetAreaOffset = 0;\n if (typeof options.targetWidth === 'function') {\n try {\n const targetWidth = options.targetWidth(slider);\n const containerWidth = containerRect.width;\n if (Number.isFinite(targetWidth) && targetWidth > 0 && targetWidth < containerWidth) {\n targetAreaOffset = (containerWidth - targetWidth) / 2;\n }\n }\n catch (error) {\n // ignore errors, use default offset of 0\n }\n }\n // Build slide metadata\n const slideData = [...slides].map(slide => {\n const { width } = slide.getBoundingClientRect();\n const slideRect = slide.getBoundingClientRect();\n // position relative to container's left edge\n const relativeStart = (slideRect.left - containerRect.left) + scrollPos;\n // Adjust trigger point to align with target area start instead of container edge\n const alignmentPoint = relativeStart - targetAreaOffset;\n const triggerPoint = Math.min(alignmentPoint + width / 2, alignmentPoint + emulateScrollSnapMaxThreshold);\n return { start: relativeStart - targetAreaOffset, trigger: triggerPoint };\n });\n // Pick the target start based on drag direction\n let targetStart = null;\n if (isForward) {\n const found = slideData.find(item => scrollPos <= item.trigger);\n targetStart = (_a = found === null || found === void 0 ? void 0 : found.start) !== null && _a !== void 0 ? _a : null;\n }\n else {\n const found = [...slideData].reverse().find(item => scrollPos >= item.trigger);\n targetStart = (_b = found === null || found === void 0 ? void 0 : found.start) !== null && _b !== void 0 ? _b : null;\n }\n if (targetStart == null)\n return;\n // Clamp to zero and apply RTL factor\n const finalLeft = Math.max(0, Math.floor(targetStart)) * factor;\n container.scrollTo({ left: finalLeft, behavior: scrollBehavior });\n }\n function on(name, cb) {\n if (!subs[name]) {\n subs[name] = [];\n }\n subs[name].push(cb);\n }\n ;\n function emit(name) {\n var _a;\n if (subs && subs[name]) {\n subs[name].forEach(cb => {\n cb(slider);\n });\n }\n const optionCallBack = (_a = slider === null || slider === void 0 ? void 0 : slider.options) === null || _a === void 0 ? void 0 : _a[name];\n // Type guard to check if the option callback is a function\n if (typeof optionCallBack === 'function') {\n optionCallBack(slider); // Type assertion here\n }\n }\n ;\n slider = {\n emit,\n moveToDirection,\n canMoveToSlide,\n moveToSlide,\n moveToSlideInDirection,\n snapToClosestSlide,\n getInclusiveScrollWidth,\n getInclusiveClientWidth,\n getScrollLeft,\n setScrollLeft,\n setActiveSlideIdx,\n on,\n options,\n };\n init();\n return slider;\n}\n","import Slider from './slider';\nexport default function OverflowSlider(container, options, plugins) {\n try {\n // check that container HTML element\n if (!(container instanceof Element)) {\n throw new Error(`Container must be HTML element, found ${typeof container}`);\n }\n const defaults = {\n cssVariableContainer: container,\n scrollBehavior: \"smooth\",\n scrollStrategy: \"fullSlide\",\n slidesSelector: \":scope > *\",\n emulateScrollSnap: false,\n emulateScrollSnapMaxThreshold: 64,\n rtl: false,\n };\n const sliderOptions = Object.assign(Object.assign({}, defaults), options);\n // disable smooth scrolling if user prefers reduced motion\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n sliderOptions.scrollBehavior = \"auto\";\n }\n return Slider(container, sliderOptions, plugins);\n }\n catch (e) {\n console.error(e);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/core/details.ts","../src/core/utils.ts","../src/core/slider.ts","../src/core/overflow-slider.ts"],"sourcesContent":["export default function details(slider) {\n var _a;\n let instance;\n let hasOverflow = false;\n let slideCount = 0;\n let containerWidth = 0;\n let containerHeight = 0;\n let scrollableAreaWidth = 0;\n let amountOfPages = 0;\n let currentPage = 0;\n if (Math.floor(slider.getInclusiveScrollWidth()) > Math.floor(slider.getInclusiveClientWidth())) {\n hasOverflow = true;\n }\n slideCount = (_a = slider.slides.length) !== null && _a !== void 0 ? _a : 0;\n containerWidth = slider.container.offsetWidth;\n containerHeight = slider.container.offsetHeight;\n scrollableAreaWidth = slider.getInclusiveScrollWidth();\n amountOfPages = Math.ceil(scrollableAreaWidth / containerWidth);\n if (Math.floor(slider.getScrollLeft()) >= 0) {\n currentPage = Math.floor(slider.getScrollLeft() / containerWidth);\n // Consider as last page if we're within tolerance of the maximum scroll position\n // When FullWidthPlugin is active, account for the margin offset\n const maxScroll = scrollableAreaWidth - containerWidth - (2 * slider.getLeftOffset());\n if (slider.getScrollLeft() >= maxScroll - 1) {\n currentPage = amountOfPages - 1;\n }\n }\n instance = {\n hasOverflow,\n slideCount,\n containerWidth,\n containerHeight,\n scrollableAreaWidth,\n amountOfPages,\n currentPage,\n };\n return instance;\n}\n;\n","function generateId(prefix, i = 1) {\n const id = `${prefix}-${i}`;\n if (document.getElementById(id)) {\n return generateId(prefix, i + 1);\n }\n return id;\n}\nfunction objectsAreEqual(obj1, obj2) {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (let key of keys1) {\n // Use `Object.prototype.hasOwnProperty.call` for better safety\n if (!Object.prototype.hasOwnProperty.call(obj2, key) || obj1[key] !== obj2[key]) {\n return false;\n }\n }\n return true;\n}\nfunction getOutermostChildrenEdgeMarginSum(el) {\n if (el.children.length === 0) {\n return 0;\n }\n // get the first child and its left margin\n const firstChild = el.children[0];\n const firstChildStyle = getComputedStyle(firstChild);\n const firstChildMarginLeft = parseFloat(firstChildStyle.marginLeft);\n // Get the last child and its right margin\n const lastChild = el.children[el.children.length - 1];\n const lastChildStyle = getComputedStyle(lastChild);\n const lastChildMarginRight = parseFloat(lastChildStyle.marginRight);\n return firstChildMarginLeft + lastChildMarginRight;\n}\nexport { generateId, objectsAreEqual, getOutermostChildrenEdgeMarginSum };\n","import details from './details';\nimport { generateId, objectsAreEqual, getOutermostChildrenEdgeMarginSum } from './utils';\nexport default function Slider(container, options, plugins) {\n let slider;\n let subs = {};\n const overrideTransitions = () => {\n slider.slides.forEach((slide) => {\n slide.style.transition = 'none';\n });\n };\n const restoreTransitions = () => {\n slider.slides.forEach((slide) => {\n slide.style.removeProperty('transition');\n });\n };\n function init() {\n slider.container = container;\n // ensure container has id\n let containerId = container.getAttribute('id');\n if (containerId === null) {\n containerId = generateId('overflow-slider');\n container.setAttribute('id', containerId);\n }\n setSlides();\n // CSS transitions can cause delays for calculations\n overrideTransitions();\n setDetails(true);\n setActiveSlideIdx();\n slider.on('contentsChanged', () => {\n setSlides();\n setDetails();\n setActiveSlideIdx();\n });\n slider.on('containerSizeChanged', () => setDetails());\n let requestId = 0;\n const setDetailsDebounce = () => {\n if (requestId) {\n window.cancelAnimationFrame(requestId);\n }\n requestId = window.requestAnimationFrame(() => {\n setDetails();\n setActiveSlideIdx();\n });\n };\n slider.on('scroll', setDetailsDebounce);\n addEventListeners();\n setDataAttributes();\n setCSSVariables();\n if (plugins) {\n for (const plugin of plugins) {\n plugin(slider);\n }\n // plugins may mutate layout: refresh details and derived data after they run\n // setTimeout( () => {\n setDetails();\n setActiveSlideIdx();\n setCSSVariables();\n slider.emit('pluginsLoaded');\n // }, 250 );\n }\n slider.on('detailsChanged', () => {\n setDataAttributes();\n setCSSVariables();\n });\n slider.emit('created');\n restoreTransitions();\n slider.container.setAttribute('data-ready', 'true');\n }\n ;\n function setDetails(isInit = false) {\n const oldDetails = slider.details;\n const newDetails = details(slider);\n slider.details = newDetails;\n if (!isInit && !objectsAreEqual(oldDetails, newDetails)) {\n slider.emit('detailsChanged');\n }\n else if (isInit) {\n slider.emit('detailsChanged');\n }\n }\n ;\n function setSlides() {\n slider.slides = Array.from(slider.container.querySelectorAll(slider.options.slidesSelector));\n }\n function addEventListeners() {\n // changes to DOM\n const observer = new MutationObserver(() => slider.emit('contentsChanged'));\n observer.observe(slider.container, { childList: true });\n // container size changes\n const resizeObserver = new ResizeObserver(() => slider.emit('containerSizeChanged'));\n resizeObserver.observe(slider.container);\n // scroll event with debouncing\n let scrollTimeout;\n let nativeScrollTimeout;\n let programmaticScrollTimeout;\n let scrollLeft = slider.container.scrollLeft;\n let nativeScrollLeft = slider.container.scrollLeft;\n let programmaticScrollLeft = slider.container.scrollLeft;\n let isScrolling = false;\n let isUserScrolling = false;\n let isProgrammaticScrolling = false;\n // all types of scroll\n slider.container.addEventListener('scroll', () => {\n const newScrollLeft = slider.container.scrollLeft;\n if (Math.floor(scrollLeft) !== Math.floor(newScrollLeft)) {\n if (!isScrolling) {\n isScrolling = true;\n slider.emit('scrollStart');\n }\n scrollLeft = newScrollLeft;\n clearTimeout(scrollTimeout);\n scrollTimeout = setTimeout(() => {\n isScrolling = false;\n slider.emit('scrollEnd');\n }, 50);\n slider.emit('scroll');\n }\n // keep up nativeScrolling to take into account scroll-snap\n if (isUserScrolling) {\n nativeScrollHandler();\n }\n });\n // user initted scroll (touchmove, mouse wheel, etc.)\n const nativeScrollHandler = () => {\n const newScrollLeft = slider.container.scrollLeft;\n if (Math.floor(nativeScrollLeft) !== Math.floor(newScrollLeft) && !isProgrammaticScrolling) {\n if (!isUserScrolling) {\n slider.emit('nativeScrollStart');\n isUserScrolling = true;\n }\n slider.emit('nativeScroll');\n nativeScrollLeft = newScrollLeft;\n clearTimeout(nativeScrollTimeout);\n nativeScrollTimeout = setTimeout(() => {\n isUserScrolling = false;\n slider.emit('nativeScrollEnd');\n // update programmaticScrollLeft to match nativeScrollLeft\n // this prevents programmaticScroll triggering with no real change to scrollLeft\n programmaticScrollLeft = nativeScrollLeft;\n }, 50);\n }\n };\n slider.container.addEventListener('touchmove', nativeScrollHandler);\n slider.container.addEventListener('mousewheel', nativeScrollHandler);\n slider.container.addEventListener('wheel', nativeScrollHandler);\n // programmatic scroll (scrollTo, etc.)\n slider.on('programmaticScrollStart', () => {\n isProgrammaticScrolling = true;\n });\n slider.container.addEventListener('scroll', () => {\n const newScrollLeft = slider.container.scrollLeft;\n if (Math.floor(programmaticScrollLeft) !== Math.floor(newScrollLeft) && !isUserScrolling && isProgrammaticScrolling) {\n programmaticScrollLeft = newScrollLeft;\n clearTimeout(programmaticScrollTimeout);\n programmaticScrollTimeout = setTimeout(() => {\n isProgrammaticScrolling = false;\n slider.emit('programmaticScrollEnd');\n // update nativeScrollLeft to match programmaticScrollLeft\n // this prevents nativeScroll triggering with no real change to scrollLeft\n nativeScrollLeft = programmaticScrollLeft;\n }, 50);\n slider.emit('programmaticScroll');\n }\n });\n // Fix issues on scroll snapping not working on programmatic scroll (it's not smooth)\n // by disabling scroll snap if scrolling is programmatic\n slider.on('programmaticScrollStart', () => {\n slider.container.style.scrollSnapType = 'none';\n });\n // restore scroll snap if user scroll starts\n slider.on('nativeScrollStart', () => {\n slider.container.style.scrollSnapType = '';\n });\n // Listen for mouse down and touch start events on the document\n // This handles both mouse clicks and touch interactions\n let wasInteractedWith = false;\n slider.container.addEventListener('mousedown', () => {\n wasInteractedWith = true;\n });\n slider.container.addEventListener('touchstart', () => {\n wasInteractedWith = true;\n }, { passive: true });\n slider.container.addEventListener('focusin', (e) => {\n // move target parents as long as they are not the container\n // but only if focus didn't start from mouse or touch\n if (!wasInteractedWith) {\n let target = e.target;\n while (target.parentElement !== slider.container) {\n if (target.parentElement) {\n target = target.parentElement;\n }\n else {\n break;\n }\n }\n ensureSlideIsInView(target, 'auto');\n }\n wasInteractedWith = false;\n });\n }\n ;\n function setCSSVariables() {\n slider.options.cssVariableContainer.style.setProperty('--slider-container-height', `${slider.details.containerHeight}px`);\n slider.options.cssVariableContainer.style.setProperty('--slider-container-width', `${slider.details.containerWidth}px`);\n slider.options.cssVariableContainer.style.setProperty('--slider-scrollable-width', `${slider.details.scrollableAreaWidth}px`);\n slider.options.cssVariableContainer.style.setProperty('--slider-slides-count', `${slider.details.slideCount}`);\n slider.options.cssVariableContainer.style.setProperty('--slider-x-offset', `${getLeftOffset()}px`);\n if (typeof slider.options.targetWidth === 'function') {\n slider.options.cssVariableContainer.style.setProperty('--slider-container-target-width', `${slider.options.targetWidth(slider)}px`);\n }\n }\n function setDataAttributes() {\n slider.container.setAttribute('data-has-overflow', slider.details.hasOverflow ? 'true' : 'false');\n if (slider.options.rtl) {\n slider.container.setAttribute('dir', 'rtl');\n }\n }\n function ensureSlideIsInView(slide, scrollBehavior = null) {\n const behavior = scrollBehavior || slider.options.scrollBehavior;\n const slideRect = slide.getBoundingClientRect();\n const sliderRect = slider.container.getBoundingClientRect();\n const containerWidth = slider.container.offsetWidth;\n const scrollLeft = slider.container.scrollLeft;\n const slideStart = slideRect.left - sliderRect.left + scrollLeft;\n const slideEnd = slideStart + slideRect.width;\n let scrollTarget = null;\n if (Math.floor(slideStart) < Math.floor(scrollLeft)) {\n scrollTarget = slideStart;\n }\n else if (Math.floor(slideEnd) > Math.floor(scrollLeft) + Math.floor(containerWidth)) {\n scrollTarget = slideEnd - containerWidth;\n }\n else if (Math.floor(slideStart) === 0) {\n scrollTarget = 0;\n }\n else {\n scrollTarget = slideStart;\n }\n if (scrollTarget !== null) {\n setTimeout((scrollTarget) => {\n slider.emit('programmaticScrollStart');\n slider.container.scrollTo({ left: scrollTarget, behavior: behavior });\n }, 50, scrollTarget);\n }\n }\n ;\n function setActiveSlideIdx() {\n const sliderRect = slider.container.getBoundingClientRect();\n const scrollLeft = slider.getScrollLeft();\n const slides = slider.slides;\n let activeSlideIdx = 0;\n let scrolledPastLastSlide = false;\n if (slider.options.rtl) {\n const scrolledDistance = slider.getInclusiveScrollWidth() - scrollLeft - slider.getInclusiveClientWidth();\n const slidePositions = [];\n for (let i = slides.length - 1; i >= 0; i--) {\n const slideRect = slides[i].getBoundingClientRect();\n const slideEnd = Math.abs(slideRect.left) - Math.abs(sliderRect.left) + scrolledDistance;\n slidePositions.push({\n slide: slides[i],\n slideEnd: slideEnd,\n });\n }\n let closestSlide = null;\n let closestDistance = null;\n for (let i = 0; i < slidePositions.length; i++) {\n const distance = Math.abs(slidePositions[i].slideEnd - scrolledDistance);\n if (closestDistance === null || distance < closestDistance) {\n closestDistance = distance;\n closestSlide = slidePositions[i].slide;\n }\n }\n if (closestSlide) {\n activeSlideIdx = slides.indexOf(closestSlide);\n }\n else {\n activeSlideIdx = slides.length - 1;\n }\n }\n else {\n for (let i = 0; i < slides.length; i++) {\n const slideRect = slides[i].getBoundingClientRect();\n const slideStart = slideRect.left - sliderRect.left + scrollLeft + getGapSize();\n if (Math.floor(slideStart) >= Math.floor(scrollLeft)) {\n activeSlideIdx = i;\n break;\n }\n if (i === slides.length - 1) {\n scrolledPastLastSlide = true;\n }\n }\n }\n if (scrolledPastLastSlide) {\n activeSlideIdx = slides.length - 1;\n }\n const oldActiveSlideIdx = slider.activeSlideIdx;\n slider.activeSlideIdx = activeSlideIdx;\n if (oldActiveSlideIdx !== activeSlideIdx) {\n slider.emit('activeSlideChanged');\n }\n }\n function moveToSlide(idx) {\n const slide = slider.slides[idx];\n if (slide) {\n ensureSlideIsInView(slide);\n }\n }\n ;\n function canMoveToSlide(idx) {\n if (idx < 0 || idx >= slider.slides.length) {\n return false;\n }\n if (idx === slider.activeSlideIdx) {\n return false;\n }\n const direction = slider.options.rtl ? (idx < slider.activeSlideIdx ? 'backwards' : 'forwards') : (idx < slider.activeSlideIdx ? 'backwards' : 'forwards');\n // check if the slide is already in view\n const sliderRect = slider.container.getBoundingClientRect();\n const scrollLeft = slider.getScrollLeft();\n const containerWidth = slider.details.containerWidth;\n const hasUpcomingContent = slider.slides.some((s, i) => {\n if (i === slider.activeSlideIdx) {\n return false; // skip the slide we are checking\n }\n const sRect = s.getBoundingClientRect();\n const sStart = sRect.left - sliderRect.left + scrollLeft;\n const sEnd = sStart + sRect.width;\n if (slider.options.rtl) {\n if (scrollLeft === 0 && slider.details.hasOverflow) {\n return true;\n }\n return (direction === 'forwards' && i > slider.activeSlideIdx && Math.floor(sStart) < Math.floor(scrollLeft)) ||\n (direction === 'backwards' && i < slider.activeSlideIdx && Math.floor(sEnd) > Math.floor(scrollLeft + containerWidth));\n }\n else {\n return (direction === 'forwards' && i > slider.activeSlideIdx && Math.floor(sEnd) > Math.floor(scrollLeft + containerWidth)) ||\n (direction === 'backwards' && i < slider.activeSlideIdx && Math.floor(sStart) < Math.floor(scrollLeft));\n }\n });\n return hasUpcomingContent;\n }\n function moveToSlideInDirection(direction) {\n const activeSlideIdx = slider.activeSlideIdx;\n if (direction === 'prev') {\n if (activeSlideIdx > 0) {\n moveToSlide(activeSlideIdx - 1);\n }\n }\n else if (direction === 'next') {\n if (activeSlideIdx < slider.slides.length - 1) {\n moveToSlide(activeSlideIdx + 1);\n }\n }\n }\n function getInclusiveScrollWidth() {\n return slider.container.scrollWidth + getOutermostChildrenEdgeMarginSum(slider.container);\n }\n ;\n function getInclusiveClientWidth() {\n return slider.container.clientWidth + getOutermostChildrenEdgeMarginSum(slider.container);\n }\n function getScrollLeft() {\n return slider.options.rtl ? Math.abs(slider.container.scrollLeft) : slider.container.scrollLeft;\n }\n ;\n function setScrollLeft(value) {\n slider.container.scrollLeft = slider.options.rtl ? -value : value;\n }\n ;\n function getGapSize() {\n let gapSize = 0;\n if (slider.slides.length > 1) {\n const firstSlideRect = slider.slides[0].getBoundingClientRect();\n const secondSlideRect = slider.slides[1].getBoundingClientRect();\n gapSize = slider.options.rtl ? Math.abs(Math.floor(secondSlideRect.right - firstSlideRect.left)) : Math.floor(secondSlideRect.left - firstSlideRect.right);\n }\n return gapSize;\n }\n ;\n function getLeftOffset() {\n let offset = 0;\n const fullWidthOffset = slider.container.getAttribute('data-full-width-offset');\n if (fullWidthOffset) {\n offset = parseInt(fullWidthOffset);\n }\n return Math.floor(offset);\n }\n ;\n function moveToDirection(direction = \"prev\") {\n const scrollStrategy = slider.options.scrollStrategy;\n const scrollLeft = slider.container.scrollLeft;\n const sliderRect = slider.container.getBoundingClientRect();\n const containerWidth = slider.container.offsetWidth;\n let targetScrollPosition = scrollLeft;\n const realDirection = slider.options.rtl ? (direction === 'prev' ? 'next' : 'prev') : direction;\n if (realDirection === 'prev') {\n targetScrollPosition = Math.max(0, scrollLeft - slider.container.offsetWidth);\n }\n else if (realDirection === 'next') {\n targetScrollPosition = Math.min(slider.getInclusiveScrollWidth(), scrollLeft + slider.container.offsetWidth);\n }\n if (scrollStrategy === 'fullSlide') {\n let fullSlideTargetScrollPosition = null;\n // extend targetScrollPosition to include gap\n if (realDirection === 'prev') {\n fullSlideTargetScrollPosition = Math.max(0, targetScrollPosition - getGapSize());\n }\n else {\n fullSlideTargetScrollPosition = Math.min(slider.getInclusiveScrollWidth(), targetScrollPosition + getGapSize());\n }\n if (realDirection === 'next') {\n let partialSlideFound = false;\n for (let slide of slider.slides) {\n const slideRect = slide.getBoundingClientRect();\n const slideStart = slideRect.left - sliderRect.left + scrollLeft;\n const slideEnd = slideStart + slideRect.width;\n if (Math.floor(slideStart) < Math.floor(targetScrollPosition) && Math.floor(slideEnd) > Math.floor(targetScrollPosition)) {\n fullSlideTargetScrollPosition = slideStart;\n partialSlideFound = true;\n break;\n }\n }\n if (!partialSlideFound) {\n fullSlideTargetScrollPosition = Math.min(targetScrollPosition, slider.getInclusiveScrollWidth() - slider.container.offsetWidth);\n }\n if (fullSlideTargetScrollPosition) {\n if (Math.floor(fullSlideTargetScrollPosition) > Math.floor(scrollLeft)) {\n // make sure fullSlideTargetScrollPosition is possible considering the container width\n const maxScrollPosition = Math.floor(slider.getInclusiveScrollWidth()) - Math.floor(containerWidth);\n targetScrollPosition = Math.min(fullSlideTargetScrollPosition, maxScrollPosition);\n }\n else {\n // cannot snap to slide, move one page worth of distance\n targetScrollPosition = Math.min(slider.getInclusiveScrollWidth(), scrollLeft + containerWidth);\n }\n }\n }\n else {\n let partialSlideFound = false;\n for (let slide of slider.slides) {\n const slideRect = slide.getBoundingClientRect();\n const slideStart = slideRect.left - sliderRect.left + scrollLeft;\n const slideEnd = slideStart + slideRect.width;\n if (Math.floor(slideStart) < Math.floor(scrollLeft) && Math.floor(slideEnd) > Math.floor(scrollLeft)) {\n fullSlideTargetScrollPosition = slideEnd - containerWidth;\n partialSlideFound = true;\n break;\n }\n }\n if (!partialSlideFound) {\n fullSlideTargetScrollPosition = Math.max(0, scrollLeft - containerWidth);\n }\n if (fullSlideTargetScrollPosition && Math.floor(fullSlideTargetScrollPosition) < Math.floor(scrollLeft)) {\n targetScrollPosition = fullSlideTargetScrollPosition;\n }\n }\n }\n // add left offset\n const offsettedTargetScrollPosition = targetScrollPosition - getLeftOffset();\n if (Math.floor(offsettedTargetScrollPosition) >= 0) {\n targetScrollPosition = offsettedTargetScrollPosition;\n }\n slider.emit('programmaticScrollStart');\n slider.container.style.scrollBehavior = slider.options.scrollBehavior;\n slider.container.scrollLeft = targetScrollPosition;\n setTimeout(() => slider.container.style.scrollBehavior = '', 50);\n }\n ;\n function snapToClosestSlide(direction = \"prev\") {\n var _a, _b;\n const { slides, options, container } = slider;\n const { rtl, emulateScrollSnapMaxThreshold = 10, scrollBehavior = 'smooth', } = options;\n const isForward = rtl ? direction === 'prev' : direction === 'next';\n const scrollPos = getScrollLeft();\n // Get container rect once (includes any CSS transforms)\n const containerRect = container.getBoundingClientRect();\n const factor = rtl ? -1 : 1;\n // Calculate target area offset if targetWidth is defined\n let targetAreaOffset = 0;\n if (typeof options.targetWidth === 'function') {\n try {\n const targetWidth = options.targetWidth(slider);\n const containerWidth = containerRect.width;\n if (Number.isFinite(targetWidth) && targetWidth > 0 && targetWidth < containerWidth) {\n targetAreaOffset = (containerWidth - targetWidth) / 2;\n }\n }\n catch (error) {\n // ignore errors, use default offset of 0\n }\n }\n // Build slide metadata\n const slideData = [...slides].map(slide => {\n const { width } = slide.getBoundingClientRect();\n const slideRect = slide.getBoundingClientRect();\n // position relative to container's left edge\n const relativeStart = (slideRect.left - containerRect.left) + scrollPos;\n // Adjust trigger point to align with target area start instead of container edge\n const alignmentPoint = relativeStart - targetAreaOffset;\n const triggerPoint = Math.min(alignmentPoint + width / 2, alignmentPoint + emulateScrollSnapMaxThreshold);\n return { start: relativeStart - targetAreaOffset, trigger: triggerPoint };\n });\n // Pick the target start based on drag direction\n let targetStart = null;\n if (isForward) {\n const found = slideData.find(item => scrollPos <= item.trigger);\n targetStart = (_a = found === null || found === void 0 ? void 0 : found.start) !== null && _a !== void 0 ? _a : null;\n }\n else {\n const found = [...slideData].reverse().find(item => scrollPos >= item.trigger);\n targetStart = (_b = found === null || found === void 0 ? void 0 : found.start) !== null && _b !== void 0 ? _b : null;\n }\n if (targetStart == null)\n return;\n // Clamp to zero and apply RTL factor\n const finalLeft = Math.max(0, Math.floor(targetStart)) * factor;\n container.scrollTo({ left: finalLeft, behavior: scrollBehavior });\n }\n function on(name, cb) {\n if (!subs[name]) {\n subs[name] = [];\n }\n subs[name].push(cb);\n }\n ;\n function emit(name) {\n var _a;\n if (subs && subs[name]) {\n subs[name].forEach(cb => {\n cb(slider);\n });\n }\n const optionCallBack = (_a = slider === null || slider === void 0 ? void 0 : slider.options) === null || _a === void 0 ? void 0 : _a[name];\n // Type guard to check if the option callback is a function\n if (typeof optionCallBack === 'function') {\n optionCallBack(slider); // Type assertion here\n }\n }\n ;\n slider = {\n emit,\n moveToDirection,\n canMoveToSlide,\n moveToSlide,\n moveToSlideInDirection,\n snapToClosestSlide,\n getInclusiveScrollWidth,\n getInclusiveClientWidth,\n getLeftOffset,\n getGapSize,\n getScrollLeft,\n setScrollLeft,\n setActiveSlideIdx,\n on,\n options,\n };\n init();\n return slider;\n}\n","import Slider from './slider';\nexport default function OverflowSlider(container, options, plugins) {\n try {\n // check that container HTML element\n if (!(container instanceof Element)) {\n throw new Error(`Container must be HTML element, found ${typeof container}`);\n }\n const defaults = {\n cssVariableContainer: container,\n scrollBehavior: \"smooth\",\n scrollStrategy: \"fullSlide\",\n slidesSelector: \":scope > *\",\n emulateScrollSnap: false,\n emulateScrollSnapMaxThreshold: 64,\n rtl: false,\n };\n const sliderOptions = Object.assign(Object.assign({}, defaults), options);\n // disable smooth scrolling if user prefers reduced motion\n if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n sliderOptions.scrollBehavior = \"auto\";\n }\n return Slider(container, sliderOptions, plugins);\n }\n catch (e) {\n console.error(e);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";function t(e,o=1){const n=`${e}-${o}`;return document.getElementById(n)?t(e,o+1):n}function e(t){if(0===t.children.length)return 0;const e=t.children[0],o=getComputedStyle(e),n=parseFloat(o.marginLeft),l=t.children[t.children.length-1],i=getComputedStyle(l);return n+parseFloat(i.marginRight)}function o(o,n,l){let i,r={};function a(t=!1){const e=i.details,o=function(t){var e;let o,n=!1,l=0,i=0,r=0,a=0,s=0,c=1;return Math.floor(t.getInclusiveScrollWidth())>Math.floor(t.getInclusiveClientWidth())&&(n=!0),l=null!==(e=t.slides.length)&&void 0!==e?e:0,i=t.container.offsetWidth,r=t.container.offsetHeight,a=t.getInclusiveScrollWidth(),s=Math.ceil(a/i),Math.floor(t.getScrollLeft())>=0&&(c=Math.floor(t.getScrollLeft()/i),Math.floor(t.getScrollLeft()+i)===Math.floor(a)&&(c=s-1)),o={hasOverflow:n,slideCount:l,containerWidth:i,containerHeight:r,scrollableAreaWidth:a,amountOfPages:s,currentPage:c},o}(i);i.details=o,t||function(t,e){const o=Object.keys(t),n=Object.keys(e);if(o.length!==n.length)return!1;for(let n of o)if(!Object.prototype.hasOwnProperty.call(e,n)||t[n]!==e[n])return!1;return!0}(e,o)?t&&i.emit("detailsChanged"):i.emit("detailsChanged")}function s(){i.slides=Array.from(i.container.querySelectorAll(i.options.slidesSelector))}function c(){i.options.cssVariableContainer.style.setProperty("--slider-container-height",`${i.details.containerHeight}px`),i.options.cssVariableContainer.style.setProperty("--slider-container-width",`${i.details.containerWidth}px`),i.options.cssVariableContainer.style.setProperty("--slider-scrollable-width",`${i.details.scrollableAreaWidth}px`),i.options.cssVariableContainer.style.setProperty("--slider-slides-count",`${i.details.slideCount}`),i.options.cssVariableContainer.style.setProperty("--slider-x-offset",`${v()}px`),"function"==typeof i.options.targetWidth&&i.options.cssVariableContainer.style.setProperty("--slider-container-target-width",`${i.options.targetWidth(i)}px`)}function d(){i.container.setAttribute("data-has-overflow",i.details.hasOverflow?"true":"false"),i.options.rtl&&i.container.setAttribute("dir","rtl")}function f(t,e=null){const o=e||i.options.scrollBehavior,n=t.getBoundingClientRect(),l=i.container.getBoundingClientRect(),r=i.container.offsetWidth,a=i.container.scrollLeft,s=n.left-l.left+a,c=s+n.width;let d=null;d=Math.floor(s)<Math.floor(a)?s:Math.floor(c)>Math.floor(a)+Math.floor(r)?c-r:0===Math.floor(s)?0:s,null!==d&&setTimeout(t=>{i.emit("programmaticScrollStart"),i.container.scrollTo({left:t,behavior:o})},50,d)}function h(){const t=i.container.getBoundingClientRect(),e=i.getScrollLeft(),o=i.slides;let n=0,l=!1;if(i.options.rtl){const l=i.getInclusiveScrollWidth()-e-i.getInclusiveClientWidth(),r=[];for(let e=o.length-1;e>=0;e--){const n=o[e].getBoundingClientRect(),i=Math.abs(n.left)-Math.abs(t.left)+l;r.push({slide:o[e],slideEnd:i})}let a=null,s=null;for(let t=0;t<r.length;t++){const e=Math.abs(r[t].slideEnd-l);(null===s||e<s)&&(s=e,a=r[t].slide)}n=a?o.indexOf(a):o.length-1}else for(let i=0;i<o.length;i++){const r=o[i].getBoundingClientRect().left-t.left+e+m();if(Math.floor(r)>=Math.floor(e)){n=i;break}i===o.length-1&&(l=!0)}l&&(n=o.length-1);const r=i.activeSlideIdx;i.activeSlideIdx=n,r!==n&&i.emit("activeSlideChanged")}function u(t){const e=i.slides[t];e&&f(e)}function g(){return i.options.rtl?Math.abs(i.container.scrollLeft):i.container.scrollLeft}function m(){let t=0;if(i.slides.length>1){const e=i.slides[0].getBoundingClientRect(),o=i.slides[1].getBoundingClientRect();t=i.options.rtl?Math.abs(Math.floor(o.right-e.left)):Math.floor(o.left-e.right)}return t}function v(){let t=0;const e=i.container.getAttribute("data-full-width-offset");return e&&(t=parseInt(e)),Math.floor(t)}return i={emit:function(t){var e;r&&r[t]&&r[t].forEach(t=>{t(i)});const o=null===(e=null==i?void 0:i.options)||void 0===e?void 0:e[t];"function"==typeof o&&o(i)},moveToDirection:function(t="prev"){const e=i.options.scrollStrategy,o=i.container.scrollLeft,n=i.container.getBoundingClientRect(),l=i.container.offsetWidth;let r=o;const a=i.options.rtl?"prev"===t?"next":"prev":t;if("prev"===a?r=Math.max(0,o-i.container.offsetWidth):"next"===a&&(r=Math.min(i.getInclusiveScrollWidth(),o+i.container.offsetWidth)),"fullSlide"===e){let t=null;if(t="prev"===a?Math.max(0,r-m()):Math.min(i.getInclusiveScrollWidth(),r+m()),"next"===a){let e=!1;for(let l of i.slides){const i=l.getBoundingClientRect(),a=i.left-n.left+o,s=a+i.width;if(Math.floor(a)<Math.floor(r)&&Math.floor(s)>Math.floor(r)){t=a,e=!0;break}}if(e||(t=Math.min(r,i.getInclusiveScrollWidth()-i.container.offsetWidth)),t)if(Math.floor(t)>Math.floor(o)){const e=Math.floor(i.getInclusiveScrollWidth())-Math.floor(l);r=Math.min(t,e)}else r=Math.min(i.getInclusiveScrollWidth(),o+l)}else{let e=!1;for(let r of i.slides){const i=r.getBoundingClientRect(),a=i.left-n.left+o,s=a+i.width;if(Math.floor(a)<Math.floor(o)&&Math.floor(s)>Math.floor(o)){t=s-l,e=!0;break}}e||(t=Math.max(0,o-l)),t&&Math.floor(t)<Math.floor(o)&&(r=t)}}const s=r-v();Math.floor(s)>=0&&(r=s),i.emit("programmaticScrollStart"),i.container.style.scrollBehavior=i.options.scrollBehavior,i.container.scrollLeft=r,setTimeout(()=>i.container.style.scrollBehavior="",50)},canMoveToSlide:function(t){if(t<0||t>=i.slides.length)return!1;if(t===i.activeSlideIdx)return!1;const e=(i.options.rtl,t<i.activeSlideIdx?"backwards":"forwards"),o=i.container.getBoundingClientRect(),n=i.getScrollLeft(),l=i.details.containerWidth;return i.slides.some((t,r)=>{if(r===i.activeSlideIdx)return!1;const a=t.getBoundingClientRect(),s=a.left-o.left+n,c=s+a.width;return i.options.rtl?!(0!==n||!i.details.hasOverflow)||("forwards"===e&&r>i.activeSlideIdx&&Math.floor(s)<Math.floor(n)||"backwards"===e&&r<i.activeSlideIdx&&Math.floor(c)>Math.floor(n+l)):"forwards"===e&&r>i.activeSlideIdx&&Math.floor(c)>Math.floor(n+l)||"backwards"===e&&r<i.activeSlideIdx&&Math.floor(s)<Math.floor(n)})},moveToSlide:u,moveToSlideInDirection:function(t){const e=i.activeSlideIdx;"prev"===t?e>0&&u(e-1):"next"===t&&e<i.slides.length-1&&u(e+1)},snapToClosestSlide:function(t="prev"){var e,o;const{slides:n,options:l,container:r}=i,{rtl:a,emulateScrollSnapMaxThreshold:s=10,scrollBehavior:c="smooth"}=l,d=a?"prev"===t:"next"===t,f=g(),h=r.getBoundingClientRect(),u=a?-1:1;let m=0;if("function"==typeof l.targetWidth)try{const t=l.targetWidth(i),e=h.width;Number.isFinite(t)&&t>0&&t<e&&(m=(e-t)/2)}catch(t){}const v=[...n].map(t=>{const{width:e}=t.getBoundingClientRect(),o=t.getBoundingClientRect().left-h.left+f,n=o-m,l=Math.min(n+e/2,n+s);return{start:o-m,trigger:l}});let p=null;if(d){const t=v.find(t=>f<=t.trigger);p=null!==(e=null==t?void 0:t.start)&&void 0!==e?e:null}else{const t=[...v].reverse().find(t=>f>=t.trigger);p=null!==(o=null==t?void 0:t.start)&&void 0!==o?o:null}if(null==p)return;const M=Math.max(0,Math.floor(p))*u;r.scrollTo({left:M,behavior:c})},getInclusiveScrollWidth:function(){return i.container.scrollWidth+e(i.container)},getInclusiveClientWidth:function(){return i.container.clientWidth+e(i.container)},getScrollLeft:g,setScrollLeft:function(t){i.container.scrollLeft=i.options.rtl?-t:t},setActiveSlideIdx:h,on:function(t,e){r[t]||(r[t]=[]),r[t].push(e)},options:n},function(){i.container=o;let e=o.getAttribute("id");null===e&&(e=t("overflow-slider"),o.setAttribute("id",e)),s(),i.slides.forEach(t=>{t.style.transition="none"}),a(!0),h(),i.on("contentsChanged",()=>{s(),a(),h()}),i.on("containerSizeChanged",()=>a());let n=0;if(i.on("scroll",()=>{n&&window.cancelAnimationFrame(n),n=window.requestAnimationFrame(()=>{a(),h()})}),function(){new MutationObserver(()=>i.emit("contentsChanged")).observe(i.container,{childList:!0});let t,e,o;new ResizeObserver(()=>i.emit("containerSizeChanged")).observe(i.container);let n=i.container.scrollLeft,l=i.container.scrollLeft,r=i.container.scrollLeft,a=!1,s=!1,c=!1;i.container.addEventListener("scroll",()=>{const e=i.container.scrollLeft;Math.floor(n)!==Math.floor(e)&&(a||(a=!0,i.emit("scrollStart")),n=e,clearTimeout(t),t=setTimeout(()=>{a=!1,i.emit("scrollEnd")},50),i.emit("scroll")),s&&d()});const d=()=>{const t=i.container.scrollLeft;Math.floor(l)===Math.floor(t)||c||(s||(i.emit("nativeScrollStart"),s=!0),i.emit("nativeScroll"),l=t,clearTimeout(e),e=setTimeout(()=>{s=!1,i.emit("nativeScrollEnd"),r=l},50))};i.container.addEventListener("touchmove",d),i.container.addEventListener("mousewheel",d),i.container.addEventListener("wheel",d),i.on("programmaticScrollStart",()=>{c=!0}),i.container.addEventListener("scroll",()=>{const t=i.container.scrollLeft;Math.floor(r)!==Math.floor(t)&&!s&&c&&(r=t,clearTimeout(o),o=setTimeout(()=>{c=!1,i.emit("programmaticScrollEnd"),l=r},50),i.emit("programmaticScroll"))}),i.on("programmaticScrollStart",()=>{i.container.style.scrollSnapType="none"}),i.on("nativeScrollStart",()=>{i.container.style.scrollSnapType=""});let h=!1;i.container.addEventListener("mousedown",()=>{h=!0}),i.container.addEventListener("touchstart",()=>{h=!0},{passive:!0}),i.container.addEventListener("focusin",t=>{if(!h){let e=t.target;for(;e.parentElement!==i.container&&e.parentElement;)e=e.parentElement;f(e,"auto")}h=!1})}(),d(),c(),l){for(const t of l)t(i);a(),h(),c(),i.emit("pluginsLoaded")}i.on("detailsChanged",()=>{d(),c()}),i.emit("created"),i.slides.forEach(t=>{t.style.removeProperty("transition")}),i.container.setAttribute("data-ready","true")}(),i}exports.OverflowSlider=function(t,e,n){try{if(!(t instanceof Element))throw new Error("Container must be HTML element, found "+typeof t);const l={cssVariableContainer:t,scrollBehavior:"smooth",scrollStrategy:"fullSlide",slidesSelector:":scope > *",emulateScrollSnap:!1,emulateScrollSnapMaxThreshold:64,rtl:!1},i=Object.assign(Object.assign({},l),e);return window.matchMedia("(prefers-reduced-motion: reduce)").matches&&(i.scrollBehavior="auto"),o(t,i,n)}catch(t){console.error(t)}};
1
+ "use strict";function t(e,o=1){const n=`${e}-${o}`;return document.getElementById(n)?t(e,o+1):n}function e(t){if(0===t.children.length)return 0;const e=t.children[0],o=getComputedStyle(e),n=parseFloat(o.marginLeft),l=t.children[t.children.length-1],i=getComputedStyle(l);return n+parseFloat(i.marginRight)}function o(o,n,l){let i,r={};function a(t=!1){const e=i.details,o=function(t){var e;let o,n=!1,l=0,i=0,r=0,a=0,s=0,c=0;if(Math.floor(t.getInclusiveScrollWidth())>Math.floor(t.getInclusiveClientWidth())&&(n=!0),l=null!==(e=t.slides.length)&&void 0!==e?e:0,i=t.container.offsetWidth,r=t.container.offsetHeight,a=t.getInclusiveScrollWidth(),s=Math.ceil(a/i),Math.floor(t.getScrollLeft())>=0){c=Math.floor(t.getScrollLeft()/i);const e=a-i-2*t.getLeftOffset();t.getScrollLeft()>=e-1&&(c=s-1)}return o={hasOverflow:n,slideCount:l,containerWidth:i,containerHeight:r,scrollableAreaWidth:a,amountOfPages:s,currentPage:c},o}(i);i.details=o,t||function(t,e){const o=Object.keys(t),n=Object.keys(e);if(o.length!==n.length)return!1;for(let n of o)if(!Object.prototype.hasOwnProperty.call(e,n)||t[n]!==e[n])return!1;return!0}(e,o)?t&&i.emit("detailsChanged"):i.emit("detailsChanged")}function s(){i.slides=Array.from(i.container.querySelectorAll(i.options.slidesSelector))}function c(){i.options.cssVariableContainer.style.setProperty("--slider-container-height",`${i.details.containerHeight}px`),i.options.cssVariableContainer.style.setProperty("--slider-container-width",`${i.details.containerWidth}px`),i.options.cssVariableContainer.style.setProperty("--slider-scrollable-width",`${i.details.scrollableAreaWidth}px`),i.options.cssVariableContainer.style.setProperty("--slider-slides-count",`${i.details.slideCount}`),i.options.cssVariableContainer.style.setProperty("--slider-x-offset",`${v()}px`),"function"==typeof i.options.targetWidth&&i.options.cssVariableContainer.style.setProperty("--slider-container-target-width",`${i.options.targetWidth(i)}px`)}function d(){i.container.setAttribute("data-has-overflow",i.details.hasOverflow?"true":"false"),i.options.rtl&&i.container.setAttribute("dir","rtl")}function f(t,e=null){const o=e||i.options.scrollBehavior,n=t.getBoundingClientRect(),l=i.container.getBoundingClientRect(),r=i.container.offsetWidth,a=i.container.scrollLeft,s=n.left-l.left+a,c=s+n.width;let d=null;d=Math.floor(s)<Math.floor(a)?s:Math.floor(c)>Math.floor(a)+Math.floor(r)?c-r:0===Math.floor(s)?0:s,null!==d&&setTimeout(t=>{i.emit("programmaticScrollStart"),i.container.scrollTo({left:t,behavior:o})},50,d)}function h(){const t=i.container.getBoundingClientRect(),e=i.getScrollLeft(),o=i.slides;let n=0,l=!1;if(i.options.rtl){const l=i.getInclusiveScrollWidth()-e-i.getInclusiveClientWidth(),r=[];for(let e=o.length-1;e>=0;e--){const n=o[e].getBoundingClientRect(),i=Math.abs(n.left)-Math.abs(t.left)+l;r.push({slide:o[e],slideEnd:i})}let a=null,s=null;for(let t=0;t<r.length;t++){const e=Math.abs(r[t].slideEnd-l);(null===s||e<s)&&(s=e,a=r[t].slide)}n=a?o.indexOf(a):o.length-1}else for(let i=0;i<o.length;i++){const r=o[i].getBoundingClientRect().left-t.left+e+m();if(Math.floor(r)>=Math.floor(e)){n=i;break}i===o.length-1&&(l=!0)}l&&(n=o.length-1);const r=i.activeSlideIdx;i.activeSlideIdx=n,r!==n&&i.emit("activeSlideChanged")}function u(t){const e=i.slides[t];e&&f(e)}function g(){return i.options.rtl?Math.abs(i.container.scrollLeft):i.container.scrollLeft}function m(){let t=0;if(i.slides.length>1){const e=i.slides[0].getBoundingClientRect(),o=i.slides[1].getBoundingClientRect();t=i.options.rtl?Math.abs(Math.floor(o.right-e.left)):Math.floor(o.left-e.right)}return t}function v(){let t=0;const e=i.container.getAttribute("data-full-width-offset");return e&&(t=parseInt(e)),Math.floor(t)}return i={emit:function(t){var e;r&&r[t]&&r[t].forEach(t=>{t(i)});const o=null===(e=null==i?void 0:i.options)||void 0===e?void 0:e[t];"function"==typeof o&&o(i)},moveToDirection:function(t="prev"){const e=i.options.scrollStrategy,o=i.container.scrollLeft,n=i.container.getBoundingClientRect(),l=i.container.offsetWidth;let r=o;const a=i.options.rtl?"prev"===t?"next":"prev":t;if("prev"===a?r=Math.max(0,o-i.container.offsetWidth):"next"===a&&(r=Math.min(i.getInclusiveScrollWidth(),o+i.container.offsetWidth)),"fullSlide"===e){let t=null;if(t="prev"===a?Math.max(0,r-m()):Math.min(i.getInclusiveScrollWidth(),r+m()),"next"===a){let e=!1;for(let l of i.slides){const i=l.getBoundingClientRect(),a=i.left-n.left+o,s=a+i.width;if(Math.floor(a)<Math.floor(r)&&Math.floor(s)>Math.floor(r)){t=a,e=!0;break}}if(e||(t=Math.min(r,i.getInclusiveScrollWidth()-i.container.offsetWidth)),t)if(Math.floor(t)>Math.floor(o)){const e=Math.floor(i.getInclusiveScrollWidth())-Math.floor(l);r=Math.min(t,e)}else r=Math.min(i.getInclusiveScrollWidth(),o+l)}else{let e=!1;for(let r of i.slides){const i=r.getBoundingClientRect(),a=i.left-n.left+o,s=a+i.width;if(Math.floor(a)<Math.floor(o)&&Math.floor(s)>Math.floor(o)){t=s-l,e=!0;break}}e||(t=Math.max(0,o-l)),t&&Math.floor(t)<Math.floor(o)&&(r=t)}}const s=r-v();Math.floor(s)>=0&&(r=s),i.emit("programmaticScrollStart"),i.container.style.scrollBehavior=i.options.scrollBehavior,i.container.scrollLeft=r,setTimeout(()=>i.container.style.scrollBehavior="",50)},canMoveToSlide:function(t){if(t<0||t>=i.slides.length)return!1;if(t===i.activeSlideIdx)return!1;const e=(i.options.rtl,t<i.activeSlideIdx?"backwards":"forwards"),o=i.container.getBoundingClientRect(),n=i.getScrollLeft(),l=i.details.containerWidth;return i.slides.some((t,r)=>{if(r===i.activeSlideIdx)return!1;const a=t.getBoundingClientRect(),s=a.left-o.left+n,c=s+a.width;return i.options.rtl?!(0!==n||!i.details.hasOverflow)||("forwards"===e&&r>i.activeSlideIdx&&Math.floor(s)<Math.floor(n)||"backwards"===e&&r<i.activeSlideIdx&&Math.floor(c)>Math.floor(n+l)):"forwards"===e&&r>i.activeSlideIdx&&Math.floor(c)>Math.floor(n+l)||"backwards"===e&&r<i.activeSlideIdx&&Math.floor(s)<Math.floor(n)})},moveToSlide:u,moveToSlideInDirection:function(t){const e=i.activeSlideIdx;"prev"===t?e>0&&u(e-1):"next"===t&&e<i.slides.length-1&&u(e+1)},snapToClosestSlide:function(t="prev"){var e,o;const{slides:n,options:l,container:r}=i,{rtl:a,emulateScrollSnapMaxThreshold:s=10,scrollBehavior:c="smooth"}=l,d=a?"prev"===t:"next"===t,f=g(),h=r.getBoundingClientRect(),u=a?-1:1;let m=0;if("function"==typeof l.targetWidth)try{const t=l.targetWidth(i),e=h.width;Number.isFinite(t)&&t>0&&t<e&&(m=(e-t)/2)}catch(t){}const v=[...n].map(t=>{const{width:e}=t.getBoundingClientRect(),o=t.getBoundingClientRect().left-h.left+f,n=o-m,l=Math.min(n+e/2,n+s);return{start:o-m,trigger:l}});let p=null;if(d){const t=v.find(t=>f<=t.trigger);p=null!==(e=null==t?void 0:t.start)&&void 0!==e?e:null}else{const t=[...v].reverse().find(t=>f>=t.trigger);p=null!==(o=null==t?void 0:t.start)&&void 0!==o?o:null}if(null==p)return;const S=Math.max(0,Math.floor(p))*u;r.scrollTo({left:S,behavior:c})},getInclusiveScrollWidth:function(){return i.container.scrollWidth+e(i.container)},getInclusiveClientWidth:function(){return i.container.clientWidth+e(i.container)},getLeftOffset:v,getGapSize:m,getScrollLeft:g,setScrollLeft:function(t){i.container.scrollLeft=i.options.rtl?-t:t},setActiveSlideIdx:h,on:function(t,e){r[t]||(r[t]=[]),r[t].push(e)},options:n},function(){i.container=o;let e=o.getAttribute("id");null===e&&(e=t("overflow-slider"),o.setAttribute("id",e)),s(),i.slides.forEach(t=>{t.style.transition="none"}),a(!0),h(),i.on("contentsChanged",()=>{s(),a(),h()}),i.on("containerSizeChanged",()=>a());let n=0;if(i.on("scroll",()=>{n&&window.cancelAnimationFrame(n),n=window.requestAnimationFrame(()=>{a(),h()})}),function(){new MutationObserver(()=>i.emit("contentsChanged")).observe(i.container,{childList:!0});let t,e,o;new ResizeObserver(()=>i.emit("containerSizeChanged")).observe(i.container);let n=i.container.scrollLeft,l=i.container.scrollLeft,r=i.container.scrollLeft,a=!1,s=!1,c=!1;i.container.addEventListener("scroll",()=>{const e=i.container.scrollLeft;Math.floor(n)!==Math.floor(e)&&(a||(a=!0,i.emit("scrollStart")),n=e,clearTimeout(t),t=setTimeout(()=>{a=!1,i.emit("scrollEnd")},50),i.emit("scroll")),s&&d()});const d=()=>{const t=i.container.scrollLeft;Math.floor(l)===Math.floor(t)||c||(s||(i.emit("nativeScrollStart"),s=!0),i.emit("nativeScroll"),l=t,clearTimeout(e),e=setTimeout(()=>{s=!1,i.emit("nativeScrollEnd"),r=l},50))};i.container.addEventListener("touchmove",d),i.container.addEventListener("mousewheel",d),i.container.addEventListener("wheel",d),i.on("programmaticScrollStart",()=>{c=!0}),i.container.addEventListener("scroll",()=>{const t=i.container.scrollLeft;Math.floor(r)!==Math.floor(t)&&!s&&c&&(r=t,clearTimeout(o),o=setTimeout(()=>{c=!1,i.emit("programmaticScrollEnd"),l=r},50),i.emit("programmaticScroll"))}),i.on("programmaticScrollStart",()=>{i.container.style.scrollSnapType="none"}),i.on("nativeScrollStart",()=>{i.container.style.scrollSnapType=""});let h=!1;i.container.addEventListener("mousedown",()=>{h=!0}),i.container.addEventListener("touchstart",()=>{h=!0},{passive:!0}),i.container.addEventListener("focusin",t=>{if(!h){let e=t.target;for(;e.parentElement!==i.container&&e.parentElement;)e=e.parentElement;f(e,"auto")}h=!1})}(),d(),c(),l){for(const t of l)t(i);a(),h(),c(),i.emit("pluginsLoaded")}i.on("detailsChanged",()=>{d(),c()}),i.emit("created"),i.slides.forEach(t=>{t.style.removeProperty("transition")}),i.container.setAttribute("data-ready","true")}(),i}exports.OverflowSlider=function(t,e,n){try{if(!(t instanceof Element))throw new Error("Container must be HTML element, found "+typeof t);const l={cssVariableContainer:t,scrollBehavior:"smooth",scrollStrategy:"fullSlide",slidesSelector:":scope > *",emulateScrollSnap:!1,emulateScrollSnapMaxThreshold:64,rtl:!1},i=Object.assign(Object.assign({},l),e);return window.matchMedia("(prefers-reduced-motion: reduce)").matches&&(i.scrollBehavior="auto"),o(t,i,n)}catch(t){console.error(t)}};
2
2
  //# sourceMappingURL=index.min.js.map