ngx-edge-slider 2.2.2 → 2.2.4
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/assets/ngx-simple-slider.css +1 -0
- package/assets/ngx-simple-slider.css.map +1 -0
- package/assets/ngx-simple-slider.min.css +1 -0
- package/assets/ngx-simple-slider.min.css.map +1 -0
- package/esm2022/WingmanColt-ngx-edge-slider.mjs +5 -0
- package/fesm2022/WingmanColt-ngx-edge-slider.mjs +824 -0
- package/fesm2022/WingmanColt-ngx-edge-slider.mjs.map +1 -0
- package/package.json +5 -2
- package/README.md +0 -653
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WingmanColt-ngx-edge-slider.mjs","sources":["../../../projects/ngx-edge-slider/src/lib/models/slider-config.model.ts","../../../projects/ngx-edge-slider/src/lib/models/slider-state.model.ts","../../../projects/ngx-edge-slider/src/lib/store/slider-store.service.ts","../../../projects/ngx-edge-slider/src/lib/engine/slider-engine.service.ts","../../../projects/ngx-edge-slider/src/lib/plugins/autoplay/autoplay.plugin.ts","../../../projects/ngx-edge-slider/src/lib/plugins/draggable/draggable.plugin.ts","../../../projects/ngx-edge-slider/src/lib/plugins/navigation/navigation.plugin.ts","../../../projects/ngx-edge-slider/src/lib/plugins/pagination/pagination.plugin.ts","../../../projects/ngx-edge-slider/src/lib/component/simple-slider.component.ts","../../../projects/ngx-edge-slider/src/lib/component/simple-slider.component.html","../../../projects/ngx-edge-slider/src/lib/ngx-edge-slider.module.ts","../../../projects/ngx-edge-slider/src/lib/safe-url.pipe.ts","../../../projects/ngx-edge-slider/src/public-api.ts","../../../projects/ngx-edge-slider/src/WingmanColt-ngx-edge-slider.ts"],"sourcesContent":["export interface AutoplayPluginConfig {\r\n delay?: number;\r\n}\r\nexport interface SliderPluginConfig {\r\n draggable?: boolean;\r\n autoplay?: { delay?: number };\r\n navigation?: boolean;\r\n pagination?: boolean;\r\n}\r\nexport interface SliderConfig {\r\n slides: any[];\r\n slidesPerView: number;\r\n slidesToSlide?: number;\r\n loop?: 0 | 1 | 2;\r\n vertical?: boolean;\r\n changeToClickedSlide?: boolean;\r\n isThumbs?: boolean;\r\n\r\n /** NEW: gap between slides in px */\r\n gap?: number;\r\n\r\n breakpoints?: {\r\n mobile?: Partial<SliderConfig>;\r\n tablet?: Partial<SliderConfig>;\r\n desktop?: Partial<SliderConfig>;\r\n };\r\n\r\n plugins?: SliderPluginConfig;\r\n\r\n showOn?: {\r\n mobile?: boolean;\r\n tablet?: boolean;\r\n desktop?: boolean;\r\n };\r\n}\r\n\r\nexport const DEFAULT_CONFIG: SliderConfig = {\r\n slides: [],\r\n slidesPerView: 1,\r\n slidesToSlide: 1,\r\n loop: 0,\r\n vertical: false,\r\n changeToClickedSlide: false,\r\n isThumbs: false,\r\n plugins: {\r\n draggable: false,\r\n pagination: false,\r\n navigation: false,\r\n autoplay: undefined,\r\n },\r\n gap: 0,\r\n\r\n showOn: { mobile: true, tablet: true, desktop: true },\r\n};\r\n","export interface SliderViewState {\r\n currentSlide: number;\r\n selectedSlide: number;\r\n\r\n slidesPerView: number;\r\n visibleSlides: any[];\r\n\r\n gap?: number;\r\n\r\n maxStartIndex?: number;\r\n canPrev?: boolean;\r\n canNext?: boolean;\r\n\r\n pager?: {\r\n currentPage: number;\r\n totalPages: number;\r\n visibleDots: number[];\r\n activeDotIndex: number;\r\n } | null;\r\n\r\n translate?: string;\r\n transition?: string;\r\n\r\n isAnimating?: boolean;\r\n isVisible?: boolean;\r\n isDragging?: boolean;\r\n}\r\n\r\nexport const INITIAL_SLIDER_STATE: SliderViewState = {\r\n currentSlide: 0,\r\n selectedSlide: -1,\r\n\r\n slidesPerView: 1,\r\n visibleSlides: [],\r\n\r\n gap: 0,\r\n maxStartIndex: 0,\r\n canPrev: false,\r\n canNext: false,\r\n\r\n translate: \"translateX(0px)\",\r\n transition: \"transform 300ms ease\",\r\n pager: null,\r\n\r\n isAnimating: false,\r\n isVisible: false,\r\n isDragging: false,\r\n};\r\n","import { Injectable } from \"@angular/core\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\nimport { INITIAL_SLIDER_STATE, SliderViewState } from \"../models/slider-state.model\";\r\n\r\n@Injectable()\r\nexport class SliderStore {\r\n private readonly state$ = new BehaviorSubject<SliderViewState>({\r\n currentSlide: 0,\r\n selectedSlide: -1,\r\n\r\n slidesPerView: 1,\r\n visibleSlides: [],\r\n\r\n translate: \"translateX(0)\",\r\n transition: \"transform 300ms ease\",\r\n pager: null,\r\n isVisible: true,\r\n\r\n isAnimating: false,\r\n isDragging: false,\r\n });\r\n readonly view$ = this.state$.asObservable();\r\n\r\n get snapshot() {\r\n return this.state$.value;\r\n }\r\n\r\n update(patch: Partial<SliderViewState>) {\r\n this.state$.next({ ...this.snapshot, ...patch });\r\n }\r\n\r\n reset() {\r\n this.state$.next(INITIAL_SLIDER_STATE);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { fromEvent, merge, Subject, auditTime, takeUntil } from \"rxjs\";\r\nimport { SliderConfig, DEFAULT_CONFIG } from \"../models/slider-config.model\";\r\nimport { SliderViewState } from \"../models/slider-state.model\";\r\nimport { SliderPlugin } from \"../plugins/slider-plugin\";\r\nimport { SliderStore } from \"../store/slider-store.service\";\r\n\r\n@Injectable()\r\nexport class SliderEngine {\r\n private config!: SliderConfig;\r\n private plugins: SliderPlugin[] = [];\r\n private syncThumbsEngine?: SliderEngine;\r\n\r\n // RX lifecycle\r\n private destroy$ = new Subject<void>();\r\n\r\n // Container-based breakpoints\r\n private containerEl?: HTMLElement;\r\n private ro?: ResizeObserver;\r\n\r\n private measuredSlideSizePx?: number;\r\n\r\n constructor(private store: SliderStore) {}\r\n\r\n /* ---------------- Public API ---------------- */\r\n\r\n init(config: SliderConfig, plugins: SliderPlugin[] = []) {\r\n this.config = { ...DEFAULT_CONFIG, ...config, plugins: { ...(config.plugins ?? {}) } };\r\n this.plugins = plugins;\r\n\r\n this.plugins.forEach((p) => p.init?.(this));\r\n\r\n this.setupViewportSignals();\r\n this.applyBreakpoint();\r\n this.clampIndicesAfterLayoutChange();\r\n this.recalculate();\r\n }\r\n\r\n /** Call this from the component once you have the slider host element */\r\n attachContainer(el: HTMLElement) {\r\n this.containerEl = el;\r\n\r\n // Observe container size changes (robust in grids/sidebars/tabs)\r\n this.ro?.disconnect();\r\n this.ro = new ResizeObserver(() => {\r\n // We reuse the same debounced layout handler\r\n this.onLayoutSignal();\r\n });\r\n this.ro.observe(el);\r\n\r\n this.measureSlideSize();\r\n // Apply immediately based on real container width\r\n this.onLayoutSignal();\r\n }\r\n private measureSlideSize() {\r\n if (!this.containerEl) return;\r\n const firstSlide = this.containerEl.querySelector<HTMLElement>(\".slide\");\r\n if (!firstSlide) return;\r\n const rect = firstSlide.getBoundingClientRect();\r\n if (rect.width > 0) this.measuredSlideSizePx = rect.width;\r\n }\r\n destroy() {\r\n // Stop Rx streams\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n\r\n // Disconnect ResizeObserver\r\n this.ro?.disconnect();\r\n this.ro = undefined;\r\n this.containerEl = undefined;\r\n\r\n // Plugin cleanup\r\n this.plugins.forEach((p) => p.destroy?.());\r\n this.plugins = [];\r\n\r\n // Reset store\r\n this.store.reset();\r\n }\r\n\r\n next() {\r\n this.goTo(this.store.snapshot.currentSlide + this.slideStep());\r\n this.plugins.forEach((p) => p.onNext?.());\r\n }\r\n\r\n previous() {\r\n this.goTo(this.store.snapshot.currentSlide - this.slideStep());\r\n this.plugins.forEach((p) => p.onPrevious?.());\r\n }\r\n public getContainerEl(): HTMLElement | undefined {\r\n return this.containerEl;\r\n }\r\n selectSlide(index: number) {\r\n const slidesPerView = this.store.snapshot.slidesPerView;\r\n\r\n // 1️⃣ Mark selected\r\n this.store.update({ selectedSlide: index });\r\n\r\n // 2️⃣ Calculate page start\r\n let pageStart = Math.floor(index / slidesPerView) * slidesPerView;\r\n\r\n // 3️⃣ Clamp to maxStartIndex\r\n pageStart = Math.min(pageStart, this.maxStartIndex);\r\n\r\n // 4️⃣ If synced with thumbs, also clamp to their max index\r\n if (this.syncThumbsEngine) {\r\n const thumbMaxIndex = this.syncThumbsEngine.getMaxStartIndex();\r\n pageStart = Math.min(pageStart, thumbMaxIndex);\r\n }\r\n\r\n // 5️⃣ Move main slider\r\n if (pageStart !== this.store.snapshot.currentSlide) {\r\n this.goToSlide(pageStart);\r\n }\r\n\r\n // 6️⃣ Notify plugins\r\n this.plugins.forEach((p) => p.onSlideClick?.(index));\r\n }\r\n\r\n /* ---------------- Drag ---------------- */\r\n\r\n handleDragStart(event: PointerEvent) {\r\n this.store.update({ isDragging: true });\r\n this.plugins.forEach((p) => p.onDragStart?.(event));\r\n }\r\n handleDragMove(event: PointerEvent) {\r\n this.plugins.forEach((p) => p.onDragMove?.(event));\r\n }\r\n handleDragEnd() {\r\n this.store.update({ isDragging: false });\r\n this.plugins.forEach((p) => p.onDragEnd?.());\r\n }\r\n public goTo(index: number) {\r\n this.goToSlide(index); // reuse your existing private method\r\n }\r\n /* ---------------- Internals ---------------- */\r\n\r\n private goToSlide(index: number) {\r\n const clamped = Math.max(0, Math.min(index, this.maxStartIndex));\r\n // console.log(\"[Engine] goToSlide index:\", index, \"clamped:\", clamped);\r\n\r\n this.store.update({ currentSlide: clamped });\r\n this.recalculate();\r\n\r\n // NOTE: calling onSlideClick here is a bit semantically odd (since it’s not always a click),\r\n // but I preserved your behavior.\r\n this.plugins.forEach((p) => p.onSlideClick?.(index));\r\n }\r\n\r\n public recalculate() {\r\n if (this.store.snapshot.isDragging) return; // skip during drag\r\n const slides = this.config.slides ?? [];\r\n const maxStartIndex = this.getMaxStartIndex();\r\n const current = this.store.snapshot.currentSlide;\r\n\r\n this.store.update({\r\n visibleSlides: slides,\r\n translate: this.translate(current),\r\n pager: this.buildPager(),\r\n maxStartIndex,\r\n canPrev: current > 0,\r\n canNext: current < maxStartIndex,\r\n });\r\n }\r\n\r\n private translate(index: number): string {\r\n const axis = this.config.vertical ? \"Y\" : \"X\";\r\n\r\n const containerSize = this.containerEl\r\n ? this.config.vertical\r\n ? this.containerEl.clientHeight\r\n : this.containerEl.clientWidth\r\n : this.config.vertical\r\n ? window.innerHeight\r\n : window.innerWidth;\r\n\r\n const gap = this.store.snapshot.gap ?? 0;\r\n\r\n const spv = this.store.snapshot.slidesPerView;\r\n const slideSize =\r\n this.config.isThumbs && this.measuredSlideSizePx\r\n ? this.measuredSlideSizePx\r\n : spv > 0\r\n ? (containerSize - gap * (spv - 1)) / spv\r\n : containerSize;\r\n\r\n // move by \"pageStart * (slideSize + gap)\"\r\n const offset = index * (slideSize + gap);\r\n\r\n return `translate${axis}(-${offset}px)`;\r\n }\r\n\r\n /** Debounced layout signals for resize/orientation/container changes */\r\n private setupViewportSignals() {\r\n // If you want \"only after resizing stops\", replace auditTime with debounceTime(120)\r\n const resize$ = fromEvent(window, \"resize\", { passive: true } as any);\r\n const orientation$ = fromEvent(window, \"orientationchange\", { passive: true } as any);\r\n\r\n merge(resize$, orientation$)\r\n .pipe(\r\n auditTime(80), // good compromise: responsive without over-recalc\r\n takeUntil(this.destroy$),\r\n )\r\n .subscribe(() => this.onLayoutSignal());\r\n }\r\n\r\n private onLayoutSignal() {\r\n const beforeSlidesPerView = this.store.snapshot.slidesPerView;\r\n const beforeVisible = this.store.snapshot.isVisible;\r\n\r\n this.applyBreakpoint();\r\n\r\n const afterSlidesPerView = this.store.snapshot.slidesPerView;\r\n const afterVisible = this.store.snapshot.isVisible;\r\n\r\n if (beforeSlidesPerView !== afterSlidesPerView || beforeVisible !== afterVisible) {\r\n this.clampIndicesAfterLayoutChange();\r\n }\r\n\r\n this.measureSlideSize();\r\n\r\n this.recalculate();\r\n }\r\n\r\n private getBreakpointWidth(): number {\r\n if (this.containerEl) {\r\n // Prefer clientWidth (layout), fallback to rect width\r\n return this.containerEl.clientWidth || this.containerEl.getBoundingClientRect().width || window.innerWidth;\r\n }\r\n return window.innerWidth;\r\n }\r\n\r\n private applyBreakpoint() {\r\n const width = this.getBreakpointWidth();\r\n const bp = this.config.breakpoints;\r\n\r\n let override: Partial<SliderConfig> | undefined;\r\n let device: \"mobile\" | \"tablet\" | \"desktop\" = \"desktop\";\r\n\r\n if (width < 768) {\r\n override = bp?.mobile;\r\n device = \"mobile\";\r\n } else if (width < 1024) {\r\n override = bp?.tablet;\r\n device = \"tablet\";\r\n } else {\r\n override = bp?.desktop;\r\n device = \"desktop\";\r\n }\r\n\r\n // Merge overrides\r\n this.config = { ...this.config, ...override };\r\n\r\n this.store.update({\r\n slidesPerView: this.config.slidesPerView,\r\n gap: this.config.gap ?? 0, // ✅ NEW\r\n isVisible: this.config.showOn?.[device] ?? true,\r\n });\r\n }\r\n\r\n private clampIndicesAfterLayoutChange() {\r\n const max = this.getMaxStartIndex();\r\n\r\n const current = this.store.snapshot.currentSlide;\r\n const selected = this.store.snapshot.selectedSlide;\r\n\r\n const clampedCurrent = Math.max(0, Math.min(current, max));\r\n const clampedSelected = selected === -1 ? -1 : Math.max(0, Math.min(selected, (this.config.slides?.length ?? 0) - 1));\r\n\r\n this.store.update({\r\n currentSlide: clampedCurrent,\r\n selectedSlide: clampedSelected,\r\n });\r\n }\r\n\r\n private buildPager() {\r\n const totalSlides = this.config.slides.length;\r\n const currentSlide = this.store.snapshot.selectedSlide !== -1 ? this.store.snapshot.selectedSlide : this.store.snapshot.currentSlide;\r\n\r\n const maxVisibleDots = 5;\r\n\r\n let start = Math.max(0, currentSlide - Math.floor(maxVisibleDots / 2));\r\n let end = start + maxVisibleDots;\r\n\r\n if (end > totalSlides) {\r\n end = totalSlides;\r\n start = Math.max(0, end - maxVisibleDots);\r\n }\r\n\r\n const visibleDots = Array.from({ length: end - start }, (_, i) => start + i);\r\n const activeDotIndex = visibleDots.indexOf(currentSlide);\r\n\r\n return {\r\n currentPage: currentSlide,\r\n totalPages: totalSlides,\r\n visibleDots,\r\n activeDotIndex,\r\n };\r\n }\r\n\r\n private slideStep() {\r\n return this.store.snapshot.slidesPerView;\r\n }\r\n\r\n private get maxStartIndex() {\r\n const total = this.config.slides?.length ?? 0;\r\n return Math.max(0, total - this.store.snapshot.slidesPerView);\r\n }\r\n getMaxStartIndex() {\r\n const total = this.config.slides?.length ?? 0;\r\n const spv = this.store.snapshot.slidesPerView || 1;\r\n return Math.max(0, total - spv);\r\n }\r\n /* -------- Plugin-safe API -------- */\r\n\r\n getState() {\r\n return this.store.snapshot;\r\n }\r\n\r\n getStateObservable() {\r\n return this.store.view$;\r\n }\r\n\r\n setState(patch: Partial<SliderViewState>) {\r\n this.store.update(patch);\r\n }\r\n\r\n getConfig() {\r\n return this.config;\r\n }\r\n\r\n /** Link this slider to thumbs */\r\n syncWithThumbs(thumbsEngine: SliderEngine) {\r\n this.syncThumbsEngine = thumbsEngine;\r\n }\r\n\r\n /* -------- Read-only helpers -------- */\r\n\r\n getSlidesPerView(): number {\r\n return this.store.snapshot.slidesPerView;\r\n }\r\n\r\n getCurrentSlide(): number {\r\n return this.store.snapshot.currentSlide;\r\n }\r\n\r\n getSelectedSlide(): number {\r\n return this.store.snapshot.selectedSlide;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { SliderPlugin } from \"../slider-plugin\";\r\nimport { SliderEngine } from \"../../engine/slider-engine.service\";\r\nimport { AutoplayPluginConfig } from \"../../models/slider-config.model\";\r\n@Injectable()\r\nexport class SliderAutoplayPlugin implements SliderPlugin {\r\n private engine!: SliderEngine;\r\n private timerId: any;\r\n private delay = 4000; // default\r\n\r\n init(engine: SliderEngine) {\r\n this.engine = engine;\r\n this.start();\r\n }\r\n\r\n setConfig(config?: AutoplayPluginConfig) {\r\n if (!config) return;\r\n\r\n if (typeof config.delay === \"number\") {\r\n this.delay = config.delay;\r\n }\r\n\r\n // restart autoplay with new config\r\n this.start();\r\n }\r\n\r\n onDragStart() {\r\n this.stop();\r\n }\r\n\r\n onDragEnd() {\r\n this.start();\r\n }\r\n\r\n private start() {\r\n this.stop();\r\n this.timerId = setInterval(() => {\r\n this.engine.next();\r\n }, this.delay);\r\n }\r\n\r\n private stop() {\r\n if (this.timerId) {\r\n clearInterval(this.timerId);\r\n this.timerId = null;\r\n }\r\n }\r\n\r\n destroy() {\r\n this.stop();\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { SliderPlugin } from \"../slider-plugin\";\r\nimport { SliderEngine } from \"../../engine/slider-engine.service\";\r\n\r\n@Injectable()\r\nexport class SliderDraggablePlugin implements SliderPlugin {\r\n private engine!: SliderEngine;\r\n private startX = 0;\r\n private deltaX = 0;\r\n private hasDragged = false;\r\n private isDragging = false;\r\n private readonly dragThreshold = 50;\r\n\r\n // Expose drag state to template\r\n public get isDraggingPointer(): boolean {\r\n return this.isDragging;\r\n }\r\n\r\n init(engine: SliderEngine) {\r\n this.engine = engine;\r\n }\r\n\r\n onDragStart(event: PointerEvent) {\r\n this.startX = event.clientX;\r\n this.deltaX = 0;\r\n this.hasDragged = false;\r\n this.isDragging = true;\r\n\r\n // Set engine dragging state\r\n this.engine.setState({ isDragging: true });\r\n }\r\n\r\n onDragMove(event: PointerEvent) {\r\n if (!this.isDragging) return;\r\n\r\n const moveX = event.clientX - this.startX;\r\n this.deltaX += moveX;\r\n this.hasDragged = true;\r\n\r\n const currentTranslate = this.extractTranslate(this.engine.getState().translate);\r\n const newTranslate = currentTranslate + moveX;\r\n\r\n this.engine.setState({ translate: `translateX(${newTranslate}px)` });\r\n\r\n this.startX = event.clientX;\r\n }\r\n\r\n onDragEnd() {\r\n if (this.hasDragged) {\r\n if (this.deltaX > this.dragThreshold) {\r\n this.engine.previous();\r\n } else if (this.deltaX < -this.dragThreshold) {\r\n this.engine.next();\r\n } else {\r\n // Small drag → snap back\r\n this.engine.recalculate();\r\n }\r\n }\r\n\r\n this.isDragging = false;\r\n this.hasDragged = false;\r\n this.deltaX = 0;\r\n\r\n this.engine.setState({ isDragging: false });\r\n }\r\n\r\n /** Extract numeric value from 'translateX(-123px)' */\r\n private extractTranslate(transform: string | undefined): number {\r\n if (!transform) return 0;\r\n const match = transform.match(/-?\\d+(\\.\\d+)?/);\r\n return match ? parseFloat(match[0]) : 0;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { SliderPlugin } from \"../slider-plugin\";\r\nimport { SliderEngine } from \"../../engine/slider-engine.service\";\r\nimport { BehaviorSubject, Subscription } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class SliderNavigationPlugin implements SliderPlugin {\r\n private engine!: SliderEngine;\r\n\r\n private isPagerMode = false;\r\n\r\n private _canPrev$ = new BehaviorSubject<boolean>(false);\r\n private _canNext$ = new BehaviorSubject<boolean>(false);\r\n\r\n private sub!: Subscription;\r\n\r\n get canPrev$() {\r\n return this._canPrev$.asObservable();\r\n }\r\n get canNext$() {\r\n return this._canNext$.asObservable();\r\n }\r\n\r\n init(engine: SliderEngine, isPagerMode: boolean = false) {\r\n this.engine = engine;\r\n this.isPagerMode = isPagerMode;\r\n\r\n // Subscribe to state changes\r\n this.sub = this.engine.getStateObservable?.()?.subscribe(() => this.updateArrows());\r\n\r\n // ✅ Force initial check after a short delay (to catch async slides)\r\n setTimeout(() => this.updateArrows());\r\n }\r\n\r\n destroy() {\r\n this.sub?.unsubscribe();\r\n }\r\n next() {\r\n if (!this.engine) return;\r\n\r\n if (this.isPagerMode) {\r\n const state = this.engine.getState();\r\n const cfg = this.engine.getConfig();\r\n\r\n const totalSlides = cfg?.slides?.length ?? 0;\r\n const perView = state?.slidesPerView ?? cfg?.slidesPerView ?? 1;\r\n const step = cfg?.slidesToSlide ?? 1;\r\n\r\n const maxIndex = Math.max(0, totalSlides - perView);\r\n const current = state?.currentSlide ?? 0;\r\n\r\n const newIndex = Math.min(maxIndex, current + step);\r\n this.engine.goTo(newIndex);\r\n } else {\r\n this.engine.next();\r\n }\r\n }\r\n\r\n prev() {\r\n if (!this.engine) return;\r\n\r\n if (this.isPagerMode) {\r\n const state = this.engine.getState();\r\n const cfg = this.engine.getConfig();\r\n\r\n const step = cfg?.slidesToSlide ?? 1;\r\n const current = state?.currentSlide ?? 0;\r\n\r\n const newIndex = Math.max(0, current - step);\r\n this.engine.goTo(newIndex);\r\n } else {\r\n this.engine.previous();\r\n }\r\n }\r\n\r\n public updateArrows() {\r\n if (!this.engine) return;\r\n\r\n const state = this.engine.getState();\r\n const cfg = this.engine.getConfig();\r\n const totalSlides = cfg?.slides?.length ?? 0;\r\n const perView = state?.slidesPerView ?? 1;\r\n\r\n const canPrev = totalSlides > 0 && (state?.currentSlide ?? 0) > 0;\r\n const canNext = totalSlides > 0 && (state?.currentSlide ?? 0) < Math.max(0, totalSlides - perView);\r\n\r\n if (this._canPrev$.value !== canPrev) this._canPrev$.next(canPrev);\r\n if (this._canNext$.value !== canNext) this._canNext$.next(canNext);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Pager, SliderPlugin } from \"../slider-plugin\";\r\nimport { SliderEngine } from \"../../engine/slider-engine.service\";\r\nimport { BehaviorSubject, Subscription } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class SliderPaginationPlugin implements SliderPlugin {\r\n private engine!: SliderEngine;\r\n private maxVisibleDots = 10;\r\n private sub!: Subscription;\r\n\r\n private _pager$ = new BehaviorSubject<Pager | null>(null);\r\n public pager$ = this._pager$.asObservable();\r\n\r\n init(engine: SliderEngine) {\r\n this.engine = engine;\r\n\r\n this.sub = this.engine.getStateObservable().subscribe(() => {\r\n this.updatePager();\r\n });\r\n\r\n // initial\r\n setTimeout(() => this.updatePager());\r\n }\r\n\r\n destroy() {\r\n this.sub?.unsubscribe();\r\n this._pager$.next(null);\r\n }\r\n\r\n /** Go to a slide by slide index (NOT dot index) */\r\n goToSlide(slideIndex: number) {\r\n this.engine.selectSlide(slideIndex);\r\n }\r\n\r\n private updatePager() {\r\n const state = this.engine.getState();\r\n const totalSlides = state.visibleSlides?.length ?? 0;\r\n if (totalSlides <= 0) {\r\n this._pager$.next(null);\r\n return;\r\n }\r\n\r\n // ✅ important: selectedSlide is -1 initially; fallback to currentSlide\r\n const current = state.selectedSlide !== -1 ? state.selectedSlide : state.currentSlide;\r\n\r\n const maxDots = Math.max(1, this.maxVisibleDots);\r\n\r\n // ✅ clamp to >= 0\r\n const safeCurrent = Math.max(0, Math.min(current, totalSlides - 1));\r\n\r\n const pageStart = Math.max(0, Math.floor(safeCurrent / maxDots) * maxDots);\r\n const pageEnd = Math.min(pageStart + maxDots, totalSlides);\r\n\r\n const visibleDots = Array.from({ length: pageEnd - pageStart }, (_, i) => pageStart + i);\r\n\r\n const activeDotIndex = visibleDots.indexOf(safeCurrent);\r\n\r\n this._pager$.next({ visibleDots, activeDotIndex });\r\n }\r\n}\r\n","import {\r\n Component,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n TemplateRef,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n SimpleChanges,\r\n OnChanges,\r\n OnDestroy,\r\n ViewChild,\r\n ElementRef,\r\n AfterViewInit,\r\n ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport { SliderViewState } from \"../models/slider-state.model\";\r\nimport { Observable, Subject, takeUntil } from \"rxjs\";\r\nimport { SliderConfig } from \"../models/slider-config.model\";\r\nimport { SliderEngine } from \"../engine/slider-engine.service\";\r\nimport { SliderStore } from \"../store/slider-store.service\";\r\nimport { SliderAutoplayPlugin } from \"../plugins/autoplay/autoplay.plugin\";\r\nimport { SliderDraggablePlugin } from \"../plugins/draggable/draggable.plugin\";\r\nimport { SliderNavigationPlugin } from \"../plugins/navigation/navigation.plugin\";\r\nimport { SliderPaginationPlugin } from \"../plugins/pagination/pagination.plugin\";\r\nimport { Pager, SliderPlugin } from \"../plugins/slider-plugin\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n@Component({\r\n selector: \"app-simple-slider\",\r\n templateUrl: \"./simple-slider.component.html\",\r\n styleUrl: \"./simple-slider.component.scss\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n imports: [CommonModule],\r\n providers: [SliderEngine, SliderStore, SliderDraggablePlugin, SliderPaginationPlugin, SliderNavigationPlugin, SliderAutoplayPlugin],\r\n})\r\nexport class SimpleSliderComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\r\n @Input() config!: SliderConfig;\r\n @Input() slideTemplate?: TemplateRef<any>;\r\n @Input() navigationTemplate?: TemplateRef<any>;\r\n @Input() paginationTemplate?: TemplateRef<any>;\r\n @Output() slideChange = new EventEmitter<number>();\r\n\r\n private isDraggingPointer = false;\r\n private dragStartX = 0;\r\n private dragStartY = 0;\r\n private lastIndex = -1;\r\n private lastSlidesRef: any[] | null = null;\r\n private destroy$ = new Subject<void>();\r\n\r\n state$!: Observable<SliderViewState>;\r\n @ViewChild(\"sliderHost\", { static: false }) sliderHost?: ElementRef<HTMLElement>;\r\n\r\n constructor(\r\n private engine: SliderEngine,\r\n private store: SliderStore,\r\n private draggable: SliderDraggablePlugin,\r\n private pagination: SliderPaginationPlugin,\r\n private navigation: SliderNavigationPlugin,\r\n private autoplay: SliderAutoplayPlugin,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.state$ = this.store.view$;\r\n\r\n this.state$.pipe(takeUntil(this.destroy$)).subscribe((state) => {\r\n if (state.currentSlide !== this.lastIndex) {\r\n this.lastIndex = state.currentSlide;\r\n this.slideChange.emit(state.currentSlide);\r\n }\r\n });\r\n this.lastSlidesRef = this.config?.slides ?? null;\r\n this.resolvePlugins(this.config);\r\n }\r\n ngAfterViewInit() {\r\n if (this.sliderHost?.nativeElement) {\r\n this.engine.attachContainer(this.sliderHost.nativeElement);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (!changes[\"config\"] || !this.config) return;\r\n\r\n const newSlidesRef = this.config.slides ?? null;\r\n\r\n if (newSlidesRef !== this.lastSlidesRef) {\r\n this.lastSlidesRef = newSlidesRef;\r\n this.engine.destroy();\r\n this.resolvePlugins(this.config);\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.destroySlider();\r\n }\r\n\r\n public goTo(index: number) {\r\n this.engine.selectSlide(index); // add this line\r\n //this.slideChange.emit(index);\r\n }\r\n\r\n destroySlider() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.engine.destroy();\r\n } // destroys plugins and clears store\r\n\r\n onNext() {\r\n this.engine.next();\r\n }\r\n onPrevious() {\r\n this.engine.previous();\r\n }\r\n selectSlide(index: number) {\r\n this.engine.selectSlide(index);\r\n }\r\n onRecalculate() {\r\n this.engine.recalculate();\r\n }\r\n // Navigation\r\n /** Expose navigation observables safely */\r\n get canPrev$(): Observable<boolean> | null {\r\n if (!this.navigation) {\r\n console.warn(\"Navigation plugin is not enabled.\");\r\n return null;\r\n }\r\n return this.navigation.canPrev$;\r\n }\r\n\r\n get canNext$(): Observable<boolean> | null {\r\n if (!this.navigation) {\r\n console.warn(\"Navigation plugin is not enabled.\");\r\n return null;\r\n }\r\n return this.navigation.canNext$;\r\n }\r\n\r\n /** Expose next/prev methods */\r\n public next() {\r\n this.navigation?.next();\r\n }\r\n\r\n public prev() {\r\n this.navigation?.prev();\r\n }\r\n\r\n /** Expose pagination observable */\r\n get pager$(): Observable<Pager | null> | null {\r\n if (!this.pagination) {\r\n console.warn(\"Pagination plugin is not enabled for this slider.\");\r\n return null;\r\n }\r\n return this.pagination.pager$;\r\n }\r\n\r\n /** Expose a goToSlide method */\r\n public goToSlide(index: number) {\r\n this.pagination.goToSlide(index);\r\n }\r\n\r\n // Handle Pointers\r\n\r\n onPointerDown(event: PointerEvent) {\r\n // Only start drag if not clicking a nav button\r\n if ((event.target as HTMLElement).closest(\".nav-btn\")) {\r\n return; // ignore\r\n }\r\n this.dragStartX = event.clientX;\r\n this.dragStartY = event.clientY;\r\n this.isDraggingPointer = false;\r\n\r\n // Do not capture yet; wait until movement exceeds threshold\r\n this.engine.handleDragStart(event);\r\n }\r\n\r\n onPointerMove(event: PointerEvent) {\r\n const dx = Math.abs(event.clientX - this.dragStartX);\r\n const dy = Math.abs(event.clientY - this.dragStartY);\r\n\r\n if (!this.isDraggingPointer && (dx > 5 || dy > 5)) {\r\n this.isDraggingPointer = true;\r\n\r\n // Now start capturing pointer so dragging works outside the slider bounds\r\n (event.currentTarget as HTMLElement).setPointerCapture(event.pointerId);\r\n }\r\n\r\n if (this.isDraggingPointer) {\r\n this.engine.handleDragMove(event);\r\n }\r\n }\r\n\r\n onPointerUp(event: PointerEvent) {\r\n if (!event) return;\r\n\r\n if (!this.isDraggingPointer) {\r\n const target = event.target as HTMLElement;\r\n\r\n // Only select the slide if click is not on an interactive child\r\n const slideEl = target.closest(\".slide\");\r\n if (slideEl && !target.closest(\"button, video, a\")) {\r\n const indexAttr = slideEl.getAttribute(\"data-index\");\r\n const index = indexAttr ? parseInt(indexAttr, 10) : null;\r\n if (index !== null) this.engine.selectSlide(index);\r\n }\r\n }\r\n\r\n this.engine.handleDragEnd();\r\n this.isDraggingPointer = false;\r\n\r\n // Release pointer capture if it was captured\r\n try {\r\n (event.currentTarget as HTMLElement).releasePointerCapture(event.pointerId);\r\n } catch {}\r\n }\r\n\r\n private resolvePlugins(config: SliderConfig) {\r\n const runtimePlugins: SliderPlugin[] = [];\r\n\r\n const cfg = config.plugins ?? {}; // <-- safe fallback\r\n\r\n if (cfg.draggable) runtimePlugins.push(this.draggable);\r\n if (cfg.pagination) runtimePlugins.push(this.pagination);\r\n if (cfg.navigation) runtimePlugins.push(this.navigation);\r\n\r\n if (cfg.autoplay) {\r\n this.autoplay.setConfig(cfg.autoplay);\r\n runtimePlugins.push(this.autoplay);\r\n }\r\n\r\n this.engine.init({ ...config, plugins: undefined }, runtimePlugins);\r\n\r\n if (cfg.navigation) {\r\n setTimeout(() => this.navigation?.updateArrows?.());\r\n }\r\n }\r\n}\r\n","<ng-container *ngIf=\"state$ | async as state\">\r\n <div\r\n class=\"slider\"\r\n #sliderHost\r\n [class.slider-vertical]=\"state.vertical\"\r\n [class.slider-draggable]=\"state.isDragging\"\r\n [class.slider--main]=\"!config.isThumbs\"\r\n [class.slider--thumbs]=\"config.isThumbs\"\r\n *ngIf=\"state.visibleSlides?.length > 0 && state.isVisible\"\r\n (pointerdown)=\"onPointerDown($event)\"\r\n (pointermove)=\"onPointerMove($event)\"\r\n (pointerup)=\"onPointerUp($event)\"\r\n (pointercancel)=\"onPointerUp($event)\">\r\n <div\r\n class=\"slider__wrapper\"\r\n [ngStyle]=\"{\r\n transform: state.translate,\r\n transition: draggable.isDraggingPointer ? 'none' : 'transform 0.3s ease',\r\n display: 'flex',\r\n 'flex-direction': state.vertical ? 'column' : 'row',\r\n 'justify-content': state.visibleSlides?.length < state.slidesPerView ? 'center' : 'flex-start',\r\n gap: (state.slidesPerView > 1 ? state.gap || 0 : 0) + 'px',\r\n }\">\r\n <div\r\n *ngFor=\"let slide of state.visibleSlides; let i = index\"\r\n class=\"slide\"\r\n [attr.data-index]=\"i\"\r\n [class.slide--current]=\"state.selectedSlide === i\"\r\n [style.flex]=\"\r\n !config.isThumbs\r\n ? '0 0 calc(' +\r\n 100 / state.slidesPerView +\r\n '% - ' +\r\n ((state.gap || 0) * (state.slidesPerView - 1)) / state.slidesPerView +\r\n 'px)'\r\n : '0 0 ' + thumbSize + 'px'\r\n \"\r\n [style.width]=\"config.isThumbs ? thumbSize + 'px' : null\"\r\n [style.height]=\"config.isThumbs ? thumbSize + 'px' : null\"\r\n (click)=\"engine.selectSlide(i)\">\r\n <ng-container\r\n *ngTemplateOutlet=\"slideTemplate ? slideTemplate : defaultSlideTemplate; context: { slide: slide, index: i }\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { SimpleSliderComponent } from \"./component/simple-slider.component\";\r\n\r\n@NgModule({\r\n imports: [SimpleSliderComponent],\r\n exports: [SimpleSliderComponent],\r\n})\r\nexport class NgxEdgeSliderModule {}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { DomSanitizer, SafeResourceUrl } from \"@angular/platform-browser\";\r\n\r\n@Pipe({ name: \"safeUrl\" })\r\nexport class SafeUrlPipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) {}\r\n\r\n transform(url: string): SafeResourceUrl {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n}\r\n","// components\r\nexport * from \"./lib/component/simple-slider.component\";\r\n\r\n// module\r\nexport * from \"./lib/ngx-edge-slider.module\";\r\n\r\n// engine\r\nexport * from \"./lib/engine/slider-engine.service\";\r\n\r\n// plugins\r\nexport * from \"./lib/plugins/draggable/draggable.plugin\";\r\nexport * from \"./lib/plugins/navigation/navigation.plugin\";\r\nexport * from \"./lib/plugins/pagination/pagination.plugin\";\r\nexport * from \"./lib/plugins/autoplay/autoplay.plugin\";\r\nexport * from \"./lib/plugins/slider-plugin\";\r\n\r\n// models\r\nexport * from \"./lib/models/slider-config.model\";\r\nexport * from \"./lib/models/slider-state.model\";\r\n\r\n// store\r\nexport * from \"./lib/store/slider-store.service\";\r\n\r\n// pipe\r\nexport * from \"./lib/safe-url.pipe\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SliderStore","i1.SliderEngine","i2.SliderStore","i3.SliderDraggablePlugin","i4.SliderPaginationPlugin","i5.SliderNavigationPlugin","i6.SliderAutoplayPlugin"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngx-edge-slider",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.4",
|
|
4
|
+
"description": "A simple slider library for Angular",
|
|
5
|
+
"author": "Gyoksel Ahmedov",
|
|
6
|
+
"license": "MIT",
|
|
4
7
|
"peerDependencies": {
|
|
5
8
|
"@angular/common": ">=18.0.0",
|
|
6
9
|
"@angular/core": ">=18.0.0",
|
|
@@ -23,4 +26,4 @@
|
|
|
23
26
|
"default": "./fesm2022/ngx-edge-slider.mjs"
|
|
24
27
|
}
|
|
25
28
|
}
|
|
26
|
-
}
|
|
29
|
+
}
|