Vollständiges Redesign mit Gold-Formularen, BMP-Logo, multi-step Forms (Bewerbung, Kontakt, Sponsoring), Netlify-Deployment. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
220 lines
6.0 KiB
JavaScript
220 lines
6.0 KiB
JavaScript
import "./chunk-PR4QN5HX.js";
|
|
|
|
// node_modules/embla-carousel-auto-scroll/esm/embla-carousel-auto-scroll.esm.js
|
|
var defaultOptions = {
|
|
direction: "forward",
|
|
speed: 2,
|
|
startDelay: 1e3,
|
|
active: true,
|
|
breakpoints: {},
|
|
playOnInit: true,
|
|
stopOnFocusIn: true,
|
|
stopOnInteraction: true,
|
|
stopOnMouseEnter: false,
|
|
rootNode: null
|
|
};
|
|
function getAutoScrollRootNode(emblaApi, rootNode) {
|
|
const emblaRootNode = emblaApi.rootNode();
|
|
return rootNode && rootNode(emblaRootNode) || emblaRootNode;
|
|
}
|
|
function AutoScroll(userOptions = {}) {
|
|
let options;
|
|
let emblaApi;
|
|
let destroyed;
|
|
let startDelay;
|
|
let timerId = 0;
|
|
let autoScrollActive = false;
|
|
let mouseIsOver = false;
|
|
let defaultScrollBehaviour;
|
|
function init(emblaApiInstance, optionsHandler) {
|
|
emblaApi = emblaApiInstance;
|
|
const {
|
|
mergeOptions,
|
|
optionsAtMedia
|
|
} = optionsHandler;
|
|
const optionsBase = mergeOptions(defaultOptions, AutoScroll.globalOptions);
|
|
const allOptions = mergeOptions(optionsBase, userOptions);
|
|
options = optionsAtMedia(allOptions);
|
|
if (emblaApi.scrollSnapList().length <= 1) return;
|
|
startDelay = options.startDelay;
|
|
destroyed = false;
|
|
defaultScrollBehaviour = emblaApi.internalEngine().scrollBody;
|
|
const {
|
|
eventStore
|
|
} = emblaApi.internalEngine();
|
|
const isDraggable = !!emblaApi.internalEngine().options.watchDrag;
|
|
const root = getAutoScrollRootNode(emblaApi, options.rootNode);
|
|
if (isDraggable) {
|
|
emblaApi.on("pointerDown", pointerDown);
|
|
}
|
|
if (isDraggable && !options.stopOnInteraction) {
|
|
emblaApi.on("pointerUp", pointerUp);
|
|
}
|
|
if (options.stopOnMouseEnter) {
|
|
eventStore.add(root, "mouseenter", mouseEnter);
|
|
}
|
|
if (options.stopOnMouseEnter && !options.stopOnInteraction) {
|
|
eventStore.add(root, "mouseleave", mouseLeave);
|
|
}
|
|
if (options.stopOnFocusIn) {
|
|
emblaApi.on("slideFocusStart", stopAutoScroll);
|
|
}
|
|
if (options.stopOnFocusIn && !options.stopOnInteraction) {
|
|
eventStore.add(emblaApi.containerNode(), "focusout", startAutoScroll);
|
|
}
|
|
if (options.playOnInit) startAutoScroll();
|
|
}
|
|
function destroy() {
|
|
emblaApi.off("pointerDown", pointerDown).off("pointerUp", pointerUp).off("slideFocusStart", stopAutoScroll).off("settle", settle);
|
|
stopAutoScroll();
|
|
destroyed = true;
|
|
autoScrollActive = false;
|
|
}
|
|
function startAutoScroll() {
|
|
if (destroyed) return;
|
|
if (autoScrollActive) return;
|
|
emblaApi.emit("autoScroll:play");
|
|
const engine = emblaApi.internalEngine();
|
|
const {
|
|
ownerWindow
|
|
} = engine;
|
|
timerId = ownerWindow.setTimeout(() => {
|
|
engine.scrollBody = createAutoScrollBehaviour(engine);
|
|
engine.animation.start();
|
|
}, startDelay);
|
|
autoScrollActive = true;
|
|
}
|
|
function stopAutoScroll() {
|
|
if (destroyed) return;
|
|
if (!autoScrollActive) return;
|
|
emblaApi.emit("autoScroll:stop");
|
|
const engine = emblaApi.internalEngine();
|
|
const {
|
|
ownerWindow
|
|
} = engine;
|
|
engine.scrollBody = defaultScrollBehaviour;
|
|
ownerWindow.clearTimeout(timerId);
|
|
timerId = 0;
|
|
autoScrollActive = false;
|
|
}
|
|
function createAutoScrollBehaviour(engine) {
|
|
const {
|
|
location,
|
|
previousLocation,
|
|
offsetLocation,
|
|
target,
|
|
scrollTarget,
|
|
index,
|
|
indexPrevious,
|
|
limit: {
|
|
reachedMin,
|
|
reachedMax,
|
|
constrain
|
|
},
|
|
options: {
|
|
loop
|
|
}
|
|
} = engine;
|
|
const directionSign = options.direction === "forward" ? -1 : 1;
|
|
const noop = () => self2;
|
|
let bodyVelocity = 0;
|
|
let scrollDirection = 0;
|
|
let rawLocation = location.get();
|
|
let rawLocationPrevious = 0;
|
|
let hasSettled = false;
|
|
function seek() {
|
|
let directionDiff = 0;
|
|
previousLocation.set(location);
|
|
bodyVelocity = directionSign * options.speed;
|
|
rawLocation += bodyVelocity;
|
|
location.add(bodyVelocity);
|
|
target.set(location);
|
|
directionDiff = rawLocation - rawLocationPrevious;
|
|
scrollDirection = Math.sign(directionDiff);
|
|
rawLocationPrevious = rawLocation;
|
|
const currentIndex = scrollTarget.byDistance(0, false).index;
|
|
if (index.get() !== currentIndex) {
|
|
indexPrevious.set(index.get());
|
|
index.set(currentIndex);
|
|
emblaApi.emit("select");
|
|
}
|
|
const reachedEnd = options.direction === "forward" ? reachedMin(offsetLocation.get()) : reachedMax(offsetLocation.get());
|
|
if (!loop && reachedEnd) {
|
|
hasSettled = true;
|
|
const constrainedLocation = constrain(location.get());
|
|
location.set(constrainedLocation);
|
|
target.set(location);
|
|
stopAutoScroll();
|
|
}
|
|
return self2;
|
|
}
|
|
const self2 = {
|
|
direction: () => scrollDirection,
|
|
duration: () => -1,
|
|
velocity: () => bodyVelocity,
|
|
settled: () => hasSettled,
|
|
seek,
|
|
useBaseFriction: noop,
|
|
useBaseDuration: noop,
|
|
useFriction: noop,
|
|
useDuration: noop
|
|
};
|
|
return self2;
|
|
}
|
|
function pointerDown() {
|
|
if (!mouseIsOver) stopAutoScroll();
|
|
}
|
|
function pointerUp() {
|
|
if (!mouseIsOver) startAutoScrollOnSettle();
|
|
}
|
|
function mouseEnter() {
|
|
mouseIsOver = true;
|
|
stopAutoScroll();
|
|
}
|
|
function mouseLeave() {
|
|
mouseIsOver = false;
|
|
startAutoScroll();
|
|
}
|
|
function settle() {
|
|
emblaApi.off("settle", settle);
|
|
startAutoScroll();
|
|
}
|
|
function startAutoScrollOnSettle() {
|
|
emblaApi.on("settle", settle);
|
|
}
|
|
function play(startDelayOverride) {
|
|
if (typeof startDelayOverride !== "undefined") {
|
|
startDelay = startDelayOverride;
|
|
}
|
|
startAutoScroll();
|
|
}
|
|
function stop() {
|
|
if (autoScrollActive) stopAutoScroll();
|
|
}
|
|
function reset() {
|
|
if (autoScrollActive) {
|
|
stopAutoScroll();
|
|
startAutoScrollOnSettle();
|
|
}
|
|
}
|
|
function isPlaying() {
|
|
return autoScrollActive;
|
|
}
|
|
const self = {
|
|
name: "autoScroll",
|
|
options: userOptions,
|
|
init,
|
|
destroy,
|
|
play,
|
|
stop,
|
|
reset,
|
|
isPlaying
|
|
};
|
|
return self;
|
|
}
|
|
AutoScroll.globalOptions = void 0;
|
|
export {
|
|
AutoScroll as default
|
|
};
|
|
//# sourceMappingURL=embla-carousel-auto-scroll.js.map
|