ads-web-sdkm 2.0.24
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/README.md +369 -0
- package/dist/AdsCarousel.css +1 -0
- package/dist/AdsCarousel.d.ts +1 -0
- package/dist/AdsCarousel.js +519 -0
- package/dist/AdsCarousel.js.map +1 -0
- package/dist/Brandshop.css +1 -0
- package/dist/Brandshop.d.ts +1 -0
- package/dist/Brandshop.js +918 -0
- package/dist/Brandshop.js.map +1 -0
- package/dist/Brandshops.css +1 -0
- package/dist/Brandshops.d.ts +1 -0
- package/dist/Brandshops.js +103 -0
- package/dist/Brandshops.js.map +1 -0
- package/dist/Image-zvdPHg5N.js +35 -0
- package/dist/Image-zvdPHg5N.js.map +1 -0
- package/dist/ReactQueryProvider-D__k2BsQ.js +6755 -0
- package/dist/ReactQueryProvider-D__k2BsQ.js.map +1 -0
- package/dist/ads-CChrT00a.js +4470 -0
- package/dist/ads-CChrT00a.js.map +1 -0
- package/dist/api/queries/useGetAds.d.ts +16 -0
- package/dist/api/queries/useGetBrandshop.d.ts +14 -0
- package/dist/api/queries/useGetBrandshopList.d.ts +11 -0
- package/dist/api/queries/useGetCollection.d.ts +11 -0
- package/dist/api/services/getAds.d.ts +14 -0
- package/dist/api/services/getBrandshop.d.ts +13 -0
- package/dist/api/services/getBrandshopList.d.ts +11 -0
- package/dist/api/services/getCollection.d.ts +4 -0
- package/dist/components/Brandshop/Banner.d.ts +6 -0
- package/dist/components/Brandshop/BannerSection.d.ts +15 -0
- package/dist/components/Brandshop/BannerWithLink.d.ts +8 -0
- package/dist/components/Brandshop/Brandshop.d.ts +16 -0
- package/dist/components/Brandshop/BrandshopContent.d.ts +3 -0
- package/dist/components/Brandshop/BrandshopError.d.ts +6 -0
- package/dist/components/Brandshop/BrandshopSection.d.ts +18 -0
- package/dist/components/Brandshop/BrandshopSkeleton.d.ts +1 -0
- package/dist/components/Brandshop/CategorySection.d.ts +14 -0
- package/dist/components/Brandshop/NavigationSection.d.ts +16 -0
- package/dist/components/Brandshop/ProductSliderSection.d.ts +18 -0
- package/dist/components/Brandshop/index.d.ts +1 -0
- package/dist/components/Brandshops/Brandshops.d.ts +11 -0
- package/dist/components/Brandshops/BrandshopsList.d.ts +3 -0
- package/dist/components/Brandshops/BrandshopsSkeleton.d.ts +6 -0
- package/dist/components/Brandshops/index.d.ts +1 -0
- package/dist/components/Card/Card.d.ts +8 -0
- package/dist/components/Carousel/AdBanner.d.ts +17 -0
- package/dist/components/Carousel/AdBanners.d.ts +24 -0
- package/dist/components/Carousel/AdCarousel.d.ts +43 -0
- package/dist/components/Carousel/AdSkeleton.d.ts +8 -0
- package/dist/components/Carousel/AdsCarousel.d.ts +24 -0
- package/dist/components/Carousel/index.d.ts +1 -0
- package/dist/components/Chip/Chip.d.ts +6 -0
- package/dist/components/ErrorBoundary/ErrorBoundary.d.ts +18 -0
- package/dist/components/Image/Image.d.ts +13 -0
- package/dist/components/ProductsCarousel/CouponBadge.d.ts +8 -0
- package/dist/components/ProductsCarousel/DiscountChip.d.ts +12 -0
- package/dist/components/ProductsCarousel/PriceDisplay.d.ts +8 -0
- package/dist/components/ProductsCarousel/ProductCard.d.ts +15 -0
- package/dist/components/ProductsCarousel/ProductCardSkeleton.d.ts +5 -0
- package/dist/components/ProductsCarousel/ProductSliderSkeleton.d.ts +5 -0
- package/dist/components/ProductsCarousel/ProductTitle.d.ts +5 -0
- package/dist/components/ProductsCarousel/ProductsCarousel.d.ts +11 -0
- package/dist/hooks/use-async-memo.d.ts +1 -0
- package/dist/hooks/use-is-platform.d.ts +8 -0
- package/dist/hooks/useDetectScrolledToBottom.d.ts +5 -0
- package/dist/hooks/useSwipeThreshold.d.ts +4 -0
- package/dist/providers/ReactQueryProvider.d.ts +5 -0
- package/dist/types/ads.d.ts +116 -0
- package/dist/types/brandshop.d.ts +62 -0
- package/dist/types/brandshopsList.d.ts +32 -0
- package/dist/types/configTypes.d.ts +16 -0
- package/dist/types/enums.d.ts +8 -0
- package/dist/types/products.d.ts +72 -0
- package/dist/types/tenures.d.ts +11 -0
- package/dist/types/types.d.ts +2 -0
- package/dist/utils/analytics/trackAdsEvent.d.ts +16 -0
- package/dist/utils/analytics/trackBrandshopEvents.d.ts +15 -0
- package/dist/utils/helpers/ads.d.ts +3 -0
- package/dist/utils/helpers/authToken.d.ts +5 -0
- package/dist/utils/helpers/discountChip.d.ts +14 -0
- package/dist/utils/helpers/getBaseUrl.d.ts +4 -0
- package/dist/utils/helpers/mergeClasses.d.ts +1 -0
- package/dist/utils/helpers/price-utils.d.ts +1 -0
- package/dist/utils/helpers/productDiscounts.d.ts +3 -0
- package/dist/utils/helpers/products.d.ts +4 -0
- package/dist/utils/helpers/text.d.ts +1 -0
- package/dist/utils/helpers/translate.d.ts +63 -0
- package/dist/utils/helpers/utilities.d.ts +1 -0
- package/dist/utils/validations/ads.d.ts +7 -0
- package/package.json +81 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ads-CChrT00a.js","sources":["../src/hooks/use-is-platform.ts","../src/types/ads.ts","../node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js","../node_modules/embla-carousel/esm/embla-carousel.esm.js","../node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js","../src/assets/black-chevron-right.svg","../src/assets/black-chevron-left.svg","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/utils/helpers/mergeClasses.ts","../src/hooks/useSwipeThreshold.ts","../src/components/Carousel/AdCarousel.tsx","../node_modules/react-intersection-observer/dist/index.mjs","../src/components/Carousel/AdSkeleton.tsx","../src/utils/helpers/ads.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\r\n\r\nconst DESKTOP_MIN_SCREEN_WIDTH = 1280;\r\nconst LAPTOP_MIN_SCREEN_WIDTH = 1024;\r\nconst TABLET_MIN_SCREEN_WIDTH = 640;\r\n\r\ntype Platform = {\r\n isDesktop: boolean;\r\n isLaptop: boolean;\r\n isTablet: boolean;\r\n isMobile: boolean;\r\n};\r\n\r\nconst getPlatform = (): Platform => {\r\n if (typeof window === 'undefined') {\r\n return {\r\n isDesktop: false,\r\n isLaptop: false,\r\n isTablet: false,\r\n isMobile: true,\r\n };\r\n }\r\n\r\n const width = window.innerWidth;\r\n\r\n if (width > DESKTOP_MIN_SCREEN_WIDTH) {\r\n return {\r\n isDesktop: true,\r\n isLaptop: false,\r\n isTablet: false,\r\n isMobile: false,\r\n };\r\n } else if (width > LAPTOP_MIN_SCREEN_WIDTH) {\r\n return {\r\n isDesktop: false,\r\n isLaptop: true,\r\n isTablet: false,\r\n isMobile: false,\r\n };\r\n } else if (width > TABLET_MIN_SCREEN_WIDTH) {\r\n return {\r\n isDesktop: false,\r\n isLaptop: false,\r\n isTablet: true,\r\n isMobile: false,\r\n };\r\n } else {\r\n return {\r\n isDesktop: false,\r\n isLaptop: false,\r\n isTablet: false,\r\n isMobile: true,\r\n };\r\n }\r\n};\r\n\r\nexport const useIsPlatform = (): Platform => {\r\n const [platform, setPlatform] = useState<Platform>(getPlatform); // <-- initialize correctly\r\n\r\n useEffect(() => {\r\n const handleResize = () => {\r\n setPlatform(getPlatform());\r\n };\r\n\r\n window.addEventListener('resize', handleResize);\r\n return () => window.removeEventListener('resize', handleResize);\r\n }, []);\r\n\r\n return platform;\r\n};\r\n","export enum AdsDestinationType {\r\n Category = 'category',\r\n SingleProduct = 'single product',\r\n Collection = 'collection',\r\n Brandshop = 'brandshop',\r\n}\r\n\r\n/**\r\n * API device type required from the Ads server.\r\n */\r\n\r\nexport enum AdsDeviceType {\r\n Mobile = 'mob',\r\n Web = 'web',\r\n}\r\n\r\n/**\r\n * API response from the Ads server.\r\n */\r\nexport type AdsApiResponse = {\r\n success: boolean;\r\n error: AdsApiError | null;\r\n data: AdData[];\r\n};\r\n\r\n/**\r\n * Structure of an error returned from the Ads API.\r\n */\r\nexport type AdsApiError = {\r\n message: string;\r\n severity: string;\r\n details: string;\r\n};\r\n\r\n/**\r\n * Represents a single advertisement item with all necessary metadata.\r\n */\r\nexport type AdData = {\r\n ad_type: string;\r\n ad_title: string;\r\n ad_id: number | string;\r\n ad_slot: number;\r\n media_type: string;\r\n media: string;\r\n media_aspect_ratio: string;\r\n link: AdLink;\r\n campaign_title: string;\r\n campaign_id: number | string;\r\n brand_name: string;\r\n brand_id: number | string;\r\n default_content_id?: string;\r\n default_content_title?: string;\r\n};\r\n\r\n/**\r\n * Contains the display text and destination configuration for an ad's CTA (call to action).\r\n */\r\nexport interface AdLink {\r\n link_text: string;\r\n link_destination: LinkDestination;\r\n}\r\n\r\n/**\r\n * Represents the navigation target of the ad (e.g., category or single product),\r\n * including IDs and optional filters.\r\n */\r\nexport interface LinkDestination {\r\n type: string; // \"category\" | \"single product\" | others in the future\r\n val: string[]; // category or product IDs\r\n filters: {\r\n key: string;\r\n value: string[];\r\n }[];\r\n}\r\n\r\n/**\r\n * Supported ad location identifiers.\r\n */\r\nexport type TAdsLocations =\r\n | 'Green_Category_Top_Banner'\r\n | 'Green_Home_Top_Banner';\r\n\r\n// -------------------------\r\n// Ad Click Event Interfaces\r\n// -------------------------\r\n\r\n/**\r\n * Payload emitted when a category-type ad with single category is clicked.\r\n */\r\nexport type SingleCategoryClickEvent = {\r\n type: 'single_category';\r\n value: string;\r\n filters: {\r\n key: string;\r\n value: string[];\r\n }[];\r\n};\r\n\r\n/**\r\n * Payload emitted when a category-type ad with multiple category is clicked.\r\n */\r\nexport type MultipleCategoriesClickEvent = {\r\n type: 'multiple_categories';\r\n value: string[];\r\n filters: {\r\n key: string;\r\n value: string[];\r\n }[];\r\n};\r\n\r\n/**\r\n * Payload emitted when a single-product-type ad is clicked.\r\n */\r\nexport type ProductClickEvent = {\r\n type: 'single_product';\r\n value: string;\r\n slug?: string;\r\n};\r\n\r\n/**\r\n * Payload emitted when a collection-type ad is clicked.\r\n */\r\nexport type CollectionClickEvent = {\r\n type: 'collection';\r\n value: string;\r\n};\r\n\r\nexport type BrandshopClickEvent = {\r\n type: 'brandshop';\r\n value: string;\r\n};\r\n/**\r\n * Union of all supported ad click payloads.\r\n */\r\nexport type TLinkClickEvent =\r\n | MultipleCategoriesClickEvent\r\n | SingleCategoryClickEvent\r\n | ProductClickEvent\r\n | CollectionClickEvent\r\n | BrandshopClickEvent;\r\n","function isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction isRecord(subject) {\n return isObject(subject) || Array.isArray(subject);\n}\nfunction canUseDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\nfunction areOptionsEqual(optionsA, optionsB) {\n const optionsAKeys = Object.keys(optionsA);\n const optionsBKeys = Object.keys(optionsB);\n if (optionsAKeys.length !== optionsBKeys.length) return false;\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}));\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}));\n if (breakpointsA !== breakpointsB) return false;\n return optionsAKeys.every(key => {\n const valueA = optionsA[key];\n const valueB = optionsB[key];\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`;\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB;\n return areOptionsEqual(valueA, valueB);\n });\n}\nfunction sortAndMapPluginToOptions(plugins) {\n return plugins.concat().sort((a, b) => a.name > b.name ? 1 : -1).map(plugin => plugin.options);\n}\nfunction arePluginsEqual(pluginsA, pluginsB) {\n if (pluginsA.length !== pluginsB.length) return false;\n const optionsA = sortAndMapPluginToOptions(pluginsA);\n const optionsB = sortAndMapPluginToOptions(pluginsB);\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index];\n return areOptionsEqual(optionA, optionB);\n });\n}\n\nexport { areOptionsEqual, arePluginsEqual, canUseDOM, sortAndMapPluginToOptions };\n//# sourceMappingURL=embla-carousel-reactive-utils.esm.js.map\n","function isNumber(subject) {\n return typeof subject === 'number';\n}\nfunction isString(subject) {\n return typeof subject === 'string';\n}\nfunction isBoolean(subject) {\n return typeof subject === 'boolean';\n}\nfunction isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction mathAbs(n) {\n return Math.abs(n);\n}\nfunction mathSign(n) {\n return Math.sign(n);\n}\nfunction deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n}\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n}\nfunction roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\n}\nfunction arrayKeys(array) {\n return objectKeys(array).map(Number);\n}\nfunction arrayLast(array) {\n return array[arrayLastIndex(array)];\n}\nfunction arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n}\nfunction arrayIsLastIndex(array, index) {\n return index === arrayLastIndex(array);\n}\nfunction arrayFromNumber(n, startAt = 0) {\n return Array.from(Array(n), (_, i) => startAt + i);\n}\nfunction objectKeys(object) {\n return Object.keys(object);\n}\nfunction objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach(key => {\n const valueA = mergedObjects[key];\n const valueB = currentObject[key];\n const areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n}\nfunction isMouseEvent(evt, ownerWindow) {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent;\n}\n\nfunction Alignment(align, viewSize) {\n const predefined = {\n start,\n center,\n end\n };\n function start() {\n return 0;\n }\n function center(n) {\n return end(n) / 2;\n }\n function end(n) {\n return viewSize - n;\n }\n function measure(n, index) {\n if (isString(align)) return predefined[align](n);\n return align(viewSize, n, index);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction EventStore() {\n let listeners = [];\n function add(node, type, handler, options = {\n passive: true\n }) {\n let removeListener;\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options);\n removeListener = () => node.removeEventListener(type, handler, options);\n } else {\n const legacyMediaQueryList = node;\n legacyMediaQueryList.addListener(handler);\n removeListener = () => legacyMediaQueryList.removeListener(handler);\n }\n listeners.push(removeListener);\n return self;\n }\n function clear() {\n listeners = listeners.filter(remove => remove());\n }\n const self = {\n add,\n clear\n };\n return self;\n}\n\nfunction Animations(ownerDocument, ownerWindow, update, render) {\n const documentVisibleHandler = EventStore();\n const fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 0;\n function init() {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset();\n });\n }\n function destroy() {\n stop();\n documentVisibleHandler.clear();\n }\n function animate(timeStamp) {\n if (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n };\n return self;\n}\n\nfunction Axis(axis, contentDirection) {\n const isRightToLeft = contentDirection === 'rtl';\n const isVertical = axis === 'y';\n const scroll = isVertical ? 'y' : 'x';\n const cross = isVertical ? 'x' : 'y';\n const sign = !isVertical && isRightToLeft ? -1 : 1;\n const startEdge = getStartEdge();\n const endEdge = getEndEdge();\n function measureSize(nodeRect) {\n const {\n height,\n width\n } = nodeRect;\n return isVertical ? height : width;\n }\n function getStartEdge() {\n if (isVertical) return 'top';\n return isRightToLeft ? 'right' : 'left';\n }\n function getEndEdge() {\n if (isVertical) return 'bottom';\n return isRightToLeft ? 'left' : 'right';\n }\n function direction(n) {\n return n * sign;\n }\n const self = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n };\n return self;\n}\n\nfunction Limit(min = 0, max = 0) {\n const length = mathAbs(min - max);\n function reachedMin(n) {\n return n < min;\n }\n function reachedMax(n) {\n return n > max;\n }\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n const self = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n const {\n constrain\n } = Limit(0, max);\n const loopEnd = max + 1;\n let counter = withinLimit(start);\n function withinLimit(n) {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd);\n }\n function get() {\n return counter;\n }\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n function add(n) {\n return clone().set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n const self = {\n get,\n set,\n add,\n clone\n };\n return self;\n}\n\nfunction DragHandler(axis, rootNode, ownerDocument, ownerWindow, target, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, baseFriction, watchDrag) {\n const {\n cross: crossAxis,\n direction\n } = axis;\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n const nonPassiveEvent = {\n passive: false\n };\n const initEvents = EventStore();\n const dragEvents = EventStore();\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20));\n const snapForceBoost = {\n mouse: 300,\n touch: 400\n };\n const freeForceBoost = {\n mouse: 500,\n touch: 600\n };\n const baseSpeed = dragFree ? 43 : 25;\n let isMoving = false;\n let startScroll = 0;\n let startCross = 0;\n let pointerIsDown = false;\n let preventScroll = false;\n let preventClick = false;\n let isMouse = false;\n function init(emblaApi) {\n if (!watchDrag) return;\n function downIfAllowed(evt) {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt);\n }\n const node = rootNode;\n initEvents.add(node, 'dragstart', evt => evt.preventDefault(), nonPassiveEvent).add(node, 'touchmove', () => undefined, nonPassiveEvent).add(node, 'touchend', () => undefined).add(node, 'touchstart', downIfAllowed).add(node, 'mousedown', downIfAllowed).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click, true);\n }\n function destroy() {\n initEvents.clear();\n dragEvents.clear();\n }\n function addDragEvents() {\n const node = isMouse ? ownerDocument : rootNode;\n dragEvents.add(node, 'touchmove', move, nonPassiveEvent).add(node, 'touchend', up).add(node, 'mousemove', move, nonPassiveEvent).add(node, 'mouseup', up);\n }\n function isFocusNode(node) {\n const nodeName = node.nodeName || '';\n return focusNodes.includes(nodeName);\n }\n function forceBoost() {\n const boost = dragFree ? freeForceBoost : snapForceBoost;\n const type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n const next = index.add(mathSign(force) * -1);\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n const isMouseEvt = isMouseEvent(evt, ownerWindow);\n isMouse = isMouseEvt;\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving;\n isMoving = deltaAbs(target.get(), location.get()) >= 2;\n if (isMouseEvt && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n scrollBody.useFriction(0).useDuration(0);\n target.set(location);\n addDragEvents();\n startScroll = dragTracker.readPoint(evt);\n startCross = dragTracker.readPoint(evt, crossAxis);\n eventHandler.emit('pointerDown');\n }\n function move(evt) {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow);\n if (isTouchEvt && evt.touches.length >= 2) return up(evt);\n const lastScroll = dragTracker.readPoint(evt);\n const lastCross = dragTracker.readPoint(evt, crossAxis);\n const diffScroll = deltaAbs(lastScroll, startScroll);\n const diffCross = deltaAbs(lastCross, startCross);\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt);\n preventScroll = diffScroll > diffCross;\n if (!preventScroll) return up(evt);\n }\n const diff = dragTracker.pointerMove(evt);\n if (diffScroll > dragThreshold) preventClick = true;\n scrollBody.useFriction(0.3).useDuration(0.75);\n animation.start();\n target.add(direction(diff));\n evt.preventDefault();\n }\n function up(evt) {\n const currentLocation = scrollTarget.byDistance(0, false);\n const targetChanged = currentLocation.index !== index.get();\n const rawForce = dragTracker.pointerUp(evt) * forceBoost();\n const force = allowedForce(direction(rawForce), targetChanged);\n const forceFactor = factorAbs(rawForce, force);\n const speed = baseSpeed - 10 * forceFactor;\n const friction = baseFriction + forceFactor / 50;\n preventScroll = false;\n pointerIsDown = false;\n dragEvents.clear();\n scrollBody.useDuration(speed).useFriction(friction);\n scrollTo.distance(force, !dragFree);\n isMouse = false;\n eventHandler.emit('pointerUp');\n }\n function click(evt) {\n if (preventClick) {\n evt.stopPropagation();\n evt.preventDefault();\n preventClick = false;\n }\n }\n function pointerDown() {\n return pointerIsDown;\n }\n const self = {\n init,\n destroy,\n pointerDown\n };\n return self;\n}\n\nfunction DragTracker(axis, ownerWindow) {\n const logInterval = 170;\n let startEvent;\n let lastEvent;\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n const property = evtAxis || axis.scroll;\n const coord = `client${property === 'x' ? 'X' : 'Y'}`;\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n const diff = readPoint(evt) - readPoint(lastEvent);\n const expired = readTime(evt) - readTime(startEvent) > logInterval;\n lastEvent = evt;\n if (expired) startEvent = evt;\n return diff;\n }\n function pointerUp(evt) {\n if (!startEvent || !lastEvent) return 0;\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent);\n const diffTime = readTime(evt) - readTime(startEvent);\n const expired = readTime(evt) - readTime(lastEvent) > logInterval;\n const force = diffDrag / diffTime;\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1;\n return isFlick ? force : 0;\n }\n const self = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n };\n return self;\n}\n\nfunction NodeRects() {\n function measure(node) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = node;\n const offset = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n };\n return offset;\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects) {\n const observeNodes = [container].concat(slides);\n let resizeObserver;\n let containerSize;\n let slideSizes = [];\n let destroyed = false;\n function readSize(node) {\n return axis.measureSize(nodeRects.measure(node));\n }\n function init(emblaApi) {\n if (!watchResize) return;\n containerSize = readSize(container);\n slideSizes = slides.map(readSize);\n function defaultCallback(entries) {\n for (const entry of entries) {\n if (destroyed) return;\n const isContainer = entry.target === container;\n const slideIndex = slides.indexOf(entry.target);\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex];\n const newSize = readSize(isContainer ? container : slides[slideIndex]);\n const diffSize = mathAbs(newSize - lastSize);\n if (diffSize >= 0.5) {\n emblaApi.reInit();\n eventHandler.emit('resize');\n break;\n }\n }\n }\n resizeObserver = new ResizeObserver(entries => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries);\n }\n });\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach(node => resizeObserver.observe(node));\n });\n }\n function destroy() {\n destroyed = true;\n if (resizeObserver) resizeObserver.disconnect();\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction ScrollBody(location, offsetLocation, previousLocation, target, baseDuration, baseFriction) {\n let scrollVelocity = 0;\n let scrollDirection = 0;\n let scrollDuration = baseDuration;\n let scrollFriction = baseFriction;\n let rawLocation = location.get();\n let rawLocationPrevious = 0;\n function seek() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\n rawLocationPrevious = rawLocation;\n return self;\n }\n function settled() {\n const diff = target.get() - offsetLocation.get();\n return mathAbs(diff) < 0.001;\n }\n function duration() {\n return scrollDuration;\n }\n function direction() {\n return scrollDirection;\n }\n function velocity() {\n return scrollVelocity;\n }\n function useBaseDuration() {\n return useDuration(baseDuration);\n }\n function useBaseFriction() {\n return useFriction(baseFriction);\n }\n function useDuration(n) {\n scrollDuration = n;\n return self;\n }\n function useFriction(n) {\n scrollFriction = n;\n return self;\n }\n const self = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n };\n return self;\n}\n\nfunction ScrollBounds(limit, location, target, scrollBody, percentOfView) {\n const pullBackThreshold = percentOfView.measure(10);\n const edgeOffsetTolerance = percentOfView.measure(50);\n const frictionLimit = Limit(0.1, 0.99);\n let disabled = false;\n function shouldConstrain() {\n if (disabled) return false;\n if (!limit.reachedAny(target.get())) return false;\n if (!limit.reachedAny(location.get())) return false;\n return true;\n }\n function constrain(pointerDown) {\n if (!shouldConstrain()) return;\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max';\n const diffToEdge = mathAbs(limit[edge] - location.get());\n const diffToTarget = target.get() - location.get();\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance);\n target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useDuration(25).useBaseFriction();\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n const self = {\n shouldConstrain,\n constrain,\n toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance) {\n const scrollBounds = Limit(-contentSize + viewSize, 0);\n const snapsBounded = measureBounded();\n const scrollContainLimit = findScrollContainLimit();\n const snapsContained = measureContained();\n function usePixelTolerance(bound, snap) {\n return deltaAbs(bound, snap) <= 1;\n }\n function findScrollContainLimit() {\n const startSnap = snapsBounded[0];\n const endSnap = arrayLast(snapsBounded);\n const min = snapsBounded.lastIndexOf(startSnap);\n const max = snapsBounded.indexOf(endSnap) + 1;\n return Limit(min, max);\n }\n function measureBounded() {\n return snapsAligned.map((snapAligned, index) => {\n const {\n min,\n max\n } = scrollBounds;\n const snap = scrollBounds.constrain(snapAligned);\n const isFirst = !index;\n const isLast = arrayIsLastIndex(snapsAligned, index);\n if (isFirst) return max;\n if (isLast) return min;\n if (usePixelTolerance(min, snap)) return min;\n if (usePixelTolerance(max, snap)) return max;\n return snap;\n }).map(scrollBound => parseFloat(scrollBound.toFixed(3)));\n }\n function measureContained() {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n const {\n min,\n max\n } = scrollContainLimit;\n return snapsBounded.slice(min, max);\n }\n const self = {\n snapsContained,\n scrollContainLimit\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n const max = scrollSnaps[0];\n const min = loop ? max - contentSize : arrayLast(scrollSnaps);\n const limit = Limit(min, max);\n const self = {\n limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, limit, location, vectors) {\n const jointSafety = 0.1;\n const min = limit.min + jointSafety;\n const max = limit.max + jointSafety;\n const {\n reachedMin,\n reachedMax\n } = Limit(min, max);\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n function loop(direction) {\n if (!shouldLoop(direction)) return;\n const loopDistance = contentSize * (direction * -1);\n vectors.forEach(v => v.add(loopDistance));\n }\n const self = {\n loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n const {\n max,\n length\n } = limit;\n function get(n) {\n const currentLocation = n - max;\n return length ? currentLocation / -length : 0;\n }\n const self = {\n get\n };\n return self;\n}\n\nfunction ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll) {\n const {\n startEdge,\n endEdge\n } = axis;\n const {\n groupSlides\n } = slidesToScroll;\n const alignments = measureSizes().map(alignment.measure);\n const snaps = measureUnaligned();\n const snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects).map(rects => arrayLast(rects)[endEdge] - rects[0][startEdge]).map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects.map(rect => containerRect[startEdge] - rect[startEdge]).map(snap => -mathAbs(snap));\n }\n function measureAligned() {\n return groupSlides(snaps).map(g => g[0]).map((snap, index) => snap + alignments[index]);\n }\n const self = {\n snaps,\n snapsAligned\n };\n return self;\n}\n\nfunction SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes) {\n const {\n groupSlides\n } = slidesToScroll;\n const {\n min,\n max\n } = scrollContainLimit;\n const slideRegistry = createSlideRegistry();\n function createSlideRegistry() {\n const groupedSlideIndexes = groupSlides(slideIndexes);\n const doNotContain = !containSnaps || containScroll === 'keepSnaps';\n if (scrollSnaps.length === 1) return [slideIndexes];\n if (doNotContain) return groupedSlideIndexes;\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(groups, index);\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1;\n return arrayFromNumber(range);\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1;\n return arrayFromNumber(range, arrayLast(groups)[0]);\n }\n return group;\n });\n }\n const self = {\n slideRegistry\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n const {\n reachedAny,\n removeOffset,\n constrain\n } = limit;\n function minDistance(distances) {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0];\n }\n function findTargetSnap(target) {\n const distance = loop ? removeOffset(target) : constrain(target);\n const ascDiffsToSnaps = scrollSnaps.map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index\n })).sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff));\n const {\n index\n } = ascDiffsToSnaps[0];\n return {\n index,\n distance\n };\n }\n function shortcut(target, direction) {\n const targets = [target, target + contentSize, target - contentSize];\n if (!loop) return target;\n if (!direction) return minDistance(targets);\n const matchingTargets = targets.filter(t => mathSign(t) === direction);\n if (matchingTargets.length) return minDistance(matchingTargets);\n return arrayLast(targets) - contentSize;\n }\n function byIndex(index, direction) {\n const diffToSnap = scrollSnaps[index] - targetVector.get();\n const distance = shortcut(diffToSnap, direction);\n return {\n index,\n distance\n };\n }\n function byDistance(distance, snap) {\n const target = targetVector.get() + distance;\n const {\n index,\n distance: targetSnapDistance\n } = findTargetSnap(target);\n const reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index,\n distance\n };\n const diffToSnap = scrollSnaps[index] - targetSnapDistance;\n const snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index,\n distance: snapDistance\n };\n }\n const self = {\n byDistance,\n byIndex,\n shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollBody, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n const distanceDiff = target.distance;\n const indexDiff = target.index !== indexCurrent.get();\n targetVector.add(distanceDiff);\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start();\n } else {\n animation.update();\n animation.render(1);\n animation.update();\n }\n }\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n eventHandler.emit('select');\n }\n }\n function distance(n, snap) {\n const target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n const targetIndex = indexCurrent.clone().set(n);\n const target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n const self = {\n distance,\n index\n };\n return self;\n}\n\nfunction SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus) {\n const focusListenerOptions = {\n passive: true,\n capture: true\n };\n let lastTabPressTime = 0;\n function init(emblaApi) {\n if (!watchFocus) return;\n function defaultCallback(index) {\n const nowTime = new Date().getTime();\n const diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n eventHandler.emit('slideFocusStart');\n root.scrollLeft = 0;\n const group = slideRegistry.findIndex(group => group.includes(index));\n if (!isNumber(group)) return;\n scrollBody.useDuration(0);\n scrollTo.index(group, 0);\n eventHandler.emit('slideFocus');\n }\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach((slide, slideIndex) => {\n eventStore.add(slide, 'focus', evt => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex);\n }\n }, focusListenerOptions);\n });\n }\n function registerTabPress(event) {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime();\n }\n const self = {\n init\n };\n return self;\n}\n\nfunction Vector1D(initialValue) {\n let value = initialValue;\n function get() {\n return value;\n }\n function set(n) {\n value = normalizeInput(n);\n }\n function add(n) {\n value += normalizeInput(n);\n }\n function subtract(n) {\n value -= normalizeInput(n);\n }\n function normalizeInput(n) {\n return isNumber(n) ? n : n.get();\n }\n const self = {\n get,\n set,\n add,\n subtract\n };\n return self;\n}\n\nfunction Translate(axis, container) {\n const translate = axis.scroll === 'x' ? x : y;\n const containerStyle = container.style;\n let previousTarget = null;\n let disabled = false;\n function x(n) {\n return `translate3d(${n}px,0px,0px)`;\n }\n function y(n) {\n return `translate3d(0px,${n}px,0px)`;\n }\n function to(target) {\n if (disabled) return;\n const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\n }\n function toggleActive(active) {\n disabled = !active;\n }\n function clear() {\n if (disabled) return;\n containerStyle.transform = '';\n if (!container.getAttribute('style')) container.removeAttribute('style');\n }\n const self = {\n clear,\n to,\n toggleActive\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, location, slides) {\n const roundingSafety = 0.5;\n const ascItems = arrayKeys(slideSizesWithGaps);\n const descItems = arrayKeys(slideSizesWithGaps).reverse();\n const loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce((a, i) => {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce((a, i) => {\n const remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findSlideBounds(offset) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }));\n }\n function findLoopPoints(indexes, offset, isEndEdge) {\n const slideBounds = findSlideBounds(offset);\n return indexes.map(index => {\n const initial = isEndEdge ? 0 : -contentSize;\n const altered = isEndEdge ? contentSize : 0;\n const boundEdge = isEndEdge ? 'end' : 'start';\n const loopPoint = slideBounds[index][boundEdge];\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => location.get() > loopPoint ? initial : altered\n };\n });\n }\n function startPoints() {\n const gap = scrollSnaps[0];\n const indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, contentSize, false);\n }\n function endPoints() {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, -contentSize, true);\n }\n function canLoop() {\n return loopPoints.every(({\n index\n }) => {\n const otherIndexes = ascItems.filter(i => i !== index);\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(loopPoint => {\n const {\n target,\n translate,\n slideLocation\n } = loopPoint;\n const shiftLocation = target();\n if (shiftLocation === slideLocation.get()) return;\n translate.to(shiftLocation);\n slideLocation.set(shiftLocation);\n });\n }\n function clear() {\n loopPoints.forEach(loopPoint => loopPoint.translate.clear());\n }\n const self = {\n canLoop,\n clear,\n loop,\n loopPoints\n };\n return self;\n}\n\nfunction SlidesHandler(container, eventHandler, watchSlides) {\n let mutationObserver;\n let destroyed = false;\n function init(emblaApi) {\n if (!watchSlides) return;\n function defaultCallback(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit();\n eventHandler.emit('slidesChanged');\n break;\n }\n }\n }\n mutationObserver = new MutationObserver(mutations => {\n if (destroyed) return;\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations);\n }\n });\n mutationObserver.observe(container, {\n childList: true\n });\n }\n function destroy() {\n if (mutationObserver) mutationObserver.disconnect();\n destroyed = true;\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction SlidesInView(container, slides, eventHandler, threshold) {\n const intersectionEntryMap = {};\n let inViewCache = null;\n let notInViewCache = null;\n let intersectionObserver;\n let destroyed = false;\n function init() {\n intersectionObserver = new IntersectionObserver(entries => {\n if (destroyed) return;\n entries.forEach(entry => {\n const index = slides.indexOf(entry.target);\n intersectionEntryMap[index] = entry;\n });\n inViewCache = null;\n notInViewCache = null;\n eventHandler.emit('slidesInView');\n }, {\n root: container.parentElement,\n threshold\n });\n slides.forEach(slide => intersectionObserver.observe(slide));\n }\n function destroy() {\n if (intersectionObserver) intersectionObserver.disconnect();\n destroyed = true;\n }\n function createInViewList(inView) {\n return objectKeys(intersectionEntryMap).reduce((list, slideIndex) => {\n const index = parseInt(slideIndex);\n const {\n isIntersecting\n } = intersectionEntryMap[index];\n const inViewMatch = inView && isIntersecting;\n const notInViewMatch = !inView && !isIntersecting;\n if (inViewMatch || notInViewMatch) list.push(index);\n return list;\n }, []);\n }\n function get(inView = true) {\n if (inView && inViewCache) return inViewCache;\n if (!inView && notInViewCache) return notInViewCache;\n const slideIndexes = createInViewList(inView);\n if (inView) inViewCache = slideIndexes;\n if (!inView) notInViewCache = slideIndexes;\n return slideIndexes;\n }\n const self = {\n init,\n destroy,\n get\n };\n return self;\n}\n\nfunction SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow) {\n const {\n measureSize,\n startEdge,\n endEdge\n } = axis;\n const withEdgeGap = slideRects[0] && readEdgeGap;\n const startGap = measureStartGap();\n const endGap = measureEndGap();\n const slideSizes = slideRects.map(measureSize);\n const slideSizesWithGaps = measureWithGaps();\n function measureStartGap() {\n if (!withEdgeGap) return 0;\n const slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n const style = ownerWindow.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`));\n }\n function measureWithGaps() {\n return slideRects.map((rect, index, rects) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(rects, index);\n if (isFirst) return slideSizes[index] + startGap;\n if (isLast) return slideSizes[index] + endGap;\n return rects[index + 1][startEdge] - rect[startEdge];\n }).map(mathAbs);\n }\n const self = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n };\n return self;\n}\n\nfunction SlidesToScroll(axis, viewSize, slidesToScroll, loop, containerRect, slideRects, startGap, endGap, pixelTolerance) {\n const {\n startEdge,\n endEdge,\n direction\n } = axis;\n const groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array).filter(i => i % groupSize === 0).map(i => array.slice(i, i + groupSize));\n }\n function bySize(array) {\n if (!array.length) return [];\n return arrayKeys(array).reduce((groups, rectB, index) => {\n const rectA = arrayLast(groups) || 0;\n const isFirst = rectA === 0;\n const isLast = rectB === arrayLastIndex(array);\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge];\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge];\n const gapA = !loop && isFirst ? direction(startGap) : 0;\n const gapB = !loop && isLast ? direction(endGap) : 0;\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA));\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB);\n if (isLast) groups.push(array.length);\n return groups;\n }, []).map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0);\n return array.slice(previousSize, currentSize);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n const self = {\n groupSlides\n };\n return self;\n}\n\nfunction Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler) {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag,\n watchFocus\n } = options;\n // Measurements\n const pixelTolerance = 2;\n const nodeRects = NodeRects();\n const containerRect = nodeRects.measure(container);\n const slideRects = slides.map(nodeRects.measure);\n const axis = Axis(scrollAxis, direction);\n const viewSize = axis.measureSize(containerRect);\n const percentOfView = PercentOfView(viewSize);\n const alignment = Alignment(align, viewSize);\n const containSnaps = !loop && !!containScroll;\n const readEdgeGap = loop || !!containScroll;\n const {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n } = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow);\n const slidesToScroll = SlidesToScroll(axis, viewSize, groupSlides, loop, containerRect, slideRects, startGap, endGap, pixelTolerance);\n const {\n snaps,\n snapsAligned\n } = ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll);\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n const {\n snapsContained,\n scrollContainLimit\n } = ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance);\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n const {\n limit\n } = ScrollLimit(contentSize, scrollSnaps, loop);\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n const indexPrevious = index.clone();\n const slideIndexes = arrayKeys(slides);\n // Animation\n const update = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: {\n loop\n }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\n // Shared\n const friction = 0.68;\n const startLocation = scrollSnaps[index.get()];\n const location = Vector1D(startLocation);\n const previousLocation = Vector1D(startLocation);\n const offsetLocation = Vector1D(startLocation);\n const target = Vector1D(startLocation);\n const scrollBody = ScrollBody(location, offsetLocation, previousLocation, target, duration, friction);\n const scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n const scrollTo = ScrollTo(animation, index, indexPrevious, scrollBody, scrollTarget, target, eventHandler);\n const scrollProgress = ScrollProgress(limit);\n const eventStore = EventStore();\n const slidesInView = SlidesInView(container, slides, eventHandler, inViewThreshold);\n const {\n slideRegistry\n } = SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes);\n const slideFocus = SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus);\n // Engine\n const engine = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(axis, root, ownerDocument, ownerWindow, target, DragTracker(axis, ownerWindow), location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, friction, watchDrag),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects),\n scrollBody,\n scrollBounds: ScrollBounds(limit, offsetLocation, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [location, offsetLocation, previousLocation, target]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, offsetLocation, slides),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n };\n return engine;\n}\n\nfunction EventHandler() {\n let listeners = {};\n let api;\n function init(emblaApi) {\n api = emblaApi;\n }\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(e => e(api, evt));\n return self;\n }\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(e => e !== cb);\n return self;\n }\n function clear() {\n listeners = {};\n }\n const self = {\n init,\n emit,\n off,\n on,\n clear\n };\n return self;\n}\n\nconst defaultOptions = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true,\n watchFocus: true\n};\n\nfunction OptionsHandler(ownerWindow) {\n function mergeOptions(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function optionsAtMedia(options) {\n const optionsAtMedia = options.breakpoints || {};\n const matchedMediaOptions = objectKeys(optionsAtMedia).filter(media => ownerWindow.matchMedia(media).matches).map(media => optionsAtMedia[media]).reduce((a, mediaOption) => mergeOptions(a, mediaOption), {});\n return mergeOptions(options, matchedMediaOptions);\n }\n function optionsMediaQueries(optionsList) {\n return optionsList.map(options => objectKeys(options.breakpoints || {})).reduce((acc, mediaQueries) => acc.concat(mediaQueries), []).map(ownerWindow.matchMedia);\n }\n const self = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n };\n return self;\n}\n\nfunction PluginsHandler(optionsHandler) {\n let activePlugins = [];\n function init(emblaApi, plugins) {\n activePlugins = plugins.filter(({\n options\n }) => optionsHandler.optionsAtMedia(options).active !== false);\n activePlugins.forEach(plugin => plugin.init(emblaApi, optionsHandler));\n return plugins.reduce((map, plugin) => Object.assign(map, {\n [plugin.name]: plugin\n }), {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(plugin => plugin.destroy());\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction EmblaCarousel(root, userOptions, userPlugins) {\n const ownerDocument = root.ownerDocument;\n const ownerWindow = ownerDocument.defaultView;\n const optionsHandler = OptionsHandler(ownerWindow);\n const pluginsHandler = PluginsHandler(optionsHandler);\n const mediaHandlers = EventStore();\n const eventHandler = EventHandler();\n const {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n } = optionsHandler;\n const {\n on,\n off,\n emit\n } = eventHandler;\n const reInit = reActivate;\n let destroyed = false;\n let engine;\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions);\n let options = mergeOptions(optionsBase);\n let pluginList = [];\n let pluginApis;\n let container;\n let slides;\n function storeElements() {\n const {\n container: userContainer,\n slides: userSlides\n } = options;\n const customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n const customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function createEngine(options) {\n const engine = Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler);\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, {\n loop: false\n });\n return createEngine(optionsWithoutLoop);\n }\n return engine;\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = mergeOptions(optionsBase, withOptions);\n options = optionsAtMedia(optionsBase);\n pluginList = withPlugins || pluginList;\n storeElements();\n engine = createEngine(options);\n optionsMediaQueries([optionsBase, ...pluginList.map(({\n options\n }) => options)]).forEach(query => mediaHandlers.add(query, 'change', reActivate));\n if (!options.active) return;\n engine.translate.to(engine.location.get());\n engine.animation.init();\n engine.slidesInView.init();\n engine.slideFocus.init(self);\n engine.eventHandler.init(self);\n engine.resizeHandler.init(self);\n engine.slidesHandler.init(self);\n if (engine.options.loop) engine.slideLooper.loop();\n if (container.offsetParent && slides.length) engine.dragHandler.init(self);\n pluginApis = pluginsHandler.init(self, pluginList);\n }\n function reActivate(withOptions, withPlugins) {\n const startIndex = selectedScrollSnap();\n deActivate();\n activate(mergeOptions({\n startIndex\n }, withOptions), withPlugins);\n eventHandler.emit('reInit');\n }\n function deActivate() {\n engine.dragHandler.destroy();\n engine.eventStore.clear();\n engine.translate.clear();\n engine.slideLooper.clear();\n engine.resizeHandler.destroy();\n engine.slidesHandler.destroy();\n engine.slidesInView.destroy();\n engine.animation.destroy();\n pluginsHandler.destroy();\n mediaHandlers.clear();\n }\n function destroy() {\n if (destroyed) return;\n destroyed = true;\n mediaHandlers.clear();\n deActivate();\n eventHandler.emit('destroy');\n eventHandler.clear();\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseFriction().useDuration(jump === true ? 0 : options.duration);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n const next = engine.index.add(1).get();\n scrollTo(next, jump, -1);\n }\n function scrollPrev(jump) {\n const prev = engine.index.add(-1).get();\n scrollTo(prev, jump, 1);\n }\n function canScrollNext() {\n const next = engine.index.add(1).get();\n return next !== selectedScrollSnap();\n }\n function canScrollPrev() {\n const prev = engine.index.add(-1).get();\n return prev !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnapList;\n }\n function scrollProgress() {\n return engine.scrollProgress.get(engine.offsetLocation.get());\n }\n function selectedScrollSnap() {\n return engine.index.get();\n }\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n function slidesInView() {\n return engine.slidesInView.get();\n }\n function slidesNotInView() {\n return engine.slidesInView.get(false);\n }\n function plugins() {\n return pluginApis;\n }\n function internalEngine() {\n return engine;\n }\n function rootNode() {\n return root;\n }\n function containerNode() {\n return container;\n }\n function slideNodes() {\n return slides;\n }\n const self = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n };\n activate(userOptions, userPlugins);\n setTimeout(() => eventHandler.emit('init'), 0);\n return self;\n}\nEmblaCarousel.globalOptions = undefined;\n\nexport { EmblaCarousel as default };\n//# sourceMappingURL=embla-carousel.esm.js.map\n","import { useRef, useState, useCallback, useEffect } from 'react';\nimport { areOptionsEqual, arePluginsEqual, canUseDOM } from 'embla-carousel-reactive-utils';\nimport EmblaCarousel from 'embla-carousel';\n\nfunction useEmblaCarousel(options = {}, plugins = []) {\n const storedOptions = useRef(options);\n const storedPlugins = useRef(plugins);\n const [emblaApi, setEmblaApi] = useState();\n const [viewport, setViewport] = useState();\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current);\n }, [emblaApi]);\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return;\n storedOptions.current = options;\n reInit();\n }, [options, reInit]);\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return;\n storedPlugins.current = plugins;\n reInit();\n }, [plugins, reInit]);\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions;\n const newEmblaApi = EmblaCarousel(viewport, storedOptions.current, storedPlugins.current);\n setEmblaApi(newEmblaApi);\n return () => newEmblaApi.destroy();\n } else {\n setEmblaApi(undefined);\n }\n }, [viewport, setEmblaApi]);\n return [setViewport, emblaApi];\n}\nuseEmblaCarousel.globalOptions = undefined;\n\nexport { useEmblaCarousel as default };\n//# sourceMappingURL=embla-carousel-react.esm.js.map\n","export default \"data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='android-chevron_right'%3e%3cpath%20id='Vector'%20d='M8.0876%205L6.9126%206.175L10.7293%2010L6.9126%2013.825L8.0876%2015L13.0876%2010L8.0876%205Z'%20fill='%233E3E3E'/%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20width='20'%20height='20'%20viewBox='0%200%2020%2020'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20id='android-chevron_left'%3e%3cpath%20id='Vector'%20d='M13.0876%206.175L11.9126%205L6.9126%2010L11.9126%2015L13.0876%2013.825L9.27093%2010L13.0876%206.175Z'%20fill='%233E3E3E'/%3e%3c/g%3e%3c/svg%3e\"","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { twMerge } from 'tailwind-merge';\r\n\r\nexport function mergeClasses(\r\n ...classes: (string | false | null | undefined)[]\r\n) {\r\n return twMerge(classes.filter(Boolean).join(' '));\r\n}\r\n","import { useEffect } from 'react';\nimport { type EmblaCarouselType } from 'embla-carousel';\nimport { type TDirection } from '@/types/types';\n\nexport function useSwipeThreshold(\n api: EmblaCarouselType | undefined,\n direction: TDirection,\n thresholdPercentage: number = 10, //default 10% swipe threshold\n) {\n useEffect(() => {\n if (!api) return;\n\n let dragStartX = 0;\n let startIndex = 0;\n\n const isRTL = direction === 'rtl';\n\n const onPointerDown = (event: PointerEvent) => {\n dragStartX = event.clientX;\n startIndex = api.selectedScrollSnap();\n };\n\n const onPointerUp = (event: PointerEvent) => {\n const dragEndX = event.clientX;\n\n const dragDistance = dragEndX - dragStartX;\n\n const containerWidth = api.containerNode().getBoundingClientRect().width;\n const dragDistancePercentage =\n (Math.abs(dragDistance) / containerWidth) * 100;\n\n // wait one frame to check if Embla has already moved\n requestAnimationFrame(() => {\n if (api.selectedScrollSnap() !== startIndex) {\n return; // Embla already moved\n }\n // Check if the drag distance exceeds the threshold\n else if (dragDistancePercentage >= thresholdPercentage) {\n if ((dragDistance < 0 && !isRTL) || (dragDistance > 0 && isRTL)) {\n api.scrollNext();\n } else {\n api.scrollPrev();\n }\n } else {\n // Not enough swipe - snap back to the start index\n api.scrollTo(startIndex);\n }\n });\n };\n\n const viewport = api.containerNode();\n viewport.addEventListener('pointerdown', onPointerDown);\n viewport.addEventListener('pointerup', onPointerUp);\n\n return () => {\n viewport.removeEventListener('pointerdown', onPointerDown);\n viewport.removeEventListener('pointerup', onPointerUp);\n };\n }, [api]);\n}\n","'use client';\r\n\r\nimport * as React from 'react';\r\nimport useEmblaCarousel, {\r\n type UseEmblaCarouselType,\r\n} from 'embla-carousel-react';\r\nimport type Autoplay from 'embla-carousel-autoplay';\r\nimport blackChevronRight from '@/assets/black-chevron-right.svg';\r\nimport blackChevronLeft from '@/assets/black-chevron-left.svg';\r\nimport { mergeClasses } from '@/utils/helpers/mergeClasses';\r\nimport { useSwipeThreshold } from '@/hooks/useSwipeThreshold';\r\n\r\ntype AdCarouselApi = UseEmblaCarouselType[1];\r\ntype UseAdCarouselParameters = Parameters<typeof useEmblaCarousel>;\r\ntype AdCarouselOptions = UseAdCarouselParameters[0];\r\ntype AdCarouselPlugin = UseAdCarouselParameters[1];\r\n\r\ntype AdCarouselProps = {\r\n opts?: AdCarouselOptions;\r\n plugins?: AdCarouselPlugin;\r\n orientation?: 'horizontal' | 'vertical';\r\n swipeThresholdPercentage?: number;\r\n transitionDuration?: number;\r\n setApi?: (api: AdCarouselApi) => void;\r\n};\r\n\r\ntype AdCarouselContextProps = {\r\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\r\n api: ReturnType<typeof useEmblaCarousel>[1];\r\n scrollPrev: () => void;\r\n scrollNext: () => void;\r\n canScrollPrev: boolean;\r\n canScrollNext: boolean;\r\n} & AdCarouselProps;\r\n\r\ntype AdCarouselPaginationProps = {\r\n slidesCount: number;\r\n currentIndex: number;\r\n onClick: (index: number) => void;\r\n autoplay?: ReturnType<typeof Autoplay>;\r\n delay?: number;\r\n isRtl?: boolean;\r\n showProgress?: boolean;\r\n containerClassName?: string;\r\n buttonClassName?: string;\r\n progressContainerClassName?: string;\r\n progressBarClassName?: string;\r\n dotClassName?: string;\r\n activeDotClassName?: string;\r\n inactiveDotClassName?: string;\r\n};\r\ntype TAdCarouselButtonProps = {\r\n className?: string;\r\n iconClassName?: string;\r\n autoplay?: ReturnType<typeof Autoplay>;\r\n};\r\n\r\nconst AdCarouselContext = React.createContext<AdCarouselContextProps | null>(\r\n null,\r\n);\r\n\r\nfunction useCarousel() {\r\n const context = React.useContext(AdCarouselContext);\r\n\r\n if (!context) {\r\n throw new Error('useCarousel must be used within a <Carousel />');\r\n }\r\n\r\n return context;\r\n}\r\n\r\nconst AdCarousel = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement> & AdCarouselProps\r\n>(\r\n (\r\n {\r\n orientation = 'horizontal',\r\n opts,\r\n setApi,\r\n plugins,\r\n swipeThresholdPercentage,\r\n transitionDuration = 20, //default 400ms\r\n className,\r\n children,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [carouselRef, api] = useEmblaCarousel(\r\n {\r\n ...opts,\r\n axis: orientation === 'horizontal' ? 'x' : 'y',\r\n duration: transitionDuration,\r\n },\r\n plugins,\r\n );\r\n useSwipeThreshold(api, opts?.direction ?? 'ltr', swipeThresholdPercentage);\r\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\r\n const [canScrollNext, setCanScrollNext] = React.useState(false);\r\n\r\n const onSelect = React.useCallback((api: AdCarouselApi) => {\r\n if (!api) {\r\n return;\r\n }\r\n\r\n setCanScrollPrev(api.canScrollPrev());\r\n setCanScrollNext(api.canScrollNext());\r\n }, []);\r\n\r\n const scrollPrev = React.useCallback(() => {\r\n api?.scrollPrev();\r\n }, [api]);\r\n\r\n const scrollNext = React.useCallback(() => {\r\n api?.scrollNext();\r\n }, [api]);\r\n\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === 'ArrowLeft') {\r\n event.preventDefault();\r\n scrollPrev();\r\n } else if (event.key === 'ArrowRight') {\r\n event.preventDefault();\r\n scrollNext();\r\n }\r\n },\r\n [scrollPrev, scrollNext],\r\n );\r\n\r\n React.useEffect(() => {\r\n if (!api || !setApi) {\r\n return;\r\n }\r\n\r\n setApi(api);\r\n }, [api, setApi]);\r\n\r\n React.useEffect(() => {\r\n if (!api) {\r\n return;\r\n }\r\n\r\n onSelect(api);\r\n api.on('reInit', onSelect);\r\n api.on('select', onSelect);\r\n\r\n return () => {\r\n api?.off('select', onSelect);\r\n };\r\n }, [api, onSelect]);\r\n\r\n return (\r\n <AdCarouselContext.Provider\r\n value={React.useMemo(\r\n () => ({\r\n carouselRef,\r\n api: api,\r\n opts,\r\n plugins,\r\n orientation:\r\n orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\r\n scrollPrev,\r\n scrollNext,\r\n canScrollPrev,\r\n canScrollNext,\r\n }),\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [\r\n carouselRef,\r\n api,\r\n plugins,\r\n opts,\r\n orientation,\r\n canScrollPrev,\r\n canScrollNext,\r\n ],\r\n )}\r\n >\r\n <div\r\n ref={ref}\r\n onKeyDownCapture={handleKeyDown}\r\n className={mergeClasses('relative group', className)}\r\n aria-roledescription=\"carousel\"\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </AdCarouselContext.Provider>\r\n );\r\n },\r\n);\r\nAdCarousel.displayName = 'Carousel';\r\n\r\nconst AdCarouselContent = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n const { carouselRef } = useCarousel();\r\n\r\n return (\r\n <div ref={carouselRef} className={'overflow-hidden h-full'}>\r\n <div\r\n ref={ref}\r\n className={mergeClasses('flex group', className)}\r\n {...props}\r\n />\r\n </div>\r\n );\r\n});\r\nAdCarouselContent.displayName = 'CarouselContent';\r\n\r\nconst AdCarouselItem = React.forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n aria-roledescription=\"slide\"\r\n className={mergeClasses(\r\n 'group min-w-0 shrink-0 grow-0 basis-full',\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nAdCarouselItem.displayName = 'CarouselItem';\r\n\r\nconst AdCarouselPrevious = React.forwardRef<\r\n HTMLButtonElement,\r\n TAdCarouselButtonProps\r\n>(({ className, iconClassName, autoplay, ...props }, ref) => {\r\n const { scrollPrev, canScrollPrev } = useCarousel();\r\n return (\r\n <button\r\n ref={ref}\r\n className={mergeClasses(\r\n 'absolute outline-none items-center justify-center rounded-full hidden laptop:group-hover:flex laptop:group-hover:disabled:hidden p-2xsmall border-[0.5px] aspect-square top-1/2 custom-translate-y-1-2 start-small shadow-[0_1px_2px_0_#E0E3E8] flip-horizontal',\r\n className,\r\n )}\r\n disabled={!canScrollPrev}\r\n onClick={() => {\r\n scrollPrev();\r\n autoplay?.reset?.();\r\n }}\r\n {...props}\r\n >\r\n <img\r\n src={blackChevronLeft}\r\n className={mergeClasses(\r\n 'w-[30px] h-[30px] object-contain',\r\n iconClassName,\r\n )}\r\n alt=\"previous\"\r\n />\r\n </button>\r\n );\r\n});\r\nAdCarouselPrevious.displayName = 'CarouselPrevious';\r\n\r\nconst AdCarouselNext = React.forwardRef<\r\n HTMLButtonElement,\r\n TAdCarouselButtonProps\r\n>(({ className, iconClassName, autoplay, ...props }, ref) => {\r\n const { scrollNext, canScrollNext } = useCarousel();\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n className={mergeClasses(\r\n 'absolute outline-none items-center justify-center rounded-full hidden laptop:group-hover:flex laptop:group-hover:disabled:hidden p-2xsmall border-[0.5px] aspect-square top-1/2 custom-translate-y-1-2 end-small disabled:hidden shadow-[0_1px_2px_0_#E0E3E8] flip-horizontal',\r\n className,\r\n )}\r\n disabled={!canScrollNext}\r\n onClick={() => {\r\n scrollNext();\r\n autoplay?.reset?.();\r\n }}\r\n {...props}\r\n >\r\n <img\r\n src={blackChevronRight}\r\n className={mergeClasses(\r\n 'w-[30px] h-[30px] object-contain',\r\n iconClassName,\r\n )}\r\n alt=\"next\"\r\n />\r\n </button>\r\n );\r\n});\r\nAdCarouselNext.displayName = 'CarouselNext';\r\n\r\nconst AdCarouselPagination = ({\r\n slidesCount,\r\n currentIndex,\r\n onClick,\r\n autoplay,\r\n delay = 4000,\r\n isRtl = false,\r\n showProgress = true,\r\n containerClassName,\r\n buttonClassName,\r\n progressContainerClassName,\r\n progressBarClassName,\r\n dotClassName,\r\n activeDotClassName,\r\n inactiveDotClassName,\r\n}: AdCarouselPaginationProps) => {\r\n const [progress, setProgress] = React.useState(0);\r\n const requestAnimationFrameRef = React.useRef<number>(0);\r\n\r\n const animateProgress = () => {\r\n const remainingMs = autoplay?.timeUntilNext?.();\r\n const progress = remainingMs && delay > 0 ? 1 - remainingMs / delay : 0;\r\n\r\n setProgress(progress);\r\n requestAnimationFrameRef.current = requestAnimationFrame(animateProgress);\r\n };\r\n\r\n React.useEffect(() => {\r\n if (!showProgress) return;\r\n\r\n requestAnimationFrameRef.current = requestAnimationFrame(animateProgress);\r\n return () => {\r\n cancelAnimationFrame(requestAnimationFrameRef.current);\r\n };\r\n }, []);\r\n return (\r\n <div\r\n className={mergeClasses(\r\n 'absolute bottom-small start-1/2 custom-translate-x-1-2 flex items-center justify-center gap-2xsmall',\r\n containerClassName,\r\n )}\r\n >\r\n {Array.from({ length: slidesCount }, (_, index) => {\r\n const isActive = currentIndex === index;\r\n const showBar = showProgress && isActive;\r\n return (\r\n <button\r\n key={`dot-${index}`}\r\n onClick={() => onClick(index)}\r\n className={mergeClasses(\r\n 'relative rounded-full',\r\n buttonClassName,\r\n showBar\r\n ? mergeClasses(\r\n 'overflow-hidden h-1 w-12 bg-white/50',\r\n progressContainerClassName,\r\n )\r\n : 'grid place-items-center h-1 w-1',\r\n )}\r\n >\r\n {showBar ? (\r\n <span\r\n className={mergeClasses(\r\n 'absolute top-0 h-full rounded-full bg-white transition-[width] duration-[60ms] ease-linear',\r\n progressBarClassName,\r\n isRtl ? 'right-0 left-auto' : 'left-0 right-auto',\r\n )}\r\n style={{\r\n width: `${(progress * 100) | 0}%`,\r\n }}\r\n />\r\n ) : (\r\n <span\r\n className={mergeClasses(\r\n 'h-1 w-1 rounded-full cursor-pointer',\r\n dotClassName,\r\n isActive ? activeDotClassName : inactiveDotClassName,\r\n )}\r\n />\r\n )}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\nexport {\r\n type AdCarouselApi,\r\n AdCarousel,\r\n AdCarouselContent,\r\n AdCarouselItem,\r\n AdCarouselPrevious,\r\n AdCarouselNext,\r\n AdCarouselPagination,\r\n};\r\n","\"use client\";\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\n// src/InView.tsx\nimport * as React from \"react\";\n\n// src/observe.ts\nvar observerMap = /* @__PURE__ */ new Map();\nvar RootIds = /* @__PURE__ */ new WeakMap();\nvar rootId = 0;\nvar unsupportedValue = void 0;\nfunction defaultFallbackInView(inView) {\n unsupportedValue = inView;\n}\nfunction getRootId(root) {\n if (!root) return \"0\";\n if (RootIds.has(root)) return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\nfunction optionsToId(options) {\n return Object.keys(options).sort().filter(\n (key) => options[key] !== void 0\n ).map((key) => {\n return `${key}_${key === \"root\" ? getRootId(options.root) : options[key]}`;\n }).toString();\n}\nfunction createObserver(options) {\n const id = optionsToId(options);\n let instance = observerMap.get(id);\n if (!instance) {\n const elements = /* @__PURE__ */ new Map();\n let thresholds;\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n var _a;\n const inView = entry.isIntersecting && thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n if (options.trackVisibility && typeof entry.isVisible === \"undefined\") {\n entry.isVisible = inView;\n }\n (_a = elements.get(entry.target)) == null ? void 0 : _a.forEach((callback) => {\n callback(inView, entry);\n });\n });\n }, options);\n thresholds = observer.thresholds || (Array.isArray(options.threshold) ? options.threshold : [options.threshold || 0]);\n instance = {\n id,\n observer,\n elements\n };\n observerMap.set(id, instance);\n }\n return instance;\n}\nfunction observe(element, callback, options = {}, fallbackInView = unsupportedValue) {\n if (typeof window.IntersectionObserver === \"undefined\" && fallbackInView !== void 0) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio: typeof options.threshold === \"number\" ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds\n });\n return () => {\n };\n }\n const { id, observer, elements } = createObserver(options);\n const callbacks = elements.get(element) || [];\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n callbacks.splice(callbacks.indexOf(callback), 1);\n if (callbacks.length === 0) {\n elements.delete(element);\n observer.unobserve(element);\n }\n if (elements.size === 0) {\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n\n// src/InView.tsx\nfunction isPlainChildren(props) {\n return typeof props.children !== \"function\";\n}\nvar InView = class extends React.Component {\n constructor(props) {\n super(props);\n __publicField(this, \"node\", null);\n __publicField(this, \"_unobserveCb\", null);\n __publicField(this, \"handleNode\", (node) => {\n if (this.node) {\n this.unobserve();\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n this.setState({ inView: !!this.props.initialInView, entry: void 0 });\n }\n }\n this.node = node ? node : null;\n this.observeNode();\n });\n __publicField(this, \"handleChange\", (inView, entry) => {\n if (inView && this.props.triggerOnce) {\n this.unobserve();\n }\n if (!isPlainChildren(this.props)) {\n this.setState({ inView, entry });\n }\n if (this.props.onChange) {\n this.props.onChange(inView, entry);\n }\n });\n this.state = {\n inView: !!props.initialInView,\n entry: void 0\n };\n }\n componentDidMount() {\n this.unobserve();\n this.observeNode();\n }\n componentDidUpdate(prevProps) {\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n }\n componentWillUnmount() {\n this.unobserve();\n }\n observeNode() {\n if (!this.node || this.props.skip) return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView\n } = this.props;\n this._unobserveCb = observe(\n this.node,\n this.handleChange,\n {\n threshold,\n root,\n rootMargin,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n },\n fallbackInView\n );\n }\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n this._unobserveCb = null;\n }\n }\n render() {\n const { children } = this.props;\n if (typeof children === \"function\") {\n const { inView, entry } = this.state;\n return children({ inView, entry, ref: this.handleNode });\n }\n const {\n as,\n triggerOnce,\n threshold,\n root,\n rootMargin,\n onChange,\n skip,\n trackVisibility,\n delay,\n initialInView,\n fallbackInView,\n ...props\n } = this.props;\n return React.createElement(\n as || \"div\",\n { ref: this.handleNode, ...props },\n children\n );\n }\n};\n\n// src/useInView.tsx\nimport * as React2 from \"react\";\nfunction useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange\n} = {}) {\n var _a;\n const [ref, setRef] = React2.useState(null);\n const callback = React2.useRef(onChange);\n const [state, setState] = React2.useState({\n inView: !!initialInView,\n entry: void 0\n });\n callback.current = onChange;\n React2.useEffect(\n () => {\n if (skip || !ref) return;\n let unobserve;\n unobserve = observe(\n ref,\n (inView, entry) => {\n setState({\n inView,\n entry\n });\n if (callback.current) callback.current(inView, entry);\n if (entry.isIntersecting && triggerOnce && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n },\n {\n root,\n rootMargin,\n threshold,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n },\n fallbackInView\n );\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n },\n // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // If the threshold is an array, convert it to a string, so it won't change between renders.\n Array.isArray(threshold) ? threshold.toString() : threshold,\n ref,\n root,\n rootMargin,\n triggerOnce,\n skip,\n trackVisibility,\n fallbackInView,\n delay\n ]\n );\n const entryTarget = (_a = state.entry) == null ? void 0 : _a.target;\n const previousEntryTarget = React2.useRef(void 0);\n if (!ref && entryTarget && !triggerOnce && !skip && previousEntryTarget.current !== entryTarget) {\n previousEntryTarget.current = entryTarget;\n setState({\n inView: !!initialInView,\n entry: void 0\n });\n }\n const result = [setRef, state.inView, state.entry];\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\nexport {\n InView,\n defaultFallbackInView,\n observe,\n useInView\n};\n//# sourceMappingURL=index.mjs.map","import { mergeClasses } from '@/utils/helpers/mergeClasses';\r\n\r\ntype TSkeletonProps = {\r\n width?: number;\r\n height?: number;\r\n className?: string;\r\n rounded?: boolean;\r\n};\r\n\r\nconst Skeleton = (props: TSkeletonProps) => {\r\n const { className, rounded, width, height } = props;\r\n return (\r\n <div\r\n style={{\r\n ...(width && { width: `${width}px` }),\r\n ...(height && { height: `${height}px` }),\r\n }}\r\n className={mergeClasses(\r\n 'animate-pulse bg-[#e2e2e2]',\r\n rounded && 'rounded-small',\r\n className,\r\n )}\r\n ></div>\r\n );\r\n};\r\n\r\nexport default Skeleton;\r\n","import {\r\n AdsDestinationType,\r\n type MultipleCategoriesClickEvent,\r\n type ProductClickEvent,\r\n type SingleCategoryClickEvent,\r\n type TLinkClickEvent,\r\n type LinkDestination,\r\n type CollectionClickEvent,\r\n type BrandshopClickEvent,\r\n} from '@/types/ads';\r\n\r\nexport const buildLinkDestination = (\r\n destination: LinkDestination,\r\n): TLinkClickEvent | null => {\r\n if (!destination) return null;\r\n\r\n switch (destination.type.toLowerCase()) {\r\n case AdsDestinationType.Category: {\r\n if (destination.val.length === 1) {\r\n const payload: SingleCategoryClickEvent = {\r\n type: 'single_category',\r\n value: destination.val[0],\r\n filters: destination.filters ?? [],\r\n };\r\n return payload;\r\n }\r\n const payload: MultipleCategoriesClickEvent = {\r\n type: 'multiple_categories',\r\n value: destination.val,\r\n filters: destination.filters ?? [],\r\n };\r\n return payload;\r\n }\r\n\r\n case AdsDestinationType.SingleProduct: {\r\n const productSlug = destination.filters?.find(\r\n (filter) => filter.key === 'slug',\r\n )?.value[0];\r\n const payload: ProductClickEvent = {\r\n type: 'single_product',\r\n value: destination.val[0],\r\n slug: productSlug,\r\n };\r\n return payload;\r\n }\r\n\r\n case AdsDestinationType.Collection: {\r\n const payload: CollectionClickEvent = {\r\n type: 'collection',\r\n value: destination.val[0],\r\n };\r\n return payload;\r\n }\r\n case AdsDestinationType.Brandshop: {\r\n const payload: BrandshopClickEvent = {\r\n type: 'brandshop',\r\n value: destination.val[0],\r\n };\r\n return payload;\r\n }\r\n\r\n default:\r\n return null;\r\n }\r\n};\r\n"],"names":["DESKTOP_MIN_SCREEN_WIDTH","LAPTOP_MIN_SCREEN_WIDTH","TABLET_MIN_SCREEN_WIDTH","getPlatform","width","useIsPlatform","platform","setPlatform","useState","useEffect","handleResize","AdsDestinationType","AdsDeviceType","isObject","subject","isRecord","canUseDOM","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpointsA","breakpointsB","key","valueA","valueB","sortAndMapPluginToOptions","plugins","a","b","plugin","arePluginsEqual","pluginsA","pluginsB","optionA","index","optionB","isNumber","isString","isBoolean","mathAbs","n","mathSign","deltaAbs","factorAbs","diff","roundToTwoDecimals","num","arrayKeys","array","objectKeys","arrayLast","arrayLastIndex","arrayIsLastIndex","arrayFromNumber","startAt","_","i","object","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","areObjects","isMouseEvent","evt","ownerWindow","Alignment","align","viewSize","predefined","start","center","end","measure","EventStore","listeners","add","node","type","handler","options","removeListener","legacyMediaQueryList","self","clear","remove","Animations","ownerDocument","update","render","documentVisibleHandler","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","init","reset","destroy","stop","animate","timeStamp","timeElapsed","alpha","Axis","axis","contentDirection","isRightToLeft","isVertical","scroll","cross","sign","startEdge","getStartEdge","endEdge","getEndEdge","measureSize","nodeRect","height","direction","Limit","min","max","length","reachedMin","reachedMax","reachedAny","constrain","removeOffset","Counter","loop","loopEnd","counter","withinLimit","get","set","clone","DragHandler","rootNode","target","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","eventHandler","percentOfView","dragFree","dragThreshold","skipSnaps","baseFriction","watchDrag","crossAxis","focusNodes","nonPassiveEvent","initEvents","dragEvents","goToNextThreshold","snapForceBoost","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","emblaApi","downIfAllowed","down","up","click","addDragEvents","move","isFocusNode","nodeName","forceBoost","allowedForce","force","targetChanged","next","baseForce","isMouseEvt","lastScroll","lastCross","diffScroll","diffCross","rawForce","forceFactor","speed","friction","pointerDown","DragTracker","startEvent","lastEvent","readTime","readPoint","evtAxis","coord","pointerMove","expired","pointerUp","diffDrag","diffTime","NodeRects","offsetTop","offsetLeft","offsetWidth","offsetHeight","PercentOfView","ResizeHandler","container","slides","watchResize","nodeRects","observeNodes","resizeObserver","containerSize","slideSizes","destroyed","readSize","defaultCallback","entries","entry","isContainer","slideIndex","lastSize","newSize","ScrollBody","offsetLocation","previousLocation","baseDuration","scrollVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","seek","displacement","isInstant","scrollDistance","settled","duration","velocity","useBaseDuration","useDuration","useBaseFriction","useFriction","ScrollBounds","limit","pullBackThreshold","edgeOffsetTolerance","frictionLimit","disabled","shouldConstrain","edge","diffToEdge","diffToTarget","toggleActive","active","ScrollContain","contentSize","snapsAligned","containScroll","pixelTolerance","scrollBounds","snapsBounded","measureBounded","scrollContainLimit","findScrollContainLimit","snapsContained","measureContained","usePixelTolerance","bound","snap","startSnap","endSnap","snapAligned","isFirst","isLast","scrollBound","ScrollLimit","scrollSnaps","ScrollLooper","vectors","shouldLoop","loopDistance","v","ScrollProgress","currentLocation","ScrollSnaps","alignment","containerRect","slideRects","slidesToScroll","groupSlides","alignments","measureSizes","snaps","measureUnaligned","measureAligned","rects","rect","g","SlideRegistry","containSnaps","slideIndexes","slideRegistry","createSlideRegistry","groupedSlideIndexes","doNotContain","group","groups","range","ScrollTarget","targetVector","minDistance","distances","findTargetSnap","distance","ascDiffsToSnaps","shortcut","d1","d2","targets","matchingTargets","t","byIndex","diffToSnap","byDistance","targetSnapDistance","reachedBound","snapDistance","ScrollTo","indexCurrent","indexPrevious","distanceDiff","indexDiff","targetIndex","SlideFocus","root","eventStore","watchFocus","focusListenerOptions","lastTabPressTime","registerTabPress","slide","event","Vector1D","initialValue","value","normalizeInput","subtract","Translate","translate","x","y","containerStyle","previousTarget","to","newTarget","SlideLooper","slideSizesWithGaps","ascItems","descItems","loopPoints","startPoints","endPoints","removeSlideSizes","indexes","from","slidesInGap","gap","findSlideBounds","offset","findLoopPoints","isEndEdge","slideBounds","initial","altered","boundEdge","loopPoint","canLoop","otherIndexes","slideLocation","shiftLocation","SlidesHandler","watchSlides","mutationObserver","mutations","mutation","SlidesInView","threshold","intersectionEntryMap","inViewCache","notInViewCache","intersectionObserver","createInViewList","inView","list","isIntersecting","SlideSizes","readEdgeGap","withEdgeGap","startGap","measureStartGap","endGap","measureEndGap","measureWithGaps","slideRect","style","SlidesToScroll","groupByNumber","byNumber","groupSize","bySize","rectB","rectA","edgeA","edgeB","gapA","gapB","chunkSize","currentSize","previousSize","Engine","scrollAxis","startIndex","inViewThreshold","dragHandler","scrollLooper","slideLooper","shouldSettle","withinBounds","hasSettled","hasSettledAndIdle","interpolatedLocation","engine","startLocation","scrollProgress","slidesInView","slideFocus","EventHandler","api","getListeners","emit","e","on","cb","off","defaultOptions","OptionsHandler","mergeOptions","optionsAtMedia","matchedMediaOptions","media","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","PluginsHandler","optionsHandler","activePlugins","map","EmblaCarousel","userOptions","userPlugins","pluginsHandler","mediaHandlers","reInit","reActivate","optionsBase","pluginList","pluginApis","storeElements","userContainer","userSlides","customSlides","createEngine","optionsWithoutLoop","activate","withOptions","withPlugins","query","selectedScrollSnap","deActivate","jump","scrollNext","scrollPrev","prev","canScrollNext","canScrollPrev","scrollSnapList","previousScrollSnap","slidesNotInView","internalEngine","containerNode","slideNodes","useEmblaCarousel","storedOptions","useRef","storedPlugins","setEmblaApi","viewport","setViewport","useCallback","newEmblaApi","blackChevronRight","blackChevronLeft","CLASS_PART_SEPARATOR","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","classParts","getGroupRecursive","getGroupIdForArbitraryProperty","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","classGroupFromNextClassPart","classRest","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","property","theme","classGroups","processClassesRecursively","classGroup","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","path","currentClassPartObject","pathPart","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","MODIFIER_SEPARATOR_LENGTH","createParseClassName","prefix","experimentalParseClassName","parseClassName","modifiers","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","currentCharacter","baseClassNameWithImportantModifier","baseClassName","stripImportantModifier","hasImportantModifier","maybePostfixModifierPosition","fullPrefix","parseClassNameOriginal","createSortModifiers","orderSensitiveModifiers","modifier","sortedModifiers","unsortedModifiers","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","result","originalClassName","isExternal","variantModifier","modifierId","classId","conflictGroups","twJoin","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","mergeClasses","classes","useSwipeThreshold","thresholdPercentage","dragStartX","isRTL","onPointerDown","onPointerUp","dragDistance","containerWidth","dragDistancePercentage","AdCarouselContext","React","useCarousel","context","AdCarousel","orientation","opts","setApi","swipeThresholdPercentage","transitionDuration","children","props","ref","carouselRef","setCanScrollPrev","setCanScrollNext","onSelect","handleKeyDown","jsx","AdCarouselContent","AdCarouselItem","AdCarouselPrevious","iconClassName","autoplay","AdCarouselNext","AdCarouselPagination","slidesCount","currentIndex","onClick","delay","isRtl","showProgress","containerClassName","buttonClassName","progressContainerClassName","progressBarClassName","dotClassName","activeDotClassName","inactiveDotClassName","progress","setProgress","requestAnimationFrameRef","animateProgress","remainingMs","isActive","showBar","observerMap","RootIds","rootId","unsupportedValue","getRootId","optionsToId","createObserver","id","instance","elements","thresholds","observer","_a","callback","observe","element","fallbackInView","bounds","callbacks","useInView","trackVisibility","rootMargin","triggerOnce","skip","initialInView","onChange","setRef","React2","state","setState","unobserve","entryTarget","previousEntryTarget","Skeleton","rounded","buildLinkDestination","destination","productSlug","filter"],"mappings":"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","x_google_ignoreList":[2,3,4,7,11]}
|