{"version":3,"sources":["jsdelivr-header.js","/npm/swiper-effect-focus@0.1.0/dist/index.js"],"names":[],"mappings":"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","file":"/npm/swiper-effect-focus@0.1.0/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /npm/swiper-effect-focus@0.1.0/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { getSlideTransformEl } from 'swiper/effect-utils';\nimport { calculateFocusTransforms } from './geometry.js';\n/** The effect name used in Swiper configuration. */\nexport const FOCUS_EFFECT = 'focus';\nconst DEFAULT_SCALE = 0.85;\n/**\n * Emphasize the centered slide while retaining the layout's original spaceBetween.\n * Uses Swiper's lifecycle and measured geometry; importing it is safe during SSR.\n */\nexport const EffectFocus = ({ swiper, extendParams, on }) => {\n    extendParams({ focusEffect: { scale: DEFAULT_SCALE } });\n    const originals = new Map();\n    let addedClass;\n    const isEnabled = () => swiper.params.effect === FOCUS_EFFECT;\n    const remember = (element) => {\n        if (originals.has(element))\n            return;\n        const read = (property) => ({\n            value: element.style.getPropertyValue(property),\n            priority: element.style.getPropertyPriority(property),\n        });\n        originals.set(element, {\n            transform: read('transform'),\n            'transition-duration': read('transition-duration'),\n        });\n    };\n    const restoreElement = (element, properties) => {\n        for (const property of ['transform', 'transition-duration']) {\n            const { value, priority } = properties[property];\n            if (value)\n                element.style.setProperty(property, value, priority);\n            else\n                element.style.removeProperty(property);\n        }\n        originals.delete(element);\n    };\n    const restore = () => {\n        for (const [element, properties] of originals)\n            restoreElement(element, properties);\n    };\n    const validate = () => {\n        const { params } = swiper;\n        const scale = params.focusEffect?.scale ?? DEFAULT_SCALE;\n        if (!Number.isFinite(scale) || scale <= 0 || scale > 1) {\n            throw new RangeError('[swiper-effect-focus] focusEffect.scale must be greater than 0 and at most 1.');\n        }\n        const virtualEnabled = typeof params.virtual === 'object' ? params.virtual?.enabled : params.virtual;\n        if (params.cssMode || virtualEnabled || (params.grid?.rows ?? 1) > 1) {\n            throw new Error('[swiper-effect-focus] CSS mode, virtual slides and multi-row grids are not supported.');\n        }\n        if (params.centeredSlidesBounds || params.centerInsufficientSlides) {\n            throw new Error('[swiper-effect-focus] Centered bounds and insufficient-slide centering are not supported.');\n        }\n        return scale;\n    };\n    const render = () => {\n        if (!isEnabled()) {\n            if (originals.size)\n                restore();\n            return;\n        }\n        const scale = validate();\n        const horizontal = swiper.isHorizontal();\n        const size = horizontal ? swiper.width : swiper.height;\n        if (!Number.isFinite(size) || size <= 0 || !Number.isFinite(swiper.translate))\n            return;\n        const measured = [];\n        const presentTargets = new Set();\n        for (const slide of swiper.slides) {\n            const target = getSlideTransformEl(slide);\n            presentTargets.add(target);\n            const { swiperSlideOffset: offset, swiperSlideSize: size } = slide;\n            if (offset === undefined || size === undefined || !Number.isFinite(offset) || !Number.isFinite(size) || size <= 0)\n                continue;\n            measured.push({ element: target, offset, size });\n        }\n        for (const [element, properties] of originals) {\n            if (!presentTargets.has(element))\n                restoreElement(element, properties);\n        }\n        // Offsets and translate are physical coordinates, so the same formula covers RTL.\n        const center = -swiper.translate + size / 2;\n        const transforms = calculateFocusTransforms(measured, center, scale);\n        for (const [index, slide] of measured.entries()) {\n            const transform = transforms[index];\n            const target = slide.element;\n            remember(target);\n            const x = horizontal ? transform.translate : 0;\n            const y = horizontal ? 0 : transform.translate;\n            target.style.transform = `translate3d(${x}px, ${y}px, 0px) scale(${transform.scale})`;\n        }\n    };\n    on('beforeInit', () => {\n        if (!isEnabled())\n            return;\n        validate();\n        const required = { centeredSlides: true, watchSlidesProgress: true };\n        Object.assign(swiper.params, required);\n        Object.assign(swiper.originalParams, required);\n        const className = `${swiper.params.containerModifierClass}${FOCUS_EFFECT}`;\n        if (!swiper.el.classList.contains(className)) {\n            swiper.el.classList.add(className);\n            addedClass = className;\n        }\n    });\n    on('setTranslate', render);\n    on('setTransition', (_swiper, duration) => {\n        if (!isEnabled())\n            return;\n        for (const slide of swiper.slides) {\n            const target = getSlideTransformEl(slide);\n            remember(target);\n            target.style.transitionDuration = `${duration}ms`;\n        }\n    });\n    on('init', render);\n    on('update', render);\n    on('beforeDestroy', () => {\n        restore();\n        if (addedClass)\n            swiper.el.classList.remove(addedClass);\n    });\n};\nexport default EffectFocus;\n"]}