@anker-in/ui 0.2.2 → 0.2.3
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/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/cn.ts","../src/components/DemoRoom/components/Title.tsx","../src/components/DemoRoom/components/StudioCard.tsx","../src/components/DemoRoom/components/StudioMap.tsx","../src/api/types.ts","../src/api/hooks.ts","../src/components/DemoRoom/components/AntdMobileIsolated.tsx","../src/components/DemoRoom/utils/addressParser.ts","../src/components/DemoRoom/components/RoomsList.module.css","../src/components/DemoRoom/components/LocationFilter.tsx","../src/components/DemoRoom/components/RoomsList.tsx","../src/api/client.ts","../src/components/DemoRoom/DemoRoom.tsx","../src/components/BookingForm/components/QuestionnaireForm.tsx","../src/components/BookingForm/components/DateTimePicker.tsx","../../../node_modules/swiper/shared/ssr-window.esm.mjs","../../../node_modules/swiper/shared/utils.mjs","../../../node_modules/swiper/shared/swiper-core.mjs","../../../node_modules/swiper/shared/update-swiper.mjs","../../../node_modules/swiper/shared/update-on-virtual-data.mjs","../../../node_modules/swiper/swiper-react.mjs","../../../node_modules/swiper/shared/create-element-if-not-defined.mjs","../../../node_modules/swiper/modules/navigation.mjs","../../../node_modules/swiper/shared/classes-to-selector.mjs","../../../node_modules/swiper/modules/pagination.mjs","../../../node_modules/swiper/modules/autoplay.mjs","../src/components/BookingForm/components/DemoRoomDetail.tsx","../src/components/BookingForm/BookingForm.tsx","../src/components/BookingForm/components/BookingSuccess.tsx","../src/theme-tokens/tokens.ts","../src/theme/ThemeProvider.tsx"],"names":["twMerge","clsx","jsx","React","jsxs","useState","useEffect","useCallback","useRef","items","useMemo","List","IndexBar","dayjs","utc","timezone","error","dayLocaleData","weekday","weekOfYear","theme","now","ConfigProvider","Calendar","Select","classes","getComputedStyle","window","isObject","extend","document","support","observerUpdate","events","event","slide","translate","realIndex","minTranslate","maxTranslate","transitionEnd","browser","slideTo","setTranslate","i","increment","breakpoints","useLayoutEffect","Swiper","attachEvents","detachEvents","onLoad","update","Fragment","createContext","useContext"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import React from 'react'\nimport { cn } from '@/utils/cn'\n\nexport interface TitleProps extends React.HTMLAttributes<HTMLDivElement> {\n title?: string\n subTitle?: string\n}\n\nexport const Title: React.FC<TitleProps> = ({\n title = '',\n ...props\n}) => {\n return (\n <div className={cn('w-full')} {...props}>\n {/* Section Title */}\n <h2 className=\"text-[32px] min-l:text-[48px] font-bold mb-12 text-[#080A0F]\">\n {title}\n </h2>\n </div>\n )\n}\n\nTitle.displayName = 'Title'\n","import React from 'react'\nimport { cn } from '@/utils/cn'\n\nexport interface StudioCardProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Demo room code (unique identifier)\n */\n code: string\n /**\n * Studio name\n */\n name: string\n /**\n * Available time\n */\n availableTime: string\n /**\n * Full address\n */\n address: string\n city: string\n state: string\n zipCode: string\n country?: string\n /**\n * Available euifyMake models\n */\n euifyMakeModel: string\n /**\n * Distance from user location (optional)\n */\n distance?: number\n /**\n * Callback when \"Schedule Now\" is clicked, receives demo room code\n */\n onSchedule?: (code: string) => void\n /**\n * 可配置的文案数据\n */\n pageData?: {\n scheduleNow?: string\n available?: string\n away?: string\n noAvailableTime?: string\n }\n}\n\nexport const StudioCard: React.FC<StudioCardProps> = ({\n code,\n name,\n availableTime,\n address,\n euifyMakeModel,\n distance,\n onSchedule,\n pageData = {\n scheduleNow: 'Schedule Now',\n available: 'Available',\n away: 'away',\n },\n className,\n style,\n ...props\n}) => {\n const [isHovered, setIsHovered] = React.useState(false)\n\n const handleScheduleClick = () => {\n onSchedule?.(code)\n }\n\n // 格式化距离显示\n const formatDistance = (dist: number) => {\n if (dist < 1) {\n return `${Math.round(dist * 1000)} m`\n }\n return `${dist.toFixed(1)} km`\n }\n\n return (\n <div\n {...props}\n className={cn(\n 'p-6 cursor-pointer transition-colors duration-200 border-b border-[#E4E5E6] last:border-b-0',\n className\n )}\n style={{\n backgroundColor: isHovered ? '#f3f4f6' : 'transparent',\n ...style,\n }}\n onMouseEnter={(e) => {\n setIsHovered(true)\n props.onMouseEnter?.(e)\n }}\n onMouseLeave={(e) => {\n setIsHovered(false)\n props.onMouseLeave?.(e)\n }}\n >\n {/* Studio Name and Distance */}\n <div className=\"flex items-start justify-between mb-4\">\n <h3 className=\"text-[24px] l:text-[20px] font-bold text-[#080A0F]\">\n {name}\n </h3>\n {distance !== undefined && (\n <span className=\"text-[16px] l:text-[14px] font-medium text-[#2E8B57] bg-[#E8F5E9] px-3 py-1 rounded-full whitespace-nowrap ml-2\">\n {formatDistance(distance)} {pageData.away}\n </span>\n )}\n </div>\n\n {/* Available Time */}\n {availableTime && (\n <div className=\"flex items-start gap-3 mb-3\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"flex-shrink-0 mt-0.5\"\n >\n <rect\n x=\"3\"\n y=\"4\"\n width=\"14\"\n height=\"13\"\n rx=\"2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M3 8H17\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M6 2V4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M14 2V4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n <div>\n <p className=\"text-[16px] l:text-[12px] text-[#2A2C32]\">\n {availableTime === pageData.noAvailableTime\n ? ''\n : pageData.available}{' '}\n {availableTime}\n </p>\n </div>\n </div>\n )}\n\n {/* Address */}\n <div className=\"flex items-start gap-3 mb-3\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"flex-shrink-0 mt-0.5\"\n >\n <path\n d=\"M10 10C11.1046 10 12 9.10457 12 8C12 6.89543 11.1046 6 10 6C8.89543 6 8 6.89543 8 8C8 9.10457 8.89543 10 10 10Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M10 18C10 18 16 13 16 8C16 4.68629 13.3137 2 10 2C6.68629 2 4 4.68629 4 8C4 13 10 18 10 18Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </svg>\n <div className=\"flex-1\">\n <p className=\"text-[16px] l:text-[14px] text-[#2A2C32] break-words\">\n {address}\n </p>\n </div>\n </div>\n\n {/* euifyMake Models */}\n <div className=\"flex items-start gap-3 mb-6\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"flex-shrink-0 mt-0.5\"\n >\n <path\n d=\"M14.4643 7.4929H9.65565M3.16391 18.7132H20.8171C22.0122 18.7132 22.981 17.7563 22.981 16.576L23 13.8348L22.981 6.42431C22.981 5.24396 22.0122 4.28711 20.8171 4.28711H3.16391C1.96882 4.28711 1 5.24396 1 6.42431V16.576C1 17.7563 1.96882 18.7132 3.16391 18.7132Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M5.32812 18.2325V14.4238C5.32812 13.8715 5.77584 13.4238 6.32813 13.4238H17.7925C18.3447 13.4238 18.7925 13.8715 18.7925 14.4238V18.2325\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <div>\n <p className=\"text-[16px] l:text-[14px] text-[#2A2C32]\">\n {euifyMakeModel}\n </p>\n </div>\n </div>\n\n {/* Schedule Button */}\n <button\n onClick={handleScheduleClick}\n className={cn(\n 'w-fit px-[28px] l:px-[20px] l:py-[8px] py-3 rounded-full',\n 'bg-white text-gray-900 border-2 border-gray-900',\n 'font-bold text-[16px] l:text-[14px]',\n 'hover:bg-gray-900 hover:text-white',\n 'transition-all duration-200'\n )}\n >\n {pageData.scheduleNow}\n </button>\n </div>\n )\n}\n\nStudioCard.displayName = 'StudioCard'\n","import React, { useState } from 'react'\nimport { cn } from '@/utils/cn'\n\nexport interface StudioLocation {\n id: string\n name: string\n address: string\n city: string\n state: string\n zipCode: string\n country: string\n lat: number\n lng: number\n availableTime?: string\n euifyMakeModel?: string\n distance?: number\n}\n\nexport interface StudioMapProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * 谷歌地图 API Key\n */\n googleMapsApiKey: string\n /**\n * 工作室位置数据\n */\n locations?: StudioLocation[]\n /**\n * 当前 hover 的位置 ID\n */\n hoveredLocationId?: string | null\n /**\n * 默认中心点\n */\n defaultCenter?: { lat: number; lng: number }\n /**\n * 默认缩放级别\n */\n defaultZoom?: number\n /**\n * 地图高度\n */\n mapHeight?: string\n /**\n * 点击 Schedule Now 的回调\n */\n onSchedule?: (demoRoomCode: string) => void\n /**\n * 可配置的文案数据\n */\n pageData?: {\n apiKeyRequired?: string\n loadingMap?: string\n scheduleNow?: string\n available?: string\n noAvailableTime?: string\n }\n}\n\nconst defaultLocations: StudioLocation[] = [\n {\n id: '1',\n name: 'Design District Demo Room',\n address: '111 8th St',\n city: 'San Francisco',\n state: 'CA',\n zipCode: '94108',\n country: 'United States',\n lat: 37.7749,\n lng: -122.4194,\n availableTime: 'Oct 28, 2:00 PM',\n euifyMakeModel: 'euifyMake E1, euifyMake M5',\n },\n]\n\nexport const StudioMap: React.FC<StudioMapProps> = ({\n googleMapsApiKey,\n locations = defaultLocations,\n hoveredLocationId,\n defaultCenter = { lat: 39.8283, lng: -98.5795 }, // US center\n defaultZoom = 4,\n mapHeight = '600px',\n onSchedule,\n pageData = {\n apiKeyRequired: 'Google Maps API Key is required',\n loadingMap: 'Loading map...',\n scheduleNow: 'Schedule Now',\n available: 'Available',\n },\n className,\n ...props\n}) => {\n const [_selectedLocation, setSelectedLocation] =\n useState<StudioLocation | null>(null)\n const [isLoaded, setIsLoaded] = useState(false)\n const mapRef = React.useRef<HTMLDivElement>(null)\n const googleMapRef = React.useRef<google.maps.Map | null>(null)\n const markersRef = React.useRef<google.maps.Marker[]>([])\n const infoWindowRef = React.useRef<google.maps.InfoWindow | null>(null)\n\n // 加载谷歌地图脚本\n React.useEffect(() => {\n if (!googleMapsApiKey) {\n console.error('Google Maps API Key is required')\n return\n }\n\n // 检查脚本是否已加载\n if (window.google && window.google.maps) {\n setIsLoaded(true)\n return\n }\n\n const script = document.createElement('script')\n script.src = `https://maps.googleapis.com/maps/api/js?key=${googleMapsApiKey}&libraries=places`\n script.async = true\n script.defer = true\n script.onload = () => setIsLoaded(true)\n script.onerror = () => console.error('Failed to load Google Maps script')\n document.head.appendChild(script)\n\n return () => {\n // 清理脚本(可选)\n if (script.parentNode) {\n script.parentNode.removeChild(script)\n }\n }\n }, [googleMapsApiKey])\n\n // 初始化地图\n React.useEffect(() => {\n if (!isLoaded || !mapRef.current || googleMapRef.current) return\n\n // 创建地图\n const map = new google.maps.Map(mapRef.current, {\n center: defaultCenter,\n zoom: defaultZoom,\n styles: [\n {\n featureType: 'all',\n elementType: 'geometry',\n stylers: [{ color: '#E0F2F1' }],\n },\n {\n featureType: 'water',\n elementType: 'geometry',\n stylers: [{ color: '#B2EBF2' }],\n },\n {\n featureType: 'road',\n elementType: 'geometry',\n stylers: [{ color: '#ffffff' }],\n },\n ],\n mapTypeControl: false,\n streetViewControl: false,\n fullscreenControl: true,\n })\n\n googleMapRef.current = map\n\n // 创建信息窗口\n infoWindowRef.current = new google.maps.InfoWindow()\n }, [isLoaded, defaultCenter, defaultZoom])\n\n // 添加标记点\n React.useEffect(() => {\n if (!googleMapRef.current || !isLoaded) return\n\n // 清除旧标记\n markersRef.current.forEach((marker) => marker.setMap(null))\n markersRef.current = []\n\n // 过滤并验证有效的位置数据\n const validLocations = locations.filter((location) => {\n const lat = Number(location.lat)\n const lng = Number(location.lng)\n const isValid =\n !isNaN(lat) &&\n !isNaN(lng) &&\n isFinite(lat) &&\n isFinite(lng) &&\n lat >= -90 &&\n lat <= 90 &&\n lng >= -180 &&\n lng <= 180\n if (!isValid) {\n console.warn('Invalid location coordinates:', location)\n }\n return isValid\n })\n\n // 添加新标记\n validLocations.forEach((location) => {\n const lat = Number(location.lat)\n const lng = Number(location.lng)\n\n // 创建自定义SVG图标\n const svgIcon = {\n url: `data:image/svg+xml;charset=UTF-8,${encodeURIComponent(`\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"24\" cy=\"24\" r=\"22\" fill=\"#00000010\"/>\n <circle cx=\"24\" cy=\"24\" r=\"10\" fill=\"#000000\"/>\n <circle cx=\"24\" cy=\"24\" r=\"5\" fill=\"#3ADB67\"/>\n </svg>\n `)}`,\n scaledSize: { width: 48, height: 48 },\n anchor: { x: 24, y: 24 },\n } as google.maps.Icon\n\n const marker = new google.maps.Marker({\n position: { lat, lng },\n map: googleMapRef.current,\n title: location.name,\n icon: svgIcon,\n })\n\n marker.addListener('click', () => {\n setSelectedLocation(location)\n\n // 创建信息窗口内容\n const content = `\n <div style=\"padding: 0 16px 16px 16px; font-weight: 700; font-family: 'MontForAnker'; max-width: 420px;\">\n <h3 style=\"margin: 0 0 16px 0; font-size: 24px; color: #080A0F;\">${location.name}</h3>\n ${\n location.availableTime\n ? `<div style=\"display: flex; align-items: flex-start; gap: 12px; margin-bottom: 12px;\">\n <svg style=\"flex-shrink: 0; margin-top: 2px;\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"4\" width=\"14\" height=\"13\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n <path d=\"M3 8H17\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M6 2V4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M14 2V4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </svg>\n <div>\n <p style=\"margin: 0; font-size: 16px; color: #2A2C32;\">${location.availableTime === pageData?.noAvailableTime ? '' : pageData.available} ${location.availableTime}</p>\n </div>\n </div>`\n : ''\n }\n <div style=\"display: flex; align-items: flex-start; gap: 12px; margin-bottom: 12px;\">\n <svg style=\"flex-shrink: 0; margin-top: 2px;\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 10C11.1046 10 12 9.10457 12 8C12 6.89543 11.1046 6 10 6C8.89543 6 8 6.89543 8 8C8 9.10457 8.89543 10 10 10Z\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n <path d=\"M10 18C10 18 16 13 16 8C16 4.68629 13.3137 2 10 2C6.68629 2 4 4.68629 4 8C4 13 10 18 10 18Z\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n </svg>\n <div style=\"flex: 1;\">\n <p style=\"margin: 0; font-size: 16px; color: #2A2C32; word-wrap: break-word;\">${location.address}</p>\n </div>\n </div>\n ${\n location.euifyMakeModel\n ? `<div style=\"display: flex; align-items: flex-start; gap: 12px; margin-bottom: 24px;\">\n <svg style=\"flex-shrink: 0; margin-top: 2px;\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M14.4643 7.4929H9.65565M3.16391 18.7132H20.8171C22.0122 18.7132 22.981 17.7563 22.981 16.576L23 13.8348L22.981 6.42431C22.981 5.24396 22.0122 4.28711 20.8171 4.28711H3.16391C1.96882 4.28711 1 5.24396 1 6.42431V16.576C1 17.7563 1.96882 18.7132 3.16391 18.7132Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.32812 18.2325V14.4238C5.32812 13.8715 5.77584 13.4238 6.32813 13.4238H17.7925C18.3447 13.4238 18.7925 13.8715 18.7925 14.4238V18.2325\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <div>\n <p style=\"margin: 0; font-size: 16px; color: #2A2C32;\">${location.euifyMakeModel}</p>\n </div>\n </div>`\n : ''\n }\n <button\n id=\"schedule-btn-${location.id}\"\n style=\"\n width: fit-content;\n padding: 12px 28px;\n background: #fff;\n color: #111827;\n border: 2px solid #111827;\n border-radius: 9999px;\n font-weight: 700;\n cursor: pointer;\n font-size: 16px;\n transition: all 0.2s;\n \"\n onmouseover=\"this.style.background='#111827'; this.style.color='#fff';\"\n onmouseout=\"this.style.background='#fff'; this.style.color='#111827';\"\n >\n ${pageData.scheduleNow}\n </button>\n </div>\n `\n\n if (infoWindowRef.current) {\n infoWindowRef.current.setContent(content)\n infoWindowRef.current.open(googleMapRef.current, marker)\n\n // 添加按钮点击事件监听\n google.maps.event.addListenerOnce(\n infoWindowRef.current,\n 'domready',\n () => {\n const btn = document.getElementById(`schedule-btn-${location.id}`)\n if (btn) {\n btn.addEventListener('click', () => {\n if (onSchedule) {\n onSchedule(location.id)\n }\n })\n }\n }\n )\n }\n\n // 移动地图中心到标记位置\n googleMapRef.current?.panTo({ lat: location.lat, lng: location.lng })\n })\n\n markersRef.current.push(marker)\n })\n\n // 自动调整地图视图以显示所有标记\n if (validLocations.length > 0 && googleMapRef.current) {\n const bounds = new google.maps.LatLngBounds()\n validLocations.forEach((location) => {\n const lat = Number(location.lat)\n const lng = Number(location.lng)\n bounds.extend({ lat, lng })\n })\n googleMapRef.current.fitBounds(bounds)\n }\n }, [isLoaded, locations, onSchedule])\n\n // 处理 hover 状态变化\n React.useEffect(() => {\n if (!isLoaded || !googleMapRef.current || !hoveredLocationId) {\n // 如果没有 hover,关闭信息窗口\n if (!hoveredLocationId && infoWindowRef.current) {\n infoWindowRef.current.close()\n }\n return\n }\n\n // 找到对应的位置和标记\n const location = locations.find((loc) => loc.id === hoveredLocationId)\n const markerIndex = locations.findIndex(\n (loc) => loc.id === hoveredLocationId\n )\n const marker = markersRef.current[markerIndex]\n\n if (location && marker) {\n // 创建信息窗口内容\n const content = `\n <div style=\"padding: 0 16px 16px 16px; font-weight: 700; font-family: 'MontForAnker'; max-width: 420px;\">\n <h3 style=\"margin: 0 0 16px 0; font-size: 24px; color: #080A0F;\">${location.name}</h3>\n ${\n location.availableTime\n ? `<div style=\"display: flex; align-items: flex-start; gap: 12px; margin-bottom: 12px;\">\n <svg style=\"flex-shrink: 0; margin-top: 2px;\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"4\" width=\"14\" height=\"13\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n <path d=\"M3 8H17\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M6 2V4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M14 2V4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </svg>\n <div>\n <p style=\"margin: 0;font-size: 16px; color: #2A2C32;\">${location.availableTime === pageData?.noAvailableTime ? '' : pageData.available} ${location.availableTime}</p>\n </div>\n </div>`\n : ''\n }\n <div style=\"display: flex; align-items: flex-start; gap: 12px; margin-bottom: 12px;\">\n <svg style=\"flex-shrink: 0; margin-top: 2px;\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 10C11.1046 10 12 9.10457 12 8C12 6.89543 11.1046 6 10 6C8.89543 6 8 6.89543 8 8C8 9.10457 8.89543 10 10 10Z\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n <path d=\"M10 18C10 18 16 13 16 8C16 4.68629 13.3137 2 10 2C6.68629 2 4 4.68629 4 8C4 13 10 18 10 18Z\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n </svg>\n <div style=\"flex: 1;\">\n <p style=\"margin: 0; font-size: 16px; color: #2A2C32; word-wrap: break-word;\">${location.address}</p>\n </div>\n </div>\n ${\n location.euifyMakeModel\n ? `<div style=\"display: flex; align-items: flex-start; gap: 12px; margin-bottom: 24px;\">\n <svg style=\"flex-shrink: 0; margin-top: 2px;\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M14.4643 7.4929H9.65565M3.16391 18.7132H20.8171C22.0122 18.7132 22.981 17.7563 22.981 16.576L23 13.8348L22.981 6.42431C22.981 5.24396 22.0122 4.28711 20.8171 4.28711H3.16391C1.96882 4.28711 1 5.24396 1 6.42431V16.576C1 17.7563 1.96882 18.7132 3.16391 18.7132Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.32812 18.2325V14.4238C5.32812 13.8715 5.77584 13.4238 6.32813 13.4238H17.7925C18.3447 13.4238 18.7925 13.8715 18.7925 14.4238V18.2325\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <div>\n <p style=\"margin: 0; font-size: 16px; color: #2A2C32;\">${location.euifyMakeModel}</p>\n </div>\n </div>`\n : ''\n }\n <button\n id=\"schedule-btn-hover-${location.id}\"\n style=\"\n width: fit-content;\n padding: 12px 28px;\n background: #fff;\n color: #111827;\n border: 2px solid #111827;\n border-radius: 9999px;\n font-weight: 700;\n cursor: pointer;\n font-size: 16px;\n transition: all 0.2s;\n \"\n onmouseover=\"this.style.background='#111827'; this.style.color='#fff';\"\n onmouseout=\"this.style.background='#fff'; this.style.color='#111827';\"\n >\n ${pageData.scheduleNow}\n </button>\n </div>\n `\n\n if (infoWindowRef.current) {\n infoWindowRef.current.setContent(content)\n infoWindowRef.current.open(googleMapRef.current, marker)\n\n // 添加按钮点击事件监听\n google.maps.event.addListenerOnce(\n infoWindowRef.current,\n 'domready',\n () => {\n const btn = document.getElementById(\n `schedule-btn-hover-${location.id}`\n )\n if (btn) {\n btn.addEventListener('click', () => {\n if (onSchedule) {\n onSchedule(location.id)\n }\n })\n }\n }\n )\n }\n\n // 移动地图中心到标记位置(可选)\n // googleMapRef.current?.panTo({ lat: location.lat, lng: location.lng })\n }\n }, [hoveredLocationId, isLoaded, locations, onSchedule])\n\n // const handleCloseInfo = useCallback(() => {\n // setSelectedLocation(null)\n // if (infoWindowRef.current) {\n // infoWindowRef.current.close()\n // }\n // }, [])\n\n if (!googleMapsApiKey) {\n return (\n <div\n className={cn(\n 'flex items-center overflow-hidden justify-center bg-gray-100 rounded-[16px]',\n className\n )}\n style={{ height: mapHeight }}\n {...props}\n >\n <p className=\"text-gray-600\">{pageData.apiKeyRequired}</p>\n </div>\n )\n }\n\n return (\n <div\n className={cn('relative w-full rounded-[16px] overflow-hidden', className)}\n {...props}\n >\n <div ref={mapRef} style={{ height: mapHeight }} />\n {!isLoaded && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-gray-100\">\n <div className=\"text-center\">\n <div className=\"inline-block animate-spin rounded-full h-8 w-8 border-4 border-gray-300 border-t-gray-900 mb-2\"></div>\n <p className=\"text-gray-600\">{pageData.loadingMap}</p>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nStudioMap.displayName = 'StudioMap'\n","// API 基础类型\nexport interface ApiResponse<T = any> {\n code: number\n message: string\n data: T\n request_id: string\n}\n\n// 时段状态\nexport type TimeslotStatus = 'available' | 'full' | 'disabled'\n\n// 门店类型\nexport type DemoRoomType = 'flagship' | 'standard' | 'popup'\n\n// 门店状态\nexport type DemoRoomStatus = 'enabled' | 'disabled'\n\n// 预约状态\nexport type BookingStatus = 'pending' | 'checked_in' | 'completed' | 'cancelled'\n\n// 问题类型\nexport type QuestionType = 'text' | 'email' | 'tel' | 'phone' | 'radio' | 'radio_with_other' | 'checkbox' | 'textarea' | 'select'\n\n// 时段\nexport interface Timeslot {\n id: number\n start_time: string\n end_time: string\n capacity: number\n booked_count: number\n status: TimeslotStatus\n}\n\n// 门店位置信息\nexport interface DemoRoomLocation {\n country: string\n state: string\n city: string\n}\n\n// 门店\nexport interface DemoRoom {\n code: string\n name: string\n description: string\n equipment?: string[]\n address: string\n location?: DemoRoomLocation\n type: DemoRoomType\n capacity: number\n status: DemoRoomStatus\n timezone: string\n images: string[]\n latitude: number\n longitude: number\n questionnaire_id?: number\n timeslots: Timeslot[]\n}\n\n// 问卷选项\nexport interface QuestionOption {\n label: string\n value?: string\n}\n\n// 问卷问题\nexport interface Question {\n id?: string // 固定字段使用 id(如客户信息字段)\n key?: string // 自定义字段使用 key\n type: QuestionType\n label: string\n description?: string\n placeholder?: string\n hint?: string\n options?: QuestionOption[]\n required: boolean\n is_default?: boolean // 是否为默认题目(首次预约时显示)\n order?: number // 题目顺序\n}\n\n// 问卷\nexport interface Questionnaire {\n id: number\n name: string\n description: string\n questions: Question[]\n}\n\n// 获取门店列表响应\nexport interface GetDemoRoomsResponse {\n demorooms: DemoRoom[]\n}\n\n// 查询时段响应\nexport interface GetTimeslotsResponse {\n timeslots: Timeslot[]\n timezone: string\n}\n\n// 提交预约请求\nexport interface CreateBookingRequest {\n demoroom_code: string\n timeslot_id: number\n questionnaire_id?: number\n questionnaire_response?: Record<string, any>\n customer_name: string\n customer_email: string\n customer_phone_code: string\n customer_phone_number: string\n has_booked_before?: number // 1 - 以前预约过,0 - 首次预约(默认)\n}\n\n// 提交预约响应\nexport interface CreateBookingResponse {\n booking_id: string\n demoroom_code: string\n booking_date: string\n booking_time: string\n customer_name: string\n customer_email: string\n status: string\n cancel_token?: string\n created_at?: string\n}\n\n// 预约信息\nexport interface Booking {\n booking_id: number\n demoroom_code: string\n demoroom_name?: string // 门店名称(查询预约详情时返回)\n address?: string // 门店地址(查询预约详情时返回)\n equipment?: string[] // 设备列表(查询预约详情时返回)\n latitude?: number // 纬度(查询预约详情时返回)\n longitude?: number // 经度(查询预约详情时返回)\n timezone?: string // 门店时区(查询预约详情时返回)\n booking_date: string\n booking_time?: string // 预约开始时间(创建预约时返回)\n time_slot?: string // 时间段 HH:MM-HH:MM(查询预约详情时返回)\n customer_name: string\n customer_email: string\n phone_code?: string // 电话区号\n phone_number?: string // 电话号码\n status: BookingStatus\n cancel_token: string\n created_at: string\n}\n\n// 获取预约详情响应\nexport interface GetBookingResponse {\n booking: Booking\n}\n\n// 取消预约响应\nexport interface CancelBookingResponse {\n booking: Booking\n}\n\n// API 错误码\nexport enum ApiErrorCode {\n SUCCESS = 0,\n PARAM_ERROR = 1001,\n UNAUTHORIZED = 1002,\n FORBIDDEN = 1003,\n NOT_FOUND = 1004,\n CONFLICT = 1005,\n INTERNAL_ERROR = 1006,\n}\n\n// API 错误\nexport class ApiError extends Error {\n code: number\n request_id?: string\n\n constructor(code: number, message: string, request_id?: string) {\n super(message)\n this.code = code\n this.request_id = request_id\n this.name = 'ApiError'\n }\n}\n","import { useState, useEffect, useCallback } from 'react'\nimport type { DemoRoomApiClient } from './client'\nimport type {\n DemoRoom,\n GetTimeslotsResponse,\n Questionnaire,\n CreateBookingRequest,\n Booking,\n} from './types'\nimport { ApiError } from './types'\n\ninterface UseApiState<T> {\n data: T | null\n loading: boolean\n error: ApiError | null\n}\n\n/**\n * 获取门店列表 Hook\n */\nexport function useDemoRooms(\n client: DemoRoomApiClient,\n params: {\n team_code?: string\n brand_website?: string\n locale?: string\n },\n options?: { enabled?: boolean }\n) {\n const [state, setState] = useState<UseApiState<DemoRoom[]>>({\n data: null,\n loading: true,\n error: null,\n })\n\n const enabled = options?.enabled !== false\n\n useEffect(() => {\n if (!enabled) return\n\n let cancelled = false\n\n const fetchData = async () => {\n setState((prev) => ({ ...prev, loading: true, error: null }))\n\n try {\n const data = await client.getDemoRooms(params)\n if (!cancelled) {\n setState({ data, loading: false, error: null })\n }\n } catch (error) {\n if (!cancelled) {\n setState({\n data: null,\n loading: false,\n error: error instanceof ApiError ? error : new ApiError(1006, 'Unknown error'),\n })\n }\n }\n }\n\n fetchData()\n\n return () => {\n cancelled = true\n }\n }, [client, params.team_code, params.brand_website, params.locale, enabled])\n\n return state\n}\n\n/**\n * 获取门店详情 Hook\n */\nexport function useDemoRoom(\n client: DemoRoomApiClient,\n code: string,\n locale?: string,\n options?: { enabled?: boolean }\n) {\n const [state, setState] = useState<UseApiState<DemoRoom>>({\n data: null,\n loading: true,\n error: null,\n })\n\n const enabled = options?.enabled !== false\n\n useEffect(() => {\n if (!enabled || !code) return\n\n let cancelled = false\n\n const fetchData = async () => {\n setState((prev) => ({ ...prev, loading: true, error: null }))\n\n try {\n const data = await client.getDemoRoom(code, locale)\n if (!cancelled) {\n setState({ data, loading: false, error: null })\n }\n } catch (error) {\n if (!cancelled) {\n setState({\n data: null,\n loading: false,\n error: error instanceof ApiError ? error : new ApiError(1006, 'Unknown error'),\n })\n }\n }\n }\n\n fetchData()\n\n return () => {\n cancelled = true\n }\n }, [client, code, locale, enabled])\n\n return state\n}\n\n/**\n * 查询门店时段 Hook\n */\nexport function useTimeslots(\n client: DemoRoomApiClient,\n code: string,\n params: {\n start_date: string\n end_date: string\n timezone?: string\n },\n options?: { enabled?: boolean }\n) {\n const [state, setState] = useState<UseApiState<GetTimeslotsResponse>>({\n data: null,\n loading: true,\n error: null,\n })\n\n const enabled = options?.enabled !== false\n\n useEffect(() => {\n if (!enabled || !code || !params.start_date || !params.end_date) return\n\n let cancelled = false\n\n const fetchData = async () => {\n setState((prev) => ({ ...prev, loading: true, error: null }))\n\n try {\n const data = await client.getTimeslots(code, params)\n if (!cancelled) {\n setState({ data, loading: false, error: null })\n }\n } catch (error) {\n if (!cancelled) {\n setState({\n data: null,\n loading: false,\n error: error instanceof ApiError ? error : new ApiError(1006, 'Unknown error'),\n })\n }\n }\n }\n\n fetchData()\n\n return () => {\n cancelled = true\n }\n }, [client, code, params.start_date, params.end_date, params.timezone, enabled])\n\n return state\n}\n\n/**\n * 查询门店问卷 Hook\n */\nexport function useQuestionnaire(\n client: DemoRoomApiClient,\n code: string,\n questionnaire_id: number | undefined,\n locale?: string,\n options?: { enabled?: boolean }\n) {\n const [state, setState] = useState<UseApiState<Questionnaire>>({\n data: null,\n loading: true,\n error: null,\n })\n\n const enabled = options?.enabled !== false\n\n useEffect(() => {\n if (!enabled || !code || !questionnaire_id) {\n setState({\n data: null,\n loading: false,\n error: null,\n })\n return\n }\n\n let cancelled = false\n\n const fetchData = async () => {\n setState((prev) => ({ ...prev, loading: true, error: null }))\n\n try {\n const data = await client.getQuestionnaire(code, questionnaire_id, locale)\n if (!cancelled) {\n setState({ data, loading: false, error: null })\n }\n } catch (error) {\n if (!cancelled) {\n setState({\n data: null,\n loading: false,\n error: error instanceof ApiError ? error : new ApiError(1006, 'Unknown error'),\n })\n }\n }\n }\n\n fetchData()\n\n return () => {\n cancelled = true\n }\n }, [client, code, questionnaire_id, locale, enabled])\n\n return state\n}\n\n/**\n * 提交预约 Hook\n */\nexport function useCreateBooking(client: DemoRoomApiClient) {\n const [state, setState] = useState<UseApiState<Booking>>({\n data: null,\n loading: false,\n error: null,\n })\n\n const createBooking = useCallback(\n async (data: CreateBookingRequest) => {\n setState({ data: null, loading: true, error: null })\n\n try {\n const result = await client.createBooking(data)\n setState({ data: result, loading: false, error: null })\n return result\n } catch (error) {\n const apiError = error instanceof ApiError ? error : new ApiError(1006, 'Unknown error')\n setState({ data: null, loading: false, error: apiError })\n throw apiError\n }\n },\n [client]\n )\n\n return {\n ...state,\n createBooking,\n }\n}\n\n/**\n * 获取预约详情 Hook\n */\nexport function useBooking(\n client: DemoRoomApiClient,\n token: string,\n locale?: string,\n options?: { enabled?: boolean }\n) {\n const [state, setState] = useState<UseApiState<Booking>>({\n data: null,\n loading: true,\n error: null,\n })\n\n const enabled = options?.enabled !== false\n\n useEffect(() => {\n if (!enabled || !token) return\n\n let cancelled = false\n\n const fetchData = async () => {\n setState((prev) => ({ ...prev, loading: true, error: null }))\n\n try {\n const data = await client.getBooking(token, locale)\n if (!cancelled) {\n setState({ data, loading: false, error: null })\n }\n } catch (error) {\n if (!cancelled) {\n setState({\n data: null,\n loading: false,\n error: error instanceof ApiError ? error : new ApiError(1006, 'Unknown error'),\n })\n }\n }\n }\n\n fetchData()\n\n return () => {\n cancelled = true\n }\n }, [client, token, locale, enabled])\n\n return state\n}\n\n/**\n * 取消预约 Hook\n */\nexport function useCancelBooking(client: DemoRoomApiClient) {\n const [state, setState] = useState<UseApiState<Booking>>({\n data: null,\n loading: false,\n error: null,\n })\n\n const cancelBooking = useCallback(\n async (token: string, locale?: string) => {\n setState({ data: null, loading: true, error: null })\n\n try {\n const result = await client.cancelBooking(token, locale)\n setState({ data: result, loading: false, error: null })\n return result\n } catch (error) {\n const apiError = error instanceof ApiError ? error : new ApiError(1006, 'Unknown error')\n setState({ data: null, loading: false, error: apiError })\n throw apiError\n }\n },\n [client]\n )\n\n return {\n ...state,\n cancelBooking,\n }\n}\n","import React, { useEffect, useRef } from 'react'\nimport { cn } from '@/utils/cn'\n\nexport interface AntdMobileIsolatedProps {\n children: React.ReactNode\n className?: string\n style?: React.CSSProperties\n}\n\n/**\n * 隔离 antd-mobile 全局样式的包装组件\n * 通过创建一个独立的样式上下文来防止 antd-mobile 的全局样式影响应用其他部分\n */\nexport const AntdMobileIsolated: React.FC<AntdMobileIsolatedProps> = ({\n children,\n className,\n style,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!containerRef.current) return\n\n // 重置容器内可能受影响的全局样式\n const container = containerRef.current\n const originalStyles = {\n fontSize: container.style.fontSize,\n fontFamily: container.style.fontFamily,\n lineHeight: container.style.lineHeight,\n color: container.style.color,\n }\n\n // 应用隔离样式\n container.style.fontSize = '14px'\n container.style.fontFamily =\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif'\n container.style.lineHeight = '1.5'\n container.style.color = '#333'\n\n // 清理函数:恢复原始样式\n return () => {\n container.style.fontSize = originalStyles.fontSize\n container.style.fontFamily = originalStyles.fontFamily\n container.style.lineHeight = originalStyles.lineHeight\n container.style.color = originalStyles.color\n }\n }, [])\n\n return (\n <div\n ref={containerRef}\n className={cn('antd-mobile-isolated', className)}\n style={{\n // 使用 all: revert-layer 来隔离样式\n isolation: 'isolate',\n contain: 'layout style',\n ...style,\n }}\n >\n {children}\n </div>\n )\n}\n\nAntdMobileIsolated.displayName = 'AntdMobileIsolated'\n","/**\n * 地址解析工具\n * 将 room.address 解析为层级结构:Country > State > City\n */\n\nexport interface LocationHierarchy {\n country: string\n state: string\n city: string\n}\n\n/**\n * 已知国家列表(包含多词国家名)\n * 优先匹配多词国家名,避免误判\n */\nconst KNOWN_COUNTRIES = [\n 'United States',\n 'United Kingdom',\n 'American Samoa',\n 'United Arab Emirates',\n 'Bosnia and Herzegovina',\n 'Trinidad and Tobago',\n 'Saint Kitts and Nevis',\n 'Antigua and Barbuda',\n 'Saint Vincent and the Grenadines',\n 'São Tomé and Príncipe',\n 'United States Minor Outlying Islands',\n 'British Virgin Islands',\n 'United States Virgin Islands',\n 'Cayman Islands',\n 'Cook Islands',\n 'Falkland Islands',\n 'Faroe Islands',\n 'Marshall Islands',\n 'Northern Mariana Islands',\n 'Pitcairn Islands',\n 'Solomon Islands',\n 'Turks and Caicos Islands',\n 'Wallis and Futuna',\n]\n\n/**\n * 从地址字符串中提取国家、州、城市信息\n * 支持多种地址格式,从后往前解析\n *\n * 示例:\n * - \"building information, street test, city-test2, Ofu‑Olosega, American Samoa\"\n * => country: \"American Samoa\", state: \"Ofu‑Olosega\", city: \"city-test2\"\n * - \"111 8th St, San Francisco, CA 94108, United States\"\n * => country: \"United States\", state: \"CA\", city: \"San Francisco\"\n */\nexport function parseAddress(address: string): LocationHierarchy {\n // 按逗号分割地址\n const parts = address.split(',').map((part) => part.trim()).filter(Boolean)\n\n // 默认值\n let country = 'United States'\n let state = ''\n let city = ''\n\n if (parts.length === 0) {\n return { country, state, city }\n }\n\n // 从后往前解析\n // 最后一部分通常是国家\n const lastPart = parts[parts.length - 1]\n\n // 检查最后一部分是否是已知国家\n const matchedCountry = KNOWN_COUNTRIES.find(\n (knownCountry) => lastPart.toLowerCase() === knownCountry.toLowerCase()\n )\n\n if (matchedCountry) {\n country = matchedCountry\n\n // 倒数第二部分是州/省\n if (parts.length >= 2) {\n state = parts[parts.length - 2].split(' ')[0] // 去掉邮编\n }\n\n // 倒数第三部分是城市\n if (parts.length >= 3) {\n city = parts[parts.length - 3]\n }\n } else {\n // 如果最后一部分不是已知国家,尝试其他解析方式\n if (parts.length >= 2) {\n // 可能的格式: \"Street, City, State\"\n state = parts[parts.length - 1].split(' ')[0]\n city = parts[parts.length - 2]\n } else if (parts.length === 1) {\n // 只有一个部分,可能是城市\n city = parts[0]\n }\n }\n\n return {\n country: country.trim(),\n state: state.trim(),\n city: city.trim(),\n }\n}\n\n/**\n * 地理位置节点(用于树形结构)\n */\nexport interface LocationNode {\n id: string\n name: string\n type: 'country' | 'state' | 'city'\n count: number // 该位置的门店数量\n children?: LocationNode[]\n}\n\n/**\n * 从门店列表构建地理位置树\n */\nexport function buildLocationTree(\n locations: Array<{ address: string; id: string }>\n): LocationNode[] {\n const tree: Map<string, LocationNode> = new Map()\n\n locations.forEach((location) => {\n const { country, state, city } = parseAddress(location.address)\n\n // 构建国家节点\n const countryId = country\n if (!tree.has(countryId)) {\n tree.set(countryId, {\n id: countryId,\n name: country,\n type: 'country',\n count: 0,\n children: [],\n })\n }\n\n const countryNode = tree.get(countryId)!\n countryNode.count++\n\n // 构建州节点\n if (state) {\n const stateId = `${country}/${state}`\n let stateNode = countryNode.children?.find((n) => n.id === stateId)\n\n if (!stateNode) {\n stateNode = {\n id: stateId,\n name: state,\n type: 'state',\n count: 0,\n children: [],\n }\n countryNode.children?.push(stateNode)\n }\n\n stateNode.count++\n\n // 构建城市节点\n if (city) {\n const cityId = `${country}/${state}/${city}`\n let cityNode = stateNode.children?.find((n) => n.id === cityId)\n\n if (!cityNode) {\n cityNode = {\n id: cityId,\n name: city,\n type: 'city',\n count: 0,\n }\n stateNode.children?.push(cityNode)\n }\n\n cityNode.count++\n }\n }\n })\n\n return Array.from(tree.values())\n}\n\n/**\n * 按字母分组位置列表\n */\nexport function groupByAlphabet<T extends { name: string }>(\n items: T[]\n): Array<{ title: string; items: T[] }> {\n const groups: Map<string, T[]> = new Map()\n\n items.forEach((item) => {\n const firstChar = item.name.charAt(0).toUpperCase()\n const key = /[A-Z]/.test(firstChar) ? firstChar : '#'\n\n if (!groups.has(key)) {\n groups.set(key, [])\n }\n groups.get(key)!.push(item)\n })\n\n return Array.from(groups.entries())\n .sort(([a], [b]) => {\n if (a === '#') return 1\n if (b === '#') return -1\n return a.localeCompare(b)\n })\n .map(([title, items]) => ({\n title,\n items: items.sort((a, b) => a.name.localeCompare(b.name)),\n }))\n}\n","/* antd-mobile 样式隔离 - 使用更强的隔离策略 */\n.antdMobileScope {\n /* 重置所有继承样式,但保持布局相关属性 */\n all: unset;\n\n /* 恢复必要的属性 */\n display: block;\n position: absolute;\n box-sizing: border-box;\n\n /* 阻止继承字体样式 */\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: #333;\n\n /* 重置 CSS 变量影响 */\n --adm-color-primary: #1677ff;\n --adm-color-text: #333333;\n --adm-font-size-main: 14px;\n}\n\n/* 确保 antd-mobile 组件内部样式正常工作 */\n.antdMobileScope *,\n.antdMobileScope *::before,\n.antdMobileScope *::after {\n box-sizing: border-box;\n}\n\n/* 阻止全局样式继承 */\n.antd-mobile-isolated-container .antdMobileScope :not([class*=\"adm-\"]) {\n all: unset;\n}\n\n/* 保持 antd-mobile 组件样式 */\n.antd-mobile-isolated-container .antdMobileScope [class*=\"adm-\"] {\n all: revert;\n}\n\n/* 隐藏 List.Item 的右侧箭头 */\n.antd-mobile-isolated-container .antdMobileScope .adm-list-item-content-arrow {\n display: none !important;\n}\n","import React, { useState, useMemo } from 'react'\nimport { cn } from '@/utils/cn'\nimport IndexBar from 'antd-mobile/es/components/index-bar'\nimport List from 'antd-mobile/es/components/list'\nimport 'antd-mobile/es/components/index-bar/index-bar.css'\nimport 'antd-mobile/es/components/list/list.css'\nimport { AntdMobileIsolated } from './AntdMobileIsolated'\nimport { groupByAlphabet } from '../utils/addressParser'\nimport styles from './RoomsList.module.css'\n\nexport type LocationLevel = 'country' | 'state' | 'city'\n\nexport interface LocationFilterProps {\n locations: Array<{\n id: string\n country: string\n state: string\n city: string\n }>\n onSelect?: (selection: LocationSelection) => void\n visible?: boolean\n onClose?: () => void\n pageData?: {\n allLocations?: string\n clear?: string\n country?: string\n state?: string\n city?: string\n noStudiosFound?: string\n }\n}\n\nexport interface LocationSelection {\n level: LocationLevel\n country?: string\n state?: string\n city?: string\n}\n\ninterface LocationItem {\n name: string\n code: string\n count: number\n parentCode?: string\n}\n\nexport const LocationFilter: React.FC<LocationFilterProps> = ({\n locations,\n onSelect,\n visible = false,\n onClose,\n pageData = {\n allLocations: 'All Locations',\n clear: 'Clear',\n country: 'Country',\n state: 'State',\n city: 'City',\n noStudiosFound: 'No studios found in this location',\n },\n}) => {\n const [currentLevel, setCurrentLevel] = useState<LocationLevel>('country')\n const [selectedCountry, setSelectedCountry] = useState<string>()\n const [selectedState, setSelectedState] = useState<string>()\n const [searchQuery, setSearchQuery] = useState('')\n\n // 构建位置数据\n const locationData = useMemo(() => {\n const countries = new Map<string, LocationItem>()\n const states = new Map<string, LocationItem>()\n const cities = new Map<string, LocationItem>()\n\n locations.forEach((location) => {\n const { country, state, city } = location\n\n // 统计国家\n if (country) {\n const existing = countries.get(country)\n countries.set(country, {\n name: country,\n code: country,\n count: (existing?.count || 0) + 1,\n })\n }\n\n // 统计州\n if (state) {\n const stateKey = `${country}/${state}`\n const existing = states.get(stateKey)\n states.set(stateKey, {\n name: state,\n code: stateKey,\n count: (existing?.count || 0) + 1,\n parentCode: country,\n })\n }\n\n // 统计城市\n if (city) {\n const cityKey = `${country}/${state}/${city}`\n const existing = cities.get(cityKey)\n cities.set(cityKey, {\n name: city,\n code: cityKey,\n count: (existing?.count || 0) + 1,\n parentCode: `${country}/${state}`,\n })\n }\n })\n\n return {\n countries: Array.from(countries.values()),\n states: Array.from(states.values()),\n cities: Array.from(cities.values()),\n }\n }, [locations])\n\n // 根据当前层级和选择过滤数据\n const filteredItems = useMemo(() => {\n let items: LocationItem[] = []\n\n switch (currentLevel) {\n case 'country':\n items = locationData.countries\n break\n case 'state':\n items = selectedCountry\n ? locationData.states.filter((s) => s.parentCode === selectedCountry)\n : []\n break\n case 'city':\n items = selectedState\n ? locationData.cities.filter((c) => c.parentCode === selectedState)\n : []\n break\n }\n\n // 应用搜索过滤\n if (searchQuery) {\n items = items.filter((item) =>\n item.name.toLowerCase().includes(searchQuery.toLowerCase())\n )\n }\n\n return items\n }, [currentLevel, selectedCountry, selectedState, locationData, searchQuery])\n\n // 按字母分组\n const groupedItems = useMemo(\n () => groupByAlphabet(filteredItems),\n [filteredItems]\n )\n\n // 判断是否显示字母索引条(数据少于10条时不显示)\n const showIndexBar = filteredItems.length >= 10\n\n const handleItemClick = (item: LocationItem) => {\n // 处理\"All\"选项\n if (item.code === '__all__') {\n if (currentLevel === 'country') {\n // 选择所有国家\n onSelect?.({\n level: 'country',\n })\n onClose?.()\n } else if (currentLevel === 'state') {\n // 选择该国家下的所有州\n onSelect?.({\n level: 'state',\n country: selectedCountry,\n })\n onClose?.()\n } else if (currentLevel === 'city') {\n // 选择该州下的所有城市\n const parts = selectedState?.split('/') || []\n onSelect?.({\n level: 'city',\n country: parts[0],\n state: parts[1],\n })\n onClose?.()\n }\n return\n }\n\n // 正常选择逻辑\n if (currentLevel === 'country') {\n setSelectedCountry(item.code)\n setCurrentLevel('state')\n } else if (currentLevel === 'state') {\n setSelectedState(item.code)\n setCurrentLevel('city')\n } else if (currentLevel === 'city') {\n // 选择城市,触发回调\n const parts = item.code.split('/')\n onSelect?.({\n level: 'city',\n country: parts[0],\n state: parts[1],\n city: parts[2],\n })\n onClose?.()\n }\n }\n\n const handleTabClick = (level: LocationLevel) => {\n setCurrentLevel(level)\n if (level === 'country') {\n setSelectedCountry(undefined)\n setSelectedState(undefined)\n } else if (level === 'state') {\n setSelectedState(undefined)\n }\n }\n\n if (!visible) return null\n\n return (\n <div\n style={{ height: '724px' }}\n className={cn(\n 'w-full rounded-b-[12px] absolute z-10 bottom-[-2px] left-0 bg-white border border-[#E4E5E6]',\n styles.antdMobileScope\n )}\n >\n {/* Header with tabs */}\n <div\n style={{ background: '#F8F8F8' }}\n className=\"h-[76px] font-bold text-[14px] flex flex-col\"\n >\n {/* Tabs */}\n <div className=\"flex items-center text-[16px] px-[20px] gap-[16px] py-[24px]\">\n <button\n onClick={() => handleTabClick('country')}\n className={cn(\n 'pb-[4px] transition-colors',\n currentLevel === 'country'\n ? 'text-[#080A0F] border-b-2 border-[#3ADB67]'\n : 'text-[#080A0F]'\n )}\n >\n {pageData.country}\n </button>\n <button\n onClick={() => handleTabClick('state')}\n disabled={!selectedCountry}\n className={cn(\n 'pb-[4px] transition-colors',\n currentLevel === 'state'\n ? 'text-[#080A0F] border-b-2 border-[#3ADB67]'\n : 'text-[#080A0F]',\n !selectedCountry && 'opacity-50 cursor-not-allowed'\n )}\n >\n {pageData.state}\n </button>\n <button\n onClick={() => handleTabClick('city')}\n disabled={!selectedState}\n className={cn(\n 'pb-[4px] transition-colors',\n currentLevel === 'city'\n ? 'text-[#080A0F] border-b-2 border-[#3ADB67]'\n : 'text-[#080A0F]',\n !selectedState && 'opacity-50 cursor-not-allowed'\n )}\n >\n {pageData.city}\n </button>\n </div>\n </div>\n\n {/* Content */}\n <AntdMobileIsolated style={{ height: 'calc(100% - 76px)' }}>\n {showIndexBar ? (\n <div style={{ height: '100%', display: 'flex', flexDirection: 'column' }}>\n {/* All option */}\n <List>\n <List.Item\n onClick={() => handleItemClick({ code: '__all__', name: pageData.allLocations || 'All', count: filteredItems.length })}\n key=\"__all__\"\n className='text-[16px] !pl-[24px] font-bold'\n style={{ cursor: 'pointer', borderBottom: '1px solid #E4E5E6' }}\n >\n {pageData.allLocations}\n </List.Item>\n </List>\n <IndexBar style={{ flex: 1 }}>\n {groupedItems.map((group) => {\n const { title, items } = group\n return (\n <IndexBar.Panel index={title} title={title} key={title}>\n <List>\n {items.map((item) => (\n <List.Item\n onClick={() => handleItemClick(item)}\n key={item.code}\n className='text-[16px] !pl-[24px]'\n style={{ cursor: 'pointer' }}\n >\n {item.name}\n </List.Item>\n ))}\n </List>\n </IndexBar.Panel>\n )\n })}\n </IndexBar>\n </div>\n ) : (\n <div style={{ height: '100%', overflow: 'auto' }}>\n <List>\n {/* All option */}\n <List.Item\n onClick={() => handleItemClick({ code: '__all__', name: pageData.allLocations || 'All', count: filteredItems.length })}\n key=\"__all__\"\n className='text-[16px] !pl-[24px] font-bold'\n style={{ cursor: 'pointer', borderBottom: '1px solid #E4E5E6' }}\n >\n {pageData.allLocations}\n </List.Item>\n {filteredItems.map((item) => (\n <List.Item\n onClick={() => handleItemClick(item)}\n key={item.code}\n className='text-[16px] !pl-[24px]'\n style={{ cursor: 'pointer' }}\n >\n {item.name}\n </List.Item>\n ))}\n </List>\n </div>\n )}\n </AntdMobileIsolated>\n </div>\n )\n}\n\nLocationFilter.displayName = 'LocationFilter'\n","import React, { useMemo, useState } from 'react'\nimport { cn } from '@/utils/cn'\nimport { Title } from './Title'\nimport { StudioCard } from './StudioCard'\nimport { StudioLocation, StudioMap } from './StudioMap'\nimport { useDemoRooms } from '@/api/hooks'\nimport type { DemoRoomApiClient } from '@/api/client'\nimport { LocationFilter, type LocationSelection } from './LocationFilter'\nimport type { DemoRoomPageData } from '../types/pageData'\nimport dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport timezone from 'dayjs/plugin/timezone'\n\n// 扩展 dayjs 插件\ndayjs.extend(utc)\ndayjs.extend(timezone)\n\nexport interface RoomsListProps extends React.HTMLAttributes<HTMLDivElement> {\n googleMapsApiKey?: string\n layoutClassName?: string\n apiClient: DemoRoomApiClient\n teamCode?: string\n brandWebsite?: string\n /**\n * Callback when user clicks \"Schedule Now\" button\n * @param demoRoomCode - The demo room code\n */\n onSchedule?: (demoRoomCode: string) => void\n /**\n * 页面可配置数据(文案、图标等)\n */\n pageData?: DemoRoomPageData\n}\n\n// 默认 pageData 配置\nconst defaultPageData: Required<DemoRoomPageData> = {\n title: 'Find a Studio Near You',\n loadingText: 'Loading demo rooms...',\n errorTitle: 'Failed to load demo rooms',\n machine: 'eufymake E1',\n locationFilter: {\n allLocations: 'All Locations',\n clear: 'Clear',\n country: 'Country',\n state: 'State',\n city: 'City',\n noStudiosFound: 'No studios found in this location',\n },\n studioCard: {\n scheduleNow: 'Schedule Now',\n available: 'Available',\n away: 'away',\n },\n map: {\n apiKeyRequired: 'Google Maps API Key is required',\n loadingMap: 'Loading map...',\n scheduleNow: 'Schedule Now',\n available: 'Available',\n },\n defaultCountry: 'United States',\n noAvailableTime: 'No available time',\n}\n\n// 默认测试数据 - 美国主要城市的工作室位置\nconst defaultStudioLocations: StudioLocation[] = [\n {\n id: '1',\n name: 'Design District Demo Room',\n address: '111 8th St, San Francisco, CA, United States',\n city: 'San Francisco',\n state: 'CA',\n zipCode: '94108',\n country: 'United States',\n lat: 37.7749,\n lng: -122.4194,\n availableTime: 'Oct 28, 2:00 PM',\n euifyMakeModel: 'euifyMake E1, euifyMake M5',\n },\n {\n id: '2',\n name: 'Brooklyn Creative Studio',\n address: '456 Broadway, Brooklyn, NY, United States',\n city: 'Brooklyn',\n state: 'NY',\n zipCode: '11211',\n country: 'United States',\n lat: 40.7128,\n lng: -74.006,\n availableTime: 'Oct 29, 3:00 PM',\n euifyMakeModel: 'euifyMake E1, euifyMake M5',\n },\n {\n id: '3',\n name: 'Austin Innovation Hub',\n address: '789 Tech Blvd, Austin, TX, United States',\n city: 'Austin',\n state: 'TX',\n zipCode: '78701',\n country: 'United States',\n lat: 30.2672,\n lng: -97.7431,\n availableTime: 'Oct 30, 1:00 PM',\n euifyMakeModel: 'euifyMake M5',\n },\n {\n id: '4',\n name: 'Seattle Maker Space',\n address: '321 Pine St, Seattle, WA, United States',\n city: 'Seattle',\n state: 'WA',\n zipCode: '98101',\n country: 'United States',\n lat: 47.6062,\n lng: -122.3321,\n availableTime: 'Oct 31, 11:00 AM',\n euifyMakeModel: 'euifyMake E1',\n },\n {\n id: '5',\n name: 'Chicago Design Center',\n address: '654 Michigan Ave, Chicago, IL, United States',\n city: 'Chicago',\n state: 'IL',\n zipCode: '60611',\n country: 'United States',\n lat: 41.8781,\n lng: -87.6298,\n availableTime: 'Nov 1, 2:30 PM',\n euifyMakeModel: 'euifyMake E1, euifyMake M5',\n },\n {\n id: '6',\n name: 'Miami Beach Studio',\n address: '987 Ocean Drive, Miami Beach, FL, United States',\n city: 'Miami Beach',\n state: 'FL',\n zipCode: '33139',\n country: 'United States',\n lat: 25.7617,\n lng: -80.1918,\n availableTime: 'Nov 2, 10:00 AM',\n euifyMakeModel: 'euifyMake M5',\n },\n {\n id: '7',\n name: 'Denver Mountain Studio',\n address: '147 16th St, Denver, CO, United States',\n city: 'Denver',\n state: 'CO',\n zipCode: '80202',\n country: 'United States',\n lat: 39.7392,\n lng: -104.9903,\n availableTime: 'Nov 3, 4:00 PM',\n euifyMakeModel: 'euifyMake E1',\n },\n {\n id: '8',\n name: 'Los Angeles Creative Lab',\n address: '258 Main St, Los Angeles, CA, United States',\n city: 'Los Angeles',\n state: 'CA',\n zipCode: '90012',\n country: 'United States',\n lat: 34.0522,\n lng: -118.2437,\n availableTime: 'Nov 4, 1:00 PM',\n euifyMakeModel: 'euifyMake E1, euifyMake M5',\n },\n]\n\nexport const RoomsList: React.FC<RoomsListProps> = ({\n googleMapsApiKey,\n className,\n apiClient,\n teamCode,\n brandWebsite,\n onSchedule,\n pageData,\n ...props\n}) => {\n // 合并用户提供的 pageData 和默认配置\n const mergedPageData = useMemo(\n () => ({\n ...defaultPageData,\n ...pageData,\n locationFilter: {\n ...defaultPageData.locationFilter,\n ...pageData?.locationFilter,\n },\n studioCard: { ...defaultPageData.studioCard, ...pageData?.studioCard },\n map: { ...defaultPageData.map, ...pageData?.map },\n }),\n [pageData]\n )\n\n // 状态管理\n const [showLocationFilter, setShowLocationFilter] = useState(false)\n const [selectedLocation, setSelectedLocation] = useState<LocationSelection>()\n const [hoveredRoomId, setHoveredRoomId] = useState<string | null>(null)\n\n // 使用 API 获取门店列表\n const {\n data: demoRooms,\n loading,\n error,\n } = useDemoRooms(apiClient, {\n team_code: teamCode,\n brand_website: brandWebsite,\n })\n console.log(demoRooms)\n\n // 将 API 返回的 DemoRoom 类型转换为 StudioLocation 类型\n const studioLocations = useMemo<StudioLocation[]>(() => {\n if (!demoRooms) return defaultStudioLocations\n\n return demoRooms.map((room) => {\n // 获取下一个可用时段\n const nextAvailableTimeslot = room?.timeslots?.find(\n (slot) => slot.status === 'available'\n )\n\n // 使用 API 返回的 location 数据,不再解析 address\n const country = room.location?.country || mergedPageData.defaultCountry\n const state = room.location?.state || ''\n const city = room.location?.city || ''\n\n // 拼接完整地址: room.address 可能只包含街道地址,需要加上 location 信息\n const addressParts = [room.address, city, state, country].filter(Boolean)\n const fullAddress = addressParts.join(', ')\n\n // 格式化时间为 \"Oct.28, 2:00 PM\" 格式\n let formattedTime = mergedPageData.noAvailableTime\n if (nextAvailableTimeslot) {\n try {\n // 使用门店的时区来格式化时间\n const timeInZone = dayjs(nextAvailableTimeslot.start_time).tz(\n room.timezone || 'America/Los_Angeles'\n )\n // 格式化为 \"Oct.28, 2:00 PM\"\n const month = timeInZone.format('MMM')\n const day = timeInZone.format('D')\n const time = timeInZone.format('h:mm A')\n formattedTime = `${month}.${day}, ${time}`\n } catch (error) {\n // 如果格式化失败,使用原始时间\n formattedTime = nextAvailableTimeslot.start_time\n }\n }\n\n return {\n id: room.code,\n name: room.name,\n address: fullAddress,\n city,\n state,\n zipCode: '',\n country,\n lat: Number(room.latitude) || 0,\n lng: Number(room.longitude) || 0,\n availableTime: formattedTime,\n euifyMakeModel: room?.equipment?.join(', ') || '',\n }\n })\n }, [demoRooms, mergedPageData.defaultCountry, mergedPageData.noAvailableTime])\n\n // 根据选择的位置过滤门店\n const filteredStudioLocations = useMemo(() => {\n if (!selectedLocation) return studioLocations\n\n return studioLocations.filter((location) => {\n // 直接使用 location 对象中的 country, state, city 字段进行比较\n if (selectedLocation.city) {\n return (\n location.country === selectedLocation.country &&\n location.state === selectedLocation.state &&\n location.city === selectedLocation.city\n )\n }\n\n if (selectedLocation.state) {\n return (\n location.country === selectedLocation.country &&\n location.state === selectedLocation.state\n )\n }\n\n if (selectedLocation.country) {\n return location.country === selectedLocation.country\n }\n\n return true\n })\n }, [studioLocations, selectedLocation])\n\n // 获取当前选择的位置名称\n const getSelectedLocationName = () => {\n if (!selectedLocation) return mergedPageData.locationFilter.allLocations\n if (selectedLocation.city) return selectedLocation.city\n if (selectedLocation.state) return selectedLocation.state\n if (selectedLocation.country) return selectedLocation.country\n return mergedPageData.locationFilter.allLocations\n }\n\n // 处理位置选择\n const handleLocationSelect = (selection: LocationSelection) => {\n setSelectedLocation(selection)\n setShowLocationFilter(false)\n }\n\n // 清除位置过滤\n const handleClearFilter = () => {\n setSelectedLocation(undefined)\n }\n\n return (\n <div className={className} {...props}>\n {/* Section Title */}\n <Title title={mergedPageData.title}></Title>\n\n {/* Loading State */}\n {loading && (\n <div className=\"flex items-center justify-center h-[794px]\">\n <div className=\"text-center\">\n <div className=\"text-lg font-medium\">\n {mergedPageData.loadingText}\n </div>\n </div>\n </div>\n )}\n\n {/* Error State */}\n {error && (\n <div className=\"flex items-center justify-center h-[794px]\">\n <div className=\"text-center\" style={{ color: '#FF4D4D' }}>\n <div className=\"text-lg font-medium\">\n {mergedPageData.errorTitle}\n </div>\n <div className=\"text-sm mt-2\">{error.message}</div>\n </div>\n </div>\n )}\n\n {/* Content */}\n {!loading && !error && (\n <div className=\"flex h-[794px] gap-4\">\n <div\n className=\"flex-none relative w-[420px] l:!w-full\"\n style={{ height: '794px' }}\n >\n {/* Filter Header */}\n <div className={cn(\n \"mb-4 bg-white border border-[#E4E5E6] px-[20px] py-[16px]\",\n showLocationFilter ? \"rounded-t-[12px] rounded-b-none\" : \"rounded-[12px]\"\n )}>\n {/* First Row */}\n <div className=\"h-[40px] font-bold text-[16px] l:text-[14px] gap-10 l:gap-4 flex items-center\">\n <button\n className=\"flex cursor-pointer items-center hover:text-[#3ADB67] transition-colors\"\n onClick={() => setShowLocationFilter(!showLocationFilter)}\n >\n <span className=\"mr-1\">{getSelectedLocationName()}</span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n className={cn(\n \"transition-transform duration-300\",\n showLocationFilter && \"rotate-180\"\n )}\n >\n <path\n d=\"M16.7661 9.23364C17.078 9.5455 17.0779 10.0516 16.7661 10.3635L12.5991 14.5305C12.2874 14.842 11.782 14.8418 11.4702 14.5305L7.30322 10.3635C6.99135 10.0516 6.99135 9.54552 7.30322 9.23364C7.615 8.9221 8.1203 8.92219 8.43213 9.23364L12.0347 12.8362L15.6362 9.23364C15.9481 8.92183 16.4543 8.92181 16.7661 9.23364Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n {selectedLocation && false && (\n <button\n onClick={handleClearFilter}\n className=\"ml-auto text-[14px] text-[#2E8B57] hover:underline\"\n >\n {mergedPageData.locationFilter.clear}\n </button>\n )}\n <div className=\"flex text-[#767880] cursor-not-allowed\">\n {mergedPageData.machine}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M16.7661 9.23364C17.078 9.5455 17.0779 10.0516 16.7661 10.3635L12.5991 14.5305C12.2874 14.842 11.782 14.8418 11.4702 14.5305L7.30322 10.3635C6.99135 10.0516 6.99135 9.54552 7.30322 9.23364C7.615 8.9221 8.1203 8.92219 8.43213 9.23364L12.0347 12.8362L15.6362 9.23364C15.9481 8.92183 16.4543 8.92181 16.7661 9.23364Z\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n </div>\n </div>\n\n {/* Room List */}\n <div\n style={{ maxHeight: '706px', overflow: 'auto' }}\n className=\"rounded-[12px] bg-white border h-[706px] border-[#E4E5E6]\"\n >\n {filteredStudioLocations.length === 0 ? (\n <div className=\"flex items-center justify-center h-[200px] text-[#767880]\">\n {mergedPageData.locationFilter.noStudiosFound}\n </div>\n ) : (\n filteredStudioLocations.map((item) => {\n return (\n <StudioCard\n key={item.id}\n code={item.id}\n name={item?.name}\n availableTime={item?.availableTime || ''}\n address={item?.address}\n city={item?.city}\n state={item?.state}\n zipCode={item?.zipCode}\n euifyMakeModel={item?.euifyMakeModel || ''}\n onSchedule={onSchedule}\n onMouseEnter={() => setHoveredRoomId(item.id)}\n pageData={{\n ...mergedPageData.studioCard,\n noAvailableTime: mergedPageData?.noAvailableTime,\n }}\n />\n )\n })\n )}\n </div>\n\n {/* Location Filter Overlay */}\n <LocationFilter\n locations={studioLocations.map((loc) => ({\n id: loc.id,\n country: loc.country,\n state: loc.state,\n city: loc.city,\n }))}\n visible={showLocationFilter}\n onSelect={handleLocationSelect}\n onClose={() => setShowLocationFilter(false)}\n pageData={mergedPageData.locationFilter}\n />\n </div>\n {googleMapsApiKey && (\n <div className={cn('flex-1 l:!hidden')}>\n <StudioMap\n googleMapsApiKey={googleMapsApiKey}\n locations={filteredStudioLocations}\n hoveredLocationId={hoveredRoomId}\n onSchedule={onSchedule}\n mapHeight=\"794px\"\n pageData={{\n ...mergedPageData.map,\n noAvailableTime: pageData?.noAvailableTime,\n }}\n />\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n\nRoomsList.displayName = 'RoomsList'\n","import type {\n ApiResponse,\n DemoRoom,\n GetDemoRoomsResponse,\n GetTimeslotsResponse,\n Questionnaire,\n CreateBookingRequest,\n Booking,\n GetBookingResponse,\n CancelBookingResponse,\n} from './types'\nimport { ApiError, ApiErrorCode } from './types'\n\nexport interface DemoRoomApiConfig {\n baseUrl: string\n apiKey: string\n locale?: string\n timeout?: number\n}\n\nexport class DemoRoomApiClient {\n private config: DemoRoomApiConfig\n\n constructor(config: DemoRoomApiConfig) {\n this.config = {\n timeout: 30000,\n ...config,\n }\n }\n\n private async request<T>(\n endpoint: string,\n options: RequestInit = {}\n ): Promise<T> {\n const url = `${this.config.baseUrl}${endpoint}`\n\n const headers: Record<string, string> = {\n 'X-API-Key': this.config.apiKey,\n 'Content-Type': 'application/json',\n ...(options.headers as Record<string, string>),\n }\n\n // 添加语言偏好\n if (this.config.locale) {\n headers['Accept-Language'] = this.config.locale\n }\n\n try {\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout)\n\n const response = await fetch(url, {\n ...options,\n headers,\n signal: controller.signal,\n })\n\n clearTimeout(timeoutId)\n\n const data: ApiResponse<T> = await response.json()\n\n if (data.code !== ApiErrorCode.SUCCESS) {\n throw new ApiError(data.code, data.message, data.request_id)\n }\n\n return data.data\n } catch (error) {\n if (error instanceof ApiError) {\n throw error\n }\n\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new ApiError(ApiErrorCode.INTERNAL_ERROR, 'Request timeout')\n }\n throw new ApiError(ApiErrorCode.INTERNAL_ERROR, error.message)\n }\n\n throw new ApiError(ApiErrorCode.INTERNAL_ERROR, 'Unknown error')\n }\n }\n\n /**\n * 获取门店列表\n * @param params.team_code 团队编码\n * @param params.brand_website 品牌站点\n * @param params.locale 语言偏好(可选)\n */\n async getDemoRooms(params: {\n team_code?: string\n brand_website?: string\n locale?: string\n }): Promise<DemoRoom[]> {\n const searchParams = new URLSearchParams()\n\n if (params.team_code) {\n searchParams.append('team_code', params.team_code)\n }\n\n if (params.brand_website) {\n searchParams.append('brand_website', params.brand_website)\n }\n\n if (params.locale) {\n searchParams.append('locale', params.locale)\n }\n\n const response = await this.request<GetDemoRoomsResponse>(\n `/api/v1/store/demorooms?${searchParams.toString()}`\n )\n\n return response.demorooms\n }\n\n /**\n * 获取门店详情\n * @param code 门店编码\n * @param locale 语言偏好(可选)\n */\n async getDemoRoom(code: string, locale?: string): Promise<DemoRoom> {\n const searchParams = new URLSearchParams()\n if (locale) {\n searchParams.append('locale', locale)\n }\n\n const query = searchParams.toString()\n return this.request<DemoRoom>(\n `/api/v1/store/demorooms/${code}${query ? `?${query}` : ''}`\n )\n }\n\n /**\n * 查询门店时段\n * @param code 门店编码\n * @param params.start_date 开始日期 (YYYY-MM-DD)\n * @param params.end_date 结束日期 (YYYY-MM-DD)\n * @param params.timezone 时区(可选)\n */\n async getTimeslots(\n code: string,\n params: {\n start_date: string\n end_date: string\n timezone?: string\n }\n ): Promise<GetTimeslotsResponse> {\n const searchParams = new URLSearchParams({\n start_date: params.start_date,\n end_date: params.end_date,\n })\n\n if (params.timezone) {\n searchParams.append('timezone', params.timezone)\n }\n\n return this.request<GetTimeslotsResponse>(\n `/api/v1/store/demorooms/${code}/timeslots?${searchParams.toString()}`\n )\n }\n\n /**\n * 查询门店问卷\n * @param code 门店编码\n * @param questionnaire_id 问卷ID\n * @param locale 语言偏好(可选)\n */\n async getQuestionnaire(\n code: string,\n questionnaire_id: number,\n locale?: string\n ): Promise<Questionnaire> {\n const searchParams = new URLSearchParams()\n if (locale) {\n searchParams.append('locale', locale)\n }\n\n const query = searchParams.toString()\n return this.request<Questionnaire>(\n `/api/v1/store/demorooms/${code}/questionnaires/${questionnaire_id}${query ? `?${query}` : ''}`\n )\n }\n\n /**\n * 提交预约\n * @param data 预约数据\n */\n async createBooking(data: CreateBookingRequest): Promise<Booking> {\n return this.request<Booking>('/api/v1/store/bookings', {\n method: 'POST',\n body: JSON.stringify(data),\n })\n }\n\n /**\n * 根据 token 获取预约详情(支持多语言)\n * @param token 预约凭证 (cancel_token)\n * @param locale 语言偏好(可选,也可以通过 Accept-Language Header)\n */\n async getBooking(token: string, locale?: string): Promise<Booking> {\n const headers: Record<string, string> = {}\n\n // 如果指定了 locale,通过 Accept-Language Header 传递\n if (locale) {\n headers['Accept-Language'] = locale\n }\n\n const response = await this.request<GetBookingResponse>(\n `/api/v1/store/bookings/${token}`,\n { headers }\n )\n return response.booking\n }\n\n /**\n * 取消预约(支持多语言邮件通知)\n * @param token 预约凭证 (cancel_token)\n * @param locale 语言偏好(可选,用于邮件通知)\n */\n async cancelBooking(token: string, locale?: string): Promise<Booking> {\n const headers: Record<string, string> = {}\n\n // 如果指定了 locale,通过 Accept-Language Header 传递\n if (locale) {\n headers['Accept-Language'] = locale\n }\n\n const response = await this.request<CancelBookingResponse>(\n `/api/v1/store/bookings/${token}/cancel`,\n {\n method: 'POST',\n headers,\n }\n )\n return response.booking\n }\n}\n\n// 创建默认客户端实例的辅助函数\nexport function createDemoRoomApi(config: DemoRoomApiConfig): DemoRoomApiClient {\n return new DemoRoomApiClient(config)\n}\n","import React, { useMemo } from 'react'\nimport { cn } from '@/utils/cn'\nimport { RoomsList } from './components/RoomsList'\nimport { createDemoRoomApi } from '@/api'\nimport type { DemoRoomApiClient } from '@/api'\nimport type { DemoRoomPageData } from './types/pageData'\n\nexport interface DemoRoomProps extends React.HTMLAttributes<HTMLDivElement> {\n layoutClassName?: string\n /**\n * 谷歌地图 API Key\n */\n googleMapsApiKey?: string\n /**\n * API 配置\n */\n apiConfig: {\n baseUrl: string\n apiKey: string\n locale?: string\n }\n /**\n * 团队编码或品牌站点(二选一)\n */\n teamCode?: string\n brandWebsite?: string\n /**\n * Callback when user clicks \"Schedule Now\" button\n * @param demoRoomCode - The demo room code\n */\n onSchedule?: (demoRoomCode: string) => void\n /**\n * 页面可配置数据(文案、图标等)\n */\n pageData?: DemoRoomPageData\n}\n\nexport const DemoRoom: React.FC<DemoRoomProps> = ({\n className,\n layoutClassName,\n googleMapsApiKey,\n apiConfig,\n teamCode,\n brandWebsite,\n onSchedule,\n pageData,\n ...props\n}) => {\n // 创建 API 客户端实例\n const apiClient = useMemo<DemoRoomApiClient>(\n () => createDemoRoomApi(apiConfig),\n [apiConfig]\n )\n\n return (\n <div className={cn(className)} {...props}>\n <RoomsList\n className={layoutClassName}\n googleMapsApiKey={googleMapsApiKey}\n apiClient={apiClient}\n teamCode={teamCode}\n brandWebsite={brandWebsite}\n onSchedule={onSchedule}\n pageData={pageData}\n ></RoomsList>\n </div>\n )\n}\n\nDemoRoom.displayName = 'DemoRoom'\n","import React, { useState, useEffect, useRef, useMemo } from 'react'\nimport { cn } from '@/utils/cn'\nimport type { Question } from '@/api/types'\n\nexport interface QuestionnaireFormProps {\n questions: Question[]\n pageData?: {\n submit?: string\n submitting?: string\n countryCodes?: Array<{ code?: string; country?: string }>\n agrees?: string[]\n emailDescription?: string\n bookingFailed?: string\n }\n selectedTimeslotId?: number | null\n onSubmit?: (responses: Record<string, any>) => void\n loading?: boolean\n className?: string\n error?: { message: string } | null\n}\n\nexport const QuestionnaireForm: React.FC<QuestionnaireFormProps> = ({\n questions,\n onSubmit,\n pageData,\n selectedTimeslotId,\n loading = false,\n className,\n error,\n}) => {\n const [responses, setResponses] = useState<Record<string, any>>({})\n const [errors, setErrors] = useState<Record<string, string>>({})\n const [agreements, setAgreements] = useState<Record<number, boolean>>({})\n const [agreementError, setAgreementError] = useState<string>('')\n const [phoneCountryCodes, setPhoneCountryCodes] = useState<\n Record<string, string>\n >({})\n const [otherInputs, setOtherInputs] = useState<Record<string, string>>({})\n\n // Track previous hasBookedBefore state to detect changes\n const prevHasBookedBeforeRef = useRef<boolean>(false)\n // Track if has_booked_before has been initialized\n const hasBookedBeforeInitialized = useRef<boolean>(false)\n\n // Find the has_booked_before question and get its correct ID\n const hasBookedBeforeQuestion = questions.find(\n (q) => (q.key || q.id) === 'has_booked_before'\n )\n const hasBookedBeforeQuestionId = hasBookedBeforeQuestion\n ? (hasBookedBeforeQuestion.key || hasBookedBeforeQuestion.id || '')\n : 'has_booked_before'\n\n // Check if user has booked before\n const hasBookedBefore = responses[hasBookedBeforeQuestionId] === 'option2'\n\n // Memoize hidden question IDs\n const hiddenQuestionIds = useMemo(() => {\n if (!hasBookedBefore) return []\n // When user has booked before, hide is_default: false questions (detailed questions)\n return questions\n .filter((q) => q.is_default === false)\n .map((q) => q.key || q.id || '')\n }, [hasBookedBefore, questions])\n\n // Filter questions based on has_booked_before selection\n const visibleQuestions = useMemo(() => {\n return questions.filter((question) => {\n // If user has booked before, only show is_default: true questions (basic questions)\n // Hide is_default: false questions (detailed questions)\n if (hasBookedBefore && question.is_default === false) {\n return false\n }\n return true\n })\n }, [questions, hasBookedBefore])\n\n // Initialize has_booked_before with default value (option1 - \"No\")\n useEffect(() => {\n // Only initialize once\n if (hasBookedBeforeInitialized.current) return\n\n if (hasBookedBeforeQuestion && hasBookedBeforeQuestionId) {\n // Set default to option1 (\"No, I've never booked before\")\n setResponses((prev) => {\n // Only set if not already set\n if (!prev[hasBookedBeforeQuestionId]) {\n return {\n ...prev,\n [hasBookedBeforeQuestionId]: 'option1',\n }\n }\n return prev\n })\n hasBookedBeforeInitialized.current = true\n }\n }, [hasBookedBeforeQuestion, hasBookedBeforeQuestionId])\n\n // Clear responses and errors for hidden questions when has_booked_before changes from false to true\n useEffect(() => {\n // Only clear when transitioning from false to true (user selects \"Yes\")\n if (hasBookedBefore && !prevHasBookedBeforeRef.current) {\n if (hiddenQuestionIds.length > 0) {\n setResponses((prev) => {\n const newResponses = { ...prev }\n hiddenQuestionIds.forEach((questionId) => {\n delete newResponses[questionId]\n })\n return newResponses\n })\n\n setErrors((prev) => {\n const newErrors = { ...prev }\n hiddenQuestionIds.forEach((questionId) => {\n delete newErrors[questionId]\n })\n return newErrors\n })\n }\n }\n\n // Update the ref\n prevHasBookedBeforeRef.current = hasBookedBefore\n }, [hasBookedBefore, hiddenQuestionIds])\n\n // 默认区号列表(如果 pageData 中没有提供)\n const defaultCountryCodes = [\n { code: '+1', country: 'US/CA' },\n { code: '+86', country: 'CN' },\n { code: '+44', country: 'UK' },\n { code: '+81', country: 'JP' },\n { code: '+82', country: 'KR' },\n { code: '+65', country: 'SG' },\n { code: '+852', country: 'HK' },\n { code: '+886', country: 'TW' },\n { code: '+61', country: 'AU' },\n { code: '+49', country: 'DE' },\n { code: '+33', country: 'FR' },\n ]\n\n const countryCodes = pageData?.countryCodes || defaultCountryCodes\n\n // 获取问题的唯一标识符,优先使用 key,没有则使用 id\n const getQuestionId = (question: Question): string => {\n return question.key || question.id || ''\n }\n\n const handleChange = (questionId: string, value: any) => {\n setResponses((prev) => ({\n ...prev,\n [questionId]: value,\n }))\n // Clear error when user starts typing\n if (errors[questionId]) {\n setErrors((prev) => {\n const newErrors = { ...prev }\n delete newErrors[questionId]\n return newErrors\n })\n }\n }\n\n const handleEmailBlur = (questionId: string, value: string) => {\n if (!value) return // Skip validation if empty (handled by required check)\n\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n if (!emailRegex.test(value)) {\n setErrors((prev) => ({\n ...prev,\n [questionId]: 'Please enter a valid email address',\n }))\n }\n }\n\n const handleCountryCodeChange = (questionId: string, code: string) => {\n setPhoneCountryCodes((prev) => ({\n ...prev,\n [questionId]: code,\n }))\n }\n\n const handleCheckboxChange = (\n questionId: string,\n optionValue: string,\n checked: boolean\n ) => {\n const currentValues = responses[questionId] || []\n const newValues = checked\n ? [...currentValues, optionValue]\n : currentValues.filter((v: string) => v !== optionValue)\n\n handleChange(questionId, newValues)\n }\n\n const handleAgreementChange = (index: number, checked: boolean) => {\n setAgreements((prev) => ({\n ...prev,\n [index]: checked,\n }))\n // Clear agreement error when user checks any agreement\n if (checked && agreementError) {\n setAgreementError('')\n }\n }\n\n const handleOtherInputChange = (questionId: string, value: string) => {\n setOtherInputs((prev) => ({\n ...prev,\n [questionId]: value,\n }))\n // Update the response to use the \"other\" input value\n handleChange(questionId, value)\n }\n\n const validateForm = (): boolean => {\n const newErrors: Record<string, string> = {}\n\n // Only validate visible questions\n visibleQuestions.forEach((question) => {\n if (question.required) {\n const questionId = getQuestionId(question)\n const value = responses[questionId]\n if (!value || (Array.isArray(value) && value.length === 0)) {\n newErrors[questionId] = 'This field is required'\n }\n }\n })\n\n // Validate agreements\n const agrees = pageData?.agrees || []\n if (agrees.length > 0) {\n const allAgreed = agrees.every(\n (_: any, index: number) => agreements[index]\n )\n if (!allAgreed) {\n setAgreementError(\n 'Please agree to all terms and conditions to continue'\n )\n setErrors(newErrors)\n return false\n }\n }\n\n setErrors(newErrors)\n setAgreementError('')\n return Object.keys(newErrors).length === 0\n }\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault()\n if (validateForm()) {\n // Separate country code and phone number for tel/phone fields\n const finalResponses = { ...responses }\n questions.forEach((question) => {\n if (question.type === 'tel' || question.type === 'phone') {\n const questionId = getQuestionId(question)\n const countryCode = phoneCountryCodes[questionId] || '+1'\n const phoneNumber = responses[questionId]\n if (phoneNumber) {\n // Store phone number without country code\n finalResponses[questionId] = phoneNumber\n // Store country code in a separate field\n // Support both 'phone_code' and 'customer_phone_code' field names\n if (\n questionId === 'phone' ||\n questionId === 'customer_phone_number'\n ) {\n finalResponses['phone_code'] = countryCode\n finalResponses['customer_phone_code'] = countryCode\n }\n }\n }\n })\n onSubmit?.(finalResponses)\n } else {\n // Scroll to first error field\n setTimeout(() => {\n const firstErrorElement = document.querySelector('[data-has-error=\"true\"]')\n if (firstErrorElement) {\n firstErrorElement.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n })\n }\n }, 100)\n }\n }\n\n const renderQuestion = (question: Question) => {\n const questionId = getQuestionId(question)\n const hasError = !!errors[questionId]\n\n switch (question.type) {\n case 'text':\n return (\n <input\n type={question.type}\n value={responses[questionId] || ''}\n onChange={(e) => handleChange(questionId, e.target.value)}\n placeholder={question.placeholder}\n className={cn(\n 'w-full px-4 py-3 rounded-lg border text-base bg-white dark:bg-white dark:text-gray-900',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:border-transparent',\n hasError ? 'border-red-500' : 'border-[#E4E5E6]'\n )}\n />\n )\n\n case 'email':\n return (\n <input\n type=\"email\"\n value={responses[questionId] || ''}\n onChange={(e) => handleChange(questionId, e.target.value)}\n onBlur={(e) => handleEmailBlur(questionId, e.target.value)}\n placeholder={question.placeholder}\n className={cn(\n 'w-full px-4 py-3 rounded-lg border text-base bg-white dark:bg-white dark:text-gray-900',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:border-transparent',\n hasError ? 'border-red-500' : 'border-[#E4E5E6]'\n )}\n />\n )\n\n case 'tel':\n case 'phone':\n return (\n <div className=\"flex gap-2\">\n <div className=\"relative\">\n <select\n value={phoneCountryCodes[questionId] || '+1'}\n onChange={(e) =>\n handleCountryCodeChange(questionId, e.target.value)\n }\n className={cn(\n 'appearance-none pl-3 pr-8 py-3 rounded-lg border text-base',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:border-transparent',\n 'bg-white cursor-pointer w-[80px]',\n 'dark:bg-white dark:text-gray-900',\n hasError ? 'border-red-500' : 'border-[#E4E5E6]'\n )}\n >\n {countryCodes.map((item) => (\n <option key={item.code} value={item.code}>\n {item.code}\n </option>\n ))}\n </select>\n <div className=\"absolute right-2 top-1/2 -translate-y-1/2 pointer-events-none\">\n <svg\n width=\"12\"\n height=\"8\"\n viewBox=\"0 0 12 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1 1.5L6 6.5L11 1.5\"\n stroke=\"#9CA3AF\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <input\n type=\"tel\"\n value={responses[questionId] || ''}\n onChange={(e) => handleChange(questionId, e.target.value)}\n placeholder={question.placeholder}\n className={cn(\n 'flex-1 px-4 py-3 rounded-lg border text-base bg-white dark:bg-white dark:text-gray-900',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:border-transparent',\n hasError ? 'border-red-500' : 'border-[#E4E5E6]'\n )}\n />\n </div>\n )\n\n case 'textarea':\n return (\n <textarea\n value={responses[questionId] || ''}\n onChange={(e) => handleChange(questionId, e.target.value)}\n placeholder={question.placeholder}\n rows={4}\n className={cn(\n 'w-full px-4 py-3 rounded-lg border text-base resize-none bg-white',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:border-transparent',\n 'dark:bg-white dark:text-gray-900',\n hasError ? 'border-red-500' : 'border-[#E4E5E6]'\n )}\n />\n )\n\n case 'radio':\n return (\n <div className=\"space-y-3\">\n {question?.options?.map((option) => (\n <label\n key={option.value || option.label}\n className=\"flex items-center gap-3 cursor-pointer group\"\n >\n <input\n type=\"radio\"\n name={questionId}\n value={option.value || option.label}\n checked={\n responses[questionId] === (option.value || option.label)\n }\n onChange={(e) => handleChange(questionId, e.target.value)}\n className=\"w-5 h-5 appearance-none cursor-pointer flex-shrink-0\"\n style={{\n backgroundImage: responses[questionId] === (option.value || option.label)\n ? 'url(https://cdn.shopify.com/s/files/1/0569/5147/2268/files/SelectBox.png?v=1769507941)'\n : 'url(https://cdn.shopify.com/s/files/1/0569/5147/2268/files/Frame_2121235232_2.png?v=1769507995)',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center',\n }}\n />\n <span className=\"text-base text-gray-900 dark:text-gray-900 font-bold group-hover:text-[#3ADB67] transition-colors\">\n {option.label}\n </span>\n </label>\n ))}\n </div>\n )\n\n case 'radio_with_other': {\n const isOtherSelected =\n responses[questionId] === '__other__' ||\n (responses[questionId] &&\n !question?.options?.find(\n (opt) => (opt.value || opt.label) === responses[questionId]\n ))\n\n return (\n <div className=\"space-y-3\">\n {question?.options?.map((option) => {\n const optionValue = option.value || option.label\n const isOtherOption = optionValue === '__other__'\n\n return (\n <div key={optionValue} className=\"space-y-2\">\n <label className=\"flex items-center gap-3 cursor-pointer group\">\n <input\n type=\"radio\"\n name={questionId}\n value={optionValue}\n checked={\n isOtherOption\n ? isOtherSelected\n : responses[questionId] === optionValue\n }\n onChange={(e) => {\n if (isOtherOption) {\n handleChange(questionId, '__other__')\n // Clear the other input when selecting the __other__ option\n setOtherInputs((prev) => ({\n ...prev,\n [questionId]: '',\n }))\n } else {\n handleChange(questionId, e.target.value)\n }\n }}\n className=\"w-5 h-5 appearance-none cursor-pointer flex-shrink-0\"\n style={{\n backgroundImage: (isOtherOption ? isOtherSelected : responses[questionId] === optionValue)\n ? 'url(https://cdn.shopify.com/s/files/1/0569/5147/2268/files/SelectBox.png?v=1769507941)'\n : 'url(https://cdn.shopify.com/s/files/1/0569/5147/2268/files/Frame_2121235232_2.png?v=1769507995)',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center',\n }}\n />\n <span className=\"text-base text-gray-900 dark:text-gray-900 font-bold group-hover:text-[#3ADB67] transition-colors\">\n {option.label}\n </span>\n </label>\n\n {/* Show input field when __other__ option is selected */}\n {isOtherOption && isOtherSelected && (\n <input\n type=\"text\"\n value={otherInputs[questionId] || ''}\n onChange={(e) =>\n handleOtherInputChange(questionId, e.target.value)\n }\n placeholder={question.placeholder || 'Please specify...'}\n className={cn(\n 'w-full px-4 py-3 rounded-lg border text-base bg-white dark:bg-white dark:text-gray-900',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:border-transparent',\n hasError ? 'border-red-500' : 'border-[#E4E5E6]'\n )}\n />\n )}\n </div>\n )\n })}\n </div>\n )\n }\n\n case 'checkbox':\n return (\n <div className=\"space-y-3\">\n {question?.options?.map((option) => {\n const optionValue = option.value || option.label\n const isChecked = (responses[questionId] || []).includes(\n optionValue\n )\n\n return (\n <label\n key={optionValue}\n className=\"flex items-center gap-3 cursor-pointer group\"\n >\n <input\n type=\"checkbox\"\n checked={isChecked}\n onChange={(e) =>\n handleCheckboxChange(\n questionId,\n optionValue,\n e.target.checked\n )\n }\n className=\"w-5 h-5 text-[#3ADB67] focus:ring-[#3ADB67] focus:ring-2 rounded\"\n style={{\n accentColor: '#3ADB67',\n }}\n />\n <span className=\"text-base text-gray-900 dark:text-gray-900 font-bold group-hover:text-[#3ADB67] transition-colors\">\n {option.label}\n </span>\n </label>\n )\n })}\n </div>\n )\n\n case 'select': {\n // Auto-select the first option if there's only one option and no value is set\n const currentValue = responses[questionId]\n const hasOnlyOneOption = question.options?.length === 1\n const defaultValue = hasOnlyOneOption && !currentValue && question.options?.[0]\n ? (question.options[0].value || question.options[0].label)\n : currentValue || ''\n\n // Set the default value if needed\n if (hasOnlyOneOption && !currentValue && question.options?.[0]) {\n handleChange(questionId, defaultValue)\n }\n\n return (\n <select\n value={defaultValue}\n onChange={(e) => handleChange(questionId, e.target.value)}\n className={cn(\n 'w-full px-4 py-3 rounded-lg border text-base bg-white dark:bg-white dark:text-gray-900',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:border-transparent',\n 'cursor-pointer',\n hasError ? 'border-red-500' : 'border-[#E4E5E6]'\n )}\n >\n {/* <option value=\"\">\n {question.placeholder || 'Please select...'}\n </option> */}\n {question.options?.map((option) => (\n <option\n key={option.value || option.label}\n value={option.value || option.label}\n >\n {option.label}\n </option>\n ))}\n </select>\n )\n }\n\n default:\n return null\n }\n }\n\n return (\n <div className=\"pb-[80px] light\">\n {/* 仅在有问题时显示问卷表单区域 */}\n {visibleQuestions && visibleQuestions.length > 0 && (\n <div className=\"bg-white rounded-[12px] border border-[#E4E5E6] p-8 dark:bg-white dark:border-[#E4E5E6] l:p-4\">\n <form onSubmit={handleSubmit} className={cn('space-y-6', className)}>\n {visibleQuestions.map((question) => {\n const questionId = getQuestionId(question)\n const hasError = !!errors[questionId]\n return (\n <div\n key={questionId}\n className=\"space-y-2\"\n data-has-error={hasError ? 'true' : 'false'}\n >\n <label className=\"block\">\n <span className=\"text-base font-bold text-gray-900 dark:text-gray-900\">\n {question.label}\n {question.required && (\n <span className=\"text-red-500 ml-1\">*</span>\n )}\n </span>\n {question.description && (\n <span className=\"block text-sm text-gray-600 dark:text-gray-600 font-bold mt-1\">\n {question.description}\n </span>\n )}\n {question.type === 'email' &&\n questionId === 'email' &&\n pageData?.emailDescription && (\n <span className=\"block text-sm text-gray-600 dark:text-gray-600 font-bold mt-1\">\n {pageData.emailDescription}\n </span>\n )}\n </label>\n\n {renderQuestion(question)}\n\n {question.hint && !errors[questionId] && (\n <p className=\"text-sm text-gray-500 dark:text-gray-500 font-bold\">\n {question.hint}\n </p>\n )}\n\n {errors[questionId] && (\n <p\n className=\"text-sm font-bold\"\n style={{ color: '#FF4D4D' }}\n >\n {errors[questionId]}\n </p>\n )}\n </div>\n )\n })}\n </form>\n </div>\n )}\n\n {!!selectedTimeslotId && (\n <div className=\"flex flex-col items-center justify-center\">\n {/* Agreements Section */}\n {pageData?.agrees && pageData.agrees.length > 0 && (\n <div\n className=\"space-y-4 mt-8\"\n data-has-error={agreementError ? 'true' : 'false'}\n >\n {pageData.agrees.map((agreeContent: string, index: number) => (\n <div key={index} className=\"flex items-center gap-3\">\n <input\n type=\"checkbox\"\n id={`agreement-${index}`}\n checked={agreements[index] || false}\n onChange={(e) =>\n handleAgreementChange(index, e.target.checked)\n }\n className=\"w-5 h-5 rounded text-[#3ADB67] focus:ring-[#3ADB67] cursor-pointer flex-shrink-0\"\n style={{\n accentColor: '#3ADB67',\n }}\n />\n <label\n htmlFor={`agreement-${index}`}\n className=\"text-sm text-gray-700 dark:text-gray-700 font-bold cursor-pointer select-none flex-1 [&_a]:underline [&_a]:text-blue-600 [&_a:hover]:text-blue-700\"\n dangerouslySetInnerHTML={{ __html: agreeContent }}\n aria-label={`Agreement ${index + 1}`}\n />\n </div>\n ))}\n {agreementError && (\n <p\n className=\"text-sm font-bold mt-2\"\n style={{ color: '#FF4D4D' }}\n >\n {agreementError}\n </p>\n )}\n </div>\n )}\n <button\n type=\"submit\"\n disabled={loading}\n onClick={handleSubmit}\n className={cn(\n 'w-fit mt-6 px-6 py-4 rounded-full',\n 'bg-[#080A0F] text-white font-bold text-base',\n 'hover:bg-[#2FC257] transition-colors',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:ring-offset-2',\n 'disabled:opacity-50 disabled:cursor-not-allowed'\n )}\n >\n {loading\n ? pageData?.submitting || 'Submitting...'\n : pageData?.submit || 'Submit Booking'}\n </button>\n\n {/* Booking Error Message */}\n {error && (\n <div className=\"text-center w-full p-4\">\n <p className=\"text-[#FF4D4D] font-bold\">\n {error.message}\n </p>\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n","import React, { useState, useMemo, useEffect } from 'react'\nimport dayjs from 'dayjs'\n\nimport 'dayjs/locale/zh-cn'\n\nimport { Calendar, Select, theme, ConfigProvider } from 'antd'\nimport type { Dayjs } from 'dayjs'\nimport dayLocaleData from 'dayjs/plugin/localeData'\nimport weekday from 'dayjs/plugin/weekday'\nimport weekOfYear from 'dayjs/plugin/weekOfYear'\nimport timezone from 'dayjs/plugin/timezone'\nimport utc from 'dayjs/plugin/utc'\nimport {\n useTimeslots,\n useDemoRoom,\n useQuestionnaire,\n useCreateBooking,\n} from '@/api/hooks'\nimport type { DemoRoomApiClient } from '@/api/client'\nimport type { Timeslot } from '@/api/types'\nimport { QuestionnaireForm } from './QuestionnaireForm'\n\ndayjs.extend(dayLocaleData)\ndayjs.extend(weekday)\ndayjs.extend(weekOfYear)\ndayjs.extend(utc)\ndayjs.extend(timezone)\n\nexport interface DateTimePickerProps {\n apiClient: DemoRoomApiClient\n demoRoomCode?: string\n timezone?: string\n pageData?: {\n scheduleYourVisit?: string\n timeSlot?: string\n loadingTimeSlots?: string\n failedToLoadTimeSlots?: string\n noAvailableTimeSlots?: string\n full?: string\n spotsLeft?: string\n fillOutForm?: string\n loadingQuestionnaire?: string\n bookingFailed?: string\n submit?: string\n submitting?: string\n agrees?: string[]\n timezone?: string\n }\n locale?: string\n onBookingSuccess?: (bookingData: string) => void\n onQuestionnaireSubmit?: (\n responses: Record<string, any>\n ) => void | Promise<void>\n}\n\nconst DateTimePicker: React.FC<DateTimePickerProps> = ({\n apiClient,\n demoRoomCode,\n timezone,\n pageData = {\n scheduleYourVisit: 'Schedule Your Visit',\n timeSlot: 'Time Slot',\n loadingTimeSlots: 'Loading time slots...',\n failedToLoadTimeSlots: 'Failed to load time slots',\n noAvailableTimeSlots: 'No available time slots for this date',\n full: 'Full',\n spotsLeft: 'spots left',\n fillOutForm: 'Fill out Form',\n loadingQuestionnaire: 'Loading questionnaire...',\n bookingFailed: 'Booking failed',\n },\n locale,\n onBookingSuccess,\n onQuestionnaireSubmit,\n}) => {\n const { token } = theme.useToken()\n const [selectedDate, setSelectedDate] = useState<Dayjs | null>(null)\n const [calendarValue, setCalendarValue] = useState<Dayjs>(dayjs()) // 日历显示的月份\n const [selectedTimeslotId, setSelectedTimeslotId] = useState<number | null>(\n null\n )\n const [isInitialized, setIsInitialized] = useState(false)\n\n // Use booking creation hook\n const {\n createBooking,\n loading: bookingLoading,\n error: bookingError,\n } = useCreateBooking(apiClient)\n\n // Fetch demo room details to get questionnaire_id\n const { data: demoRoom } = useDemoRoom(\n apiClient,\n demoRoomCode || '',\n locale,\n { enabled: !!demoRoomCode }\n )\n\n // Fetch questionnaire if available\n const { data: questionnaire, loading: questionnaireLoading } =\n useQuestionnaire(\n apiClient,\n demoRoomCode || '',\n demoRoom?.questionnaire_id,\n locale,\n { enabled: !!demoRoomCode && !!demoRoom?.questionnaire_id }\n )\n\n // 查询当月时段 - 使用 calendarValue 作为查询基准\n const startDate = calendarValue.startOf('month').format('YYYY-MM-DD')\n const endDate = calendarValue.endOf('month').format('YYYY-MM-DD')\n\n const {\n data: timeslotsData,\n loading: timeslotsLoading,\n error: timeslotsError,\n } = useTimeslots(\n apiClient,\n demoRoomCode || '',\n {\n start_date: startDate,\n end_date: endDate,\n timezone,\n },\n { enabled: !!demoRoomCode }\n )\n\n // 过滤出选中日期的时段\n const dayTimeslots = useMemo<Timeslot[]>(() => {\n if (!timeslotsData?.timeslots || !selectedDate) return []\n\n const tz = demoRoom?.timezone || timezone\n const selectedDateStr = selectedDate.format('YYYY-MM-DD')\n return timeslotsData.timeslots.filter((slot) => {\n const slotDate = tz\n ? dayjs(slot.start_time).tz(tz).format('YYYY-MM-DD')\n : dayjs(slot.start_time).format('YYYY-MM-DD')\n return slotDate === selectedDateStr\n })\n }, [timeslotsData, selectedDate, demoRoom?.timezone, timezone])\n\n // 获取所有有可用时段的日期\n const availableDates = useMemo(() => {\n if (!timeslotsData?.timeslots) return new Set<string>()\n\n const tz = demoRoom?.timezone || timezone\n const dates = new Set<string>()\n timeslotsData.timeslots.forEach((slot) => {\n if (slot.status === 'available') {\n const dateStr = tz\n ? dayjs(slot.start_time).tz(tz).format('YYYY-MM-DD')\n : dayjs(slot.start_time).format('YYYY-MM-DD')\n dates.add(dateStr)\n }\n })\n return dates\n }, [timeslotsData, demoRoom?.timezone, timezone])\n\n // 自动选择最近的可用日期和时段(初始化时)\n useEffect(() => {\n if (!timeslotsData?.timeslots || isInitialized) return\n\n const tz = demoRoom?.timezone || timezone\n const now = tz ? dayjs().tz(tz) : dayjs()\n\n // 查找所有可用时段\n const availableTimeslots = timeslotsData.timeslots.filter((slot) => {\n const slotTime = tz\n ? dayjs(slot.start_time).tz(tz)\n : dayjs(slot.start_time)\n return slot.status === 'available' && slotTime.isAfter(now)\n })\n\n if (availableTimeslots.length > 0) {\n // 按时间排序,找到最近的时段\n const sortedSlots = [...availableTimeslots].sort((a, b) => {\n const timeA = tz ? dayjs(a.start_time).tz(tz) : dayjs(a.start_time)\n const timeB = tz ? dayjs(b.start_time).tz(tz) : dayjs(b.start_time)\n return timeA.unix() - timeB.unix()\n })\n\n const nearestSlot = sortedSlots[0]\n const nearestDate = tz\n ? dayjs(nearestSlot.start_time).tz(tz)\n : dayjs(nearestSlot.start_time)\n\n // 设置选中的日期和时段\n setSelectedDate(nearestDate)\n setCalendarValue(nearestDate) // 同时更新日历视图\n setSelectedTimeslotId(nearestSlot.id)\n setIsInitialized(true)\n } else if (!selectedDate) {\n // 如果没有可用时段,默认选择今天\n setSelectedDate(now)\n setCalendarValue(now) // 同时更新日历视图\n setIsInitialized(true)\n }\n }, [timeslotsData, isInitialized, selectedDate, demoRoom?.timezone, timezone])\n\n // 切换月份时自动选择当月第一个可预约日期\n useEffect(() => {\n if (!timeslotsData?.timeslots || !isInitialized) return\n\n // 如果选中日期在当前查看的月份内,保持选中状态,不自动切换\n if (selectedDate && selectedDate.isSame(calendarValue, 'month')) {\n return\n }\n\n // 获取当前查看月份的所有可用时段\n const tz = demoRoom?.timezone || timezone\n const currentMonthStart = calendarValue.startOf('month')\n const currentMonthEnd = calendarValue.endOf('month')\n const now = tz ? dayjs().tz(tz) : dayjs()\n\n const availableTimeslots = timeslotsData.timeslots.filter((slot) => {\n const slotDate = tz\n ? dayjs(slot.start_time).tz(tz)\n : dayjs(slot.start_time)\n return (\n slot.status === 'available' &&\n slotDate.isAfter(now) &&\n (slotDate.isAfter(currentMonthStart) ||\n slotDate.isSame(currentMonthStart, 'day')) &&\n (slotDate.isBefore(currentMonthEnd) ||\n slotDate.isSame(currentMonthEnd, 'day'))\n )\n })\n\n if (availableTimeslots.length > 0) {\n // 按时间排序,找到当月第一个可用时段\n const sortedSlots = [...availableTimeslots].sort((a, b) => {\n const timeA = tz ? dayjs(a.start_time).tz(tz) : dayjs(a.start_time)\n const timeB = tz ? dayjs(b.start_time).tz(tz) : dayjs(b.start_time)\n return timeA.unix() - timeB.unix()\n })\n\n const firstSlot = sortedSlots[0]\n const firstDate = tz\n ? dayjs(firstSlot.start_time).tz(tz)\n : dayjs(firstSlot.start_time)\n\n // 选中日期不在当前月份时,自动切换到该月第一个可用日期\n setSelectedDate(firstDate)\n setSelectedTimeslotId(firstSlot.id)\n }\n }, [\n calendarValue,\n timeslotsData,\n isInitialized,\n selectedDate,\n demoRoom?.timezone,\n timezone,\n ])\n\n // 格式化时段显示 - 使用 demoRoom 的时区\n const formatTimeslot = (slot: Timeslot) => {\n const tz = demoRoom?.timezone || timezone\n const start = tz\n ? dayjs(slot.start_time).tz(tz).format('h:mm A')\n : dayjs(slot.start_time).format('h:mm A')\n const end = tz\n ? dayjs(slot.end_time).tz(tz).format('h:mm A')\n : dayjs(slot.end_time).format('h:mm A')\n return `${start} - ${end}`\n }\n\n const wrapperStyle: React.CSSProperties = {\n background: '#fff',\n border: `1px solid ${token.colorBorderSecondary}`,\n borderRadius: 16,\n }\n\n return (\n <div>\n <div className=\"text-[48px] l:text-[32px] py-[64px] l:py-[24px] l:pt-[64px] font-bold text-center\">\n {pageData.scheduleYourVisit}\n </div>\n <div className=\"flex gap-4 l:flex-col\">\n <ConfigProvider\n theme={{\n token: {\n colorPrimary: '#3ADB67',\n },\n components: {\n Calendar: {\n fullBg: '#fff',\n fullPanelBg: '#fff',\n itemActiveBg: '#3ADB67',\n },\n },\n }}\n >\n <div\n style={wrapperStyle}\n className=\"calendar-custom-cell w-[calc(824/1920*100vw)] min-l:max-w-[824px] l:w-full\"\n >\n <style>{`\n .calendar-custom-cell {\n border-radius: 16px !important;\n overflow: hidden;\n padding: 0 24px 16px 24px !important;\n }\n .calendar-custom-cell,\n .calendar-custom-cell *,\n .calendar-custom-cell .ant-picker-panel,\n .calendar-custom-cell .ant-picker-calendar,\n .calendar-custom-cell .ant-picker-content,\n .calendar-custom-cell .ant-picker-cell,\n .calendar-custom-cell .ant-picker-calendar-date-value {\n font-family: 'MontForAnker' !important;\n }\n .calendar-custom-cell .ant-picker-cell {\n padding: 6px !important;\n text-align: center !important;\n }\n .calendar-custom-cell .ant-picker-cell .ant-picker-cell-inner {\n margin: 0 auto !important;\n }\n .calendar-custom-cell .ant-picker-cell-inner {\n width: 38px !important;\n height: 38px !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n border-radius: 8px !important;\n border: 1px solid #E4E5E6 !important;\n aspect-ratio: 1 / 1 !important;\n }\n .calendar-custom-cell .ant-picker-calendar-date-value {\n line-height: 38px !important;\n font-weight: 700 !important;\n font-size: 14px !important;\n }\n @media (min-width: 1024px) and (max-width: 1919px) {\n .calendar-custom-cell .ant-picker-cell-inner {\n width: 54px !important;\n height: 54px !important;\n border-radius: 12px !important;\n }\n .calendar-custom-cell .ant-picker-calendar-date-value {\n line-height: 54px !important;\n font-weight: 700 !important;\n font-size: 20px !important;\n }\n }\n @media (min-width: 1920px) {\n .calendar-custom-cell .ant-picker-cell-inner {\n width: 100px !important;\n height: 100px !important;\n border-radius: 20px !important;\n }\n .calendar-custom-cell .ant-picker-calendar-date-value {\n line-height: 100px !important;\n font-weight: 700 !important;\n font-size: 20px !important;\n }\n }\n .calendar-custom-cell .ant-picker-cell-selected .ant-picker-cell-inner,\n .calendar-custom-cell .ant-picker-cell-selected:not(.ant-picker-cell-disabled) .ant-picker-cell-inner {\n background-color: #3ADB67 !important;\n color: #080A0F !important;\n border-color: #3ADB67 !important;\n }\n .calendar-custom-cell .ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner {\n background-color: #3ADB67 !important;\n color: #080A0F !important;\n }\n .calendar-custom-cell .ant-picker-cell-today .ant-picker-cell-inner {\n border-color: #3ADB67 !important;\n border-radius: 8px !important;\n }\n @media (min-width: 1024px) and (max-width: 1919px) {\n .calendar-custom-cell .ant-picker-cell-today .ant-picker-cell-inner {\n border-radius: 12px !important;\n }\n }\n @media (min-width: 1920px) {\n .calendar-custom-cell .ant-picker-cell-today .ant-picker-cell-inner {\n border-radius: 20px !important;\n }\n }\n .calendar-custom-cell .ant-picker-cell-today .ant-picker-cell-inner::before {\n display: none !important;\n }\n .calendar-custom-cell .ant-picker-content {\n width: 100% !important;\n }\n .calendar-custom-cell .ant-picker-content thead tr th {\n line-height: 48px !important;\n font-weight: 700 !important;\n font-size: 18px !important;\n }\n .calendar-custom-cell .ant-picker-cell-disabled .ant-picker-cell-inner {\n background-color: #F5F5F5 !important;\n color: #767880 !important;\n border: none !important;\n cursor: not-allowed !important;\n box-shadow: none !important;\n }\n .calendar-custom-cell .ant-picker-cell-disabled:hover .ant-picker-cell-inner {\n background-color: #F5F5F5 !important;\n border: none !important;\n box-shadow: none !important;\n }\n .calendar-custom-cell .ant-picker-cell-disabled::before {\n display: none !important;\n }\n .calendar-custom-cell .ant-picker-cell-disabled::after {\n display: none !important;\n }\n `}</style>\n <Calendar\n fullscreen={false}\n value={calendarValue}\n onSelect={(date) => {\n // 点击日期时更新选中的日期和日历视图\n setSelectedDate(date)\n setCalendarValue(date)\n }}\n onPanelChange={(date) => {\n // 切换月份/年份时只更新日历视图,不更新选中日期\n setCalendarValue(date)\n }}\n disabledDate={(current) => {\n if (!current) return false\n\n // 当天日期永远不禁用\n if (current.isSame(dayjs(), 'day')) return false\n\n // 禁用比今天早的日期\n if (current.isBefore(dayjs(), 'day')) return true\n\n // 禁用没有可用时段的日期\n const dateStr = current.format('YYYY-MM-DD')\n return !availableDates.has(dateStr)\n }}\n fullCellRender={(date) => {\n const isSelected =\n selectedDate && date.isSame(selectedDate, 'day')\n const isToday = date.isSame(dayjs(), 'day')\n const dateStr = date.format('YYYY-MM-DD')\n // 当天日期永远不禁用\n const isDisabled =\n !isToday &&\n (date.isBefore(dayjs(), 'day') ||\n !availableDates.has(dateStr))\n\n return (\n <div\n className={`ant-picker-cell-inner ${\n isSelected ? 'ant-picker-cell-inner-selected' : ''\n } ${isToday ? 'ant-picker-cell-inner-today' : ''}`}\n style={{\n backgroundColor: isSelected ? '#3ADB67' : undefined,\n color: isSelected\n ? '#080A0F'\n : isDisabled\n ? '#767880'\n : undefined,\n borderColor: isSelected\n ? '#3ADB67'\n : isToday\n ? '#3ADB67'\n : undefined,\n }}\n >\n <div className=\"ant-picker-calendar-date-value\">\n {date.date()}\n </div>\n </div>\n )\n }}\n headerRender={({ value, onChange }) => {\n const year = value.year()\n const month = value.month()\n\n const yearOptions = Array.from({ length: 20 }, (_, i) => {\n const label = year - 10 + i\n return { label, value: label }\n })\n\n const monthOptions = value\n .localeData()\n .months()\n .map((label, index) => ({\n label,\n value: index,\n }))\n\n return (\n <div className=\"flex items-center justify-between py-3 l:pb-[0px]\">\n {/* Month and Year */}\n <div className=\"flex items-center gap-3\">\n <Select\n value={month}\n options={monthOptions}\n onChange={(newMonth) => {\n const now = value.clone().month(newMonth)\n onChange(now)\n }}\n variant=\"borderless\"\n className=\"text-[32px] l:text-[20px] font-bold\"\n popupMatchSelectWidth={false}\n suffixIcon={null}\n style={{\n fontWeight: 700,\n }}\n />\n <div className=\"text-[20px] text-[#E4E5E6]\">/</div>\n <Select\n value={year}\n options={yearOptions}\n onChange={(newYear) => {\n const now = value.clone().year(newYear)\n onChange(now)\n }}\n variant=\"borderless\"\n className=\"text-[32px] l:text-[20px] font-bold\"\n popupMatchSelectWidth={false}\n suffixIcon={null}\n style={{\n fontWeight: 700,\n }}\n />\n </div>\n\n {/* Navigation Buttons */}\n <div className=\"flex items-center gap-2\">\n <button\n onClick={() => {\n const newDate = value.subtract(1, 'month')\n onChange(newDate)\n }}\n className=\"w-10 h-10 flex items-center justify-center hover:bg-gray-100 rounded-lg transition-colors\"\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 16L6 10L12 4\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button\n onClick={() => {\n const newDate = value.add(1, 'month')\n onChange(newDate)\n }}\n className=\"w-10 h-10 flex items-center justify-center hover:bg-gray-100 rounded-lg transition-colors\"\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8 4L14 10L8 16\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n )\n }}\n />\n </div>\n </ConfigProvider>\n <div className=\"bg-white p-[24px] rounded-[16px] flex-1\">\n <div className=\"flex justify-between items-center\">\n <div className=\"text-[24px] l:text-[16px]\">{pageData.timeSlot}</div>\n <div className=\"flex text-[18px] l:text-[14px] l:gap-1 gap-2\">\n <button\n onClick={() => {\n if (selectedDate) {\n const newDate = selectedDate.subtract(1, 'day')\n // 确保不会选择到过去的日期\n if (!newDate.isBefore(dayjs(), 'day')) {\n setSelectedDate(newDate)\n setCalendarValue(newDate) // 同时更新日历视图\n }\n }\n }}\n disabled={\n !selectedDate ||\n selectedDate.isSame(dayjs(), 'day') ||\n selectedDate.isBefore(dayjs(), 'day')\n }\n className=\"w-8 h-8 flex items-center justify-center hover:bg-gray-100 rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M14.2929 5.29289C14.6834 4.90237 15.3164 4.90237 15.707 5.29289C16.0975 5.68342 16.0975 6.31643 15.707 6.70696L10.414 11.9999L15.707 17.2929L15.7753 17.3691C16.0957 17.7618 16.0731 18.3408 15.707 18.707C15.3408 19.0731 14.7618 19.0957 14.3691 18.7753L14.2929 18.707L8.29289 12.707C7.90237 12.3164 7.90237 11.6834 8.29289 11.2929L14.2929 5.29289Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n </button>\n <div className=\"flex items-center justify-center\">\n {selectedDate ? selectedDate.format('MMMM D') : ''}\n </div>\n <button\n onClick={() => {\n if (selectedDate) {\n const newDate = selectedDate.add(1, 'day')\n setSelectedDate(newDate)\n setCalendarValue(newDate) // 同时更新日历视图\n }\n }}\n disabled={!selectedDate}\n className=\"w-8 h-8 flex items-center justify-center hover:bg-gray-100 rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M8.29289 5.29289C8.68342 4.90237 9.31643 4.90237 9.70696 5.29289L15.707 11.2929C16.0975 11.6834 16.0975 12.3164 15.707 12.707L9.70696 18.707C9.31643 19.0975 8.68342 19.0975 8.29289 18.707C7.90237 18.3164 7.90237 17.6834 8.29289 17.2929L13.5859 11.9999L8.29289 6.70696C7.90237 6.31643 7.90237 5.68342 8.29289 5.29289Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n </button>\n </div>\n </div>\n <div className=\"grid grid-cols-2 mt-[40px] gap-4 l:mt-[16px] l:flex l:flex-col l:gap-2\">\n {timeslotsLoading ? (\n <div className=\"col-span-2 text-center text-[#767880] py-8\">\n {pageData.loadingTimeSlots}\n </div>\n ) : timeslotsError ? (\n <div className=\"col-span-2 text-center text-red-600 py-8\">\n {pageData.failedToLoadTimeSlots}\n </div>\n ) : dayTimeslots.length === 0 ? (\n <div className=\"col-span-2 text-center text-[#767880] py-8\">\n {pageData.noAvailableTimeSlots}\n </div>\n ) : (\n dayTimeslots.map((slot) => {\n const isAvailable = slot.status === 'available'\n const isFull = slot.status === 'full'\n const isSelected = selectedTimeslotId === slot.id\n\n return (\n <button\n key={slot.id}\n disabled={!isAvailable}\n onClick={() => {\n if (isAvailable) {\n setSelectedTimeslotId(slot.id)\n }\n }}\n className={`\n rounded-[20px] w-full text-[18px] l:gap-2 l:text-[16px] flex items-center justify-center gap-4 h-[76px]\n border text-center transition-colors\n ${\n isSelected\n ? 'border-[#3ADB67] bg-[#3ADB67] cursor-pointer'\n : isAvailable\n ? 'border-[#E4E5E6] hover:border-[#3ADB67] hover:bg-[#3ADB67] cursor-pointer'\n : 'border-[#E4E5E6] bg-[#F5F5F5] text-[#767880] cursor-not-allowed'\n }\n `}\n >\n <div className=\"flex flex-col items-center\">\n <div>{formatTimeslot(slot)}</div>\n {isFull && (\n <div className=\"text-[16px] l:text-[14px] text-[#767880] mt-[2px]\">\n {pageData.full}\n </div>\n )}\n {isAvailable && !isSelected && (\n <div className=\"text-[16px] l:text-[14px] text-[#767880] mt-1\">\n {slot.capacity - slot.booked_count}{' '}\n {pageData.spotsLeft}\n </div>\n )}\n {isAvailable && isSelected && (\n <div className=\"text-[16px] l:text-[14px] mt-1\">\n {slot.capacity - slot.booked_count}{' '}\n {pageData.spotsLeft}\n </div>\n )}\n </div>\n </button>\n )\n })\n )}\n </div>\n {!timeslotsLoading && dayTimeslots?.length > 0 && (\n <div className=\"pt-[24px] text-[#6d6d6F] text-center\">\n {pageData?.timezone?.replace(\n '{{timezone}}',\n demoRoom?.timezone || timezone || ''\n )}\n </div>\n )}\n </div>\n </div>\n\n {/* Questionnaire Section */}\n {true && (\n <div className=\"mt-12\">\n {!!questionnaire?.questions?.length && (\n <div className=\"text-[48px] font-bold text-center mb-8 l:mb-[24px] l:text-[32px] l:text-left\">\n {pageData.fillOutForm}\n </div>\n )}\n\n {questionnaireLoading ? (\n <div className=\"text-center text-[#767880] py-8\">\n {pageData.loadingQuestionnaire}\n </div>\n ) : (\n <QuestionnaireForm\n questions={questionnaire?.questions || []}\n loading={bookingLoading}\n pageData={pageData}\n selectedTimeslotId={selectedTimeslotId}\n error={bookingError}\n onSubmit={async (responses) => {\n // Call onQuestionnaireSubmit callback if provided (for subscription etc.)\n if (onQuestionnaireSubmit) {\n await onQuestionnaireSubmit(responses)\n }\n\n // Create booking with questionnaire responses\n try {\n // Extract customer info from questionnaire responses\n // Support both 'name'/'email'/'phone' and 'customer_name'/'customer_email'/'customer_phone_number'\n const customerName =\n responses.name || responses.customer_name || ''\n const customerEmail =\n responses.email || responses.customer_email || ''\n const customerPhone =\n responses.phone || responses.customer_phone_number || ''\n const customerPhoneCode =\n responses.phone_code ||\n responses.customer_phone_code ||\n '+1'\n\n // Extract has_booked_before and convert to number\n // option2 = \"Yes, I've booked before\" -> 1\n // option1 or other = \"No\" or not answered -> 0\n const hasBookedBefore = responses.has_booked_before === 'option2' ? 1 : 0\n\n if (selectedTimeslotId) {\n const result = await createBooking({\n demoroom_code: demoRoomCode!,\n timeslot_id: selectedTimeslotId!,\n questionnaire_id: questionnaire?.id,\n questionnaire_response: responses,\n customer_name: customerName,\n customer_email: customerEmail,\n customer_phone_code: customerPhoneCode,\n customer_phone_number: customerPhone,\n has_booked_before: hasBookedBefore,\n })\n\n // Call onBookingSuccess callback if booking was successful\n if (result && onBookingSuccess) {\n onBookingSuccess(result?.cancel_token)\n }\n }\n } catch (error) {\n console.error('Booking creation failed:', error)\n }\n }}\n />\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport default DateTimePicker\n","/**\n * SSR Window 5.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2025, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: June 27, 2025\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target = {}, src = {}) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes = '') {\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector = '') {\n const window = getWindow();\n const children = [...element.children];\n if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));\n }\n}\nfunction elementIsChildOf(el, parent) {\n const window = getWindow();\n let isChild = parent.contains(el);\n if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes = []) {\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\nfunction setInnerHTML(el, html = '') {\n if (typeof trustedTypes !== 'undefined') {\n el.innerHTML = trustedTypes.createPolicy('html', {\n createHTML: s => s\n }).createHTML(html);\n } else {\n el.innerHTML = html;\n }\n}\n\nexport { getRotateFix as a, setCSSProperty as b, createElement as c, elementParents as d, elementChildren as e, elementOffset as f, getSlideTransformEl as g, now as h, elementOuterSize as i, elementIndex as j, classesToTokens as k, getTranslate as l, makeElementsArray as m, nextTick as n, elementTransitionEnd as o, isObject as p, elementStyle as q, elementNextAll as r, setInnerHTML as s, elementPrevAll as t, animateCSSModeScroll as u, showWarning as v, elementIsChildOf as w, extend as x, deleteProps as y };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { d as elementParents, q as elementStyle, e as elementChildren, b as setCSSProperty, i as elementOuterSize, r as elementNextAll, t as elementPrevAll, l as getTranslate, u as animateCSSModeScroll, n as nextTick, v as showWarning, c as createElement, w as elementIsChildOf, h as now, x as extend, j as elementIndex, y as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad)(?!\\1).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n const swiperSize = swiper.size - offsetBefore - offsetAfter;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween - offsetBefore - offsetAfter;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides[i];\n if (slide) {\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n }\n\n if (isVirtual && params.slidesPerView === 'auto') {\n if (params.virtual.slidesPerViewAutoSlideSize) {\n slideSize = params.virtual.slidesPerViewAutoSlideSize;\n }\n if (slideSize && slide) {\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n } else if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slide.style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slide) {\n slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slide) {\n slide.swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (offsetBefore || 0) + (offsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n } else if (runCallbacks && activeIndex !== previousIndex) {\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index = 0, speed, runCallbacks = true, internal, initial) {\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n const browser = getBrowser();\n const isSafari = browser.isSafari;\n if (isVirtual && !initial && isSafari && swiper.isElement) {\n swiper.virtual.update(false, false, slideIndex);\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index = 0, speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides,\n slidesOffsetBefore,\n slidesOffsetAfter\n } = swiper.params;\n const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (bothDirections && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (bothDirections) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && bothDirections && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = bothDirections ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n const isFreeMode = params.freeMode && params.freeMode.enabled;\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks = true, internal) {\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex);\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n swiper.slideToLoop(realIndex);\n } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex, initial) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const clearBlankSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideBlankClass}`);\n slides.forEach(el => {\n el.remove();\n });\n if (slides.length > 0) {\n swiper.recalcSlides();\n swiper.updateSlides();\n }\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) {\n clearBlankSlides();\n }\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n const bothDirections = params.centeredSlides || !!params.slidesOffsetBefore || !!params.slidesOffsetAfter;\n swiper.loopFix({\n slideRealIndex,\n direction: bothDirections ? undefined : 'next',\n initial\n });\n}\n\nfunction loopFix({\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n initial,\n byController,\n byMousewheel\n} = {}) {\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides,\n slidesOffsetBefore,\n slidesOffsetAfter,\n initialSlide\n } = params;\n const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!bothDirections && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (bothDirections && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (bothDirections && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = bothDirections ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !bothDirections;\n let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (bothDirections && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n if (isInitialOverflow) {\n slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);\n }\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n if (appendSlidesIndexes.includes(activeSlideIndex)) {\n appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);\n }\n if (prependSlidesIndexes.includes(activeSlideIndex)) {\n prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {\n return;\n } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n const document = getDocument();\n\n // Get breakpoint for window/container width and update parameters\n const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n }\n getSlideIndexWhenGrid(index) {\n if (this.grid && this.params.grid && this.params.grid.rows > 1) {\n if (this.params.grid.fill === 'column') {\n index = Math.floor(index / this.params.grid.rows);\n } else if (this.params.grid.fill === 'row') {\n index = index % Math.ceil(this.slides.length / this.params.grid.rows);\n }\n }\n return index;\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate(undefined, true);\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { s as setInnerHTML } from './utils.mjs';\n\n/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params = {}) {\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params = {}) {\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params = {}) {\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames = '') {\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName = '') {\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className = '') {\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper({\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n}) {\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && !passedParams.thumbs.swiper.destroyed && currentParams.thumbs && (!currentParams.thumbs.swiper || currentParams.thumbs.swiper.destroyed)) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n Object.assign(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) {\n if (slides) virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n setInnerHTML(nextEl, swiper.navigation.arrowSvg);\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n setInnerHTML(prevEl, swiper.navigation.arrowSvg);\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n","import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nfunction getParams(obj = {}, splitEvents = true) {\n const params = {\n on: {}\n };\n const events = {};\n const passedParams = {};\n extend(params, defaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map(key => key.replace(/_/, ''));\n const plainObj = Object.assign({}, obj);\n Object.keys(plainObj).forEach(key => {\n if (typeof obj[key] === 'undefined') return;\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n if (splitEvents) {\n events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n } else {\n params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n }\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params,\n passedParams,\n rest,\n events\n };\n}\n\nfunction mountSwiper({\n el,\n nextEl,\n prevEl,\n paginationEl,\n scrollbarEl,\n swiper\n}, swiperParams) {\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n swiper.init(el);\n}\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {\n const keys = [];\n if (!oldParams) return keys;\n const addKey = key => {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n if (children && oldChildren) {\n const oldChildrenKeys = oldChildren.map(getKey);\n const childrenKeys = children.map(getKey);\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\n }\n const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, ''));\n watchParams.forEach(key => {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n const newKeys = Object.keys(swiperParams[key]);\n const oldKeys = Object.keys(oldParams[key]);\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(newKey => {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(oldKey => {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nconst updateOnVirtualData = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n swiper.emit('_virtualUpdated');\n if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {\n swiper.parallax.setTranslate();\n }\n};\n\nexport { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u };\n","/**\n * Swiper React 12.0.3\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: October 21, 2025\n */\n\nimport React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react';\nimport { S as Swiper$1 } from './shared/swiper-core.mjs';\nimport { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs';\nimport { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction isChildSwiperSlide(child) {\n return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide');\n}\nfunction processChildren(c) {\n const slides = [];\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.children) {\n processChildren(child.props.children).forEach(slide => slides.push(slide));\n }\n });\n return slides;\n}\nfunction getChildren(c) {\n const slides = [];\n const slots = {\n 'container-start': [],\n 'container-end': [],\n 'wrapper-start': [],\n 'wrapper-end': []\n };\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.slot && slots[child.props.slot]) {\n slots[child.props.slot].push(child);\n } else if (child.props && child.props.children) {\n const foundSlides = processChildren(child.props.children);\n if (foundSlides.length > 0) {\n foundSlides.forEach(slide => slides.push(slide));\n } else {\n slots['container-end'].push(child);\n }\n } else {\n slots['container-end'].push(child);\n }\n });\n return {\n slides,\n slots\n };\n}\n\nfunction renderVirtual(swiper, slides, virtualData) {\n if (!virtualData) return null;\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n const style = swiper.isHorizontal() ? {\n [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\n } : {\n top: `${virtualData.offset}px`\n };\n const {\n from,\n to\n } = virtualData;\n const loopFrom = swiper.params.loop ? -slides.length : 0;\n const loopTo = swiper.params.loop ? slides.length * 2 : slides.length;\n const slidesToRender = [];\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n slidesToRender.push(slides[getSlideIndex(i)]);\n }\n }\n return slidesToRender.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n style,\n key: child.props.virtualIndex || child.key || `slide-${index}`\n });\n });\n}\n\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\n\nconst SwiperSlideContext = /*#__PURE__*/createContext(null);\nconst useSwiperSlide = () => {\n return useContext(SwiperSlideContext);\n};\nconst SwiperContext = /*#__PURE__*/createContext(null);\nconst useSwiper = () => {\n return useContext(SwiperContext);\n};\n\nconst Swiper = /*#__PURE__*/forwardRef(({\n className,\n tag: Tag = 'div',\n wrapperTag: WrapperTag = 'div',\n children,\n onSwiper,\n ...rest\n} = {}, externalElRef) => {\n let eventsAssigned = false;\n const [containerClasses, setContainerClasses] = useState('swiper');\n const [virtualData, setVirtualData] = useState(null);\n const [breakpointChanged, setBreakpointChanged] = useState(false);\n const initializedRef = useRef(false);\n const swiperElRef = useRef(null);\n const swiperRef = useRef(null);\n const oldPassedParamsRef = useRef(null);\n const oldSlides = useRef(null);\n const nextElRef = useRef(null);\n const prevElRef = useRef(null);\n const paginationElRef = useRef(null);\n const scrollbarElRef = useRef(null);\n const {\n params: swiperParams,\n passedParams,\n rest: restProps,\n events\n } = getParams(rest);\n const {\n slides,\n slots\n } = getChildren(children);\n const onBeforeBreakpoint = () => {\n setBreakpointChanged(!breakpointChanged);\n };\n Object.assign(swiperParams.on, {\n _containerClasses(swiper, classes) {\n setContainerClasses(classes);\n }\n });\n const initSwiper = () => {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n const passParams = {\n ...swiperParams\n };\n delete passParams.wrapperClass;\n swiperRef.current = new Swiper$1(passParams);\n if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {\n swiperRef.current.virtual.slides = slides;\n const extendWith = {\n cache: false,\n slides,\n renderExternal: setVirtualData,\n renderExternalUpdate: false\n };\n extend(swiperRef.current.params.virtual, extendWith);\n extend(swiperRef.current.originalParams.virtual, extendWith);\n }\n };\n if (!swiperElRef.current) {\n initSwiper();\n }\n\n // Listen for breakpoints change\n if (swiperRef.current) {\n swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);\n }\n const attachEvents = () => {\n if (eventsAssigned || !events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.on(eventName, events[eventName]);\n });\n };\n const detachEvents = () => {\n if (!events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.off(eventName, events[eventName]);\n });\n };\n useEffect(() => {\n return () => {\n if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);\n };\n });\n\n // set initialized flag\n useEffect(() => {\n if (!initializedRef.current && swiperRef.current) {\n swiperRef.current.emitSlidesClasses();\n initializedRef.current = true;\n }\n });\n\n // mount swiper\n useIsomorphicLayoutEffect(() => {\n if (externalElRef) {\n externalElRef.current = swiperElRef.current;\n }\n if (!swiperElRef.current) return;\n if (swiperRef.current.destroyed) {\n initSwiper();\n }\n mountSwiper({\n el: swiperElRef.current,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n paginationEl: paginationElRef.current,\n scrollbarEl: scrollbarElRef.current,\n swiper: swiperRef.current\n }, swiperParams);\n if (onSwiper && !swiperRef.current.destroyed) onSwiper(swiperRef.current);\n // eslint-disable-next-line\n return () => {\n if (swiperRef.current && !swiperRef.current.destroyed) {\n swiperRef.current.destroy(true, false);\n }\n };\n }, []);\n\n // watch for params change\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key);\n oldPassedParamsRef.current = passedParams;\n oldSlides.current = slides;\n if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {\n updateSwiper({\n swiper: swiperRef.current,\n slides,\n passedParams,\n changedParams,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n scrollbarEl: scrollbarElRef.current,\n paginationEl: paginationElRef.current\n });\n }\n return () => {\n detachEvents();\n };\n });\n\n // update on virtual update\n useIsomorphicLayoutEffect(() => {\n updateOnVirtualData(swiperRef.current);\n }, [virtualData]);\n\n // bypass swiper instance to slides\n function renderSlides() {\n if (swiperParams.virtual) {\n return renderVirtual(swiperRef.current, slides, virtualData);\n }\n return slides.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiperRef.current,\n swiperSlideIndex: index\n });\n });\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: swiperElRef,\n className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)\n }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, {\n value: swiperRef.current\n }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, {\n className: wrapperClass(swiperParams.wrapperClass)\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n ref: prevElRef,\n className: \"swiper-button-prev\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: nextElRef,\n className: \"swiper-button-next\"\n })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarElRef,\n className: \"swiper-scrollbar\"\n }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: paginationElRef,\n className: \"swiper-pagination\"\n }), slots['container-end']));\n});\nSwiper.displayName = 'Swiper';\n\nconst SwiperSlide = /*#__PURE__*/forwardRef(({\n tag: Tag = 'div',\n children,\n className = '',\n swiper,\n zoom,\n lazy,\n virtualIndex,\n swiperSlideIndex,\n ...rest\n} = {}, externalRef) => {\n const slideElRef = useRef(null);\n const [slideClasses, setSlideClasses] = useState('swiper-slide');\n const [lazyLoaded, setLazyLoaded] = useState(false);\n function updateClasses(_s, el, classNames) {\n if (el === slideElRef.current) {\n setSlideClasses(classNames);\n }\n }\n useIsomorphicLayoutEffect(() => {\n if (typeof swiperSlideIndex !== 'undefined') {\n slideElRef.current.swiperSlideIndex = swiperSlideIndex;\n }\n if (externalRef) {\n externalRef.current = slideElRef.current;\n }\n if (!slideElRef.current || !swiper) {\n return;\n }\n if (swiper.destroyed) {\n if (slideClasses !== 'swiper-slide') {\n setSlideClasses('swiper-slide');\n }\n return;\n }\n swiper.on('_slideClass', updateClasses);\n // eslint-disable-next-line\n return () => {\n if (!swiper) return;\n swiper.off('_slideClass', updateClasses);\n };\n });\n useIsomorphicLayoutEffect(() => {\n if (swiper && slideElRef.current && !swiper.destroyed) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n const slideData = {\n isActive: slideClasses.indexOf('swiper-slide-active') >= 0,\n isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,\n isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0,\n isNext: slideClasses.indexOf('swiper-slide-next') >= 0\n };\n const renderChildren = () => {\n return typeof children === 'function' ? children(slideData) : children;\n };\n const onLoad = () => {\n setLazyLoaded(true);\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: slideElRef,\n className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`),\n \"data-swiper-slide-index\": virtualIndex,\n onLoad: onLoad\n }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-zoom-container\",\n \"data-swiper-zoom\": typeof zoom === 'number' ? zoom : undefined\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n })));\n});\nSwiperSlide.displayName = 'SwiperSlide';\n\nexport { Swiper, SwiperSlide, useSwiper, useSwiperSlide };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, s as setInnerHTML } from '../shared/utils.mjs';\n\nconst arrowSvg = `<svg class=\"swiper-navigation-icon\" width=\"11\" height=\"20\" viewBox=\"0 0 11 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0.38296 20.0762C0.111788 19.805 0.111788 19.3654 0.38296 19.0942L9.19758 10.2796L0.38296 1.46497C0.111788 1.19379 0.111788 0.754138 0.38296 0.482966C0.654131 0.211794 1.09379 0.211794 1.36496 0.482966L10.4341 9.55214C10.8359 9.9539 10.8359 10.6053 10.4341 11.007L1.36496 20.0762C1.09379 20.3474 0.654131 20.3474 0.38296 20.0762Z\" fill=\"currentColor\"/></svg>`;\nfunction Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n addIcons: true,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null,\n arrowSvg\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n if (params.addIcons && el.matches('.swiper-button-next,.swiper-button-prev') && !el.querySelector('svg')) {\n const tempEl = document.createElement('div');\n setInnerHTML(tempEl, arrowSvg);\n el.appendChild(tempEl.querySelector('svg'));\n tempEl.remove();\n }\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!+\\/()[\\]])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, i as elementOuterSize, j as elementIndex, s as setInnerHTML, d as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n setInnerHTML(subEl, params.renderCustom(swiper, current + 1, total));\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n setInnerHTML(subEl, paginationHTML || '');\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.find(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay({\n swiper,\n extendParams,\n on,\n emit,\n params\n}) {\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active'));\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import React from 'react'\nimport { cn } from '@/utils/cn'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport { Navigation, Pagination, Autoplay } from 'swiper/modules'\nimport { useDemoRoom } from '@/api/hooks'\nimport type { DemoRoomApiClient } from '@/api/client'\n\nimport 'swiper/css'\nimport 'swiper/css/navigation'\nimport 'swiper/css/pagination'\n\nexport interface DemoRoomDetailProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * API client for fetching demo room details\n */\n apiClient?: DemoRoomApiClient\n /**\n * Demo room code to fetch details\n */\n demoRoomCode?: string\n /**\n * Locale for API request\n */\n locale?: string\n /**\n * Room title (fallback if not using API)\n */\n title?: string\n /**\n * Room description paragraphs (fallback if not using API)\n */\n descriptions?: string[]\n /**\n * Device models available (fallback if not using API)\n */\n devices?: string\n /**\n * Room address (fallback if not using API)\n */\n address?: string\n /**\n * Google Maps link\n */\n mapsLink?: string\n /**\n * Room images (fallback if not using API)\n */\n images?: string[]\n /**\n * Configurable page data\n */\n pageData?: {\n loadingText?: string\n errorTitle?: string\n openInGoogleMaps?: string\n demoRoomImages?: string\n }\n}\n\nexport const DemoRoomDetail: React.FC<DemoRoomDetailProps> = ({\n apiClient,\n demoRoomCode,\n locale,\n title: titleProp,\n descriptions: descriptionsProp,\n devices: devicesProp,\n address: addressProp,\n mapsLink,\n images: imagesProp,\n pageData = {\n loadingText: 'Loading...',\n errorTitle: 'Failed to load demo room details',\n openInGoogleMaps: 'Open in Google Maps',\n demoRoomImages: 'Demo Room Images',\n },\n className,\n ...props\n}) => {\n // Fetch demo room details if apiClient and demoRoomCode are provided\n const {\n data: demoRoom,\n loading,\n error,\n } = useDemoRoom(apiClient!, demoRoomCode || '', locale, {\n enabled: !!apiClient && !!demoRoomCode,\n })\n\n // Use API data if available, otherwise fall back to props or defaults\n const title = demoRoom?.name || titleProp || ''\n const descriptions = demoRoom?.description\n ? [demoRoom.description]\n : descriptionsProp\n const devices = demoRoom?.equipment?.join(', ') || devicesProp || ''\n const address = demoRoom?.address || addressProp || ''\n const images =\n demoRoom?.images && demoRoom.images.length > 0\n ? demoRoom.images\n : imagesProp || []\n // Generate Google Maps link\n const googleMapsLink =\n mapsLink ||\n (() => {\n if (demoRoom?.latitude && demoRoom?.longitude) {\n // Use coordinates if available\n return `https://www.google.com/maps/search/?api=1&query=${demoRoom.latitude},${demoRoom.longitude}`\n } else if (address) {\n // Fallback to address search\n return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(address)}`\n }\n return '#'\n })()\n\n // Loading state\n if (loading && apiClient && demoRoomCode) {\n return (\n <div className={cn('w-full pb-4', className)} {...props}>\n <div className=\"grid grid-cols-2 gap-8 items-start\">\n <div className=\"space-y-6\">\n <div className=\"h-12 bg-gray-200 rounded animate-pulse\" />\n <div className=\"h-24 bg-gray-200 rounded animate-pulse\" />\n <div className=\"h-8 bg-gray-200 rounded animate-pulse\" />\n </div>\n <div className=\"h-[400px] bg-gray-200 rounded-2xl animate-pulse\" />\n </div>\n </div>\n )\n }\n\n // Error state\n if (error && apiClient && demoRoomCode) {\n return (\n <div className={cn('w-full', className)} {...props}>\n <div className=\"text-center text-red-600 py-8\">\n <p className=\"text-lg font-medium\">{pageData.errorTitle}</p>\n <p className=\"text-sm mt-2\">{error.message}</p>\n </div>\n </div>\n )\n }\n\n return (\n <div className={cn('w-full', className)} {...props}>\n <div className={cn(\n \"gap-[80px] l:gap-[40px] l:flex l:flex-col-reverse items-start py-[24px] l:pb-[64px]\",\n images.length > 0 ? \"grid grid-cols-2\" : \"flex\"\n )}>\n {/* Left Content */}\n <div className=\"space-y-6\">\n {/* Title */}\n <h1 className=\"text-[48px] l:text-[32px] font-bold text-gray-900 leading-tight\">\n {title}\n </h1>\n\n {/* Descriptions */}\n <div className=\"mt-[20px]\">\n {descriptions?.map((desc, index) => (\n <p\n key={index}\n className=\"text-base text-gray-600 leading-relaxed\"\n >\n {desc}\n </p>\n ))}\n </div>\n\n {/* Devices */}\n <div className=\"flex items-start gap-3\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"flex-shrink-0 mt-0.5\"\n >\n <path\n d=\"M14.4643 7.4929H9.65565M3.16391 18.7132H20.8171C22.0122 18.7132 22.981 17.7563 22.981 16.576L23 13.8348L22.981 6.42431C22.981 5.24396 22.0122 4.28711 20.8171 4.28711H3.16391C1.96882 4.28711 1 5.24396 1 6.42431V16.576C1 17.7563 1.96882 18.7132 3.16391 18.7132Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M5.32812 18.2325V14.4238C5.32812 13.8715 5.77584 13.4238 6.32813 13.4238H17.7925C18.3447 13.4238 18.7925 13.8715 18.7925 14.4238V18.2325\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <span className=\"text-base text-gray-900\">{devices}</span>\n </div>\n\n {/* Address */}\n <div className=\"flex items-start gap-3\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"flex-shrink-0 mt-0.5\"\n >\n <path\n d=\"M12 2C8.13 2 5 5.13 5 9C5 14.25 12 22 12 22C12 22 19 14.25 19 9C19 5.13 15.87 2 12 2Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle\n cx=\"12\"\n cy=\"9\"\n r=\"2.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </svg>\n <div className=\"flex-1\">\n <p className=\"text-base text-gray-900\">{address}</p>\n <a\n href={googleMapsLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-1 text-sm text-blue-600 hover:text-blue-700 mt-1 underline\"\n >\n {pageData.openInGoogleMaps}\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3 9L9 3M9 3H3M9 3V9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </a>\n </div>\n </div>\n </div>\n\n {/* Right Images - Swiper */}\n {images.length > 0 && (\n <div className=\"relative l:w-full min-l:h-[400px] rounded-2xl overflow-hidden demo-room-swiper\">\n <style>{`\n .demo-room-swiper .swiper-pagination-bullet {\n background-color: rgba(255, 255, 255, 0.5);\n }\n .demo-room-swiper .swiper-pagination-bullet-active {\n background-color: #3ADB67 !important;\n }\n .demo-room-swiper .swiper-button-prev,\n .demo-room-swiper .swiper-button-next {\n width: 48px !important;\n height: 48px !important;\n background-size: contain !important;\n background-repeat: no-repeat !important;\n background-position: center !important;\n color: transparent !important;\n }\n .demo-room-swiper .swiper-button-prev::after,\n .demo-room-swiper .swiper-button-next::after {\n display: none !important;\n content: '' !important;\n }\n .demo-room-swiper .swiper-button-prev {\n background-image: url('https://cdn.shopify.com/s/files/1/0569/5147/2268/files/Group_2121235586_572f0715-aa60-4188-9591-248f6ac53f40.svg?v=1736951731') !important;\n left: 16px !important;\n }\n .demo-room-swiper .swiper-button-next {\n background-image: url('https://cdn.shopify.com/s/files/1/0569/5147/2268/files/Group_2121235583_3071dda3-e1ee-4fb8-b488-2402c8ea8018.svg?v=1736951731') !important;\n right: 16px !important;\n }\n `}</style>\n <Swiper\n modules={[Navigation, Pagination, Autoplay]}\n spaceBetween={0}\n slidesPerView={1}\n navigation={images.length > 1}\n pagination={images.length > 1 ? { clickable: true } : false}\n autoplay={images.length > 1 ? {\n delay: 3000,\n disableOnInteraction: false,\n } : false}\n loop={images.length > 1}\n className=\"h-full rounded-2xl\"\n >\n {images.map((img, index) => (\n <SwiperSlide key={index}>\n <div className=\"relative w-full h-full bg-gray-100\">\n <img\n src={img}\n alt={`Demo room view ${index + 1}`}\n className=\"w-full h-full object-cover\"\n />\n </div>\n </SwiperSlide>\n ))}\n </Swiper>\n </div>\n )}\n </div>\n </div>\n )\n}\n\nDemoRoomDetail.displayName = 'DemoRoomDetail'\n","import React, { useMemo } from 'react'\nimport { cn } from '@/utils/cn'\nimport DateTimePicker from './components/DateTimePicker'\nimport { createDemoRoomApi } from '@/api'\nimport type { DemoRoomApiClient } from '@/api'\nimport { DemoRoomDetail } from './components/DemoRoomDetail'\nimport type { BookingFormPageData } from './types/pageData'\n\nexport interface BookingFormProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'onSubmit'\n> {\n layoutClassName?: string\n handleBookingSuccess?: (token?: string) => void\n /**\n * 问卷提交时的回调函数(可用于订阅操作等)\n */\n onQuestionnaireSubmit?: (responses: Record<string, any>) => void | Promise<void>\n /**\n * API 配置\n */\n apiConfig: {\n baseUrl: string\n apiKey: string\n locale?: string\n }\n /**\n * 门店代码(可选,可以从 URL 参数或 props 传入)\n */\n demoRoomCode?: string\n /**\n * 时区(可选)\n */\n timezone?: string\n /**\n * 页面可配置数据(文案、图标等)\n */\n pageData?: BookingFormPageData\n}\n\nexport const BookingForm: React.FC<BookingFormProps> = ({\n layoutClassName,\n className,\n apiConfig,\n demoRoomCode,\n pageData,\n timezone,\n handleBookingSuccess,\n onQuestionnaireSubmit,\n ...props\n}) => {\n // 创建 API 客户端实例\n const apiClient = useMemo<DemoRoomApiClient>(\n () => createDemoRoomApi(apiConfig),\n [apiConfig]\n )\n\n // Merge dateTimePicker and questionnaireForm pageData for DateTimePicker\n const dateTimePickerPageData = useMemo(\n () => ({\n ...pageData?.dateTimePicker,\n ...pageData?.questionnaireForm,\n }),\n [pageData?.dateTimePicker, pageData?.questionnaireForm]\n )\n\n return (\n <div>\n <div className={cn('w-full', className)} {...props}>\n {/* <BreadCrumbs\n className={layoutClassName}\n items={[{ label: 'Home', link: '/' }, { label: 'Demo Room' }]}\n /> */}\n <DemoRoomDetail\n className={cn('min-l:mt-8', layoutClassName)}\n apiClient={apiClient}\n demoRoomCode={demoRoomCode}\n locale={apiConfig.locale}\n pageData={pageData?.demoRoomDetail}\n />\n </div>\n <div className=\"bg-[#f5f5f5]\">\n <div className={className}>\n <DateTimePicker\n apiClient={apiClient}\n demoRoomCode={demoRoomCode}\n timezone={timezone}\n locale={apiConfig.locale}\n onBookingSuccess={handleBookingSuccess}\n onQuestionnaireSubmit={onQuestionnaireSubmit}\n pageData={dateTimePickerPageData}\n />\n </div>\n </div>\n </div>\n )\n}\n\nBookingForm.displayName = 'BookingForm'\n","import React, { useEffect, useState } from 'react'\nimport type { Booking } from '@/api/types'\nimport { createDemoRoomApi, type DemoRoomApiConfig } from '@/api/client'\nimport type { BookingSuccessPageData } from '../types/pageData'\n\nexport interface BookingSuccessProps {\n // 方式1: 直接传入预约数据\n bookingData?: Booking\n // 方式2: 通过 token 查询预约数据\n token?: string\n apiConfig?: DemoRoomApiConfig\n // 其他 props\n onScheduleAgain?: (demoRoomCode: string) => void\n onCancelSuccess?: (booking: Booking) => void\n className?: string\n /**\n * 页面可配置数据(文案、图标等)\n */\n pageData?: BookingSuccessPageData\n}\n\nexport const BookingSuccess: React.FC<BookingSuccessProps> = ({\n bookingData: initialBookingData,\n token,\n apiConfig,\n onScheduleAgain,\n onCancelSuccess,\n className,\n pageData = {\n yourAppointment: 'Your Appointment',\n appointmentCanceled: 'This appointment has been canceled.',\n scheduleAgain: 'Schedule again',\n location: 'Location',\n openInGoogleMaps: 'Open in Google Maps ↗',\n dateAndTime: 'Date and Time',\n event: 'Event',\n demoRoom: 'Demo Room',\n visitorInfo: 'Visitor Info',\n noPhoneProvided: 'No phone provided',\n cancelAppointment: 'Cancel Appointment',\n cancelDialog: {\n title: 'Are you sure you want to cancel?',\n description: \"You won't be able to restore the schedule.\",\n backButton: 'Back',\n confirmButton: 'Cancel Appointment',\n canceling: 'Canceling...',\n },\n cancelError: 'Failed to cancel appointment. Please try again.',\n },\n}) => {\n const [bookingData, setBookingData] = useState<Booking | null>(\n initialBookingData || null\n )\n const [loading, setLoading] = useState(false)\n const [isCancelled, setIsCancelled] = useState(false)\n const [showCancelDialog, setShowCancelDialog] = useState(false)\n const [cancelLoading, setCancelLoading] = useState(false)\n const [cancelError, setCancelError] = useState<string | null>(null)\n\n // 如果传入了 token,则通过 API 查询预约信息\n useEffect(() => {\n if (token && apiConfig && !initialBookingData) {\n const fetchBookingData = async () => {\n setLoading(true)\n try {\n const apiClient = createDemoRoomApi(apiConfig)\n const booking = await apiClient.getBooking(token, apiConfig.locale)\n setBookingData(booking)\n setIsCancelled(booking.status === 'cancelled')\n } catch (err) {\n console.error('Failed to fetch booking data:', err)\n } finally {\n setLoading(false)\n }\n }\n\n fetchBookingData()\n }\n }, [token, apiConfig, initialBookingData])\n\n // 处理取消预约\n const handleCancelAppointment = async () => {\n if (!token || !apiConfig) {\n setCancelError(\n pageData.cancelError ||\n 'Unable to cancel: Missing token or API configuration'\n )\n return\n }\n\n setCancelLoading(true)\n setCancelError(null)\n\n try {\n const apiClient = createDemoRoomApi(apiConfig)\n const cancelledBooking = await apiClient.cancelBooking(\n token,\n apiConfig.locale\n )\n\n // 更新预约数据和取消状态\n if (cancelledBooking) {\n setBookingData(cancelledBooking)\n }\n setIsCancelled(true)\n setShowCancelDialog(false)\n\n // 调用回调函数\n if (onCancelSuccess && cancelledBooking) {\n onCancelSuccess(cancelledBooking)\n }\n } catch (err) {\n console.error('Failed to cancel booking:', err)\n setCancelError(\n pageData.cancelError ||\n 'Failed to cancel appointment. Please try again.'\n )\n } finally {\n setCancelLoading(false)\n }\n }\n\n if (loading) {\n return (\n <div className={`min-h-screen py-12 px-6 ${className || ''}`}>\n <div className=\"mx-auto\">\n <div className=\"animate-pulse space-y-6\">\n <div className=\"h-8 bg-gray-200 rounded w-1/3\" />\n <div className=\"h-24 bg-gray-200 rounded\" />\n <div className=\"space-y-4\">\n <div className=\"h-20 bg-gray-200 rounded\" />\n <div className=\"h-20 bg-gray-200 rounded\" />\n <div className=\"h-20 bg-gray-200 rounded\" />\n </div>\n </div>\n </div>\n </div>\n )\n }\n\n if (!bookingData) {\n return null\n }\n\n return (\n <div className={`min-h-screen l:py-0 l:px-0 py-12 px-6 ${className || ''}`}>\n <div className=\"mx-auto\">\n {/* Header */}\n <h1 className=\"text-[48px] xxl:text-[32px] font-bold text-[#080A0F] mb-8\">\n {pageData.yourAppointment}\n </h1>\n\n {/* Status Banner */}\n {isCancelled && (\n <div className=\"bg-white rounded-[16px] l:items-start p-6 mb-4 l:gap-2 flex l:flex-col items-center justify-between\">\n <p className=\"text-base text-[#080A0F]\">\n {pageData.appointmentCanceled}\n </p>\n {onScheduleAgain && bookingData && (\n <button\n onClick={() => onScheduleAgain(bookingData.demoroom_code)}\n className=\"px-6 py-3 text-[16px] bg-black text-white rounded-full hover:bg-gray-800 transition-colors whitespace-nowrap\"\n >\n {pageData.scheduleAgain}\n </button>\n )}\n </div>\n )}\n\n {/* Appointment Details */}\n <div className=\"space-y-8 bg-white px-[48px] l:px-[16px] l:py-[16px] py-[32px] rounded-[16px]\">\n {/* Location */}\n <div>\n <h2 className=\"text-[24px] l:text-[20px] text-[#4A4C56] mb-3\">{pageData.location}</h2>\n <div className=\"space-y-2\">\n {bookingData.demoroom_name && (\n <p className=\"text-base text-[#4A4C56]\">\n {bookingData.demoroom_name}\n </p>\n )}\n {bookingData.address && (\n <p className=\"text-base text-gray-600\">{bookingData.address}</p>\n )}\n {bookingData.latitude && bookingData.longitude && (\n <a\n href={`https://www.google.com/maps/search/?api=1&query=${bookingData.latitude},${bookingData.longitude}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-1 text-base text-blue-600 hover:text-blue-700 hover:underline\"\n >\n {pageData.openInGoogleMaps}\n </a>\n )}\n </div>\n </div>\n\n {/* Date and Time */}\n <div>\n <h2 className=\"text-[24px] l:text-[20px] text-[#4A4C56] mb-3\">\n {pageData.dateAndTime}\n </h2>\n <p className=\"text-base text-[#4A4C56]\">\n {bookingData.booking_date}\n {bookingData.time_slot && `, ${bookingData.time_slot}`}\n {!bookingData.time_slot &&\n bookingData.booking_time &&\n `, ${bookingData.booking_time}`}\n </p>\n </div>\n\n {/* Event (if available) */}\n {bookingData.equipment && (\n <div>\n <h2 className=\"text-[24px] l:text-[20px] text-[#4A4C56] mb-3\">{pageData.event}</h2>\n <p className=\"text-base text-[#4A4C56]\">\n {Array.isArray(bookingData.equipment)\n ? bookingData.equipment.join(', ')\n : bookingData.equipment}\n </p>\n </div>\n )}\n\n {/* Machine (Demo Room Code) */}\n <div>\n <h2 className=\"text-[24px] l:text-[20px] text-[#4A4C56] mb-3\">{pageData.demoRoom}</h2>\n <p className=\"text-base text-[#4A4C56]\">\n {bookingData.demoroom_code}\n </p>\n </div>\n\n {/* Visitor Info */}\n <div>\n <h2 className=\"text-[24px] l:text-[20px] text-[#4A4C56] mb-3\">\n {pageData.visitorInfo}\n </h2>\n <div className=\"space-y-2\">\n <p className=\"text-base text-[#4A4C56]\">\n {bookingData.customer_name}\n </p>\n <div className=\"flex items-center gap-2 text-base text-gray-600\">\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z\"\n />\n </svg>\n {bookingData.phone_code && bookingData.phone_number ? (\n <span>\n {bookingData.phone_code} {bookingData.phone_number}\n </span>\n ) : (\n <span>{pageData.noPhoneProvided}</span>\n )}\n </div>\n <div className=\"flex items-center gap-2 text-base text-gray-600\">\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\"\n />\n </svg>\n <span>{bookingData.customer_email}</span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Cancel Button - 只在未取消时显示 */}\n {!isCancelled && (\n <div className=\"mt-[64px]\">\n <button\n onClick={() => setShowCancelDialog(true)}\n disabled={cancelLoading}\n className=\"text-[14px] cursor-pointer w-fit rounded-full text-[#080A0F] border-2 border-[#080A0F] px-[20px] py-[10px] leading-[1] hover:bg-gray-50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n {pageData.cancelAppointment}\n </button>\n {cancelError && (\n <p className=\"text-sm mt-2\" style={{ color: '#FF4D4D' }}>\n {cancelError}\n </p>\n )}\n </div>\n )}\n\n {/* Cancel Confirmation Dialog */}\n {showCancelDialog && (\n <div className=\"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 px-4\">\n <div className=\"bg-white rounded-[24px] max-w-[600px] p-8 shadow-xl relative\">\n {/* Close Button */}\n <button\n onClick={() => setShowCancelDialog(false)}\n disabled={cancelLoading}\n className=\"absolute top-6 right-[30px] w-8 h-8 flex items-center justify-center text-gray-400 hover:text-gray-600 transition-colors disabled:opacity-50\"\n aria-label=\"Close\"\n >\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M18 6L6 18M6 6L18 18\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n\n {/* Warning Icon */}\n <div className=\"flex justify-center mb-6\">\n <div className=\"w-16 h-16 rounded-full flex items-center justify-center\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n >\n <circle cx=\"24\" cy=\"24\" r=\"21\" fill=\"#FFC24D\" />\n <path\n d=\"M23.9971 30.5703C25.4881 30.5704 26.6972 31.7795 26.6973 33.2705C26.6973 34.7616 25.4881 35.9706 23.9971 35.9707C22.5059 35.9707 21.2969 34.7617 21.2969 33.2705C21.297 31.7794 22.506 30.5703 23.9971 30.5703ZM23.9961 12.0176C25.2387 12.0176 26.2461 13.0249 26.2461 14.2676V26.2676C26.2461 27.5102 25.2387 28.5176 23.9961 28.5176C22.7535 28.5176 21.7461 27.5102 21.7461 26.2676V14.2676C21.7461 13.0249 22.7535 12.0176 23.9961 12.0176Z\"\n fill=\"white\"\n />\n </svg>\n </div>\n </div>\n\n {/* Title and Description */}\n <div className=\"text-center mb-8\">\n <h3 className=\"text-[18px] text-[#4A4C56] mb-2\">\n {pageData.cancelDialog?.title}\n </h3>\n <p className=\"text-[14px] text-gray-600\">\n {pageData.cancelDialog?.description}\n </p>\n </div>\n\n {/* Action Buttons */}\n <div className=\"flex gap-3 justify-center\">\n <button\n onClick={() => setShowCancelDialog(false)}\n disabled={cancelLoading}\n className=\"px-8 py-3 border-2 border-black rounded-full text-black hover:bg-gray-50 transition-colors disabled:opacity-50 min-w-[120px]\"\n >\n {pageData.cancelDialog?.backButton}\n </button>\n <button\n onClick={handleCancelAppointment}\n disabled={cancelLoading}\n className=\"px-8 py-3 bg-black text-white rounded-full hover:bg-gray-800 transition-colors disabled:opacity-50 flex items-center gap-2 min-w-[180px] justify-center\"\n >\n {cancelLoading ? (\n <>\n <svg\n className=\"animate-spin h-5 w-5\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n {pageData.cancelDialog?.canceling}\n </>\n ) : (\n pageData.cancelDialog?.confirmButton\n )}\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n )\n}\n","export const defaultTheme = {\n colors: {\n primary: {\n 50: '#eff6ff',\n 100: '#dbeafe',\n 200: '#bfdbfe',\n 300: '#93c5fd',\n 400: '#60a5fa',\n 500: '#3b82f6',\n 600: '#2563eb',\n 700: '#1d4ed8',\n 800: '#1e40af',\n 900: '#1e3a8a',\n 950: '#172554',\n },\n secondary: {\n 50: '#f8fafc',\n 100: '#f1f5f9',\n 200: '#e2e8f0',\n 300: '#cbd5e1',\n 400: '#94a3b8',\n 500: '#64748b',\n 600: '#475569',\n 700: '#334155',\n 800: '#1e293b',\n 900: '#0f172a',\n 950: '#020617',\n },\n success: {\n 50: '#f0fdf4',\n 500: '#22c55e',\n 900: '#14532d',\n },\n warning: {\n 50: '#fffbeb',\n 500: '#f59e0b',\n 900: '#78350f',\n },\n error: {\n 50: '#fef2f2',\n 500: '#ef4444',\n 900: '#7f1d1d',\n },\n },\n fontFamily: {\n sans: ['Inter', 'system-ui', 'sans-serif'],\n mono: ['Fira Code', 'monospace'],\n },\n fontSize: {\n xs: ['0.75rem', { lineHeight: '1rem' }] as const,\n sm: ['0.875rem', { lineHeight: '1.25rem' }] as const,\n base: ['1rem', { lineHeight: '1.5rem' }] as const,\n lg: ['1.125rem', { lineHeight: '1.75rem' }] as const,\n xl: ['1.25rem', { lineHeight: '1.75rem' }] as const,\n '2xl': ['1.5rem', { lineHeight: '2rem' }] as const,\n '3xl': ['1.875rem', { lineHeight: '2.25rem' }] as const,\n '4xl': ['2.25rem', { lineHeight: '2.5rem' }] as const,\n },\n spacing: {\n 0: '0',\n 1: '0.25rem',\n 2: '0.5rem',\n 3: '0.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 8: '2rem',\n 10: '2.5rem',\n 12: '3rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n },\n borderRadius: {\n none: '0',\n sm: '0.125rem',\n base: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n full: '9999px',\n },\n boxShadow: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n base: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n },\n} as const\n\nexport type Theme = typeof defaultTheme\n\nexport type DeepPartial<T> = T extends object\n ? { [P in keyof T]?: DeepPartial<T[P]> }\n : T\n\nexport type ThemeConfig = DeepPartial<Theme>\n","import React, { createContext, useContext, useEffect, useMemo } from 'react'\nimport { defaultTheme } from '../theme-tokens'\nimport type { Theme, ThemeConfig } from '../theme-tokens'\n\ninterface ThemeContextValue {\n theme: Theme\n}\n\nconst ThemeContext = createContext<ThemeContextValue>({ theme: defaultTheme })\n\nexport const useTheme = () => useContext(ThemeContext)\n\ninterface ThemeProviderProps {\n theme?: ThemeConfig\n children: React.ReactNode\n}\n\nfunction deepMerge<T extends object>(target: T, source: Partial<T>): T {\n const result = { ...target }\n for (const key in source) {\n if (\n source[key] instanceof Object &&\n !Array.isArray(source[key]) &&\n key in target\n ) {\n result[key] = deepMerge(target[key] as any, source[key] as any)\n } else if (source[key] !== undefined) {\n result[key] = source[key] as any\n }\n }\n return result\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n theme: customTheme = {},\n children,\n}) => {\n const theme = useMemo(\n () => deepMerge(defaultTheme, customTheme as any),\n [customTheme]\n )\n\n useEffect(() => {\n const root = document.documentElement\n\n // Inject color variables\n Object.entries(theme.colors).forEach(([colorName, colorValues]) => {\n if (typeof colorValues === 'object') {\n Object.entries(colorValues).forEach(([shade, value]) => {\n root.style.setProperty(`--color-${colorName}-${shade}`, value)\n })\n } else {\n root.style.setProperty(`--color-${colorName}`, colorValues as string)\n }\n })\n\n // Inject font variables\n Object.entries(theme.fontFamily).forEach(([name, value]) => {\n const fontValue = Array.isArray(value) ? value.join(', ') : String(value)\n root.style.setProperty(`--font-${name}`, fontValue)\n })\n\n // Inject spacing variables\n Object.entries(theme.spacing).forEach(([key, value]) => {\n root.style.setProperty(`--spacing-${key}`, value)\n })\n\n // Inject border radius variables\n Object.entries(theme.borderRadius).forEach(([key, value]) => {\n root.style.setProperty(`--radius-${key}`, value)\n })\n }, [theme])\n\n return (\n <ThemeContext.Provider value={{ theme }}>\n {children}\n </ThemeContext.Provider>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/cn.ts","../src/components/DemoRoom/components/Title.tsx","../src/components/DemoRoom/components/StudioCard.tsx","../src/components/DemoRoom/components/StudioMap.tsx","../src/api/types.ts","../src/api/hooks.ts","../src/components/DemoRoom/components/AntdMobileIsolated.tsx","../src/components/DemoRoom/utils/addressParser.ts","../src/components/DemoRoom/components/RoomsList.module.css","../src/components/DemoRoom/components/LocationFilter.tsx","../src/components/DemoRoom/components/RoomsList.tsx","../src/api/client.ts","../src/components/DemoRoom/DemoRoom.tsx","../src/components/BookingForm/components/QuestionnaireForm.tsx","../src/components/BookingForm/components/DateTimePicker.tsx","../../../node_modules/swiper/shared/ssr-window.esm.mjs","../../../node_modules/swiper/shared/utils.mjs","../../../node_modules/swiper/shared/swiper-core.mjs","../../../node_modules/swiper/shared/update-swiper.mjs","../../../node_modules/swiper/shared/update-on-virtual-data.mjs","../../../node_modules/swiper/swiper-react.mjs","../../../node_modules/swiper/shared/create-element-if-not-defined.mjs","../../../node_modules/swiper/modules/navigation.mjs","../../../node_modules/swiper/shared/classes-to-selector.mjs","../../../node_modules/swiper/modules/pagination.mjs","../../../node_modules/swiper/modules/autoplay.mjs","../src/components/BookingForm/components/DemoRoomDetail.tsx","../src/components/BookingForm/BookingForm.tsx","../src/components/BookingForm/components/BookingSuccess.tsx","../src/theme-tokens/tokens.ts","../src/theme/ThemeProvider.tsx"],"names":["twMerge","clsx","jsx","React","jsxs","useState","useEffect","useCallback","useRef","items","useMemo","List","IndexBar","dayjs","utc","timezone","error","dayLocaleData","weekday","weekOfYear","theme","now","ConfigProvider","Calendar","Select","classes","getComputedStyle","window","isObject","extend","document","support","observerUpdate","events","event","slide","translate","realIndex","minTranslate","maxTranslate","transitionEnd","browser","slideTo","setTranslate","i","increment","breakpoints","useLayoutEffect","Swiper","attachEvents","detachEvents","onLoad","update","Fragment","createContext","useContext"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import React from 'react'\nimport { cn } from '@/utils/cn'\n\nexport interface TitleProps extends React.HTMLAttributes<HTMLDivElement> {\n title?: string\n subTitle?: string\n}\n\nexport const Title: React.FC<TitleProps> = ({\n title = '',\n ...props\n}) => {\n return (\n <div className={cn('w-full')} {...props}>\n {/* Section Title */}\n <h2 className=\"text-[32px] min-l:text-[48px] font-bold mb-12 text-[#080A0F]\">\n {title}\n </h2>\n </div>\n )\n}\n\nTitle.displayName = 'Title'\n","import React from 'react'\nimport { cn } from '@/utils/cn'\n\nexport interface StudioCardProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Demo room code (unique identifier)\n */\n code: string\n /**\n * Studio name\n */\n name: string\n /**\n * Available time\n */\n availableTime: string\n /**\n * Full address\n */\n address: string\n city: string\n state: string\n zipCode: string\n country?: string\n /**\n * Available euifyMake models\n */\n euifyMakeModel: string\n /**\n * Distance from user location (optional)\n */\n distance?: number\n /**\n * Callback when \"Schedule Now\" is clicked, receives demo room code\n */\n onSchedule?: (code: string) => void\n /**\n * 可配置的文案数据\n */\n pageData?: {\n scheduleNow?: string\n available?: string\n away?: string\n noAvailableTime?: string\n }\n}\n\nexport const StudioCard: React.FC<StudioCardProps> = ({\n code,\n name,\n availableTime,\n address,\n euifyMakeModel,\n distance,\n onSchedule,\n pageData = {\n scheduleNow: 'Schedule Now',\n available: 'Available',\n away: 'away',\n },\n className,\n style,\n ...props\n}) => {\n const [isHovered, setIsHovered] = React.useState(false)\n\n const handleScheduleClick = () => {\n onSchedule?.(code)\n }\n\n // 格式化距离显示\n const formatDistance = (dist: number) => {\n if (dist < 1) {\n return `${Math.round(dist * 1000)} m`\n }\n return `${dist.toFixed(1)} km`\n }\n\n return (\n <div\n {...props}\n className={cn(\n 'p-6 cursor-pointer transition-colors duration-200 border-b border-[#E4E5E6] last:border-b-0',\n className\n )}\n style={{\n backgroundColor: isHovered ? '#f3f4f6' : 'transparent',\n ...style,\n }}\n onMouseEnter={(e) => {\n setIsHovered(true)\n props.onMouseEnter?.(e)\n }}\n onMouseLeave={(e) => {\n setIsHovered(false)\n props.onMouseLeave?.(e)\n }}\n >\n {/* Studio Name and Distance */}\n <div className=\"flex items-start justify-between mb-4\">\n <h3 className=\"text-[24px] l:text-[20px] font-bold text-[#080A0F]\">\n {name}\n </h3>\n {distance !== undefined && (\n <span className=\"text-[16px] l:text-[14px] font-medium text-[#2E8B57] bg-[#E8F5E9] px-3 py-1 rounded-full whitespace-nowrap ml-2\">\n {formatDistance(distance)} {pageData.away}\n </span>\n )}\n </div>\n\n {/* Available Time */}\n {availableTime && (\n <div className=\"flex items-start gap-3 mb-3\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"flex-shrink-0 mt-0.5\"\n >\n <rect\n x=\"3\"\n y=\"4\"\n width=\"14\"\n height=\"13\"\n rx=\"2\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M3 8H17\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M6 2V4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M14 2V4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n <div>\n <p className=\"text-[16px] l:text-[12px] text-[#2A2C32]\">\n {availableTime === pageData.noAvailableTime\n ? ''\n : pageData.available}{' '}\n {availableTime}\n </p>\n </div>\n </div>\n )}\n\n {/* Address */}\n <div className=\"flex items-start gap-3 mb-3\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"flex-shrink-0 mt-0.5\"\n >\n <path\n d=\"M10 10C11.1046 10 12 9.10457 12 8C12 6.89543 11.1046 6 10 6C8.89543 6 8 6.89543 8 8C8 9.10457 8.89543 10 10 10Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n <path\n d=\"M10 18C10 18 16 13 16 8C16 4.68629 13.3137 2 10 2C6.68629 2 4 4.68629 4 8C4 13 10 18 10 18Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </svg>\n <div className=\"flex-1\">\n <p className=\"text-[16px] l:text-[14px] text-[#2A2C32] break-words\">\n {address}\n </p>\n </div>\n </div>\n\n {/* euifyMake Models */}\n <div className=\"flex items-start gap-3 mb-6\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"flex-shrink-0 mt-0.5\"\n >\n <path\n d=\"M14.4643 7.4929H9.65565M3.16391 18.7132H20.8171C22.0122 18.7132 22.981 17.7563 22.981 16.576L23 13.8348L22.981 6.42431C22.981 5.24396 22.0122 4.28711 20.8171 4.28711H3.16391C1.96882 4.28711 1 5.24396 1 6.42431V16.576C1 17.7563 1.96882 18.7132 3.16391 18.7132Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M5.32812 18.2325V14.4238C5.32812 13.8715 5.77584 13.4238 6.32813 13.4238H17.7925C18.3447 13.4238 18.7925 13.8715 18.7925 14.4238V18.2325\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <div>\n <p className=\"text-[16px] l:text-[14px] text-[#2A2C32]\">\n {euifyMakeModel}\n </p>\n </div>\n </div>\n\n {/* Schedule Button */}\n <button\n onClick={handleScheduleClick}\n className={cn(\n 'w-fit px-[28px] l:px-[20px] l:py-[8px] py-3 rounded-full',\n 'bg-white text-gray-900 border-2 border-gray-900',\n 'font-bold text-[16px] l:text-[14px]',\n 'hover:bg-gray-900 hover:text-white',\n 'transition-all duration-200'\n )}\n >\n {pageData.scheduleNow}\n </button>\n </div>\n )\n}\n\nStudioCard.displayName = 'StudioCard'\n","import React, { useState } from 'react'\nimport { cn } from '@/utils/cn'\n\nexport interface StudioLocation {\n id: string\n name: string\n address: string\n city: string\n state: string\n zipCode: string\n country: string\n lat: number\n lng: number\n availableTime?: string\n euifyMakeModel?: string\n distance?: number\n}\n\nexport interface StudioMapProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * 谷歌地图 API Key\n */\n googleMapsApiKey: string\n /**\n * 工作室位置数据\n */\n locations?: StudioLocation[]\n /**\n * 当前 hover 的位置 ID\n */\n hoveredLocationId?: string | null\n /**\n * 默认中心点\n */\n defaultCenter?: { lat: number; lng: number }\n /**\n * 默认缩放级别\n */\n defaultZoom?: number\n /**\n * 地图高度\n */\n mapHeight?: string\n /**\n * 点击 Schedule Now 的回调\n */\n onSchedule?: (demoRoomCode: string) => void\n /**\n * 可配置的文案数据\n */\n pageData?: {\n apiKeyRequired?: string\n loadingMap?: string\n scheduleNow?: string\n available?: string\n noAvailableTime?: string\n }\n}\n\nconst defaultLocations: StudioLocation[] = [\n {\n id: '1',\n name: 'Design District Demo Room',\n address: '111 8th St',\n city: 'San Francisco',\n state: 'CA',\n zipCode: '94108',\n country: 'United States',\n lat: 37.7749,\n lng: -122.4194,\n availableTime: 'Oct 28, 2:00 PM',\n euifyMakeModel: 'euifyMake E1, euifyMake M5',\n },\n]\n\nexport const StudioMap: React.FC<StudioMapProps> = ({\n googleMapsApiKey,\n locations = defaultLocations,\n hoveredLocationId,\n defaultCenter = { lat: 39.8283, lng: -98.5795 }, // US center\n defaultZoom = 4,\n mapHeight = '600px',\n onSchedule,\n pageData = {\n apiKeyRequired: 'Google Maps API Key is required',\n loadingMap: 'Loading map...',\n scheduleNow: 'Schedule Now',\n available: 'Available',\n },\n className,\n ...props\n}) => {\n const [_selectedLocation, setSelectedLocation] =\n useState<StudioLocation | null>(null)\n const [isLoaded, setIsLoaded] = useState(false)\n const mapRef = React.useRef<HTMLDivElement>(null)\n const googleMapRef = React.useRef<google.maps.Map | null>(null)\n const markersRef = React.useRef<google.maps.Marker[]>([])\n const infoWindowRef = React.useRef<google.maps.InfoWindow | null>(null)\n\n // 加载谷歌地图脚本\n React.useEffect(() => {\n if (!googleMapsApiKey) {\n console.error('Google Maps API Key is required')\n return\n }\n\n // 检查脚本是否已加载\n if (window.google && window.google.maps) {\n setIsLoaded(true)\n return\n }\n\n const script = document.createElement('script')\n script.src = `https://maps.googleapis.com/maps/api/js?key=${googleMapsApiKey}&libraries=places`\n script.async = true\n script.defer = true\n script.onload = () => setIsLoaded(true)\n script.onerror = () => console.error('Failed to load Google Maps script')\n document.head.appendChild(script)\n\n return () => {\n // 清理脚本(可选)\n if (script.parentNode) {\n script.parentNode.removeChild(script)\n }\n }\n }, [googleMapsApiKey])\n\n // 初始化地图\n React.useEffect(() => {\n if (!isLoaded || !mapRef.current || googleMapRef.current) return\n\n // 创建地图\n const map = new google.maps.Map(mapRef.current, {\n center: defaultCenter,\n zoom: defaultZoom,\n styles: [\n {\n featureType: 'all',\n elementType: 'geometry',\n stylers: [{ color: '#E0F2F1' }],\n },\n {\n featureType: 'water',\n elementType: 'geometry',\n stylers: [{ color: '#B2EBF2' }],\n },\n {\n featureType: 'road',\n elementType: 'geometry',\n stylers: [{ color: '#ffffff' }],\n },\n ],\n mapTypeControl: false,\n streetViewControl: false,\n fullscreenControl: true,\n })\n\n googleMapRef.current = map\n\n // 创建信息窗口\n infoWindowRef.current = new google.maps.InfoWindow()\n }, [isLoaded, defaultCenter, defaultZoom])\n\n // 添加标记点\n React.useEffect(() => {\n if (!googleMapRef.current || !isLoaded) return\n\n // 清除旧标记\n markersRef.current.forEach((marker) => marker.setMap(null))\n markersRef.current = []\n\n // 过滤并验证有效的位置数据\n const validLocations = locations.filter((location) => {\n const lat = Number(location.lat)\n const lng = Number(location.lng)\n const isValid =\n !isNaN(lat) &&\n !isNaN(lng) &&\n isFinite(lat) &&\n isFinite(lng) &&\n lat >= -90 &&\n lat <= 90 &&\n lng >= -180 &&\n lng <= 180\n if (!isValid) {\n console.warn('Invalid location coordinates:', location)\n }\n return isValid\n })\n\n // 添加新标记\n validLocations.forEach((location) => {\n const lat = Number(location.lat)\n const lng = Number(location.lng)\n\n // 创建自定义SVG图标\n const svgIcon = {\n url: `data:image/svg+xml;charset=UTF-8,${encodeURIComponent(`\n <svg width=\"48\" height=\"48\" viewBox=\"0 0 48 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"24\" cy=\"24\" r=\"22\" fill=\"#00000010\"/>\n <circle cx=\"24\" cy=\"24\" r=\"10\" fill=\"#000000\"/>\n <circle cx=\"24\" cy=\"24\" r=\"5\" fill=\"#3ADB67\"/>\n </svg>\n `)}`,\n scaledSize: { width: 48, height: 48 },\n anchor: { x: 24, y: 24 },\n } as google.maps.Icon\n\n const marker = new google.maps.Marker({\n position: { lat, lng },\n map: googleMapRef.current,\n title: location.name,\n icon: svgIcon,\n })\n\n marker.addListener('click', () => {\n setSelectedLocation(location)\n\n // 创建信息窗口内容\n const content = `\n <div style=\"padding: 0 16px 16px 16px; font-weight: 700; font-family: 'MontForAnker'; max-width: 420px;\">\n <h3 style=\"margin: 0 0 16px 0; font-size: 24px; color: #080A0F;\">${location.name}</h3>\n ${\n location.availableTime\n ? `<div style=\"display: flex; align-items: flex-start; gap: 12px; margin-bottom: 12px;\">\n <svg style=\"flex-shrink: 0; margin-top: 2px;\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"4\" width=\"14\" height=\"13\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n <path d=\"M3 8H17\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M6 2V4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M14 2V4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </svg>\n <div>\n <p style=\"margin: 0; font-size: 16px; color: #2A2C32;\">${location.availableTime === pageData?.noAvailableTime ? '' : pageData.available} ${location.availableTime}</p>\n </div>\n </div>`\n : ''\n }\n <div style=\"display: flex; align-items: flex-start; gap: 12px; margin-bottom: 12px;\">\n <svg style=\"flex-shrink: 0; margin-top: 2px;\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 10C11.1046 10 12 9.10457 12 8C12 6.89543 11.1046 6 10 6C8.89543 6 8 6.89543 8 8C8 9.10457 8.89543 10 10 10Z\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n <path d=\"M10 18C10 18 16 13 16 8C16 4.68629 13.3137 2 10 2C6.68629 2 4 4.68629 4 8C4 13 10 18 10 18Z\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n </svg>\n <div style=\"flex: 1;\">\n <p style=\"margin: 0; font-size: 16px; color: #2A2C32; word-wrap: break-word;\">${location.address}</p>\n </div>\n </div>\n ${\n location.euifyMakeModel\n ? `<div style=\"display: flex; align-items: flex-start; gap: 12px; margin-bottom: 24px;\">\n <svg style=\"flex-shrink: 0; margin-top: 2px;\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M14.4643 7.4929H9.65565M3.16391 18.7132H20.8171C22.0122 18.7132 22.981 17.7563 22.981 16.576L23 13.8348L22.981 6.42431C22.981 5.24396 22.0122 4.28711 20.8171 4.28711H3.16391C1.96882 4.28711 1 5.24396 1 6.42431V16.576C1 17.7563 1.96882 18.7132 3.16391 18.7132Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.32812 18.2325V14.4238C5.32812 13.8715 5.77584 13.4238 6.32813 13.4238H17.7925C18.3447 13.4238 18.7925 13.8715 18.7925 14.4238V18.2325\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <div>\n <p style=\"margin: 0; font-size: 16px; color: #2A2C32;\">${location.euifyMakeModel}</p>\n </div>\n </div>`\n : ''\n }\n <button\n id=\"schedule-btn-${location.id}\"\n style=\"\n width: fit-content;\n padding: 12px 28px;\n background: #fff;\n color: #111827;\n border: 2px solid #111827;\n border-radius: 9999px;\n font-weight: 700;\n cursor: pointer;\n font-size: 16px;\n transition: all 0.2s;\n \"\n onmouseover=\"this.style.background='#111827'; this.style.color='#fff';\"\n onmouseout=\"this.style.background='#fff'; this.style.color='#111827';\"\n >\n ${pageData.scheduleNow}\n </button>\n </div>\n `\n\n if (infoWindowRef.current) {\n infoWindowRef.current.setContent(content)\n infoWindowRef.current.open(googleMapRef.current, marker)\n\n // 添加按钮点击事件监听\n google.maps.event.addListenerOnce(\n infoWindowRef.current,\n 'domready',\n () => {\n const btn = document.getElementById(`schedule-btn-${location.id}`)\n if (btn) {\n btn.addEventListener('click', () => {\n if (onSchedule) {\n onSchedule(location.id)\n }\n })\n }\n }\n )\n }\n\n // 移动地图中心到标记位置\n googleMapRef.current?.panTo({ lat: location.lat, lng: location.lng })\n })\n\n markersRef.current.push(marker)\n })\n\n // 自动调整地图视图以显示所有标记\n if (validLocations.length > 0 && googleMapRef.current) {\n const bounds = new google.maps.LatLngBounds()\n validLocations.forEach((location) => {\n const lat = Number(location.lat)\n const lng = Number(location.lng)\n bounds.extend({ lat, lng })\n })\n googleMapRef.current.fitBounds(bounds)\n }\n }, [isLoaded, locations, onSchedule])\n\n // 处理 hover 状态变化\n React.useEffect(() => {\n if (!isLoaded || !googleMapRef.current || !hoveredLocationId) {\n // 如果没有 hover,关闭信息窗口\n if (!hoveredLocationId && infoWindowRef.current) {\n infoWindowRef.current.close()\n }\n return\n }\n\n // 找到对应的位置和标记\n const location = locations.find((loc) => loc.id === hoveredLocationId)\n const markerIndex = locations.findIndex(\n (loc) => loc.id === hoveredLocationId\n )\n const marker = markersRef.current[markerIndex]\n\n if (location && marker) {\n // 创建信息窗口内容\n const content = `\n <div style=\"padding: 0 16px 16px 16px; font-weight: 700; font-family: 'MontForAnker'; max-width: 420px;\">\n <h3 style=\"margin: 0 0 16px 0; font-size: 24px; color: #080A0F;\">${location.name}</h3>\n ${\n location.availableTime\n ? `<div style=\"display: flex; align-items: flex-start; gap: 12px; margin-bottom: 12px;\">\n <svg style=\"flex-shrink: 0; margin-top: 2px;\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"3\" y=\"4\" width=\"14\" height=\"13\" rx=\"2\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n <path d=\"M3 8H17\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M6 2V4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M14 2V4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n </svg>\n <div>\n <p style=\"margin: 0;font-size: 16px; color: #2A2C32;\">${location.availableTime === pageData?.noAvailableTime ? '' : pageData.available} ${location.availableTime}</p>\n </div>\n </div>`\n : ''\n }\n <div style=\"display: flex; align-items: flex-start; gap: 12px; margin-bottom: 12px;\">\n <svg style=\"flex-shrink: 0; margin-top: 2px;\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 10C11.1046 10 12 9.10457 12 8C12 6.89543 11.1046 6 10 6C8.89543 6 8 6.89543 8 8C8 9.10457 8.89543 10 10 10Z\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n <path d=\"M10 18C10 18 16 13 16 8C16 4.68629 13.3137 2 10 2C6.68629 2 4 4.68629 4 8C4 13 10 18 10 18Z\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n </svg>\n <div style=\"flex: 1;\">\n <p style=\"margin: 0; font-size: 16px; color: #2A2C32; word-wrap: break-word;\">${location.address}</p>\n </div>\n </div>\n ${\n location.euifyMakeModel\n ? `<div style=\"display: flex; align-items: flex-start; gap: 12px; margin-bottom: 24px;\">\n <svg style=\"flex-shrink: 0; margin-top: 2px;\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M14.4643 7.4929H9.65565M3.16391 18.7132H20.8171C22.0122 18.7132 22.981 17.7563 22.981 16.576L23 13.8348L22.981 6.42431C22.981 5.24396 22.0122 4.28711 20.8171 4.28711H3.16391C1.96882 4.28711 1 5.24396 1 6.42431V16.576C1 17.7563 1.96882 18.7132 3.16391 18.7132Z\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M5.32812 18.2325V14.4238C5.32812 13.8715 5.77584 13.4238 6.32813 13.4238H17.7925C18.3447 13.4238 18.7925 13.8715 18.7925 14.4238V18.2325\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <div>\n <p style=\"margin: 0; font-size: 16px; color: #2A2C32;\">${location.euifyMakeModel}</p>\n </div>\n </div>`\n : ''\n }\n <button\n id=\"schedule-btn-hover-${location.id}\"\n style=\"\n width: fit-content;\n padding: 12px 28px;\n background: #fff;\n color: #111827;\n border: 2px solid #111827;\n border-radius: 9999px;\n font-weight: 700;\n cursor: pointer;\n font-size: 16px;\n transition: all 0.2s;\n \"\n onmouseover=\"this.style.background='#111827'; this.style.color='#fff';\"\n onmouseout=\"this.style.background='#fff'; this.style.color='#111827';\"\n >\n ${pageData.scheduleNow}\n </button>\n </div>\n `\n\n if (infoWindowRef.current) {\n infoWindowRef.current.setContent(content)\n infoWindowRef.current.open(googleMapRef.current, marker)\n\n // 添加按钮点击事件监听\n google.maps.event.addListenerOnce(\n infoWindowRef.current,\n 'domready',\n () => {\n const btn = document.getElementById(\n `schedule-btn-hover-${location.id}`\n )\n if (btn) {\n btn.addEventListener('click', () => {\n if (onSchedule) {\n onSchedule(location.id)\n }\n })\n }\n }\n )\n }\n\n // 移动地图中心到标记位置(可选)\n // googleMapRef.current?.panTo({ lat: location.lat, lng: location.lng })\n }\n }, [hoveredLocationId, isLoaded, locations, onSchedule])\n\n // const handleCloseInfo = useCallback(() => {\n // setSelectedLocation(null)\n // if (infoWindowRef.current) {\n // infoWindowRef.current.close()\n // }\n // }, [])\n\n if (!googleMapsApiKey) {\n return (\n <div\n className={cn(\n 'flex items-center overflow-hidden justify-center bg-gray-100 rounded-[16px]',\n className\n )}\n style={{ height: mapHeight }}\n {...props}\n >\n <p className=\"text-gray-600\">{pageData.apiKeyRequired}</p>\n </div>\n )\n }\n\n return (\n <div\n className={cn('relative w-full rounded-[16px] overflow-hidden', className)}\n {...props}\n >\n <div ref={mapRef} style={{ height: mapHeight }} />\n {!isLoaded && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-gray-100\">\n <div className=\"text-center\">\n <div className=\"inline-block animate-spin rounded-full h-8 w-8 border-4 border-gray-300 border-t-gray-900 mb-2\"></div>\n <p className=\"text-gray-600\">{pageData.loadingMap}</p>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nStudioMap.displayName = 'StudioMap'\n","// API 基础类型\nexport interface ApiResponse<T = any> {\n code: number\n message: string\n data: T\n request_id: string\n}\n\n// 时段状态\nexport type TimeslotStatus = 'available' | 'full' | 'disabled'\n\n// 门店类型\nexport type DemoRoomType = 'flagship' | 'standard' | 'popup'\n\n// 门店状态\nexport type DemoRoomStatus = 'enabled' | 'disabled'\n\n// 预约状态\nexport type BookingStatus = 'pending' | 'checked_in' | 'completed' | 'cancelled'\n\n// 问题类型\nexport type QuestionType = 'text' | 'email' | 'tel' | 'phone' | 'radio' | 'radio_with_other' | 'checkbox' | 'textarea' | 'select'\n\n// 时段\nexport interface Timeslot {\n id: number\n start_time: string\n end_time: string\n capacity: number\n booked_count: number\n status: TimeslotStatus\n}\n\n// 门店位置信息\nexport interface DemoRoomLocation {\n country: string\n state: string\n city: string\n}\n\n// 门店\nexport interface DemoRoom {\n code: string\n name: string\n description: string\n equipment?: string[]\n address: string\n location?: DemoRoomLocation\n type: DemoRoomType\n capacity: number\n status: DemoRoomStatus\n timezone: string\n images: string[]\n latitude: number\n longitude: number\n questionnaire_id?: number\n timeslots: Timeslot[]\n}\n\n// 问卷选项\nexport interface QuestionOption {\n label: string\n value?: string\n}\n\n// 问卷问题\nexport interface Question {\n id?: string // 固定字段使用 id(如客户信息字段)\n key?: string // 自定义字段使用 key\n type: QuestionType\n label: string\n description?: string\n placeholder?: string\n hint?: string\n options?: QuestionOption[]\n required: boolean\n is_default?: boolean // 是否为默认题目(首次预约时显示)\n order?: number // 题目顺序\n}\n\n// 问卷\nexport interface Questionnaire {\n id: number\n name: string\n description: string\n questions: Question[]\n}\n\n// 获取门店列表响应\nexport interface GetDemoRoomsResponse {\n demorooms: DemoRoom[]\n}\n\n// 查询时段响应\nexport interface GetTimeslotsResponse {\n timeslots: Timeslot[]\n timezone: string\n}\n\n// 提交预约请求\nexport interface CreateBookingRequest {\n demoroom_code: string\n timeslot_id: number\n questionnaire_id?: number\n questionnaire_response?: Record<string, any>\n customer_name: string\n customer_email: string\n customer_phone_code: string\n customer_phone_number: string\n has_booked_before?: number // 1 - 以前预约过,0 - 首次预约(默认)\n}\n\n// 提交预约响应\nexport interface CreateBookingResponse {\n booking_id: string\n demoroom_code: string\n booking_date: string\n booking_time: string\n customer_name: string\n customer_email: string\n status: string\n cancel_token?: string\n created_at?: string\n}\n\n// 预约信息\nexport interface Booking {\n booking_id: number\n demoroom_code: string\n demoroom_name?: string // 门店名称(查询预约详情时返回)\n address?: string // 门店地址(查询预约详情时返回)\n equipment?: string[] // 设备列表(查询预约详情时返回)\n latitude?: number // 纬度(查询预约详情时返回)\n longitude?: number // 经度(查询预约详情时返回)\n timezone?: string // 门店时区(查询预约详情时返回)\n booking_date: string\n booking_time?: string // 预约开始时间(创建预约时返回)\n time_slot?: string // 时间段 HH:MM-HH:MM(查询预约详情时返回)\n customer_name: string\n customer_email: string\n phone_code?: string // 电话区号\n phone_number?: string // 电话号码\n status: BookingStatus\n cancel_token: string\n created_at: string\n}\n\n// 获取预约详情响应\nexport interface GetBookingResponse {\n booking: Booking\n}\n\n// 取消预约响应\nexport interface CancelBookingResponse {\n booking: Booking\n}\n\n// API 错误码\nexport enum ApiErrorCode {\n SUCCESS = 0,\n PARAM_ERROR = 1001,\n UNAUTHORIZED = 1002,\n FORBIDDEN = 1003,\n NOT_FOUND = 1004,\n CONFLICT = 1005,\n INTERNAL_ERROR = 1006,\n}\n\n// API 错误\nexport class ApiError extends Error {\n code: number\n request_id?: string\n\n constructor(code: number, message: string, request_id?: string) {\n super(message)\n this.code = code\n this.request_id = request_id\n this.name = 'ApiError'\n }\n}\n","import { useState, useEffect, useCallback } from 'react'\nimport type { DemoRoomApiClient } from './client'\nimport type {\n DemoRoom,\n GetTimeslotsResponse,\n Questionnaire,\n CreateBookingRequest,\n Booking,\n} from './types'\nimport { ApiError } from './types'\n\ninterface UseApiState<T> {\n data: T | null\n loading: boolean\n error: ApiError | null\n}\n\n/**\n * 获取门店列表 Hook\n */\nexport function useDemoRooms(\n client: DemoRoomApiClient,\n params: {\n team_code?: string\n brand_website?: string\n locale?: string\n },\n options?: { enabled?: boolean }\n) {\n const [state, setState] = useState<UseApiState<DemoRoom[]>>({\n data: null,\n loading: true,\n error: null,\n })\n\n const enabled = options?.enabled !== false\n\n useEffect(() => {\n if (!enabled) return\n\n let cancelled = false\n\n const fetchData = async () => {\n setState((prev) => ({ ...prev, loading: true, error: null }))\n\n try {\n const data = await client.getDemoRooms(params)\n if (!cancelled) {\n setState({ data, loading: false, error: null })\n }\n } catch (error) {\n if (!cancelled) {\n setState({\n data: null,\n loading: false,\n error: error instanceof ApiError ? error : new ApiError(1006, 'Unknown error'),\n })\n }\n }\n }\n\n fetchData()\n\n return () => {\n cancelled = true\n }\n }, [client, params.team_code, params.brand_website, params.locale, enabled])\n\n return state\n}\n\n/**\n * 获取门店详情 Hook\n */\nexport function useDemoRoom(\n client: DemoRoomApiClient,\n code: string,\n locale?: string,\n options?: { enabled?: boolean }\n) {\n const [state, setState] = useState<UseApiState<DemoRoom>>({\n data: null,\n loading: true,\n error: null,\n })\n\n const enabled = options?.enabled !== false\n\n useEffect(() => {\n if (!enabled || !code) return\n\n let cancelled = false\n\n const fetchData = async () => {\n setState((prev) => ({ ...prev, loading: true, error: null }))\n\n try {\n const data = await client.getDemoRoom(code, locale)\n if (!cancelled) {\n setState({ data, loading: false, error: null })\n }\n } catch (error) {\n if (!cancelled) {\n setState({\n data: null,\n loading: false,\n error: error instanceof ApiError ? error : new ApiError(1006, 'Unknown error'),\n })\n }\n }\n }\n\n fetchData()\n\n return () => {\n cancelled = true\n }\n }, [client, code, locale, enabled])\n\n return state\n}\n\n/**\n * 查询门店时段 Hook\n */\nexport function useTimeslots(\n client: DemoRoomApiClient,\n code: string,\n params: {\n start_date: string\n end_date: string\n timezone?: string\n },\n options?: { enabled?: boolean }\n) {\n const [state, setState] = useState<UseApiState<GetTimeslotsResponse>>({\n data: null,\n loading: true,\n error: null,\n })\n\n const enabled = options?.enabled !== false\n\n useEffect(() => {\n if (!enabled || !code || !params.start_date || !params.end_date) return\n\n let cancelled = false\n\n const fetchData = async () => {\n setState((prev) => ({ ...prev, loading: true, error: null }))\n\n try {\n const data = await client.getTimeslots(code, params)\n if (!cancelled) {\n setState({ data, loading: false, error: null })\n }\n } catch (error) {\n if (!cancelled) {\n setState({\n data: null,\n loading: false,\n error: error instanceof ApiError ? error : new ApiError(1006, 'Unknown error'),\n })\n }\n }\n }\n\n fetchData()\n\n return () => {\n cancelled = true\n }\n }, [client, code, params.start_date, params.end_date, params.timezone, enabled])\n\n return state\n}\n\n/**\n * 查询门店问卷 Hook\n */\nexport function useQuestionnaire(\n client: DemoRoomApiClient,\n code: string,\n questionnaire_id: number | undefined,\n locale?: string,\n options?: { enabled?: boolean }\n) {\n const [state, setState] = useState<UseApiState<Questionnaire>>({\n data: null,\n loading: true,\n error: null,\n })\n\n const enabled = options?.enabled !== false\n\n useEffect(() => {\n if (!enabled || !code || !questionnaire_id) {\n setState({\n data: null,\n loading: false,\n error: null,\n })\n return\n }\n\n let cancelled = false\n\n const fetchData = async () => {\n setState((prev) => ({ ...prev, loading: true, error: null }))\n\n try {\n const data = await client.getQuestionnaire(code, questionnaire_id, locale)\n if (!cancelled) {\n setState({ data, loading: false, error: null })\n }\n } catch (error) {\n if (!cancelled) {\n setState({\n data: null,\n loading: false,\n error: error instanceof ApiError ? error : new ApiError(1006, 'Unknown error'),\n })\n }\n }\n }\n\n fetchData()\n\n return () => {\n cancelled = true\n }\n }, [client, code, questionnaire_id, locale, enabled])\n\n return state\n}\n\n/**\n * 提交预约 Hook\n */\nexport function useCreateBooking(client: DemoRoomApiClient) {\n const [state, setState] = useState<UseApiState<Booking>>({\n data: null,\n loading: false,\n error: null,\n })\n\n const createBooking = useCallback(\n async (data: CreateBookingRequest) => {\n setState({ data: null, loading: true, error: null })\n\n try {\n const result = await client.createBooking(data)\n setState({ data: result, loading: false, error: null })\n return result\n } catch (error) {\n const apiError = error instanceof ApiError ? error : new ApiError(1006, 'Unknown error')\n setState({ data: null, loading: false, error: apiError })\n throw apiError\n }\n },\n [client]\n )\n\n return {\n ...state,\n createBooking,\n }\n}\n\n/**\n * 获取预约详情 Hook\n */\nexport function useBooking(\n client: DemoRoomApiClient,\n token: string,\n locale?: string,\n options?: { enabled?: boolean }\n) {\n const [state, setState] = useState<UseApiState<Booking>>({\n data: null,\n loading: true,\n error: null,\n })\n\n const enabled = options?.enabled !== false\n\n useEffect(() => {\n if (!enabled || !token) return\n\n let cancelled = false\n\n const fetchData = async () => {\n setState((prev) => ({ ...prev, loading: true, error: null }))\n\n try {\n const data = await client.getBooking(token, locale)\n if (!cancelled) {\n setState({ data, loading: false, error: null })\n }\n } catch (error) {\n if (!cancelled) {\n setState({\n data: null,\n loading: false,\n error: error instanceof ApiError ? error : new ApiError(1006, 'Unknown error'),\n })\n }\n }\n }\n\n fetchData()\n\n return () => {\n cancelled = true\n }\n }, [client, token, locale, enabled])\n\n return state\n}\n\n/**\n * 取消预约 Hook\n */\nexport function useCancelBooking(client: DemoRoomApiClient) {\n const [state, setState] = useState<UseApiState<Booking>>({\n data: null,\n loading: false,\n error: null,\n })\n\n const cancelBooking = useCallback(\n async (token: string, locale?: string) => {\n setState({ data: null, loading: true, error: null })\n\n try {\n const result = await client.cancelBooking(token, locale)\n setState({ data: result, loading: false, error: null })\n return result\n } catch (error) {\n const apiError = error instanceof ApiError ? error : new ApiError(1006, 'Unknown error')\n setState({ data: null, loading: false, error: apiError })\n throw apiError\n }\n },\n [client]\n )\n\n return {\n ...state,\n cancelBooking,\n }\n}\n","import React, { useEffect, useRef } from 'react'\nimport { cn } from '@/utils/cn'\n\nexport interface AntdMobileIsolatedProps {\n children: React.ReactNode\n className?: string\n style?: React.CSSProperties\n}\n\n/**\n * 隔离 antd-mobile 全局样式的包装组件\n * 通过创建一个独立的样式上下文来防止 antd-mobile 的全局样式影响应用其他部分\n */\nexport const AntdMobileIsolated: React.FC<AntdMobileIsolatedProps> = ({\n children,\n className,\n style,\n}) => {\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!containerRef.current) return\n\n // 重置容器内可能受影响的全局样式\n const container = containerRef.current\n const originalStyles = {\n fontSize: container.style.fontSize,\n fontFamily: container.style.fontFamily,\n lineHeight: container.style.lineHeight,\n color: container.style.color,\n }\n\n // 应用隔离样式\n container.style.fontSize = '14px'\n container.style.fontFamily =\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif'\n container.style.lineHeight = '1.5'\n container.style.color = '#333'\n\n // 清理函数:恢复原始样式\n return () => {\n container.style.fontSize = originalStyles.fontSize\n container.style.fontFamily = originalStyles.fontFamily\n container.style.lineHeight = originalStyles.lineHeight\n container.style.color = originalStyles.color\n }\n }, [])\n\n return (\n <div\n ref={containerRef}\n className={cn('antd-mobile-isolated', className)}\n style={{\n // 使用 all: revert-layer 来隔离样式\n isolation: 'isolate',\n contain: 'layout style',\n ...style,\n }}\n >\n {children}\n </div>\n )\n}\n\nAntdMobileIsolated.displayName = 'AntdMobileIsolated'\n","/**\n * 地址解析工具\n * 将 room.address 解析为层级结构:Country > State > City\n */\n\nexport interface LocationHierarchy {\n country: string\n state: string\n city: string\n}\n\n/**\n * 已知国家列表(包含多词国家名)\n * 优先匹配多词国家名,避免误判\n */\nconst KNOWN_COUNTRIES = [\n 'United States',\n 'United Kingdom',\n 'American Samoa',\n 'United Arab Emirates',\n 'Bosnia and Herzegovina',\n 'Trinidad and Tobago',\n 'Saint Kitts and Nevis',\n 'Antigua and Barbuda',\n 'Saint Vincent and the Grenadines',\n 'São Tomé and Príncipe',\n 'United States Minor Outlying Islands',\n 'British Virgin Islands',\n 'United States Virgin Islands',\n 'Cayman Islands',\n 'Cook Islands',\n 'Falkland Islands',\n 'Faroe Islands',\n 'Marshall Islands',\n 'Northern Mariana Islands',\n 'Pitcairn Islands',\n 'Solomon Islands',\n 'Turks and Caicos Islands',\n 'Wallis and Futuna',\n]\n\n/**\n * 从地址字符串中提取国家、州、城市信息\n * 支持多种地址格式,从后往前解析\n *\n * 示例:\n * - \"building information, street test, city-test2, Ofu‑Olosega, American Samoa\"\n * => country: \"American Samoa\", state: \"Ofu‑Olosega\", city: \"city-test2\"\n * - \"111 8th St, San Francisco, CA 94108, United States\"\n * => country: \"United States\", state: \"CA\", city: \"San Francisco\"\n */\nexport function parseAddress(address: string): LocationHierarchy {\n // 按逗号分割地址\n const parts = address.split(',').map((part) => part.trim()).filter(Boolean)\n\n // 默认值\n let country = 'United States'\n let state = ''\n let city = ''\n\n if (parts.length === 0) {\n return { country, state, city }\n }\n\n // 从后往前解析\n // 最后一部分通常是国家\n const lastPart = parts[parts.length - 1]\n\n // 检查最后一部分是否是已知国家\n const matchedCountry = KNOWN_COUNTRIES.find(\n (knownCountry) => lastPart.toLowerCase() === knownCountry.toLowerCase()\n )\n\n if (matchedCountry) {\n country = matchedCountry\n\n // 倒数第二部分是州/省\n if (parts.length >= 2) {\n state = parts[parts.length - 2].split(' ')[0] // 去掉邮编\n }\n\n // 倒数第三部分是城市\n if (parts.length >= 3) {\n city = parts[parts.length - 3]\n }\n } else {\n // 如果最后一部分不是已知国家,尝试其他解析方式\n if (parts.length >= 2) {\n // 可能的格式: \"Street, City, State\"\n state = parts[parts.length - 1].split(' ')[0]\n city = parts[parts.length - 2]\n } else if (parts.length === 1) {\n // 只有一个部分,可能是城市\n city = parts[0]\n }\n }\n\n return {\n country: country.trim(),\n state: state.trim(),\n city: city.trim(),\n }\n}\n\n/**\n * 地理位置节点(用于树形结构)\n */\nexport interface LocationNode {\n id: string\n name: string\n type: 'country' | 'state' | 'city'\n count: number // 该位置的门店数量\n children?: LocationNode[]\n}\n\n/**\n * 从门店列表构建地理位置树\n */\nexport function buildLocationTree(\n locations: Array<{ address: string; id: string }>\n): LocationNode[] {\n const tree: Map<string, LocationNode> = new Map()\n\n locations.forEach((location) => {\n const { country, state, city } = parseAddress(location.address)\n\n // 构建国家节点\n const countryId = country\n if (!tree.has(countryId)) {\n tree.set(countryId, {\n id: countryId,\n name: country,\n type: 'country',\n count: 0,\n children: [],\n })\n }\n\n const countryNode = tree.get(countryId)!\n countryNode.count++\n\n // 构建州节点\n if (state) {\n const stateId = `${country}/${state}`\n let stateNode = countryNode.children?.find((n) => n.id === stateId)\n\n if (!stateNode) {\n stateNode = {\n id: stateId,\n name: state,\n type: 'state',\n count: 0,\n children: [],\n }\n countryNode.children?.push(stateNode)\n }\n\n stateNode.count++\n\n // 构建城市节点\n if (city) {\n const cityId = `${country}/${state}/${city}`\n let cityNode = stateNode.children?.find((n) => n.id === cityId)\n\n if (!cityNode) {\n cityNode = {\n id: cityId,\n name: city,\n type: 'city',\n count: 0,\n }\n stateNode.children?.push(cityNode)\n }\n\n cityNode.count++\n }\n }\n })\n\n return Array.from(tree.values())\n}\n\n/**\n * 按字母分组位置列表\n */\nexport function groupByAlphabet<T extends { name: string }>(\n items: T[]\n): Array<{ title: string; items: T[] }> {\n const groups: Map<string, T[]> = new Map()\n\n items.forEach((item) => {\n const firstChar = item.name.charAt(0).toUpperCase()\n const key = /[A-Z]/.test(firstChar) ? firstChar : '#'\n\n if (!groups.has(key)) {\n groups.set(key, [])\n }\n groups.get(key)!.push(item)\n })\n\n return Array.from(groups.entries())\n .sort(([a], [b]) => {\n if (a === '#') return 1\n if (b === '#') return -1\n return a.localeCompare(b)\n })\n .map(([title, items]) => ({\n title,\n items: items.sort((a, b) => a.name.localeCompare(b.name)),\n }))\n}\n","/* antd-mobile 样式隔离 - 使用更强的隔离策略 */\n.antdMobileScope {\n /* 重置所有继承样式,但保持布局相关属性 */\n all: unset;\n\n /* 恢复必要的属性 */\n display: block;\n position: absolute;\n box-sizing: border-box;\n\n /* 阻止继承字体样式 */\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: #333;\n\n /* 重置 CSS 变量影响 */\n --adm-color-primary: #1677ff;\n --adm-color-text: #333333;\n --adm-font-size-main: 14px;\n}\n\n/* 确保 antd-mobile 组件内部样式正常工作 */\n.antdMobileScope *,\n.antdMobileScope *::before,\n.antdMobileScope *::after {\n box-sizing: border-box;\n}\n\n/* 阻止全局样式继承 */\n.antd-mobile-isolated-container .antdMobileScope :not([class*=\"adm-\"]) {\n all: unset;\n}\n\n/* 保持 antd-mobile 组件样式 */\n.antd-mobile-isolated-container .antdMobileScope [class*=\"adm-\"] {\n all: revert;\n}\n\n/* 隐藏 List.Item 的右侧箭头 */\n.antd-mobile-isolated-container .antdMobileScope .adm-list-item-content-arrow {\n display: none !important;\n}\n","import React, { useState, useMemo } from 'react'\nimport { cn } from '@/utils/cn'\nimport IndexBar from 'antd-mobile/es/components/index-bar'\nimport List from 'antd-mobile/es/components/list'\nimport 'antd-mobile/es/components/index-bar/index-bar.css'\nimport 'antd-mobile/es/components/list/list.css'\nimport { AntdMobileIsolated } from './AntdMobileIsolated'\nimport { groupByAlphabet } from '../utils/addressParser'\nimport styles from './RoomsList.module.css'\n\nexport type LocationLevel = 'country' | 'state' | 'city'\n\nexport interface LocationFilterProps {\n locations: Array<{\n id: string\n country: string\n state: string\n city: string\n }>\n onSelect?: (selection: LocationSelection) => void\n visible?: boolean\n onClose?: () => void\n pageData?: {\n allLocations?: string\n clear?: string\n country?: string\n state?: string\n city?: string\n noStudiosFound?: string\n }\n}\n\nexport interface LocationSelection {\n level: LocationLevel\n country?: string\n state?: string\n city?: string\n}\n\ninterface LocationItem {\n name: string\n code: string\n count: number\n parentCode?: string\n}\n\nexport const LocationFilter: React.FC<LocationFilterProps> = ({\n locations,\n onSelect,\n visible = false,\n onClose,\n pageData = {\n allLocations: 'All Locations',\n clear: 'Clear',\n country: 'Country',\n state: 'State',\n city: 'City',\n noStudiosFound: 'No studios found in this location',\n },\n}) => {\n const [currentLevel, setCurrentLevel] = useState<LocationLevel>('country')\n const [selectedCountry, setSelectedCountry] = useState<string>()\n const [selectedState, setSelectedState] = useState<string>()\n const [searchQuery, setSearchQuery] = useState('')\n\n // 构建位置数据\n const locationData = useMemo(() => {\n const countries = new Map<string, LocationItem>()\n const states = new Map<string, LocationItem>()\n const cities = new Map<string, LocationItem>()\n\n locations.forEach((location) => {\n const { country, state, city } = location\n\n // 统计国家\n if (country) {\n const existing = countries.get(country)\n countries.set(country, {\n name: country,\n code: country,\n count: (existing?.count || 0) + 1,\n })\n }\n\n // 统计州\n if (state) {\n const stateKey = `${country}/${state}`\n const existing = states.get(stateKey)\n states.set(stateKey, {\n name: state,\n code: stateKey,\n count: (existing?.count || 0) + 1,\n parentCode: country,\n })\n }\n\n // 统计城市\n if (city) {\n const cityKey = `${country}/${state}/${city}`\n const existing = cities.get(cityKey)\n cities.set(cityKey, {\n name: city,\n code: cityKey,\n count: (existing?.count || 0) + 1,\n parentCode: `${country}/${state}`,\n })\n }\n })\n\n return {\n countries: Array.from(countries.values()),\n states: Array.from(states.values()),\n cities: Array.from(cities.values()),\n }\n }, [locations])\n\n // 根据当前层级和选择过滤数据\n const filteredItems = useMemo(() => {\n let items: LocationItem[] = []\n\n switch (currentLevel) {\n case 'country':\n items = locationData.countries\n break\n case 'state':\n items = selectedCountry\n ? locationData.states.filter((s) => s.parentCode === selectedCountry)\n : []\n break\n case 'city':\n items = selectedState\n ? locationData.cities.filter((c) => c.parentCode === selectedState)\n : []\n break\n }\n\n // 应用搜索过滤\n if (searchQuery) {\n items = items.filter((item) =>\n item.name.toLowerCase().includes(searchQuery.toLowerCase())\n )\n }\n\n return items\n }, [currentLevel, selectedCountry, selectedState, locationData, searchQuery])\n\n // 按字母分组\n const groupedItems = useMemo(\n () => groupByAlphabet(filteredItems),\n [filteredItems]\n )\n\n // 判断是否显示字母索引条(数据少于10条时不显示)\n const showIndexBar = filteredItems.length >= 10\n\n const handleItemClick = (item: LocationItem) => {\n // 处理\"All\"选项\n if (item.code === '__all__') {\n if (currentLevel === 'country') {\n // 选择所有国家\n onSelect?.({\n level: 'country',\n })\n onClose?.()\n } else if (currentLevel === 'state') {\n // 选择该国家下的所有州\n onSelect?.({\n level: 'state',\n country: selectedCountry,\n })\n onClose?.()\n } else if (currentLevel === 'city') {\n // 选择该州下的所有城市\n const parts = selectedState?.split('/') || []\n onSelect?.({\n level: 'city',\n country: parts[0],\n state: parts[1],\n })\n onClose?.()\n }\n return\n }\n\n // 正常选择逻辑\n if (currentLevel === 'country') {\n setSelectedCountry(item.code)\n setCurrentLevel('state')\n } else if (currentLevel === 'state') {\n setSelectedState(item.code)\n setCurrentLevel('city')\n } else if (currentLevel === 'city') {\n // 选择城市,触发回调\n const parts = item.code.split('/')\n onSelect?.({\n level: 'city',\n country: parts[0],\n state: parts[1],\n city: parts[2],\n })\n onClose?.()\n }\n }\n\n const handleTabClick = (level: LocationLevel) => {\n setCurrentLevel(level)\n if (level === 'country') {\n setSelectedCountry(undefined)\n setSelectedState(undefined)\n } else if (level === 'state') {\n setSelectedState(undefined)\n }\n }\n\n if (!visible) return null\n\n return (\n <div\n style={{ height: '724px' }}\n className={cn(\n 'w-full rounded-b-[12px] absolute z-10 bottom-[-2px] left-0 bg-white border border-[#E4E5E6]',\n styles.antdMobileScope\n )}\n >\n {/* Header with tabs */}\n <div\n style={{ background: '#F8F8F8' }}\n className=\"h-[76px] font-bold text-[14px] flex flex-col\"\n >\n {/* Tabs */}\n <div className=\"flex items-center text-[16px] px-[20px] gap-[16px] py-[24px]\">\n <button\n onClick={() => handleTabClick('country')}\n className={cn(\n 'pb-[4px] transition-colors',\n currentLevel === 'country'\n ? 'text-[#080A0F] border-b-2 border-[#3ADB67]'\n : 'text-[#080A0F]'\n )}\n >\n {pageData.country}\n </button>\n <button\n onClick={() => handleTabClick('state')}\n disabled={!selectedCountry}\n className={cn(\n 'pb-[4px] transition-colors',\n currentLevel === 'state'\n ? 'text-[#080A0F] border-b-2 border-[#3ADB67]'\n : 'text-[#080A0F]',\n !selectedCountry && 'opacity-50 cursor-not-allowed'\n )}\n >\n {pageData.state}\n </button>\n <button\n onClick={() => handleTabClick('city')}\n disabled={!selectedState}\n className={cn(\n 'pb-[4px] transition-colors',\n currentLevel === 'city'\n ? 'text-[#080A0F] border-b-2 border-[#3ADB67]'\n : 'text-[#080A0F]',\n !selectedState && 'opacity-50 cursor-not-allowed'\n )}\n >\n {pageData.city}\n </button>\n </div>\n </div>\n\n {/* Content */}\n <AntdMobileIsolated style={{ height: 'calc(100% - 76px)' }}>\n {showIndexBar ? (\n <div style={{ height: '100%', display: 'flex', flexDirection: 'column' }}>\n {/* All option */}\n <List>\n <List.Item\n onClick={() => handleItemClick({ code: '__all__', name: pageData.allLocations || 'All', count: filteredItems.length })}\n key=\"__all__\"\n className='text-[16px] !pl-[24px] font-bold'\n style={{ cursor: 'pointer', borderBottom: '1px solid #E4E5E6' }}\n >\n {pageData.allLocations}\n </List.Item>\n </List>\n <IndexBar style={{ flex: 1 }}>\n {groupedItems.map((group) => {\n const { title, items } = group\n return (\n <IndexBar.Panel index={title} title={title} key={title}>\n <List>\n {items.map((item) => (\n <List.Item\n onClick={() => handleItemClick(item)}\n key={item.code}\n className='text-[16px] !pl-[24px]'\n style={{ cursor: 'pointer' }}\n >\n {item.name}\n </List.Item>\n ))}\n </List>\n </IndexBar.Panel>\n )\n })}\n </IndexBar>\n </div>\n ) : (\n <div style={{ height: '100%', overflow: 'auto' }}>\n <List>\n {/* All option */}\n <List.Item\n onClick={() => handleItemClick({ code: '__all__', name: pageData.allLocations || 'All', count: filteredItems.length })}\n key=\"__all__\"\n className='text-[16px] !pl-[24px] font-bold'\n style={{ cursor: 'pointer', borderBottom: '1px solid #E4E5E6' }}\n >\n {pageData.allLocations}\n </List.Item>\n {filteredItems.map((item) => (\n <List.Item\n onClick={() => handleItemClick(item)}\n key={item.code}\n className='text-[16px] !pl-[24px]'\n style={{ cursor: 'pointer' }}\n >\n {item.name}\n </List.Item>\n ))}\n </List>\n </div>\n )}\n </AntdMobileIsolated>\n </div>\n )\n}\n\nLocationFilter.displayName = 'LocationFilter'\n","import React, { useMemo, useState } from 'react'\nimport { cn } from '@/utils/cn'\nimport { Title } from './Title'\nimport { StudioCard } from './StudioCard'\nimport { StudioLocation, StudioMap } from './StudioMap'\nimport { useDemoRooms } from '@/api/hooks'\nimport type { DemoRoomApiClient } from '@/api/client'\nimport { LocationFilter, type LocationSelection } from './LocationFilter'\nimport type { DemoRoomPageData } from '../types/pageData'\nimport dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\nimport timezone from 'dayjs/plugin/timezone'\n\n// 扩展 dayjs 插件\ndayjs.extend(utc)\ndayjs.extend(timezone)\n\nexport interface RoomsListProps extends React.HTMLAttributes<HTMLDivElement> {\n googleMapsApiKey?: string\n layoutClassName?: string\n apiClient: DemoRoomApiClient\n teamCode?: string\n brandWebsite?: string\n /**\n * Callback when user clicks \"Schedule Now\" button\n * @param demoRoomCode - The demo room code\n */\n onSchedule?: (demoRoomCode: string) => void\n /**\n * 页面可配置数据(文案、图标等)\n */\n pageData?: DemoRoomPageData\n}\n\n// 默认 pageData 配置\nconst defaultPageData: Required<DemoRoomPageData> = {\n title: 'Find a Studio Near You',\n loadingText: 'Loading demo rooms...',\n errorTitle: 'Failed to load demo rooms',\n machine: 'eufymake E1',\n locationFilter: {\n allLocations: 'All Locations',\n clear: 'Clear',\n country: 'Country',\n state: 'State',\n city: 'City',\n noStudiosFound: 'No studios found in this location',\n },\n studioCard: {\n scheduleNow: 'Schedule Now',\n available: 'Available',\n away: 'away',\n },\n map: {\n apiKeyRequired: 'Google Maps API Key is required',\n loadingMap: 'Loading map...',\n scheduleNow: 'Schedule Now',\n available: 'Available',\n },\n defaultCountry: 'United States',\n noAvailableTime: 'No available time',\n}\n\n// 默认测试数据 - 美国主要城市的工作室位置\nconst defaultStudioLocations: StudioLocation[] = [\n {\n id: '1',\n name: 'Design District Demo Room',\n address: '111 8th St, San Francisco, CA, United States',\n city: 'San Francisco',\n state: 'CA',\n zipCode: '94108',\n country: 'United States',\n lat: 37.7749,\n lng: -122.4194,\n availableTime: 'Oct 28, 2:00 PM',\n euifyMakeModel: 'euifyMake E1, euifyMake M5',\n },\n {\n id: '2',\n name: 'Brooklyn Creative Studio',\n address: '456 Broadway, Brooklyn, NY, United States',\n city: 'Brooklyn',\n state: 'NY',\n zipCode: '11211',\n country: 'United States',\n lat: 40.7128,\n lng: -74.006,\n availableTime: 'Oct 29, 3:00 PM',\n euifyMakeModel: 'euifyMake E1, euifyMake M5',\n },\n {\n id: '3',\n name: 'Austin Innovation Hub',\n address: '789 Tech Blvd, Austin, TX, United States',\n city: 'Austin',\n state: 'TX',\n zipCode: '78701',\n country: 'United States',\n lat: 30.2672,\n lng: -97.7431,\n availableTime: 'Oct 30, 1:00 PM',\n euifyMakeModel: 'euifyMake M5',\n },\n {\n id: '4',\n name: 'Seattle Maker Space',\n address: '321 Pine St, Seattle, WA, United States',\n city: 'Seattle',\n state: 'WA',\n zipCode: '98101',\n country: 'United States',\n lat: 47.6062,\n lng: -122.3321,\n availableTime: 'Oct 31, 11:00 AM',\n euifyMakeModel: 'euifyMake E1',\n },\n {\n id: '5',\n name: 'Chicago Design Center',\n address: '654 Michigan Ave, Chicago, IL, United States',\n city: 'Chicago',\n state: 'IL',\n zipCode: '60611',\n country: 'United States',\n lat: 41.8781,\n lng: -87.6298,\n availableTime: 'Nov 1, 2:30 PM',\n euifyMakeModel: 'euifyMake E1, euifyMake M5',\n },\n {\n id: '6',\n name: 'Miami Beach Studio',\n address: '987 Ocean Drive, Miami Beach, FL, United States',\n city: 'Miami Beach',\n state: 'FL',\n zipCode: '33139',\n country: 'United States',\n lat: 25.7617,\n lng: -80.1918,\n availableTime: 'Nov 2, 10:00 AM',\n euifyMakeModel: 'euifyMake M5',\n },\n {\n id: '7',\n name: 'Denver Mountain Studio',\n address: '147 16th St, Denver, CO, United States',\n city: 'Denver',\n state: 'CO',\n zipCode: '80202',\n country: 'United States',\n lat: 39.7392,\n lng: -104.9903,\n availableTime: 'Nov 3, 4:00 PM',\n euifyMakeModel: 'euifyMake E1',\n },\n {\n id: '8',\n name: 'Los Angeles Creative Lab',\n address: '258 Main St, Los Angeles, CA, United States',\n city: 'Los Angeles',\n state: 'CA',\n zipCode: '90012',\n country: 'United States',\n lat: 34.0522,\n lng: -118.2437,\n availableTime: 'Nov 4, 1:00 PM',\n euifyMakeModel: 'euifyMake E1, euifyMake M5',\n },\n]\n\nexport const RoomsList: React.FC<RoomsListProps> = ({\n googleMapsApiKey,\n className,\n apiClient,\n teamCode,\n brandWebsite,\n onSchedule,\n pageData,\n ...props\n}) => {\n // 合并用户提供的 pageData 和默认配置\n const mergedPageData = useMemo(\n () => ({\n ...defaultPageData,\n ...pageData,\n locationFilter: {\n ...defaultPageData.locationFilter,\n ...pageData?.locationFilter,\n },\n studioCard: { ...defaultPageData.studioCard, ...pageData?.studioCard },\n map: { ...defaultPageData.map, ...pageData?.map },\n }),\n [pageData]\n )\n\n // 状态管理\n const [showLocationFilter, setShowLocationFilter] = useState(false)\n const [selectedLocation, setSelectedLocation] = useState<LocationSelection>()\n const [hoveredRoomId, setHoveredRoomId] = useState<string | null>(null)\n\n // 使用 API 获取门店列表\n const {\n data: demoRooms,\n loading,\n error,\n } = useDemoRooms(apiClient, {\n team_code: teamCode,\n brand_website: brandWebsite,\n })\n console.log(demoRooms)\n\n // 将 API 返回的 DemoRoom 类型转换为 StudioLocation 类型\n const studioLocations = useMemo<StudioLocation[]>(() => {\n if (!demoRooms) return defaultStudioLocations\n\n return demoRooms.map((room) => {\n // 获取下一个可用时段\n const nextAvailableTimeslot = room?.timeslots?.find(\n (slot) => slot.status === 'available'\n )\n\n // 使用 API 返回的 location 数据,不再解析 address\n const country = room.location?.country || mergedPageData.defaultCountry\n const state = room.location?.state || ''\n const city = room.location?.city || ''\n\n // 拼接完整地址: room.address 可能只包含街道地址,需要加上 location 信息\n const addressParts = [room.address, city, state, country].filter(Boolean)\n const fullAddress = addressParts.join(', ')\n\n // 格式化时间为 \"Oct.28, 2:00 PM\" 格式\n let formattedTime = mergedPageData.noAvailableTime\n if (nextAvailableTimeslot) {\n try {\n // 使用门店的时区来格式化时间\n const timeInZone = dayjs(nextAvailableTimeslot.start_time).tz(\n room.timezone || 'America/Los_Angeles'\n )\n // 格式化为 \"Oct.28, 2:00 PM\"\n const month = timeInZone.format('MMM')\n const day = timeInZone.format('D')\n const time = timeInZone.format('h:mm A')\n formattedTime = `${month}.${day}, ${time}`\n } catch (error) {\n // 如果格式化失败,使用原始时间\n formattedTime = nextAvailableTimeslot.start_time\n }\n }\n\n return {\n id: room.code,\n name: room.name,\n address: fullAddress,\n city,\n state,\n zipCode: '',\n country,\n lat: Number(room.latitude) || 0,\n lng: Number(room.longitude) || 0,\n availableTime: formattedTime,\n euifyMakeModel: room?.equipment?.join(', ') || '',\n }\n })\n }, [demoRooms, mergedPageData.defaultCountry, mergedPageData.noAvailableTime])\n\n // 根据选择的位置过滤门店\n const filteredStudioLocations = useMemo(() => {\n if (!selectedLocation) return studioLocations\n\n return studioLocations.filter((location) => {\n // 直接使用 location 对象中的 country, state, city 字段进行比较\n if (selectedLocation.city) {\n return (\n location.country === selectedLocation.country &&\n location.state === selectedLocation.state &&\n location.city === selectedLocation.city\n )\n }\n\n if (selectedLocation.state) {\n return (\n location.country === selectedLocation.country &&\n location.state === selectedLocation.state\n )\n }\n\n if (selectedLocation.country) {\n return location.country === selectedLocation.country\n }\n\n return true\n })\n }, [studioLocations, selectedLocation])\n\n // 获取当前选择的位置名称\n const getSelectedLocationName = () => {\n if (!selectedLocation) return mergedPageData.locationFilter.allLocations\n if (selectedLocation.city) return selectedLocation.city\n if (selectedLocation.state) return selectedLocation.state\n if (selectedLocation.country) return selectedLocation.country\n return mergedPageData.locationFilter.allLocations\n }\n\n // 处理位置选择\n const handleLocationSelect = (selection: LocationSelection) => {\n setSelectedLocation(selection)\n setShowLocationFilter(false)\n }\n\n // 清除位置过滤\n const handleClearFilter = () => {\n setSelectedLocation(undefined)\n }\n\n return (\n <div className={className} {...props}>\n {/* Section Title */}\n <Title title={mergedPageData.title}></Title>\n\n {/* Loading State */}\n {loading && (\n <div className=\"flex items-center justify-center h-[794px]\">\n <div className=\"text-center\">\n <div className=\"text-lg font-medium\">\n {mergedPageData.loadingText}\n </div>\n </div>\n </div>\n )}\n\n {/* Error State */}\n {error && (\n <div className=\"flex items-center justify-center h-[794px]\">\n <div className=\"text-center\" style={{ color: '#FF4D4D' }}>\n <div className=\"text-lg font-medium\">\n {mergedPageData.errorTitle}\n </div>\n <div className=\"text-sm mt-2\">{error.message}</div>\n </div>\n </div>\n )}\n\n {/* Content */}\n {!loading && !error && (\n <div className=\"flex h-[794px] gap-4\">\n <div\n className=\"flex-none relative w-[420px] l:!w-full\"\n style={{ height: '794px' }}\n >\n {/* Filter Header */}\n <div className={cn(\n \"mb-4 bg-white border border-[#E4E5E6] px-[20px] py-[16px]\",\n showLocationFilter ? \"rounded-t-[12px] rounded-b-none\" : \"rounded-[12px]\"\n )}>\n {/* First Row */}\n <div className=\"h-[40px] font-bold text-[16px] l:text-[14px] gap-10 l:gap-4 flex items-center\">\n <button\n className=\"flex cursor-pointer items-center hover:text-[#3ADB67] transition-colors\"\n onClick={() => setShowLocationFilter(!showLocationFilter)}\n >\n <span className=\"mr-1\">{getSelectedLocationName()}</span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n className={cn(\n \"transition-transform duration-300\",\n showLocationFilter && \"rotate-180\"\n )}\n >\n <path\n d=\"M16.7661 9.23364C17.078 9.5455 17.0779 10.0516 16.7661 10.3635L12.5991 14.5305C12.2874 14.842 11.782 14.8418 11.4702 14.5305L7.30322 10.3635C6.99135 10.0516 6.99135 9.54552 7.30322 9.23364C7.615 8.9221 8.1203 8.92219 8.43213 9.23364L12.0347 12.8362L15.6362 9.23364C15.9481 8.92183 16.4543 8.92181 16.7661 9.23364Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n {selectedLocation && false && (\n <button\n onClick={handleClearFilter}\n className=\"ml-auto text-[14px] text-[#2E8B57] hover:underline\"\n >\n {mergedPageData.locationFilter.clear}\n </button>\n )}\n <div className=\"flex text-[#767880] cursor-not-allowed\">\n {mergedPageData.machine}\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M16.7661 9.23364C17.078 9.5455 17.0779 10.0516 16.7661 10.3635L12.5991 14.5305C12.2874 14.842 11.782 14.8418 11.4702 14.5305L7.30322 10.3635C6.99135 10.0516 6.99135 9.54552 7.30322 9.23364C7.615 8.9221 8.1203 8.92219 8.43213 9.23364L12.0347 12.8362L15.6362 9.23364C15.9481 8.92183 16.4543 8.92181 16.7661 9.23364Z\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n </div>\n </div>\n\n {/* Room List */}\n <div\n style={{ maxHeight: '706px', overflow: 'auto' }}\n className=\"rounded-[12px] bg-white border h-[706px] border-[#E4E5E6]\"\n >\n {filteredStudioLocations.length === 0 ? (\n <div className=\"flex items-center justify-center h-[200px] text-[#767880]\">\n {mergedPageData.locationFilter.noStudiosFound}\n </div>\n ) : (\n filteredStudioLocations.map((item) => {\n return (\n <StudioCard\n key={item.id}\n code={item.id}\n name={item?.name}\n availableTime={item?.availableTime || ''}\n address={item?.address}\n city={item?.city}\n state={item?.state}\n zipCode={item?.zipCode}\n euifyMakeModel={item?.euifyMakeModel || ''}\n onSchedule={onSchedule}\n onMouseEnter={() => setHoveredRoomId(item.id)}\n pageData={{\n ...mergedPageData.studioCard,\n noAvailableTime: mergedPageData?.noAvailableTime,\n }}\n />\n )\n })\n )}\n </div>\n\n {/* Location Filter Overlay */}\n <LocationFilter\n locations={studioLocations.map((loc) => ({\n id: loc.id,\n country: loc.country,\n state: loc.state,\n city: loc.city,\n }))}\n visible={showLocationFilter}\n onSelect={handleLocationSelect}\n onClose={() => setShowLocationFilter(false)}\n pageData={mergedPageData.locationFilter}\n />\n </div>\n {googleMapsApiKey && (\n <div className={cn('flex-1 l:!hidden')}>\n <StudioMap\n googleMapsApiKey={googleMapsApiKey}\n locations={filteredStudioLocations}\n hoveredLocationId={hoveredRoomId}\n onSchedule={onSchedule}\n mapHeight=\"794px\"\n pageData={{\n ...mergedPageData.map,\n noAvailableTime: pageData?.noAvailableTime,\n }}\n />\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n\nRoomsList.displayName = 'RoomsList'\n","import type {\n ApiResponse,\n DemoRoom,\n GetDemoRoomsResponse,\n GetTimeslotsResponse,\n Questionnaire,\n CreateBookingRequest,\n Booking,\n GetBookingResponse,\n CancelBookingResponse,\n} from './types'\nimport { ApiError, ApiErrorCode } from './types'\n\nexport interface DemoRoomApiConfig {\n baseUrl: string\n apiKey: string\n locale?: string\n timeout?: number\n}\n\nexport class DemoRoomApiClient {\n private config: DemoRoomApiConfig\n\n constructor(config: DemoRoomApiConfig) {\n this.config = {\n timeout: 30000,\n ...config,\n }\n }\n\n private async request<T>(\n endpoint: string,\n options: RequestInit = {}\n ): Promise<T> {\n const url = `${this.config.baseUrl}${endpoint}`\n\n const headers: Record<string, string> = {\n 'X-API-Key': this.config.apiKey,\n 'Content-Type': 'application/json',\n ...(options.headers as Record<string, string>),\n }\n\n // 添加语言偏好\n if (this.config.locale) {\n headers['Accept-Language'] = this.config.locale\n }\n\n try {\n const controller = new AbortController()\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout)\n\n const response = await fetch(url, {\n ...options,\n headers,\n signal: controller.signal,\n })\n\n clearTimeout(timeoutId)\n\n const data: ApiResponse<T> = await response.json()\n\n if (data.code !== ApiErrorCode.SUCCESS) {\n throw new ApiError(data.code, data.message, data.request_id)\n }\n\n return data.data\n } catch (error) {\n if (error instanceof ApiError) {\n throw error\n }\n\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new ApiError(ApiErrorCode.INTERNAL_ERROR, 'Request timeout')\n }\n throw new ApiError(ApiErrorCode.INTERNAL_ERROR, error.message)\n }\n\n throw new ApiError(ApiErrorCode.INTERNAL_ERROR, 'Unknown error')\n }\n }\n\n /**\n * 获取门店列表\n * @param params.team_code 团队编码\n * @param params.brand_website 品牌站点\n * @param params.locale 语言偏好(可选)\n */\n async getDemoRooms(params: {\n team_code?: string\n brand_website?: string\n locale?: string\n }): Promise<DemoRoom[]> {\n const searchParams = new URLSearchParams()\n\n if (params.team_code) {\n searchParams.append('team_code', params.team_code)\n }\n\n if (params.brand_website) {\n searchParams.append('brand_website', params.brand_website)\n }\n\n if (params.locale) {\n searchParams.append('locale', params.locale)\n }\n\n const response = await this.request<GetDemoRoomsResponse>(\n `/api/v1/store/demorooms?${searchParams.toString()}`\n )\n\n return response.demorooms\n }\n\n /**\n * 获取门店详情\n * @param code 门店编码\n * @param locale 语言偏好(可选)\n */\n async getDemoRoom(code: string, locale?: string): Promise<DemoRoom> {\n const searchParams = new URLSearchParams()\n if (locale) {\n searchParams.append('locale', locale)\n }\n\n const query = searchParams.toString()\n return this.request<DemoRoom>(\n `/api/v1/store/demorooms/${code}${query ? `?${query}` : ''}`\n )\n }\n\n /**\n * 查询门店时段\n * @param code 门店编码\n * @param params.start_date 开始日期 (YYYY-MM-DD)\n * @param params.end_date 结束日期 (YYYY-MM-DD)\n * @param params.timezone 时区(可选)\n */\n async getTimeslots(\n code: string,\n params: {\n start_date: string\n end_date: string\n timezone?: string\n }\n ): Promise<GetTimeslotsResponse> {\n const searchParams = new URLSearchParams({\n start_date: params.start_date,\n end_date: params.end_date,\n })\n\n if (params.timezone) {\n searchParams.append('timezone', params.timezone)\n }\n\n return this.request<GetTimeslotsResponse>(\n `/api/v1/store/demorooms/${code}/timeslots?${searchParams.toString()}`\n )\n }\n\n /**\n * 查询门店问卷\n * @param code 门店编码\n * @param questionnaire_id 问卷ID\n * @param locale 语言偏好(可选)\n */\n async getQuestionnaire(\n code: string,\n questionnaire_id: number,\n locale?: string\n ): Promise<Questionnaire> {\n const searchParams = new URLSearchParams()\n if (locale) {\n searchParams.append('locale', locale)\n }\n\n const query = searchParams.toString()\n return this.request<Questionnaire>(\n `/api/v1/store/demorooms/${code}/questionnaires/${questionnaire_id}${query ? `?${query}` : ''}`\n )\n }\n\n /**\n * 提交预约\n * @param data 预约数据\n */\n async createBooking(data: CreateBookingRequest): Promise<Booking> {\n return this.request<Booking>('/api/v1/store/bookings', {\n method: 'POST',\n body: JSON.stringify(data),\n })\n }\n\n /**\n * 根据 token 获取预约详情(支持多语言)\n * @param token 预约凭证 (cancel_token)\n * @param locale 语言偏好(可选,也可以通过 Accept-Language Header)\n */\n async getBooking(token: string, locale?: string): Promise<Booking> {\n const headers: Record<string, string> = {}\n\n // 如果指定了 locale,通过 Accept-Language Header 传递\n if (locale) {\n headers['Accept-Language'] = locale\n }\n\n const response = await this.request<GetBookingResponse>(\n `/api/v1/store/bookings/${token}`,\n { headers }\n )\n return response.booking\n }\n\n /**\n * 取消预约(支持多语言邮件通知)\n * @param token 预约凭证 (cancel_token)\n * @param locale 语言偏好(可选,用于邮件通知)\n */\n async cancelBooking(token: string, locale?: string): Promise<Booking> {\n const headers: Record<string, string> = {}\n\n // 如果指定了 locale,通过 Accept-Language Header 传递\n if (locale) {\n headers['Accept-Language'] = locale\n }\n\n const response = await this.request<CancelBookingResponse>(\n `/api/v1/store/bookings/${token}/cancel`,\n {\n method: 'POST',\n headers,\n }\n )\n return response.booking\n }\n}\n\n// 创建默认客户端实例的辅助函数\nexport function createDemoRoomApi(config: DemoRoomApiConfig): DemoRoomApiClient {\n return new DemoRoomApiClient(config)\n}\n","import React, { useMemo } from 'react'\nimport { cn } from '@/utils/cn'\nimport { RoomsList } from './components/RoomsList'\nimport { createDemoRoomApi } from '@/api'\nimport type { DemoRoomApiClient } from '@/api'\nimport type { DemoRoomPageData } from './types/pageData'\n\nexport interface DemoRoomProps extends React.HTMLAttributes<HTMLDivElement> {\n layoutClassName?: string\n /**\n * 谷歌地图 API Key\n */\n googleMapsApiKey?: string\n /**\n * API 配置\n */\n apiConfig: {\n baseUrl: string\n apiKey: string\n locale?: string\n }\n /**\n * 团队编码或品牌站点(二选一)\n */\n teamCode?: string\n brandWebsite?: string\n /**\n * Callback when user clicks \"Schedule Now\" button\n * @param demoRoomCode - The demo room code\n */\n onSchedule?: (demoRoomCode: string) => void\n /**\n * 页面可配置数据(文案、图标等)\n */\n pageData?: DemoRoomPageData\n}\n\nexport const DemoRoom: React.FC<DemoRoomProps> = ({\n className,\n layoutClassName,\n googleMapsApiKey,\n apiConfig,\n teamCode,\n brandWebsite,\n onSchedule,\n pageData,\n ...props\n}) => {\n // 创建 API 客户端实例\n const apiClient = useMemo<DemoRoomApiClient>(\n () => createDemoRoomApi(apiConfig),\n [apiConfig]\n )\n\n return (\n <div className={cn(className)} {...props}>\n <RoomsList\n className={layoutClassName}\n googleMapsApiKey={googleMapsApiKey}\n apiClient={apiClient}\n teamCode={teamCode}\n brandWebsite={brandWebsite}\n onSchedule={onSchedule}\n pageData={pageData}\n ></RoomsList>\n </div>\n )\n}\n\nDemoRoom.displayName = 'DemoRoom'\n","import React, { useState, useEffect, useRef, useMemo } from 'react'\nimport { cn } from '@/utils/cn'\nimport type { Question } from '@/api/types'\n\nexport interface QuestionnaireFormProps {\n questions: Question[]\n pageData?: {\n submit?: string\n submitting?: string\n countryCodes?: Array<{ code?: string; country?: string }>\n agrees?: string[]\n emailDescription?: string\n bookingFailed?: string\n }\n selectedTimeslotId?: number | null\n onSubmit?: (responses: Record<string, any>) => void\n loading?: boolean\n className?: string\n error?: { message: string } | null\n}\n\nexport const QuestionnaireForm: React.FC<QuestionnaireFormProps> = ({\n questions,\n onSubmit,\n pageData,\n selectedTimeslotId,\n loading = false,\n className,\n error,\n}) => {\n const [responses, setResponses] = useState<Record<string, any>>({})\n const [errors, setErrors] = useState<Record<string, string>>({})\n const [agreements, setAgreements] = useState<Record<number, boolean>>({})\n const [agreementError, setAgreementError] = useState<string>('')\n const [phoneCountryCodes, setPhoneCountryCodes] = useState<\n Record<string, string>\n >({})\n const [otherInputs, setOtherInputs] = useState<Record<string, string>>({})\n\n // Track previous hasBookedBefore state to detect changes\n const prevHasBookedBeforeRef = useRef<boolean>(false)\n // Track if has_booked_before has been initialized\n const hasBookedBeforeInitialized = useRef<boolean>(false)\n\n // Find the has_booked_before question and get its correct ID\n const hasBookedBeforeQuestion = questions.find(\n (q) => (q.key || q.id) === 'has_booked_before'\n )\n const hasBookedBeforeQuestionId = hasBookedBeforeQuestion\n ? (hasBookedBeforeQuestion.key || hasBookedBeforeQuestion.id || '')\n : 'has_booked_before'\n\n // Check if user has booked before\n const hasBookedBefore = responses[hasBookedBeforeQuestionId] === 'option2'\n\n // Memoize hidden question IDs\n const hiddenQuestionIds = useMemo(() => {\n if (!hasBookedBefore) return []\n // When user has booked before, hide is_default: false questions (detailed questions)\n return questions\n .filter((q) => q.is_default === false)\n .map((q) => q.key || q.id || '')\n }, [hasBookedBefore, questions])\n\n // Filter questions based on has_booked_before selection\n const visibleQuestions = useMemo(() => {\n return questions.filter((question) => {\n // If user has booked before, only show is_default: true questions (basic questions)\n // Hide is_default: false questions (detailed questions)\n if (hasBookedBefore && question.is_default === false) {\n return false\n }\n return true\n })\n }, [questions, hasBookedBefore])\n\n // Initialize has_booked_before with default value (option1 - \"No\")\n useEffect(() => {\n // Only initialize once\n if (hasBookedBeforeInitialized.current) return\n\n if (hasBookedBeforeQuestion && hasBookedBeforeQuestionId) {\n // Set default to option1 (\"No, I've never booked before\")\n setResponses((prev) => {\n // Only set if not already set\n if (!prev[hasBookedBeforeQuestionId]) {\n return {\n ...prev,\n [hasBookedBeforeQuestionId]: 'option1',\n }\n }\n return prev\n })\n hasBookedBeforeInitialized.current = true\n }\n }, [hasBookedBeforeQuestion, hasBookedBeforeQuestionId])\n\n // Clear responses and errors for hidden questions when has_booked_before changes from false to true\n useEffect(() => {\n // Only clear when transitioning from false to true (user selects \"Yes\")\n if (hasBookedBefore && !prevHasBookedBeforeRef.current) {\n if (hiddenQuestionIds.length > 0) {\n setResponses((prev) => {\n const newResponses = { ...prev }\n hiddenQuestionIds.forEach((questionId) => {\n delete newResponses[questionId]\n })\n return newResponses\n })\n\n setErrors((prev) => {\n const newErrors = { ...prev }\n hiddenQuestionIds.forEach((questionId) => {\n delete newErrors[questionId]\n })\n return newErrors\n })\n }\n }\n\n // Update the ref\n prevHasBookedBeforeRef.current = hasBookedBefore\n }, [hasBookedBefore, hiddenQuestionIds])\n\n // 默认区号列表(如果 pageData 中没有提供)\n const defaultCountryCodes = [\n { code: '+1', country: 'US/CA' },\n { code: '+86', country: 'CN' },\n { code: '+44', country: 'UK' },\n { code: '+81', country: 'JP' },\n { code: '+82', country: 'KR' },\n { code: '+65', country: 'SG' },\n { code: '+852', country: 'HK' },\n { code: '+886', country: 'TW' },\n { code: '+61', country: 'AU' },\n { code: '+49', country: 'DE' },\n { code: '+33', country: 'FR' },\n ]\n\n const countryCodes = pageData?.countryCodes || defaultCountryCodes\n\n // 获取问题的唯一标识符,优先使用 key,没有则使用 id\n const getQuestionId = (question: Question): string => {\n return question.key || question.id || ''\n }\n\n const handleChange = (questionId: string, value: any) => {\n setResponses((prev) => ({\n ...prev,\n [questionId]: value,\n }))\n // Clear error when user starts typing\n if (errors[questionId]) {\n setErrors((prev) => {\n const newErrors = { ...prev }\n delete newErrors[questionId]\n return newErrors\n })\n }\n }\n\n const handleEmailBlur = (questionId: string, value: string) => {\n if (!value) return // Skip validation if empty (handled by required check)\n\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n if (!emailRegex.test(value)) {\n setErrors((prev) => ({\n ...prev,\n [questionId]: 'Please enter a valid email address',\n }))\n }\n }\n\n const handleCountryCodeChange = (questionId: string, code: string) => {\n setPhoneCountryCodes((prev) => ({\n ...prev,\n [questionId]: code,\n }))\n }\n\n const handleCheckboxChange = (\n questionId: string,\n optionValue: string,\n checked: boolean\n ) => {\n const currentValues = responses[questionId] || []\n const newValues = checked\n ? [...currentValues, optionValue]\n : currentValues.filter((v: string) => v !== optionValue)\n\n handleChange(questionId, newValues)\n }\n\n const handleAgreementChange = (index: number, checked: boolean) => {\n setAgreements((prev) => ({\n ...prev,\n [index]: checked,\n }))\n // Clear agreement error when user checks any agreement\n if (checked && agreementError) {\n setAgreementError('')\n }\n }\n\n const handleOtherInputChange = (questionId: string, value: string) => {\n setOtherInputs((prev) => ({\n ...prev,\n [questionId]: value,\n }))\n // Update the response to use the \"other\" input value\n handleChange(questionId, value)\n }\n\n const validateForm = (): boolean => {\n const newErrors: Record<string, string> = {}\n\n // Only validate visible questions\n visibleQuestions.forEach((question) => {\n if (question.required) {\n const questionId = getQuestionId(question)\n const value = responses[questionId]\n if (!value || (Array.isArray(value) && value.length === 0)) {\n newErrors[questionId] = 'This field is required'\n }\n }\n })\n\n // Validate agreements\n const agrees = pageData?.agrees || []\n if (agrees.length > 0) {\n const allAgreed = agrees.every(\n (_: any, index: number) => agreements[index]\n )\n if (!allAgreed) {\n setAgreementError(\n 'Please agree to all terms and conditions to continue'\n )\n setErrors(newErrors)\n return false\n }\n }\n\n setErrors(newErrors)\n setAgreementError('')\n return Object.keys(newErrors).length === 0\n }\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault()\n if (validateForm()) {\n // Separate country code and phone number for tel/phone fields\n const finalResponses = { ...responses }\n questions.forEach((question) => {\n if (question.type === 'tel' || question.type === 'phone') {\n const questionId = getQuestionId(question)\n const countryCode = phoneCountryCodes[questionId] || '+1'\n const phoneNumber = responses[questionId]\n if (phoneNumber) {\n // Store phone number without country code\n finalResponses[questionId] = phoneNumber\n // Store country code in a separate field\n // Support both 'phone_code' and 'customer_phone_code' field names\n if (\n questionId === 'phone' ||\n questionId === 'customer_phone_number'\n ) {\n finalResponses['phone_code'] = countryCode\n finalResponses['customer_phone_code'] = countryCode\n }\n }\n }\n })\n onSubmit?.(finalResponses)\n } else {\n // Scroll to first error field\n setTimeout(() => {\n const firstErrorElement = document.querySelector('[data-has-error=\"true\"]')\n if (firstErrorElement) {\n firstErrorElement.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n })\n }\n }, 100)\n }\n }\n\n const renderQuestion = (question: Question) => {\n const questionId = getQuestionId(question)\n const hasError = !!errors[questionId]\n\n switch (question.type) {\n case 'text':\n return (\n <input\n type={question.type}\n value={responses[questionId] || ''}\n onChange={(e) => handleChange(questionId, e.target.value)}\n placeholder={question.placeholder}\n className={cn(\n 'w-full px-4 py-3 rounded-lg border text-base bg-white dark:bg-white dark:text-gray-900',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:border-transparent',\n hasError ? 'border-red-500' : 'border-[#E4E5E6]'\n )}\n />\n )\n\n case 'email':\n return (\n <input\n type=\"email\"\n value={responses[questionId] || ''}\n onChange={(e) => handleChange(questionId, e.target.value)}\n onBlur={(e) => handleEmailBlur(questionId, e.target.value)}\n placeholder={question.placeholder}\n className={cn(\n 'w-full px-4 py-3 rounded-lg border text-base bg-white dark:bg-white dark:text-gray-900',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:border-transparent',\n hasError ? 'border-red-500' : 'border-[#E4E5E6]'\n )}\n />\n )\n\n case 'tel':\n case 'phone':\n return (\n <div className=\"flex gap-2\">\n <div className=\"relative\">\n <select\n value={phoneCountryCodes[questionId] || '+1'}\n onChange={(e) =>\n handleCountryCodeChange(questionId, e.target.value)\n }\n className={cn(\n 'appearance-none pl-3 pr-8 py-3 rounded-lg border text-base',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:border-transparent',\n 'bg-white cursor-pointer w-[80px]',\n 'dark:bg-white dark:text-gray-900',\n hasError ? 'border-red-500' : 'border-[#E4E5E6]'\n )}\n >\n {countryCodes.map((item) => (\n <option key={item.code} value={item.code}>\n {item.code}\n </option>\n ))}\n </select>\n <div className=\"absolute right-2 top-1/2 -translate-y-1/2 pointer-events-none\">\n <svg\n width=\"12\"\n height=\"8\"\n viewBox=\"0 0 12 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1 1.5L6 6.5L11 1.5\"\n stroke=\"#9CA3AF\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n <input\n type=\"tel\"\n value={responses[questionId] || ''}\n onChange={(e) => handleChange(questionId, e.target.value)}\n placeholder={question.placeholder}\n className={cn(\n 'flex-1 px-4 py-3 rounded-lg border text-base bg-white dark:bg-white dark:text-gray-900',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:border-transparent',\n hasError ? 'border-red-500' : 'border-[#E4E5E6]'\n )}\n />\n </div>\n )\n\n case 'textarea':\n return (\n <textarea\n value={responses[questionId] || ''}\n onChange={(e) => handleChange(questionId, e.target.value)}\n placeholder={question.placeholder}\n rows={4}\n className={cn(\n 'w-full px-4 py-3 rounded-lg border text-base resize-none bg-white',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:border-transparent',\n 'dark:bg-white dark:text-gray-900',\n hasError ? 'border-red-500' : 'border-[#E4E5E6]'\n )}\n />\n )\n\n case 'radio':\n return (\n <div className=\"space-y-3\">\n {question?.options?.map((option) => (\n <label\n key={option.value || option.label}\n className=\"flex items-center gap-3 cursor-pointer group\"\n >\n <input\n type=\"radio\"\n name={questionId}\n value={option.value || option.label}\n checked={\n responses[questionId] === (option.value || option.label)\n }\n onChange={(e) => handleChange(questionId, e.target.value)}\n className=\"w-5 h-5 appearance-none cursor-pointer flex-shrink-0\"\n style={{\n backgroundImage: responses[questionId] === (option.value || option.label)\n ? 'url(https://cdn.shopify.com/s/files/1/0569/5147/2268/files/SelectBox.png?v=1769507941)'\n : 'url(https://cdn.shopify.com/s/files/1/0569/5147/2268/files/Frame_2121235232_2.png?v=1769507995)',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center',\n }}\n />\n <span className=\"text-base text-gray-900 dark:text-gray-900 font-bold group-hover:text-[#3ADB67] transition-colors\">\n {option.label}\n </span>\n </label>\n ))}\n </div>\n )\n\n case 'radio_with_other': {\n const isOtherSelected =\n responses[questionId] === '__other__' ||\n (responses[questionId] &&\n !question?.options?.find(\n (opt) => (opt.value || opt.label) === responses[questionId]\n ))\n\n return (\n <div className=\"space-y-3\">\n {question?.options?.map((option) => {\n const optionValue = option.value || option.label\n const isOtherOption = optionValue === '__other__'\n\n return (\n <div key={optionValue} className=\"space-y-2\">\n <label className=\"flex items-center gap-3 cursor-pointer group\">\n <input\n type=\"radio\"\n name={questionId}\n value={optionValue}\n checked={\n isOtherOption\n ? isOtherSelected\n : responses[questionId] === optionValue\n }\n onChange={(e) => {\n if (isOtherOption) {\n handleChange(questionId, '__other__')\n // Clear the other input when selecting the __other__ option\n setOtherInputs((prev) => ({\n ...prev,\n [questionId]: '',\n }))\n } else {\n handleChange(questionId, e.target.value)\n }\n }}\n className=\"w-5 h-5 appearance-none cursor-pointer flex-shrink-0\"\n style={{\n backgroundImage: (isOtherOption ? isOtherSelected : responses[questionId] === optionValue)\n ? 'url(https://cdn.shopify.com/s/files/1/0569/5147/2268/files/SelectBox.png?v=1769507941)'\n : 'url(https://cdn.shopify.com/s/files/1/0569/5147/2268/files/Frame_2121235232_2.png?v=1769507995)',\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center',\n }}\n />\n <span className=\"text-base text-gray-900 dark:text-gray-900 font-bold group-hover:text-[#3ADB67] transition-colors\">\n {option.label}\n </span>\n </label>\n\n {/* Show input field when __other__ option is selected */}\n {isOtherOption && isOtherSelected && (\n <input\n type=\"text\"\n value={otherInputs[questionId] || ''}\n onChange={(e) =>\n handleOtherInputChange(questionId, e.target.value)\n }\n placeholder={question.placeholder || 'Please specify...'}\n className={cn(\n 'w-full px-4 py-3 rounded-lg border text-base bg-white dark:bg-white dark:text-gray-900',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:border-transparent',\n hasError ? 'border-red-500' : 'border-[#E4E5E6]'\n )}\n />\n )}\n </div>\n )\n })}\n </div>\n )\n }\n\n case 'checkbox':\n return (\n <div className=\"space-y-3\">\n {question?.options?.map((option) => {\n const optionValue = option.value || option.label\n const isChecked = (responses[questionId] || []).includes(\n optionValue\n )\n\n return (\n <label\n key={optionValue}\n className=\"flex items-center gap-3 cursor-pointer group\"\n >\n <input\n type=\"checkbox\"\n checked={isChecked}\n onChange={(e) =>\n handleCheckboxChange(\n questionId,\n optionValue,\n e.target.checked\n )\n }\n className=\"w-5 h-5 text-[#3ADB67] focus:ring-[#3ADB67] focus:ring-2 rounded\"\n style={{\n accentColor: '#3ADB67',\n }}\n />\n <span className=\"text-base text-gray-900 dark:text-gray-900 font-bold group-hover:text-[#3ADB67] transition-colors\">\n {option.label}\n </span>\n </label>\n )\n })}\n </div>\n )\n\n case 'select': {\n // Auto-select the first option if there's only one option and no value is set\n const currentValue = responses[questionId]\n const hasOnlyOneOption = !!question?.options?.length\n const defaultValue = hasOnlyOneOption && !currentValue && question.options?.[0]\n ? (question.options[0].value || question.options[0].label)\n : currentValue || ''\n\n // Set the default value if needed\n if (hasOnlyOneOption && !currentValue && question.options?.[0]) {\n handleChange(questionId, defaultValue)\n }\n\n return (\n <select\n value={defaultValue}\n onChange={(e) => handleChange(questionId, e.target.value)}\n className={cn(\n 'w-full px-4 py-3 rounded-lg border text-base bg-white dark:bg-white dark:text-gray-900',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:border-transparent',\n 'cursor-pointer',\n hasError ? 'border-red-500' : 'border-[#E4E5E6]'\n )}\n >\n {/* <option value=\"\">\n {question.placeholder || 'Please select...'}\n </option> */}\n {question.options?.map((option) => (\n <option\n key={option.value || option.label}\n value={option.value || option.label}\n >\n {option.label}\n </option>\n ))}\n </select>\n )\n }\n\n default:\n return null\n }\n }\n\n return (\n <div className=\"pb-[80px] light\">\n {/* 仅在有问题时显示问卷表单区域 */}\n {visibleQuestions && visibleQuestions.length > 0 && (\n <div className=\"bg-white rounded-[12px] border border-[#E4E5E6] p-8 dark:bg-white dark:border-[#E4E5E6] l:p-4\">\n <form onSubmit={handleSubmit} className={cn('space-y-6', className)}>\n {visibleQuestions.map((question) => {\n const questionId = getQuestionId(question)\n const hasError = !!errors[questionId]\n return (\n <div\n key={questionId}\n className=\"space-y-2\"\n data-has-error={hasError ? 'true' : 'false'}\n >\n <label className=\"block\">\n <span className=\"text-base font-bold text-gray-900 dark:text-gray-900\">\n {question.label}\n {question.required && (\n <span className=\"text-red-500 ml-1\">*</span>\n )}\n </span>\n {question.description && (\n <span className=\"block text-sm text-gray-600 dark:text-gray-600 font-bold mt-1\">\n {question.description}\n </span>\n )}\n {question.type === 'email' &&\n questionId === 'email' &&\n pageData?.emailDescription && (\n <span className=\"block text-sm text-gray-600 dark:text-gray-600 font-bold mt-1\">\n {pageData.emailDescription}\n </span>\n )}\n </label>\n\n {renderQuestion(question)}\n\n {question.hint && !errors[questionId] && (\n <p className=\"text-sm text-gray-500 dark:text-gray-500 font-bold\">\n {question.hint}\n </p>\n )}\n\n {errors[questionId] && (\n <p\n className=\"text-sm font-bold\"\n style={{ color: '#FF4D4D' }}\n >\n {errors[questionId]}\n </p>\n )}\n </div>\n )\n })}\n </form>\n </div>\n )}\n\n {!!selectedTimeslotId && (\n <div className=\"flex flex-col items-center justify-center\">\n {/* Agreements Section */}\n {pageData?.agrees && pageData.agrees.length > 0 && (\n <div\n className=\"space-y-4 mt-8\"\n data-has-error={agreementError ? 'true' : 'false'}\n >\n {pageData.agrees.map((agreeContent: string, index: number) => (\n <div key={index} className=\"flex items-center gap-3\">\n <input\n type=\"checkbox\"\n id={`agreement-${index}`}\n checked={agreements[index] || false}\n onChange={(e) =>\n handleAgreementChange(index, e.target.checked)\n }\n className=\"w-5 h-5 rounded text-[#3ADB67] focus:ring-[#3ADB67] cursor-pointer flex-shrink-0\"\n style={{\n accentColor: '#3ADB67',\n }}\n />\n <label\n htmlFor={`agreement-${index}`}\n className=\"text-sm text-gray-700 dark:text-gray-700 font-bold cursor-pointer select-none flex-1 [&_a]:underline [&_a]:text-blue-600 [&_a:hover]:text-blue-700\"\n dangerouslySetInnerHTML={{ __html: agreeContent }}\n aria-label={`Agreement ${index + 1}`}\n />\n </div>\n ))}\n {agreementError && (\n <p\n className=\"text-sm font-bold mt-2\"\n style={{ color: '#FF4D4D' }}\n >\n {agreementError}\n </p>\n )}\n </div>\n )}\n <button\n type=\"submit\"\n disabled={loading}\n onClick={handleSubmit}\n className={cn(\n 'w-fit mt-6 px-6 py-4 rounded-full',\n 'bg-[#080A0F] text-white font-bold text-base',\n 'hover:bg-[#2FC257] transition-colors',\n 'focus:outline-none focus:ring-2 focus:ring-[#3ADB67] focus:ring-offset-2',\n 'disabled:opacity-50 disabled:cursor-not-allowed'\n )}\n >\n {loading\n ? pageData?.submitting || 'Submitting...'\n : pageData?.submit || 'Submit Booking'}\n </button>\n\n {/* Booking Error Message */}\n {error && (\n <div className=\"text-center w-full p-4\">\n <p className=\"text-[#FF4D4D] font-bold\">\n {error.message}\n </p>\n </div>\n )}\n </div>\n )}\n </div>\n )\n}\n","import React, { useState, useMemo, useEffect } from 'react'\nimport dayjs from 'dayjs'\n\nimport 'dayjs/locale/zh-cn'\n\nimport { Calendar, Select, theme, ConfigProvider } from 'antd'\nimport type { Dayjs } from 'dayjs'\nimport dayLocaleData from 'dayjs/plugin/localeData'\nimport weekday from 'dayjs/plugin/weekday'\nimport weekOfYear from 'dayjs/plugin/weekOfYear'\nimport timezone from 'dayjs/plugin/timezone'\nimport utc from 'dayjs/plugin/utc'\nimport {\n useTimeslots,\n useDemoRoom,\n useQuestionnaire,\n useCreateBooking,\n} from '@/api/hooks'\nimport type { DemoRoomApiClient } from '@/api/client'\nimport type { Timeslot } from '@/api/types'\nimport { QuestionnaireForm } from './QuestionnaireForm'\n\ndayjs.extend(dayLocaleData)\ndayjs.extend(weekday)\ndayjs.extend(weekOfYear)\ndayjs.extend(utc)\ndayjs.extend(timezone)\n\nexport interface DateTimePickerProps {\n apiClient: DemoRoomApiClient\n demoRoomCode?: string\n timezone?: string\n pageData?: {\n scheduleYourVisit?: string\n timeSlot?: string\n loadingTimeSlots?: string\n failedToLoadTimeSlots?: string\n noAvailableTimeSlots?: string\n full?: string\n spotsLeft?: string\n fillOutForm?: string\n loadingQuestionnaire?: string\n bookingFailed?: string\n submit?: string\n submitting?: string\n agrees?: string[]\n timezone?: string\n }\n locale?: string\n onBookingSuccess?: (bookingData: string) => void\n onQuestionnaireSubmit?: (\n responses: Record<string, any>\n ) => void | Promise<void>\n}\n\nconst DateTimePicker: React.FC<DateTimePickerProps> = ({\n apiClient,\n demoRoomCode,\n timezone,\n pageData = {\n scheduleYourVisit: 'Schedule Your Visit',\n timeSlot: 'Time Slot',\n loadingTimeSlots: 'Loading time slots...',\n failedToLoadTimeSlots: 'Failed to load time slots',\n noAvailableTimeSlots: 'No available time slots for this date',\n full: 'Full',\n spotsLeft: 'spots left',\n fillOutForm: 'Fill out Form',\n loadingQuestionnaire: 'Loading questionnaire...',\n bookingFailed: 'Booking failed',\n },\n locale,\n onBookingSuccess,\n onQuestionnaireSubmit,\n}) => {\n const { token } = theme.useToken()\n const [selectedDate, setSelectedDate] = useState<Dayjs | null>(null)\n const [calendarValue, setCalendarValue] = useState<Dayjs>(dayjs()) // 日历显示的月份\n const [selectedTimeslotId, setSelectedTimeslotId] = useState<number | null>(\n null\n )\n const [isInitialized, setIsInitialized] = useState(false)\n\n // Use booking creation hook\n const {\n createBooking,\n loading: bookingLoading,\n error: bookingError,\n } = useCreateBooking(apiClient)\n\n // Fetch demo room details to get questionnaire_id\n const { data: demoRoom } = useDemoRoom(\n apiClient,\n demoRoomCode || '',\n locale,\n { enabled: !!demoRoomCode }\n )\n\n // Fetch questionnaire if available\n const { data: questionnaire, loading: questionnaireLoading } =\n useQuestionnaire(\n apiClient,\n demoRoomCode || '',\n demoRoom?.questionnaire_id,\n locale,\n { enabled: !!demoRoomCode && !!demoRoom?.questionnaire_id }\n )\n\n // 查询当月时段 - 使用 calendarValue 作为查询基准\n const startDate = calendarValue.startOf('month').format('YYYY-MM-DD')\n const endDate = calendarValue.endOf('month').format('YYYY-MM-DD')\n\n const {\n data: timeslotsData,\n loading: timeslotsLoading,\n error: timeslotsError,\n } = useTimeslots(\n apiClient,\n demoRoomCode || '',\n {\n start_date: startDate,\n end_date: endDate,\n timezone,\n },\n { enabled: !!demoRoomCode }\n )\n\n // 过滤出选中日期的时段\n const dayTimeslots = useMemo<Timeslot[]>(() => {\n if (!timeslotsData?.timeslots || !selectedDate) return []\n\n const tz = demoRoom?.timezone || timezone\n const selectedDateStr = selectedDate.format('YYYY-MM-DD')\n return timeslotsData.timeslots.filter((slot) => {\n const slotDate = tz\n ? dayjs(slot.start_time).tz(tz).format('YYYY-MM-DD')\n : dayjs(slot.start_time).format('YYYY-MM-DD')\n return slotDate === selectedDateStr\n })\n }, [timeslotsData, selectedDate, demoRoom?.timezone, timezone])\n\n // 获取所有有可用时段的日期\n const availableDates = useMemo(() => {\n if (!timeslotsData?.timeslots) return new Set<string>()\n\n const tz = demoRoom?.timezone || timezone\n const dates = new Set<string>()\n timeslotsData.timeslots.forEach((slot) => {\n if (slot.status === 'available') {\n const dateStr = tz\n ? dayjs(slot.start_time).tz(tz).format('YYYY-MM-DD')\n : dayjs(slot.start_time).format('YYYY-MM-DD')\n dates.add(dateStr)\n }\n })\n return dates\n }, [timeslotsData, demoRoom?.timezone, timezone])\n\n // 自动选择最近的可用日期和时段(初始化时)\n useEffect(() => {\n if (!timeslotsData?.timeslots || isInitialized) return\n\n const tz = demoRoom?.timezone || timezone\n const now = tz ? dayjs().tz(tz) : dayjs()\n\n // 查找所有可用时段\n const availableTimeslots = timeslotsData.timeslots.filter((slot) => {\n const slotTime = tz\n ? dayjs(slot.start_time).tz(tz)\n : dayjs(slot.start_time)\n return slot.status === 'available' && slotTime.isAfter(now)\n })\n\n if (availableTimeslots.length > 0) {\n // 按时间排序,找到最近的时段\n const sortedSlots = [...availableTimeslots].sort((a, b) => {\n const timeA = tz ? dayjs(a.start_time).tz(tz) : dayjs(a.start_time)\n const timeB = tz ? dayjs(b.start_time).tz(tz) : dayjs(b.start_time)\n return timeA.unix() - timeB.unix()\n })\n\n const nearestSlot = sortedSlots[0]\n const nearestDate = tz\n ? dayjs(nearestSlot.start_time).tz(tz)\n : dayjs(nearestSlot.start_time)\n\n // 设置选中的日期和时段\n setSelectedDate(nearestDate)\n setCalendarValue(nearestDate) // 同时更新日历视图\n setSelectedTimeslotId(nearestSlot.id)\n setIsInitialized(true)\n } else if (!selectedDate) {\n // 如果没有可用时段,默认选择今天\n setSelectedDate(now)\n setCalendarValue(now) // 同时更新日历视图\n setIsInitialized(true)\n }\n }, [timeslotsData, isInitialized, selectedDate, demoRoom?.timezone, timezone])\n\n // 切换月份时自动选择当月第一个可预约日期\n useEffect(() => {\n if (!timeslotsData?.timeslots || !isInitialized) return\n\n // 如果选中日期在当前查看的月份内,保持选中状态,不自动切换\n if (selectedDate && selectedDate.isSame(calendarValue, 'month')) {\n return\n }\n\n // 获取当前查看月份的所有可用时段\n const tz = demoRoom?.timezone || timezone\n const currentMonthStart = calendarValue.startOf('month')\n const currentMonthEnd = calendarValue.endOf('month')\n const now = tz ? dayjs().tz(tz) : dayjs()\n\n const availableTimeslots = timeslotsData.timeslots.filter((slot) => {\n const slotDate = tz\n ? dayjs(slot.start_time).tz(tz)\n : dayjs(slot.start_time)\n return (\n slot.status === 'available' &&\n slotDate.isAfter(now) &&\n (slotDate.isAfter(currentMonthStart) ||\n slotDate.isSame(currentMonthStart, 'day')) &&\n (slotDate.isBefore(currentMonthEnd) ||\n slotDate.isSame(currentMonthEnd, 'day'))\n )\n })\n\n if (availableTimeslots.length > 0) {\n // 按时间排序,找到当月第一个可用时段\n const sortedSlots = [...availableTimeslots].sort((a, b) => {\n const timeA = tz ? dayjs(a.start_time).tz(tz) : dayjs(a.start_time)\n const timeB = tz ? dayjs(b.start_time).tz(tz) : dayjs(b.start_time)\n return timeA.unix() - timeB.unix()\n })\n\n const firstSlot = sortedSlots[0]\n const firstDate = tz\n ? dayjs(firstSlot.start_time).tz(tz)\n : dayjs(firstSlot.start_time)\n\n // 选中日期不在当前月份时,自动切换到该月第一个可用日期\n setSelectedDate(firstDate)\n setSelectedTimeslotId(firstSlot.id)\n }\n }, [\n calendarValue,\n timeslotsData,\n isInitialized,\n selectedDate,\n demoRoom?.timezone,\n timezone,\n ])\n\n // 格式化时段显示 - 使用 demoRoom 的时区\n const formatTimeslot = (slot: Timeslot) => {\n const tz = demoRoom?.timezone || timezone\n const start = tz\n ? dayjs(slot.start_time).tz(tz).format('h:mm A')\n : dayjs(slot.start_time).format('h:mm A')\n const end = tz\n ? dayjs(slot.end_time).tz(tz).format('h:mm A')\n : dayjs(slot.end_time).format('h:mm A')\n return `${start} - ${end}`\n }\n\n const wrapperStyle: React.CSSProperties = {\n background: '#fff',\n border: `1px solid ${token.colorBorderSecondary}`,\n borderRadius: 16,\n }\n\n return (\n <div>\n <div className=\"text-[48px] l:text-[32px] py-[64px] l:py-[24px] l:pt-[64px] font-bold text-center\">\n {pageData.scheduleYourVisit}\n </div>\n <div className=\"flex gap-4 l:flex-col\">\n <ConfigProvider\n theme={{\n token: {\n colorPrimary: '#3ADB67',\n },\n components: {\n Calendar: {\n fullBg: '#fff',\n fullPanelBg: '#fff',\n itemActiveBg: '#3ADB67',\n },\n },\n }}\n >\n <div\n style={wrapperStyle}\n className=\"calendar-custom-cell w-[calc(824/1920*100vw)] min-l:max-w-[824px] l:w-full\"\n >\n <style>{`\n .calendar-custom-cell {\n border-radius: 16px !important;\n overflow: hidden;\n padding: 0 24px 16px 24px !important;\n }\n .calendar-custom-cell,\n .calendar-custom-cell *,\n .calendar-custom-cell .ant-picker-panel,\n .calendar-custom-cell .ant-picker-calendar,\n .calendar-custom-cell .ant-picker-content,\n .calendar-custom-cell .ant-picker-cell,\n .calendar-custom-cell .ant-picker-calendar-date-value {\n font-family: 'MontForAnker' !important;\n }\n .calendar-custom-cell .ant-picker-cell {\n padding: 6px !important;\n text-align: center !important;\n }\n .calendar-custom-cell .ant-picker-cell .ant-picker-cell-inner {\n margin: 0 auto !important;\n }\n .calendar-custom-cell .ant-picker-cell-inner {\n width: 38px !important;\n height: 38px !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n border-radius: 8px !important;\n border: 1px solid #E4E5E6 !important;\n aspect-ratio: 1 / 1 !important;\n }\n .calendar-custom-cell .ant-picker-calendar-date-value {\n line-height: 38px !important;\n font-weight: 700 !important;\n font-size: 14px !important;\n }\n @media (min-width: 1024px) and (max-width: 1919px) {\n .calendar-custom-cell .ant-picker-cell-inner {\n width: 54px !important;\n height: 54px !important;\n border-radius: 12px !important;\n }\n .calendar-custom-cell .ant-picker-calendar-date-value {\n line-height: 54px !important;\n font-weight: 700 !important;\n font-size: 20px !important;\n }\n }\n @media (min-width: 1920px) {\n .calendar-custom-cell .ant-picker-cell-inner {\n width: 100px !important;\n height: 100px !important;\n border-radius: 20px !important;\n }\n .calendar-custom-cell .ant-picker-calendar-date-value {\n line-height: 100px !important;\n font-weight: 700 !important;\n font-size: 20px !important;\n }\n }\n .calendar-custom-cell .ant-picker-cell-selected .ant-picker-cell-inner,\n .calendar-custom-cell .ant-picker-cell-selected:not(.ant-picker-cell-disabled) .ant-picker-cell-inner {\n background-color: #3ADB67 !important;\n color: #080A0F !important;\n border-color: #3ADB67 !important;\n }\n .calendar-custom-cell .ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner {\n background-color: #3ADB67 !important;\n color: #080A0F !important;\n }\n .calendar-custom-cell .ant-picker-cell-today .ant-picker-cell-inner {\n border-color: #3ADB67 !important;\n border-radius: 8px !important;\n }\n @media (min-width: 1024px) and (max-width: 1919px) {\n .calendar-custom-cell .ant-picker-cell-today .ant-picker-cell-inner {\n border-radius: 12px !important;\n }\n }\n @media (min-width: 1920px) {\n .calendar-custom-cell .ant-picker-cell-today .ant-picker-cell-inner {\n border-radius: 20px !important;\n }\n }\n .calendar-custom-cell .ant-picker-cell-today .ant-picker-cell-inner::before {\n display: none !important;\n }\n .calendar-custom-cell .ant-picker-content {\n width: 100% !important;\n }\n .calendar-custom-cell .ant-picker-content thead tr th {\n line-height: 48px !important;\n font-weight: 700 !important;\n font-size: 18px !important;\n }\n .calendar-custom-cell .ant-picker-cell-disabled .ant-picker-cell-inner {\n background-color: #F5F5F5 !important;\n color: #767880 !important;\n border: none !important;\n cursor: not-allowed !important;\n box-shadow: none !important;\n }\n .calendar-custom-cell .ant-picker-cell-disabled:hover .ant-picker-cell-inner {\n background-color: #F5F5F5 !important;\n border: none !important;\n box-shadow: none !important;\n }\n .calendar-custom-cell .ant-picker-cell-disabled::before {\n display: none !important;\n }\n .calendar-custom-cell .ant-picker-cell-disabled::after {\n display: none !important;\n }\n `}</style>\n <Calendar\n fullscreen={false}\n value={calendarValue}\n onSelect={(date) => {\n // 点击日期时更新选中的日期和日历视图\n setSelectedDate(date)\n setCalendarValue(date)\n }}\n onPanelChange={(date) => {\n // 切换月份/年份时只更新日历视图,不更新选中日期\n setCalendarValue(date)\n }}\n disabledDate={(current) => {\n if (!current) return false\n\n // 当天日期永远不禁用\n if (current.isSame(dayjs(), 'day')) return false\n\n // 禁用比今天早的日期\n if (current.isBefore(dayjs(), 'day')) return true\n\n // 禁用没有可用时段的日期\n const dateStr = current.format('YYYY-MM-DD')\n return !availableDates.has(dateStr)\n }}\n fullCellRender={(date) => {\n const isSelected =\n selectedDate && date.isSame(selectedDate, 'day')\n const isToday = date.isSame(dayjs(), 'day')\n const dateStr = date.format('YYYY-MM-DD')\n // 当天日期永远不禁用\n const isDisabled =\n !isToday &&\n (date.isBefore(dayjs(), 'day') ||\n !availableDates.has(dateStr))\n\n return (\n <div\n className={`ant-picker-cell-inner ${\n isSelected ? 'ant-picker-cell-inner-selected' : ''\n } ${isToday ? 'ant-picker-cell-inner-today' : ''}`}\n style={{\n backgroundColor: isSelected ? '#3ADB67' : undefined,\n color: isSelected\n ? '#080A0F'\n : isDisabled\n ? '#767880'\n : undefined,\n borderColor: isSelected\n ? '#3ADB67'\n : isToday\n ? '#3ADB67'\n : undefined,\n }}\n >\n <div className=\"ant-picker-calendar-date-value\">\n {date.date()}\n </div>\n </div>\n )\n }}\n headerRender={({ value, onChange }) => {\n const year = value.year()\n const month = value.month()\n\n const yearOptions = Array.from({ length: 20 }, (_, i) => {\n const label = year - 10 + i\n return { label, value: label }\n })\n\n const monthOptions = value\n .localeData()\n .months()\n .map((label, index) => ({\n label,\n value: index,\n }))\n\n return (\n <div className=\"flex items-center justify-between py-3 l:pb-[0px]\">\n {/* Month and Year */}\n <div className=\"flex items-center gap-3\">\n <Select\n value={month}\n options={monthOptions}\n onChange={(newMonth) => {\n const now = value.clone().month(newMonth)\n onChange(now)\n }}\n variant=\"borderless\"\n className=\"text-[32px] l:text-[20px] font-bold\"\n popupMatchSelectWidth={false}\n suffixIcon={null}\n style={{\n fontWeight: 700,\n }}\n />\n <div className=\"text-[20px] text-[#E4E5E6]\">/</div>\n <Select\n value={year}\n options={yearOptions}\n onChange={(newYear) => {\n const now = value.clone().year(newYear)\n onChange(now)\n }}\n variant=\"borderless\"\n className=\"text-[32px] l:text-[20px] font-bold\"\n popupMatchSelectWidth={false}\n suffixIcon={null}\n style={{\n fontWeight: 700,\n }}\n />\n </div>\n\n {/* Navigation Buttons */}\n <div className=\"flex items-center gap-2\">\n <button\n onClick={() => {\n const newDate = value.subtract(1, 'month')\n onChange(newDate)\n }}\n className=\"w-10 h-10 flex items-center justify-center hover:bg-gray-100 rounded-lg transition-colors\"\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 16L6 10L12 4\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n <button\n onClick={() => {\n const newDate = value.add(1, 'month')\n onChange(newDate)\n }}\n className=\"w-10 h-10 flex items-center justify-center hover:bg-gray-100 rounded-lg transition-colors\"\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8 4L14 10L8 16\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n )\n }}\n />\n </div>\n </ConfigProvider>\n <div className=\"bg-white p-[24px] rounded-[16px] flex-1\">\n <div className=\"flex justify-between items-center\">\n <div className=\"text-[24px] l:text-[16px]\">{pageData.timeSlot}</div>\n <div className=\"flex text-[18px] l:text-[14px] l:gap-1 gap-2\">\n <button\n onClick={() => {\n if (selectedDate) {\n const newDate = selectedDate.subtract(1, 'day')\n // 确保不会选择到过去的日期\n if (!newDate.isBefore(dayjs(), 'day')) {\n setSelectedDate(newDate)\n setCalendarValue(newDate) // 同时更新日历视图\n }\n }\n }}\n disabled={\n !selectedDate ||\n selectedDate.isSame(dayjs(), 'day') ||\n selectedDate.isBefore(dayjs(), 'day')\n }\n className=\"w-8 h-8 flex items-center justify-center hover:bg-gray-100 rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M14.2929 5.29289C14.6834 4.90237 15.3164 4.90237 15.707 5.29289C16.0975 5.68342 16.0975 6.31643 15.707 6.70696L10.414 11.9999L15.707 17.2929L15.7753 17.3691C16.0957 17.7618 16.0731 18.3408 15.707 18.707C15.3408 19.0731 14.7618 19.0957 14.3691 18.7753L14.2929 18.707L8.29289 12.707C7.90237 12.3164 7.90237 11.6834 8.29289 11.2929L14.2929 5.29289Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n </button>\n <div className=\"flex items-center justify-center\">\n {selectedDate ? selectedDate.format('MMMM D') : ''}\n </div>\n <button\n onClick={() => {\n if (selectedDate) {\n const newDate = selectedDate.add(1, 'day')\n setSelectedDate(newDate)\n setCalendarValue(newDate) // 同时更新日历视图\n }\n }}\n disabled={!selectedDate}\n className=\"w-8 h-8 flex items-center justify-center hover:bg-gray-100 rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M8.29289 5.29289C8.68342 4.90237 9.31643 4.90237 9.70696 5.29289L15.707 11.2929C16.0975 11.6834 16.0975 12.3164 15.707 12.707L9.70696 18.707C9.31643 19.0975 8.68342 19.0975 8.29289 18.707C7.90237 18.3164 7.90237 17.6834 8.29289 17.2929L13.5859 11.9999L8.29289 6.70696C7.90237 6.31643 7.90237 5.68342 8.29289 5.29289Z\"\n fill=\"#1D1D1F\"\n />\n </svg>\n </button>\n </div>\n </div>\n <div className=\"grid grid-cols-2 mt-[40px] gap-4 l:mt-[16px] l:flex l:flex-col l:gap-2\">\n {timeslotsLoading ? (\n <div className=\"col-span-2 text-center text-[#767880] py-8\">\n {pageData.loadingTimeSlots}\n </div>\n ) : timeslotsError ? (\n <div className=\"col-span-2 text-center text-red-600 py-8\">\n {pageData.failedToLoadTimeSlots}\n </div>\n ) : dayTimeslots.length === 0 ? (\n <div className=\"col-span-2 text-center text-[#767880] py-8\">\n {pageData.noAvailableTimeSlots}\n </div>\n ) : (\n dayTimeslots.map((slot) => {\n const isAvailable = slot.status === 'available'\n const isFull = slot.status === 'full'\n const isSelected = selectedTimeslotId === slot.id\n\n return (\n <button\n key={slot.id}\n disabled={!isAvailable}\n onClick={() => {\n if (isAvailable) {\n setSelectedTimeslotId(slot.id)\n }\n }}\n className={`\n rounded-[20px] w-full text-[18px] l:gap-2 l:text-[16px] flex items-center justify-center gap-4 h-[76px]\n border text-center transition-colors\n ${\n isSelected\n ? 'border-[#3ADB67] bg-[#3ADB67] cursor-pointer'\n : isAvailable\n ? 'border-[#E4E5E6] hover:border-[#3ADB67] hover:bg-[#3ADB67] cursor-pointer'\n : 'border-[#E4E5E6] bg-[#F5F5F5] text-[#767880] cursor-not-allowed'\n }\n `}\n >\n <div className=\"flex flex-col items-center\">\n <div>{formatTimeslot(slot)}</div>\n {isFull && (\n <div className=\"text-[16px] l:text-[14px] text-[#767880] mt-[2px]\">\n {pageData.full}\n </div>\n )}\n {isAvailable && !isSelected && (\n <div className=\"text-[16px] l:text-[14px] text-[#767880] mt-1\">\n {slot.capacity - slot.booked_count}{' '}\n {pageData.spotsLeft}\n </div>\n )}\n {isAvailable && isSelected && (\n <div className=\"text-[16px] l:text-[14px] mt-1\">\n {slot.capacity - slot.booked_count}{' '}\n {pageData.spotsLeft}\n </div>\n )}\n </div>\n </button>\n )\n })\n )}\n </div>\n {!timeslotsLoading && dayTimeslots?.length > 0 && (\n <div className=\"pt-[24px] text-[#6d6d6F] text-center\">\n {pageData?.timezone?.replace(\n '{{timezone}}',\n demoRoom?.timezone || timezone || ''\n )}\n </div>\n )}\n </div>\n </div>\n\n {/* Questionnaire Section */}\n {true && (\n <div className=\"mt-12\">\n {!!questionnaire?.questions?.length && (\n <div className=\"text-[48px] font-bold text-center mb-8 l:mb-[24px] l:text-[32px] l:text-left\">\n {pageData.fillOutForm}\n </div>\n )}\n\n {questionnaireLoading ? (\n <div className=\"text-center text-[#767880] py-8\">\n {pageData.loadingQuestionnaire}\n </div>\n ) : (\n <QuestionnaireForm\n questions={questionnaire?.questions || []}\n loading={bookingLoading}\n pageData={pageData}\n selectedTimeslotId={selectedTimeslotId}\n error={bookingError}\n onSubmit={async (responses) => {\n // Call onQuestionnaireSubmit callback if provided (for subscription etc.)\n if (onQuestionnaireSubmit) {\n await onQuestionnaireSubmit(responses)\n }\n\n // Create booking with questionnaire responses\n try {\n // Extract customer info from questionnaire responses\n // Support both 'name'/'email'/'phone' and 'customer_name'/'customer_email'/'customer_phone_number'\n const customerName =\n responses.name || responses.customer_name || ''\n const customerEmail =\n responses.email || responses.customer_email || ''\n const customerPhone =\n responses.phone || responses.customer_phone_number || ''\n const customerPhoneCode =\n responses.phone_code ||\n responses.customer_phone_code ||\n '+1'\n\n // Extract has_booked_before and convert to number\n // option2 = \"Yes, I've booked before\" -> 1\n // option1 or other = \"No\" or not answered -> 0\n const hasBookedBefore = responses.has_booked_before === 'option2' ? 1 : 0\n\n if (selectedTimeslotId) {\n const result = await createBooking({\n demoroom_code: demoRoomCode!,\n timeslot_id: selectedTimeslotId!,\n questionnaire_id: questionnaire?.id,\n questionnaire_response: responses,\n customer_name: customerName,\n customer_email: customerEmail,\n customer_phone_code: customerPhoneCode,\n customer_phone_number: customerPhone,\n has_booked_before: hasBookedBefore,\n })\n\n // Call onBookingSuccess callback if booking was successful\n if (result && onBookingSuccess) {\n onBookingSuccess(result?.cancel_token)\n }\n }\n } catch (error) {\n console.error('Booking creation failed:', error)\n }\n }}\n />\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport default DateTimePicker\n","/**\n * SSR Window 5.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2025, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: June 27, 2025\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target = {}, src = {}) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes = '') {\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector = '') {\n const window = getWindow();\n const children = [...element.children];\n if (window.HTMLSlotElement && element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOfSlot(el, slot) {\n // Breadth-first search through all parent's children and assigned elements\n const elementsQueue = [slot];\n while (elementsQueue.length > 0) {\n const elementToCheck = elementsQueue.shift();\n if (el === elementToCheck) {\n return true;\n }\n elementsQueue.push(...elementToCheck.children, ...(elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : []), ...(elementToCheck.assignedElements ? elementToCheck.assignedElements() : []));\n }\n}\nfunction elementIsChildOf(el, parent) {\n const window = getWindow();\n let isChild = parent.contains(el);\n if (!isChild && window.HTMLSlotElement && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n isChild = children.includes(el);\n if (!isChild) {\n isChild = elementIsChildOfSlot(el, parent);\n }\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes = []) {\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\nfunction setInnerHTML(el, html = '') {\n if (typeof trustedTypes !== 'undefined') {\n el.innerHTML = trustedTypes.createPolicy('html', {\n createHTML: s => s\n }).createHTML(html);\n } else {\n el.innerHTML = html;\n }\n}\n\nexport { getRotateFix as a, setCSSProperty as b, createElement as c, elementParents as d, elementChildren as e, elementOffset as f, getSlideTransformEl as g, now as h, elementOuterSize as i, elementIndex as j, classesToTokens as k, getTranslate as l, makeElementsArray as m, nextTick as n, elementTransitionEnd as o, isObject as p, elementStyle as q, elementNextAll as r, setInnerHTML as s, elementPrevAll as t, animateCSSModeScroll as u, showWarning as v, elementIsChildOf as w, extend as x, deleteProps as y };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { d as elementParents, q as elementStyle, e as elementChildren, b as setCSSProperty, i as elementOuterSize, r as elementNextAll, t as elementPrevAll, l as getTranslate, u as animateCSSModeScroll, n as nextTick, v as showWarning, c as createElement, w as elementIsChildOf, h as now, x as extend, j as elementIndex, y as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad)(?!\\1).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n const swiperSize = swiper.size - offsetBefore - offsetAfter;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween - offsetBefore - offsetAfter;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides[i];\n if (slide) {\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n }\n\n if (isVirtual && params.slidesPerView === 'auto') {\n if (params.virtual.slidesPerViewAutoSlideSize) {\n slideSize = params.virtual.slidesPerViewAutoSlideSize;\n }\n if (slideSize && slide) {\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n } else if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slide.style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slide) {\n slide.style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slide) {\n slide.swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (offsetBefore || 0) + (offsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.find(slideEl => slideEl.column === activeIndex);\n nextSlide = slides.find(slideEl => slideEl.column === activeIndex + 1);\n prevSlide = slides.find(slideEl => slideEl.column === activeIndex - 1);\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.find(slideEl => slideEl.column === activeIndex);\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n } else if (runCallbacks && activeIndex !== previousIndex) {\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index = 0, speed, runCallbacks = true, internal, initial) {\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n const browser = getBrowser();\n const isSafari = browser.isSafari;\n if (isVirtual && !initial && isSafari && swiper.isElement) {\n swiper.virtual.update(false, false, slideIndex);\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index = 0, speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides,\n slidesOffsetBefore,\n slidesOffsetAfter\n } = swiper.params;\n const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (bothDirections && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (bothDirections) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && bothDirections && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = bothDirections ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex).column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n const isFreeMode = params.freeMode && params.freeMode.enabled;\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && (params.cssMode || isFreeMode)) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks = true, internal) {\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.getSlideIndexWhenGrid(swiper.clickedIndex);\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n const isGrid = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n swiper.slideToLoop(realIndex);\n } else if (slideToIndex > (isGrid ? (swiper.slides.length - slidesPerView) / 2 - (swiper.params.grid.rows - 1) : swiper.slides.length - slidesPerView)) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex, initial) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const clearBlankSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideBlankClass}`);\n slides.forEach(el => {\n el.remove();\n });\n if (slides.length > 0) {\n swiper.recalcSlides();\n swiper.updateSlides();\n }\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (params.loopAddBlankSlides && (params.slidesPerGroup > 1 || gridEnabled)) {\n clearBlankSlides();\n }\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n const bothDirections = params.centeredSlides || !!params.slidesOffsetBefore || !!params.slidesOffsetAfter;\n swiper.loopFix({\n slideRealIndex,\n direction: bothDirections ? undefined : 'next',\n initial\n });\n}\n\nfunction loopFix({\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n initial,\n byController,\n byMousewheel\n} = {}) {\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides,\n slidesOffsetBefore,\n slidesOffsetAfter,\n initialSlide\n } = params;\n const bothDirections = centeredSlides || !!slidesOffsetBefore || !!slidesOffsetAfter;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!bothDirections && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (bothDirections && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (bothDirections && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = bothDirections ? Math.max(slidesPerGroup, Math.ceil(slidesPerView / 2)) : slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !bothDirections;\n let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.find(el => el.classList.contains(params.slideActiveClass)));\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (bothDirections && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n if (isInitialOverflow) {\n slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);\n }\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (swiper.params.effect === 'cards' && slides.length < slidesPerView + loopedSlides * 2) {\n if (appendSlidesIndexes.includes(activeSlideIndex)) {\n appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);\n }\n if (prependSlidesIndexes.includes(activeSlideIndex)) {\n prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {\n return;\n } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].find(t => t.identifier === data.touchId);\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n const document = getDocument();\n\n // Get breakpoint for window/container width and update parameters\n const breakpointsBase = params.breakpointsBase === 'window' || !params.breakpointsBase ? params.breakpointsBase : 'container';\n const breakpointContainer = ['window', 'container'].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document.querySelector(params.breakpointsBase);\n const breakpoint = swiper.getBreakpoint(breakpoints, breakpointsBase, breakpointContainer);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.find(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index));\n }\n getSlideIndexWhenGrid(index) {\n if (this.grid && this.params.grid && this.params.grid.rows > 1) {\n if (this.params.grid.fill === 'column') {\n index = Math.floor(index / this.params.grid.rows);\n } else if (this.params.grid.fill === 'row') {\n index = index % Math.ceil(this.slides.length / this.params.grid.rows);\n }\n }\n return index;\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate(undefined, true);\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { s as setInnerHTML } from './utils.mjs';\n\n/* underscore in name -> watch for changes */\nconst paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control'];\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__;\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params = {}) {\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params = {}) {\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params = {}) {\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames = '') {\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName = '') {\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className = '') {\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\n\nfunction updateSwiper({\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n}) {\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && !passedParams.thumbs.swiper.destroyed && currentParams.thumbs && (!currentParams.thumbs.swiper || currentParams.thumbs.swiper.destroyed)) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n Object.assign(currentParams[key], passedParams[key]);\n if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) {\n destroyModule(key);\n }\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) {\n if (slides) virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n paginationEl.part.add('pagination');\n swiper.el.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n scrollbarEl.part.add('scrollbar');\n swiper.el.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n setInnerHTML(nextEl, swiper.navigation.arrowSvg);\n nextEl.part.add('button-next');\n swiper.el.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n setInnerHTML(prevEl, swiper.navigation.arrowSvg);\n prevEl.part.add('button-prev');\n swiper.el.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\n\nexport { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w };\n","import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs';\nimport { d as defaults } from './swiper-core.mjs';\n\nfunction getParams(obj = {}, splitEvents = true) {\n const params = {\n on: {}\n };\n const events = {};\n const passedParams = {};\n extend(params, defaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map(key => key.replace(/_/, ''));\n const plainObj = Object.assign({}, obj);\n Object.keys(plainObj).forEach(key => {\n if (typeof obj[key] === 'undefined') return;\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n if (splitEvents) {\n events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n } else {\n params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n }\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params,\n passedParams,\n rest,\n events\n };\n}\n\nfunction mountSwiper({\n el,\n nextEl,\n prevEl,\n paginationEl,\n scrollbarEl,\n swiper\n}, swiperParams) {\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n swiper.init(el);\n}\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {\n const keys = [];\n if (!oldParams) return keys;\n const addKey = key => {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n if (children && oldChildren) {\n const oldChildrenKeys = oldChildren.map(getKey);\n const childrenKeys = children.map(getKey);\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\n }\n const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, ''));\n watchParams.forEach(key => {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n const newKeys = Object.keys(swiperParams[key]);\n const oldKeys = Object.keys(oldParams[key]);\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(newKey => {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(oldKey => {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nconst updateOnVirtualData = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n swiper.emit('_virtualUpdated');\n if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {\n swiper.parallax.setTranslate();\n }\n};\n\nexport { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u };\n","/**\n * Swiper React 12.0.3\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2025 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: October 21, 2025\n */\n\nimport React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react';\nimport { S as Swiper$1 } from './shared/swiper-core.mjs';\nimport { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs';\nimport { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction isChildSwiperSlide(child) {\n return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide');\n}\nfunction processChildren(c) {\n const slides = [];\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.children) {\n processChildren(child.props.children).forEach(slide => slides.push(slide));\n }\n });\n return slides;\n}\nfunction getChildren(c) {\n const slides = [];\n const slots = {\n 'container-start': [],\n 'container-end': [],\n 'wrapper-start': [],\n 'wrapper-end': []\n };\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.slot && slots[child.props.slot]) {\n slots[child.props.slot].push(child);\n } else if (child.props && child.props.children) {\n const foundSlides = processChildren(child.props.children);\n if (foundSlides.length > 0) {\n foundSlides.forEach(slide => slides.push(slide));\n } else {\n slots['container-end'].push(child);\n }\n } else {\n slots['container-end'].push(child);\n }\n });\n return {\n slides,\n slots\n };\n}\n\nfunction renderVirtual(swiper, slides, virtualData) {\n if (!virtualData) return null;\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n const style = swiper.isHorizontal() ? {\n [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\n } : {\n top: `${virtualData.offset}px`\n };\n const {\n from,\n to\n } = virtualData;\n const loopFrom = swiper.params.loop ? -slides.length : 0;\n const loopTo = swiper.params.loop ? slides.length * 2 : slides.length;\n const slidesToRender = [];\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n slidesToRender.push(slides[getSlideIndex(i)]);\n }\n }\n return slidesToRender.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n style,\n key: child.props.virtualIndex || child.key || `slide-${index}`\n });\n });\n}\n\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\n\nconst SwiperSlideContext = /*#__PURE__*/createContext(null);\nconst useSwiperSlide = () => {\n return useContext(SwiperSlideContext);\n};\nconst SwiperContext = /*#__PURE__*/createContext(null);\nconst useSwiper = () => {\n return useContext(SwiperContext);\n};\n\nconst Swiper = /*#__PURE__*/forwardRef(({\n className,\n tag: Tag = 'div',\n wrapperTag: WrapperTag = 'div',\n children,\n onSwiper,\n ...rest\n} = {}, externalElRef) => {\n let eventsAssigned = false;\n const [containerClasses, setContainerClasses] = useState('swiper');\n const [virtualData, setVirtualData] = useState(null);\n const [breakpointChanged, setBreakpointChanged] = useState(false);\n const initializedRef = useRef(false);\n const swiperElRef = useRef(null);\n const swiperRef = useRef(null);\n const oldPassedParamsRef = useRef(null);\n const oldSlides = useRef(null);\n const nextElRef = useRef(null);\n const prevElRef = useRef(null);\n const paginationElRef = useRef(null);\n const scrollbarElRef = useRef(null);\n const {\n params: swiperParams,\n passedParams,\n rest: restProps,\n events\n } = getParams(rest);\n const {\n slides,\n slots\n } = getChildren(children);\n const onBeforeBreakpoint = () => {\n setBreakpointChanged(!breakpointChanged);\n };\n Object.assign(swiperParams.on, {\n _containerClasses(swiper, classes) {\n setContainerClasses(classes);\n }\n });\n const initSwiper = () => {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n const passParams = {\n ...swiperParams\n };\n delete passParams.wrapperClass;\n swiperRef.current = new Swiper$1(passParams);\n if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {\n swiperRef.current.virtual.slides = slides;\n const extendWith = {\n cache: false,\n slides,\n renderExternal: setVirtualData,\n renderExternalUpdate: false\n };\n extend(swiperRef.current.params.virtual, extendWith);\n extend(swiperRef.current.originalParams.virtual, extendWith);\n }\n };\n if (!swiperElRef.current) {\n initSwiper();\n }\n\n // Listen for breakpoints change\n if (swiperRef.current) {\n swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);\n }\n const attachEvents = () => {\n if (eventsAssigned || !events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.on(eventName, events[eventName]);\n });\n };\n const detachEvents = () => {\n if (!events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.off(eventName, events[eventName]);\n });\n };\n useEffect(() => {\n return () => {\n if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);\n };\n });\n\n // set initialized flag\n useEffect(() => {\n if (!initializedRef.current && swiperRef.current) {\n swiperRef.current.emitSlidesClasses();\n initializedRef.current = true;\n }\n });\n\n // mount swiper\n useIsomorphicLayoutEffect(() => {\n if (externalElRef) {\n externalElRef.current = swiperElRef.current;\n }\n if (!swiperElRef.current) return;\n if (swiperRef.current.destroyed) {\n initSwiper();\n }\n mountSwiper({\n el: swiperElRef.current,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n paginationEl: paginationElRef.current,\n scrollbarEl: scrollbarElRef.current,\n swiper: swiperRef.current\n }, swiperParams);\n if (onSwiper && !swiperRef.current.destroyed) onSwiper(swiperRef.current);\n // eslint-disable-next-line\n return () => {\n if (swiperRef.current && !swiperRef.current.destroyed) {\n swiperRef.current.destroy(true, false);\n }\n };\n }, []);\n\n // watch for params change\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key);\n oldPassedParamsRef.current = passedParams;\n oldSlides.current = slides;\n if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {\n updateSwiper({\n swiper: swiperRef.current,\n slides,\n passedParams,\n changedParams,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n scrollbarEl: scrollbarElRef.current,\n paginationEl: paginationElRef.current\n });\n }\n return () => {\n detachEvents();\n };\n });\n\n // update on virtual update\n useIsomorphicLayoutEffect(() => {\n updateOnVirtualData(swiperRef.current);\n }, [virtualData]);\n\n // bypass swiper instance to slides\n function renderSlides() {\n if (swiperParams.virtual) {\n return renderVirtual(swiperRef.current, slides, virtualData);\n }\n return slides.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiperRef.current,\n swiperSlideIndex: index\n });\n });\n }\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: swiperElRef,\n className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)\n }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, {\n value: swiperRef.current\n }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, {\n className: wrapperClass(swiperParams.wrapperClass)\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n ref: prevElRef,\n className: \"swiper-button-prev\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: nextElRef,\n className: \"swiper-button-next\"\n })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarElRef,\n className: \"swiper-scrollbar\"\n }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: paginationElRef,\n className: \"swiper-pagination\"\n }), slots['container-end']));\n});\nSwiper.displayName = 'Swiper';\n\nconst SwiperSlide = /*#__PURE__*/forwardRef(({\n tag: Tag = 'div',\n children,\n className = '',\n swiper,\n zoom,\n lazy,\n virtualIndex,\n swiperSlideIndex,\n ...rest\n} = {}, externalRef) => {\n const slideElRef = useRef(null);\n const [slideClasses, setSlideClasses] = useState('swiper-slide');\n const [lazyLoaded, setLazyLoaded] = useState(false);\n function updateClasses(_s, el, classNames) {\n if (el === slideElRef.current) {\n setSlideClasses(classNames);\n }\n }\n useIsomorphicLayoutEffect(() => {\n if (typeof swiperSlideIndex !== 'undefined') {\n slideElRef.current.swiperSlideIndex = swiperSlideIndex;\n }\n if (externalRef) {\n externalRef.current = slideElRef.current;\n }\n if (!slideElRef.current || !swiper) {\n return;\n }\n if (swiper.destroyed) {\n if (slideClasses !== 'swiper-slide') {\n setSlideClasses('swiper-slide');\n }\n return;\n }\n swiper.on('_slideClass', updateClasses);\n // eslint-disable-next-line\n return () => {\n if (!swiper) return;\n swiper.off('_slideClass', updateClasses);\n };\n });\n useIsomorphicLayoutEffect(() => {\n if (swiper && slideElRef.current && !swiper.destroyed) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n const slideData = {\n isActive: slideClasses.indexOf('swiper-slide-active') >= 0,\n isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,\n isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0,\n isNext: slideClasses.indexOf('swiper-slide-next') >= 0\n };\n const renderChildren = () => {\n return typeof children === 'function' ? children(slideData) : children;\n };\n const onLoad = () => {\n setLazyLoaded(true);\n };\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: slideElRef,\n className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`),\n \"data-swiper-slide-index\": virtualIndex,\n onLoad: onLoad\n }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-zoom-container\",\n \"data-swiper-zoom\": typeof zoom === 'number' ? zoom : undefined\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-lazy-preloader\"\n })));\n});\nSwiperSlide.displayName = 'SwiperSlide';\n\nexport { Swiper, SwiperSlide, useSwiper, useSwiperSlide };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, s as setInnerHTML } from '../shared/utils.mjs';\n\nconst arrowSvg = `<svg class=\"swiper-navigation-icon\" width=\"11\" height=\"20\" viewBox=\"0 0 11 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0.38296 20.0762C0.111788 19.805 0.111788 19.3654 0.38296 19.0942L9.19758 10.2796L0.38296 1.46497C0.111788 1.19379 0.111788 0.754138 0.38296 0.482966C0.654131 0.211794 1.09379 0.211794 1.36496 0.482966L10.4341 9.55214C10.8359 9.9539 10.8359 10.6053 10.4341 11.007L1.36496 20.0762C1.09379 20.3474 0.654131 20.3474 0.38296 20.0762Z\" fill=\"currentColor\"/></svg>`;\nfunction Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n addIcons: true,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null,\n arrowSvg\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n if (params.addIcons && el.matches('.swiper-button-next,.swiper-button-prev') && !el.querySelector('svg')) {\n const tempEl = document.createElement('div');\n setInnerHTML(tempEl, arrowSvg);\n el.appendChild(tempEl.querySelector('svg'));\n tempEl.remove();\n }\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!+\\/()[\\]])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, i as elementOuterSize, j as elementIndex, s as setInnerHTML, d as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n setInnerHTML(subEl, params.renderCustom(swiper, current + 1, total));\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n setInnerHTML(subEl, paginationHTML || '');\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.find(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay({\n swiper,\n extendParams,\n on,\n emit,\n params\n}) {\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: false,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime();\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n let pausedByPointerEnter;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {\n return;\n }\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.find(slideEl => slideEl.classList.contains('swiper-slide-active'));\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n autoplayStartTime = new Date().getTime();\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pausedByPointerEnter = true;\n if (swiper.animating || swiper.autoplay.paused) return;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByPointerEnter = false;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n }\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('_freeModeStaticRelease', () => {\n if (pausedByTouch || pausedByInteraction) {\n resume();\n }\n });\n on('_freeModeNoMomentumRelease', () => {\n if (!swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}\n\nexport { Autoplay as default };\n","import React from 'react'\nimport { cn } from '@/utils/cn'\nimport { Swiper, SwiperSlide } from 'swiper/react'\nimport { Navigation, Pagination, Autoplay } from 'swiper/modules'\nimport { useDemoRoom } from '@/api/hooks'\nimport type { DemoRoomApiClient } from '@/api/client'\n\nimport 'swiper/css'\nimport 'swiper/css/navigation'\nimport 'swiper/css/pagination'\n\nexport interface DemoRoomDetailProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * API client for fetching demo room details\n */\n apiClient?: DemoRoomApiClient\n /**\n * Demo room code to fetch details\n */\n demoRoomCode?: string\n /**\n * Locale for API request\n */\n locale?: string\n /**\n * Room title (fallback if not using API)\n */\n title?: string\n /**\n * Room description paragraphs (fallback if not using API)\n */\n descriptions?: string[]\n /**\n * Device models available (fallback if not using API)\n */\n devices?: string\n /**\n * Room address (fallback if not using API)\n */\n address?: string\n /**\n * Google Maps link\n */\n mapsLink?: string\n /**\n * Room images (fallback if not using API)\n */\n images?: string[]\n /**\n * Configurable page data\n */\n pageData?: {\n loadingText?: string\n errorTitle?: string\n openInGoogleMaps?: string\n demoRoomImages?: string\n }\n}\n\nexport const DemoRoomDetail: React.FC<DemoRoomDetailProps> = ({\n apiClient,\n demoRoomCode,\n locale,\n title: titleProp,\n descriptions: descriptionsProp,\n devices: devicesProp,\n address: addressProp,\n mapsLink,\n images: imagesProp,\n pageData = {\n loadingText: 'Loading...',\n errorTitle: 'Failed to load demo room details',\n openInGoogleMaps: 'Open in Google Maps',\n demoRoomImages: 'Demo Room Images',\n },\n className,\n ...props\n}) => {\n // Fetch demo room details if apiClient and demoRoomCode are provided\n const {\n data: demoRoom,\n loading,\n error,\n } = useDemoRoom(apiClient!, demoRoomCode || '', locale, {\n enabled: !!apiClient && !!demoRoomCode,\n })\n\n // Use API data if available, otherwise fall back to props or defaults\n const title = demoRoom?.name || titleProp || ''\n const descriptions = demoRoom?.description\n ? [demoRoom.description]\n : descriptionsProp\n const devices = demoRoom?.equipment?.join(', ') || devicesProp || ''\n const address = demoRoom?.address || addressProp || ''\n const images =\n demoRoom?.images && demoRoom.images.length > 0\n ? demoRoom.images\n : imagesProp || []\n // Generate Google Maps link\n const googleMapsLink =\n mapsLink ||\n (() => {\n if (demoRoom?.latitude && demoRoom?.longitude) {\n // Use coordinates if available\n return `https://www.google.com/maps/search/?api=1&query=${demoRoom.latitude},${demoRoom.longitude}`\n } else if (address) {\n // Fallback to address search\n return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(address)}`\n }\n return '#'\n })()\n\n // Loading state\n if (loading && apiClient && demoRoomCode) {\n return (\n <div className={cn('w-full pb-4', className)} {...props}>\n <div className=\"grid grid-cols-2 gap-8 items-start\">\n <div className=\"space-y-6\">\n <div className=\"h-12 bg-gray-200 rounded animate-pulse\" />\n <div className=\"h-24 bg-gray-200 rounded animate-pulse\" />\n <div className=\"h-8 bg-gray-200 rounded animate-pulse\" />\n </div>\n <div className=\"h-[400px] bg-gray-200 rounded-2xl animate-pulse\" />\n </div>\n </div>\n )\n }\n\n // Error state\n if (error && apiClient && demoRoomCode) {\n return (\n <div className={cn('w-full', className)} {...props}>\n <div className=\"text-center text-red-600 py-8\">\n <p className=\"text-lg font-medium\">{pageData.errorTitle}</p>\n <p className=\"text-sm mt-2\">{error.message}</p>\n </div>\n </div>\n )\n }\n\n return (\n <div className={cn('w-full', className)} {...props}>\n <div className={cn(\n \"gap-[80px] l:gap-[40px] l:flex l:flex-col-reverse items-start py-[24px] l:pb-[64px]\",\n images.length > 0 ? \"grid grid-cols-2\" : \"flex\"\n )}>\n {/* Left Content */}\n <div className=\"space-y-6\">\n {/* Title */}\n <h1 className=\"text-[48px] l:text-[32px] font-bold text-gray-900 leading-tight\">\n {title}\n </h1>\n\n {/* Descriptions */}\n <div className=\"mt-[20px]\">\n {descriptions?.map((desc, index) => (\n <p\n key={index}\n className=\"text-base text-gray-600 leading-relaxed\"\n >\n {desc}\n </p>\n ))}\n </div>\n\n {/* Devices */}\n <div className=\"flex items-start gap-3\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"flex-shrink-0 mt-0.5\"\n >\n <path\n d=\"M14.4643 7.4929H9.65565M3.16391 18.7132H20.8171C22.0122 18.7132 22.981 17.7563 22.981 16.576L23 13.8348L22.981 6.42431C22.981 5.24396 22.0122 4.28711 20.8171 4.28711H3.16391C1.96882 4.28711 1 5.24396 1 6.42431V16.576C1 17.7563 1.96882 18.7132 3.16391 18.7132Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M5.32812 18.2325V14.4238C5.32812 13.8715 5.77584 13.4238 6.32813 13.4238H17.7925C18.3447 13.4238 18.7925 13.8715 18.7925 14.4238V18.2325\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <span className=\"text-base text-gray-900\">{devices}</span>\n </div>\n\n {/* Address */}\n <div className=\"flex items-start gap-3\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"flex-shrink-0 mt-0.5\"\n >\n <path\n d=\"M12 2C8.13 2 5 5.13 5 9C5 14.25 12 22 12 22C12 22 19 14.25 19 9C19 5.13 15.87 2 12 2Z\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle\n cx=\"12\"\n cy=\"9\"\n r=\"2.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n />\n </svg>\n <div className=\"flex-1\">\n <p className=\"text-base text-gray-900\">{address}</p>\n <a\n href={googleMapsLink}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-1 text-sm text-blue-600 hover:text-blue-700 mt-1 underline\"\n >\n {pageData.openInGoogleMaps}\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3 9L9 3M9 3H3M9 3V9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </a>\n </div>\n </div>\n </div>\n\n {/* Right Images - Swiper */}\n {images.length > 0 && (\n <div className=\"relative l:w-full min-l:h-[400px] rounded-2xl overflow-hidden demo-room-swiper\">\n <style>{`\n .demo-room-swiper .swiper-pagination-bullet {\n background-color: rgba(255, 255, 255, 0.5);\n }\n .demo-room-swiper .swiper-pagination-bullet-active {\n background-color: #3ADB67 !important;\n }\n .demo-room-swiper .swiper-button-prev,\n .demo-room-swiper .swiper-button-next {\n width: 48px !important;\n height: 48px !important;\n background-size: contain !important;\n background-repeat: no-repeat !important;\n background-position: center !important;\n color: transparent !important;\n }\n .demo-room-swiper .swiper-button-prev::after,\n .demo-room-swiper .swiper-button-next::after {\n display: none !important;\n content: '' !important;\n }\n .demo-room-swiper .swiper-button-prev {\n background-image: url('https://cdn.shopify.com/s/files/1/0569/5147/2268/files/Group_2121235586_572f0715-aa60-4188-9591-248f6ac53f40.svg?v=1736951731') !important;\n left: 16px !important;\n }\n .demo-room-swiper .swiper-button-next {\n background-image: url('https://cdn.shopify.com/s/files/1/0569/5147/2268/files/Group_2121235583_3071dda3-e1ee-4fb8-b488-2402c8ea8018.svg?v=1736951731') !important;\n right: 16px !important;\n }\n `}</style>\n <Swiper\n modules={[Navigation, Pagination, Autoplay]}\n spaceBetween={0}\n slidesPerView={1}\n navigation={images.length > 1}\n pagination={images.length > 1 ? { clickable: true } : false}\n autoplay={images.length > 1 ? {\n delay: 3000,\n disableOnInteraction: false,\n } : false}\n loop={images.length > 1}\n className=\"h-full rounded-2xl\"\n >\n {images.map((img, index) => (\n <SwiperSlide key={index}>\n <div className=\"relative w-full h-full bg-gray-100\">\n <img\n src={img}\n alt={`Demo room view ${index + 1}`}\n className=\"w-full h-full object-cover\"\n />\n </div>\n </SwiperSlide>\n ))}\n </Swiper>\n </div>\n )}\n </div>\n </div>\n )\n}\n\nDemoRoomDetail.displayName = 'DemoRoomDetail'\n","import React, { useMemo } from 'react'\nimport { cn } from '@/utils/cn'\nimport DateTimePicker from './components/DateTimePicker'\nimport { createDemoRoomApi } from '@/api'\nimport type { DemoRoomApiClient } from '@/api'\nimport { DemoRoomDetail } from './components/DemoRoomDetail'\nimport type { BookingFormPageData } from './types/pageData'\n\nexport interface BookingFormProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'onSubmit'\n> {\n layoutClassName?: string\n handleBookingSuccess?: (token?: string) => void\n /**\n * 问卷提交时的回调函数(可用于订阅操作等)\n */\n onQuestionnaireSubmit?: (responses: Record<string, any>) => void | Promise<void>\n /**\n * API 配置\n */\n apiConfig: {\n baseUrl: string\n apiKey: string\n locale?: string\n }\n /**\n * 门店代码(可选,可以从 URL 参数或 props 传入)\n */\n demoRoomCode?: string\n /**\n * 时区(可选)\n */\n timezone?: string\n /**\n * 页面可配置数据(文案、图标等)\n */\n pageData?: BookingFormPageData\n}\n\nexport const BookingForm: React.FC<BookingFormProps> = ({\n layoutClassName,\n className,\n apiConfig,\n demoRoomCode,\n pageData,\n timezone,\n handleBookingSuccess,\n onQuestionnaireSubmit,\n ...props\n}) => {\n // 创建 API 客户端实例\n const apiClient = useMemo<DemoRoomApiClient>(\n () => createDemoRoomApi(apiConfig),\n [apiConfig]\n )\n\n // Merge dateTimePicker and questionnaireForm pageData for DateTimePicker\n const dateTimePickerPageData = useMemo(\n () => ({\n ...pageData?.dateTimePicker,\n ...pageData?.questionnaireForm,\n }),\n [pageData?.dateTimePicker, pageData?.questionnaireForm]\n )\n\n return (\n <div>\n <div className={cn('w-full', className)} {...props}>\n {/* <BreadCrumbs\n className={layoutClassName}\n items={[{ label: 'Home', link: '/' }, { label: 'Demo Room' }]}\n /> */}\n <DemoRoomDetail\n className={cn('min-l:mt-8', layoutClassName)}\n apiClient={apiClient}\n demoRoomCode={demoRoomCode}\n locale={apiConfig.locale}\n pageData={pageData?.demoRoomDetail}\n />\n </div>\n <div className=\"bg-[#f5f5f5]\">\n <div className={className}>\n <DateTimePicker\n apiClient={apiClient}\n demoRoomCode={demoRoomCode}\n timezone={timezone}\n locale={apiConfig.locale}\n onBookingSuccess={handleBookingSuccess}\n onQuestionnaireSubmit={onQuestionnaireSubmit}\n pageData={dateTimePickerPageData}\n />\n </div>\n </div>\n </div>\n )\n}\n\nBookingForm.displayName = 'BookingForm'\n","import React, { useEffect, useState } from 'react'\nimport type { Booking } from '@/api/types'\nimport { createDemoRoomApi, type DemoRoomApiConfig } from '@/api/client'\nimport type { BookingSuccessPageData } from '../types/pageData'\n\nexport interface BookingSuccessProps {\n // 方式1: 直接传入预约数据\n bookingData?: Booking\n // 方式2: 通过 token 查询预约数据\n token?: string\n apiConfig?: DemoRoomApiConfig\n // 其他 props\n onScheduleAgain?: (demoRoomCode: string) => void\n onCancelSuccess?: (booking: Booking) => void\n className?: string\n /**\n * 页面可配置数据(文案、图标等)\n */\n pageData?: BookingSuccessPageData\n}\n\nexport const BookingSuccess: React.FC<BookingSuccessProps> = ({\n bookingData: initialBookingData,\n token,\n apiConfig,\n onScheduleAgain,\n onCancelSuccess,\n className,\n pageData = {\n yourAppointment: 'Your Appointment',\n appointmentCanceled: 'This appointment has been canceled.',\n scheduleAgain: 'Schedule again',\n location: 'Location',\n openInGoogleMaps: 'Open in Google Maps ↗',\n dateAndTime: 'Date and Time',\n event: 'Event',\n demoRoom: 'Demo Room',\n visitorInfo: 'Visitor Info',\n noPhoneProvided: 'No phone provided',\n cancelAppointment: 'Cancel Appointment',\n cancelDialog: {\n title: 'Are you sure you want to cancel?',\n description: \"You won't be able to restore the schedule.\",\n backButton: 'Back',\n confirmButton: 'Cancel Appointment',\n canceling: 'Canceling...',\n },\n cancelError: 'Failed to cancel appointment. Please try again.',\n },\n}) => {\n const [bookingData, setBookingData] = useState<Booking | null>(\n initialBookingData || null\n )\n const [loading, setLoading] = useState(false)\n const [isCancelled, setIsCancelled] = useState(false)\n const [showCancelDialog, setShowCancelDialog] = useState(false)\n const [cancelLoading, setCancelLoading] = useState(false)\n const [cancelError, setCancelError] = useState<string | null>(null)\n\n // 如果传入了 token,则通过 API 查询预约信息\n useEffect(() => {\n if (token && apiConfig && !initialBookingData) {\n const fetchBookingData = async () => {\n setLoading(true)\n try {\n const apiClient = createDemoRoomApi(apiConfig)\n const booking = await apiClient.getBooking(token, apiConfig.locale)\n setBookingData(booking)\n setIsCancelled(booking.status === 'cancelled')\n } catch (err) {\n console.error('Failed to fetch booking data:', err)\n } finally {\n setLoading(false)\n }\n }\n\n fetchBookingData()\n }\n }, [token, apiConfig, initialBookingData])\n\n // 处理取消预约\n const handleCancelAppointment = async () => {\n if (!token || !apiConfig) {\n setCancelError(\n pageData.cancelError ||\n 'Unable to cancel: Missing token or API configuration'\n )\n return\n }\n\n setCancelLoading(true)\n setCancelError(null)\n\n try {\n const apiClient = createDemoRoomApi(apiConfig)\n const cancelledBooking = await apiClient.cancelBooking(\n token,\n apiConfig.locale\n )\n\n // 更新预约数据和取消状态\n if (cancelledBooking) {\n setBookingData(cancelledBooking)\n }\n setIsCancelled(true)\n setShowCancelDialog(false)\n\n // 调用回调函数\n if (onCancelSuccess && cancelledBooking) {\n onCancelSuccess(cancelledBooking)\n }\n } catch (err) {\n console.error('Failed to cancel booking:', err)\n setCancelError(\n pageData.cancelError ||\n 'Failed to cancel appointment. Please try again.'\n )\n } finally {\n setCancelLoading(false)\n }\n }\n\n if (loading) {\n return (\n <div className={`min-h-screen py-12 px-6 ${className || ''}`}>\n <div className=\"mx-auto\">\n <div className=\"animate-pulse space-y-6\">\n <div className=\"h-8 bg-gray-200 rounded w-1/3\" />\n <div className=\"h-24 bg-gray-200 rounded\" />\n <div className=\"space-y-4\">\n <div className=\"h-20 bg-gray-200 rounded\" />\n <div className=\"h-20 bg-gray-200 rounded\" />\n <div className=\"h-20 bg-gray-200 rounded\" />\n </div>\n </div>\n </div>\n </div>\n )\n }\n\n if (!bookingData) {\n return null\n }\n\n return (\n <div className={`min-h-screen l:py-0 l:px-0 py-12 px-6 ${className || ''}`}>\n <div className=\"mx-auto\">\n {/* Header */}\n <h1 className=\"text-[48px] xxl:text-[32px] font-bold text-[#080A0F] mb-8\">\n {pageData.yourAppointment}\n </h1>\n\n {/* Status Banner */}\n {isCancelled && (\n <div className=\"bg-white rounded-[16px] l:items-start p-6 mb-4 l:gap-2 flex l:flex-col items-center justify-between\">\n <p className=\"text-base text-[#080A0F]\">\n {pageData.appointmentCanceled}\n </p>\n {onScheduleAgain && bookingData && (\n <button\n onClick={() => onScheduleAgain(bookingData.demoroom_code)}\n className=\"px-6 py-3 text-[16px] bg-black text-white rounded-full hover:bg-gray-800 transition-colors whitespace-nowrap\"\n >\n {pageData.scheduleAgain}\n </button>\n )}\n </div>\n )}\n\n {/* Appointment Details */}\n <div className=\"space-y-8 bg-white px-[48px] l:px-[16px] l:py-[16px] py-[32px] rounded-[16px]\">\n {/* Location */}\n <div>\n <h2 className=\"text-[24px] l:text-[20px] text-[#4A4C56] mb-3\">{pageData.location}</h2>\n <div className=\"space-y-2\">\n {bookingData.demoroom_name && (\n <p className=\"text-base text-[#4A4C56]\">\n {bookingData.demoroom_name}\n </p>\n )}\n {bookingData.address && (\n <p className=\"text-base text-gray-600\">{bookingData.address}</p>\n )}\n {bookingData.latitude && bookingData.longitude && (\n <a\n href={`https://www.google.com/maps/search/?api=1&query=${bookingData.latitude},${bookingData.longitude}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-1 text-base text-blue-600 hover:text-blue-700 hover:underline\"\n >\n {pageData.openInGoogleMaps}\n </a>\n )}\n </div>\n </div>\n\n {/* Date and Time */}\n <div>\n <h2 className=\"text-[24px] l:text-[20px] text-[#4A4C56] mb-3\">\n {pageData.dateAndTime}\n </h2>\n <p className=\"text-base text-[#4A4C56]\">\n {bookingData.booking_date}\n {bookingData.time_slot && `, ${bookingData.time_slot}`}\n {!bookingData.time_slot &&\n bookingData.booking_time &&\n `, ${bookingData.booking_time}`}\n </p>\n </div>\n\n {/* Event (if available) */}\n {bookingData.equipment && (\n <div>\n <h2 className=\"text-[24px] l:text-[20px] text-[#4A4C56] mb-3\">{pageData.event}</h2>\n <p className=\"text-base text-[#4A4C56]\">\n {Array.isArray(bookingData.equipment)\n ? bookingData.equipment.join(', ')\n : bookingData.equipment}\n </p>\n </div>\n )}\n\n {/* Machine (Demo Room Code) */}\n <div>\n <h2 className=\"text-[24px] l:text-[20px] text-[#4A4C56] mb-3\">{pageData.demoRoom}</h2>\n <p className=\"text-base text-[#4A4C56]\">\n {bookingData.demoroom_code}\n </p>\n </div>\n\n {/* Visitor Info */}\n <div>\n <h2 className=\"text-[24px] l:text-[20px] text-[#4A4C56] mb-3\">\n {pageData.visitorInfo}\n </h2>\n <div className=\"space-y-2\">\n <p className=\"text-base text-[#4A4C56]\">\n {bookingData.customer_name}\n </p>\n <div className=\"flex items-center gap-2 text-base text-gray-600\">\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z\"\n />\n </svg>\n {bookingData.phone_code && bookingData.phone_number ? (\n <span>\n {bookingData.phone_code} {bookingData.phone_number}\n </span>\n ) : (\n <span>{pageData.noPhoneProvided}</span>\n )}\n </div>\n <div className=\"flex items-center gap-2 text-base text-gray-600\">\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z\"\n />\n </svg>\n <span>{bookingData.customer_email}</span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Cancel Button - 只在未取消时显示 */}\n {!isCancelled && (\n <div className=\"mt-[64px]\">\n <button\n onClick={() => setShowCancelDialog(true)}\n disabled={cancelLoading}\n className=\"text-[14px] cursor-pointer w-fit rounded-full text-[#080A0F] border-2 border-[#080A0F] px-[20px] py-[10px] leading-[1] hover:bg-gray-50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n {pageData.cancelAppointment}\n </button>\n {cancelError && (\n <p className=\"text-sm mt-2\" style={{ color: '#FF4D4D' }}>\n {cancelError}\n </p>\n )}\n </div>\n )}\n\n {/* Cancel Confirmation Dialog */}\n {showCancelDialog && (\n <div className=\"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 px-4\">\n <div className=\"bg-white rounded-[24px] max-w-[600px] p-8 shadow-xl relative\">\n {/* Close Button */}\n <button\n onClick={() => setShowCancelDialog(false)}\n disabled={cancelLoading}\n className=\"absolute top-6 right-[30px] w-8 h-8 flex items-center justify-center text-gray-400 hover:text-gray-600 transition-colors disabled:opacity-50\"\n aria-label=\"Close\"\n >\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M18 6L6 18M6 6L18 18\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n\n {/* Warning Icon */}\n <div className=\"flex justify-center mb-6\">\n <div className=\"w-16 h-16 rounded-full flex items-center justify-center\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n >\n <circle cx=\"24\" cy=\"24\" r=\"21\" fill=\"#FFC24D\" />\n <path\n d=\"M23.9971 30.5703C25.4881 30.5704 26.6972 31.7795 26.6973 33.2705C26.6973 34.7616 25.4881 35.9706 23.9971 35.9707C22.5059 35.9707 21.2969 34.7617 21.2969 33.2705C21.297 31.7794 22.506 30.5703 23.9971 30.5703ZM23.9961 12.0176C25.2387 12.0176 26.2461 13.0249 26.2461 14.2676V26.2676C26.2461 27.5102 25.2387 28.5176 23.9961 28.5176C22.7535 28.5176 21.7461 27.5102 21.7461 26.2676V14.2676C21.7461 13.0249 22.7535 12.0176 23.9961 12.0176Z\"\n fill=\"white\"\n />\n </svg>\n </div>\n </div>\n\n {/* Title and Description */}\n <div className=\"text-center mb-8\">\n <h3 className=\"text-[18px] text-[#4A4C56] mb-2\">\n {pageData.cancelDialog?.title}\n </h3>\n <p className=\"text-[14px] text-gray-600\">\n {pageData.cancelDialog?.description}\n </p>\n </div>\n\n {/* Action Buttons */}\n <div className=\"flex gap-3 justify-center\">\n <button\n onClick={() => setShowCancelDialog(false)}\n disabled={cancelLoading}\n className=\"px-8 py-3 border-2 border-black rounded-full text-black hover:bg-gray-50 transition-colors disabled:opacity-50 min-w-[120px]\"\n >\n {pageData.cancelDialog?.backButton}\n </button>\n <button\n onClick={handleCancelAppointment}\n disabled={cancelLoading}\n className=\"px-8 py-3 bg-black text-white rounded-full hover:bg-gray-800 transition-colors disabled:opacity-50 flex items-center gap-2 min-w-[180px] justify-center\"\n >\n {cancelLoading ? (\n <>\n <svg\n className=\"animate-spin h-5 w-5\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n {pageData.cancelDialog?.canceling}\n </>\n ) : (\n pageData.cancelDialog?.confirmButton\n )}\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n )\n}\n","export const defaultTheme = {\n colors: {\n primary: {\n 50: '#eff6ff',\n 100: '#dbeafe',\n 200: '#bfdbfe',\n 300: '#93c5fd',\n 400: '#60a5fa',\n 500: '#3b82f6',\n 600: '#2563eb',\n 700: '#1d4ed8',\n 800: '#1e40af',\n 900: '#1e3a8a',\n 950: '#172554',\n },\n secondary: {\n 50: '#f8fafc',\n 100: '#f1f5f9',\n 200: '#e2e8f0',\n 300: '#cbd5e1',\n 400: '#94a3b8',\n 500: '#64748b',\n 600: '#475569',\n 700: '#334155',\n 800: '#1e293b',\n 900: '#0f172a',\n 950: '#020617',\n },\n success: {\n 50: '#f0fdf4',\n 500: '#22c55e',\n 900: '#14532d',\n },\n warning: {\n 50: '#fffbeb',\n 500: '#f59e0b',\n 900: '#78350f',\n },\n error: {\n 50: '#fef2f2',\n 500: '#ef4444',\n 900: '#7f1d1d',\n },\n },\n fontFamily: {\n sans: ['Inter', 'system-ui', 'sans-serif'],\n mono: ['Fira Code', 'monospace'],\n },\n fontSize: {\n xs: ['0.75rem', { lineHeight: '1rem' }] as const,\n sm: ['0.875rem', { lineHeight: '1.25rem' }] as const,\n base: ['1rem', { lineHeight: '1.5rem' }] as const,\n lg: ['1.125rem', { lineHeight: '1.75rem' }] as const,\n xl: ['1.25rem', { lineHeight: '1.75rem' }] as const,\n '2xl': ['1.5rem', { lineHeight: '2rem' }] as const,\n '3xl': ['1.875rem', { lineHeight: '2.25rem' }] as const,\n '4xl': ['2.25rem', { lineHeight: '2.5rem' }] as const,\n },\n spacing: {\n 0: '0',\n 1: '0.25rem',\n 2: '0.5rem',\n 3: '0.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 8: '2rem',\n 10: '2.5rem',\n 12: '3rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n },\n borderRadius: {\n none: '0',\n sm: '0.125rem',\n base: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n full: '9999px',\n },\n boxShadow: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n base: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n },\n} as const\n\nexport type Theme = typeof defaultTheme\n\nexport type DeepPartial<T> = T extends object\n ? { [P in keyof T]?: DeepPartial<T[P]> }\n : T\n\nexport type ThemeConfig = DeepPartial<Theme>\n","import React, { createContext, useContext, useEffect, useMemo } from 'react'\nimport { defaultTheme } from '../theme-tokens'\nimport type { Theme, ThemeConfig } from '../theme-tokens'\n\ninterface ThemeContextValue {\n theme: Theme\n}\n\nconst ThemeContext = createContext<ThemeContextValue>({ theme: defaultTheme })\n\nexport const useTheme = () => useContext(ThemeContext)\n\ninterface ThemeProviderProps {\n theme?: ThemeConfig\n children: React.ReactNode\n}\n\nfunction deepMerge<T extends object>(target: T, source: Partial<T>): T {\n const result = { ...target }\n for (const key in source) {\n if (\n source[key] instanceof Object &&\n !Array.isArray(source[key]) &&\n key in target\n ) {\n result[key] = deepMerge(target[key] as any, source[key] as any)\n } else if (source[key] !== undefined) {\n result[key] = source[key] as any\n }\n }\n return result\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n theme: customTheme = {},\n children,\n}) => {\n const theme = useMemo(\n () => deepMerge(defaultTheme, customTheme as any),\n [customTheme]\n )\n\n useEffect(() => {\n const root = document.documentElement\n\n // Inject color variables\n Object.entries(theme.colors).forEach(([colorName, colorValues]) => {\n if (typeof colorValues === 'object') {\n Object.entries(colorValues).forEach(([shade, value]) => {\n root.style.setProperty(`--color-${colorName}-${shade}`, value)\n })\n } else {\n root.style.setProperty(`--color-${colorName}`, colorValues as string)\n }\n })\n\n // Inject font variables\n Object.entries(theme.fontFamily).forEach(([name, value]) => {\n const fontValue = Array.isArray(value) ? value.join(', ') : String(value)\n root.style.setProperty(`--font-${name}`, fontValue)\n })\n\n // Inject spacing variables\n Object.entries(theme.spacing).forEach(([key, value]) => {\n root.style.setProperty(`--spacing-${key}`, value)\n })\n\n // Inject border radius variables\n Object.entries(theme.borderRadius).forEach(([key, value]) => {\n root.style.setProperty(`--radius-${key}`, value)\n })\n }, [theme])\n\n return (\n <ThemeContext.Provider value={{ theme }}>\n {children}\n </ThemeContext.Provider>\n )\n}\n"]}
|